Quantcast
Channel: 蓝牙论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 7485

主从连接问题

$
0
0

我想修改SDK1.4.2中的central连接我们公司已有的从机设备;

我要连接的设备服务UUID是128bit的,SDK中的例子是16bit的,

所以我修改SIMPLEPROFILE_SERV_UUID 为mul_con_ser_uuid[] = {0x47, 0x7C, 0xE1, 0x25, 0x63, 0xFE, 0xD9, 0x9A, 0xef, 0x43, 0x7F, 0x44, 0xD8, 0x55, 0xFE, 0x47};

并且修改了这个函数

static bool simpleBLEFindSvcUuid( uint8 *cmp_uuid,uint8 cmpLen, uint8 *pData, uint8 dataLen )
{
    uint8 adLen;
    uint8 adType;
    uint8 *pEnd;

    pEnd = pData + dataLen - 1;

    printf("adv_data\r\n");
    while(dataLen--)
   {
       printf("%X",*pData++);
   }
   printf("\r\n");   //这个位置打印出来的广播数据,没有我的设备
  // While end of data not reached
  while ( pData < pEnd )
 {
      // Get length of next AD item
     adLen = *pData++;
    if ( adLen > 0 )
   {
        adType = *pData;

       // If AD type is for 16-bit service UUID
      //if ( adType == GAP_ADTYPE_16BIT_MORE || adType == GAP_ADTYPE_16BIT_COMPLETE )
    if((adType == GAP_ADTYPE_128BIT_MORE)||(adType == GAP_ADTYPE_128BIT_COMPLETE))//进行了修改
   {
        pData++;
       adLen--;

     // For each UUID in list
    while ( adLen >= 2 && pData < pEnd )
   {
        // Check for match
        //if ( pData[0] == LO_UINT16(uuid) && pData[1] == HI_UINT16(uuid) )
        if(user_compare_uuid(&pData[0],cmp_uuid,dataLen,cmpLen))///自己写了一个比对函数
        {
            printf("Service UUID is matched\r\n");
           // Match found
          return TRUE;
       }

      // Go to next
      pData += 2;
     adLen -= 2;
  }

   // Handle possible erroneous extra byte in UUID list
  if ( adLen == 1 )
  {
        pData++;
  }
  }
else
{
     // Go to next item
    pData += adLen;
}
}
}

   // Match not found
   return FALSE;
}

现在的问题是,打印出来的广播没有我的从机设备(地址和UUID都没找到匹配的),

通过抓包工具,查看我的从机设备,发现根本没有广播出服务的UUID.那这个位置我是不是改成其他的匹配逻辑就可以啦?比如匹配地址或者设备名字?


谢谢


Viewing all articles
Browse latest Browse all 7485

Trending Articles