@ -27,7 +27,8 @@ void AbstractStream::updateMessages(QHash<MessageId, CanData> *messages) {
}
}
void AbstractStream : : updateEvent ( const MessageId & id , double sec , const uint8_t * data , uint8_t size ) {
void AbstractStream : : updateEvent ( const MessageId & id , double sec , const uint8_t * data , uint8_t size ) {
all_msgs [ id ] . compute ( ( const char * ) data , size , sec , getSpeed ( ) ) ;
QList < uint8_t > mask = settings . suppress_defined_signals ? dbc ( ) - > mask ( id ) : QList < uint8_t > ( ) ;
all_msgs [ id ] . compute ( ( const char * ) data , size , sec , getSpeed ( ) , mask ) ;
if ( ! new_msgs - > contains ( id ) ) {
if ( ! new_msgs - > contains ( id ) ) {
new_msgs - > insert ( id , { } ) ;
new_msgs - > insert ( id , { } ) ;
}
}
@ -67,10 +68,11 @@ void AbstractStream::updateLastMsgsTo(double sec) {
auto it = std : : lower_bound ( ev . crbegin ( ) , ev . crend ( ) , last_ts , [ ] ( auto e , uint64_t ts ) {
auto it = std : : lower_bound ( ev . crbegin ( ) , ev . crend ( ) , last_ts , [ ] ( auto e , uint64_t ts ) {
return e - > mono_time > ts ;
return e - > mono_time > ts ;
} ) ;
} ) ;
QList < uint8_t > mask = settings . suppress_defined_signals ? dbc ( ) - > mask ( id ) : QList < uint8_t > ( ) ;
if ( it ! = ev . crend ( ) ) {
if ( it ! = ev . crend ( ) ) {
double ts = ( * it ) - > mono_time / 1e9 - routeStartTime ( ) ;
double ts = ( * it ) - > mono_time / 1e9 - routeStartTime ( ) ;
auto & m = all_msgs [ id ] ;
auto & m = all_msgs [ id ] ;
m . compute ( ( const char * ) ( * it ) - > dat , ( * it ) - > size , ts , getSpeed ( ) ) ;
m . compute ( ( const char * ) ( * it ) - > dat , ( * it ) - > size , ts , getSpeed ( ) , mask ) ;
m . count = std : : distance ( it , ev . crend ( ) ) ;
m . count = std : : distance ( it , ev . crend ( ) ) ;
m . freq = m . count / std : : max ( 1.0 , ts ) ;
m . freq = m . count / std : : max ( 1.0 , ts ) ;
}
}
@ -153,7 +155,7 @@ static inline QColor blend(const QColor &a, const QColor &b) {
return QColor ( ( a . red ( ) + b . red ( ) ) / 2 , ( a . green ( ) + b . green ( ) ) / 2 , ( a . blue ( ) + b . blue ( ) ) / 2 , ( a . alpha ( ) + b . alpha ( ) ) / 2 ) ;
return QColor ( ( a . red ( ) + b . red ( ) ) / 2 , ( a . green ( ) + b . green ( ) ) / 2 , ( a . blue ( ) + b . blue ( ) ) / 2 , ( a . alpha ( ) + b . alpha ( ) ) / 2 ) ;
}
}
void CanData : : compute ( const char * can_data , const int size , double current_sec , double playback_speed , uint32_t in_freq ) {
void CanData : : compute ( const char * can_data , const int size , double current_sec , double playback_speed , const QList < uint8_t > & mask , uint32_t in_freq ) {
ts = current_sec ;
ts = current_sec ;
+ + count ;
+ + count ;
freq = in_freq = = 0 ? count / std : : max ( 1.0 , current_sec ) : in_freq ;
freq = in_freq = = 0 ? count / std : : max ( 1.0 , current_sec ) : in_freq ;
@ -171,8 +173,9 @@ void CanData::compute(const char *can_data, const int size, double current_sec,
const QColor & greyish_blue = ! lighter ? GREYISH_BLUE : GREYISH_BLUE_LIGHTER ;
const QColor & greyish_blue = ! lighter ? GREYISH_BLUE : GREYISH_BLUE_LIGHTER ;
for ( int i = 0 ; i < size ; + + i ) {
for ( int i = 0 ; i < size ; + + i ) {
const uint8_t last = dat [ i ] ;
const uint8_t mask_byte = ( i < mask . size ( ) ) ? ( ~ mask [ i ] ) : 0xff ;
const uint8_t cur = can_data [ i ] ;
const uint8_t last = dat [ i ] & mask_byte ;
const uint8_t cur = can_data [ i ] & mask_byte ;
const int delta = cur - last ;
const int delta = cur - last ;
if ( last ! = cur ) {
if ( last ! = cur ) {