using System;
using Microsoft.SPOT;

namespace miniCPF
{
    class configFile
    {
        //State timeout values
        public static int initializeTimeout = 1000;
        public static int preMissionDelayTimeout = 2000;
        public static int surfaceOpsTimeout = 1000000;
        public static int ABRetractTimeout = 60000;
        public static int autoballastInitBellowsTimeout = 60000;
        public static int descendTimeout = 100000;
        public static int descendParkTimeout = 1000;
        public static int anchorTimeout = 5000;
        public static int deAnchorTimeout = 5000;
        public static int ascendTimeout = 30000;
        public static int ascendParkTimeout = 1000;
        public static int surfaceTimeout = 3000;
        
        //Buoyancy control holdVelocity constants
        public const double KVel = 200.0,                  //Constant for P term of PID
                            TiVel = 50000.0,               // Time constant for I term of PID (in denominator, bigger values less I term in output
                            TdVel = 1.0,                   // Time constant for D term of PID
                            TfVel = 2.0,                   // Derivative filter time constant
                            TtVel = 100.0,                 // Anti-windup time constant
                            BVel = 1.0,                    // Setpoint weight
                            uLowVel = -3000.0 / 60.0,      // minimum possible output (RPM)
                            uHighVel = 3000.0 / 60.0,      // maximum possible output (RPM)
                            hVel = 0.5;                    // Sample period (seconds)

        //Pump motor encoder counts per revolution
        public const double COUNTSperREV = 500.0 * 4.0;      //500 Counts per Revolution *4 for quadrature interpolation

        public const double batteryBusThreshold = 28.0;

        public const double ABInitBelowsPosition = 64.0;
        public const int ABInitBelowsJV = 20000;
        public const int ABRetractJV = 5000;
        public const double ABVelocityThreshold = -0.05;

        public static int SBE41SamplePeriod = 2000;

        public static int aducEnqueueDecimator = 15;

        public static double aducCH0Scale = (392000.0 + 10000.0) / 10000.0;
        public static double aducCH0Offset = 0.0;

        public static double surfacePressure = 0.1;


    }
}
