ANCS 发现服务时 返回失败
您好!
请问下 ANCS 中 在此函数Ancs_discover里启动 DISC_ANCS_START 发现服务后 GATT_DiscPrimaryServiceByUUID(Ancs_connHandle, uuid, ATT_UUID_SIZE, ICall_getEntityId());在这里指令里返回的值是 0x01(FALSE)的话 是什么问题?
目前问题点一直卡在这里,希望高人指点下。谢谢!
Asheng,
连接建立啥的都正常吗?
是的,都配对绑定正常了,现在就是到了这一步就是返回0x01,看了官网的ANCS,把状态打印出来的都是0x00。。。一直没明白为什么我这里发送的就是失败。。不过我用的ble_cc26xx_2_01_00_44423 版本的。而官网的是 ble_cc26xx_2_00_00_42893是这个版本,,这个会跟协议栈有关系吗?如果是,要怎么修改才能解决。。谢谢!
Aha,SDK2.1。。。
在SDK 2.1 里面,你需要在stack工程,注意,是stack工程哈,里面的options->preprocessor,宏定义里面,把GATT_NO_CLIENT 定义去掉。
谢谢,不过我把 GATT_NO_CLIENT 改成 xxGATT_NO_CLIENT 后编译 就会提示错误。。
Error[Lp011]: section placement failed
unable to allocate space for sections/blocks with a total estimated minimum size of 0xe92f bytes (max align 0x4) in <[0x0000f000-0x0001efff]> (total uncommitted space 0xdfd0).
这个错误是分配地址错误?这个是什么意思啊?该如何解决?谢谢!
Asheng,
那是因为默认的分配给stack的flash空间不够了。
在stack工程下,TOOLS目录下,IAR-Boundary.xcl,把ICALL_STACK0_ADDR改成比如0x0000E000,加点空间给stack就行。
然后再编译。第一次编译应该会出错,那是boundary 在工作的关系。不要理会,再编译一次就ok了,以后也都ok了。
谢谢!已解决!
Yan:
您好,昨天解决了发送消息给手机,但是今天测试时来电或者短信都无法进入 Ancs_notifGattMsg(pMsg); 这个函数?
例子如下:
static uint8_t SimpleBLEPeripheral_processGATTMsg(gattMsgEvent_t *pMsg)
{
if(pMsg->method == ATT_HANDLE_VALUE_NOTI ||
pMsg->method == ATT_HANDLE_VALUE_IND) {
Ancs_notifGattMsg(pMsg);
}
else if((pMsg->method == ATT_READ_RSP || pMsg->method == ATT_WRITE_RSP) ||
(pMsg->method == ATT_ERROR_RSP &&
(pMsg->msg.errorRsp.reqOpcode == ATT_READ_REQ ||
pMsg->msg.errorRsp.reqOpcode == ATT_WRITE_REQ))) {
Ancs_controlGattMsg(pMsg);
if(configCCCDState == CCCD_CONFIG_DONE) {
AncsdiscoveryCmpl = TRUE;
}
}
else {
AncsApp_discState = Ancs_discGattMsg(AncsApp_discState, pMsg);
if(AncsApp_discState == DISC_IDLE) {
if(configCCCDState == CCCD_CONFIG_NOTIF) {
Ancs_subsNotifSrc();
configCCCDState = CCCD_CONFIG_DATA;
}
}
}
......
在这里我把 Ancs_subsNotifSrc(); 的状态打印出来后是0,表示发送成功了。但是现在就遇到有来电时无法进去 Ancs_notifGattMsg(pMsg); ?请问这个也跟协议栈有关系吗?
麻烦协助解决,谢谢!
Asheng,
整个初始化流程都走完了吗?包括Ancs_subsDataSrc() ?
不好说你哪里出错了,但只要用wiki上的代码,应该就没有问题,你最好再对照一下。
另外,我当初是用专门的空中抓包工具一边分析一边写的,不然会走很多弯路。