File tree Expand file tree Collapse file tree 1 file changed +5
-7
lines changed
Expand file tree Collapse file tree 1 file changed +5
-7
lines changed Original file line number Diff line number Diff line change @@ -34,11 +34,8 @@ Message::ParseSignalsStatus Message::parseSignals(const std::vector<uint8_t>& da
3434 uint32_t start_bit = 8 * (signal.start_bit / 8 ) + (7 - (signal.start_bit % 8 )); // Calculation taken from python CAN
3535 v = data_big_endian << start_bit;
3636 v = v >> (len - signal.size );
37- } else {
38- const uint32_t shiftLeft = (len - (signal.size + signal.start_bit ));
39- v = data_little_endian << shiftLeft;
40- v = v >> (shiftLeft + signal.start_bit );
41- }
37+ } else
38+ v = data_little_endian >> signal.start_bit ;
4239
4340 if (signal.is_signed && signal.size > 1 ) {
4441 switch (signal.size ) {
@@ -61,14 +58,15 @@ Message::ParseSignalsStatus Message::parseSignals(const std::vector<uint8_t>& da
6158 if (negative)
6259 nativeInt = v | ~((1 << signal.size ) - 1 ); // invert all bits above signal.size
6360 else
64- nativeInt = v;
61+ nativeInt = v & (( 1 << signal. size ) - 1 ); // masking
6562 values.push_back (nativeInt * signal.factor + signal.offset );
6663 break ;
6764 }
6865 }
6966 } else {
7067 // use only the relevant bits
71- values.push_back ((v & ((1 << signal.size ) - 1 )) * signal.factor + signal.offset );
68+ v = v & ((1 << signal.size ) - 1 ); // masking
69+ values.push_back (v * signal.factor + signal.offset );
7270 }
7371 }
7472 return ParseSignalsStatus::Success;
You can’t perform that action at this time.
0 commit comments