TI中文支持网
TI专业的中文技术问题搜集分享网站

cc2540 2541 配对 绑定 问题

新人的问题,请前辈们指点:

  我看了simpleperipheral 和 central的例子,他们初始化都是设置的GAPBOND_PAIRING_MODE_WAIT_FOR_REQ等待配对.

那么我的问题是,到底是peripheral发起的配对请求还是central?在什么时候发起的配对请求?

edgar liu:

回复 Yan:

非常感谢您的回答.

那么怎么设置才能使得必须配对之后才能进数据传输呢?

edgar liu:

回复 Yan:

非常感谢您的回答,对我帮助很大.

xie weiping:

回复 Yan:

Hi Yan,

“只要其中一个设置成GAPBOND_PAIRING_MODE_INITIATE, 两边就会配对”。那么配对的时候,两边是不是互相需要发送密码才行?只有密码对了才算配对成功吗?

谢谢!

Yan:

回复 xie weiping:

是的, 必须会有密码.

至于是否要手动输入, 根据设备的IO Capability 设置来的. 就是设备的输入输出能力.

你看一下IO Capability的定义.

xie weiping:

回复 Yan:

Hi Yan,

如果不手动输入,它的密码从哪里获得呢?不手动输入密码是如何配对成功的?谢谢!

Yan:

回复 xie weiping:

hi xie,

蓝牙很聪明的, 

你通过IO capability 告诉它你没法手动输入, 它会自动产生随机数会去匹配的.

xie weiping:

回复 Yan:

Hi Yan,

关于绑定我看代码的时候遇到了一些疑问。如下:

例子代码中,每当链接成功事件产生后,会通知绑定管理

            // Notify the Bond Manager to the connection          VOID GAPBondMgr_LinkEst( pPkt->devAddrType, pPkt->devAddr, pPkt->connectionHandle, GAP_PROFILE_PERIPHERAL );

这个函数的作用是绑定蓝牙吗?

bStatus_t GAPBondMgr_LinkEst( uint8 addrType, uint8 *pDevAddr, uint16 connHandle, uint8 role ){  uint8 idx;                          // NV Index  uint8 publicAddr[B_ADDR_LEN]        // Place to put the public address      = {0, 0, 0, 0, 0, 0};

  idx = GAPBondMgr_ResolveAddr( addrType, pDevAddr, publicAddr );  if ( idx < GAP_BONDINGS_MAX )  {

                ……

}

代码中只有判断 idx < GAP_BONDINGS_MAX ,意思是这个蓝牙地址在绑定列表中?

如果idx > =GAP_BONDINGS_MAX 呢?

我都看蒙了,到底应该如何绑定蓝牙啊?

谢谢!

 

 

 

Yan:

回复 xie weiping:

xie,

GAP_BONDINGS_MAX 是flash 里面允许存储的最多的绑定设备信息的个数.

你不用担心怎么绑定的, 绑定的工作底层自动会把做好的.

你要做的只是在应用层的宏定义里面打开绑定, 设置一下IO capability 就行. 如果你的设备的IO capability 设置成有输入功能, 就会要求输入密码, 如果你是没有输入功能更, 系统会自动产生随机密码.

赞(0)
未经允许不得转载:TI中文支持网 » cc2540 2541 配对 绑定 问题
分享到: 更多 (0)