CH585低功耗蓝牙BLE常见数据获取及设置接口
1、广播开启/关闭:
uint8_t initial_advertising_enable = FALSE;
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED,sizeof(uint8_t), &initial_advertising_enable);//关闭广播 uint8_t initial_advertising_enable = TRUE; GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED,sizeof(uint8_t), &initial_advertising_enable);//开启广播
2、设置广播间隔范围
GAP_SetParamValue(TGAP_DISC_ADV_INT_MIN, 32);//单位0.625ms,32*0.625=20ms,蓝牙广播间隔最低值为20ms
GAP_SetParamValue(TGAP_DISC_ADV_INT_MAX, 32);
3、设置连接状成功后显示的设备名称
// Device name attribute value
static CONST uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "HID Mouse";
// Set the GAP Characteristics
GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, (void *)attDeviceName);
4、获取当前BLE状态机
#define GAPROLE_INIT 0 //!< Waiting to be started
#define GAPROLE_STARTED 1 //!< Started but not advertising
#define GAPROLE_ADVERTISING 2 //!< Currently Advertising
#define GAPROLE_WAITING 3 //!< Device is started but not advertising, is in waiting period before advertising again
#define GAPROLE_CONNECTED 4 //!< In a connection
#define GAPROLE_CONNECTED_ADV 5 //!< In a connection + advertising
#define GAPROLE_ERROR 6 //!< Error occurred - invalid state
uint8_t ble_state;
GAPRole_GetParameter(GAPROLE_STATE, &ble_state);
5、发起连接参数更新
// Minimum connection interval (units of 1.25ms)
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 6
// Maximum connection interval (units of 1.25ms)
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 10
// Slave latency to use if parameter update request
#define DEFAULT_DESIRED_SLAVE_LATENCY 30
// Supervision timeout value (units of 10ms)
#define DEFAULT_DESIRED_CONN_TIMEOUT 100
// Send connect param update request
GAPRole_PeripheralConnParamUpdateReq(hidEmuConnHandle,DEFAULT_DESIRED_MIN_CONN_INTERVAL,DEFAULT_DESIRED_MAX_CONN_INTERVAL,DEFAULT_DESIRED_SLAVE_LATENCY,DEFAULT_DESIRED_CONN_TIMEOUT,hidDevTaskId);
6、主动发起断开指令,主动上报断开原因
//主动发起断开,传入连接句柄,连接句柄可在GAPROLE_CONNECTED回调中拿到
GAPRole_TerminateLink(gapConnHandle);
//主动上报断开原因
uint8_t HCI_MB_DisconnectCmd( uint16_t connHandle, uint8_t reason );//声明库函数
HCI_MB_DisconnectCmd(hidEmuConnHandle, 0x16);//主动上报0x16断连原因
7、获取BLE广播MAC初始地址,配置此次BLE广播地址
获取BLE广播静态地址
uint8_t ownAddr[6];
GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddr);
配置本次广播地址:
uint8_t ownAddr[6];
GAP_ConfigDeviceAddr(ADDRTYPE_STATIC, ownAddr);
8、获取配对后的BLE-IRK值
uint8_t BLE_IRK[16]={0};
tmos_snv_read(BLE_NVID_IRK,16,BLE_IRK);
9、获取LTK,EDIV,RAND值
// Structure of NV data for the connected device's encryption information
typedef struct
{
uint8_t LTK[KEYLEN]; //!< Long Term Key (LTK)
uint16_t div; //!< LTK eDiv
uint8_t rand[B_RANDOM_NUM_SIZE]; //!< LTK random number
uint8_t keySize; //!< LTK key size
} gapBondLTK_t;
gapBondLTK_t DeviceBondInfo;
tmos_snv_read(mainRecordNvID(0),sizeof(gapBondRec_t),&DeviceBondInfo);
PRINT("Device LTK:");
for(uint8_t i=0;i<16;i++)
{
PRINT(" %02x",DeviceBondInfo.LTK[i]);
}PRINT("\n");
PRINT("Device ediv:%04x\n",DeviceBondInfo.div);
PRINT("Device Radom:");
for(uint8_t i=0;i<8;i++)
{
PRINT(" %02x",DeviceBondInfo.rand[i]);
}PRINT("\n");
10、HID类,设置连接成功后显示的设备图标
1 #define GAP_APPEARE_HID_KEYBOARD 0x03C1 //!< HID Keyboard
2 #define GAP_APPEARE_HID_MOUSE 0x03C2 //!< HID Mouse
3 #define GAP_APPEARE_HID_JOYSTIC 0x03C3 //!< HID Joystick
4 #define GAP_APPEARE_HID_GAMEPAD 0x03C4 //!< HID Gamepad
5 #define GAP_APPEARE_HID_DIGITIZER_TYABLET 0x03C5 //!< HID Digitizer Tablet
6 #define GAP_APPEARE_HID_DIGITAL_CARDREADER 0x03C6 //!< HID Card Reader
7 #define GAP_APPEARE_HID_DIGITAL_PEN 0x03C7 //!< HID Digital Pen
8 #define GAP_APPEARE_HID_BARCODE_SCANNER 0x03C8 //!< HID Barcode Scanner
9
10 uint16_t uuid = GAP_APPEARE_HID_MOUSE;
11 GGS_SetParameter(GGS_APPEARANCE_ATT, 2, (void *)uuid);//设置设备图标为鼠标
11、清除SNV配对信息
extern bleConfig_t ble;//全局变量ble,底层使用
ble.SNVAddr = BLE_SNV_ADDR;
GAPBondMgr_SetParameter( GAPBOND_ERASE_ALLBONDS, 0, 0 );
未完待续;

浙公网安备 33010602011771号