90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
#include "lubeapp.h"
|
|
|
|
uint32_t lubePulseTimestamp = 0;
|
|
|
|
void RunLubeApp(uint32_t add_milimeters)
|
|
{
|
|
// Add traveled Distance in mm
|
|
PersistenceData.TravelDistance_highRes += add_milimeters;
|
|
|
|
switch (globals.systemStatus)
|
|
{
|
|
case sysStat_Startup:
|
|
if (millis() > STARTUP_DELAY)
|
|
{
|
|
globals.systemStatus = sysStat_Normal;
|
|
globals.resumeStatus = sysStat_Normal;
|
|
}
|
|
break;
|
|
|
|
case sysStat_Normal:
|
|
if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Default)
|
|
{
|
|
LubePulse();
|
|
PersistenceData.TravelDistance_highRes = 0;
|
|
}
|
|
break;
|
|
|
|
case sysStat_Rain:
|
|
if (PersistenceData.TravelDistance_highRes / 1000 > LubeConfig.DistancePerLube_Rain)
|
|
{
|
|
LubePulse();
|
|
PersistenceData.TravelDistance_highRes = 0;
|
|
}
|
|
break;
|
|
case sysStat_Purge:
|
|
if (globals.purgePulses > 0)
|
|
{
|
|
if (lubePulseTimestamp + LUBE_PULSE_PAUSE_MS < millis())
|
|
{
|
|
LubePulse();
|
|
globals.purgePulses--;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
globals.systemStatus = globals.resumeStatus;
|
|
}
|
|
break;
|
|
case sysStat_Error:
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (globals.systemStatus)
|
|
{
|
|
case sysStat_Normal:
|
|
strcpy(globals.systemStatustxt, "Normal");
|
|
break;
|
|
case sysStat_Purge:
|
|
strcpy(globals.systemStatustxt, "Purge");
|
|
break;
|
|
case sysStat_Rain:
|
|
strcpy(globals.systemStatustxt, "Rain");
|
|
break;
|
|
case sysStat_Startup:
|
|
strcpy(globals.systemStatustxt, "Startup");
|
|
break;
|
|
case sysStat_Error:
|
|
strcpy(globals.systemStatustxt, "Error");
|
|
break;
|
|
case sysStat_Shutdown:
|
|
strcpy(globals.systemStatustxt, "Shutdown");
|
|
break;
|
|
}
|
|
|
|
// maintain Pin-State of Lube-Pump
|
|
if (lubePulseTimestamp > millis())
|
|
digitalWrite(GPIO_PUMP, HIGH);
|
|
else
|
|
digitalWrite(GPIO_PUMP, LOW);
|
|
}
|
|
|
|
void LubePulse()
|
|
{
|
|
lubePulseTimestamp = millis() + LUBE_PULSE_LENGHT_MS;
|
|
if (PersistenceData.tankRemain_µl < LubeConfig.amountPerDose_µl)
|
|
PersistenceData.tankRemain_µl = 0;
|
|
else
|
|
PersistenceData.tankRemain_µl = PersistenceData.tankRemain_µl - LubeConfig.amountPerDose_µl;
|
|
} |