@@ -13,8 +13,9 @@ namespace libdbc {
1313 }
1414
1515 bool Message::parseSignals (const uint8_t * data, int size, std::vector<double >& values) const {
16- if (!m_prepared)
17- return false ;
16+ // With the current approach it is not needed to prepare the message by sorting the signals
17+ // if (!m_prepared)
18+ // return false;
1819
1920 if (size > 8 )
2021 return false ; // not supported yet
@@ -31,7 +32,7 @@ namespace libdbc {
3132 uint64_t data_big_endian = 0 ;
3233 for (int i=0 ; i < size; i++) {
3334 data_little_endian |= ((uint64_t )data[i]) << i * 8 ;
34- data_big_endian |= (uint64_t )data[i] << (size - 1 - i);
35+ // data_big_endian |= (uint64_t)data[i] << (size - 1 - i);
3536 }
3637
3738 // TODO: does this also work on a big endian machine?
@@ -40,9 +41,10 @@ namespace libdbc {
4041 uint64_t v = 0 ;
4142 for (const auto & signal: m_signals) {
4243 if (signal.is_bigendian ) {
43- const uint32_t shiftLeft = signal.start_bit ;
44- v = data_big_endian << shiftLeft;
45- v = v >> (shiftLeft + signal.start_bit );
44+ // Not tested!
45+ // const uint32_t shiftLeft = signal.start_bit;
46+ // v = data_big_endian << shiftLeft;
47+ // v = v >> (shiftLeft + signal.start_bit);
4648 } else {
4749 const uint32_t shiftLeft = (len - (signal.size + signal.start_bit ));
4850 v = data_little_endian << shiftLeft;
@@ -75,26 +77,26 @@ namespace libdbc {
7577 }
7678
7779 void Message::prepareMessage () {
78- m_prepared = false ;
79- // sort signals so that the signals are ordered by the startbit
80+ // m_prepared = false;
81+ // // sort signals so that the signals are ordered by the startbit
8082 std::sort (m_signals.begin (), m_signals.end ());
8183
82- uint32_t curr_bit = 0 ;
83- for (std::vector<Signal>::size_type i=0 ; i < m_signals.size (); i++) {
84- const auto & signal = m_signals.at (i);
85- if (signal.is_multiplexed )
86- break ; // Not supported yet
87-
88- if (curr_bit < signal.start_bit ) {
89- // padding needed
90- bitstruct.push_back (BitStruct (signal.start_bit - curr_bit));
91- }
92- bitstruct.push_back (BitStruct (i, signal.size ));
93- curr_bit = signal.start_bit + signal.size ;
94- }
95- // Check if correct
96- if (curr_bit > m_size * 8 )
97- return ;
84+ // uint32_t curr_bit = 0;
85+ // for (std::vector<Signal>::size_type i=0; i < m_signals.size(); i++) {
86+ // const auto& signal = m_signals.at(i);
87+ // if (signal.is_multiplexed)
88+ // break; // Not supported yet
89+
90+ // if (curr_bit < signal.start_bit) {
91+ // // padding needed
92+ // bitstruct.push_back(BitStruct(signal.start_bit - curr_bit));
93+ // }
94+ // bitstruct.push_back(BitStruct(i, signal.size));
95+ // curr_bit = signal.start_bit + signal.size;
96+ // }
97+ // // Check if correct
98+ // if (curr_bit > m_size * 8)
99+ // return;
98100
99101 m_prepared = true ;
100102 }
0 commit comments