Thread (23 messages) 23 messages, 4 authors, 2012-09-03

Re: [RFC 03/15] sdp: Use helper functions instead of bt_get_unaligned macro

flat view

From: Johan Hedberg <hidden>
Date: 2012-09-03 09:57:39

Hi Szymon,

On Mon, Sep 03, 2012, Szymon Janc wrote:
quoted
quoted
This fix number of compilation errors on ARM similar to one below.

lib/sdp.c: In function 'sdp_uuid_extract':
lib/sdp.c:1019:27: error: cast increases required alignment
	of target type [-Werror=cast-align]
lib/sdp.c:1019:27: error: cast increases required alignment
	of target type [-Werror=cast-align]
lib/sdp.c:1026:27: error: cast increases required alignment
	of target type [-Werror=cast-align]
lib/sdp.c:1026:27: error: cast increases required alignment
	of target type [-Werror=cast-align]

Change-Id: I587fb99328d7e5b9053af81597bd48b3a4e610ad
---
 lib/sdp.c |   56 ++++++++++++++++++++++++++++----------------------------
 1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/lib/sdp.c b/lib/sdp.c
index 36b4d08..d40500f 100644
--- a/lib/sdp.c
+++ b/lib/sdp.c
@@ -376,27 +376,27 @@ sdp_data_t *sdp_data_alloc_with_length(uint8_t dtd, const void *value,
 		d->unitSize += sizeof(int8_t);
 		break;
 	case SDP_UINT16:
-		d->val.uint16 = bt_get_unaligned((uint16_t *) value);
+		d->val.uint16 = bt_get_16(value);
 		d->unitSize += sizeof(uint16_t);
 		break;
I do not like this. Either we use be16 here and store it in the native
endian converted from the protocol endian or we leave it as it is.

I want clear get_le16 and get_be16 and not another get_16. That just
makes the code hard to read.
This data is already in protocol order, so bt_get_le/be can't be used here.
If you don't like those non-converting helpers functions other option is to
use memcpy.
I think the main point is that only PDU buffers used for writing/reading
to/from the connection should contain protocol data order, and anything
else (internal data structures and variables) should be in the host
order. However, since this is a library interface (one which hopefully
will be removed/replaced in the future though) such fixes might not
always be possible, making e.g. your memcpy proposal the best we can do.

Johan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help