TI中文支持网
TI专业的中文技术问题搜集分享网站

notify使能,发生not mapped的错误

我使能notify的代码如下所示  

bStatus_t send_custom2_notify_enable(uint16 connHandle,uint8 taskId )
{bStatus_t req_res = SUCCESS;attWriteReq_t req;req.handle = SNM_CUSTOM2_NOTIFY_HANDLE;//18req.len = 2;  //data lengthreq.pValue[0] = LO_UINT16(PRF_CLI_START_NTF);//0x0001req.pValue[1] = HI_UINT16(PRF_CLI_START_NTF);req.sig = 0;  //not includedreq.cmd = 0;req_res = GATT_WriteCharValue(connHandle,&req,taskId);return req_res;
}

抓包工具抓到信息如下,显示not Mapped,请问这个是怎么造成的?

下面这个是我用手机app连接抓的包,我想正常应该是这种

甜甜的大香瓜:

一般是句柄没写对的问题。

必须要获取的方式获得特征值句柄,如果你写死为一个具体数值,就容易出问题。

为啥没答案:

回复 甜甜的大香瓜:

这个固定值是我用抓包工具抓到的,而且比我读到的值大1,应该没错啊?

甜甜的大香瓜:

回复 为啥没答案:

你这就是写死句柄,会出问题,明白吗?

要代码中获取,看我个性签名档的博客地址,《CC2541之发现服务与特征值》,用这种方式去获取句柄。

为啥没答案:

回复 甜甜的大香瓜:

我现在修改了,写入用的handle是我读出来的数值+1,虽然返回值是写入成功,但是从机的数据还是没发过来.对比用手机上的app去重复这个过程.再用抓包工具抓包,抓上来的包是不一样的.我代码发送出去的UUID提示not mapped 但是手机发送的命令,抓包上来UUID是Client characteristic configure.

不太清楚是怎么回事?是不是我的write request函数调用错了?

大哥帮忙分析一下这个是怎么回事

甜甜的大香瓜:

回复 为啥没答案:

再看一篇我博客,《CC2541之主机端获取notify数据》

为啥没答案:

回复 甜甜的大香瓜:

就是参考你这个改的,但是就是有这个问题

大米:

对于这个问题,我也有疑问,

req.handle = SNM_CUSTOM2_NOTIFY_HANDLE;//18
这个句柄到底是如何获取?通过Server端Client Config的UUID获取,
UUID是指configuration的UUID吗?
CCC一般在server端都没有预先分配Handle。
还是就是GATT_CLIENT_CHAR_CFG_UUID (0x2902)?
在OAD Target的工程里面代码如下:

if (pAttr->type.len == ATT_BT_UUID_SIZE) { // 16-bit UUID uint16_t uuid = BUILD_UINT16(pAttr->type.uuid[0], pAttr->type.uuid[1]); if (uuid == GATT_CLIENT_CHAR_CFG_UUID) { // Process a CCC write request.主机打开从机通知 status = GATTServApp_ProcessCCCWriteReq(connHandle, pAttr, pValue, len, offset, GATT_CLIENT_CFG_NOTIFY); } else { status = ATT_ERR_ATTR_NOT_FOUND; // Should never get here! }


赞(0)
未经允许不得转载:TI中文支持网 » notify使能,发生not mapped的错误
分享到: 更多 (0)