/******************************************************************************
 *                                                                         
 *               Nimbus auto-generated file
 *               !!! WARNING !!! -- DO NOT DIRECTLY EDIT THE CONTENTS OF THIS FILE.
 *				 Changes will be OVERWRITTEN by NIMBUS.
 *
 *****************************************************************************/

#ifndef __INTERFACES_NIMBUS_H__
#define __INTERFACES_NIMBUS_H__

#include "HelpContextIds.nimbus.h"
#include <winerror.h>

[
	export, 
	library_block, 
	uuid("c9bd6f45-2d03-4134-827d-0f60a40a20cf"),
	v1_enum
]
enum Agilent34951AErrorCodesEnum
{
	E_AGILENT34951A_UNEXPECTED = 0x80044210,
	E_AGILENT34951A_PERSONALITY_NOT_ACTIVE = 0x80044211,
	E_AGILENT34951A_PERSONALITY_NOT_INSTALLED = 0x80044212,
	E_AGILENT34951A_PERSONALITY_NOT_LICENSED = 0x80044213,
	E_AGILENT34951A_IO_GENERAL = 0x80044214,
	E_AGILENT34951A_IO_TIMEOUT = 0x80044215,
	E_AGILENT34951A_MODEL_NOT_SUPPORTED = 0x80044216,
	E_AGILENT34951A_VALUE_OUT_OF_RANGE = 0x80044217,
	E_AGILENT34951A_WRAPPED_DRIVER_ERROR = 0x80044218
};


__interface IAgilent34951A;
[idl_quote("interface IAgilent34951A;")];

__interface IAgilent34951ACurrent;
[idl_quote("interface IAgilent34951ACurrent;")];

__interface IAgilent34951AOutput;
[idl_quote("interface IAgilent34951AOutput;")];

__interface IAgilent34951ASource;
[idl_quote("interface IAgilent34951ASource;")];

__interface IAgilent34951ATrace;
[idl_quote("interface IAgilent34951ATrace;")];

__interface IAgilent34951ATrigger;
[idl_quote("interface IAgilent34951ATrigger;")];

__interface IAgilent34951AVoltage;
[idl_quote("interface IAgilent34951AVoltage;")];


[
	export, 
	library_block, 
	uuid("e5012ebf-bd1b-47b9-a7b3-f1b47d97c050"),
	v1_enum, 
	helpstring("Enumeration for clock source types."), 
	helpcontext(HID_AGILENT34951ACLOCKSOURCEENUM)
]
enum Agilent34951AClockSourceEnum
{
	Agilent34951AClockSourceInternal = 0,
	Agilent34951AClockSourceExternal = 1,
	Agilent34951AClockSourceStep = 2
};

[
	export, 
	library_block, 
	uuid("ad661283-6556-4182-9fab-af9d2d2379ad"),
	v1_enum, 
	helpstring("Enumeration for function types."), 
	helpcontext(HID_AGILENT34951AFUNCTIONTYPEENUM)
]
enum Agilent34951AFunctionTypeEnum
{
	Agilent34951AFunctionTypeCurrent = 0,
	Agilent34951AFunctionTypeVoltage = 1
};

[
	export, 
	library_block, 
	uuid("934cf85f-3929-4add-9977-046194a9a647"),
	v1_enum, 
	helpstring("Enumeration for trace waveform types."), 
	helpcontext(HID_AGILENT34951ATRACEWAVEFORMENUM)
]
enum Agilent34951ATraceWaveformEnum
{
	Agilent34951ATraceWaveformRamp = 1,
	Agilent34951ATraceWaveformSinusoid = 2,
	Agilent34951ATraceWaveformSquare = 3,
	Agilent34951ATraceWaveformTriangle = 4
};

[
	export, 
	library_block, 
	uuid("e582db96-5701-4c9d-9749-2a674e8bf427"),
	v1_enum, 
	helpstring("Enumeration for trigger source types."), 
	helpcontext(HID_AGILENT34951ATRACETRIGGERSOURCEENUM)
]
enum Agilent34951ATraceTriggerSourceEnum
{
	Agilent34951ATraceTriggerSourceManual = 1,
	Agilent34951ATraceTriggerSourceExternal = 2,
	Agilent34951ATraceTriggerSourceImmediate = 3
};


