关于simpleCentral程序的疑惑
在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同样可以读数据?