Well that's pretty novel

This commit is contained in:
XANTRONIX Development 2019-02-21 00:17:53 -06:00
parent 84171424ea
commit ff59b0c936

View file

@ -27,7 +27,6 @@ int main(int argc, char **argv) {
WINDOW *win; WINDOW *win;
hexagram_can_if *can_if; hexagram_can_if *can_if;
struct can_frame frame; struct can_frame frame;
uint8_t last_gear = 0;
struct timeval now, last; struct timeval now, last;
@ -51,29 +50,37 @@ int main(int argc, char **argv) {
while (hexagram_can_if_read(can_if, &frame) >= 0) { while (hexagram_can_if_read(can_if, &frame) >= 0) {
gettimeofday(&now, NULL); gettimeofday(&now, NULL);
char lever_states[16] = " PRNDS ";
char manual_gears[16] = " 123456 ";
if (frame.can_id == 0x280) { if (frame.can_id == 0x280) {
double rpm = 0.25 * (double)(frame.data[2] | (frame.data[3] << 8)); double rpm = 0.25 * (double)(frame.data[2] | (frame.data[3] << 8));
wmove(win, 1, 0); wmove(win, 1, 0);
wprintw(win, "%6.1lf RPM\n", rpm); wprintw(win, "%6.1lf RPM", rpm);
} else if (frame.can_id == 0x540) { } else if (frame.can_id == 0x540) {
if (frame.data[7] != last_gear) { wmove(win, 5, 0);
wmove(win, 3, 8);
if ((frame.data[7] & 0xc) == 0xc) { if ((frame.data[7] & 0xc) == 0xc) {
wprintw(win, " %c\n", uint8_t gear = ((frame.data[7] & 0xf0) >> 4) - 2;
manual_gears[(frame.data[7] & 0xf0) >> 4]);
} else { wprintw(win, "1 2 3 4 5 6");
wprintw(win, "%c \n",
lever_states[(frame.data[7] & 0xf0) >> 4]);
}
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) { } else if (frame.can_id == 0x5a0) {
/* /*
@ -87,9 +94,15 @@ int main(int argc, char **argv) {
wmove(win, 2, 0); wmove(win, 2, 0);
wprintw(win, "%6.1lf kph", kph); 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)); memcpy(&last, &now, sizeof(now));
wrefresh(win); wrefresh(win);