主题中讨论的其他器件:SysConfig
工具与软件:
我们在外设端使用蓝牙配对使用密钥进入算法时遇到了问题。 该工程是 simplelink_lowpower_f3_sdk_8_10_01_02中的示例基本 BLE。
我们在代码中设置债券管理器如下所示。 简而言之,我们禁用了绑定,并抱怨我们的 IO 功能是仅显示。
uint8_t 配对模式= GAPBOND_PAIRING_MODE_INITIALIZE;
uint8_t scMode = GAPBOND_SECURE_CONNECTION_ONLY;
uint8_t MITM = true;
uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
uint8_t 绑定= false;
GAPB454.R Mgr_Set assieter (GAPBOND_Bonding_enabled、sizeof (uint8_t)、&bonding);
GAPB454.R Mgr_Set 451eter (GAPBOND_IO_CAPABILITY、sizeof (uint8_t)、&ioCap);
GAPB452.PAMR Mgr_Set (GAPBOND_PAIRING_MODE、sizeof (uint8_t)、&pairMode);
GAPB454.R Mgr_Set 451eter (GAPBOND_MITM_PROTECTION、sizeof (uint8_t)、&MITM);
GAPB454.R Mgr_Set 451eter (GAPBOND_SECURE_CONNECTION、sizeof (uint8_t)、&scMode);
通过这些设置、我们可以在连接输出设备时看到中央侧(iPhone)弹出 PIN 输入窗口。 然后我们输入正确的 PIN、这是我们在外设侧设置的默认 PIN (123456)。 我观察到 Mgr_Process 在 BondMgr.c 中定义的 GAPB387APMSg()中收到的 GAP_ENTIATION_COMPLETE_EVENT 外设代码、我们从该代码读回监视窗口中的 stateFlags。
我们得到的 stateFlags 等于0x37、这会使我们感到困惑、因为0x37意味着 LINK_CONCED | LINK_ATCHED | LINK_BOUND | LINK_SECURE_CONNECTIONS | LINK_ENCRITTED。 但如上所述,我们禁用了与 GAPBARDICRACDIATEER Mgr_Set ()的绑定。 在 iPhone 方面、我们观察到下次手机再次尝试连接我们的设备时、仍会再次弹出 PIN 图。 因此,从我们的配置和 iPhone 的行为,我们认为在场景中没有 Bond ,但从 LINKDB stateFlags , Bond 标志在 ON。 哪一侧是正确的信息、为什么会发生这种不匹配?
我们禁用绑定的原因是,当我们没有这样做时,我们的 Pairing_pairStateHandler()可以看到 pMsgData->status 等于8而不是0。 当我们禁用绑定时,至少我们可以在同一 Pairing_pairStateHandler()中看到 pMsgData->state == 0(成功)。
请帮助我们解决这个问题。 提前感谢。