From 403b3f60821e79be090ff5e84542b571054e7e11 Mon Sep 17 00:00:00 2001 From: smayzy Date: Mon, 6 Apr 2026 12:38:15 +0200 Subject: [PATCH] add telemetry to a struct --- src/main.c | 87 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 63 insertions(+), 24 deletions(-) diff --git a/src/main.c b/src/main.c index e16911d..b8e9ce7 100644 --- a/src/main.c +++ b/src/main.c @@ -19,16 +19,47 @@ const int digit_bitmaps[10][5][3] = { {{1,1,1},{1,0,1},{1,1,1},{0,0,1},{1,1,1}} // 9 }; -void get_fake_data(int *speed, int lspeed, int hspeed, int *power, int lpower, int hpower, int *bat, int lbat, int hbat, float *tq, float ltq, float htq, int *rpm, int lrpm, int hrpm, float *eff, float leff, float heff, float *bat_temp, float lbat_temp, float hbat_temp, float *var_temp, float lvar_temp, float hvar_temp, float *mot_temp, float lmot_temp, float hmot_temp) { - *speed = lspeed + rand() % (hspeed - lspeed + 1); - *power = lpower + rand() % (hpower - lpower + 1); - *bat = lbat + rand() % (hbat - lbat + 1); - *tq = ltq + ((float)rand() / (float)RAND_MAX) * (htq - ltq); - *rpm = lrpm + rand() % (hrpm - lrpm + 1); - *eff = leff + (float)rand() / (float)RAND_MAX * (heff - leff); - *bat_temp = lbat_temp + (float)rand() / (float)RAND_MAX * (hbat_temp - lbat_temp); - *var_temp = lvar_temp + (float)rand() / (float)RAND_MAX * (hvar_temp - lvar_temp); - *mot_temp = lmot_temp + (float)rand() / (float)RAND_MAX * (hmot_temp - lmot_temp); +typedef struct{ + int data; + int ldata; + int hdata; + int digits; + WINDOW *lwin; +} StrInt; +typedef struct{ + float data; + float ldata; + float hdata; + int digits; + WINDOW *lwin; +} StrFlt; +typedef struct{ + WINDOW *lwin; +} StrStr; + +typedef struct { + StrInt speed; + StrInt rpm; + StrFlt tq; + StrInt power; + StrFlt eff; + StrInt bat; + StrFlt bat_temp; + StrFlt var_temp; + StrFlt mot_temp; + StrStr message; +} Tel; + +void get_fake_data(Tel *t) { + t->speed.data = t->speed.ldata + rand() % (t->speed.hdata - t->speed.ldata + 1); + t->power.data = t->power.ldata + rand() % (t->power.hdata - t->power.ldata + 1); + t->bat.data = t->bat.ldata + rand() % (t->bat.hdata - t->bat.ldata + 1); + t->tq.data = t->tq.ldata + ((float)rand() / (float)RAND_MAX) * (float)(t->tq.hdata - t->tq.ldata); + t->rpm.data = t->rpm.ldata + rand() % (t->rpm.hdata - t->rpm.ldata + 1); + t->eff.data = t->eff.ldata + ((float)rand() / (float)RAND_MAX) * (float)(t->eff.hdata - t->eff.ldata); + t->bat_temp.data = t->bat_temp.ldata + ((float)rand() / (float)RAND_MAX) * (float)(t->bat_temp.hdata - t->bat_temp.ldata); + t->var_temp.data = t->var_temp.ldata + ((float)rand() / (float)RAND_MAX) * (float)(t->var_temp.hdata - t->var_temp.ldata); + t->mot_temp.data = t->mot_temp.ldata + ((float)rand() / (float)RAND_MAX) * (float)(t->mot_temp.hdata - t->mot_temp.ldata); } long now_ms(void) { @@ -303,6 +334,18 @@ int main(int argc, char **argv) { WINDOW *win[10]; + Tel tel; + tel.speed = (StrInt){0, 0, 200, 3, NULL}; + tel.rpm = (StrInt){0, 0, 6000, 4, NULL}; + tel.tq = (StrFlt){0.0f, 1.8f, 3.5f, 3, NULL}; + tel.power = (StrInt){0, 0, 1300, 4, NULL}; + tel.eff = (StrFlt){0.0f, 0.0f, 300.0f, 5, NULL}; + tel.bat = (StrInt){0, 0, 100, 3, NULL}; + tel.bat_temp = (StrFlt){0.0f, 0.0f, 150.0f, 5, NULL}; + tel.var_temp = (StrFlt){0.0f, 0.0f, 150.0f, 5, NULL}; + tel.mot_temp = (StrFlt){0.0f, 0.0f, 150.0f, 5, NULL}; + tel.message = (StrStr){NULL}; + int x3 = x / 3; int x3r = x - 2 * x3; @@ -339,10 +382,6 @@ int main(int argc, char **argv) { } bar_mark(win[4]); - int speed = 0, power = 0, bat = 0, rpm = 0; - float tq = 0.0f, eff = 0.0f, bat_temp = 0.0f, var_temp = 0.0f, mot_temp = 0.0f; - int lspeed = 0, hspeed = 200, lpower = 0, hpower = 1250, lbat = 0, hbat = 100, lrpm = 0, hrpm = 6000; - float ltq = 1.8f, htq = 3.5f, leff = 0.0f, heff = 300.0f, lbat_temp = 0.0f, hbat_temp = 150.0f, lvar_temp = 0.0f, hvar_temp = 150.0f, lmot_temp = 0.0f, hmot_temp = 150.0f; long t100 = 0, t1000 = 0; int ch = ERR; @@ -355,7 +394,7 @@ int main(int argc, char **argv) { case ERR : default : if (fake_data) { - get_fake_data(&speed, lspeed, hspeed, &power, lpower, hpower, &bat, lbat, hbat, &tq, ltq, htq, &rpm, lrpm, hrpm, &eff, leff, heff, &bat_temp, lbat_temp, hbat_temp, &var_temp, lvar_temp, hvar_temp, &mot_temp, lmot_temp, hmot_temp); + get_fake_data(&tel); } else { //real_data() } @@ -366,18 +405,18 @@ int main(int argc, char **argv) { long now = now_ms(); if (now - t100 >= 100 * delay) { - win_int(win[0], speed, 3, use_color, color_high(speed, lspeed, hspeed)); - win_int(win[1], rpm, 4, use_color, color_high(rpm, lrpm, hrpm)); - win_float(win[3], tq, 3, use_color, color_high(tq, ltq, htq)); - win_bar(win[4], power, hpower, use_color, 4); - win_float(win[5], eff, 5, use_color, color_high(eff, leff, heff)); + win_int(win[0], tel.speed.data, 3, use_color, color_high(tel.speed.data, tel.speed.ldata, tel.speed.hdata)); + win_int(win[1], tel.rpm.data, 4, use_color, color_high(tel.rpm.data, tel.rpm.ldata, tel.rpm.hdata)); + win_float(win[3], tel.tq.data, 3, use_color, color_high(tel.tq.data, tel.tq.ldata, tel.tq.hdata)); + win_bar(win[4], tel.power.data, tel.power.hdata, use_color, tel.power.digits); + win_float(win[5], tel.eff.data, 5, use_color, color_high(tel.eff.data, tel.eff.ldata, tel.eff.hdata)); t100 = now; } if (now - t1000 >= 1000 * delay) { - win_int(win[2], bat, 3, use_color, color_low(bat, lbat, hbat)); - win_float(win[6], bat_temp, 5, use_color, color_high(bat_temp, lbat_temp, hbat_temp)); - win_float(win[7], var_temp, 5, use_color, color_high(var_temp, lvar_temp, hvar_temp)); - win_float(win[8], mot_temp, 5, use_color, color_high(mot_temp, lmot_temp, hmot_temp)); + win_int(win[2], tel.bat.data, 3, use_color, color_low(tel.bat.data, tel.bat.ldata, tel.bat.hdata)); + win_float(win[6], tel.bat_temp.data, 5, use_color, color_high(tel.bat_temp.data, tel.bat_temp.ldata, tel.bat_temp.hdata)); + win_float(win[7], tel.var_temp.data, 5, use_color, color_high(tel.var_temp.data, tel.var_temp.ldata, tel.var_temp.hdata)); + win_float(win[8], tel.mot_temp.data, 5, use_color, color_high(tel.mot_temp.data, tel.mot_temp.ldata, tel.mot_temp.hdata)); t1000 = now; } //win[9];