// ******************************************************************************************
// **                                                                                       **
// **      RAYTHEON PROPRIETARY: THIS DOCUMENT CONTAINS DATA OR INFORMATION                 **
// **      PROPRIETARY TO RAYTHEON COMPANY AND IS RESTRICTED TO USE ONLY BY PERSONS         **
// **      AUTHORIZED BY RAYTHEON COMPANY IN WRITING TO USE IT.DISCLOSURE TO                **
// **      UNAUTHORIZED PERSONS WOULD LIKELY CAUSE SUBSTANTIAL COMPETITIVE HARM TO          **
// **      RAYTHEON COMPANY'S BUSINESS POSITION. NEITHER SAID DOCUMENT NOR ITS              **
// **      CONTENTS SHALL BE FURNISHED OR DISCLOSED TO OR COPIED OR USED BY PERSONS         **
// **      OUTSIDE RAYTHEON COMPANY WITHOUT THE EXPRESS WRITTEN APPROVAL OF RAYTHEON        **
// **      COMPANY.                                                                         **
// **                                                                                       **
// **      THIS PROPRIETARY NOTICE IS NOT APPLICABLE IF DELIVERED TO THE U.S.               **
// **      GOVERNMENT.                                                                      **
// **                                                                                       **
// **      UNPUBLISHED WORK - COPYRIGHT RAYTHEON COMPANY.                                   **
// **                                                                                       **
// **      WARNING: THIS DOCUMENT CONTAINS TECHNICAL DATA AND / OR TECHNOLOGY WHOSE         **
// **      EXPORT OR DISCLOSURE TO NON-U.S.PERSONS, WHEREVER LOCATED, IS RESTRICTED         **
// **      BY THE INTERNATIONAL TRAFFIC IN ARMS REGULATIONS (ITAR) (22 C.F.R.SECTION        **
// **      120-130) OR THE EXPORT ADMINISTRATION REGULATIONS(EAR) (15 C.F.R.SECTION         **
// **      730-774). THIS DOCUMENT CANNOT BE EXPORTED(E.G., PROVIDED TO A SUPPLIER          **
// **      OUTSIDE OF THE UNITED STATES) OR DISCLOSED TO A NON-U.S.PERSON, WHEREVER         **
// **      LOCATED, UNTIL A FINAL JURISDICTION AND CLASSIFICATION DETERMINATION HAS         **
// **      BEEN COMPLETED AND APPROVED BY RAYTHEON, AND ANY REQUIRED U.S.GOVERNMENT         **
// **      APPROVALS HAVE BEEN OBTAINED. VIOLATIONS ARE SUBJECT TO SEVERE CRIMINAL          **
// **      PENALTIES.                                                                       **
// **                                                                                       **
// **      CAPITAL EQUIPMENT/SOFTWARE: THIS TECHNICAL DATA WAS DEVELOPED OR ACQUIRED        **
// **      EXCLUSIVELY AT CONTRACTOR EXPENSE AND IS INTENDED FOR USE ON MULTIPLE            **
// **      PROJECTS/PROGRAMS.                                                               **
// **                                                                                       **
// *******************************************************************************************

