using NIDAQmxConst;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NIDAQmx.Internal
{
    internal class Timing
    {
        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkTimingResponseMode(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampClkTimingResponseMode(System.IntPtr taskHandle, TimingResponseMode data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampClkTimingResponseMode(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampTimingType(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampTimingType(System.IntPtr taskHandle, TimingType data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampTimingType(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: float64*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkRate(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: float64->double
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampClkRate(System.IntPtr taskHandle, double data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampClkRate(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: float64*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkMaxRate(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: char*
        ///bufferSize: uInt32->unsigned int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkSrc(System.IntPtr taskHandle, IntPtr data, uint bufferSize);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: char*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampClkSrc(System.IntPtr taskHandle, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampClkSrc(System.IntPtr taskHandle);

        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: char*
        ///bufferSize: uInt32->unsigned int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetRefClkSrc(System.IntPtr taskHandle, System.IntPtr data, uint bufferSize);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: char*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetRefClkSrc(System.IntPtr taskHandle, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetRefClkSrc(System.IntPtr taskHandle);

        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///source: char*
        ///rate: float64->double
        ///activeEdge: int32->int
        ///sampleMode: int32->int
        ///sampsPerChan: uInt64->unsigned __int64
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxCfgSampClkTiming(System.IntPtr taskHandle, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string source, double rate, AnalogActiveEdge activeEdge, SampleModes sampleMode, ulong sampsPerChan);

        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///sampleMode: int32->int
        ///sampsPerChan: uInt64->unsigned __int64
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxCfgHandshakingTiming(System.IntPtr taskHandle, SampleModes sampleMode, ulong sampsPerChan);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///sampleMode: int32->int
        ///sampsPerChan: uInt64->unsigned __int64
        ///sampleClkRate: float64->double
        ///sampleClkSrc: char*
        ///sampleClkActiveEdge: int32->int
        ///pauseWhen: int32->int
        ///readyEventActiveLevel: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxCfgBurstHandshakingTimingImportClock(System.IntPtr taskHandle, SampleModes sampleMode, ulong sampsPerChan, double sampleClkRate, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string sampleClkSrc, AnalogActiveEdge sampleClkActiveEdge, ActiveLevel pauseWhen, ActiveLevel readyEventActiveLevel);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///sampleMode: int32->int
        ///sampsPerChan: uInt64->unsigned __int64
        ///sampleClkRate: float64->double
        ///sampleClkOutpTerm: char*
        ///sampleClkPulsePolarity: int32->int
        ///pauseWhen: int32->int
        ///readyEventActiveLevel: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxCfgBurstHandshakingTimingExportClock(System.IntPtr taskHandle, SampleModes sampleMode, ulong sampsPerChan, double sampleClkRate, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string sampleClkOutpTerm, AnalogActiveEdge sampleClkPulsePolarity, ActiveLevel pauseWhen, ActiveLevel readyEventActiveLevel);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///risingEdgeChan: char*
        ///fallingEdgeChan: char*
        ///sampleMode: int32->int
        ///sampsPerChan: uInt64->unsigned __int64
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxCfgChangeDetectionTiming(System.IntPtr taskHandle, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string risingEdgeChan, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string fallingEdgeChan, SampleModes sampleMode, ulong sampsPerChan);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///sampleMode: int32->int
        ///sampsPerChan: uInt64->unsigned __int64
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxCfgImplicitTiming(System.IntPtr taskHandle, SampleModes sampleMode, ulong sampsPerChan);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///source: char*
        ///rate: float64->double
        ///activeEdge: int32->int
        ///sampleMode: int32->int
        ///sampsPerChan: uInt64->unsigned __int64
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxCfgPipelinedSampClkTiming(System.IntPtr taskHandle, [System.Runtime.InteropServices.InAttribute()][System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string source, double rate, AnalogActiveEdge activeEdge, SampleModes sampleMode, ulong sampsPerChan);

        
        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampQuantSampMode(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampQuantSampMode(System.IntPtr taskHandle, SampleModes data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampQuantSampMode(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: uInt64*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampQuantSampPerChan(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: uInt64->unsigned __int64
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampQuantSampPerChan(System.IntPtr taskHandle, ulong data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampQuantSampPerChan(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkActiveEdge(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampClkActiveEdge(System.IntPtr taskHandle, AnalogActiveEdge data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampClkActiveEdge(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkOverrunBehavior(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampClkOverrunBehavior(System.IntPtr taskHandle, SampClkOverrunBehavior data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampClkOverrunBehavior(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkUnderflowBehavior(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: int32->int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampClkUnderflowBehavior(System.IntPtr taskHandle, SyncUnlockBehavior data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampClkUnderflowBehavior(System.IntPtr taskHandle);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: uInt32*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxGetSampClkTimebaseDiv(System.IntPtr taskHandle, IntPtr data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        ///data: uInt32->unsigned int
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxSetSampClkTimebaseDiv(System.IntPtr taskHandle, uint data);


        /// Return Type: int32->int
        ///taskHandle: TaskHandle->void*
        [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
        public delegate NIDAQmx.DAQmxEnum.Result DAQmxResetSampClkTimebaseDiv(System.IntPtr taskHandle);


    }
}
