Quantcast
Channel: 蓝牙论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 7485

cc2640取消配對

$
0
0

您好 

我有個應用在cc2640上的glucoseiphone連接,phone appStore下載的兩款,

希望手機在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,做以下測試

1ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY

2、在gapbondmgr.cGAPBondMgr_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,為何看起來像是等認證般的卡住呢??
是否有哪裡我沒設定到的嗎??


Viewing all articles
Browse latest Browse all 7485

Trending Articles