gattlib.h: Changed prototype of 'gattlib_read_char_by_uuid'

pull/21/head
Olivier Martin 2017-03-15 18:01:58 +01:00
parent 80f9884ae0
commit beed53a6ba
5 changed files with 20 additions and 15 deletions

View File

@ -95,21 +95,20 @@ void uuid_to_bt_uuid(uuid_t* uuid, bt_uuid_t* bt_uuid) {
}
int gattlib_read_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid,
void* buffer, size_t buffer_len)
void* buffer, size_t* buffer_len)
{
gattlib_context_t* conn_context = connection->context;
struct gattlib_result_read_uuid_t* gattlib_result;
bt_uuid_t bt_uuid;
const int start = 0x0001;
const int end = 0xffff;
int len;
gattlib_result = malloc(sizeof(struct gattlib_result_read_uuid_t));
if (gattlib_result == NULL) {
return 0;
return 1;
}
gattlib_result->buffer = buffer;
gattlib_result->buffer_max_len = buffer_len;
gattlib_result->buffer_max_len = *buffer_len;
gattlib_result->buffer_len = 0;
gattlib_result->callback = NULL;
gattlib_result->completed = FALSE;
@ -124,10 +123,10 @@ int gattlib_read_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid,
g_main_context_iteration(g_gattlib_thread.loop_context, FALSE);
}
len = gattlib_result->buffer_len;
*buffer_len = gattlib_result->buffer_len;
free(gattlib_result);
return len;
return 0;
}
int gattlib_read_char_by_uuid_async(gatt_connection_t* connection, uuid_t* uuid,

View File

@ -775,7 +775,7 @@ int gattlib_discover_desc(gatt_connection_t* connection, gattlib_descriptor_t**
return -1;
}
int gattlib_read_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid, void* buffer, size_t buffer_len) {
int gattlib_read_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid, void* buffer, size_t* buffer_len) {
OrgBluezGattCharacteristic1 *characteristic = get_characteristic_from_uuid(uuid);
if (characteristic == NULL) {
return -1;
@ -793,12 +793,14 @@ int gattlib_read_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid, void*
gsize n_elements = 0;
gconstpointer const_buffer = g_variant_get_fixed_array(out_value, &n_elements, sizeof(guchar));
if (const_buffer) {
n_elements = MIN(n_elements, buffer_len);
n_elements = MIN(n_elements, *buffer_len);
memcpy(buffer, const_buffer, n_elements);
}
*buffer_len = n_elements;
g_object_unref(characteristic);
return n_elements;
return 0;
}
int gattlib_read_char_by_uuid_async(gatt_connection_t* connection, uuid_t* uuid, gatt_read_cb_t gatt_read_cb) {

View File

@ -249,12 +249,13 @@ static gboolean characteristics_read(gpointer user_data)
if (opt_uuid != NULL) {
uint8_t buffer[0x100];
uuid_t uuid;
int len, i;
size_t len = sizeof(buffer);
int i, ret;
bt_uuid_to_uuid(opt_uuid, &uuid);
len = gattlib_read_char_by_uuid(connection, &uuid, buffer, sizeof(buffer));
if (len == 0) {
ret = gattlib_read_char_by_uuid(connection, &uuid, buffer, &len);
if (ret) {
return FALSE;
} else {
g_print("value: ");

View File

@ -39,7 +39,8 @@ static void usage(char *argv[]) {
int main(int argc, char *argv[]) {
uint8_t buffer[100];
int i, len, ret;
int i, ret;
size_t len;
gatt_connection_t* connection;
if ((argc != 4) && (argc != 5)) {
@ -75,7 +76,9 @@ int main(int argc, char *argv[]) {
}
if (g_operation == READ) {
len = gattlib_read_char_by_uuid(connection, &g_uuid, buffer, sizeof(buffer));
len = sizeof(buffer);
ret = gattlib_read_char_by_uuid(connection, &g_uuid, buffer, &len);
assert(ret == 0);
printf("Read UUID completed: ");
for (i = 0; i < len; i++)

View File

@ -136,7 +136,7 @@ int gattlib_discover_char(gatt_connection_t* connection, gattlib_characteristic_
int gattlib_discover_desc_range(gatt_connection_t* connection, int start, int end, gattlib_descriptor_t** descriptors, int* descriptor_count);
int gattlib_discover_desc(gatt_connection_t* connection, gattlib_descriptor_t** descriptors, int* descriptor_count);
int gattlib_read_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid, void* buffer, size_t buffer_len);
int gattlib_read_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid, void* buffer, size_t* buffer_len);
int gattlib_read_char_by_uuid_async(gatt_connection_t* connection, uuid_t* uuid, gatt_read_cb_t gatt_read_cb);
int gattlib_write_char_by_uuid(gatt_connection_t* connection, uuid_t* uuid, void* buffer, size_t buffer_len);