CC2640 notify使能 成功后,主机发送出错
本人对bl4.0不太懂,目前刚接手的项目,调的焦头烂额,请求大神多多指点。
目前遇到的问题:
从机使能notify代码:
// Do a write attWriteReq_t req;
req.pValue = GATT_bm_alloc(connHandle, ATT_WRITE_REQ, 2, NULL);
if ( req.pValue != NULL ) {
req.handle = charHdl+1;//特征值6
//req.offset = 0;
req.len = 2;
req.pValue[0] = 0x01;
req.pValue[1] = 0x00;
req.sig = 0;
req.cmd = 0;
status = GATT_GATT_WriteCharValue(connHandle, &req);
if ( status != SUCCESS )
{ GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ); }
}
目前,设备可以连接并且可以通过特征值6给从设备发送数据。但是我使能notify,想要从机给主机发送数据的时候,使用的上面的代码。从机的notify功能被使能,可以给主机发送数据。但是,主机发送上面的命令,却收不到写成功的反馈。而且,发送这指令之前是可以给从机发送数据的,发送之后,主机再也无法给从机发送命令了。不知道是什么原因。有没有遇到类似情况的,或者可能发生此问题的原因,指点一下。已经困扰我好几天了。
ye,
那么你是在哪里调用上面的代码去发送给从机数据的呢?
有两个怀疑的地方,第一就是你的handle,特征值6,你得确保你那样写是正确的handle。 第二就是你调用这段代码的地方了。
Yan:
非常的感谢回答我的问题。 我是在主函数中调用,没有问题。我已经查出来了,是从机程序有问题,但是不知道从机程序哪有问题。我换了一个从机的demo就行了。
我现在又遇到了一个新的问题,我用的demo是“多角色“的demo,但是连接从机的时候,执行程序:
uint8_t uuid[ATT_UUID_SIZE] = { TI_BASE_UUID_128(SIMPLEPROFILE_SERV_UUID) };
discState = BLE_DISC_STATE_SVC;
// Discovery simple BLE service
VOID GATT_DiscPrimaryServiceByUUID(connHandle, uuid, ATT_UUID_SIZE, selfEntity); }
后,返回ATT_ERROR_RSP错误。
我确定我的SIMPLEPROFILE_SERV_UUID是正确的,因为我是多角色程序,一套程序,一个做主一个做从连接的。
我用这套程序作为主,连接另一个从机程序,是可以返回的。也就是说从机部分有问题,但是我查看代码,我的程序与那套从机程序没什么大的区别。
你知道这个原因,可能是哪出问题了吗,给我一个查找问题的方向也行?
Yan:
非常的感谢回答我的问题。 我是在主函数中调用,没有问题。我已经查出来了,是从机程序有问题,但是不知道从机程序哪有问题。我换了一个从机的demo就行了。
我现在又遇到了一个新的问题,我用的demo是“多角色“的demo,但是连接从机的时候,执行程序:
uint8_t uuid[ATT_UUID_SIZE] = { TI_BASE_UUID_128(SIMPLEPROFILE_SERV_UUID) };
discState = BLE_DISC_STATE_SVC;
// Discovery simple BLE service
VOID GATT_DiscPrimaryServiceByUUID(connHandle, uuid, ATT_UUID_SIZE, selfEntity); }
后,返回ATT_ERROR_RSP错误。
我确定我的SIMPLEPROFILE_SERV_UUID是正确的,因为我是多角色程序,一套程序,一个做主一个做从连接的。
我用这套程序作为主,连接另一个从机程序,是可以返回的。也就是说从机部分有问题,但是我查看代码,我的程序与那套从机程序没什么大的区别。
你知道这个原因,可能是哪出问题了吗,给我一个查找问题的方向也行?
ye,
无法判断。
这个需要你空中抓包分析,到底哪里交互有问题。