using Raytheon.Instruments;
using System;
using System.Collections.Generic;

namespace MeasurementManagerLib
{
	public class OpticalBenchMeasurementManager
	{
		private readonly ICommDevice _opticalBench;

		/// <summary>
		/// constructor that uses instrument manager
		/// </summary>
		/// <param name="instrumentManager"></param>
		/// <param name="instrumentName"></param>
		/// <param name="measurementDefFile"></param>
		/// <param name="instrumentDefFile"></param>
		public OpticalBenchMeasurementManager(IInstrumentManager instrumentManager, string instrumentName, string measurementDefFile, string instrumentDefFile)
		{
			_opticalBench = instrumentManager.GetInstrument<ICommDevice>(instrumentName);
			_opticalBench?.Initialize();
		}

		public void CloseShutter()
		{
			try
			{
			}
			catch (Exception)
			{
				throw;
			}
		}

		public List<string> GetTargetWheelNames()
		{
			List<string> strs;
			try
			{
				strs = null;
			}
			catch (Exception)
			{
				throw;
			}
			return strs;
		}

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

		public void MoveSeekerAbs(double az, double el, double rl)
		{
			try
			{
			}
			catch (Exception)
			{
				throw;
			}
		}

		public void OpenShutter()
		{
			try
			{
			}
			catch (Exception)
			{
				throw;
			}
		}

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

		public void SetBlackBodySetpointTemperature(double temperature)
		{
			try
			{
			}
			catch (Exception)
			{
				throw;
			}
		}

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

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

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

		public void SetFilterWheel(int filter)
		{
			try
			{
			}
			catch (Exception)
			{
				throw;
			}
		}

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

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

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

		public void SetTargetWheel(string targetName)
		{
			try
			{
			}
			catch (Exception)
			{
				throw;
			}
		}

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

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

		public void LoadProfile()
      {
         try
         {
         }
         catch (Exception)
         {
            throw;
         }
      }
   }
}