最近,在学校BLE 工程文件 SimpleBLEPeripheral.ewp
有几个问题:
1)连接
主从机连接过程
一个典型的低功耗蓝牙系统同时包含外设和核心(主机),两者的连接过程如下:
外设角色向外发送自己的信息(设备地址、名字等),主机收到外设广播信息后,发送扫描请求(scanrequest)给外设,外设响应主机的请求,连接建立完成。
问题:
连接完成的标志是什么?工程中的代码在哪里体现?外设相应主机的请求,相应的代码在哪里?整个的连接过程是怎样的,比较模糊,代码找了半天没看到?
2)加密处理
利用配对实现,利用密匙来加密授权连接。典型的过程是:外设向主机请求口令一个(passkey)以便进行配对,待主机发送了正确的口令之后,连接通信通过主从机互换密码来校验。
问题:关于 外设向主机请求口令一个(passkey)以便进行配对,相应的代码段在哪里体现? 谢谢!
Tan Yiyun:
回复 Yue TANG:
谢谢 TY!
Yue TANG:
回复 Tan Yiyun:
请确认。新的问题可以重新发布
Tan Yiyun:
回复 Yue TANG:
dear TY,
你好!关于添加密码
static gapBondCBs_t simpleBLEPeripheral_BondMgrCBs ={ NULL, // Passcode callback (not used by application) NULL // Pairing / Bonding state Callback (not used by application)};
有没有参考代码提供?还有就是有哪些要注意的地方?
谢谢@
Yue TANG:
回复 Tan Yiyun:
可以借鉴simplecentral工程 的例子,有passcode callback的处理。
Yue TANG:
回复 Tan Yiyun:
static void simpleBLECentralPasscodeCB( uint8 *deviceAddr, uint16 connectionHandle, uint8 uiInputs, uint8 uiOutputs ){#if (HAL_LCD == TRUE) uint32 passcode; uint8 str[7]; // Create random passcode LL_Rand( ((uint8 *) &passcode), sizeof( uint32 )); passcode %= 1000000; // Display passcode to user if ( uiOutputs != 0 ) { LCD_WRITE_STRING( "Passcode:", HAL_LCD_LINE_1 ); LCD_WRITE_STRING( (char *) _ltoa(passcode, str, 10), HAL_LCD_LINE_2 ); } // Send passcode response GAPBondMgr_PasscodeRsp( connectionHandle, SUCCESS, passcode );#endif}
Tan Yiyun:
回复 Yue TANG:
TY,
你好!
simpleBLECentralPasscodeCB( uint8 *deviceAddr, uint16 connectionHandle, uint8 uiInputs, uint8 uiOutputs );
这个函数是 Central 工程中的吧!BLE作为Central时,发送用函数!
而做为Peripheral的BLE应该是,申请Passcode才对吧?这个函数应该在Peripheral时不能用吧?
我不知道,我的理解对不对?请赐教!
再次谢谢TY的热心帮助!
Tan Yiyun:
回复 Yue TANG:
关于Passcode callback ,simplecentral工程 的例子好像没有提到?
Yue TANG:
回复 Tan Yiyun:
输入输出能力描述非常重要,哪一方显示Passkey,哪一方输入Passkey,由这个选项决定。举几个具体的例子(要求鉴权的情况下)。(1)如果A具备输入能力,B具备输出能力,则B显示Passkey,A输入Passkey。反之亦然。(2)如果A不具备输入输出能力,B也不具备输入输出能力,即使要求鉴权,也将采用Justwork的方式完成配对。3)如果A,B都具备输入输出能力,发起配对请求的一方显示Passkey,另一方输入Passkey。(4)如果双方不满足一端支持输入,一端支持输出,则采用Justwork的方式进行配对。
Tan Yiyun:
回复 Yue TANG:
TY,
如果是连接的时候,想加密码呢? 比如说,central 申请连接外设A,外设A能否要求她发送连接密码,如果连接密码错误,不能连接?
如果可以,那么外设A的代码应该怎么修改呢?
谢谢
TI中文支持网


