请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640 当我使用 GAPRole_SetParameter (GAPROLE_RSSI_READ_RATE、sizeof (uint16_t)、&RSSI)时;
μ 的gapRole 的HCI StackMsg ()μ GAP_EVENT_EVENT 未收到通知
静态空 SimpleBLEPeripheral_taskFxn (UARg a0、UARg A1) { … uint16_t rssiReadRate = 3000; GAPRole_SetParameter (GAPROLE_RSSI_READ_RATE、 sizeof (uint16_t)、&rssiReadRate); … bStatus_t GAPRole_SetParameter (uint16_t param、uint8_t len、void * pValue) { …………μ A 案例 GAPROLE_RSSI_READ_RATE: 如果(len =sizeof (uint16_t)) { gapRole_RSSIReadRate =*((uint16_t*) pValue); if ((gapRole_RSSIReadRate)&&(gapRole_state = GAPROLE_Connected)) { Util_restartClock (&rssiReadClock、gapRole_RSSIReadRate); } } 其他 { RET = bleInvalidRange; } 中断; ………… } 静态空 gapRole_init (void) { GAP_RegisterForMsgs(self Entity); Util_constructClock (&rssiReadClock、gapRole_clockHandler、0、0、false、 RSSI_READ_EVT); } 静态空 gapRole_taskFxn (Uarg a0、Uarg A1) { ………μ A IF (事件和 RSSI_READ_EVT) { 事件&=~RSSI_READ_EVT; //仅在连接时获得 RSSI if ((gapRole_state =GAPROLE_Connected)||(gapRole_state =GAPROLE_Connected_ADV)) { //要求 RSSI hciStatus_t status =空; 状态= HCI_ReadRssiCmd (gapRole_ConnectionHandle);<==== 返回成功 //设置下一个事件 if (gapRole_RSSIReadRate &&!status) { Util_restartClock (&rssiReadClock、gapRole_RSSIReadRate); } } } 静态空 gapRole_processStackMsg (iCall_HDR *pMsg) { switch (pMsg->EVENT) { 案例 HCI_GAP_EVENT_EVENT:<========== 永不来 if (pMsg->status == HCI_COMMAND_COMPLEE_EVENT_CODE) { hciEvt_CmdComplete_t* pPktt =(hciEvt_CmdComplete_t*) pMsg; if (pkt->cmdlPCode =HCI_READ_RSSI) { INT8_t RSSI =(INT8_t) pPKT->pReturnParam[3]; if ((((gapRole_state =GAPROLE_Connected)||(gapRole_state =GAPROLE_Connected_ADV)))&&(RSSI!=RSSI_NOT_Available)) { //向应用报告 RSSI if (pGapRoles_AppPG && pGapRoles_AppCgs->pfnRssiRead) { pGapRoles_Appcgs->pfnRssiRead (RSSI); } } } 中断; } } typedef void (* gapRolesRssiRead_t)(int8_t newRSSI); typedef 结构 { gapRolesStateNotify_t pfnStateChange; gapRolesRssiRad_t pfnRssiRead; }gapRolesCBs_t;