using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace Raytheon.Instruments
{
   public class IODatatypes
   {
      public struct DIOChannelInfo
      {
         public uint channelNumber;
         public int initialValue;
      };

      /// <summary>
      /// Bit state, high or low
      /// </summary>
      [DataContract]
      public enum BitState
      {
         /// <summary>
         /// low state
         /// </summary>
         [EnumMember]
         Low,

         /// <summary>
         /// high state
         /// </summary>
         [EnumMember]
         High
      }

      /// <summary>
      /// BitType - setup info, input or output type bit
      /// </summary>
      [DataContract]
      public enum BitType
      {
         /// <summary>
         /// digital input bit
         /// </summary>
         [EnumMember]
         Input,

         /// <summary>
         /// digital output bit
         /// </summary>
         [EnumMember]
         Output
      }

      /// <summary>
      /// enumeration for the several types of IO
      /// </summary>
      [DataContract]
      public enum IOType
      {
         /// <summary>
         /// an analog input
         /// </summary>
         [EnumMember]
         AnalogInput,

         /// <summary>
         /// an analog output
         /// </summary>
         [EnumMember]
         AnalogOutput,

         /// <summary>
         /// a digital input
         /// </summary>
         [EnumMember]
         DigitalInput,

         /// <summary>
         /// a digital output
         /// </summary>
         [EnumMember]
         DigitalOutput,

         /// <summary>
         /// a clock type output
         /// </summary>
         [EnumMember]
         Clock,
      }
   }
}
