微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于simpleCentral程序的疑惑

关于simpleCentral程序的疑惑

时间:10-02 整理:3721RD 点击:

在simpleCentral这个程序中,作为主设备的蓝牙在扫描到设备、连接上并且进行主服务筛选的一系列操作以后,就调用GATT_ReadUsingCharUUID函数,获取0xFFF1的handle,最后是通过这个handle,往0xFFF1里面写数据。

在调用GATT_ReadUsingCharUUID函数后,保存0xFFF1的handle的时候,程序如下:

simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0], pMsg->msg.readByTypeRsp.dataList[1] );

而通过handle往0xFFF1里写数据的程序如下:

attWriteReq_t req;
req.handle =simpleBLECharHdl;
req.len = 2;
req.value[0] =simpleBLECharVal;
req.value[1] = 0x00;
req.sig = 0;
req.cmd = 0;
(void)GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );

但是经过测试,我发现simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0], pMsg->msg.readByTypeRsp.dataList[1] );这里有误,正确的handle是保存在dataList[3]和dataList[4]单元中的,不管是把0xFFF1的值读出来,还是打开notify,用通过这两个单元读出来的handle操作都没问题。

不知道有没有人发现过这个问题,抑或通过dataList[0]和dataList[1]单元得到的handle同样可以读数据?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top