[
	object, 
	library_block,
	uuid("a237c160-861b-49b4-a481-841a70bac738"),
	helpstring("IAgilent34951A root interface."), 
	helpcontext(HID_IAGILENT34951A),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34951A : IUnknown
{
	[propget, helpstring("Retrieves a pointer to the Source interface."), helpcontext(HID_IAGILENT34951A_SOURCE)]
	HRESULT Source([out, retval] IAgilent34951ASource** val);

	[propget, helpstring("Retrieves a pointer to the Trace interface."), helpcontext(HID_IAGILENT34951A_TRACE)]
	HRESULT Trace([out, retval] IAgilent34951ATrace** val);

	[propget, helpstring("Retrieves a pointer to the Trigger interface."), helpcontext(HID_IAGILENT34951A_TRIGGER)]
	HRESULT Trigger([out, retval] IAgilent34951ATrigger** val);

	[propget, helpstring("Retrieves a pointer to the Output interface."), helpcontext(HID_IAGILENT34951A_OUTPUT)]
	HRESULT Output([out, retval] IAgilent34951AOutput** val);
};

[
	object, 
	library_block,
	uuid("ba29b2b8-8038-4a68-b416-82680db32ed0"),
	helpstring("IAgilent34951ACurrent interface."), 
	helpcontext(HID_IAGILENT34951ACURRENT),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34951ACurrent : IUnknown
{
	[helpstring("Configures the current output."), helpcontext(HID_IAGILENT34951ACURRENT_CONFIGURE)]
	HRESULT Configure([in] BSTR ChannelList, [in] double Level);

	[propget, helpstring("Sets or gets the output current level on the specified channels."), helpcontext(HID_IAGILENT34951ACURRENT_LEVEL)]
	HRESULT Level([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets the output current level on the specified channels."), helpcontext(HID_IAGILENT34951ACURRENT_LEVEL)]
	HRESULT Level(BSTR ChannelList, double val);

	[propget, helpstring("Sets or gets a current gain for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ACURRENT_GAIN)]
	HRESULT Gain([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets a current gain for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ACURRENT_GAIN)]
	HRESULT Gain(BSTR ChannelList, double val);

	[propget, helpstring("Sets or gets a current offset for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ACURRENT_OFFSET)]
	HRESULT Offset([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets a current offset for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ACURRENT_OFFSET)]
	HRESULT Offset(BSTR ChannelList, double val);
};

[
	object, 
	library_block,
	uuid("84175153-011f-4043-b11b-81829854bace"),
	helpstring("IAgilent34951AOutput interface."), 
	helpcontext(HID_IAGILENT34951AOUTPUT),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34951AOutput : IUnknown
{
	[propget, helpstring("Disables or enables the output state of the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951AOUTPUT_STATE)]
	HRESULT State([in] BSTR ChannelList, [out, retval] VARIANT_BOOL* val);

	[propput, helpstring("Disables or enables the output state of the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951AOUTPUT_STATE)]
	HRESULT State(BSTR ChannelList, VARIANT_BOOL val);
};

[
	object, 
	library_block,
	uuid("61b5941b-6db8-4e56-afd5-87c075a07598"),
	helpstring("IAgilent34951ASource interface."), 
	helpcontext(HID_IAGILENT34951ASOURCE),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34951ASource : IUnknown
{
	[helpstring("Sets the level for the specified function (CURRent or VOLTage) and closes the output relay on the specified channel(s)"), helpcontext(HID_IAGILENT34951ASOURCE_APPLYLEVEL)]
	HRESULT ApplyLevel([in] BSTR ChannelList, [in] Agilent34951AFunctionTypeEnum Function, [in] double Level);

	[helpstring("Configures a previously defined trace to the specified settings and outputs the trace."), helpcontext(HID_IAGILENT34951ASOURCE_APPLYTRACE)]
	HRESULT ApplyTrace([in] BSTR ChannelList, [in] BSTR TraceName, [in] Agilent34951AFunctionTypeEnum Function, [in] double Gain, [in] double Offset, [in] double Frequency);

	[helpstring("This routine does most of what ApplyTrace does, with a few notable exceptions listed in the Remarks."), helpcontext(HID_IAGILENT34951ASOURCE_CONFIGURETRACE)]
	HRESULT ConfigureTrace([in] BSTR ChannelList, [in] Agilent34951AFunctionTypeEnum Function, [in] BSTR TraceName, [in] double Gain, [in] double Offset);

	[helpstring("This method will set the starting index of the trace, set the number of cycles, and start the trace."), helpcontext(HID_IAGILENT34951ASOURCE_STARTTRACE)]
	HRESULT StartTrace([in] BSTR ChannelList, [in] long NumCycles, [in] long StartIndex);

	[helpstring("Stops trace outputs from the specified channels on the 34951A Isolated DAC Module.  The trace will stop immediately and the location of the trace data will be set back  to the specified by StartIndex property starting index."), helpcontext(HID_IAGILENT34951ASOURCE_HALTTRACE)]
	HRESULT HaltTrace([in] BSTR ChannelList);

	[propget, helpstring("Disables or enables the trace output mode on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_OPERATIONMODE)]
	HRESULT OperationMode([in] BSTR ChannelList, [out, retval] VARIANT_BOOL* val);

	[propput, helpstring("Disables or enables the trace output mode on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_OPERATIONMODE)]
	HRESULT OperationMode(BSTR ChannelList, VARIANT_BOOL val);

	[propget, helpstring("Selects the voltage or current mode for the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_FUNCTIONTYPE)]
	HRESULT FunctionType([in] BSTR ChannelList, [out, retval] Agilent34951AFunctionTypeEnum* val);

	[propput, helpstring("Selects the voltage or current mode for the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_FUNCTIONTYPE)]
	HRESULT FunctionType(BSTR ChannelList, Agilent34951AFunctionTypeEnum val);

	[propget, helpstring("Sets or gets the number of trace cycles to be output from the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_NUMCYCLES)]
	HRESULT NumCycles([in] BSTR ChannelList, [out, retval] long* val);

	[propput, helpstring("Sets or gets the number of trace cycles to be output from the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_NUMCYCLES)]
	HRESULT NumCycles(BSTR ChannelList, long val);

	[propget, helpstring("Setst or gets the starting point (index) for trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_STARTINDEX)]
	HRESULT StartIndex([in] BSTR ChannelLast, [out, retval] long* val);

	[propput, helpstring("Setst or gets the starting point (index) for trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_STARTINDEX)]
	HRESULT StartIndex(BSTR ChannelLast, long val);

	[propget, helpstring("A previously-defined trace name consisting of up to 12 characters."), helpcontext(HID_IAGILENT34951ASOURCE_TRACENAME)]
	HRESULT TraceName([in] BSTR ChannelList, [out, retval] BSTR* val);

	[propput, helpstring("A previously-defined trace name consisting of up to 12 characters."), helpcontext(HID_IAGILENT34951ASOURCE_TRACENAME)]
	HRESULT TraceName(BSTR ChannelList, BSTR val);

	[propget, helpstring("Sets or gets the internal clock frequency for trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_FREQUENCY)]
	HRESULT Frequency([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets the internal clock frequency for trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ASOURCE_FREQUENCY)]
	HRESULT Frequency(BSTR ChannelList, double val);

	[propget, helpstring("Retrieves a pointer to the Current interface."), helpcontext(HID_IAGILENT34951ASOURCE_CURRENT)]
	HRESULT Current([out, retval] IAgilent34951ACurrent** val);

	[propget, helpstring("Retrieves a pointer to the Voltage interface."), helpcontext(HID_IAGILENT34951ASOURCE_VOLTAGE)]
	HRESULT Voltage([out, retval] IAgilent34951AVoltage** val);
};

[
	object, 
	library_block,
	uuid("0f22b496-477b-423d-9d1e-1122a1d2d009"),
	helpstring("IAgilent34951ATrace  interface."), 
	helpcontext(HID_IAGILENT34951ATRACE),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34951ATrace : IUnknown
{
	[helpstring("Downloads 16-bit signed integer values between -32768 and +32767 into volatile   memory on the 34951A Isolated DAC Module in the specified slot."), helpcontext(HID_IAGILENT34951ATRACE_CREATECUSTOMINTEGER)]
	HRESULT CreateCustomInteger([in] long SlotNumber, [in] BSTR Name, [in] long Points, [in] [satype(long)] SAFEARRAY** DataArray);

	[helpstring("Downloads 32-bit floating-point values between -1 and +1 into volatile memory on the 34951A Isolated DAC Module in the specified slot."), helpcontext(HID_IAGILENT34951ATRACE_CREATECUSTOMFLOAT)]
	HRESULT CreateCustomFloat([in] long SlotNumber, [in] BSTR Name, [in] long NumPoints, [in] [satype(double)] SAFEARRAY** DataArray);

	[helpstring("Generates trace data based on several standard shapes on the 34951A Isolated DAC Module in the specified slot."), helpcontext(HID_IAGILENT34951ATRACE_CREATESTANDARD)]
	HRESULT CreateStandard([in] long SlotNumber, [in] BSTR Name, [in] long Points, [in] Agilent34951ATraceWaveformEnum Type);

	[helpstring("Deletes a trace from volatile memory on the 34951A Isolated DAC Module in the specified slot."), helpcontext(HID_IAGILENT34951ATRACE_DELETE)]
	HRESULT Delete([in] long SlotNumber, [in] BSTR TraceName);

	[helpstring("Deletes all traces from memory on the 34951A DAC Module in the specified slot."), helpcontext(HID_IAGILENT34951ATRACE_DELETEALL)]
	HRESULT DeleteAll([in] long SlotNumber);

	[helpstring("Creates a trace from data in the specified file.  The file is a text file, consisting of numbers between -1.0 and +1.0, each number is on its own line (i.e. a newline character appears after each numeric entry, except the last one).  The file contains onl"), helpcontext(HID_IAGILENT34951ATRACE_CREATECUSTOMFROMFILE)]
	HRESULT CreateCustomFromFile([in] long SlotNumber, [in] BSTR Name, [in] BSTR SourceFile);

	[propget, helpstring("Returns the number of points used by the trace waveform on the 34951A Isolated DAC Module in the specified slot."), helpcontext(HID_IAGILENT34951ATRACE_POINTS)]
	HRESULT Points([in] long SlotNumber, [in] BSTR Name, [out, retval] long* val);

	[propget, helpstring("Returns the largest contiguous block of available volatile memory on the 34951A Isolated DAC Module in the specified slot"), helpcontext(HID_IAGILENT34951ATRACE_MEMORYFREE)]
	HRESULT MemoryFree([in] long SlotNumber, [out, retval] long* val);

	[propget, helpstring("Returns a list of trace names currently downloaded to volatile memory on the 34951A Isolated DAC Module in the specified slot."), helpcontext(HID_IAGILENT34951ATRACE_CATALOG)]
	HRESULT Catalog([in] long SlotNumber, [out, retval] BSTR* val);
};

[
	object, 
	library_block,
	uuid("669a2ce4-8b03-493b-9df9-fc116c717632"),
	helpstring("IAgilent34951ATrigger interface."), 
	helpcontext(HID_IAGILENT34951ATRIGGER),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34951ATrigger : IUnknown
{
	[helpstring("Sets the trigger source to the specified trigSource, selects the INTernal clock source, and sets output pacing of each trace point to the specified period."), helpcontext(HID_IAGILENT34951ATRIGGER_CONFIGUREINTERNALPACING)]
	HRESULT ConfigureInternalPacing([in] BSTR ChannelList, [in] Agilent34951ATraceTriggerSourceEnum TriggerSource, [in] double Period);

	[helpstring("Sets the trigger source to the specified TriggerSource, selects the EXTernal clock source, and sets trace point output pacing to be the EXTernal clock divided by the divisor parameter."), helpcontext(HID_IAGILENT34951ATRIGGER_CONFIGUREEXTERNALPACING)]
	HRESULT ConfigureExternalPacing([in] BSTR ChannelList, [in] Agilent34951ATraceTriggerSourceEnum TriggerSource, [in] long Divisor);

	[helpstring("Starts trace outputs from the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ATRIGGER_TRIGGERIMMEDIATE)]
	HRESULT TriggerImmediate([in] BSTR ChannelList);

	[propget, helpstring("Sets or gets the trigger source for enabling outputs on the specified channels on the 34951A Isolated DAC Module"), helpcontext(HID_IAGILENT34951ATRIGGER_SOURCE)]
	HRESULT Source([in] BSTR ChannelList, [out, retval] Agilent34951ATraceTriggerSourceEnum* val);

	[propput, helpstring("Sets or gets the trigger source for enabling outputs on the specified channels on the 34951A Isolated DAC Module"), helpcontext(HID_IAGILENT34951ATRIGGER_SOURCE)]
	HRESULT Source(BSTR ChannelList, Agilent34951ATraceTriggerSourceEnum val);

	[propget, helpstring("Sets or gets the clock source for pacing trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ATRIGGER_CLOCKSOURCE)]
	HRESULT ClockSource([in] BSTR ChannelList, [out, retval] Agilent34951AClockSourceEnum* val);

	[propput, helpstring("Sets or gets the clock source for pacing trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951ATRIGGER_CLOCKSOURCE)]
	HRESULT ClockSource(BSTR ChannelList, Agilent34951AClockSourceEnum val);

	[propget, helpstring("Sets or gets the period used to output each point in the trace, when internal pacing is selected."), helpcontext(HID_IAGILENT34951ATRIGGER_CLOCKPERIOD)]
	HRESULT ClockPeriod([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets the period used to output each point in the trace, when internal pacing is selected."), helpcontext(HID_IAGILENT34951ATRIGGER_CLOCKPERIOD)]
	HRESULT ClockPeriod(BSTR ChannelList, double val);
};

[
	object, 
	library_block,
	uuid("227bcfa0-6ef4-494e-bf73-11d018120f34"),
	helpstring("IAgilent34951AVoltage interface."), 
	helpcontext(HID_IAGILENT34951AVOLTAGE),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34951AVoltage : IUnknown
{
	[helpstring("Configures the voltage output."), helpcontext(HID_IAGILENT34951AVOLTAGE_CONFIGURE)]
	HRESULT Configure([in] BSTR ChannelList, [in] double Level);

	[propget, helpstring("Sets a or gets voltage gain for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951AVOLTAGE_GAIN)]
	HRESULT Gain([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets a or gets voltage gain for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951AVOLTAGE_GAIN)]
	HRESULT Gain(BSTR ChannelList, double val);

	[propget, helpstring("Sets or gets the output voltage level for the specified channels."), helpcontext(HID_IAGILENT34951AVOLTAGE_LEVEL)]
	HRESULT Level([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets the output voltage level for the specified channels."), helpcontext(HID_IAGILENT34951AVOLTAGE_LEVEL)]
	HRESULT Level(BSTR ChannelList, double val);

	[propget, helpstring("Sets or gets a voltage offset for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951AVOLTAGE_OFFSET)]
	HRESULT Offset([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets a voltage offset for scaled trace outputs on the specified channels on the 34951A Isolated DAC Module."), helpcontext(HID_IAGILENT34951AVOLTAGE_OFFSET)]
	HRESULT Offset(BSTR ChannelList, double val);
};


#endif // __INTERFACES_NIMBUS_H__
