/*----------------------------------------------------------------------------
**
**	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;
}