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号