gattlib: Introduced gattlib_get_rssi()

Fix: #75
pull/114/head
Olivier Martin 2019-07-09 12:16:48 +02:00 committed by Olivier Martin
parent 531477b941
commit eca8415fd6
5 changed files with 37 additions and 0 deletions

View File

@ -548,3 +548,7 @@ int get_handle_from_uuid(gatt_connection_t* connection, const uuid_t* uuid, uint
}
return -1;
}
int gattlib_get_rssi(gatt_connection_t *connection, int16_t *rssi) {
return GATTLIB_NOT_SUPPORTED;
}

View File

@ -1544,3 +1544,15 @@ int gattlib_notification_stop(gatt_connection_t* connection, const uuid_t* uuid)
return GATTLIB_SUCCESS;
}
}
int gattlib_get_rssi(gatt_connection_t *connection, int16_t *rssi) {
gattlib_context_t* conn_context = connection->context;
if (rssi == NULL) {
return GATTLIB_INVALID_PARAMETER;
}
*rssi = org_bluez_device1_get_rssi(conn_context->device);
return GATTLIB_SUCCESS;
}

View File

@ -88,3 +88,7 @@ gattlib_register_notification.argtypes = [c_void_p, py_object, py_object]
# void gattlib_register_on_disconnect_python(gatt_connection_t *connection, PyObject *handler, PyObject *user_data)
gattlib_register_on_disconnect = gattlib.gattlib_register_on_disconnect_python
gattlib_register_on_disconnect.argtypes = [c_void_p, py_object, py_object]
# int gattlib_get_rssi(gatt_connection_t *connection, int16_t *rssi)
gattlib_get_rssi = gattlib.gattlib_get_rssi
gattlib_get_rssi.argtypes = [c_void_p, POINTER(c_int16)]

View File

@ -53,6 +53,13 @@ class Device:
if self._connection == 0:
raise DeviceError()
@property
def rssi(self):
_rssi = c_int16(0)
ret = gattlib_get_rssi(self._connection, byref(_rssi))
handle_return(ret)
return _rssi
@staticmethod
def on_disconnection(user_data):
this = user_data

View File

@ -268,6 +268,16 @@ int gattlib_notification_stop(gatt_connection_t* connection, const uuid_t* uuid)
void gattlib_register_notification(gatt_connection_t* connection, gattlib_event_handler_t notification_handler, void* user_data);
void gattlib_register_indication(gatt_connection_t* connection, gattlib_event_handler_t indication_handler, void* user_data);
/**
* @brief Function to retrieve RSSI from a GATT connection
*
* @param connection Active GATT connection
* @param rssi is the Received Signal Strength Indicator of the remote device
*
* @return GATTLIB_SUCCESS on success or GATTLIB_* error code
*/
int gattlib_get_rssi(gatt_connection_t *connection, int16_t *rssi);
int gattlib_uuid_to_string(const uuid_t *uuid, char *str, size_t n);
int gattlib_string_to_uuid(const char *str, size_t n, uuid_t *uuid);
int gattlib_uuid_cmp(const uuid_t *uuid1, const uuid_t *uuid2);