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

MultiRole 问题

您好:

         我在使用 ble-sdk-210-extra-master 工程时, 在 链接扫描设备的按键里修改了如下

         if (keys & KEY_SELECT)  {

         ….

         if (scanRes > 0) {

            //peerAddr = devList[scanIdx].addr;
            //addrType = devList[scanIdx].addrType;
            //GAPRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE, DEFAULT_LINK_WHITE_LIST, addrType, peerAddr);

             uint8 i;
            for(i=0; i<scanRes; i++) {
              peerAddr = devList[i].addr;
              addrType = devList[i].addrType;
              GAPRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE, DEFAULT_LINK_WHITE_LIST, addrType, peerAddr);
            }
            connecting_state = 1;

           但是从现象来看还是只链接了一台从机设备。而设置断点和打印出来的设备发现 确定是有2个的。

           还有,在

    if (keys & KEY_SELECT)  {
      if (selectKey == DISCOVERED_DEVICES) {
        uint8_t addrType;
        uint8_t *peerAddr;
        // if already attempting to connect, cancel connection
        if (connecting_state == 1)  {               GAPRole_TerminateConnection(0xFFFE);
          //LCD_WRITE_STRING("Connecting stopped.", LCD_PAGE3);
          connecting_state = 0;
        }

这里我怎么运行 GAPRole_TerminateConnection(0xFFFE);  都没有跟从机设备断开?难道这个链接句柄不对吗?请问此链接句柄再哪里获取的?

还有一点,就是我在 static void simpleTopology_processRoleEvent(gapMultiRoleEvent_t *pEvent)  函数里

     case GAP_DEVICE_INFO_EVENT: {

 。。。

simpleTopology_addDeviceInfo(pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType);

       添加发现设备时 增加了 打印设备名称的 存储,但是加了此段函数

memcpy(BleParam[k].BleScanName, &pEvent->deviceInfo.pEvtData[i+1], (pEvent->deviceInfo.pEvtData[i-1]-1));

 就发现 按键功能工作异常,第一次按下可以,第二次按键则无任何动作,按键顺序先后都一样。

 

请问这是什么原因???请大侠们指点,谢谢!

         

Barbara Wu:

请问是从什么现象来判断只连接到了一个设备?

 if (keys & KEY_SELECT)  {      if (selectKey == DISCOVERED_DEVICES) {        uint8_t addrType;        uint8_t *peerAddr;        // if already attempting to connect, cancel connection        if (connecting_state == 1)  {                GAPRole_TerminateConnection(0xFFFE);          //LCD_WRITE_STRING("Connecting stopped.", LCD_PAGE3);          connecting_state = 0;        }

这段逻辑里面是在避免connecting中间又一次发起connect的动作,不是断开已有的连接

memcpy(BleParam[k].BleScanName, &pEvent->deviceInfo.pEvtData[i+1], (pEvent->deviceInfo.pEvtData[i-1]-1));

这个函函数最后的参数应该是数据长度,这里输入的似乎并不对

赞(0)
未经允许不得转载:TI中文支持网 » MultiRole 问题
分享到: 更多 (0)