using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace CSStudio6Lib
{
	[Guid("FD052593-A6E0-4266-B8A8-4715834ADB63"), TypeLibType(TypeLibTypeFlags.FDual | TypeLibTypeFlags.FNonExtensible | TypeLibTypeFlags.FDispatchable)]
	[ComImport]
	public interface ICSStudio6
	{
        [DispId(1)]
        bool FindDevice();
        [DispId(2)]
        bool FindDeviceInLan();
        [DispId(3)]
        bool FindDeviceInCom();
        [DispId(4)]
        bool FindDeviceByName(string strName);
        [DispId(5)]
        bool DeviceIsOpen();
        [DispId(6)]
        void DeviceDisconnect();
        [DispId(7)]
        bool DeviceStart();
        [DispId(8)]
        bool DeviceStop();
        [DispId(9)]
        bool DevicePause();
        [DispId(10)]
        bool DeviceContinue();
        [DispId(11)]
        string GetLastError();
        [DispId(12)]
        string GetSerialNumber();
        [DispId(13)]
        string GetLibVersion();
        [DispId(14)]
        bool SetCurrentRange(bool isAutoRange, int nRange, int nMinRange, int nMaxRange, bool isOnlyInc);
        [DispId(15)]
        bool SetVoltRange(bool isAuto, int nRange);
        [DispId(16)]
        bool SetGNDMode(bool isVirMode);
        [DispId(17)]
        bool SetIRValue(bool isEnable, float fValue);
        [DispId(18)]
        bool SetEisFilter(int nHigh, int nMid, int nLow);
        [DispId(19)]
        bool GetOcpValue(out double ocpValue);
        [DispId(20)]
        bool SetOcpParams(float fTestTime, float fFreq);
        [DispId(21)]
        bool SetPotStaticParams(float fWaitTime, float fPotValue, float fTestTime, float fFreq);
        [DispId(22)]
        bool SetGalStaticParams(float fWaitTime, float fCurrentValue, float fTestTime, float fFreq);
        [DispId(23)]
        bool SetLSVAParams(float fWaitTime, float fInitE, float fFinalE, float fScanRate, float fFrq);
        [DispId(24)]
        bool SetCVParams(float fWaitTime, float fInitE, float fStepE1, float fStepE2, float fFinalE, float fScanRate, float fFrq, uint nCycles);
        [DispId(25)]
        bool SetSCVAParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, uint nCycles, uint nSampleWidth, float fJumpTime);
        [DispId(26)]
        bool SetSWVAParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, float fAmplitude, float fFrequency, uint nSampleWidth);
        [DispId(27)]
        bool SetEISVSfrqParams(float fInitFreq, float fFinalFreq, float fSineBias, float fSineAmp, uint nPoints);
        [DispId(28)]
        int GetValuesCount();
        [DispId(29)]
        bool GetValue(int nIndex, out double dVoltValue, out double dCurrValue, out double dTimeValue);
        [DispId(30)]
        bool GetLastValue(out double dVoltValue, out double dCurrValue, out double dTimeValue);
        [DispId(31)]
        bool GetValues(out object dVoltValues, out object dCurrValues, out object dTimeValues);
        [DispId(32)]
        int GetEisValueCount();
        [DispId(33)]
        bool GetEisValue(int nIndex, out double dFreqValue, out double dRealValue, out double dImaginaryValue, out double dZValue, out double dPhaseAngleValue);
        [DispId(34)]
        bool GetLastEisValue(out double dFreqValue, out double dRealValue, out double dImaginaryValue, out double dZValue, out double dPhaseAngleValue);
        [DispId(35)]
        bool GetEisValues(out object dFreqValues, out object dRealValues, out object dImaginaryValues, out object dZValues, out object dPhaseAngleValues);
        [DispId(36)]
        void ClearData();
        [DispId(37)]
        bool ExpIsEnd();
        [DispId(38)]
        bool SetMsgHandle(int nHandle);
        [DispId(39)]
        bool DeviceStartST();
        [DispId(40)]
        bool GetOcpValueEx(out double ocpValue, out double currentValue);
        [DispId(41)]
        bool SetACVParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, float fAmplitude, float fACFreq, float fSamplePeriod);
        [DispId(42)]
        bool SetSHACVParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, float fAmplitude, float fACFreq, float fSamplePeriod);
        [DispId(43)]
        bool SetFTACVParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, float fAmplitude, float fACFreq, float fSamplePeriod);
        [DispId(44)]
        bool SetEISVSfrqGalParams(float fInitFreq, float fFinalFreq, float fSineBiasI, float fSineAmpI, uint nPoints);
        [DispId(45)]
        bool SetEISVSPotParams(float fFreq, float fSineAmp, float fInitE, float fFinalE, float fIncE);
        [DispId(46)]
        bool SetEISVSTimeParams(float fFreq, float fSineBias, float fSineAmp, float fPeriod, float fTime);
        [DispId(47)]
        bool SetStaticChange(int nMode, float fValue);
        [DispId(48)]
        bool SetEarthMode(bool isSet);
        [DispId(49)]
        bool SetEISVSTimeGalParams(float fFreq, float fSineBiasI, float fSineAmpI, float fPeriod, float fTime);
        [DispId(50)]
        bool SetPotSquareParams(float fWaitTime, float fInitE, float fInitTime, float fStepE1, float fStepE1Time, float fStepE2, float fStepE2Time, float fFinalE, float fFinalTime, float fFrq, uint nCycles);
        [DispId(51)]
        bool SetGalSquareParams(float fWaitTime, float fInitI, float fInitTime, float fStepI1, float fStepI1Time, float fStepI2, float fStepI2Time, float fFinalI, float fFinalTime, float fFrq, uint nCycles);
        [DispId(52)]
        bool SetEINoiseParams(float fWaitTime, float fTestTime, float fFreq);
        [DispId(53)]
        bool SetDPVParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, float fAmplitude, float fPulseWidth, float fPulsePeriod, uint nSampleWidth);
        [DispId(54)]
        bool SetNPVParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, float fPulseWidth, float fPulsePeriod, uint nSampleWidth);
        [DispId(55)]
        bool SetDNPVParams(float fWaitTime, float fInitE, float fFinalE, float fIncE, float fAmplitude, float fPulseWidth1, float fPulseWidth2, float fPulsePeriod, uint nSampleWidth);
        [DispId(56)]
        bool DeviceReset();
        [DispId(57)]
        bool CallEisResultValue(out double dRsValue, out double dRpValue, out double dCValue);
        [DispId(58)]
        bool SetDevFilter(int nFilter);
        [DispId(59)]
        bool SetEisBiasGain(bool bBiasE, int nBiasGainE, bool bBiasI, int nBiasGainI);
        [DispId(60)]
        bool SetEisACAttenuation(bool bACAttenuation, int nACRatio);
    }
}