Well that's pretty novel
This commit is contained in:
parent
84171424ea
commit
ff59b0c936
1 changed files with 29 additions and 16 deletions
|
@ -27,7 +27,6 @@ int main(int argc, char **argv) {
|
|||
WINDOW *win;
|
||||
hexagram_can_if *can_if;
|
||||
struct can_frame frame;
|
||||
uint8_t last_gear = 0;
|
||||
|
||||
struct timeval now, last;
|
||||
|
||||
|
@ -51,29 +50,37 @@ int main(int argc, char **argv) {
|
|||
while (hexagram_can_if_read(can_if, &frame) >= 0) {
|
||||
gettimeofday(&now, NULL);
|
||||
|
||||
char lever_states[16] = " PRNDS ";
|
||||
char manual_gears[16] = " 123456 ";
|
||||
|
||||
if (frame.can_id == 0x280) {
|
||||
double rpm = 0.25 * (double)(frame.data[2] | (frame.data[3] << 8));
|
||||
|
||||
wmove(win, 1, 0);
|
||||
|
||||
wprintw(win, "%6.1lf RPM\n", rpm);
|
||||
wprintw(win, "%6.1lf RPM", rpm);
|
||||
} else if (frame.can_id == 0x540) {
|
||||
if (frame.data[7] != last_gear) {
|
||||
wmove(win, 3, 8);
|
||||
wmove(win, 5, 0);
|
||||
|
||||
if ((frame.data[7] & 0xc) == 0xc) {
|
||||
wprintw(win, " %c\n",
|
||||
manual_gears[(frame.data[7] & 0xf0) >> 4]);
|
||||
if ((frame.data[7] & 0xc) == 0xc) {
|
||||
uint8_t gear = ((frame.data[7] & 0xf0) >> 4) - 2;
|
||||
|
||||
} else {
|
||||
wprintw(win, "%c \n",
|
||||
lever_states[(frame.data[7] & 0xf0) >> 4]);
|
||||
}
|
||||
wprintw(win, "1 2 3 4 5 6");
|
||||
|
||||
last_gear = frame.data[7];
|
||||
wmove(win, 6, 0);
|
||||
wprintw(win, " ");
|
||||
|
||||
wmove(win, 6, gear * 2);
|
||||
|
||||
wprintw(win, "_");
|
||||
} else {
|
||||
uint8_t pos = ((frame.data[7] & 0xf0) >> 4) - 2;
|
||||
|
||||
wprintw(win, "P R N D S ");
|
||||
|
||||
wmove(win, 6, 0);
|
||||
wprintw(win, " ");
|
||||
|
||||
wmove(win, 6, pos * 2);
|
||||
|
||||
wprintw(win, "_");
|
||||
}
|
||||
} else if (frame.can_id == 0x5a0) {
|
||||
/*
|
||||
|
@ -87,9 +94,15 @@ int main(int argc, char **argv) {
|
|||
wmove(win, 2, 0);
|
||||
|
||||
wprintw(win, "%6.1lf kph", kph);
|
||||
} else if (frame.can_id == 0x420) {
|
||||
double temp = ((double)frame.data[1] - 100) / 2.0;
|
||||
|
||||
wmove(win, 3, 0);
|
||||
|
||||
wprintw(win, "%6.1lf °C", temp);
|
||||
}
|
||||
|
||||
if (((now.tv_sec * 1000000) + now.tv_usec) - ((last.tv_sec * 1000000) + last.tv_usec) > 100000) {
|
||||
if (((now.tv_sec * 1000000) + now.tv_usec) - ((last.tv_sec * 1000000) + last.tv_usec) > 500000) {
|
||||
memcpy(&last, &now, sizeof(now));
|
||||
|
||||
wrefresh(win);
|
||||
|
|
Loading…
Add table
Reference in a new issue