我是靠谱客的博主 激动日记本,最近开发中收集的这篇文章主要介绍BLE蓝牙HID设备开发(BL602),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

总述

BLE蓝牙在物联网中使用很广泛,许多WiFi物联网芯片都带有BLE蓝牙,天猫精灵找队友也是有使用BLE蓝牙广播实现的。BLE蓝牙缺点是不适合大数据传输的场景。

BLE蓝牙

BLE蓝牙主机开发基本包括:

  • 广播数据的设置
  • service的属性设置

广播

数据结构

数据结构,31个数据长度由n个以下结构构成:(除蓝牙5.0外广播数据最大31个字节长度)

LengthAD TypeAD Data
广播数据长度广播数据类型广播数据

在这里插入图片描述

HID设备广播数据

LengthAD TypeAD DataDescribe
0x020x010x05设备标识,低功耗模式,有限发现
0x030x030x1218HID UUID
0x0n0x09设备名称设备名称
0x030x19键盘0xC103 鼠标0xC203 游戏手柄0xC303外观ID
struct bt_data limt_disc_data = (struct bt_data)BT_DATA_BYTES(BT_DATA_FLAGS,(BT_LE_AD_NO_BREDR | BT_LE_AD_LIMITED));
ad_discov[0] = limt_disc_data;
struct bt_data hid_uuid = (struct bt_data)BT_DATA_BYTES(BT_DATA_UUID16_ALL, 0x12, 0x18);
ad_discov[1] = hid_uuid;
bt_set_name("TinyKeyborad");
const char *name = bt_get_name();
struct bt_data data = (struct bt_data)BT_DATA(BT_DATA_NAME_COMPLETE,name, strlen(name));
ad_discov[2] = data;
struct bt_data appera = (struct bt_data)BT_DATA_BYTES(BT_DATA_GAP_APPEARANCE, 0xc1, 0x03);
ad_discov[3] = appera;            

属性构成

BL602:

 BT_GATT_PRIMARY_SERVICE(BT_UUID_HIDS), //0
 /*返回数据 {0x11, 0x01, 0x00, 0x02}*/
BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_INFO,
BT_GATT_CHRC_READ,
BT_GATT_PERM_READ ,
hid_info_read_data,
NULL,
NULL), //1 2
/*返回键盘描述符*/
BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT_MAP,
BT_GATT_CHRC_READ,
BT_GATT_PERM_READ ,
hid_map_read_data,
NULL,
NULL), // 3 4
/*暂时不处理*/
BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_CTRL_POINT,
BT_GATT_CHRC_WRITE,
BT_GATT_PERM_READ ,
hid_ctrl_write_data,
NULL,
NULL), // 5 6

/*hid_ctrl_write_data 空函数,hid_descrtptor_read_data 返回 0x01 0x01 */
BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT,
BT_GATT_CHRC_READ|BT_GATT_CHRC_NOTIFY,
BT_GATT_PERM_READ ,
NULL,
hid_ctrl_write_data,
NULL), // 7  8
BT_GATT_CCC(hid_ctrl_write_data, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE),
BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, hid_descrtptor_read_data, NULL, NULL),
/*hid_ctrl_write_data 空函数,hid_descrtptor_read_data_1返回 0x01 0x02 */
BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT,
BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE,
BT_GATT_PERM_READ|BT_GATT_PERM_WRITE ,
NULL,
hid_ctrl_write_data,
NULL),
BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, hid_descrtptor_read_data_1, NULL, NULL),
/*hid_mode_read_data 返回0x01*/
BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_PROTOCOL_MODE,
BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE,
BT_GATT_PERM_READ ,
hid_mode_read_data,
NULL,
NULL),  
/*hid_ctrl_write_data空函数hid_descrtptor_read_data_2 返回0x01 0x03*/                              
BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT,
BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE,
BT_GATT_PERM_READ ,
NULL,
hid_ctrl_write_data,
NULL),
BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, hid_descrtptor_read_data_2, NULL, 1),

参考文章

https://www.bilibili.com/read/cv15067064

最后

以上就是激动日记本为你收集整理的BLE蓝牙HID设备开发(BL602)的全部内容,希望文章能够帮你解决BLE蓝牙HID设备开发(BL602)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部