first submission

This commit is contained in:
qiyongshuang
2023-02-01 14:19:13 +08:00
parent d534aad004
commit b79c6ac80d
3711 changed files with 745432 additions and 2 deletions
@@ -0,0 +1,135 @@
/*
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
*
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*/
#ifndef ANCS_H
#define ANCS_H
#ifdef __cplusplus
extern "C"
{
#endif
/*********************************************************************
* INCLUDES
*/
#include "config.h"
#include "ancs_client.h"
#include <stdint.h>
/*********************************************************************
* CONSTANTS
*/
// ANCS discovery states
enum
{
DISC_IDLE = 0x00, // Idle state
DISC_ANCS_START = 0x10, // ANCS service
DISC_ANCS_SVC, // Discover service
DISC_ANCS_CHAR, // Discover all characteristics
DISC_ANCS_CCCD, // Discover ANCS CCCD
DISC_FAILED = 0xFF // Discovery failed
};
// ANCS handle cache indexes
enum
{
HDL_ANCS_NTF_NOTIF_START, // ANCS notification characteristic start handle
HDL_ANCS_NTF_NOTIF_END, // ANCS notification characteristic end handle
HDL_ANCS_NTF_CCCD, // ANCS notification CCCD
HDL_ANCS_CTRL_PT_START,
HDL_ANCS_CTRL_PT_END,
HDL_ANCS_DATA_SRC_START, // ANCS data source characteristic start handle
HDL_ANCS_DATA_SRC_END, // ANCS data source characteristic end handle
HDL_ANCS_DATA_SRC_CCCD, // ANCS data source CCCD
HDL_CACHE_LEN
};
/*********************************************************************
* TYPEDEFS
*/
struct bt_ancs_subscribe_cb {
void(*notification_source)(struct bt_ancs_client *ancs_c,
int err, const struct bt_ancs_evt_notif *notif);
void(*data_source)(struct bt_ancs_client *ancs_c,
const struct bt_ancs_attr_response *response);
void(*write_response)(struct bt_ancs_client *ancs_c,
uint8_t err);
};
typedef struct
{
uint16_t connHandle; // Connection handle of current connection
uint16_t connInterval;
uint16_t connSlaveLatency;
uint16_t connTimeout;
} peripheralConnItem_t;
/*********************************************************************
* MACROS
*/
#define START_DEVICE_EVT 0x0001
#define START_SUBSCRIPE_NOTISRC_EVT 0x0002
#define START_SUBSCRIPE_NOTIDATA_EVT 0x0004
#define START_DISCOVER_EVT 0x0008
#define START_PARAM_UPDATE_EVT 0x0010
#define START_PHY_UPDATE_EVT 0x0020
// Handle and 16-bit Bluetooth UUID pair indexes
#define ATT_BT_PAIR_HANDLE_IDX( i ) ( (i) * (2 + ATT_BT_UUID_SIZE) )
#define ATT_BT_PAIR_UUID_IDX( i ) ( ATT_BT_PAIR_HANDLE_IDX( (i) ) + 2 )
#define ATT_BT_PAIR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_HANDLE_IDX((i))], \
(info)[ATT_BT_PAIR_HANDLE_IDX((i))+1] ) )
#define ATT_BT_PAIR_UUID( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_UUID_IDX((i))], \
(info)[ATT_BT_PAIR_UUID_IDX((i))+1] ) )
/*********************************************************************
* GLOBAL
*/
enum
{
CCCD_CONFIG_NOTIF = 0x00,
CCCD_CONFIG_DATA,
CCCD_CONFIG_DONE
};
extern struct bt_ancs_client ancs_c;
extern uint8_t ancs_taskid;
// Handle cache
extern uint16_t Ancs_handleCache[HDL_CACHE_LEN];
/*********************************************************************
* FUNCTIONS
*/
/*
* ANCS service discovery functions.
*/
void peripheral_ancs_client_init(void);
void ancs_subscribe_cb_register(struct bt_ancs_subscribe_cb *cb);
/*********************************************************************
*********************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* ANCS_H */