can: Add big endian CAN frame layout handle
[apps/agl-service-can-low-level.git] / low-can-binding / can / can-decoder.cpp
index 5662669..a6b6c14 100644 (file)
@@ -50,13 +50,13 @@ float decoder_t::parse_signal_bitfield(signal_t& signal, std::shared_ptr<message
                data_signal.push_back(data[i]);
 
 //     if(bit_size > 255)
-//             AFB_ERROR("Error signal %s to long bit size",signal.get_name().c_str());
+//             AFB_ERROR("Error signal %s to long bit size", signal.get_name().c_str());
 
 //     if(new_start_bit > 255)
 //             AFB_ERROR("Too long signal offset %d", new_start_bit);
 
        if(data_signal.size() > 65535)
-               AFB_ERROR("Too long data signal %s",signal.get_name().c_str());
+               AFB_ERROR("Too long data signal %s", signal.get_name().c_str());
 
        return bitfield_parse_float(data_signal.data(), (uint16_t) data_signal.size(),
                        new_start_bit, bit_size, signal.get_factor(),
@@ -294,7 +294,10 @@ openxc_DynamicField decoder_t::decode_state(signal_t& signal, std::shared_ptr<me
 ///
 openxc_DynamicField decoder_t::translate_signal(signal_t& signal, std::shared_ptr<message_t> message, bool* send)
 {
-
+       if(!signal.get_message()->frame_layout_is_little())
+       {
+               signal.set_bit_position(converter_t::bit_position_swap(signal.get_bit_position(),signal.get_bit_size()));
+       }       
        // Must call the decoders every time, regardless of if we are going to
        // decide to send the signal or not.
        openxc_DynamicField decoded_value = decoder_t::decode_signal(signal,