CH579 CH573 CH582 BLE HID例子開啟密碼輸入(passkey)


// Default MITM mode (TRUE to require passcode or OOB when pairing)  設置開啟
#define DEFAULT_MITM_MODE                     TRUE

// Default bonding mode, TRUE to bond
#define DEFAULT_BONDING_MODE                  TRUE

// Default GAP bonding I/O capabilities  啟動鍵盤輸入密碼功能
#define DEFAULT_IO_CAPABILITIES               GAPBOND_IO_CAP_KEYBOARD_ONLY
  // Setup the GAP Bond Manager  作用代碼
  {
    uint32 passkey = DEFAULT_PASSCODE;
    uint8 pairMode = DEFAULT_PAIRING_MODE;
    uint8 mitm = DEFAULT_MITM_MODE;
    uint8 ioCap = DEFAULT_IO_CAPABILITIES;
    uint8 bonding = DEFAULT_BONDING_MODE;
    GAPBondMgr_SetParameter( GAPBOND_PERI_DEFAULT_PASSCODE, sizeof( uint32 ), &passkey );
    GAPBondMgr_SetParameter( GAPBOND_PERI_PAIRING_MODE, sizeof( uint8 ), &pairMode );
    GAPBondMgr_SetParameter( GAPBOND_PERI_MITM_PROTECTION, sizeof( uint8 ), &mitm );
    GAPBondMgr_SetParameter( GAPBOND_PERI_IO_CAPABILITIES, sizeof( uint8 ), &ioCap );
    GAPBondMgr_SetParameter( GAPBOND_PERI_BONDING_ENABLED, sizeof( uint8 ), &bonding );
  }
 
         
設備被連接后,進入該回調函數,啟動密碼輸入任務,等待輸入密碼
/*********************************************************************
 * @fn      hidDevPasscodeCB
 *
 * @brief   Passcode callback.
 *
 * @param   deviceAddr - address of device to pair with, and could be either public or random.
 * @param   connectionHandle - connection handle
 * @param   uiInputs - pairing User Interface Inputs - Ask user to input passcode
 * @param   uiOutputs - pairing User Interface Outputs - Display passcode
 *
 * @return  none
 */
static void hidDevPasscodeCB( uint8 *deviceAddr, uint16 connectionHandle,
                                        uint8 uiInputs, uint8 uiOutputs )
{
  uint32 passkey =0;
  if ( pHidDevCB && pHidDevCB->passcodeCB )
  {
    // execute HID app passcode callback
    (*pHidDevCB->passcodeCB)( deviceAddr, connectionHandle, uiInputs, uiOutputs );
  }
  else
  {
    GAPBondMgr_GetParameter( GAPBOND_PERI_DEFAULT_PASSCODE, &passkey );
    tmos_start_task(hidEmuTaskId,PASSKEY_EVT,400); //啟動輸入密碼的任務
//      GAPBondMgr_PasscodeRsp( connectionHandle, SUCCESS, passkey );
    }
    // Send passcode response

}
密碼是在串口中斷里面接收的(當然這個只是操作例子,不限制輸入方式)
if ( events & PASSKEY_EVT ) { uint32 passkey =0; uint8 i; if((Rcvlen==8)) { for(i=2;i<8;i++) //密碼是10進制數輸入,需要進制進制轉換 { passkey=10*passkey; passkey+=(RxBuff[i]-0x30); PRINT(" %d",RxBuff[i]); } PRINT(" %d",passkey); Rcvlen =0; GAPBondMgr_PasscodeRsp( hidEmuConnHandle, SUCCESS, passkey ); //輸入密碼 } else { tmos_start_task(hidEmuTaskId,PASSKEY_EVT,400);//如果沒有接收到密碼,重新開啟任務 } return ( events ^ PASSKEY_EVT ); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM