#include #include #include #include #include "printx.h" #include "hvc.h" #include "heat.h" #include "pump.h" #define K_DEB 1925 //en imp/L #define VOL_IMP_SHORT_COFFEE 97 //pour 5cl #define VOL_IMP_LONG_COFFEE 231 //pour 12cl #define TASK_NUMBER_PUMP 16 //Globals bool stopPump=false; bool coffee_wanted=false; bool pump_on=false; int volDeb=0; // Lecture volume du débitmetre en impulsion int volWanted=0; bool taskP[TASK_NUMBER_PUMP]; time_t tTaskP; time_t tNowP; void initProcessPump(void) { taskP[0]=true; for (int i_initP=1;i_initP 5) && (v <= 20)) volWanted = (v*K_DEB)/100; else volWanted = 0; } void actDeb(int v) { volDeb = v; } bool isPumpOn(void) { return pump_on; } void* processPump(void* arg) { while (!stopPump) { tNowP = clock(); if (taskP[0]) { if (coffee_wanted) { printx(INFO, PUMP, "Demande de café prise en compte 1\n"); taskP[0]=false; taskP[1]=true; } } else if (taskP[1]) { if (isHeatOk()) { printx(INFO, PUMP, "Chauffe eau a bonne temperature OK 2\n"); taskP[1]=false; taskP[3]=true; } else { printx(INFO, PUMP, "Attente chauffe eau a bonne temperature 2'\n"); taskP[1]=false; taskP[2]=true; } } else if (taskP[2]) { if (isHeatOk()) { taskP[2]=false; taskP[3]=true; } } else if (taskP[3]) { tTaskP = clock(); printx(INFO, PUMP, "Distribution de l'eau Pompe ON 3\n"); taskP[3]=false; taskP[4]=true; } else if (taskP[4]) { setPumpOn(); pump_on=true; if (volDeb > volWanted) { printx(INFO, PUMP, "Fin de Distribution de l'eau Pompe OFF 4\n"); taskP[4]=false; taskP[5]=true; } else if ( ((tNowP - tTaskP) / CLOCKS_PER_SEC) > 60 ) { printx(INFO, PUMP, "Pompe utilisée depuis plus d'1 min, mise en pause 4'\n"); taskP[4]=false; taskP[6]=false; } } else if (taskP[5]) { setPumpOff(); pump_on=false; printx(INFO, PUMP, "Cafe servi 5\n"); volWanted=0; coffee_wanted=false; taskP[5]=false; taskP[0]=true; } else if (taskP[6]) { setPumpOff(); pump_on=false; printx(INFO, PUMP, "En pause, Pompe OFF 6"); tTaskP = clock(); taskP[6]=false; taskP[7]=true; } else if (taskP[7]) { if ( ((tNowP - tTaskP) / CLOCKS_PER_SEC) > 60 ) { printx(INFO, PUMP, "Pause terminée 7\n"); taskP[7]=false; taskP[4]=true; } } sleep(1); } return NULL; }