【发布时间】:2018-09-29 21:28:43
【问题描述】:
ESP-IDF 框架中的经典蓝牙 GAP API 有一个功能:
#include "esp_gap_bt_api.h"
esp_err_t esp_bt_gap_read_rssi_delta(esp_bd_addr_t remote_addr)
带有以下描述:
"连接后调用该函数按地址读取RSSI增量。ESP_BT_GAP_READ_RSSI_DELTA_EVT返回的RSSI值。
返回:ESP_OK:成功; ESP_FAIL: 其他
参数:remote_addr:-远程设备地址,对应某个连接句柄。"
好的,我在做什么(连接到 BT 设备后): 定义我认为的结构将包含我需要的结果:
struct read_rssi_delta_param
{
esp_bd_addr_t bda; /*remote bluetooth device address*/
esp_bt_status_t stat; /*read rssi status */
int8_t rssi_delta; /*rssi delta value in range -128 ~127*/
} read_rssi_delta; /*read rssi parameter struct */
并调用函数:
esp_err_t err_code = esp_bt_gap_read_rssi_delta((uint8_t*)esp_bt_dev_get_address());
它返回 err_code = ESP_OK (0, success) 但 read_rssi_delta 结构只包含全零。
我觉得我做错了,因为还应该涉及一件事:ESP_BT_GAP_READ_RSSI_DELTA_EVT(参见上面的描述)。它在枚举中定义:
enum esp_bt_gap_cb_event_t //BT GAP callback events.
..... skip some
ESP_BT_GAP_READ_RSSI_DELTA_EVT //read rssi event
..... etc.
在某些来源中它被称为“事件”,在其他来源中称为“回调函数”,但没有说明如何使用它!
所以,问题是:如何将所有这些东西放在一起以从设备获取 RSSI?
注意:蓝牙是经典的,不是 BLE!
【问题讨论】:
-
只是好奇你是放弃了还是找到了解决办法?
-
我放弃了(或者假装我不在乎:o)...