////////////////////////////////////////////////////////////////////
//
// PURPOSE: List of vehicle parameters that are shared across several
//          modules, or used in core vehicle code.
//
// NOTES:   All values (except "strings") must be followed by
//          a unit abbreviation (or one of the unit-like
//          abbreviations: n/a, bool, enum, count). 
//
////////////////////////////////////////////////////////////////////

   Vehicle.name            = "Tethys";
   Vehicle.id              = 0 enum;
   Vehicle.kmlColor        = "ff0055ff"; // 4 hex bytes indicating alpha, blue, green, and red
                                       // In this case, orange.
   Vehicle.argoPlatform    = "000000";
   Vehicle.argoProgram     = "0000";

   Vehicle.checkMTQueue    = 1 bool;  // Tells the vehicle whether to explicitly check for MT SBD messages in the queue. Will only check immediately following a GPS fix
   Vehicle.sendDataToShore = 1 bool;  // If true, telemeter data to shore

//   
// Data and Load Controller Settings
// 
// ("NAME" should match the name specified in component interface header)
//
// NAME-card: 
//     Load Controller device, if any -- something like /dev/load<A/B><number>
// NAME-uart:  
//     Uart device, if any -- something like /dev/ttyS#, ttyTX# or tty<A/B># for the MAX3100 SPI uarts
// NAME-ad: 
//     A/D device, if any -- something like /sys/class/hwmon/hwmon0/device/? 
// NAME-baud:
//    Baud rate for uart
// NAME-address: 
//    Address for RS-485 buses  
// NAME-vref: 
//    VRef for for A/D devices  
//     

   AHRS_3DMGX3.loadControl  = "/dev/loadB6";
   AHRS_3DMGX3.uart         = "/dev/ttyB6";
   AHRS_3DMGX3.baud         = 115200 bps;

   AHRS_sp3003D.loadControl = "/dev/loadB7";
   AHRS_sp3003D.uart        = "/dev/ttyB7";  // "/dev/ttyS1";
   AHRS_sp3003D.baud        = 38400 bps;

   AHRS_M2.loadControl      = "/dev/loadC7";
   AHRS_M2.uart             = "/dev/ttyC7";
   AHRS_M2.baud             = 115200 bps;

   Aanderaa_O2.loadControl  = "/dev/loadB2";
   Aanderaa_O2.uart         = "/dev/ttyB2";
   Aanderaa_O2.baud         = 9600 bps;

   AcousticModem_Benthos_ATM900.loadControl = "/dev/loadB1";
   AcousticModem_Benthos_ATM900.uart        = "/dev/ttyB1";
   AcousticModem_Benthos_ATM900.baud        = 9600 bps;
   
   BackSeatDriver.loadControl = "/dev/loadC4";
   BackSeatDriver.uart        = "/dev/ttyC4";
   BackSeatDriver.baud        = 115200 bps;
   
   BPC1A.uart = "/dev/ttyTX0";
   BPC1A.baud = 19200 bps;

   BPC1B.uart = "/dev/ttyTX2"
   BPC1B.baud = 19200 bps;

   Batt_Ocean_ServerA.uart = "/dev/ttyTX0";
   Batt_Ocean_ServerA.baud = 19200 bps;

   Batt_Ocean_ServerB.uart = "/dev/ttyTX2";
   Batt_Ocean_ServerB.baud = 19200 bps;

   BuoyancyServo.loadControl = "/dev/loadA4";
   BuoyancyServo.uart        = "/dev/ttyA4";
   BuoyancyServo.baud        = 9600 bps;

   CANONSampler.loadControl = "/dev/loadB6";
   CANONSampler.uart        = "/dev/ttyB6";
   CANONSampler.baud        = 19200 bps;

   // MainGroundfault uses Motherboard SPI A/D 0.
   CBITMainGroundfault.ad        = "/dev/mcp3551-0";
   CBITMainGroundfault.adRes     = 22 bit;
   CBITMainGroundfault.adTimeout = 125 ms;
   CBITMainGroundfault.adVref    = 10 V;

   // Water Detection Circuit uses onboad A/D chan 0-2. 
   // Bow
   CBITWaterAlarmBow.ad     = "/dev/adlpc32xx_0";
   CBITWaterAlarmBow.adRes  = 10 bit;
   CBITWaterAlarmBow.adVref = 3.15 V;

   // Stern
   CBITWaterAlarmStern.ad     = "/dev/adlpc32xx_1";
   CBITWaterAlarmStern.adRes  = 10 bit;
   CBITWaterAlarmStern.adVref = 3.15 V;

   // Aux
   CBITWaterAlarmAux.ad     = "/dev/adlpc32xx_2";
   CBITWaterAlarmAux.adRes  = 10 bit;
   CBITWaterAlarmAux.adVref = 3.15 V;
   // Water Detection
      
   CTD_NeilBrown.loadControl = "/dev/loadC4";
   CTD_NeilBrown.uart        = "/dev/ttyC4";
   CTD_NeilBrown.baud        = 9600 bps;

   CTD_Seabird.loadControl   = "/dev/loadC6";
   CTD_Seabird.uart          = "/dev/ttyC6";
   CTD_Seabird.baud          = 9600 bps;

   CTD_SeabirdLCM.loadControl    = "/dev/loadC6";
   CTD_SeabirdLCM.uart           = "/dev/ttyC6";
   CTD_SeabirdLCM.baud           = 9600 bps;
   CTD_SeabirdLCM.lcmApplication = "nohup ./lrauv-framework/onboard/bin/gpctd -ldir /mnt/mmc/LRAUV/Logs/latest/ -dev";

   DAT.loadControl = "/dev/loadB1";
   DAT.uart        = "/dev/ttyB1";
   DAT.baud        = 9600 bps;

   DDM.loadControl = "/dev/loadA6";
   DDM.uart = "/dev/ttyA6";
   DDM.baud = 115200 bps;

   Depth_Keller.loadControl = "/dev/loadA0";
   Depth_Keller.ad          = "/dev/mcp3553A0";
   Depth_Keller.adRes       = 21 bit;
   Depth_Keller.adTimeout   = 125 ms;
   Depth_Keller.adVref      = 2.5 V;

   DVL_micro.loadControl = "/dev/loadB5";
   DVL_micro.uart        = "/dev/ttyB5";
   DVL_micro.baud        = 115200 bps;
   
   ElevatorServo.loadControl = "/dev/loadA6";
   ElevatorServo.uart        = "/dev/ttyA6";
   ElevatorServo.baud        = 9600 bps;

   ESPComponent.loadControl    = "/dev/loadA6";
   ESPComponent.loadControl2   = "/dev/loadA7";
   ESPComponent.uart           = "/dev/ttyTX1";
   ESPComponent.consoleUart    = "/dev/ttyA6";
   ESPComponent.baud           = 115200 bps;

   ISUS.loadControl = "/dev/loadB1";
   ISUS.uart        = "/dev/ttyB1";
   ISUS.baud        = 38400 bps;

   MassServo.loadControl = "/dev/loadA3";
   MassServo.uart        = "/dev/ttyA3"
   MassServo.baud        = 9600 bps; 
   
   NAL9602.loadControl = "/dev/loadA1";
   NAL9602.uart        = "/dev/ttyS2";
   NAL9602.baud        = 19200 bps;

   OnboardHumidity.i2c     = "/dev/i2c-0";
   OnboardHumidity.i2cAddr = 39 count; // 0x27

   OnboardPressure.i2c     = "/dev/i2c-0";
   OnboardPressure.i2cAddr = 96 count; // 0x60

   // Battery current uses Motherboard SPI A/D 1.
