微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 一个绑定和配对的问题

一个绑定和配对的问题

时间:10-02 整理:3721RD 点击:

 首先我想要实现的事 IOS 设备和CC2540 外设进行连接,连接开始由IOS 发起配对请求 ,然后由2540外设提供配对密码 再由ios

输入对应密码完成配对,然后进行绑定。

  1: 在peipheral 工程中,初始化外设参数时,我 uint8 pairMode =  GAPBOND_PAIRING_MODE_INITIATE  ; 

  这个参数设置后 通过 IOS lightbule APP 在链接时能够弹出密码出入提示, initiate a pairing request or slave security request  这是这个参数的译文,不等待,主动发起配对请求或 外设安全请求 ,这里为何是主动发起呢? 链接不是由主机扫描到设备后,主机发起配对请求吗? 外设应该就行回应就是了,为何主动发起,这里如何说明? 这里主动发起是不是指主动向IOS 发起密码输入请求呢? 也就是说 外设是基本密码显示能力 ,不具备输入能力,这里就要主动向IOS 发起输入密码请求?  那么 GAPBOND_PAIRING_MODE_WAIT_FOR_REQ  参数是不是IOS 端应该选择的参数呢,也是等待发起配对密码安全请求 因为IOS 具备输入能力?

2:  Setup the GAP Bond Manager 这里这里有个  uint32 passkey = 132 ; // passkey "000000"  这里的passkey 是如何应用在哪里应用呢?译文是The default passcode for MITM protection  避免中间人攻击, 请问什么事中间人 , 什么事权鉴? 这里passkey 该如何来应用? 

3: 

// GAP Bond Manager Callbacks 密码生成回调
static gapBondCBs_t simpleBLEPeripheral_BondMgrCBs =
{
simpleBLECentralPasscodeCB, // Passcode callback (not used by application) 密码回调
NULL // Pairing / Bonding state Callback (not used by application) 绑定 配对 回调
}; 在peripheral  工程中移植了 central 工程的 simpleBLECentralPasscodeCB  并且在回调函数里注册上, 这个函数在IOS 设备链接请求时进行回调 通过串口打印出密码,  

uint32 passcode;
uint8 str[7];

// Create random passcode 创建随机密码
LL_Rand( ((uint8 *) &passcode), sizeof( uint32 ));
passcode %= 1000000;// 取第六位

debugoutdat((uint16)passcode,"xasscode=");
// Display passcode to userpasscode 显示密码
if ( uiOutputs != 0 )
{
LCD_WRITE_STRING( "PasscodevX:\r\n ", HAL_LCD_LINE_1 );
LCD_WRITE_STRING( (char *) _ltoa(passcode, str, 10), HAL_LCD_LINE_2 );
debugoutchar("\r\n");
}

// Send passcode response 发送密码响应
GAPBondMgr_PasscodeRsp( connectionHandle, SUCCESS, passcode ); 

但是  uint32  passcode; 这个密码在定义时并没初始化, 在  LL_Rand( ((uint8 *) &passcode), sizeof( uint32 )); 这个函数上方有注册是创建

随机密码,这个函数是随机密码生成吗? 为何串口每次在链接时都打印出一个同样的密码   【318018】 这个密码从哪里来,这个密码是局部变量

passcode 定义没有初始化时系统随机配的吧,因为这里并没任何指令给passcode 赋值? 这个passcode 和 上面的  uint32 passkey = 132 ; // passkey "000000"  这里的passkey  又如何区别?

3: IOS 输出密码后,外设在哪里接收到这个IOS 传过来的密码又如何去匹配,匹配成功后建立连接,进入绑定设备后每次启动连接时这一步都无需进行,我请问下绑定是IOS 进行绑定还是外设绑定, 如果是外设绑定IOS 那么IOS 每次启动的 ID 都是变的,如何识别? 如果IOS 绑定了外设,那么我在  GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress); 认为修改 

ownAddress[5]=0XDD;
ownAddress[4]=0XDE; 后应该IOS 就认为这个设备不是绑定列表的设备 应该是要在链接时 要求再次输入密码来进一步进行绑定,但是实验中并没这一步,还是无需密码? 

4: 绑定 是主机绑定外设 还是外设绑定主机  gapBondMgrEraseAllBondings();// 解除所有绑定  这个函数如何应用?

谢谢回复  

我也有同样的疑惑,有没有人解答一下,谢谢

 

Thinkcore wu,"gapBondMgrEraseAllBondings();// 解除所有绑定  这个函数如何应用?" 这个问题有结果了没? 我现在也在关心这个问题了,有结果的话,麻烦告知一声,谢谢!我想用这个函数试试,但总是REBUILD失败!还没查出问题出在哪

我只知道第一个问题:

如果让主机ios端发起配对的话,主机端ios配置成GAPBOND_PAIRING_MODE_INITIATE,初始化配对;则simpleperipheral须设置为GAPBOND_PAIRING_MODE_WAIT_FOR_REQ等待配对;这两个参数需要配合使用才行

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top