我想修改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.那这个位置我是不是改成其他的匹配逻辑就可以啦?比如匹配地址或者设备名字?
谢谢