diff --git a/bus.c b/bus.c index 083dd7e..613c6f4 100644 --- a/bus.c +++ b/bus.c @@ -9,6 +9,7 @@ #include "printx.h" #include "ui.h" #include "nfc.h" +#include "hvc.h" #define CMD_MAX 70 @@ -28,12 +29,32 @@ void processCmd(char* buffer) { printx(INFO, BUS, "Exit request receved, processing ...\n"); stopNFC(); - //stopHVC(); + stopHVC(); stopBus(); stopUI(); } - //else - //printx(DEBUG, BUS, "STRLEN : %d and strcmp ret %d", strlen(buffer), strcmp(buffer, "quit")); + else if(strcmp(buffer, "setpumpon") == 0) + { + printx(INFO, BUS, "Setting PUMP ON"); + setPumpWantedState(true); + } + else if(strcmp(buffer, "setpumpoff") == 0) + { + printx(INFO, BUS, "Setting PUMP OFF"); + setPumpWantedState(false); + } + else if(strcmp(buffer, "setheaton") == 0) + { + printx(INFO, BUS, "Setting HEAT ON"); + setHeatWantedState(true); + } + else if(strcmp(buffer, "setheatoff") == 0) + { + printx(INFO, BUS, "Setting HEAT OFF"); + setHeatWantedState(false); + } + + //printx(DEBUG, BUS, "STRLEN : %d and strcmp ret %d", strlen(buffer), strcmp(buffer, "quit")); } void* processBus(void* we) diff --git a/hvc.c b/hvc.c index 99cbe60..843478c 100644 --- a/hvc.c +++ b/hvc.c @@ -15,11 +15,15 @@ #define DEVICE1 "/dev/ttyACM1" #define SPEED B19200 -#define HVC_POLLING_TIME 500000 +#define HVC_POLLING_TIME 50000 #define WAIT_BEFORE_RETRY 5000 #define GET_DEVICE_MODEL 'A' #define DEVICE_MODEL_HVC 'C' #define GET_TEMP 'H' +#define SET_HEAT_ON 'E' +#define SET_HEAT_OFF 'G' +#define SET_PUMP_ON 'B' +#define SET_PUMP_OFF 'D' // Globals int hvc_fd = -1; @@ -27,6 +31,23 @@ bool hvcStop = false; bool sPump = false; bool sHeat = false; struct termios hvcSaveterm; +bool wHeat = false; +bool wPump = false; + +void stopHVC() +{ + hvcStop = true; +} + +void setPumpWantedState(bool s) +{ + wPump = s; +} + +void setHeatWantedState(bool s) +{ + wHeat = s; +} bool initHVC() { @@ -63,6 +84,20 @@ void* processHVC(void* we) data = getData(&hvc_fd); setTemp(data); + if(wHeat ^ sHeat) + { + sendData(&hvc_fd, wHeat ? SET_HEAT_ON : SET_HEAT_OFF); + sHeat = wHeat; + setHeat(sHeat); + } + + if(wPump ^ sPump) + { + sendData(&hvc_fd, wPump ? SET_PUMP_ON : SET_PUMP_OFF); + sPump = wPump; + setPump(sPump); + } + usleep(HVC_POLLING_TIME); } diff --git a/hvc.h b/hvc.h index 9d61688..5003c0f 100644 --- a/hvc.h +++ b/hvc.h @@ -6,5 +6,7 @@ bool initHVC(); void* processHVC(); void stopHVC(); +void setPumpWantedState(bool); +void setHeatWantedState(bool); #endif -- libgit2 0.21.2