CC2540主机搜索从机广播内容,打印出的数据有问题?
您好:
我想让主机根据扫描到的不同广播内容来判断连接对象,我在TI官方例程simpleBLECentral下的simpleBLECentral.c文件里的函数static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent )中添加了一句话
case GAP_DEVICE_INFO_EVENT:
{
// if filtering device discovery results based on service UUID
if ( DEFAULT_DEV_DISC_BY_SVC_UUID == TRUE )
{
if ( simpleBLEFindSvcUuid( SIMPLEPROFILE_SERV_UUID,
pEvent->deviceInfo.pEvtData,
pEvent->deviceInfo.dataLen ) )
{
simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );
//打印主机搜索到的广播数据
NPI_WriteTransport ( pEvent->deviceInfo.pEvtData, osal_strlen((char *)(pEvent->deviceInfo.pEvtData)));
}
}
}
break;
令我奇怪的是,打印的内容不只有广播数据,还有别的内容02 01 06 03 02 F0 FF (34 80),这个34 80 就是广播中没看到的数据,后来重启从机再次搜索,得到是 02 01 06 03 02 F0 FF (34 A9 32 80),请问这些杂乱数据是哪来的? 我拿packet sniff确定我的广播数据就是02 01 06 03 02 F0 FF 。
另外,我编译中遇到一个警告Warning[w52]: More than one definition for the byte at address 0x6b in common segment INTVEC. It is defined in module "hal_uart" as well as in module "hal_key" ,不知道该怎么改,是否对错误有影响了?谢谢!
1: 检查发送数据的长度 osal_strlen((char *)(pEvent->deviceInfo.pEvtData))
strlen测量的是字符串的长度,广播数据不一定是0结尾的数据
2: 错误表示有两个中断ISR,你看看是不是写错中断ID号了
我查了一下osal_strlen得到的长度是9,也就是说pEvent->deviceInfo.pEvtData里的数据确实不只是广播数据,那如果每次收广播数据前清0一次pEvtData,该怎么做了?
中断ID在哪了?我把宏定义HAL_UART=TRUE一打开,在编译就是这样