Split firmware into separate files
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
#include "lock.h"
|
||||
|
||||
void processLockState()
|
||||
{
|
||||
static uint16_t lockArmedTimeoutCount;
|
||||
|
||||
if (lockState != LOCK_ARMED) lockArmedTimeoutCount = 0;
|
||||
|
||||
switch (lockState) {
|
||||
case LOCK_OFF:
|
||||
if (LEDState != LED_ERROR) LEDState = LED_OFF;
|
||||
|
||||
relayOff();
|
||||
break;
|
||||
case LOCK_PREARM:
|
||||
if (!greenButton() && !redButton()) {
|
||||
if (SERIAL_LOGGING) Serial.println("[INFO] Arming interlock.");
|
||||
logEvent(LOG_LOCK_ARMED);
|
||||
lockState = LOCK_ARMED;
|
||||
} else {
|
||||
if (SERIAL_LOGGING) Serial.println("[ERROR] Buttons held, aborting.");
|
||||
logEvent(LOG_LOCK_ERROR);
|
||||
LEDState = LED_ERROR;
|
||||
lockState = LOCK_OFF;
|
||||
}
|
||||
break;
|
||||
case LOCK_ARMED:
|
||||
if (LEDState != LED_ERROR) LEDState = LED_ARMED;
|
||||
|
||||
relayOff();
|
||||
lockArmedTimeoutCount++;
|
||||
|
||||
if (redButton()) {
|
||||
if (SERIAL_LOGGING) Serial.println("[INFO] Unarming interlock.");
|
||||
logEvent(LOG_LOCK_DISARM);
|
||||
lockState = LOCK_OFF;
|
||||
} else if (greenButton()) {
|
||||
if (SERIAL_LOGGING) Serial.println("[INFO] On button pressed.");
|
||||
lockState = LOCK_ON_PRESSED;
|
||||
}
|
||||
|
||||
if (lockArmedTimeoutCount > LOCK_ARMED_TIMEOUT) {
|
||||
if (SERIAL_LOGGING) Serial.println("[INFO] Arming timed out, disarming.");
|
||||
logEvent(LOG_LOCK_TIMEOUT);
|
||||
lockState = LOCK_OFF;
|
||||
LEDState = LED_ERROR;
|
||||
}
|
||||
break;
|
||||
case LOCK_ON_PRESSED:
|
||||
if (redButton()) {
|
||||
if (SERIAL_LOGGING) Serial.println("[ERROR] Off button pressed, aborting.");
|
||||
logEvent(LOG_LOCK_ERROR);
|
||||
lockState = LOCK_OFF;
|
||||
} else if (!greenButton()) {
|
||||
if (SERIAL_LOGGING) Serial.println("[INFO] Turning machine on.");
|
||||
logEvent(LOG_LOCK_ON);
|
||||
lockState = LOCK_ON;
|
||||
}
|
||||
break;
|
||||
case LOCK_ON:
|
||||
if (LEDState != LED_ERROR) LEDState = LED_ON;
|
||||
|
||||
relayOn();
|
||||
|
||||
if (redButton()) {
|
||||
if (SERIAL_LOGGING) Serial.println("[INFO] Off button pressed.");
|
||||
logEvent(LOG_LOCK_OFF);
|
||||
lockState = LOCK_OFF;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (SERIAL_LOGGING) Serial.println("[ERROR] Invalid lock state.");
|
||||
lockState = LOCK_OFF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user