Correctly reconstituting entire CAN frame
authorRomain Forlot <romain.forlot@iot.bzh>
Thu, 30 Nov 2017 08:43:46 +0000 (09:43 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 30 Nov 2017 08:43:46 +0000 (09:43 +0100)
Change-Id: I39d226c6f6268ec880739e6b9230eb42ce475971
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
low-can-binding/can/can-encoder.cpp

index 5cb1f24..e0015da 100644 (file)
@@ -42,11 +42,12 @@ const can_frame encoder_t::build_frame(const std::shared_ptr<can_signal_t>& sign
 
        for(const auto& sig: signal->get_message()->get_can_signals())
        {
-               bitfield_encode_float((float)value,
-                                                       signal->get_bit_position(),
-                                                       signal->get_bit_size(),
-                                                       signal->get_factor(),
-                                                       signal->get_offset(),
+               float last_value = sig->get_last_value();
+               bitfield_encode_float(last_value,
+                                                       sig->get_bit_position(),
+                                                       sig->get_bit_size(),
+                                                       sig->get_factor(),
+                                                       sig->get_offset(),
                                                        cf.data,
                                                        CAN_MAX_DLEN);
        }