using System;
using Microsoft.SPOT;

namespace CPF
{

    public static class SV
    {
        private static bool runPVPID = false;
        public static bool RunPVPID
        {
            get { return runPVPID; }
            set { runPVPID = value; }
        }
        
        private static bool surfaceOpsGo = false;
        public static bool SurfaceOpsGo
        {
            get { return surfaceOpsGo; }
            set { surfaceOpsGo = value; }
        }

        private static bool recoveryMode = true;
        public static bool RecoveryMode
        {
            get { return recoveryMode; }
            set { recoveryMode = value; }
        }

        private static int profileNum = 0;
        public static int ProfileNum
        {
            get { return profileNum; }
            set { profileNum = value; }
        }

        private static int maxProfiles = 1;
        public static int MaxProfiles
        {
            get { return maxProfiles; }
            set { maxProfiles = value; }
        }

        //TODO should pressure only live in the SBE and be get accessable?
        private static double pressure = double.NaN;
        public static double Pressure
        {
            get { return pressure; }
            set { pressure = value; }
        }

        private static DateTime pressureTimeStamp = new DateTime();
        public static DateTime PressureTimeStamp
        {
            get { return pressureTimeStamp; }
            set { pressureTimeStamp = value; }
        }

        private static int pressureTableNum = -1;
        public static int PressureTableNum
        {
            get { return pressureTableNum; }
            set { pressureTableNum = value; }
        }

        //flag to allow checkStuckPressure test to be performed
        private static bool checkStuckPressure = false;
        public static bool CheckStuckPressure
        {
            get { return checkStuckPressure; }
            set { checkStuckPressure = value; }
        }

        //state entry flag
        private static bool stateEntry = true;
        public static bool StateEntry
        {
            get { return stateEntry; }
            set { stateEntry = value; }
        }

        private static bool bellowsAtUpperLimit = false;
        public static bool BellowsAtUpperLimit
        {
            get { return bellowsAtUpperLimit; }
            set { bellowsAtUpperLimit = value; }
        }

        private static bool bellowsAtLowerLimit = false;
        public static bool BellowsAtLowerLimit
        {
            get { return bellowsAtLowerLimit; }
            set { bellowsAtLowerLimit = value; }
        }

        private static bool uploadEngrFile = false;
        public static bool UploadEngrFile
        {
            get { return uploadEngrFile; }
            set { uploadEngrFile = value; }
        }

        private static bool uploadLastEngrFile = false;
        public static bool UploadLastEngrFile
        {
            get { return uploadLastEngrFile; }
            set { uploadLastEngrFile = value; }
        }

        private static bool inCPMode = false;
        public static bool InCPMode
        {
            get { return inCPMode; }
            set { inCPMode = value; }
        }

        private static bool missionTimedOut = false;
        public static bool MissionTimedOut
        {
            get { return missionTimedOut; }
            set { missionTimedOut = value; }
        }

        private static TimeSpan missionTimeoutTS;
        public static TimeSpan MissionTimeoutTS
        {
            get { return missionTimeoutTS; }
            set { missionTimeoutTS = value; }
        }

        private static bool forceRecoveryMode;
        public static bool ForceRecoveryMode
        {
            get { return forceRecoveryMode; }
            set { forceRecoveryMode = value; }
        }
    }
}
