90 lines
2.4 KiB
C++
Raw Normal View History

2022-01-08 03:14:26 +01:00
#include "lubeapp.h"
2022-01-07 23:36:02 +01:00
2022-01-10 00:55:04 +01:00
uint32_t lubePulseTimestamp = 0;
2022-01-09 20:51:16 +01:00
void RunLubeApp(uint32_t add_milimeters)
2022-01-07 23:36:02 +01:00
{
// Add traveled Distance in mm
PersistenceData.TravelDistance_highRes += add_milimeters;
switch (globals.systemStatus)
{
2022-01-10 00:55:04 +01:00
case sysStat_Startup:
2022-01-14 15:36:17 +01:00
if (millis() > STARTUP_DELAY)
{
globals.systemStatus = sysStat_Normal;
globals.resumeStatus = sysStat_Normal;
}
2022-01-10 00:55:04 +01:00
break;
case sysStat_Normal:
if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Default)
2022-01-10 00:55:04 +01:00
{
LubePulse();
PersistenceData.TravelDistance_highRes = 0;
2022-01-10 00:55:04 +01:00
}
break;
2022-01-10 00:55:04 +01:00
case sysStat_Rain:
if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Rain)
2022-01-10 00:55:04 +01:00
{
LubePulse();
PersistenceData.TravelDistance_highRes = 0;
2022-01-10 00:55:04 +01:00
}
break;
case sysStat_Purge:
if (globals.purgePulses > 0)
{
2022-01-12 00:52:27 +01:00
if (lubePulseTimestamp + LUBE_PULSE_PAUSE_MS < millis())
2022-01-10 00:55:04 +01:00
{
LubePulse();
globals.purgePulses--;
}
}
else
{
globals.systemStatus = globals.resumeStatus;
}
break;
2022-01-12 00:52:27 +01:00
case sysStat_Error:
default:
break;
}
2022-01-14 15:36:17 +01:00
switch (globals.systemStatus)
{
case sysStat_Normal:
2022-02-10 22:31:11 +01:00
strcpy(globals.systemStatustxt, PSTR("Normal"));
2022-01-14 15:36:17 +01:00
break;
case sysStat_Purge:
2022-02-10 22:31:11 +01:00
strcpy(globals.systemStatustxt, PSTR("Purge"));
2022-01-14 15:36:17 +01:00
break;
case sysStat_Rain:
2022-02-10 22:31:11 +01:00
strcpy(globals.systemStatustxt, PSTR("Rain"));
2022-01-14 15:36:17 +01:00
break;
case sysStat_Startup:
2022-02-10 22:31:11 +01:00
strcpy(globals.systemStatustxt, PSTR("Startup"));
2022-01-14 15:36:17 +01:00
break;
case sysStat_Error:
2022-02-10 22:31:11 +01:00
strcpy(globals.systemStatustxt, PSTR("Error"));
break;
case sysStat_Shutdown:
2022-02-10 22:31:11 +01:00
strcpy(globals.systemStatustxt, PSTR("Shutdown"));
break;
2022-01-14 15:36:17 +01:00
}
2022-01-10 00:55:04 +01:00
// maintain Pin-State of Lube-Pump
if (lubePulseTimestamp > millis())
digitalWrite(GPIO_PUMP, HIGH);
else
digitalWrite(GPIO_PUMP, LOW);
}
2022-01-10 00:55:04 +01:00
void LubePulse()
{
lubePulseTimestamp = millis() + LUBE_PULSE_LENGHT_MS;
2022-01-19 22:21:12 +01:00
if (PersistenceData.tankRemain_µl < LubeConfig.amountPerDose_µl)
PersistenceData.tankRemain_µl = 0;
else
PersistenceData.tankRemain_µl = PersistenceData.tankRemain_µl - LubeConfig.amountPerDose_µl;
2022-01-10 00:55:04 +01:00
}