mirror of
https://github.com/eddyem/small_tel.git
synced 2026-06-19 10:26:25 +03:00
seems like it works
This commit is contained in:
@@ -126,7 +126,9 @@ int main(int argc, char **argv){
|
|||||||
ERRX("Cannot write into '%s'", G.headerfile);
|
ERRX("Cannot write into '%s'", G.headerfile);
|
||||||
domename(G.dome_name);
|
domename(G.dome_name);
|
||||||
sl_check4running((char*)__progname, G.pidfile);
|
sl_check4running((char*)__progname, G.pidfile);
|
||||||
|
#ifndef EBUG
|
||||||
if(sl_daemonize()) ERR("Can't daemonize!");
|
if(sl_daemonize()) ERR("Can't daemonize!");
|
||||||
|
#endif
|
||||||
sl_loglevel_e lvl = G.verbose + LOGLEVEL_ERR;
|
sl_loglevel_e lvl = G.verbose + LOGLEVEL_ERR;
|
||||||
if(lvl >= LOGLEVEL_AMOUNT) lvl = LOGLEVEL_AMOUNT - 1;
|
if(lvl >= LOGLEVEL_AMOUNT) lvl = LOGLEVEL_AMOUNT - 1;
|
||||||
if(G.logfile) OPENLOG(G.logfile, lvl, 1);
|
if(G.logfile) OPENLOG(G.logfile, lvl, 1);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include <weather_data.h>
|
#include <weather_data.h>
|
||||||
|
|
||||||
#include "dome.h"
|
#include "dome.h"
|
||||||
|
#include "server.h"
|
||||||
|
|
||||||
// max age time of last status - 30s
|
// max age time of last status - 30s
|
||||||
#define STATUS_MAX_AGE (30.)
|
#define STATUS_MAX_AGE (30.)
|
||||||
@@ -89,7 +90,8 @@ static sl_sock_hresult_e statusth(sl_sock_t *c, _U_ sl_sock_hitem_t *item, _U_ c
|
|||||||
dome_status_t dome_status;
|
dome_status_t dome_status;
|
||||||
double lastt = get_dome_status(&dome_status);
|
double lastt = get_dome_status(&dome_status);
|
||||||
if(sl_dtime() - lastt > STATUS_MAX_AGE) return RESULT_FAIL;
|
if(sl_dtime() - lastt > STATUS_MAX_AGE) return RESULT_FAIL;
|
||||||
snprintf(buf, 127, "cover1=%s\ncover2=%s\nangle1=%d\nangle2=%d\nrelay1=%d\nrelay2=%d\nrelay3=%d\nreqtime=%.9f\n",
|
snprintf(buf, 127, "operations=%s\ncover1=%s\ncover2=%s\nangle1=%d\nangle2=%d\nrelay1=%d\nrelay2=%d\nrelay3=%d\nreqtime=%.9f\n",
|
||||||
|
get_forbidden() ? "forbidden" : "permitted",
|
||||||
textst(dome_status.coverstate[0]), textst(dome_status.coverstate[1]),
|
textst(dome_status.coverstate[0]), textst(dome_status.coverstate[1]),
|
||||||
dome_status.encoder[0], dome_status.encoder[1],
|
dome_status.encoder[0], dome_status.encoder[1],
|
||||||
dome_status.relay[0], dome_status.relay[1], dome_status.relay[2],
|
dome_status.relay[0], dome_status.relay[1], dome_status.relay[2],
|
||||||
@@ -221,23 +223,30 @@ void server_run(sl_socktype_e type, const char *node, sl_tty_t *serial){
|
|||||||
sl_sock_maxclhandler(s, toomuch);
|
sl_sock_maxclhandler(s, toomuch);
|
||||||
sl_sock_connhandler(s, connected);
|
sl_sock_connhandler(s, connected);
|
||||||
sl_sock_dischandler(s, disconnected);
|
sl_sock_dischandler(s, disconnected);
|
||||||
double tnow = sl_dtime(), tweather = 0.;
|
double tnow = 0., tweather = 0.;
|
||||||
int cmdclosed = 0;
|
int cmdclosed = 0;
|
||||||
while(s && s->connected){
|
while(s && s->connected){
|
||||||
|
tnow = sl_dtime();
|
||||||
if(!s->rthread){
|
if(!s->rthread){
|
||||||
LOGERR("Server handlers thread is dead");
|
LOGERR("Server handlers thread is dead");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(tnow - tweather > WEATH_POLL){
|
if(tnow - tweather > WEATH_POLL){
|
||||||
|
DBG("Poll weather");
|
||||||
if(0 == get_weather_data(&weather)){ // got OK -> check if observations are forbidden
|
if(0 == get_weather_data(&weather)){ // got OK -> check if observations are forbidden
|
||||||
|
DBG("Got weather data");
|
||||||
tweather = tnow;
|
tweather = tnow;
|
||||||
int bad = 0;
|
int bad = 0;
|
||||||
if((double)weather.last_update - tnow > WEATHER_LOST) bad = 1;
|
if(tnow - (double)weather.last_update > WEATHER_LOST){ bad = 1; DBG("weather measurements are too old"); }
|
||||||
if(weather.forceoff || weather.rain || weather.weather > WEATHER_BAD) bad = 1;
|
if(weather.forceoff || weather.rain || weather.weather > WEATHER_BAD){ bad = 1; DBG("Bad weather"); }
|
||||||
if(bad) BadWeather = 1;
|
if(bad) BadWeather = 1;
|
||||||
else BadWeather = 0;
|
else BadWeather = 0;
|
||||||
}else{
|
}else{
|
||||||
if(tnow - tweather > WEATHER_LOST) BadWeather = 1; // lost weather IPC
|
DBG("Can't get weather");
|
||||||
|
if(tnow - tweather > WEATHER_LOST){
|
||||||
|
DBG("Lost weather timeout");
|
||||||
|
BadWeather = 1; // lost weather IPC
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// finite state machine polling
|
// finite state machine polling
|
||||||
@@ -249,7 +258,7 @@ void server_run(sl_socktype_e type, const char *node, sl_tty_t *serial){
|
|||||||
cmdclosed = 1;
|
cmdclosed = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else cmdclosed = 0;
|
||||||
}
|
}
|
||||||
sl_sock_delete(&s);
|
sl_sock_delete(&s);
|
||||||
ERRX("Server handlers thread is dead");
|
ERRX("Server handlers thread is dead");
|
||||||
|
|||||||
Reference in New Issue
Block a user