using Raytheon.Instruments;
using STE_Library_Common;
using System;
using System.Threading;

namespace SpaceChamberVOBMeasurementManagerLib
{
	public class SpaceChamberVOBMeasurementManager
	{
		private int _galicFwPos;

		private bool _bit;

		private string _errorDesc;

		private bool _focusState;

		private ICommDevice _commDevice;

		private bool _isThereHardware;

		private Thread _vobMonitorHealthThread;

		private IWorkerInterface _vobMonitorHealthWorker;

		private IMsgParser _vobMsgParser;

		private Thread _vobUpdateThread;

		private IWorkerInterface _vobUpdateWorker;


		/// <summary>
		/// constructor that uses instrument manager for creating an instrument
		/// </summary>
		/// <param name="instrumentManager"></param>
		/// <param name="deviceName"></param>
		public SpaceChamberVOBMeasurementManager(IInstrumentManager instrumentManager, string deviceName)
		{
			_commDevice = instrumentManager.GetInstrument<ICommDevice>(deviceName);
			_commDevice?.Initialize();
		}

		public SpaceChamberVOBMeasurementManager(bool isThereHardware, string measurementDefFile, string instrumentDefFile)
		{
			if (measurementDefFile == null)
			{
				throw new ArgumentNullException("SpaceChamberVOBMeasurementManager::SpaceChamberVOBMeasurementManager() - measurementDefFile input parameter is null.");
			}
			if (instrumentDefFile == null)
			{
				throw new ArgumentNullException("SpaceChamberVOBMeasurementManager::SpaceChamberVOBMeasurementManager() - instrumentDefFile input parameter is null.");
			}
			this._isThereHardware = isThereHardware;
		}

		public void BalanceOnPixelLocation()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void bbSetTemp(double temp, int timeout)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void chopperPowerOff()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void closeRgaGateValve()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void closeUutGateValve()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void deleteProfilePoint(int index)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void disableAxis()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void enableAxis()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void galilcFocusMove(double destination, float speed, int mode)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void galilChopperSetFrequency(double frequency, int timeout)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public bool galilMono1Grating()
		{
			bool flag;
			try
			{
				flag = false;
			}
			catch (Exception exception)
			{
				throw;
			}
			return flag;
		}

		public void getAxesStatus()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void getBeamAngles()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void getBits()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public double getCoarseAngle()
		{
			double num;
			try
			{
				num = 0;
			}
			catch (Exception exception)
			{
				throw;
			}
			return num;
		}

		public void getCoarseSelection()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public double getFocusPosition()
		{
			double num;
			try
			{
				num = double.MaxValue;
			}
			catch (Exception exception)
			{
				throw;
			}
			return num;
		}

		public bool getFocusState()
		{
			bool flag;
			try
			{
				flag = false;
			}
			catch (Exception exception)
			{
				throw;
			}
			return flag;
		}

		public double getMirrorAngles()
		{
			double num;
			try
			{
				num = 0;
			}
			catch (Exception exception)
			{
				throw;
			}
			return num;
		}

		public void getRGAGateValveState()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public int getTargetWheelPos()
		{
			int num;
			try
			{
				num = 0;
			}
			catch (Exception exception)
			{
				throw;
			}
			return num;
		}

		public void getUutGateValveState()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void getVacuumPressures()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void getVacuumSetpoints()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void homeAxis()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void homeTargetWheel()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void homeXyAxes()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void homeXyuAxes()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

      public void  loadProfile()
      {
         try
         {
         }
         catch (Exception exception)
         {
            throw;
         }

      }

      public void openRgaGateValve()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void openUutGateValve()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void quit()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void resetProfile()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void runProfile(int mode)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		private void SendMessageGetResponse(string command)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void setAxisPosAbs(double position, double speed)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void setAxisPosRel(double position, double speed)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void SetBackgroundScene(int scene)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void SetChopperFrequency(double frequency)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void SetChopperOff()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void SetChopperOn()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void setCoarseSel()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void SetTargetPosition(double az, double el)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void SetTargetSize(double size)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void SetTargetSource(int source)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void setTargetWheel(int pos)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void setXyPos(double azPos, double elPos, double speed)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void stopAllAxes()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void stopTargetWheel()
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}

		public void VssMonoSetWaveLength(double wave)
		{
			try
			{
			}
			catch (Exception exception)
			{
				throw;
			}
		}
      public void CenterTargetOnPixel(int pixelX, int pixelY, double chopperRate, double minAmp, double maxOE)
      {
         try
         {
         }
         catch (Exception exception)
         {
            throw;
         }
      }

      public void SetFocus(double position)
      {
         try
         {
         }
         catch (Exception exception)
         {
            throw;
         }
      }
   }
}