From 0ff6413b6dc42849f87ce8caa17a91f44ede2f93 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Wed, 4 Dec 2019 17:26:58 +0100 Subject: decoder: rework how to swap frame layout. This also change the bit_position to retrieve the bit word starting from the left or the right of the frame depending on the endianness of the frame layout. Change-Id: I28658e9d46bd35d8ecabeece317331832229384a Signed-off-by: Romain Forlot --- low-can-binding/can/message/message.cpp | 11 +++++++++++ low-can-binding/can/message/message.hpp | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'low-can-binding/can/message') diff --git a/low-can-binding/can/message/message.cpp b/low-can-binding/can/message/message.cpp index 22887c9a..56e9379f 100644 --- a/low-can-binding/can/message/message.cpp +++ b/low-can-binding/can/message/message.cpp @@ -177,3 +177,14 @@ void message_t::set_length(uint32_t length) { length_ = length; } + +void message_t::frame_swap() +{ + int i; + uint8_t *temp = (uint8_t*)alloca(length_); + + for(i = 0; i < length_; i++) + temp[i] = data_[length_ - i - 1]; + + memcpy(data_.data(), temp, length_); +} diff --git a/low-can-binding/can/message/message.hpp b/low-can-binding/can/message/message.hpp index 9a074e31..e5e6769b 100644 --- a/low-can-binding/can/message/message.hpp +++ b/low-can-binding/can/message/message.hpp @@ -44,7 +44,7 @@ #define ISOTP_SEND 0x0020 #define ISOTP_RECEIVE 0x0040 #define CAN_PROTOCOL_WITH_FD_FRAME 0x0080 -#define FRAME_LAYOUT_IS_LE 0x0100 +#define FRAME_LAYOUT_IS_LE 0x0100 // LE stand for Little Endian /// @class message_t /// @@ -84,4 +84,5 @@ public: uint32_t get_maxdlen(); void set_maxdlen(uint32_t maxdlen); void set_length(uint32_t length); + void frame_swap(); }; -- cgit 1.2.3-korg