//   OnboardSecondaryBatteryCurrent.ad     = "/dev/ad7888_1";
//   OnboardSecondaryBatteryCurrent.adRes  = 12 bit;
//   OnboardSecondaryBatteryCurrent.adVref = 3.15 V;

   // Battery current uses Motherboard SPI A/D 2.
//   OnboardEmergencyBatteryCurrent.ad     = "/dev/ad7888_2";
//   OnboardEmergencyBatteryCurrent.adRes  = 12 bit;
//   OnboardEmergencyBatteryCurrent.adVref = 3.15 V;

   // Motherboard 5V current uses Motherboard SPI A/D 3.
//   OnboardMotherboard5VCurrent.ad     = "/dev/ad7888_3";
//   OnboardMotherboard5VCurrent.adRes  = 12 bit;
//   OnboardMotherboard5VCurrent.adVref = 3.15 V;

   // Motherboard 3.15V current uses Motherboard SPI A/D 4.
//   OnboardMotherboard3_15VCurrent.ad     = "/dev/ad7888_4";
//   OnboardMotherboard3_15VCurrent.adRes  = 12 bit;
//   OnboardMotherboard3_15VCurrent.adVref = 3.15 V;

   // Motherboard 3.3V current uses Motherboard SPI A/D 5.
//   OnboardMotherboard3_3VCurrent.ad     = "/dev/ad7888_5";
//   OnboardMotherboard3_3VCurrent.adRes  = 12 bit;
//   OnboardMotherboard3_3VCurrent.adVref = 3.15 V;

   // Motherboard 1.8V current uses Motherboard SPI A/D 6.
