add win_warn and fix uart speed
This commit is contained in:
parent
4ca757c738
commit
9047546be0
46
src/main.c
46
src/main.c
@ -53,6 +53,8 @@ typedef struct{
|
|||||||
char title[30];
|
char title[30];
|
||||||
} StFlt;
|
} StFlt;
|
||||||
typedef struct{
|
typedef struct{
|
||||||
|
int last_error;
|
||||||
|
int error_level;
|
||||||
int height;
|
int height;
|
||||||
int width;
|
int width;
|
||||||
int starty;
|
int starty;
|
||||||
@ -403,6 +405,41 @@ void win_bar(StInt *st, bool use_color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void win_warn(Tel *t, bool use_color, long now) {
|
||||||
|
int warn_lvl = 0;
|
||||||
|
if ((t->speed.data > t->speed.hdata) || (t->speed.data < t->speed.ldata)) warn_lvl++;
|
||||||
|
if ((t->rpm.data > t->rpm.hdata) || (t->rpm.data < t->rpm.ldata)) warn_lvl++;
|
||||||
|
if ((t->power.data > t->power.hdata) || (t->power.data < t->power.ldata)) warn_lvl++;
|
||||||
|
if ((t->bat.data > t->bat.hdata) || (t->bat.data < t->bat.ldata)) warn_lvl++;
|
||||||
|
if ((t->eff.data > t->eff.hdata) || (t->eff.data < t->eff.ldata)) warn_lvl++;
|
||||||
|
if ((t->tens.data > t->eff.hdata) || (t->eff.data < t->eff.ldata)) warn_lvl++;
|
||||||
|
if ((t->amp.data > t->amp.hdata) || (t->amp.data < t->amp.ldata)) warn_lvl++;
|
||||||
|
|
||||||
|
if (warn_lvl > 0) {
|
||||||
|
t->message.error_level = warn_lvl;
|
||||||
|
t->message.last_error = now;
|
||||||
|
} else if ((now - t->message.last_error) > 3000) {
|
||||||
|
t->message.error_level = 0;
|
||||||
|
win_clear(t->message.lwin);
|
||||||
|
}
|
||||||
|
|
||||||
|
int lwiny, lwinx;
|
||||||
|
getmaxyx(t->message.lwin, lwiny, lwinx);
|
||||||
|
|
||||||
|
if (use_color) wattron(t->message.lwin, COLOR_PAIR(2));
|
||||||
|
|
||||||
|
if (warn_lvl > 0) {
|
||||||
|
for (int y = 1; y < lwiny - 1; y++) {
|
||||||
|
for (int x = 1; x < lwinx - 1; x++) {
|
||||||
|
mvwaddch(t->message.lwin, y, x, ACS_CKBOARD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (use_color) wattroff(t->message.lwin, COLOR_PAIR(2));
|
||||||
|
wrefresh(t->message.lwin);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
int option;
|
int option;
|
||||||
int delay = 1;
|
int delay = 1;
|
||||||
@ -475,7 +512,10 @@ int main(int argc, char **argv) {
|
|||||||
tcgetattr(uart_fd, &uart_str);
|
tcgetattr(uart_fd, &uart_str);
|
||||||
|
|
||||||
uart_str.c_cflag &= ~CSIZE; // clear bit size
|
uart_str.c_cflag &= ~CSIZE; // clear bit size
|
||||||
uart_str.c_cflag |= (CLOCAL | CREAD | CS8 | B115200);
|
uart_str.c_cflag |= (CLOCAL | CREAD | CS8);
|
||||||
|
|
||||||
|
cfsetispeed(&uart_str, B115200);
|
||||||
|
cfsetospeed(&uart_str, B115200);
|
||||||
|
|
||||||
uart_str.c_lflag = 0; // raw mode
|
uart_str.c_lflag = 0; // raw mode
|
||||||
uart_str.c_iflag = 0;
|
uart_str.c_iflag = 0;
|
||||||
@ -529,7 +569,7 @@ int main(int argc, char **argv) {
|
|||||||
tel.eff = (StFlt){0.0f, 0.0f, 300.0f, 5, 1, y4r , x3r , y4 , x-x3r , NULL, "efficiency (Wh/Km)" };
|
tel.eff = (StFlt){0.0f, 0.0f, 300.0f, 5, 1, y4r , x3r , y4 , x-x3r , NULL, "efficiency (Wh/Km)" };
|
||||||
tel.tens = (StFlt){0.0f, 0.0f, 55.0f , 4, 1, y2r4 , x3r , y2 , x-x3r , NULL, "tension (V)" };
|
tel.tens = (StFlt){0.0f, 0.0f, 55.0f , 4, 1, y2r4 , x3r , y2 , x-x3r , NULL, "tension (V)" };
|
||||||
tel.amp = (StFlt){0.0f, 0.0f, 55.0f , 4, 1, y2r4r, x3r , y-y2r4r, x-x3r , NULL, "intensity (A)" };
|
tel.amp = (StFlt){0.0f, 0.0f, 55.0f , 4, 1, y2r4r, x3r , y-y2r4r, x-x3r , NULL, "intensity (A)" };
|
||||||
tel.message = (StStr){ y6r , 2*x3, y-y6r , 0 , NULL, "warnings" };
|
tel.message = (StStr){0 , 0 , y6r , 2*x3, y-y6r , 0 , NULL, "warnings" };
|
||||||
|
|
||||||
win_init_int(&tel.speed);
|
win_init_int(&tel.speed);
|
||||||
win_init_int(&tel.rpm);
|
win_init_int(&tel.rpm);
|
||||||
@ -573,9 +613,9 @@ int main(int argc, char **argv) {
|
|||||||
win_float(&tel.tens, use_color);
|
win_float(&tel.tens, use_color);
|
||||||
win_float(&tel.amp, use_color);
|
win_float(&tel.amp, use_color);
|
||||||
win_int(&tel.bat, use_color);
|
win_int(&tel.bat, use_color);
|
||||||
|
win_warn(&tel, use_color, now);
|
||||||
t100 = now;
|
t100 = now;
|
||||||
}
|
}
|
||||||
//message;
|
|
||||||
napms(10);
|
napms(10);
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user