工具与软件:
Helllo,
在连接模式下、我可以使用 API HCI_ReadRssiCmd 读取 RSSI。
现在、当我收到扫描请求帧时、我想在广播中获取 RSSI。
如何做到这一点?
Thnaks。
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.
工具与软件:
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 的代码:
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。