当前环境:
SDK:simplelink_cc13x2_26x2_sdk_4_10_00_78
芯片:cc2642
手机使用苹果,安卓均出现同样问题,使用芯片设置使用指定的配对码进行配对,手机输入配对码后无法配对成功。
配置如下:
/********************************************************************* * Bond Manager Configuration */ uint8_t pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ; uint8_t mitm = true; uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY; uint8_t bonding = true; uint8_t secureConnection = GAPBOND_SECURE_CONNECTION_ALLOW; uint8_t autoSyncWL = false; uint8_t eccReGenPolicy = 0; uint8_t KeySize = 16; uint8_t removeLRUBond = true; uint8_t KeyDistList = GAPBOND_KEYDIST_MENCKEY | GAPBOND_KEYDIST_MIDKEY | GAPBOND_KEYDIST_MSIGN | GAPBOND_KEYDIST_SENCKEY | GAPBOND_KEYDIST_SIDKEY | GAPBOND_KEYDIST_SSIGN; uint8_t eccDebugKeys = false; void setBondManagerParameters() { // Set Pairing Mode GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode); // Set MITM Protection GAPBondMgr_SetParameter(GAPBOND_MITM_PROTECTION, sizeof(uint8_t), &mitm); // Set IO Capabilities GAPBondMgr_SetParameter(GAPBOND_IO_CAPABILITIES, sizeof(uint8_t), &ioCap); // Set Bonding GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bonding); // Set Secure Connection Usage during Pairing GAPBondMgr_SetParameter(GAPBOND_SECURE_CONNECTION, sizeof(uint8_t), &secureConnection); // Set Auto Whitelist Sync GAPBondMgr_SetParameter(GAPBOND_AUTO_SYNC_WL, sizeof(uint8_t), &autoSyncWL); // Set ECC Key Regeneration Policy GAPBondMgr_SetParameter(GAPBOND_ECCKEY_REGEN_POLICY, sizeof(uint8_t), &eccReGenPolicy); // Set Key Size used in pairing GAPBondMgr_SetParameter(GAPBOND_KEYSIZE, sizeof(uint8_t), &KeySize); // Set LRU Bond Replacement Scheme GAPBondMgr_SetParameter(GAPBOND_LRU_BOND_REPLACEMENT, sizeof(uint8_t), &removeLRUBond); // Set Key Distribution list for pairing GAPBondMgr_SetParameter(GAPBOND_KEY_DIST_LIST, sizeof(uint8_t), &KeyDistList); // Set Secure Connection Debug Keys GAPBondMgr_SetParameter(GAPBOND_SC_HOST_DEBUG, sizeof(uint8_t), &eccDebugKeys); } // GAP Bond Manager Callbacks static gapBondCBs_t SimplePeripheral_BondMgrCBs = { SimplePeripheral_passcodeCb, // Passcode callback SimplePeripheral_pairStateCb // Pairing/Bonding state Callback }; /********************************************************************* * @fn SimplePeripheral_processPasscode * * @brief Process the Passcode request. * * @return none */ static void SimplePeripheral_processPasscode(spPasscodeData_t *pPasscodeData) { uint32_t passcode = 999999; Display_printf(("%04x, %d, %d, %d,\r\n", pPasscodeData->connHandle, pPasscodeData->uiInputs, pPasscodeData->uiOutputs, pPasscodeData->numComparison));//state code: 0000,0,1,0 // Display passcode to user if (pPasscodeData->uiOutputs != 0) { Display_printf(("Passcode: %d\r\n", passcode)); } // Send passcode response GAPBondMgr_PasscodeRsp(pPasscodeData->connHandle, SUCCESS, passcode); } //ERR state code case GAPBOND_PAIRING_STATE_COMPLETE: if (status == SUCCESS) { Display_printf(dispHandle, SP_ROW_CONNECTION, 0, "Pairing success"); } else { Display_printf(dispHandle, SP_ROW_CONNECTION, 0, "Pairing fail: %d", status);//fail state: 0x0b(11); } break;
在手机上连接并点击配对后,无配对成功记录,安卓苹果均如此,已经在上面查询并尝试了
static gapBondCBs_t SimplePeripheral_BondMgrCBs =
{
NULL, // Passcode callback
SimplePeripheral_pairStateCb // Pairing/Bonding state Callback
};
也无法配对成功,配对完成事件(GAPBOND_PAIRING_STATE_COMPLETE)错误码提示为0x0b(SMP_PAIRING_FAILED_DHKEY_CHECK_FAILED)
我不清楚我还有哪些设置点没有关注到。
麻烦提供一下技术支持,非常感谢!