【求助】【TuyaOS】信号强度问题

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


18249904570
Posts: 36

TuyaOS版本:3.9.0
组件开发包:tuyaos-subdev-bt_3.9.0_nrf52832_ble_ble-common_1.0.3
问题:请问如何获取蓝牙信号强度RSSI?我直接使用这个接口:sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi, uint8_t *p_ch_index)来获取信号强度,正常来说调用这个接口之后,返回的信号强度值应该会保存在参数p_rssi里吧?但我获取到的p_rssi值一直是0。

User avatar
逻辑的院子
Posts: 272
Contact:

Re: 【求助】【TuyaOS】信号强度问题

请问您是要在广播阶段获取信号强度还是连接阶段获取信号强度?

User avatar
逻辑的院子
Posts: 272
Contact:

Re: 【求助】【TuyaOS】信号强度问题

如果是获取连接阶段的信号强度,使用sd_ble_gap_rssi_get接口之前要调用sd_ble_gap_rssi_start接口,详见官方API说明:

Snipaste_2024-05-13_16-18-54.jpg
18249904570
Posts: 36

Re: 【求助】【TuyaOS】信号强度问题

逻辑的院子 2024年 May 13日 16:07

请问您是要在广播阶段获取信号强度还是连接阶段获取信号强度?

我是想要在手机和设备连接之后获取信号强度。此外,我更换了获取信号强度的接口为tal_ble_rssi_get,然后也能正常收到SDK回调事件了,但是,如果能成功获取信号强度,rssi的值会保存在p_event->ble_event.link_rssi.rssi里,结果我还是没有获取到。我还有一个疑问就是:我看定义rssi是一个char型的数据,rssi需要做什么转换吗?比如rssi的值和信号强度之间的转换。

User avatar
逻辑的院子
Posts: 272
Contact:

Re: 【求助】【TuyaOS】信号强度问题

“TuyaOS版本:3.9.0”并没有完全实现tal_ble_rssi_get,请直接使用原厂接口sd_ble_gap_rssi_get,使用之前要调用sd_ble_gap_rssi_start接口,详见官方API说明:

Snipaste_2024-05-13_16-18-54.jpg
18249904570
Posts: 36

Re: 【求助】【TuyaOS】信号强度问题

逻辑的院子 2024年 May 13日 16:40

“TuyaOS版本:3.9.0”并没有完全实现tal_ble_rssi_get,请直接使用原厂接口sd_ble_gap_rssi_get,使用之前要调用sd_ble_gap_rssi_start接口,详见官方API说明:

Snipaste_2024-05-13_16-18-54.jpg

可以获取到RSSI值了,但还是有个问题就是:我在TAL_BLE_EVT_CONN_RSSI事件回调函数里打印rssi的值是正的,但在自己的函数里调用sd_ble_gap_rssi_get函数,打印参数返回的rssi是负的,请问这是为什么呢?该以哪个为准呢?
Image
Image

User avatar
逻辑的院子
Posts: 272
Contact:

Re: 【求助】【TuyaOS】信号强度问题

你可以把同一次的两个值打印出来看看,实际上值是一样的,只是有符号和无符号而已

18249904570
Posts: 36

Re: 【求助】【TuyaOS】信号强度问题

逻辑的院子 2024年 May 13日 19:30

你可以把同一次的两个值打印出来看看,实际上值是一样的,只是有符号和无符号而已

如下图,两个值是不一样的,正负值相差很大。
Image

User avatar
逻辑的院子
Posts: 272
Contact:

Re: 【求助】【TuyaOS】信号强度问题

您仔细考虑一下负值在C语言中的定义。
举个例子比较好理解:
-1 = 0xFF = 255
-2 = 0xFE = 254
……

18249904570
Posts: 36

Re: 【求助】【TuyaOS】信号强度问题

逻辑的院子 2024年 May 14日 09:33

您仔细考虑一下负值在C语言中的定义。
举个例子比较好理解:
-1 = 0xFF = 255
-2 = 0xFE = 254
……

好的,刚刚没反应过来。还有个问题就是,RSSI值和信号强度等级之间的转换呢?比如:RSSI=215时,它对应的信号强度等级如何转换呢?

Post Reply