diff --git a/src/main.c b/src/main.c index 34a5db4..816bd00 100644 --- a/src/main.c +++ b/src/main.c @@ -117,7 +117,6 @@ void read_can(Tel *t, int soc) { case 0x382: if (frame.can_dlc >= 2) { t->rpm.data = frame.data[0] | (frame.data[1] << 8); - t->speed.data = (int)(t->rpm.data * 0.017f); } break; default: @@ -151,6 +150,17 @@ void read_uart(Tel *t, int fd, SerialParser *uart_str) { } } +void calc_data(Tel *t) { + t->power.data = (int)(t->tens.data * t->amp.data); + t->speed.data = (int)(t->rpm.data * 0.017f); + + if (t->speed.data > 0) { + t->eff.data = (float)t->power.data / (float)t->speed.data; + } else { + t->eff.data = 0.0f; + } +} + long now_ms(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); @@ -534,6 +544,7 @@ int main(int argc, char **argv) { } else { if (use_can) read_can(&tel, soc); if (use_uart) read_uart(&tel, uart_fd, &uart_parser); + calc_data(&tel); } break; }