[PATCH BlueZ v1 02/13] shared/gatt-helpers: Remove service, characteristic, descriptor structures.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch removes the service, characteristic, and descriptor structures
declared in gatt-helpers.h. These aren't really necessary, especially since
there will be another higher-level version of these for shared/gatt-client.
---
 src/shared/gatt-helpers.c | 51 +++++++++++++++++++++++++----------------------
 src/shared/gatt-helpers.h | 30 +++++++---------------------
 2 files changed, 34 insertions(+), 47 deletions(-)

diff --git a/src/shared/gatt-helpers.c b/src/shared/gatt-helpers.c
index 047f64c..ff49867 100644
--- a/src/shared/gatt-helpers.c
+++ b/src/shared/gatt-helpers.c
@@ -134,13 +134,14 @@ struct discovery_op {
 };
 
 bool bt_gatt_iter_next_service(struct bt_gatt_iter *iter,
-						struct bt_gatt_service *service)
+				uint16_t *start_handle, uint16_t *end_handle,
+				uint8_t uuid[16])
 {
 	struct discovery_op *op;
 	const void *pdu_ptr;
-	bt_uuid_t uuid;
+	bt_uuid_t tmp;
 
-	if (!iter->result || !service)
+	if (!iter || !iter->result || !start_handle || !end_handle || !uuid)
 		return false;
 
 	op = iter->result->op;
@@ -148,17 +149,16 @@ bool bt_gatt_iter_next_service(struct bt_gatt_iter *iter,
 
 	switch (iter->result->opcode) {
 	case BT_ATT_OP_READ_BY_GRP_TYPE_RSP:
-		service->start = get_le16(pdu_ptr);
-		service->end = get_le16(pdu_ptr + 2);
-		convert_uuid_le(pdu_ptr + 4, iter->result->data_len - 4,
-								service->uuid);
+		*start_handle = get_le16(pdu_ptr);
+		*end_handle = get_le16(pdu_ptr + 2);
+		convert_uuid_le(pdu_ptr + 4, iter->result->data_len - 4, uuid);
 		break;
 	case BT_ATT_OP_FIND_BY_TYPE_VAL_RSP:
-		service->start = get_le16(pdu_ptr);
-		service->end = get_le16(pdu_ptr + 2);
+		*start_handle = get_le16(pdu_ptr);
+		*end_handle = get_le16(pdu_ptr + 2);
 
-		bt_uuid_to_uuid128(&op->uuid, &uuid);
-		memcpy(service->uuid, uuid.value.u128.data, 16);
+		bt_uuid_to_uuid128(&op->uuid, &tmp);
+		memcpy(uuid, tmp.value.u128.data, 16);
 		break;
 	default:
 		return false;
@@ -175,12 +175,15 @@ bool bt_gatt_iter_next_service(struct bt_gatt_iter *iter,
 }
 
 bool bt_gatt_iter_next_characteristic(struct bt_gatt_iter *iter,
-					struct bt_gatt_characteristic *chrc)
+				uint16_t *start_handle, uint16_t *end_handle,
+				uint16_t *value_handle, uint8_t *properties,
+				uint8_t uuid[16])
 {
 	struct discovery_op *op;
 	const void *pdu_ptr;
 
-	if (!iter->result || !chrc)
+	if (!iter || !iter->result || !start_handle || !end_handle ||
+					!value_handle || !properties || !uuid)
 		return false;
 
 	if (iter->result->opcode != BT_ATT_OP_READ_BY_TYPE_RSP)
@@ -189,10 +192,10 @@ bool bt_gatt_iter_next_characteristic(struct bt_gatt_iter *iter,
 	op = iter->result->op;
 	pdu_ptr = iter->result->pdu + iter->pos;
 
-	chrc->start = get_le16(pdu_ptr);
-	chrc->properties = ((uint8_t *) pdu_ptr)[2];
-	chrc->value = get_le16(pdu_ptr + 3);
-	convert_uuid_le(pdu_ptr + 5, iter->result->data_len - 5, chrc->uuid);
+	*start_handle = get_le16(pdu_ptr);
+	*properties = ((uint8_t *) pdu_ptr)[2];
+	*value_handle = get_le16(pdu_ptr + 3);
+	convert_uuid_le(pdu_ptr + 5, iter->result->data_len - 5, uuid);
 
 	iter->pos += iter->result->data_len;
 	if (iter->pos == iter->result->pdu_len) {
@@ -201,21 +204,21 @@ bool bt_gatt_iter_next_characteristic(struct bt_gatt_iter *iter,
 	}
 
 	if (!iter->result) {
-		chrc->end = op->end_handle;
+		*end_handle = op->end_handle;
 		return true;
 	}
 
-	chrc->end = get_le16(iter->result->pdu + iter->pos) - 1;
+	*end_handle = get_le16(iter->result->pdu + iter->pos) - 1;
 
 	return true;
 }
 
-bool bt_gatt_iter_next_descriptor(struct bt_gatt_iter *iter,
-						struct bt_gatt_descriptor *desc)
+bool bt_gatt_iter_next_descriptor(struct bt_gatt_iter *iter, uint16_t *handle,
+							uint8_t uuid[16])
 {
 	const void *pdu_ptr;
 
-	if (!iter->result || !desc)
+	if (!iter || !iter->result || !handle || !uuid)
 		return false;
 
 	if (iter->result->opcode != BT_ATT_OP_FIND_INFO_RSP)
@@ -223,8 +226,8 @@ bool bt_gatt_iter_next_descriptor(struct bt_gatt_iter *iter,
 
 	pdu_ptr = iter->result->pdu + iter->pos;
 
-	desc->handle = get_le16(pdu_ptr);
-	convert_uuid_le(pdu_ptr + 2, iter->result->data_len - 2, desc->uuid);
+	*handle = get_le16(pdu_ptr);
+	convert_uuid_le(pdu_ptr + 2, iter->result->data_len - 2, uuid);
 
 	iter->pos += iter->result->data_len;
 	if (iter->pos == iter->result->pdu_len) {
diff --git a/src/shared/gatt-helpers.h b/src/shared/gatt-helpers.h
index 95dd8b7..cdf83ba 100644
--- a/src/shared/gatt-helpers.h
+++ b/src/shared/gatt-helpers.h
@@ -28,25 +28,6 @@
 #include <stdbool.h>
 #include <stdint.h>
 
-struct bt_gatt_service {
-	uint16_t start;
-	uint16_t end;
-	uint8_t uuid[16];
-};
-
-struct bt_gatt_characteristic {
-	uint16_t start;
-	uint16_t end;
-	uint16_t value;
-	uint8_t properties;
-	uint8_t uuid[16];
-};
-
-struct bt_gatt_descriptor {
-	uint16_t handle;
-	uint8_t uuid[16];
-};
-
 struct bt_gatt_result;
 
 struct bt_gatt_iter {
@@ -56,11 +37,14 @@ struct bt_gatt_iter {
 
 bool bt_gatt_iter_init(struct bt_gatt_iter *iter, struct bt_gatt_result *result);
 bool bt_gatt_iter_next_service(struct bt_gatt_iter *iter,
-					struct bt_gatt_service *service);
+				uint16_t *start_handle, uint16_t *end_handle,
+				uint8_t uuid[16]);
 bool bt_gatt_iter_next_characteristic(struct bt_gatt_iter *iter,
-				struct bt_gatt_characteristic *characteristic);
-bool bt_gatt_iter_next_descriptor(struct bt_gatt_iter *iter,
-					struct bt_gatt_descriptor *descriptor);
+				uint16_t *start_handle, uint16_t *end_handle,
+				uint16_t *value_handle, uint8_t *properties,
+				uint8_t uuid[16]);
+bool bt_gatt_iter_next_descriptor(struct bt_gatt_iter *iter, uint16_t *handle,
+							uint8_t uuid[16]);
 
 typedef void (*bt_gatt_destroy_func_t)(void *user_data);
 
-- 
2.1.0.rc2.206.gedb03e5

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux