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.

[参考译文] CC2340R5:获取扫描请求帧 RSSI

Guru**** 2589265 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1390915/cc2340r5-get-scan-request-frame-rssi

器件型号:CC2340R5

工具与软件:

Helllo,

在连接模式下、我可以使用 API HCI_ReadRssiCmd 读取 RSSI。

现在、当我收到扫描请求帧时、我想在广播中获取 RSSI。

如何做到这一点?

Thnaks。

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

    您好 Thierry、

    感谢您的咨询。 如果您需要在接收扫描请求时从外设读取 RSSI、我建议看看这个 e2e 线程: https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1288568/launchxl-cc26x2r1-launchxl-cc26x2r1/4889751#4889751

    如果有帮助、请告诉我。

    David。

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

    尊敬的 David:

    我配置了事件广播、并 在此函数中接收了事件 BLEAPPUTIL_SCAN_REQ_RECEIVED。

    void Connection_GAPAdvEventHandler (UINT32事件、BLEAppUtil_msgHdr_t * pMsgData)

    将易失性 uint8更改为;

    开关(事件)

    默认值:
    休息;

    案例 BLEAPPUTIL_SCAN_REQ_RECEIVED:
    TOTO = 1;
    休息;
    }
    }

    但我不知道 RSSI 值在哪里可用、或者我如何获取它。

    感谢您的帮助。

    Thierry

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

    您好 Thierry、

    接收到 GAP_EVT_SCAN_REQ_RECEIVED 时、可以使用 GapAdv_scanReqReceived_t 结构检索广播器侧的 RSSI 值。 请参阅以下 API 参考。您可以查看 本培训材料的"广告任务3" 来指导您完成此过程。 pBuf 应转换到 GapAdv_scanReqReceived_t 收到扫描请求时发送。

    希望这对您有所帮助。

    David。

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

    尊敬的 David:

    我读取结构、但是 RSSI 域一直为0x00。

    其它要激活的内容?

    Thierry

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

    您好 Thierry、

    您能告诉我、您是如何解读价值的? 代码片段可能会有所帮助

    BR、

    David。

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

    David、您好!

    下面是获取 RSSI 的代码:

    INT8  RSB_ADV_RSSI;

    void 4.2000 Peripheral_Adv 处理程序(uint32事件、BLEAppUtil_msgHdr_t *pMsgData)

    GapAdv_scanReqReceived_t* LPTs_scanReqReceived;

    开关(事件)

    默认值:
    休息;

    案例 BLEAPPUTIL_ADV_START_AFTER_ENABLE:
    休息;

    案例 BLEAPPUTIL_ADV_END_AFTER_DISABLE:
    休息;

    案例 BLEAPPUTIL_SCAN_REQ_RECEIVED:
    LPTs_scanReqReceived =(GapAdv_scanReqReceived_t*) pMsgData;
    RSB_Adv_RSSI = LPTs_scanReqReceived->RSSI;
    休息;
    }
    }

    感谢您的支持。

    Thierry

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

    您好 Thierry、

    尽管 GapAdv_scanReqReceived_t 是请求响应 RSSI 所在的结构、但我们需要 Util_Adv 首先通过 BLE457_t 数据结构、然后进入 GapAdv_data_t (pBuf)、然后进入 GapAdv_scanReqReceived_t (pScanReqRcv)以最终检索 RSSI。

    请尝试以下代码:

    case BLEAPPUTIL_SCAN_REQ_RECEIVED:
    {
            BLEAppUtil_AdvEventData_t* lpts_scanReqReceived = (BLEAppUtil_AdvEventData_t*)pMsgData;
            rsb_adv_rssi = lpts_scanReqReceived->pBuf->pScanReqRcv.rssi;
    
            MenuModule_printf(APP_MENU_ADV_EVENT, 0, "RSSI:" MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET, rsb_adv_rssi);
            GPIO_toggle(CONFIG_GPIO_LED_GREEN);
            break;
    }

    LED 只是指示已收到 BLEAPPUTIL_SCAN_REQ_RECEIVED 并进行确认(您可以将其删除)。 您可能需要注释掉其他 MenuModule_printf()函数(来自另一种情况 BLEAPPUTIL_ADV...) 为了便于查看这个正在串行终端打印的 RSSI 值(一旦您确认了这一功能、您也可以将其移除)

    希望这对您有所帮助!

    David。

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

    David、您好!

    有了 正确的结构,它可以工作!

    非常感谢您的高效支持。

    Thierry