/*---------------------------------------------------------------------------- ** ** Shutdown.c ** ** Controls system shutdown. ** **--------------------------------------------------------------------------*/ #include "Onboard.h" #include "Hardware.h" #include "Weapons.h" #define RADIO_RSSI_THRESHOLD 0x80 // Half level. #define RSSI_LOST_SIGNAL_COUNT 100 // 1 second of lost signal /*---------------------------------------------------------------------------- // // EmergencyShutdown // // Shuts down the system by releasing the power solenoid. This is irreversible // without external manual reset. // // Modification Record: // 25-Jul-00 Paul Hills First version -----------------------------------------------------------------------------*/ void EmergencyShutdown(void) { ActivateSolenoid(PNEUMATICS_PURGE); DISABLE_SPEAR_INTS; POWER_SOLENOID = 0; exit(); } /*---------------------------------------------------------------------------- // // CheckRadioLevel // // Checks the level of the RSSI from the radio IC. // // Modification Record: // 25-Jul-00 Paul Hills First version -----------------------------------------------------------------------------*/ void CheckRadioLevel(void) { static int SignalLostCounter = 0; if (RADIO_RSSI < RADIO_RSSI_THRESHOLD) { if (++SignalLostCounter == RSSI_LOST_SIGNAL_COUNT) EmergencyShutdown(); } else SignalLostCounter = 0; }