aboutsummaryrefslogtreecommitdiffstats
path: root/src/uds
diff options
context:
space:
mode:
authorChristopher Peplin <chris.peplin@rhubarbtech.com>2014-01-20 16:19:01 -0500
committerChristopher Peplin <chris.peplin@rhubarbtech.com>2014-01-20 16:19:01 -0500
commitfed7c4cae3d8dd1a53d0b394f6abcfa9f8c30a64 (patch)
treee95b310897537645d0cc187315dda1b997bf244f /src/uds
parent46fb0eb96e8efd285c2a0cccf699862ed21717ed (diff)
Add a function to parse the entire payload as a float.
Diffstat (limited to 'src/uds')
-rw-r--r--src/uds/uds.c7
-rw-r--r--src/uds/uds.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/src/uds/uds.c b/src/uds/uds.c
index 443b05a0..b3f2cdad 100644
--- a/src/uds/uds.c
+++ b/src/uds/uds.c
@@ -1,5 +1,6 @@
#include <uds/uds.h>
#include <bitfield/bitfield.h>
+#include <canutil/read.h>
#include <string.h>
#include <limits.h>
#include <stddef.h>
@@ -241,3 +242,9 @@ DiagnosticResponse diagnostic_receive_can_frame(DiagnosticShims* shims,
}
return response;
}
+
+float diagnostic_payload_to_float(const DiagnosticResponse* response) {
+ return bitfield_parse_float(response->payload,
+ response->payload_length, 0,
+ response->payload_length * CHAR_BIT, 1.0, 0);
+}
diff --git a/src/uds/uds.h b/src/uds/uds.h
index 091d3c9f..78f70e15 100644
--- a/src/uds/uds.h
+++ b/src/uds/uds.h
@@ -83,6 +83,8 @@ DiagnosticResponse diagnostic_receive_can_frame(DiagnosticShims* shims,
const uint16_t arbitration_id, const uint8_t data[],
const uint8_t size);
+float diagnostic_payload_to_float(const DiagnosticResponse* response);
+
/* Public: Render a DiagnosticResponse as a string into the given buffer.
*
* TODO implement this