using Raytheon.Communication;
using Raytheon.Units;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Raytheon.Instruments.NCDF
{
   public enum Names
   {
      ACTIVITY,
      APERTURE,
      AZ_LOCATION,
      B_B_CONTROLER,
      CHOPPER_FREQ,
      DATA_FOLDER,
      DATE,
      EL_LOCATION,
      FILENAME,
      F_P_A,
      INDICATOR_CODE,
      SITE_LOCATION,
      MEASURED_APERTURE_POSITION,
      MEASURED_AZ_POSITION,
      _B_B_TEMP,
      MEASURED_EL_POSITION,
      MEASURED_FILTER_POSITION,
      N_FRAMES,
      OPERATOR,
      POSITION,
      REMARKS,
      RADCAL_AUTOFILL_STATE,
      RADCAL_AUTOFILL_TIMETOFILL,
      RADCAL_BB_BIT,
      RADCAL_BB_CTRL_STATE,
      RADCAL_BB_HEATER,
      RADCAL_BB_RATE_O_CHANGE,
      RADCAL_BB_SETPOINT,
      RADCAL_BB_STABILITY_A,
      RADCAL_BB_STABILITY_B,
      RADCAL_C_VAC,
      RADCAL_CHOPPER_FREQ,
      RADCAL_CHOPPER_STABILITY,
      RADCAL_CHOPPER_STATE,
      RADCAL_GATE_VALVE,
      RADCAL_NIF_TEMP_TANK_BOTTOM,
      RADCAL_NIF_TEMP_TANK_TOP,
      RADCAL_PVAC_RVAC,
      RADCAL_PVAC_TVAC,
      RADCAL_S_VAC,
      VHF_GV_CHAMBER_VAC,
      VHF_GV_UUT_VAC,
      REGION,
      SCAN_MIRROR_X_POSITION,
      SCAN_MIRROR_Y_POSITION,
      SCAN_SPEED,
      SCAN_PATTERN,
      SCAN_RADIUS,
      SCRIPT_NAME,
      SET_POINT_AZ,
      SET_POINT_EL,
      TARGET_WHEEL_POSITION,
      TEST_POSITION_NO,
      TEST_PROCEDURE_DOC,
      TEST_PROCEDURE_DOC_REV,
      TEST_STEP,
      TEST_TYPE_CODE,
      TIME_RECORDED,
      VERSION,
      V_O_B_APERTURE,
      VOB_CAN_TEMP,
      CHOPPER_STATUS,
      VOB_FILTER_POS,
      VOB_GATE_VALVE_STATUS,
      VOB_LAMBDA,
      VOB_REGION,
      VOB_TARGET_REGION,
      CHAMBER_PRESSURE,
      VOB_CHOPPER_FREQ,
      VSS_INPUT_CHOPPER_FREQ,
      VSS_INPUT_CHOPPER_STATUS,
      VSS_MID_CHOPPER_FREQ,
      VSS_MID_CHOPPER_STATUS,
      X_LOCATION,
      X_SIZE,
      X_TARGET,
      Y_LOCATION,
      Y_SIZE,
      Y_TARGET,
      LAST_BAND_SEL,
      BAND_SEL,
      READ_SEQ_DEL,
      ROW_START,
      ROW_STOP,
      INTEGRATION_TIME,
      B1_DET_BIAS_OFFS,
      B1_DET_BIAS,
      B2_DET_BIAS,
      UC_GAIN,
      BGSEN,
      B1_RAMP,
      B2_RAMP,
      COL_AMP_GAIN,
      COL_AMP_IN_OFFS,
      COL_AMP_OUT_OFFS,
      OUT_BUF_SLEW,
      OUT_BUF_CAS,
      RESET_TIME,
      GLOBAL_TEST_ENABLE,
      UC_RAMP_TEST,
      SEEKER_SN,
      SEEKER_PN,
      GEU_PN,
      GEU_SN,
      SENSOR_SN,
      SENSOR_PN,
      IMU_SN,
      IMU_PN,
      IICCA_SN,
      IICCA_PN,
      IDA_SN,
      IDA_PN,
      CRYOSTAT_SN,
      CRYOSTAT_PN,
      ENVIRONMENT_ERROR,
      SET_LAST_BAND_SEL,
      SET_BAND_SEL,
      SET_READ_SEQ_DEL,
      SET_ROW_START,
      SET_ROW_STOP,
      SET_INTEG_TIME,
      SET_B1_DET_BIAS_OFFS,
      SET_B1_DET_BIAS,
      SET_B2_DET_BIAS,
      SET_UC_GAIN,
      SET_BGSEN,
      SET_B1_RAMP,
      SET_B2_RAMP,
      SET_COL_AMP_GAIN,
      SET_COL_AMP_IN_OFFS,
      SET_COL_AMP_OUT_OFFS,
      SET_OUT_BUF_SLEW,
      SET_OUT_BUF_CAS,
      SET_RESET_TIME,
      SET_GLOBAL_TEST_ENABLE,
      SET_UC_RAMP_TEST,
      BAND,
      FILE_TYPE,
      FRAME_RATE,
      INTEGRATION_TIME_BAND1,
      INTEGRATION_TIME_BAND2,
      LAKESHORE_SLOPE,
      LAKESHORE_INTERCEPT,
      LOCATION_ORIGIN,
      SENSOR_CONFIGURATION,
      SERIAL,
      VIDEO_TEST,
      X_START,
      Y_START,
      _V_DET_COM,
      VRAMP,
      IICCA_FIRM_VER,
      IDA_VOLTS,
      IDA_TEMP,
      V_P3_R4_A_S,
      V_N3_R4_A,
      V_P5_R3_A,
      BIAS_RESERVE,
      VP_DET_COM_B1,
      VP_E_S_D,
      VN_OUT,
      VP_OUT,
      VN_UC,
      VP_UC,
      VN_D,
      VP_D,
      VN_A,
      VP_A,
      BENCH,
      SEEKER_BUILD,
      SENSOR_BUILD,
      PROGRAM_NAME,
      TESTPOSITIONTYPE,
      TEST_TYPE_VARIANT,
      ENVIRONMENT_ERROR_NOTES,
      T_E_CHAMBER_I_D,
      T_E_G_U_T_S_I_D,
      T_E_C_T_S_I_D,
      T_E_SHAKER_I_D,
      T_E_THERMOTRON_I_D,
      T_E_CHAMBER_WINDOW_I_D,
      T_E_U_U_T_WINDOW_I_D,
      T_E_B_B_CONTROLLER_S_N,
      T_E_V_S_S_PYRO_DET,
      T_E_CHAMBER_SW_VERSION,
      T_E_CHAMBER_SW_BUILD,
      T_E_G_U_T_S_S_W_VERSION,
      T_E_G_U_T_S_S_W_BUILD,
      T_E_V_T_I_FIRMWARE_VERSION,
      T_E_V_T_I_FIRMWARE_BUILD,
      T_E_I_A_F_S_W_VERSION,
      T_E_I_A_F_S_W_BUILD,
      MONOCHROMETER_POSITION,
      B_B_E_S_TARGET,
      EMISSIVITY,
      CUTOFFWAVELENGTH,
      CUTONWAVELENGTH,
      TARGET_REGION,
      MEASURED_BLACK_BODY_TEMPERATURE,
      MEASURED_MONOCHROMETER_POSITION,
      V_O_B_CAN_TEMP,
      V_O_B_CHAMBER_PRESSURE,
      V_O_B_CHOPPER_STATUS,
      V_O_B_LAMBDA,
      L_S_P_S_GATE_VALVE_STATUS,
      SENSOR,
      VGATE,
      VOFFSET,
      EXTERNAL_A_D_C_V_DET_COM,
      INTEG_TIME,
      AUTOCOLLIMATOR_EL,
      AUTOCOLLIMATOR_AZ,
      B_B_E_S_TEMP,
      B_B_E_S_FILTER_WHEEL,
      VOB_AMP_AVG_R,
      VOB_AVG_X_VOLTAGE,
      VSS_LOCKIN_1_COUPLE,
      VSS_LOCKIN_1_GROUND,
      VSS_LOCKIN_1_RESERVE,
      VOB_AMP_SEN,
      VSS_LOCKIN_1_SLOPE,
      VOB_AMP_TIME_CONST,
      VOB_AMP2_AVG_R,
      VOB_AVG2_X_VOLTAGE,
      VSS_LOCKIN_2_COUPLE,
      VSS_LOCKIN_2_GROUND,
      VSS_LOCKIN_2_RESERVE,
      VOB_AMP2_SEN,
      VSS_LOCKIN_2_SLOPE,
      VOB_AMP2_TIME_CONST,
      SET_V_DET_COM,
      MONOCHROMETER_1_POSITION,
      MONOCHROMETER_2_POSITION,
      FILTER,
      FPA_SN,
      T_E_I_A_F_I_D,
      T_E_V_T_I_I_D,
      BUILDING,
      FOCUS_POSITION,
      F_C_D_START_TIME,
      F_C_D_FRAMECNT,
      F_C_D_LINECUT_TIME,
      F_C_D_LINECUT_FRAMECNT,
      C_O_L,
      SOAK_TEMPERATURE,
      SCAN_RATE,
      ORIENTATION,
      GALILC_FOCUS_POSITION,
      GALILC_ABS_FOCUS_POSITION,
      GALILC_ENCODER_FOCUS_POSITION,
      NUM_NAMES
   };

   public enum AttrPosition
   {
      GLOBAL,
      LATEST_VID,
      BOTH
   };

   public enum DataType
   {
      STRING,
      INT,
      FLOAT
   };

   public class NetCdfValue
   {
      public NetCdfValue(string value, string name, bool set, AttrPosition videoId = AttrPosition.GLOBAL, DataType type = DataType.STRING)
      {
         value_ = value;
         name_ = name;
         set_ = set;
         videoId_ = videoId;
         type_ = type;
      }

      public string value_ { get; set; }
      public string name_ { get; set; }
      public bool set_ { get; set; }
      public DataType type_ { get; set; }
      public AttrPosition videoId_ { get; set; }
   }
}
