This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640:在 cc2640 SimpleBLEPeripheral 中获取 RSSI 值

Guru**** 2563960 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/588185/cc2640-get-rssi-value-in-cc2640-simplebleperipheral

器件型号: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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我建议您按照 simple_central 项目来读取 RSSI。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我试着去做