Add error counter into wheather checking utility

This commit is contained in:
eddyem 2020-10-06 20:36:44 +03:00
parent d5825ed68b
commit c53e6e4932

View File

@ -54,10 +54,15 @@ int main(int argc, char **argv){
G = parse_args(argc, argv); G = parse_args(argc, argv);
TTY_descr *dev = new_tty(G->ttyname, G->speed, 64); TTY_descr *dev = new_tty(G->ttyname, G->speed, 64);
if(!dev || !(dev = tty_open(dev, 1))) return 1; // open exclusively if(!dev || !(dev = tty_open(dev, 1))) return 1; // open exclusively
while(read_tty(dev)); // clear buffer
if(write_tty(dev->comfd, "?U\r\n", 3)) ERR("write_tty()");
size_t got, L = 0; size_t got, L = 0;
char buff[BUFLEN], *ptr = buff; char buff[BUFLEN], *ptr = buff;
int errctr = 0;
for(errctr = 0; errctr < 5; ++errctr){
while(read_tty(dev)); // clear buffer
if(write_tty(dev->comfd, "?U\r\n", 3)){
WARNX("write_tty()");
continue;
}
double t0 = dtime(); double t0 = dtime();
while(dtime() - t0 < 1.){ // timeout - 1s while(dtime() - t0 < 1.){ // timeout - 1s
got = read_tty(dev); got = read_tty(dev);
@ -70,8 +75,18 @@ int main(int argc, char **argv){
}else break; }else break;
} }
buff[L] = 0; buff[L] = 0;
if(L == 0) ERRX("Got nothing from TTY"); if(L == 0){
if(strncmp(buff, "<?U>", 4)) ERRX("Wrong answer: %s", buff); WARNX("Got nothing from TTY");
continue;
}else if(strncmp(buff, "<?U>", 4)){
WARNX("Wrong answer: %s", buff);
continue;
}else break;
}
if(errctr == 5){
close_tty(&dev);
ERRX("No connection to meteostation");
}
ptr = &buff[4]; ptr = &buff[4];
for(size_t i = 4; i < L; ++i){ for(size_t i = 4; i < L; ++i){
char c = *ptr; char c = *ptr;