Android 通过hci_read_RSSI()轮询RSSI的正确方法

Android 通过hci_read_RSSI()轮询RSSI的正确方法,android,bluetooth,rssi,Android,Bluetooth,Rssi,我正在尝试定期轮询两台设备(Android手机和芯片)之间蓝牙连接的RSSI值 我使用NDK访问要使用的BlueZ库 hci_read_rssi(int dd, uint16_t handle, int8_t *rssi, int to) 问题是我不知道如何使用它来传递正确的参数。 使用该函数的正确方法是什么?对您来说可能有所不同,但在Bluetopia堆栈中,在我的GAP\u LE\u事件\u回调函数中,当我收到连接完成(即GAP Connection)时,我会这样做 case e

我正在尝试定期轮询两台设备(Android手机和芯片)之间蓝牙连接的RSSI值

我使用NDK访问要使用的BlueZ库

hci_read_rssi(int dd, uint16_t handle, int8_t *rssi, int to)
问题是我不知道如何使用它来传递正确的参数。
使用该函数的正确方法是什么?

对您来说可能有所不同,但在Bluetopia堆栈中,在我的
GAP\u LE\u事件\u回调
函数中,当我收到连接完成(即GAP Connection)时,我会这样做

     case etLE_Connection_Complete:
        ... 
        Word_t Connection_Handle;
        if ( GAP_LE_Query_Connection_Handle(BluetoothStackID, x->Peer_Address,
              &Connection_Handle) == 0) {

            Word_t Connection_HandleResult;
            SByte_t RSSIResult;
            Byte_t StatusResult;

            if (HCI_Read_RSSI(BluetoothStackID,Connection_Handle, &StatusResult,
                &Connection_HandleResult, &RSSIResult) == 0) {
                Display(("RSSI: %x %x %d\r\n",StatusResult,
                       Connection_HandleResult,RSSIResult));

如果这不起作用,那么您需要手动创建一个ConnectionHandle,通过调用
HCI\u LE\u create\u connection

来创建一个新的连接,这对您来说可能有所不同,但在Bluetopia堆栈中,在我的
GAP\u LE\u事件回调
函数中,当我收到一个连接完成时(即GAP connection),我会这样做

     case etLE_Connection_Complete:
        ... 
        Word_t Connection_Handle;
        if ( GAP_LE_Query_Connection_Handle(BluetoothStackID, x->Peer_Address,
              &Connection_Handle) == 0) {

            Word_t Connection_HandleResult;
            SByte_t RSSIResult;
            Byte_t StatusResult;

            if (HCI_Read_RSSI(BluetoothStackID,Connection_Handle, &StatusResult,
                &Connection_HandleResult, &RSSIResult) == 0) {
                Display(("RSSI: %x %x %d\r\n",StatusResult,
                       Connection_HandleResult,RSSIResult));
如果这不起作用,那么您需要通过调用
HCI\u LE\u create\u connection