// **********************************************************************************************************
//    LSPSMotion.cs
//    1/8/2024
//    NGI - Next Generation Interceptor
//    
//    Contract No. HQ0856-21-C-0003/1022000209
//    
//    THIS DOCUMENT DOES NOT CONTAIN TECHNOLOGY OR TECHNICAL DATA CONTROLLED UNDER EITHER THE U.S. 
//    INTERNATIONAL TRAFFIC IN ARMS REGULATIONS OR THE U.S. EXPORT ADMINISTRATION REGULATIONS.
//    
//    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.
//    
//    UNPUBLISHED WORK - COPYRIGHT RAYTHEON COMPANY.
//    
//    DESTRUCTION NOTICE: FOR CLASSIFIED DOCUMENTS FOLLOW THE PROCEDURES IN DOD 5220.22-M, 
//    NATIONAL INDUSTRIAL SECURITY PROGRAM OPERATING MANUAL, FEBRUARY 2006, 
//    INCORPORATING CHANGE 1, MARCH 28, 2013, CHAPTER 5, SECTION 7, OR DODM 5200.01-VOLUME 3, 
//    DOD INFORMATION SECURITY PROGRAM: PROTECTION OF CLASSIFIED INFORMATION, ENCLOSURE 3, 
//    SECTION 17. FOR CONTROLLED UNCLASSIFIED INFORMATION FOLLOW THE PROCEDURES IN DODM 5200.01-VOLUME 4, 
//    INFORMATION SECURITY PROGRAM: CONTROLLED UNCLASSIFIED INFORMATION.
//    
//    CONTROLLED BY: MISSILE DEFENSE AGENCY
//    CONTROLLED BY: GROUND-BASED MIDCOURSE DEFENSE PROGRAM OFFICE
//    CUI CATEGORY: CTI 
//    DISTRIBUTION/DISSEMINATION CONTROL: F 
//    POC: Alex Kravchenko (1118268)
// **********************************************************************************************************
using NLog;
using Raytheon.Common;
using System;
using System.Collections.Generic;
using System.IO;

namespace Raytheon.Instruments
{
   /// <summary>
   /// NCDF Data instrument
   /// </summary>
   public class NetCdfData : INetCdfData
   {
      /// <summary>
      /// NLog logger
      /// </summary>
      private static ILogger logger_;

      /// <summary>
      /// Raytheon configuration
      /// </summary>
      private readonly IConfigurationManager _configurationManager;

      private readonly IConfiguration _configuration;

      public string DetailedStatus => throw new NotImplementedException();

      public bool DisplayEnabled { get => false; set => throw new NotImplementedException(); }

      public bool FrontPanelEnabled { get => false; set => throw new NotImplementedException(); }

      public InstrumentMetadata Info => throw new NotImplementedException();

      public string Name { get; set; }

      public SelfTestResult SelfTestResult => throw new NotImplementedException();

      public State Status => throw new NotImplementedException();

      public bool ClearErrors() => false;

      public SelfTestResult PerformSelfTest() => throw new NotImplementedException();

      /// <summary>
      /// Initialize the device
      /// </summary>
      public void Initialize()
      {
         logger_.Trace($"Entering {this.GetType().Name}::{System.Reflection.MethodBase.GetCurrentMethod().Name}() method...");
      }

      /// <summary>
      /// Shuts down the device
      /// </summary>
      public void Shutdown()
      {
         logger_.Trace($"Entering {this.GetType().Name}::{System.Reflection.MethodBase.GetCurrentMethod().Name}() method...");
      }

      public void Reset()
      {
         logger_.Trace($"Entering {this.GetType().Name}::{System.Reflection.MethodBase.GetCurrentMethod().Name}() method...");
      }

      /// <summary>
      /// LSPS factory constructor
      /// </summary>
      /// <param name="deviceName"></param>
      /// <param name="configurationManager"></param>
      public NetCdfData(string deviceName, IConfigurationManager configurationManager, ILogger logger)
      {
         Name = deviceName;
         logger_ = logger;

         _configurationManager = configurationManager;
         _configuration = _configurationManager.GetConfiguration(Name);
      }

      public void ProcessNcdfData(string prefix, string suffix, string testDataPath)
      {
         AddDefaultNetCdfData();

         string attributeFilename = prefix + "_" + DateTime.Now.ToString("yyyMMdd_HHmmss") + "_" + suffix + ".txt";

         if (testDataPath != null)
         {
            string attributeFilePath = Path.Combine(testDataPath, attributeFilename);

            WriteNcdfDataLog(attributeFilePath);
         }
      }

      public void WriteNcdfDataLog(string attributeFilePath)
      {
         const char separator = '\t';
         using (var fileStream = new FileStream(attributeFilePath, FileMode.Create, FileAccess.ReadWrite))
         using (var streamWriter = new StreamWriter(fileStream))
         {
            foreach (KeyValuePair<NCDF.Names, NCDF.NetCdfValue> entry in valueMap_)
            {
               if (entry.Value.set_)
               {
                  streamWriter.WriteLine(entry.Value.name_ + separator + entry.Value.videoId_.ToString() + separator + entry.Value.value_ + separator + "NONE" + separator + entry.Value.type_);

               }
            }
         }
      }

