aboutsummaryrefslogtreecommitdiffstats
path: root/src/can
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-03-15 23:10:46 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-03-16 17:21:57 +0100
commit53cd923a034162273fea2f4fb045b28686f51df5 (patch)
tree43e9a7fbf27646d88b11d1f7281a6b2c2be255bd /src/can
parent865c6c6d6f4174c5874e4cd5136832c25a3b1198 (diff)
Make available decoding OBD2 messages method to be use as callback.
Change the method to static 'cause it will be call from outside of the class. Change-Id: I88dcd845559fac7892cd489cd6e8198c143ee2a8 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'src/can')
-rw-r--r--src/can/can-decoder.cpp19
-rw-r--r--src/can/can-decoder.hpp3
2 files changed, 22 insertions, 0 deletions
diff --git a/src/can/can-decoder.cpp b/src/can/can-decoder.cpp
index aef042c..fce43fc 100644
--- a/src/can/can-decoder.cpp
+++ b/src/can/can-decoder.cpp
@@ -215,3 +215,22 @@ openxc_DynamicField decoder_t::decodeSignal( can_signal_t& signal,
float value = parseSignalBitfield(signal, message);
return decodeSignal(signal, value, signals, send);
}
+
+
+/**
+* @brief Decode the payload of an OBD-II PID.
+*
+* This function matches the type signature for a DiagnosticResponseDecoder, so
+* it can be used as the decoder for a DiagnosticRequest. It returns the decoded
+* value of the PID, using the standard formulas (see
+* http://en.wikipedia.org/wiki/OBD-II_PIDs#Mode_01).
+*
+* @param[in] response - the received DiagnosticResponse (the data is in response.payload,
+* a byte array). This is most often used when the byte order is
+* signiticant, i.e. with many OBD-II PID formulas.
+* @param[in] parsed_payload - the entire payload of the response parsed as an int.
+*/
+float decoder_t::decode_obd2_response(const DiagnosticResponse* response, float parsedPayload)
+{
+ return diagnostic_decode_obd2_pid(response);
+} \ No newline at end of file
diff --git a/src/can/can-decoder.hpp b/src/can/can-decoder.hpp
index 326a2b7..ee601c6 100644
--- a/src/can/can-decoder.hpp
+++ b/src/can/can-decoder.hpp
@@ -41,4 +41,7 @@ public:
static openxc_DynamicField decodeSignal(can_signal_t& signal, float value,
const std::vector<can_signal_t>& signals, bool* send);
+
+ static float decode_obd2_response(const DiagnosticResponse* response, float parsedPayload);
+
}; \ No newline at end of file