微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > ANCS 发现服务时 返回失败

ANCS 发现服务时 返回失败

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

您好!

      请问下  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上的代码,应该就没有问题,你最好再对照一下。

另外,我当初是用专门的空中抓包工具一边分析一边写的,不然会走很多弯路。

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

网站地图

Top