Page 1 of 2
【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 13日 15:03
by 18249904570
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。
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 13日 16:07
by 逻辑的院子
请问您是要在广播阶段获取信号强度还是连接阶段获取信号强度?
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 13日 16:20
by 逻辑的院子
如果是获取连接阶段的信号强度,使用sd_ble_gap_rssi_get接口之前要调用sd_ble_gap_rssi_start接口,详见官方API说明:
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 13日 16:30
by 18249904570
逻辑的院子 2024年 May 13日 16:07
请问您是要在广播阶段获取信号强度还是连接阶段获取信号强度?
我是想要在手机和设备连接之后获取信号强度。此外,我更换了获取信号强度的接口为tal_ble_rssi_get,然后也能正常收到SDK回调事件了,但是,如果能成功获取信号强度,rssi的值会保存在p_event->ble_event.link_rssi.rssi里,结果我还是没有获取到。我还有一个疑问就是:我看定义rssi是一个char型的数据,rssi需要做什么转换吗?比如rssi的值和信号强度之间的转换。
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 13日 16:40
by 逻辑的院子
“TuyaOS版本:3.9.0”并没有完全实现tal_ble_rssi_get,请直接使用原厂接口sd_ble_gap_rssi_get,使用之前要调用sd_ble_gap_rssi_start接口,详见官方API说明:
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 13日 18:37
by 18249904570
逻辑的院子 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是负的,请问这是为什么呢?该以哪个为准呢?
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 13日 19:30
by 逻辑的院子
你可以把同一次的两个值打印出来看看,实际上值是一样的,只是有符号和无符号而已
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 14日 09:26
by 18249904570
逻辑的院子 2024年 May 13日 19:30
你可以把同一次的两个值打印出来看看,实际上值是一样的,只是有符号和无符号而已
如下图,两个值是不一样的,正负值相差很大。
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 14日 09:33
by 逻辑的院子
您仔细考虑一下负值在C语言中的定义。
举个例子比较好理解:
-1 = 0xFF = 255
-2 = 0xFE = 254
……
Re: 【求助】【TuyaOS】信号强度问题
Posted: 2024年 May 14日 10:04
by 18249904570
逻辑的院子 2024年 May 14日 09:33
您仔细考虑一下负值在C语言中的定义。
举个例子比较好理解:
-1 = 0xFF = 255
-2 = 0xFE = 254
……
好的,刚刚没反应过来。还有个问题就是,RSSI值和信号强度等级之间的转换呢?比如:RSSI=215时,它对应的信号强度等级如何转换呢?