      private void AddDefaultNetCdfData()
      {
         SetValue(NCDF.Names.DATA_FOLDER, "---", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SITE_LOCATION, "---", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.BENCH, "---", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TESTPOSITIONTYPE, "---", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.BUILDING, "809", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.C_O_L, "UNKNOWN", NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.OPERATOR, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.T_E_B_B_CONTROLLER_S_N, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TEST_PROCEDURE_DOC_REV, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TEST_PROCEDURE_DOC, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TEST_TYPE_CODE, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TEST_TYPE_VARIANT, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.REMARKS, "UNKNOWN", NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.SEEKER_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SEEKER_PN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.GEU_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.GEU_PN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SENSOR_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SENSOR_PN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.IMU_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.IMU_PN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.IICCA_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.IICCA_PN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.IDA_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.IDA_PN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.CRYOSTAT_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.CRYOSTAT_PN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SEEKER_BUILD, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.FPA_SN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.DATE, DateTime.Now.ToString("yyyMMdd"), NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TIME_RECORDED, DateTime.Now.ToString("HHmmss"), NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.X_START, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.Y_START, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.X_SIZE, 512, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.Y_SIZE, 512, NCDF.AttrPosition.GLOBAL);
      }

      private void AddVobVideoData()
      {
         SetValue(NCDF.Names.CHOPPER_STATUS, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.V_O_B_CHOPPER_STATUS, 0, NCDF.AttrPosition.GLOBAL);

         // target wheel pos
         SetValue(NCDF.Names.MEASURED_APERTURE_POSITION, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.APERTURE, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.V_O_B_APERTURE, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TARGET_WHEEL_POSITION, 0, NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.MEASURED_FILTER_POSITION, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.VOB_FILTER_POS, 0, NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.VOB_GATE_VALVE_STATUS, 0, NCDF.AttrPosition.GLOBAL);

         // az beam pos
         SetValue(NCDF.Names.MEASURED_AZ_POSITION, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.AZ_LOCATION, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SCAN_MIRROR_X_POSITION, 0.0, NCDF.AttrPosition.GLOBAL);

         // el beam pos
         SetValue(NCDF.Names.MEASURED_EL_POSITION, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.EL_LOCATION, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SCAN_MIRROR_Y_POSITION, 0.0, NCDF.AttrPosition.GLOBAL);

         //vacuum pressure
         SetValue(NCDF.Names.CHAMBER_PRESSURE, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.V_O_B_CHAMBER_PRESSURE, 0.0, NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.FOCUS_POSITION, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.GALILC_FOCUS_POSITION, 0.0, NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.GALILC_ABS_FOCUS_POSITION, 0.0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.GALILC_ENCODER_FOCUS_POSITION, 0, NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.B_B_E_S_TARGET, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.EMISSIVITY, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.CUTOFFWAVELENGTH, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.CUTONWAVELENGTH, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.REGION, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.TARGET_REGION, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SCAN_PATTERN, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.SCAN_RADIUS, "UNKNOWN", NCDF.AttrPosition.GLOBAL);

         if (!IsValueSet(NCDF.Names.MONOCHROMETER_POSITION))
         {
            SetValue(NCDF.Names.MONOCHROMETER_POSITION, 0, NCDF.AttrPosition.GLOBAL);
         }

         SetValue(NCDF.Names.MEASURED_MONOCHROMETER_POSITION, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.MEASURED_BLACK_BODY_TEMPERATURE, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.V_O_B_CAN_TEMP, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.V_O_B_LAMBDA, 0, NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.VOB_REGION, 0, NCDF.AttrPosition.GLOBAL);

         SetValue(NCDF.Names.VOB_TARGET_REGION, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
         SetValue(NCDF.Names.VOB_GATE_VALVE_STATUS, "UNKNOWN", NCDF.AttrPosition.GLOBAL);
      }

      public void SetValue<T>(NCDF.Names name, T value, NCDF.AttrPosition videoId)
      {
         if (typeof(T) == typeof(double))
         {
            valueMap_[name] = new NCDF.NetCdfValue(value.ToString(), valueMap_[name].name_, true, videoId, NCDF.DataType.FLOAT);
         }
         else if (typeof(T) == typeof(int))
         {
            valueMap_[name] = new NCDF.NetCdfValue(value.ToString(), valueMap_[name].name_, true, videoId, NCDF.DataType.INT);
         }
         else if (typeof(T) == typeof(string))
         {
            valueMap_[name] = new NCDF.NetCdfValue((string)(object)value, valueMap_[name].name_, true, videoId, NCDF.DataType.STRING);
         }
      }

      public void GetValue(NCDF.Names name, ref string value, ref NCDF.AttrPosition videoId, ref NCDF.DataType type)
      {
         value = valueMap_[name].value_;
         videoId = valueMap_[name].videoId_;
         type = valueMap_[name].type_;
      }

      public bool IsValueSet(NCDF.Names name)
      {
         return valueMap_[name].set_;
      }

      public Dictionary<NCDF.Names, NCDF.NetCdfValue> valueMap_ = new Dictionary<NCDF.Names, NCDF.NetCdfValue>
      {
         {NCDF.Names.ACTIVITY, new NCDF.NetCdfValue("Not Used",  "Activity", false) },
         {NCDF.Names.APERTURE, new NCDF.NetCdfValue("Not Used",  "Aperture", false) },
         {NCDF.Names.AZ_LOCATION, new NCDF.NetCdfValue("Not Used",  "Az_Location", false) },
         {NCDF.Names.B_B_CONTROLER, new NCDF.NetCdfValue("Not Used",  "BB_Controler", false) },
         {NCDF.Names.CHOPPER_FREQ, new NCDF.NetCdfValue("Not Used",  "Chopper_Freq", false) },
         {NCDF.Names.DATA_FOLDER, new NCDF.NetCdfValue("Not Used",  "Data_Folder", false) },
         {NCDF.Names.DATE, new NCDF.NetCdfValue("Not Used",  "Date", false) },
         {NCDF.Names.EL_LOCATION, new NCDF.NetCdfValue("Not Used",  "El_Location", false) },
         {NCDF.Names.FILENAME, new NCDF.NetCdfValue("Not Used",  "Filename", false) },
         {NCDF.Names.F_P_A, new NCDF.NetCdfValue("Not Used",  "F_p_a", false) },
         {NCDF.Names.INDICATOR_CODE, new NCDF.NetCdfValue("Not Used",  "Indicator_Code", false) },
         {NCDF.Names.SITE_LOCATION, new NCDF.NetCdfValue("Not Used",  "Site_Location", false) },
         {NCDF.Names.MEASURED_APERTURE_POSITION, new NCDF.NetCdfValue("Not Used",  "Measured_Aperture_Position", false) },
         {NCDF.Names.MEASURED_AZ_POSITION, new NCDF.NetCdfValue("Not Used",  "Measured_Az_Position", false) },
         {NCDF.Names._B_B_TEMP, new NCDF.NetCdfValue("Not Used",  "BBTemp", false) },
         {NCDF.Names.MEASURED_EL_POSITION, new NCDF.NetCdfValue("Not Used",  "Measured_El_Position", false) },
         {NCDF.Names.MEASURED_FILTER_POSITION, new NCDF.NetCdfValue("Not Used",  "Measured_Filter_Position", false) },
         {NCDF.Names.N_FRAMES, new NCDF.NetCdfValue("Not Used",  "N_Frames", false) },
         {NCDF.Names.OPERATOR, new NCDF.NetCdfValue("Not Used",  "Operator", false) },
         {NCDF.Names.POSITION, new NCDF.NetCdfValue("Not Used",  "Position", false) },
         {NCDF.Names.REMARKS, new NCDF.NetCdfValue("Not Used",  "Remarks", false) },
         {NCDF.Names.RADCAL_AUTOFILL_STATE, new NCDF.NetCdfValue("Not Used",  "Radcal_Autofill_State", false) },
         {NCDF.Names.RADCAL_AUTOFILL_TIMETOFILL, new NCDF.NetCdfValue("Not Used",  "Radcal_Autofill_Timetofill", false) },
         {NCDF.Names.RADCAL_BB_BIT, new NCDF.NetCdfValue("Not Used",  "Radcal_Bb_Bit", false) },
         {NCDF.Names.RADCAL_BB_CTRL_STATE, new NCDF.NetCdfValue("Not Used",  "Radcal_Bb_Ctrl_State", false) },
         {NCDF.Names.RADCAL_BB_HEATER, new NCDF.NetCdfValue("Not Used",  "Radcal_Bb_Heater", false) },
         {NCDF.Names.RADCAL_BB_RATE_O_CHANGE, new NCDF.NetCdfValue("Not Used",  "Radcal_Bb_Rate_O_Change", false) },
         {NCDF.Names.RADCAL_BB_SETPOINT, new NCDF.NetCdfValue("Not Used",  "Radcal_Bb_Setpoint", false) },
         {NCDF.Names.RADCAL_BB_STABILITY_A, new NCDF.NetCdfValue("Not Used",  "Radcal_Bb_Stability_A", false) },
         {NCDF.Names.RADCAL_BB_STABILITY_B, new NCDF.NetCdfValue("Not Used",  "Radcal_Bb_Stability_B", false) },
         {NCDF.Names.RADCAL_C_VAC, new NCDF.NetCdfValue("Not Used",  "Radcal_C_Vac", false) },
         {NCDF.Names.RADCAL_CHOPPER_FREQ, new NCDF.NetCdfValue("Not Used",  "Radcal_Chopper_Freq", false) },
         {NCDF.Names.RADCAL_CHOPPER_STABILITY, new NCDF.NetCdfValue("Not Used",  "Radcal_Chopper_Stability", false) },
         {NCDF.Names.RADCAL_CHOPPER_STATE, new NCDF.NetCdfValue("Not Used",  "Radcal_Chopper_State", false) },
         {NCDF.Names.RADCAL_GATE_VALVE, new NCDF.NetCdfValue("Not Used",  "Radcal_Gate_Valve", false) },
         {NCDF.Names.RADCAL_NIF_TEMP_TANK_BOTTOM, new NCDF.NetCdfValue("Not Used",  "Radcal_Nif_Temp_Tank_Bottom", false) },
         {NCDF.Names.RADCAL_NIF_TEMP_TANK_TOP, new NCDF.NetCdfValue("Not Used",  "Radcal_Nif_Temp_Tank_Top", false) },
         {NCDF.Names.RADCAL_PVAC_RVAC, new NCDF.NetCdfValue("Not Used",  "Radcal_Pvac_Rvac", false) },
         {NCDF.Names.RADCAL_PVAC_TVAC, new NCDF.NetCdfValue("Not Used",  "Radcal_Pvac_Tvac", false) },
         {NCDF.Names.RADCAL_S_VAC, new NCDF.NetCdfValue("Not Used",  "Radcal_S_Vac", false) },
         {NCDF.Names.VHF_GV_CHAMBER_VAC, new NCDF.NetCdfValue("Not Used",  "Vhf_Gv_Chamber_Vac", false) },
         {NCDF.Names.VHF_GV_UUT_VAC, new NCDF.NetCdfValue("Not Used",  "Vhf_Gv_Uut_Vac", false) },
         {NCDF.Names.REGION, new NCDF.NetCdfValue("Not Used",  "Region", false) },
         {NCDF.Names.SCAN_MIRROR_X_POSITION, new NCDF.NetCdfValue("Not Used",  "Scan_mirror_x_position", false) },
         {NCDF.Names.SCAN_MIRROR_Y_POSITION, new NCDF.NetCdfValue("Not Used",  "Scan_mirror_y_position", false) },
         {NCDF.Names.SCAN_SPEED, new NCDF.NetCdfValue("Not Used",  "Scan_Speed", false) },
         {NCDF.Names.SCAN_PATTERN, new NCDF.NetCdfValue("Not Used",  "Scan_Pattern", false) },
         {NCDF.Names.SCAN_RADIUS, new NCDF.NetCdfValue("Not Used",  "Scan_Radius", false) },
         {NCDF.Names.SCRIPT_NAME, new NCDF.NetCdfValue("Not Used",  "Script_Name", false) },
         {NCDF.Names.SET_POINT_AZ, new NCDF.NetCdfValue("Not Used",  "Set_Point_Az", false) },
         {NCDF.Names.SET_POINT_EL, new NCDF.NetCdfValue("Not Used",  "Set_Point_El", false) },
         {NCDF.Names.TARGET_WHEEL_POSITION, new NCDF.NetCdfValue("Not Used",  "Target_Wheel_Position", false) },
         {NCDF.Names.TEST_POSITION_NO, new NCDF.NetCdfValue("Not Used",  "TestPositionNo", false) },
         {NCDF.Names.TEST_PROCEDURE_DOC, new NCDF.NetCdfValue("Not Used",  "TestProcedureDoc", false) },
         {NCDF.Names.TEST_PROCEDURE_DOC_REV, new NCDF.NetCdfValue("Not Used",  "TestProcedureDocRev", false) },
         {NCDF.Names.TEST_STEP, new NCDF.NetCdfValue("Not Used",  "Test_Step", false) },
         {NCDF.Names.TEST_TYPE_CODE, new NCDF.NetCdfValue("Not Used",  "TestTypeCode", false) },
         {NCDF.Names.TIME_RECORDED, new NCDF.NetCdfValue("Not Used",  "Time_Recorded", false) },
         {NCDF.Names.VERSION, new NCDF.NetCdfValue("Not Used",  "Version", false) },
         {NCDF.Names.V_O_B_APERTURE, new NCDF.NetCdfValue("Not Used",  "VOB_Aperture", false) },
         {NCDF.Names.VOB_CAN_TEMP, new NCDF.NetCdfValue("Not Used",  "Vob_Can_Temp", false) },
         {NCDF.Names.CHOPPER_STATUS, new NCDF.NetCdfValue("Not Used",  "Chopper_Status", false) },
         {NCDF.Names.VOB_FILTER_POS, new NCDF.NetCdfValue("Not Used",  "Vob_Filter_Pos", false) },
         {NCDF.Names.VOB_GATE_VALVE_STATUS, new NCDF.NetCdfValue("Not Used",  "Vob_Gate_Valve_Status", false) },
         {NCDF.Names.VOB_LAMBDA, new NCDF.NetCdfValue("Not Used",  "Vob_Lambda", false) },
         {NCDF.Names.VOB_REGION, new NCDF.NetCdfValue("Not Used",  "Vob_Region", false) },
         {NCDF.Names.VOB_TARGET_REGION, new NCDF.NetCdfValue("Not Used",  "Vob_Target_Region", false) },
         {NCDF.Names.CHAMBER_PRESSURE, new NCDF.NetCdfValue("Not Used",  "Chamber_Pressure", false) },
         {NCDF.Names.VOB_CHOPPER_FREQ, new NCDF.NetCdfValue("Not Used",  "Vob_Chopper_Freq", false) },
         {NCDF.Names.VSS_INPUT_CHOPPER_FREQ, new NCDF.NetCdfValue("Not Used",  "Vss_Input_Chopper_Freq", false) },
         {NCDF.Names.VSS_INPUT_CHOPPER_STATUS, new NCDF.NetCdfValue("Not Used",  "Vss_Input_Chopper_Status", false) },
         {NCDF.Names.VSS_MID_CHOPPER_FREQ, new NCDF.NetCdfValue("Not Used",  "Vss_Mid_Chopper_Freq", false) },
         {NCDF.Names.VSS_MID_CHOPPER_STATUS, new NCDF.NetCdfValue("Not Used",  "Vss_Mid_Chopper_Status", false) },
         {NCDF.Names.X_LOCATION, new NCDF.NetCdfValue("Not Used",  "X_Location", false) },
         {NCDF.Names.X_SIZE, new NCDF.NetCdfValue("Not Used",  "X_Size", false) },
         {NCDF.Names.X_TARGET, new NCDF.NetCdfValue("Not Used",  "X_Target", false) },
         {NCDF.Names.Y_LOCATION, new NCDF.NetCdfValue("Not Used",  "Y_Location", false) },
         {NCDF.Names.Y_SIZE, new NCDF.NetCdfValue("Not Used",  "Y_Size", false) },
         {NCDF.Names.Y_TARGET, new NCDF.NetCdfValue("Not Used",  "Y_Target", false) },
         {NCDF.Names.LAST_BAND_SEL, new NCDF.NetCdfValue("Not Used",  "LastBandSel", false) },
         {NCDF.Names.BAND_SEL, new NCDF.NetCdfValue("Not Used",  "BandSel", false) },
         {NCDF.Names.READ_SEQ_DEL, new NCDF.NetCdfValue("Not Used",  "ReadSeqDel", false) },
         {NCDF.Names.ROW_START, new NCDF.NetCdfValue("Not Used",  "RowStart", false) },
         {NCDF.Names.ROW_STOP, new NCDF.NetCdfValue("Not Used",  "RowStop", false) },
         {NCDF.Names.INTEGRATION_TIME, new NCDF.NetCdfValue("Not Used",  "Integration_Time", false) },
         {NCDF.Names.B1_DET_BIAS_OFFS, new NCDF.NetCdfValue("Not Used",  "B1DetBiasOffs", false) },
         {NCDF.Names.B1_DET_BIAS, new NCDF.NetCdfValue("Not Used",  "B1DetBias", false) },
         {NCDF.Names.B2_DET_BIAS, new NCDF.NetCdfValue("Not Used",  "B2DetBias", false) },
         {NCDF.Names.UC_GAIN, new NCDF.NetCdfValue("Not Used",  "UcGain", false) },
         {NCDF.Names.BGSEN, new NCDF.NetCdfValue("Not Used",  "Bgsen", false) },
         {NCDF.Names.B1_RAMP, new NCDF.NetCdfValue("Not Used",  "B1Ramp", false) },
         {NCDF.Names.B2_RAMP, new NCDF.NetCdfValue("Not Used",  "B2Ramp", false) },
         {NCDF.Names.COL_AMP_GAIN, new NCDF.NetCdfValue("Not Used",  "ColAmpGain", false) },
         {NCDF.Names.COL_AMP_IN_OFFS, new NCDF.NetCdfValue("Not Used",  "ColAmpInOffs", false) },
         {NCDF.Names.COL_AMP_OUT_OFFS, new NCDF.NetCdfValue("Not Used",  "ColAmpOutOffs", false) },
         {NCDF.Names.OUT_BUF_SLEW, new NCDF.NetCdfValue("Not Used",  "OutBufSlew", false) },
         {NCDF.Names.OUT_BUF_CAS, new NCDF.NetCdfValue("Not Used",  "OutBufCas", false) },
         {NCDF.Names.RESET_TIME, new NCDF.NetCdfValue("Not Used",  "ResetTime", false) },
         {NCDF.Names.GLOBAL_TEST_ENABLE, new NCDF.NetCdfValue("Not Used",  "GlobalTestEnable", false) },
         {NCDF.Names.UC_RAMP_TEST, new NCDF.NetCdfValue("Not Used",  "UcRampTest", false) },
         {NCDF.Names.SEEKER_SN, new NCDF.NetCdfValue("Not Used",  "SeekerSn", false) },
         {NCDF.Names.SEEKER_PN, new NCDF.NetCdfValue("Not Used",  "SeekerPn", false) },
         {NCDF.Names.GEU_PN, new NCDF.NetCdfValue("Not Used",  "GeuPn", false) },
         {NCDF.Names.GEU_SN, new NCDF.NetCdfValue("Not Used",  "GeuSn", false) },
         {NCDF.Names.SENSOR_SN, new NCDF.NetCdfValue("Not Used",  "Sensor_Sn", false) },
         {NCDF.Names.SENSOR_PN, new NCDF.NetCdfValue("Not Used",  "Sensor_Pn", false) },
         {NCDF.Names.IMU_SN, new NCDF.NetCdfValue("Not Used",  "ImuSn", false) },
         {NCDF.Names.IMU_PN, new NCDF.NetCdfValue("Not Used",  "ImuPn", false) },
         {NCDF.Names.IICCA_SN, new NCDF.NetCdfValue("Not Used",  "IiccaSn", false) },
         {NCDF.Names.IICCA_PN, new NCDF.NetCdfValue("Not Used",  "IiccaPn", false) },
         {NCDF.Names.IDA_SN, new NCDF.NetCdfValue("Not Used",  "IdaSn", false) },
         {NCDF.Names.IDA_PN, new NCDF.NetCdfValue("Not Used",  "IdaPn", false) },
         {NCDF.Names.CRYOSTAT_SN, new NCDF.NetCdfValue("Not Used",  "CryostatSn", false) },
         {NCDF.Names.CRYOSTAT_PN, new NCDF.NetCdfValue("Not Used",  "CryostatPn", false) },
         {NCDF.Names.ENVIRONMENT_ERROR, new NCDF.NetCdfValue("Not Used",  "Environment_error", false) },
         {NCDF.Names.SET_LAST_BAND_SEL, new NCDF.NetCdfValue("Not Used",  "SetLastBandSel", false) },
         {NCDF.Names.SET_BAND_SEL, new NCDF.NetCdfValue("Not Used",  "SetBandSel", false) },
         {NCDF.Names.SET_READ_SEQ_DEL, new NCDF.NetCdfValue("Not Used",  "SetReadSeqDel", false) },
         {NCDF.Names.SET_ROW_START, new NCDF.NetCdfValue("Not Used",  "SetRowStart", false) },
         {NCDF.Names.SET_ROW_STOP, new NCDF.NetCdfValue("Not Used",  "SetRowStop", false) },
         {NCDF.Names.SET_INTEG_TIME, new NCDF.NetCdfValue("Not Used",  "SetIntegTime", false) },
         {NCDF.Names.SET_B1_DET_BIAS_OFFS, new NCDF.NetCdfValue("Not Used",  "SetB1DetBiasOffs", false) },
         {NCDF.Names.SET_B1_DET_BIAS, new NCDF.NetCdfValue("Not Used",  "SetB1DetBias", false) },
         {NCDF.Names.SET_B2_DET_BIAS, new NCDF.NetCdfValue("Not Used",  "SetB2DetBias", false) },
         {NCDF.Names.SET_UC_GAIN, new NCDF.NetCdfValue("Not Used",  "SetUcGain", false) },
         {NCDF.Names.SET_BGSEN, new NCDF.NetCdfValue("Not Used",  "SetBgsen", false) },
         {NCDF.Names.SET_B1_RAMP, new NCDF.NetCdfValue("Not Used",  "SetB1Ramp", false) },
         {NCDF.Names.SET_B2_RAMP, new NCDF.NetCdfValue("Not Used",  "SetB2Ramp", false) },
         {NCDF.Names.SET_COL_AMP_GAIN, new NCDF.NetCdfValue("Not Used",  "SetColAmpGain", false) },
         {NCDF.Names.SET_COL_AMP_IN_OFFS, new NCDF.NetCdfValue("Not Used",  "SetColAmpInOffs", false) },
         {NCDF.Names.SET_COL_AMP_OUT_OFFS, new NCDF.NetCdfValue("Not Used",  "SetColAmpOutOffs", false) },
         {NCDF.Names.SET_OUT_BUF_SLEW, new NCDF.NetCdfValue("Not Used",  "SetOutBufSlew", false) },
         {NCDF.Names.SET_OUT_BUF_CAS, new NCDF.NetCdfValue("Not Used",  "SetOutBufCas", false) },
         {NCDF.Names.SET_RESET_TIME, new NCDF.NetCdfValue("Not Used",  "SetResetTime", false) },
         {NCDF.Names.SET_GLOBAL_TEST_ENABLE, new NCDF.NetCdfValue("Not Used",  "SetGlobalTestEnable", false) },
         {NCDF.Names.SET_UC_RAMP_TEST, new NCDF.NetCdfValue("Not Used",  "SetUcRampTest", false) },
         {NCDF.Names.BAND, new NCDF.NetCdfValue("Not Used",  "Band", false) },
         {NCDF.Names.FILE_TYPE, new NCDF.NetCdfValue("Not Used",  "File_Type", false) },
         {NCDF.Names.FRAME_RATE, new NCDF.NetCdfValue("Not Used",  "Frame_Rate", false) },
         {NCDF.Names.INTEGRATION_TIME_BAND1, new NCDF.NetCdfValue("Not Used",  "Integration_Time_Band1", false) },
         {NCDF.Names.INTEGRATION_TIME_BAND2, new NCDF.NetCdfValue("Not Used",  "Integration_Time_Band2", false) },
         {NCDF.Names.LAKESHORE_SLOPE, new NCDF.NetCdfValue("Not Used",  "Lakeshore_Slope", false) },
         {NCDF.Names.LAKESHORE_INTERCEPT, new NCDF.NetCdfValue("Not Used",  "Lakeshore_Intercept", false) },
         {NCDF.Names.LOCATION_ORIGIN, new NCDF.NetCdfValue("Not Used",  "Location_Origin", false) },
         {NCDF.Names.SENSOR_CONFIGURATION, new NCDF.NetCdfValue("Not Used",  "Sensor_Configuration", false) },
         {NCDF.Names.SERIAL, new NCDF.NetCdfValue("Not Used",  "Serial", false) },
         {NCDF.Names.VIDEO_TEST, new NCDF.NetCdfValue("Not Used",  "Video_test", false) },
         {NCDF.Names.X_START, new NCDF.NetCdfValue("Not Used",  "X_Start", false) },
         {NCDF.Names.Y_START, new NCDF.NetCdfValue("Not Used",  "Y_Start", false) },
         {NCDF.Names._V_DET_COM, new NCDF.NetCdfValue("Not Used",  "vDetCom", false) },
         {NCDF.Names.VRAMP, new NCDF.NetCdfValue("Not Used",  "Vramp", false) },
         {NCDF.Names.IICCA_FIRM_VER, new NCDF.NetCdfValue("Not Used",  "Iicca_Firm_Ver", false) },
         {NCDF.Names.IDA_VOLTS, new NCDF.NetCdfValue("Not Used",  "Ida_Volts", false) },
         {NCDF.Names.IDA_TEMP, new NCDF.NetCdfValue("Not Used",  "Ida_Temp", false) },
         {NCDF.Names.V_P3_R4_A_S, new NCDF.NetCdfValue("Not Used",  "VP3R4AS", false) },
         {NCDF.Names.V_N3_R4_A, new NCDF.NetCdfValue("Not Used",  "VN3R4A", false) },
         {NCDF.Names.V_P5_R3_A, new NCDF.NetCdfValue("Not Used",  "VP5R3A", false) },
         {NCDF.Names.BIAS_RESERVE, new NCDF.NetCdfValue("Not Used",  "BiasReserve", false) },
         {NCDF.Names.VP_DET_COM_B1, new NCDF.NetCdfValue("Not Used",  "VpDetComB1", false) },
         {NCDF.Names.VP_E_S_D, new NCDF.NetCdfValue("Not Used",  "VpESD", false) },
         {NCDF.Names.VN_OUT, new NCDF.NetCdfValue("Not Used",  "VnOut", false) },
         {NCDF.Names.VP_OUT, new NCDF.NetCdfValue("Not Used",  "VpOut", false) },
         {NCDF.Names.VN_UC, new NCDF.NetCdfValue("Not Used",  "VnUc", false) },
         {NCDF.Names.VP_UC, new NCDF.NetCdfValue("Not Used",  "VpUc", false) },
         {NCDF.Names.VN_D, new NCDF.NetCdfValue("Not Used",  "VnD", false) },
         {NCDF.Names.VP_D, new NCDF.NetCdfValue("Not Used",  "VpD", false) },
         {NCDF.Names.VN_A, new NCDF.NetCdfValue("Not Used",  "VnA", false) },
         {NCDF.Names.VP_A, new NCDF.NetCdfValue("Not Used",  "VpA", false) },
         {NCDF.Names.BENCH, new NCDF.NetCdfValue("Not Used",  "Bench", false) },
         {NCDF.Names.SEEKER_BUILD, new NCDF.NetCdfValue("Not Used",  "Seeker_Build", false) },
         {NCDF.Names.SENSOR_BUILD, new NCDF.NetCdfValue("Not Used",  "Sensor_Build", false) },
         {NCDF.Names.PROGRAM_NAME, new NCDF.NetCdfValue("Not Used",  "Program_Name", false) },
         {NCDF.Names.TESTPOSITIONTYPE, new NCDF.NetCdfValue("Not Used",  "Testpositiontype", false) },
         {NCDF.Names.TEST_TYPE_VARIANT, new NCDF.NetCdfValue("Not Used",  "TestTypeVariant", false) },
         {NCDF.Names.ENVIRONMENT_ERROR_NOTES, new NCDF.NetCdfValue("Not Used",  "Environment_error_notes", false) },
         {NCDF.Names.T_E_CHAMBER_I_D, new NCDF.NetCdfValue("Not Used",  "TE_Chamber_ID", false) },
         {NCDF.Names.T_E_G_U_T_S_I_D, new NCDF.NetCdfValue("Not Used",  "TE_GUTS_ID", false) },
         {NCDF.Names.T_E_C_T_S_I_D, new NCDF.NetCdfValue("Not Used",  "TE_CTS_ID", false) },
         {NCDF.Names.T_E_SHAKER_I_D, new NCDF.NetCdfValue("Not Used",  "TE_Shaker_ID", false) },
         {NCDF.Names.T_E_THERMOTRON_I_D, new NCDF.NetCdfValue("Not Used",  "TE_Thermotron_ID", false) },
         {NCDF.Names.T_E_CHAMBER_WINDOW_I_D, new NCDF.NetCdfValue("Not Used",  "TE_Chamber_Window_ID", false) },
         {NCDF.Names.T_E_U_U_T_WINDOW_I_D, new NCDF.NetCdfValue("Not Used",  "TE_UUT_Window_ID", false) },
         {NCDF.Names.T_E_B_B_CONTROLLER_S_N, new NCDF.NetCdfValue("Not Used",  "TE_BB_Controller_SN", false) },
         {NCDF.Names.T_E_V_S_S_PYRO_DET, new NCDF.NetCdfValue("Not Used",  "TE_VSS_Pyro_Det", false) },
         {NCDF.Names.T_E_CHAMBER_SW_VERSION, new NCDF.NetCdfValue("Not Used",  "TE_Chamber_Sw_Version", false) },
         {NCDF.Names.T_E_CHAMBER_SW_BUILD, new NCDF.NetCdfValue("Not Used",  "TE_Chamber_Sw_Build", false) },
         {NCDF.Names.T_E_G_U_T_S_S_W_VERSION, new NCDF.NetCdfValue("Not Used",  "TE_GUTS_SW_Version", false) },
         {NCDF.Names.T_E_G_U_T_S_S_W_BUILD, new NCDF.NetCdfValue("Not Used",  "TE_GUTS_SW_Build", false) },
         {NCDF.Names.T_E_V_T_I_FIRMWARE_VERSION, new NCDF.NetCdfValue("Not Used",  "TE_VTI_Firmware_Version", false) },
         {NCDF.Names.T_E_V_T_I_FIRMWARE_BUILD, new NCDF.NetCdfValue("Not Used",  "TE_VTI_Firmware_Build", false) },
         {NCDF.Names.T_E_I_A_F_S_W_VERSION, new NCDF.NetCdfValue("Not Used",  "TE_IAF_SW_Version", false) },
         {NCDF.Names.T_E_I_A_F_S_W_BUILD, new NCDF.NetCdfValue("Not Used",  "TE_IAF_SW_Build", false) },
         {NCDF.Names.MONOCHROMETER_POSITION, new NCDF.NetCdfValue("Not Used",  "Monochrometer_Position", false) },
         {NCDF.Names.B_B_E_S_TARGET, new NCDF.NetCdfValue("Not Used",  "BBES_Target", false) },
         {NCDF.Names.EMISSIVITY, new NCDF.NetCdfValue("Not Used",  "Emissivity", false) },
         {NCDF.Names.CUTOFFWAVELENGTH, new NCDF.NetCdfValue("Not Used",  "Cutoffwavelength", false) },
         {NCDF.Names.CUTONWAVELENGTH, new NCDF.NetCdfValue("Not Used",  "Cutonwavelength", false) },
         {NCDF.Names.TARGET_REGION, new NCDF.NetCdfValue("Not Used",  "Target_Region", false) },
         {NCDF.Names.MEASURED_BLACK_BODY_TEMPERATURE, new NCDF.NetCdfValue("Not Used",  "Measured_Black_Body_Temperature", false) },
         {NCDF.Names.MEASURED_MONOCHROMETER_POSITION, new NCDF.NetCdfValue("Not Used",  "Measured_Monochrometer_Position", false) },
         {NCDF.Names.V_O_B_CAN_TEMP, new NCDF.NetCdfValue("Not Used",  "VOB_Can_Temp", false) },
         {NCDF.Names.V_O_B_CHAMBER_PRESSURE, new NCDF.NetCdfValue("Not Used",  "VOB_Chamber_Pressure", false) },
         {NCDF.Names.V_O_B_CHOPPER_STATUS, new NCDF.NetCdfValue("Not Used",  "VOB_Chopper_Status", false) },
         {NCDF.Names.V_O_B_LAMBDA, new NCDF.NetCdfValue("Not Used",  "VOB_Lambda", false) },
         {NCDF.Names.L_S_P_S_GATE_VALVE_STATUS, new NCDF.NetCdfValue("Not Used",  "LSPS_gate_valve_status", false) },
         {NCDF.Names.SENSOR, new NCDF.NetCdfValue("Not Used",  "Sensor", false) },
         {NCDF.Names.VGATE, new NCDF.NetCdfValue("Not Used",  "Vgate", false) },
         {NCDF.Names.VOFFSET, new NCDF.NetCdfValue("Not Used",  "Voffset", false) },
         {NCDF.Names.EXTERNAL_A_D_C_V_DET_COM, new NCDF.NetCdfValue("Not Used",  "External_ADC_vDetCom", false) },
         {NCDF.Names.INTEG_TIME, new NCDF.NetCdfValue("Not Used",  "IntegTime", false) },
         {NCDF.Names.AUTOCOLLIMATOR_EL, new NCDF.NetCdfValue("Not Used",  "Autocollimator_El", false) },
         {NCDF.Names.AUTOCOLLIMATOR_AZ, new NCDF.NetCdfValue("Not Used",  "Autocollimator_Az", false) },
         {NCDF.Names.B_B_E_S_TEMP, new NCDF.NetCdfValue("Not Used",  "BBES_Temp", false) },
         {NCDF.Names.B_B_E_S_FILTER_WHEEL, new NCDF.NetCdfValue("Not Used",  "BBES_Filter_Wheel", false) },
         {NCDF.Names.VOB_AMP_AVG_R, new NCDF.NetCdfValue("Not Used",  "Vob_Amp_Avg_R", false) },
         {NCDF.Names.VOB_AVG_X_VOLTAGE, new NCDF.NetCdfValue("Not Used",  "Vob_Avg_X_Voltage", false) },
         {NCDF.Names.VSS_LOCKIN_1_COUPLE, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_1_Couple", false) },
         {NCDF.Names.VSS_LOCKIN_1_GROUND, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_1_Ground", false) },
         {NCDF.Names.VSS_LOCKIN_1_RESERVE, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_1_Reserve", false) },
         {NCDF.Names.VOB_AMP_SEN, new NCDF.NetCdfValue("Not Used",  "Vob_Amp_Sen", false) },
         {NCDF.Names.VSS_LOCKIN_1_SLOPE, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_1_Slope", false) },
         {NCDF.Names.VOB_AMP_TIME_CONST, new NCDF.NetCdfValue("Not Used",  "Vob_Amp_Time_Const", false) },
         {NCDF.Names.VOB_AMP2_AVG_R, new NCDF.NetCdfValue("Not Used",  "Vob_Amp2_Avg_R", false) },
         {NCDF.Names.VOB_AVG2_X_VOLTAGE, new NCDF.NetCdfValue("Not Used",  "Vob_Avg2_X_Voltage", false) },
         {NCDF.Names.VSS_LOCKIN_2_COUPLE, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_2_Couple", false) },
         {NCDF.Names.VSS_LOCKIN_2_GROUND, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_2_Ground", false) },
         {NCDF.Names.VSS_LOCKIN_2_RESERVE, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_2_Reserve", false) },
         {NCDF.Names.VOB_AMP2_SEN, new NCDF.NetCdfValue("Not Used",  "Vob_Amp2_Sen", false) },
         {NCDF.Names.VSS_LOCKIN_2_SLOPE, new NCDF.NetCdfValue("Not Used",  "Vss_Lockin_2_Slope", false) },
         {NCDF.Names.VOB_AMP2_TIME_CONST, new NCDF.NetCdfValue("Not Used",  "Vob_Amp2_Time_Const", false) },
         {NCDF.Names.SET_V_DET_COM, new NCDF.NetCdfValue("Not Used",  "SetVDetCom", false) },
         {NCDF.Names.MONOCHROMETER_1_POSITION, new NCDF.NetCdfValue("Not Used",  "Monochrometer_1_Position", false) },
         {NCDF.Names.MONOCHROMETER_2_POSITION, new NCDF.NetCdfValue("Not Used",  "Monochrometer_2_position", false) },
         {NCDF.Names.FILTER, new NCDF.NetCdfValue("Not Used",  "Filter", false) },
         {NCDF.Names.FPA_SN, new NCDF.NetCdfValue("Not Used",  "FpaSn", false) },
         {NCDF.Names.T_E_I_A_F_I_D, new NCDF.NetCdfValue("Not Used",  "TE_IAF_ID", false) },
         {NCDF.Names.T_E_V_T_I_I_D, new NCDF.NetCdfValue("Not Used",  "TE_VTI_ID", false) },
         {NCDF.Names.BUILDING, new NCDF.NetCdfValue("Not Used",  "Building", false) },
         {NCDF.Names.FOCUS_POSITION, new NCDF.NetCdfValue("Not Used",  "FocusPosition", false) },
         {NCDF.Names.F_C_D_START_TIME, new NCDF.NetCdfValue("Not Used",  "FCD_Start_Time", false) },
         {NCDF.Names.F_C_D_FRAMECNT, new NCDF.NetCdfValue("Not Used",  "FCD_Framecnt", false) },
         {NCDF.Names.F_C_D_LINECUT_TIME, new NCDF.NetCdfValue("Not Used",  "FCD_Linecut_Time", false) },
         {NCDF.Names.F_C_D_LINECUT_FRAMECNT, new NCDF.NetCdfValue("Not Used",  "FCD_Linecut_Framecnt", false) },
         {NCDF.Names.C_O_L, new NCDF.NetCdfValue("Not Used",  "COL", false) },
         {NCDF.Names.SOAK_TEMPERATURE, new NCDF.NetCdfValue("Not Used",  "Soak_Temperature", false) },
         {NCDF.Names.SCAN_RATE, new NCDF.NetCdfValue("Not Used",  "Scan_Rate", false) },
         {NCDF.Names.ORIENTATION, new NCDF.NetCdfValue("Not Used",  "Orientation", false) },
         {NCDF.Names.GALILC_FOCUS_POSITION, new NCDF.NetCdfValue("Not Used",  "Galilc_focus_position", false) },
         {NCDF.Names.GALILC_ABS_FOCUS_POSITION, new NCDF.NetCdfValue("Not Used",  "Galilc_abs_focus_position", false) },
         {NCDF.Names.GALILC_ENCODER_FOCUS_POSITION, new NCDF.NetCdfValue("Not Used",  "Galilc_encoder_focus_position", false) },
      };
   }
}
