关于设备端获取主机地址(PUBLIC类型),求指教
在设备连接后,我希望判断他的主机地址是否是曾经绑定过的地址,而调用
GAPRole_GetParameter(GAPROLE_CONN_BD_ADDR,ConnAddr); 得到的是ADDRTYPE_PRIVATE_RESOLVE 类型的地址,不是PUBLIC的。主机采用IPHONE。
在绑定过程中,我发现发送来的消息内有物理地址,还有什么办法能获取到物理地址而不改变设备和主机的状态的么?(发起绑定后设备状态就不是原来仅仅连接的状态了)
void gapBondMgrSlaveSecurityReq( uint16 connHandle )
{
uint8 authReq = 0;
authReq |= (gapBond_Bonding) ? SM_AUTH_STATE_BONDING : 0;
authReq |= (gapBond_MITM) ? SM_AUTH_STATE_AUTHENTICATED : 0;
VOID GAP_SendSlaveSecurityRequest( connHandle, authReq );
}
是否把这个参数直接为0就可以获得主机的地址而不改变为AUTHEN 和BOND的状态?我是否可以用这个函数来获得主机的真实地址,那么在消息那如何读取?
顶上去,让你们看到。
iphone的物理地址是随机给的
但是我发现,在绑定过程中,数据到BondMgr 层的时候,数据包内含真实地址,BOND就是记录这个真实地址判断是否已经BOND过的。发起连接的是随机的,但是在认证过程中,地址通过数据包的方式送过来的。说明还是有可能通过一些方法获得真实地址的。 否则怎么绑呢,难道非要主机做这事?
认命吧 现在没办法绑
如果没有办法,作为蓝牙4应用的主力,现在苹果是如何和设备之间绑定的呢。?主要是判断是否是已经绑定的设备。难道仅仅只能在绑的过程中发现,那不是有点晚了么?