基础api,应该包括
1. 扫描ble设备
2. 与BLE设备连接
3. 寻找BLE中可用的服务
4. 查看设备服务的特征值
5. 读取特征值对应句柄的数值
6. 发送数据
7. 接收数据
主要通过工具查询命令
hcitool lescan // 扫描ble设备
gatttool -b DA
B:3B:96:F6:96 -I -t random //重点关注解析各字段后,怎么查询
connect //连接ble
primary //查看可用服务
char-desc
char-read-hnd
char-read-uuid
char-write-cmd
char-write-req
characteristics
通过工具命令:hcitool lescan 如下步骤
1. 获取当前device
int hci_get_route(bdaddr_t *bdaddr);
2. 打开本机的蓝牙设备
int hci_open_dev(int dev_id);
3. 设置扫描参数
int hci_le_set_scan_parameters(int dev_id, uint8_t type, uint16_t interval,
uint16_t window, uint8_t own_type,
uint8_t filter, int to);
4. 开始扫描
int hci_le_set_scan_enable(int dev_id, uint8_t enable, uint8_t filter_dup, int to);
比如:
err = hci_le_set_scan_enable(dd, 0x01, filter_dup, 10000); // enable sacn
err = hci_le_set_scan_enable(dd, 0x00, filter_dup, 10000); //disable sacn
5. 打印扫描结果: (从里面找出对应的addr列表保存,留作后续使用)
static int print_advertising_devices(int dd, uint8_t filter_type)
其中,获取addr用到很多底层io接口
getsockopt
hci_filter_clear
hci_filter_set_ptype
hci_filter_set_event
setsockopt
ba2str
==========================================================================================
干货在这里,开始怎么都连接不上,最后终于连接上了,网上有很多类似的解决方法都没有解决,尽然是要把-t random写在最后面就可以啦!!!
gatttool -b DA
B:3B:96:F6:96 -I -t random //重点关注解析各字段后,怎么查询
connect //连接ble
primary //查看可用服务