前言:
前篇博客对配对绑定的流程进行了讲解,接下来针对CH582芯片的加密操作进行讲解。
一、手机连接peripheral加密处理
用户为了安全一般会在蓝牙连接的时候进行加密的处理,毕竟谁也不希望自己与别人交流的内容被广而告之,谁都可以获取到。这个时候加密的用处就体现出来了。例如,我们在使用手机连接蓝牙耳机时只需要开启配对功能,手机就可以配对绑定。但是有些设备具有保密性,不能谁来连接都可以成功,因此我们会进行设置密码,当主机想要连接时必须输入密码方可建立连接,否则无法与该从机成功建立连接。
使用手机连接peripheral时,peripheral需要如下修改:
// Setup the GAP Bond Manager { uint32_t passkey = 234234; // passkey "000000" uint8_t pairMode = GAPBOND_PAIRING_MODE_INITIATE; uint8_t mitm = TRUE; uint8_t bonding = 0; uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY; GAPBondMgr_SetParameter(GAPBOND_PERI_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey); GAPBondMgr_SetParameter(GAPBOND_PERI_PAIRING_MODE, sizeof(uint8_t), &pairMode); GAPBondMgr_SetParameter(GAPBOND_PERI_MITM_PROTECTION, sizeof(uint8_t), &mitm); GAPBondMgr_SetParameter(GAPBOND_PERI_IO_CAPABILITIES, sizeof(uint8_t), &ioCap); GAPBondMgr_SetParameter(GAPBOND_PERI_BONDING_ENABLED, sizeof(uint8_t), &bonding); }
如下修改可实现后,手机建立连接时一定会弹出配对框提供输入密码,输入不正确则无法连接。
笔者建议在peripheral的例程添加一个回调函数,先修改如下:
static gapBondCBs_t Peripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) peripheralPairStateCB // Pairing / Bonding state Callback (not used by application) };
然后添加对应的回调函数:
static void peripheralPairStateCB(uint16_t connHandle, uint8_t state, uint8_t status) { if(state == GAPBOND_PAIRING_STATE_STARTED) { PRINT("Pairing started:%d\n", status); } else if(state == GAPBOND_PAIRING_STATE_COMPLETE) { if(status == SUCCESS) { PRINT("Pairing success\n"); } else { PRINT("Pairing fail\n"); } } else if(state == GAPBOND_PAIRING_STATE_BONDED) { if(status == SUCCESS) { PRINT("Bonding success\n"); } } else if(state == GAPBOND_PAIRING_STATE_BOND_SAVED) { if(status == SUCCESS) { PRINT("Bond save success\n"); } else { PRINT("Bond save failed: %d\n", status); } } }
这里添加后,手机APP在与peripheral连接后,会根据相应的配对输入执行不同的操作,通过peripheral的日志可以更直观的观察。
如我们正确建立连接,日志如下:
如输入密码错误,日志如下:
在输出Pairing fail后我们可以调用函数立马断开连接:GAPRole_TerminateLink(pEvent->linkCmpl.connectionHandle);,否则需要再稍等一会才会断开连接,这是提供一个技巧,具体是否操作取决于实际的需求。
未完待续...
标签:PAIRING,GAPBOND,peripheral,绑定,uint8,PRINT,BLE,配对,连接 From: https://www.cnblogs.com/gscw/p/16942559.html