您好
我有個應用在cc2640上的glucose與iphone連接,phone app是Store下載的兩款,
希望手機在get data時不要進行配對&passcode(希望按get data 按鈕即取得data)
應用如下:
smart phone(app:BLE Tool, EzGluco) --> <Connect> --> cc2640(Glucose sensor)
smart phone(app:BLE Tool, EzGluco) <-- <Reply connected> <-- cc2640(Glucose sensor)
smart phone(app:BLE Tool, EzGluco) --> <Get glucose data> --> cc2640(Glucose sensor)
smart phone(app:BLE Tool, EzGluco) <-- <Reply data> <-- cc2640(Glucose sensor)
參考各位前輩define pairing param:
uint32_t passkey = 000000;
uint8_t pairMode = GAPBOND_PAIRING_MODE_NO_PAIRING;
uint8_t mitm = FALSE;
uint8_t ioCap = GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT;
uint8_t bonding = FALSE;
GAPBondMgr_SetParameter(GAPBOND_DEFAULT_PASSCODE, sizeof(uint32_t),&passkey);
GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode);
GAPBondMgr_SetParameter(GAPBOND_MITM_PROTECTION, sizeof(uint8_t), &mitm);
GAPBondMgr_SetParameter(GAPBOND_IO_CAPABILITIES, sizeof(uint8_t), &ioCap);
GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bonding);
現況:
[phone]:iphone可以連線,但無法get data(一直處於等待data中)。
[2640]:
GlucoseSensor_taskFxn()
{
………
for (;;)
{
ICall_Errno errno = ICall_wait(ICALL_TIMEOUT_FOREVER);
// 無法往下跑,因而無法get data
}
while (!Queue_empty(appMsgQueue))
{
//get data
GlucoseSensor_processAppMsg(pMsg);
}
}
測試:
懷疑是否在GAPBOND_PAIRING_MODE_NO_PAIRING 下無法get data,做以下測試…
1、ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY
2、在gapbondmgr.c的GAPBondMgr_ProcessGAPMsg(),case GAP_PAIRING_REQ_EVENT中的
else if ( gapBond_PairingMode == GAPBOND_PAIRING_MODE_NO_PAIRING )裡加上:
// No Pairing - Send error
#if 1
linkDBItem_t *pLinkItem = linkDB_Find( pPkt->connectionHandle );
// Send pairing response
gapBondMgrAuthenticate( pPkt->connectionHandle, pLinkItem->addrType, &(pPkt->pairReq) );
#else
VOID GAP_TerminateAuth( pPkt->connectionHandle, SMP_PAIRING_FAILED_NOT_SUPPORTED );
#endif
測試結果:
在GAPBOND_PAIRING_MODE_NO_PAIRING 下是能get data的(但因上面測試修改,故需輸入passcode,但沒bond)
問題:
回歸到測試修改之前,當else if (gapBond_PairingMode == GAPBOND_PAIRING_MODE_NO_PAIRING)成立,
就應該 GAP_TerminateAuth()終止認證,並且繼續往下跑get data,為何看起來像是等認證般的卡住呢??
是否有哪裡我沒設定到的嗎??