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.

[参考译文] LP-EM-CC2340R5:在 BLE 连接期间接收 RSSI

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1450762/lp-em-cc2340r5-receiving-rssi-during-a-ble-connection

器件型号:LP-EM-CC2340R5
主题中讨论的其他器件:CC2340R5

工具与软件:

下午好!
我使用 cc2340r5和 simplelink_lowpower_f3_sdk_8_10_01_02。
我的程序基于 basic_ble 并进行了一些逻辑修改。


我的问题是、 在 BLE 连接已初始化后、是否可以获取 RSSI?

我知道您可以从广播包获取 RSSI、或者在连接期间(如此处所示)

但我将尝试使用 HCI_ReadRssiCmd 来获取此值。  我可以确定我传递了正确的连接句柄、但因此、在处理 BLEAPPUTIL_HCI_COMMAND_COMPLET_EVENT_CODE 事件时、我得到的 pReturnParam 等于0。  在一篇 与另一个芯片相关的文章中、我们说 HCI_ReadRssiCmd 仅在建立 BT 连接后才能正常工作。

一般而言、可以获取已建立连接的 RSSI、还是仍然需要执行发送广播或重新连接的过程才能获得该值?


此外、我将提供具有函数调用和事件处理程序的代码、我可能漏掉了某些内容

HCI_ReadRssiCmd(conn_handle);


  void BleConnection::hciGAPEventHandlerImpl(uint32 event, BLEAppUtil_msgHdr_t *pMsgData) {
        switch (event) {
  
            case BLEAPPUTIL_HCI_COMMAND_COMPLETE_EVENT_CODE: {
                hciEvt_CmdComplete_t *pHciMsg = (hciEvt_CmdComplete_t *)pMsgData;
                switch (pHciMsg->cmdOpcode) {
                    case HCI_READ_RSSI: {
                        int8_t rssi = *pHciMsg->pReturnParam;
                        MenuController::getInstance()->printf(
                            MenuController::getInstance()->rowToUint8(
                                MenuController::MenuRows::APP_INFO_FIELD),
                            0, "rssi %u", rssi);
                    } break;
    
                    default:
                        break;
                }
            } break;
            
            default:
                break;
        }
    }