All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH BlueZ 1/3] att: Add prepare write support
@ 2012-07-27 20:29 Eder Ruiz Maria
  2012-07-27 20:29 ` [PATCH BlueZ 2/3] att: Add encode/decode execute " Eder Ruiz Maria
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Eder Ruiz Maria @ 2012-07-27 20:29 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Eder Ruiz Maria

Add functions for encoding/decoding Prepare Write Request and
Response PDUs.
---
 attrib/att.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 attrib/att.h |    5 +++++
 2 files changed, 60 insertions(+)

diff --git a/attrib/att.c b/attrib/att.c
index 0550ac1..acfb4e0 100644
--- a/attrib/att.c
+++ b/attrib/att.c
@@ -974,3 +974,58 @@ uint16_t dec_mtu_resp(const uint8_t *pdu, int len, uint16_t *mtu)
 
 	return min_len;
 }
+
+uint16_t enc_prep_write_req(uint16_t handle, uint16_t offset,
+			const uint8_t *value, int vlen, uint8_t *pdu, int len)
+{
+	const uint16_t min_len = sizeof(pdu[0]) + sizeof(handle) +
+								sizeof(offset);
+
+	if (pdu == NULL)
+		return 0;
+
+	if (len < min_len)
+		return 0;
+
+	if (vlen > len - min_len)
+		vlen = len - min_len;
+
+	pdu[0] = ATT_OP_PREP_WRITE_REQ;
+	att_put_u16(handle, &pdu[1]);
+	att_put_u16(offset, &pdu[3]);
+
+	if (vlen > 0) {
+		memcpy(&pdu[5], value, vlen);
+		return min_len + vlen;
+	}
+
+	return min_len;
+}
+
+uint16_t dec_prep_write_resp(const uint8_t *pdu, int len, uint16_t *handle,
+				uint16_t *offset, uint8_t *value, int *vlen)
+{
+	const uint16_t min_len = sizeof(pdu[0]) + sizeof(*handle) +
+								sizeof(*offset);
+
+	if (pdu == NULL)
+		return 0;
+
+	if (handle == NULL || offset == NULL || value == NULL || vlen == NULL)
+		return 0;
+
+	if (len < min_len)
+		return 0;
+
+	if (pdu[0] != ATT_OP_PREP_WRITE_REQ)
+		return 0;
+
+	*handle = att_get_u16(&pdu[1]);
+	*offset = att_get_u16(&pdu[3]);
+	*vlen = len - min_len;
+	if (*vlen > 0)
+		memcpy(value, pdu + min_len, *vlen);
+
+	return len;
+}
+
diff --git a/attrib/att.h b/attrib/att.h
index 1c1102a..ec03be9 100644
--- a/attrib/att.h
+++ b/attrib/att.h
@@ -256,3 +256,8 @@ uint16_t enc_mtu_req(uint16_t mtu, uint8_t *pdu, int len);
 uint16_t dec_mtu_req(const uint8_t *pdu, int len, uint16_t *mtu);
 uint16_t enc_mtu_resp(uint16_t mtu, uint8_t *pdu, int len);
 uint16_t dec_mtu_resp(const uint8_t *pdu, int len, uint16_t *mtu);
+
+uint16_t enc_prep_write_req(uint16_t handle, uint16_t offset,
+			const uint8_t *value, int vlen, uint8_t *pdu, int len);
+uint16_t dec_prep_write_resp(const uint8_t *pdu, int len, uint16_t *handle,
+				uint16_t *offset, uint8_t *value, int *vlen);
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2012-08-15  9:27 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-27 20:29 [PATCH BlueZ 1/3] att: Add prepare write support Eder Ruiz Maria
2012-07-27 20:29 ` [PATCH BlueZ 2/3] att: Add encode/decode execute " Eder Ruiz Maria
2012-07-27 20:29 ` [PATCH BlueZ 3/3] gatt: Add support to GATT Write Long Characteristic Eder Ruiz Maria
2012-07-29  1:47 ` [PATCH BlueZ 1/3] att: Add prepare write support Sergio Correia
2012-07-30 10:35   ` Anderson Lizardo
2012-07-30 10:55 ` Johan Hedberg
2012-07-30 17:34 ` [PATCH BlueZ v2 " Eder Ruiz Maria
2012-08-15  9:27   ` Johan Hedberg
2012-07-30 17:38 ` [PATCH BlueZ v2 2/3] att: Add encode/decode execute " Eder Ruiz Maria
2012-07-30 17:38 ` [PATCH BlueZ v2 3/3] gatt: Add support to GATT Write Long Characteristic Eder Ruiz Maria

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.