I would appreciate advice on how to query an Edison Bluetooth HCI controller to return absolute Bluetooth RSSI levels, rather than ones measured as a deviation from the Golden Receive Power Range. I am writing an application in c++ using the Eclipse IDE and default libraries from the Intel website, which I understand includes the BlueZ protocol stack.
By way of background, the Bluetooth specification provides two formats for reporting RSSI in response to an HCI_Read_RSSI command. An LE controller returns absolute power level in db. A BR/EDR controller returns a value of 0db if the received power level is within the Golden Receive Power Range; otherwise, it returns a value that is the amount in db that the measured power is outside the Golden Receive Power Range. (See, e.g., Bluetooth Specification Version 4.2 [Vol 2, Part E], pp806-807, attached.)
I would like to access the absolute power measurement but have yet to find a way. I have accessed RSSI in what appears to be the BR/EDR format using a function in the hci.h library (part of Intel's default libraries that download with the Eclipse IDE) called "hci_read_rssi". (See hci_read_rssi.tiff, attached, which is from the source file hci.c). The hci.h library offers what appears to be a number of LE-specific commands, but not an LE command for reading RSSI. For example, the hci.h library includes two commands for creating connections: hci_create_connection and hci_le_create_conn. Presumably one follows a BR/EDR protocol, while the other follows an LE protocol. I did not find anything like an "hci_le_read_rssi" function.
I suspect it is possible to get absolute power, either as specified for an LE controller or perhaps through an "undocumented feature." The le.c library (also part of the default Eclipse library) hints that there may be a different command code to query for the LE format. Intuition tells me there is probably a convenient hook that I have not found, and I thought it worth asking the experts.
Any enlightenment would be appreciated.
P.s., as a small side question, I would be grateful if someone could confirm some terminology: once the hci_create_connection command completes successfully to a remote device, is it correct to say that remote device is now in the initiating device's "piconet"?