converter: decoder: use appropriate int types
authorRomain Forlot <romain.forlot@iot.bzh>
Wed, 6 Nov 2019 08:46:31 +0000 (09:46 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Wed, 6 Nov 2019 08:46:31 +0000 (09:46 +0100)
Change-Id: I7e977647b23ecd5be1f58486af857e3b7132b48f
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
low-can-binding/can/can-decoder.cpp
low-can-binding/can/can-encoder.cpp
low-can-binding/utils/converter.cpp
low-can-binding/utils/converter.hpp

index c19614c..5662669 100644 (file)
@@ -36,55 +36,30 @@ float decoder_t::parse_signal_bitfield(signal_t& signal, std::shared_ptr<message
 {
        const std::vector<uint8_t> data = message->get_data_vector();
        std::vector<uint8_t> data_signal;
-       uint32_t bit_size = signal.get_bit_size();
+       uint8_t bit_size = (uint8_t) signal.get_bit_size();
        uint32_t bit_position = signal.get_bit_position();
 
        int new_start_byte = 0;
        int new_end_byte = 0;
-       int new_start_bit = 0;
-       int new_end_bit = 0;
+       uint8_t new_start_bit = 0;
+       uint8_t new_end_bit = 0;
 
        converter_t::signal_to_bits_bytes(bit_position, bit_size, new_start_byte, new_end_byte, new_start_bit, new_end_bit);
 
        for(int i=new_start_byte;i<=new_end_byte;i++)
-       {
                data_signal.push_back(data[i]);
-       }
-
-       uint8_t new_bit_size = 0;
-
-       if(bit_size > 255)
-       {
-               AFB_ERROR("Error signal %s to long bit size",signal.get_name().c_str());
-       }
-       else
-       {
-               new_bit_size = (uint8_t) bit_size;
-       }
 
-       uint8_t bit_offset = 0;
-       if(new_start_bit > 255)
-       {
-               AFB_ERROR("Too long signal offset %d", new_start_bit);
-       }
-       else
-       {
-               bit_offset = (uint8_t) new_start_bit;
-       }
+//     if(bit_size > 255)
+//             AFB_ERROR("Error signal %s to long bit size",signal.get_name().c_str());
 
-       uint16_t length = 0;
+//     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());
-       }
-       else
-       {
-               length = (uint16_t) data_signal.size();
-       }
 
-       return bitfield_parse_float(data_signal.data(), length,
-                       bit_offset, new_bit_size, signal.get_factor(),
+       return bitfield_parse_float(data_signal.data(), (uint16_t) data_signal.size(),
+                       new_start_bit, bit_size, signal.get_factor(),
                        signal.get_offset());
 }
 
@@ -114,8 +89,8 @@ openxc_DynamicField decoder_t::decode_bytes(signal_t& signal, std::shared_ptr<me
 
        int new_start_byte = 0;
        int new_end_byte = 0;
-       int new_start_bit = 0;
-       int new_end_bit = 0;
+       uint8_t new_start_bit = 0;
+       uint8_t new_end_bit = 0;
 
        converter_t::signal_to_bits_bytes(bit_position, bit_size, new_start_byte, new_end_byte, new_start_bit, new_end_bit);
 
index 37a7b24..94db19b 100644 (file)
@@ -37,10 +37,10 @@ void encoder_t::encode_data(std::shared_ptr<signal_t> sig, std::vector<uint8_t>
        uint32_t bit_position = sig->get_bit_position();
        int new_start_byte = 0;
        int new_end_byte = 0;
-       int new_start_bit_tmp = 0;
-       int new_end_bit = 0;
+       uint8_t new_start_bit = 0;
+       uint8_t new_end_bit = 0;
 
-       converter_t::signal_to_bits_bytes(bit_position, bit_size, new_start_byte, new_end_byte, new_start_bit_tmp, new_end_bit);
+       converter_t::signal_to_bits_bytes(bit_position, bit_size, new_start_byte, new_end_byte, new_start_bit, new_end_bit);
 
        int len_signal_bytes_tmp = new_end_byte - new_start_byte + 1;
 
@@ -53,17 +53,12 @@ void encoder_t::encode_data(std::shared_ptr<signal_t> sig, std::vector<uint8_t>
        {
                len_signal_bytes = (uint8_t) len_signal_bytes_tmp;
        }
-
-       uint8_t new_start_bit = 0;
-       if(new_start_bit_tmp > 255)
+/*
+       if(new_start_bit > 255)
        {
                AFB_ERROR("Error signal %s too long",sig->get_name().c_str());
        }
-       else
-       {
-               new_start_bit = (uint8_t) new_start_bit_tmp;
-       }
-
+*/
        uint8_t new_bit_size = 0;
        if(bit_size > 255)
        {
index d10888d..e3db7f3 100644 (file)
@@ -48,7 +48,7 @@ std::string converter_t::to_hex(const uint8_t data[], const size_t length)
  * @param new_start_bit The first bit of the signal in the frame
  * @param new_end_bit The last bit of the signal in the frame
  */
-void converter_t::signal_to_bits_bytes(uint32_t bit_position, uint32_t bit_size, int &new_start_byte, int &new_end_byte, int &new_start_bit, int &new_end_bit)
+void converter_t::signal_to_bits_bytes(uint32_t bit_position, uint32_t bit_size, int &new_start_byte, int &new_end_byte, uint8_t &new_start_bit, uint8_t &new_end_bit)
 {
        new_start_byte = bit_position >> 3;
        new_start_bit = bit_position % 8;
index f388fd0..d24096a 100644 (file)
@@ -23,5 +23,5 @@ class converter_t
 {
        public:
                static std::string to_hex(const uint8_t data[], const size_t length);
-               static void signal_to_bits_bytes(uint32_t bit_position, uint32_t bit_size, int &new_start_byte, int &new_end_byte, int &new_start_bit, int &new_end_bit);
+               static void signal_to_bits_bytes(uint32_t bit_position, uint32_t bit_size, int &new_start_byte, int &new_end_byte, uint8_t &new_start_bit, uint8_t &new_end_bit);
 };