//   OnboardMotherboard1_8VCurrent.ad     = "/dev/ad7888_6";
//   OnboardMotherboard1_8VCurrent.adVref = 3.15 V;
//   OnboardMotherboard1_8VCurrent.adRes  = 12 bit;   

   PAR_Licor.loadControl = "/dev/loadB0";
   PAR_Licor.ad          = "/dev/mcp3553B0";
   PAR_Licor.adRes       = 21 bit;
   PAR_Licor.adTimeout   = 125 ms;
   PAR_Licor.adVref      = 2.5 V;

   PNI_TCM.loadControl = "/dev/loadB7";
   PNI_TCM.uart        = "/dev/ttyB7";
   PNI_TCM.baud        = 38400 bps;

   PowerOnly.loadControl = "/dev/loadC1";

   Radio_Surface.loadControl = "/dev/loadA2";
   // surface radio is only a "dumb" interface to some sort of surface radio that
   // is self contained. No uart is supported. 

   RDI_Pathfinder.loadControl = "/dev/loadB4"; 
   RDI_Pathfinder.uart        = "/dev/ttyB4";
   RDI_Pathfinder.baud        = 115200 bps;

   rhodamine.loadControl = "/dev/loadB0";
   rhodamine.ad          = "/dev/mcp3553B0";
   rhodamine.adRes       = 21 bit;
   rhodamine.adTimeout   = 125 ms;
   rhodamine.adVref      = 2.5 V;

   Rowe_600.loadControl = "/dev/loadB5";
   Rowe_600.uart        = "/dev/ttyB5";
   Rowe_600.baud        = 115200 bps;

   Rowe_600LCM.loadControl      = "/dev/loadB4";
   Rowe_600LCM.uart             = "/dev/ttyB4";
   Rowe_600LCM.baud             = 38400 bps;
   Rowe_600LCM.lcmApplication   = "nohup ./auv-shared/bin/roweadcp -ldir /mnt/mmc/LRAUV/Logs/latest/ -dev";
   Rowe_600LCM.lcmChannelBottom = "Rowe_600LCM.adcp_dvl.bottom_track";
   Rowe_600LCM.lcmChannelDVL    = "rowe_dvl.rowe";
   Rowe_600LCM.lcmChannelWater  = "Rowe_600LCM.adcp_dvl.vehicle_water_velocity";
   Rowe_600LCM.maxSpeed         = 1.75 m/s;

   RudderServo.loadControl = "/dev/loadA5";
   RudderServo.uart        = "/dev/ttyA5"
   RudderServo.baud        = 9600 bps;

   SCPI.loadControl = "/dev/loadB2";
   SCPI.uart        = "/dev/ttyB2";
   SCPI.baud        = 9600 bps;

   ThrusterServo.loadControl = "/dev/loadA7";
   ThrusterServo.uart        = "/dev/ttyA7"
   ThrusterServo.baud        = 9600 bps;

   Turbulence_NPS.loadControl = "/dev/loadB2";
   Turbulence_NPS.uart        = "/dev/ttyS1"; // Was losing bytes on "/dev/ttyB0";
   Turbulence_NPS.baud        = 115200 bps;

   VemcoVR2C.loadControl = "/dev/loadB3";
   VemcoVR2C.uart        = "/dev/ttyTX1";
   VemcoVR2C.baud        = 9600 bps;

   WetLabsBB2FL.loadControl = "/dev/loadB3";
   WetLabsBB2FL.uart        = "/dev/ttyB3";
   WetLabsBB2FL.baud        = 19200 bps;

   WetLabsSeaOWL_UV_A.loadControl = "/dev/loadB3";
   WetLabsSeaOWL_UV_A.uart        = "/dev/ttyB3";
   WetLabsSeaOWL_UV_A.baud        = 19200 bps;

   WetLabsUBAT.loadControl      = "/dev/loadC1";
   WetLabsUBAT.uart             = "/dev/ttyC1";
   WetLabsUBAT.baud             = 19200 bps;

   // Solder pad V45 uses Motherboard SPI A/D 7.
//   ElevatorCompensatorLow.ad     = "/dev/ad7888_7";
//   ElevatorCompensatorLow.adVref = 3.15 V;
//   ElevatorCompensatorLow.adRes  = 12 bit;