so what you should maybe try is, lets say your message number is 0x99 and it's on 0xE4.. first we need to stop ignoring records on that message number ...
add something to config.h to define some static stuff
Code:
// define your message number here.
#define V6_ERRMSG_NO 0x99
#define V6_ERRMSG_DEV 0xE4
// need to know which definition index belongs to that message. static will work but you can also determine this at startup by looking at the def array to find the correct message ... i could help you with that.
#define INDEX_OF_MSG99_IN_DEF_FILE 3
Code:
void datalog_window::move_dashboard(datalog_packet *p) {
if(p->is_msg(0xF4,0x00) ||
p->is_msg(V6_ERRMSG_DEV,V6_ERRMSG_NO) || // NEW ... lets look at this other message on the dashboard too.
(p->is_msg(0xF4,0x05) &&
p->log->info.patch_version.get() >= 0x01)
) { // belongs to us
dashboard_pkt = p;
if(ui->mainTabSwitcher->currentIndex() == 0) display_dashboard();
} else {
datalog_packet *prev_pkt = p->get_prev(0xF4,0x00);
if(prev_pkt == dashboard_pkt) return; // we're already there
dashboard_pkt = prev_pkt;
if(ui->mainTabSwitcher->currentIndex() == 0) display_dashboard();
}
}
and....
Code:
void datalog_window::display_dashboard_worker() {
draw_in_progress = true; // working (ignored in sync mode)
datalog_packet *p = dashboard_pkt;
// draw main controls
dashboard->draw_all(p);
// draw errors
if(p == NULL || p->get_msgnumber() == V6_ERRMSG_NO) {
ui->error_text->setPlainText(def[INDEX_OF_MSG99_IN_DEF_FILE].err_str(p,p->log->info.patch_version.get()));
}
draw_in_progress = false; // finished
}
now it's possible that the function void dashboard_field::draw(datalog_packet *pkt) will blank the other displays, you might need to add
Code:
if(pkt->get_msgnumber() == V6_ERRMSG_NO) return;
to the beginning of that function just so it doesn't touch the rest of the dashboard when it's on an error record.
this could mess up playback in reverse too, you'll just have to test it out
Bookmarks