using NIDAQmx.DAQmxEnum;
using NIDAQmxConst;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace NIDAQmx
{
    public class Write : DAQmxBase
    {
        internal Write(DAQmxSession session) : base(session)
        {
        }
        public WriteRelativeTo RelativeTo { get => _Session.GetValue<Internal.Write.DAQmxGetWriteRelativeTo,WriteRelativeTo>(); set => _Session.SetValue<Internal.Write.DAQmxSetWriteRelativeTo,WriteRelativeTo>(value); }
        public int Offset { get => _Session.GetValue<Internal.Write.DAQmxGetWriteOffset, int>(); set => _Session.SetValue<Internal.Write.DAQmxSetWriteOffset, int>(value); }
        public WriteRegenMode RegenMode { get => _Session.GetValue<Internal.Write.DAQmxGetWriteRegenMode,WriteRegenMode>(); set => _Session.SetValue<Internal.Write.DAQmxSetWriteRegenMode,WriteRegenMode>(value); }
        public ulong CurrWritePos => _Session.GetValue<Internal.Write.DAQmxGetWriteCurrWritePos,ulong>();
        public bool OvercurrentChansExist => _Session.GetValue<Internal.Write.DAQmxGetWriteOvercurrentChansExist,bool>();
        public string OvercurrentChans=> _Session.GetValue<Internal.Write.DAQmxGetWriteOvercurrentChans>();
        public bool OvertemperatureChansExist=> _Session.GetValue<Internal.Write.DAQmxGetWriteOvertemperatureChansExist,bool>();
        public string OvertemperatureChans=> _Session.GetValue<Internal.Write.DAQmxGetWriteOvertemperatureChans>();
        public bool ExternalOvervoltageChansExist => _Session.GetValue<Internal.Write.DAQmxGetWriteExternalOvervoltageChansExist,bool>();
        public string ExternalOvervoltageChans=> _Session.GetValue<Internal.Write.DAQmxGetWriteExternalOvervoltageChans>();
        public bool OverloadedChansExist => _Session.GetValue<Internal.Write.DAQmxGetWriteOverloadedChansExist,bool>();
        public string OverloadedChans=>_Session.GetValue<Internal.Write.DAQmxGetWriteOverloadedChans>();
        public bool OpenCurrentLoopChansExist => _Session.GetValue<Internal.Write.DAQmxGetWriteOpenCurrentLoopChansExist,bool>();
        public string OpenCurrentLoopChans=>_Session.GetValue<Internal.Write.DAQmxGetWriteOpenCurrentLoopChans>();
        public bool PowerSupplyFaultChansExist=> _Session.GetValue<Internal.Write.DAQmxGetWritePowerSupplyFaultChansExist,bool>();
        public string PowerSupplyFaultChans=> _Session.GetValue<Internal.Write.DAQmxGetWritePowerSupplyFaultChans>();
        public bool SyncUnlockedChansExist => _Session.GetValue<Internal.Write.DAQmxGetWriteSyncUnlockedChansExist,bool>();
        public string SyncUnlockedChans=> _Session.GetValue<Internal.Write.DAQmxGetWriteSyncUnlockedChans>();
        public uint SpaceAvail=>_Session.GetValue<Internal.Write.DAQmxGetWriteSpaceAvail,uint>();
        public ulong TotalSampPerChanGenerated => _Session.GetValue<Internal.Write.DAQmxGetWriteTotalSampPerChanGenerated,ulong>();
        public bool AccessoryInsertionOrRemovalDetected => _Session.GetValue<Internal.Write.DAQmxGetWriteAccessoryInsertionOrRemovalDetected,bool>();
        public string DevsWithInsertedOrRemovedAccessories => _Session.GetValue<Internal.Write.DAQmxGetWriteDevsWithInsertedOrRemovedAccessories>();
        public uint RawDataWidth=>_Session.GetValue<Internal.Write.DAQmxGetWriteRawDataWidth,uint>();
        public uint NumChans=> _Session.GetValue<Internal.Write.DAQmxGetWriteNumChans,uint>();
        public double SleepTime { get => _Session.GetValue<Internal.Write.DAQmxGetWriteSleepTime,double>(); set => _Session.SetValue<Internal.Write.DAQmxSetWriteSleepTime,double>(value); }
        public WriteWaitMode WaitMode { get => _Session.GetValue<Internal.Write.DAQmxGetWriteWaitMode,WriteWaitMode>(); set => _Session.SetValue<Internal.Write.DAQmxSetWriteWaitMode,WriteWaitMode>(value); }
    }
}
