我在peripheral.c文件中加入如下代码,使能 Resolvable Private Address模式
stat = GAP_ConfigDeviceAddr(ADDRMODE_PRIVATE_RESOLVE, NULL);
if (stat != SUCCESS)
{
gapRole_state = GAPROLE_ERROR;
}
//Set timeout value to 5 minute
GAP_SetParamValue( TGAP_PRIVATE_ADDR_INT , 5);
我的问题是,本机如何获取这个Resolvable Private Address。
我用这个函数 GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress) 获取到的都是public address, 固定的。
万分感谢!!
linghua liu:
回复 Kevin Qiu1:
Kevin 谢谢
linghua liu:
回复 linghua liu:
还有我想再请教一个问题,peripheral怎么获取center设备的public Address?
linghua liu:
回复 linghua liu:
比如说从机想获取手机安卓端的蓝牙Public 地址。我查询连接的蓝牙设备地址返回的是Private地址
Kevin Qiu1:
回复 linghua liu:
gapEstLinkReqEvent_t *pPkt = (gapEstLinkReqEvent_t *)pMsg;if ( pPkt->hdr.status == SUCCESS ) { VOID osal_memcpy( gapRole_ConnectedDevAddr, pPkt->devAddr, B_ADDR_LEN );这取决于central 设备,如果central设备本身用的是public 地址的话,那么得到的肯定就是public 地址。如果用的是random 的话,那么你每次得到都会不一样
linghua liu:
回复 Kevin Qiu1:
也就是说如果central设备使用random地址的话,是无法获取central的public地址,是吗?即使在配对绑定后?
另外,我 调用 extern hciStatus_t HCI_LE_ReadLocalResolvableAddressCmd( uint8localIdAddrType,uint8 *localIdAddr );
读取本机的Random地址,发现根本没有读出来,全是0
linghua liu:
回复 linghua liu:
我是这样使用的
/*获取本机蓝牙地址*///GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress);//public addressflag = HCI_LE_ReadLocalResolvableAddressCmd(HCI_RANDOM_DEVICE_ADDRESS, ownAddress);//private resolvable address
Kevin Qiu1:
回复 linghua liu:
如果central设备使用random其他地址的话,用ReadLocalResolvableAddressCmd是无法获取地址的
linghua liu:
回复 Kevin Qiu1:
我想知道的是本机(peripheral)使用的是ramdom地址,如何获取本机当前的Ramdom地址?是自己获取自己当前的Ramdom地址。
Kevin Qiu1:
回复 linghua liu:
Random Device Address分为Static Device Address和Private Device Address,是设备设定后才会有的
可以查一下关于Random Device Address的说明