From: Christopher Peplin Date: Tue, 7 Jan 2014 04:48:50 +0000 (-0500) Subject: Grab PID from response without dereffing a type punned pointer. X-Git-Tag: 5.0.2~273^2~44 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=871b3cb04aaa24637a3b2bfae7082dfacf34f7d2;p=apps%2Fagl-service-can-low-level.git Grab PID from response without dereffing a type punned pointer. --- diff --git a/deps/isotp-c b/deps/isotp-c index 8922abb7..513d8c8d 160000 --- a/deps/isotp-c +++ b/deps/isotp-c @@ -1 +1 @@ -Subproject commit 8922abb7ff8c30e1fa5af078284eb6aebf0052e5 +Subproject commit 513d8c8d7089960618a1fa00a71442dc39294588 diff --git a/src/obd2/obd2.c b/src/obd2/obd2.c index c780fd8c..93cb8883 100644 --- a/src/obd2/obd2.c +++ b/src/obd2/obd2.c @@ -140,10 +140,8 @@ static bool handle_positive_response(DiagnosticRequestHandle* handle, response->mode = handle->request.mode; if(handle->request.pid_length > 0 && message->size > 1) { if(handle->request.pid_length == 2) { - response->pid = *(uint16_t*)&message->payload[PID_BYTE_INDEX]; - if(BYTE_ORDER == LITTLE_ENDIAN) { - response->pid = __builtin_bswap32(response->pid << 16); - } + response->pid = get_bitfield(message->payload, message->size, + PID_BYTE_INDEX * CHAR_BIT, sizeof(uint16_t) * CHAR_BIT); } else { response->pid = message->payload[PID_BYTE_INDEX]; }