ANCS例程的的配对和绑定出问题
====================================
问题是:下面的现象是不是说明,配对不成功?
====================================
ANCS的例程是这个http://processors.wiki.ti.com/index.php/Cc2640_ANCS_Sample
我仿真发现AncsApp_pairStateEvt函数有如下的现象
if(state == GAPBOND_PARING_STATE_STARTED)
{
/*初次连接,配对的时候可以进入到这里*/
}
else if (state == GAPBOND_PARING_STATE_COMPLETE)
{
/*初次连接,配对的时候不可以进入到这里*/
}
(state == GAPBOND_PARING_STATE_BOND)
{
/*重新连接的时候可以进入到这里*/
}
====================================
上面的现象是不是说明,配对不成功?
====================================
我的配对绑定的设置参数为
uint32_t passkey = 0; // passkey "000000"
uint8_t pairMode = GAPBOND_PAIRING_MODE_INITIATE;
uint8_t mitm = TRUE;
uint8_t ioCap = GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT;
uint8_t bonding = TRUE;
GAPBondMgr_SetParameter(GAPBOND_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey);
GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode);
GAPBondMgr_SetParameter(GAPBOND_MITM_PROTECTION, sizeof(uint8_t), &mitm);
GAPBondMgr_SetParameter(GAPBOND_IO_CAPABILITIES, sizeof(uint8_t), &ioCap);
GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bonding); }
参考资料有http://blog.csdn.net/feilusia/article/details/50212945,《CC2541之配对与绑定》里面有描述到:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一次连接时的进入先后顺序为:
GAPBOND_PAIRING_STATE_STARTED(0x00)
GAPBOND_PAIRING_STATE_COMPLETE(0x01)
绑定后再连接时的进入先后顺序为:
GAPBOND_PAIRING_STATE_BONDED(0x02)
(其他步骤被忽略了)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jahol Fan,
你用的是iOS最新版本吗?
配对绑定的设置没有问题,你这样的设置下,最终用的是没有MITM的,但是绑定是有的。所以你第二次能进入到绑定完成的状态。
不知道你第一次连接后的功能是否正常?还是必须第二次功能才正常?
你可以空中抓包看一下配对过程的log吗?从slave security request到两者的pairing random/confirm交换,看看是否正常,如果你有更高级的sniffer(2540做不到),你还能看最后的密钥交换,看看中间是否有问题?
配对完成,断开连接,再重新连接才bonding success,但是ANCS的功能还是不正常
Jahol Fan,
所以你用的是2640直接试呢,还是移植到了2541?
在2640上实现ANCS
ANCS需要先绑定配对
你这个说明配对绑定是成功的。第一次i配对成功之后,会将key等信息保存在NV里面。断电再次连接会直接从使用从NV中取出来的秘钥信息来实现绑定,这个时候才会出现bond success信息。第一次会出现bond saved success。