nrf52 密码配对
一、nrf52 静态密码配对
我们先来了解下关于蓝牙配对的几个参数,我的例程是按照这个参数设置的。我用的SDK是15.2的,工程是
【nrf52 密码配对】\examples\ble_peripheral\ble_app_hrs\pca10040\s132\arm5_no_packs。
网上也有很多讲静态密码配对的,我也尝试了,根本行不通,估计旧的SDK上面是可以实现的。
#define SEC_PARAM_BOND1//绑定
#define SEC_PARAM_MITM1//中间人
#define SEC_PARAM_LESC1//低功耗加密
#define SEC_PARAM_KEYPRESS0//按键通知使能
#define SEC_PARAM_IO_CAPABILITIESBLE_GAP_IO_CAPS_DISPLAY_ONLY//只显示
#define SEC_PARAM_OOB0//外带 ,比如NFC
#define SEC_PARAM_MIN_KEY_SIZE7//最小加密密钥长度
#define SEC_PARAM_MAX_KEY_SIZE16//最大加密密钥长度
IO输出能力有以下几种
文章图片
安全加密模式有以下几种
文章图片
安全进入配对方式有以下几种
文章图片
理解了以上几个参数后,我们来进行操作
首先,对上面几个参数进行设置,如前面的参数设置。
其次,在gap_params_init()函数后面添加以下代码,设置静态密码,STATIC_PASSKEY“123456”
static void set_password(void)
{
ret_code_t err_code;
ble_opt_t passkey_opt;
uint8_t passkey[6];
memcpy(passkey,STATIC_PASSKEY,6);
passkey_opt.gap_opt.passkey.p_passkey = passkey;
err_code = sd_ble_opt_set(BLE_GAP_OPT_PASSKEY, &passkey_opt);
APP_ERROR_CHECK(err_code);
}
再者,修改services_init()函数里面的对于安全进入的设置,将SEC_OPEN的地方全改成SEC_MITM。
编译OK后,测试OK,如图
文章图片
注意一点的是,因为是使能了绑定功能的,所以,断开连接后需要手机端设置里清除配对信息,然后从机设备端也要清除配对信息,使用以下操作清除配对信息,当你再次连接的时候就不会出错了,不然重新连接的时候总是报错,禁止操作。
if (erase_bonds == true)
{
// Scanning and advertising is done upon PM_EVT_PEERS_DELETE_SUCCEEDED event.
delete_bonds();
}
以上的静态密码配对希望对大家有所帮助。
推荐阅读
- 8、Flask构建弹幕微电影网站-搭建后台页面-密码修改、主页控制面板
- “终南秘境”——《终南山密码》
- crontab无法查看,原来是密码过期了
- 实现财富自由、让钱来找你的密码……
- “不可能任务”背后,有关键人物串起的惊天大阴谋。|“不可能任务”背后,有关键人物串起的惊天大阴谋。|《清明上河图密码3》
- 带着觉知生活,人生才开始变得有深度|带着觉知生活,人生才开始变得有深度 快乐密码空间
- linux服务器间建立免密码登录
- 寒假社会实践|寒假社会实践|探寻双墩密码,传承创新文化
- 生命密码426
- 斯坦福大学密码学公开课——分组加密的应用(一次性密钥)