/******************************************************************************
 *                                                                         
 *               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("2a9a7fb1-9e80-48a3-bae9-91ac8672aef3"),
	v1_enum
]
enum Agilent34945AErrorCodesEnum
{
	E_AGILENT34945A_UNEXPECTED = 0x80044210,
	E_AGILENT34945A_PERSONALITY_NOT_ACTIVE = 0x80044211,
	E_AGILENT34945A_PERSONALITY_NOT_INSTALLED = 0x80044212,
	E_AGILENT34945A_PERSONALITY_NOT_LICENSED = 0x80044213,
	E_AGILENT34945A_IO_GENERAL = 0x80044214,
	E_AGILENT34945A_IO_TIMEOUT = 0x80044215,
	E_AGILENT34945A_MODEL_NOT_SUPPORTED = 0x80044216,
	E_AGILENT34945A_VALUE_OUT_OF_RANGE = 0x80044217,
	E_AGILENT34945A_WRAPPED_DRIVER_ERROR = 0x80044218,
	E_AGILENT34945A_MULTIPLE_CHANNELS_IN_GET = 0x80044096
};


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

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

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

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


[
	export, 
	library_block, 
	uuid("097d4210-faa7-4b52-961b-92a6069abc1c"),
	v1_enum, 
	helpstring("Enumeration for the polarity modes."), 
	helpcontext(HID_AGILENT34945APOLARITYENUM)
]
enum Agilent34945APolarityEnum
{
	Agilent34945APolarityNormal = 0,
	Agilent34945APolarityInverted = 1
};

[
	export, 
	library_block, 
	uuid("5f270618-c7a3-4720-b8cb-11431dccd678"),
	v1_enum, 
	helpstring("Enumeration for the drive types."), 
	helpcontext(HID_AGILENT34945ADRIVETYPEENUM)
]
enum Agilent34945ADriveTypeEnum
{
	Agilent34945ADriveTypeOpenCollector = 0,
	Agilent34945ADriveTypeTTL = 1
};

[
	export, 
	library_block, 
	uuid("2bedfb1d-6921-40cf-a9a8-ecbf1c557ef8"),
	v1_enum, 
	helpstring("Enumeration for the drive sources."), 
	helpcontext(HID_AGILENT34945ADRIVESOURCEENUM)
]
enum Agilent34945ADriveSourceEnum
{
	Agilent34945ADriveSourceInternal = 0,
	Agilent34945ADriveSourceExternal = 1,
	Agilent34945ADriveSourceOff = 2
};


[
	object, 
	library_block,
	uuid("003bfccc-1b56-4f7c-8b04-6e58e026d329"),
	helpstring("Agilent34945A root interface."), 
	helpcontext(HID_IAGILENT34945A),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34945A : IUnknown
{
	[propget, helpstring("Pointer to the IAgilent34945AChannel interface."), helpcontext(HID_IAGILENT34945A_CHANNEL)]
	HRESULT Channel([out, retval] IAgilent34945AChannel** val);

	[propget, helpstring("Pointer to the IAgilent34945AModule interface."), helpcontext(HID_IAGILENT34945A_MODULE)]
	HRESULT Module([out, retval] IAgilent34945AModule** val);

	[propget, helpstring("Pointer to the IAgilent34945ASystem interface."), helpcontext(HID_IAGILENT34945A_SYSTEM)]
	HRESULT System([out, retval] IAgilent34945ASystem** val);
};

[
	object, 
	library_block,
	uuid("fdbe3457-45a6-45a5-a3e9-6bb2f31a811f"),
	helpstring("IAgilent34945AChannel interface."), 
	helpcontext(HID_IAGILENT34945ACHANNEL),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34945AChannel : IUnknown
{
	[helpstring("Configures the channel subsystem."), helpcontext(HID_IAGILENT34945ACHANNEL_CONFIGURE)]
	HRESULT Configure([in] BSTR ChannelList, [in] VARIANT_BOOL Paired, [in] VARIANT_BOOL PulseMode, [in] double PulseWidth, [in] double RecoveryTime, [in] double SettleTime);

	[helpstring("Closes the specified channels on a multiplexer or switch module."), helpcontext(HID_IAGILENT34945ACHANNEL_CLOSE)]
	HRESULT Close([in] BSTR ChannelList);

	[helpstring("Opens the specified channels on a multiplexer or switch module."), helpcontext(HID_IAGILENT34945ACHANNEL_OPEN)]
	HRESULT Open([in] BSTR ChannelList);

	[propget, helpstring("Returns the current drive state of the specified channels on the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945ACHANNEL_DRIVESTATE)]
	HRESULT DriveState([in] BSTR ChannelList, [out, retval] VARIANT_BOOL* val);

	[propget, helpstring("Sets or gets the mode for drive pairing."), helpcontext(HID_IAGILENT34945ACHANNEL_PAIREDMODE)]
	HRESULT PairedMode([in] BSTR ChannelList, [out, retval] VARIANT_BOOL* val);

	[propput, helpstring("Sets or gets the mode for drive pairing."), helpcontext(HID_IAGILENT34945ACHANNEL_PAIREDMODE)]
	HRESULT PairedMode(BSTR ChannelList, VARIANT_BOOL val);

	[propget, helpstring("Sets or gets a value indicating whether the channel drive is Pulsed or Continuous."), helpcontext(HID_IAGILENT34945ACHANNEL_PULSEMODE)]
	HRESULT PulseMode([in] BSTR ChannelList, [out, retval] VARIANT_BOOL* val);

	[propput, helpstring("Sets or gets a value indicating whether the channel drive is Pulsed or Continuous."), helpcontext(HID_IAGILENT34945ACHANNEL_PULSEMODE)]
	HRESULT PulseMode(BSTR ChannelList, VARIANT_BOOL val);

	[propget, helpstring("Sets or gets the coil drive pulse width duration."), helpcontext(HID_IAGILENT34945ACHANNEL_PULSEWIDTH)]
	HRESULT PulseWidth([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets the coil drive pulse width duration."), helpcontext(HID_IAGILENT34945ACHANNEL_PULSEWIDTH)]
	HRESULT PulseWidth(BSTR ChannelList, double val);

	[propget, helpstring("Sets or gets the minimum recovery time for the channel drive power source, prior to driving another channel."), helpcontext(HID_IAGILENT34945ACHANNEL_RECOVERYTIME)]
	HRESULT RecoveryTime([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets the minimum recovery time for the channel drive power source, prior to driving another channel."), helpcontext(HID_IAGILENT34945ACHANNEL_RECOVERYTIME)]
	HRESULT RecoveryTime(BSTR ChannelList, double val);

	[propget, helpstring("Sets or gets an additional period of time imposed by the 34945EXT hardware following driving the channel before the switch operation is considerd complete (channel is busy until this time elapses)."), helpcontext(HID_IAGILENT34945ACHANNEL_SETTLETIME)]
	HRESULT SettleTime([in] BSTR ChannelList, [out, retval] double* val);

	[propput, helpstring("Sets or gets an additional period of time imposed by the 34945EXT hardware following driving the channel before the switch operation is considerd complete (channel is busy until this time elapses)."), helpcontext(HID_IAGILENT34945ACHANNEL_SETTLETIME)]
	HRESULT SettleTime(BSTR ChannelList, double val);

	[propget, helpstring("Sets ore gets the verification state for the specified channel(s)."), helpcontext(HID_IAGILENT34945ACHANNEL_VERIFICATIONENABLE)]
	HRESULT VerificationEnable([in] BSTR ChannelList, [out, retval] VARIANT_BOOL* val);

	[propput, helpstring("Sets ore gets the verification state for the specified channel(s)."), helpcontext(HID_IAGILENT34945ACHANNEL_VERIFICATIONENABLE)]
	HRESULT VerificationEnable(BSTR ChannelList, VARIANT_BOOL val);

	[propget, helpstring("Sets or gets the logic polarity of the verification lines on the specified channels."), helpcontext(HID_IAGILENT34945ACHANNEL_VERIFICATIONPOLARITY)]
	HRESULT VerificationPolarity([in] BSTR ChannelList, [out, retval] Agilent34945APolarityEnum* val);

	[propput, helpstring("Sets or gets the logic polarity of the verification lines on the specified channels."), helpcontext(HID_IAGILENT34945ACHANNEL_VERIFICATIONPOLARITY)]
	HRESULT VerificationPolarity(BSTR ChannelList, Agilent34945APolarityEnum val);

	[propget, helpstring("Sets or gets the default state of the specified channels."), helpcontext(HID_IAGILENT34945ACHANNEL_STATEATRESET)]
	HRESULT StateAtReset([in] BSTR ChannelList, [out, retval] VARIANT_BOOL* val);

	[propput, helpstring("Sets or gets the default state of the specified channels."), helpcontext(HID_IAGILENT34945ACHANNEL_STATEATRESET)]
	HRESULT StateAtReset(BSTR ChannelList, VARIANT_BOOL val);

	[propget, helpstring("Returns the state of the specified channel."), helpcontext(HID_IAGILENT34945ACHANNEL_ISCLOSED)]
	HRESULT IsClosed([in] BSTR Channel, [out, retval] VARIANT_BOOL* val);
};

[
	object, 
	library_block,
	uuid("88585ef1-b9d3-494b-a0f8-53f35fa28982"),
	helpstring("IAgilent34945AModule interface."), 
	helpcontext(HID_IAGILENT34945AMODULE),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34945AModule : IUnknown
{
	[helpstring("Sets the preset values on the specified bank."), helpcontext(HID_IAGILENT34945AMODULE_BANKPRESET)]
	HRESULT BankPreset([in] BSTR RemoteModuleList, [in] long Bank);

	[propget, helpstring("Configures the bank to drive its channels as either a TTL level or Open-collector sink for the drive current."), helpcontext(HID_IAGILENT34945AMODULE_BANKDRIVETYPE)]
	HRESULT BankDriveType([in] BSTR RemoteModuleList, [in] long Bank, [out, retval] Agilent34945ADriveTypeEnum* val);

	[propput, helpstring("Configures the bank to drive its channels as either a TTL level or Open-collector sink for the drive current."), helpcontext(HID_IAGILENT34945AMODULE_BANKDRIVETYPE)]
	HRESULT BankDriveType(BSTR RemoteModuleList, long Bank, Agilent34945ADriveTypeEnum val);

	[propget, helpstring("Disables or enables the LED drives on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_BANKLEDENABLE)]
	HRESULT BankLEDEnable([in] BSTR RemoteModuleList, [in] long Bank, [out, retval] VARIANT_BOOL* val);

	[propput, helpstring("Disables or enables the LED drives on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_BANKLEDENABLE)]
	HRESULT BankLEDEnable(BSTR RemoteModuleList, long Bank, VARIANT_BOOL val);

	[propget, helpstring("Sets or gets the current level for the LED drives on the specified 34945EXT remote module."), helpcontext(HID_IAGILENT34945AMODULE_BANKLEDDRIVELEVEL)]
	HRESULT BankLEDDriveLevel([in] BSTR RemoteModuleList, [in] long Bank, [out, retval] double* val);

	[propput, helpstring("Sets or gets the current level for the LED drives on the specified 34945EXT remote module."), helpcontext(HID_IAGILENT34945AMODULE_BANKLEDDRIVELEVEL)]
	HRESULT BankLEDDriveLevel(BSTR RemoteModuleList, long Bank, double val);

	[propget, helpstring("Sets or gets the number of simultaneous coil drive activations to be allowed on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_DRIVECHANNELLIMIT)]
	HRESULT DriveChannelLimit([in] BSTR RemoteModuleList, [out, retval] long* val);

	[propput, helpstring("Sets or gets the number of simultaneous coil drive activations to be allowed on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_DRIVECHANNELLIMIT)]
	HRESULT DriveChannelLimit(BSTR RemoteModuleList, long val);

	[propget, helpstring("Sets or gets the power source for driving channels on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_DRIVESOURCE)]
	HRESULT DriveSource([in] BSTR RemoteModuleList, [out, retval] Agilent34945ADriveSourceEnum* val);

	[propput, helpstring("Sets or gets the power source for driving channels on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_DRIVESOURCE)]
	HRESULT DriveSource(BSTR RemoteModuleList, Agilent34945ADriveSourceEnum val);

	[propget, helpstring("Sets or gets the power source to be used following the next boot (power) cycle or Factory Reset (*RST command) on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_DRIVESOURCEBOOTSTATE)]
	HRESULT DriveSourceBootState([in] BSTR RemoteModuleList, [out, retval] Agilent34945ADriveSourceEnum* val);

	[propput, helpstring("Sets or gets the power source to be used following the next boot (power) cycle or Factory Reset (*RST command) on the specified 34945EXT remote module connected to the 34945A Microwave Switch/Attenuator Driver."), helpcontext(HID_IAGILENT34945AMODULE_DRIVESOURCEBOOTSTATE)]
	HRESULT DriveSourceBootState(BSTR RemoteModuleList, Agilent34945ADriveSourceEnum val);
};

[
	object, 
	library_block,
	uuid("841655b2-ed83-49b3-8a0f-6617af111f9e"),
	helpstring("IAgilent34945ASystem interface."), 
	helpcontext(HID_IAGILENT34945ASYSTEM),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34945ASystem : IUnknown
{
	[helpstring("Resets all 34945EXT remote modules connected to the 34945A Microwave Switch/Attenuator Driver in the specified slot."), helpcontext(HID_IAGILENT34945ASYSTEM_REMOTEMODULERESET)]
	HRESULT RemoteModuleReset([in] long Slot);

	[propget, helpstring("Returns a string containing a description of one of four Distribution Boards connected to the specified 34945EXT remote module."), helpcontext(HID_IAGILENT34945ASYSTEM_REMOTEMODULEDESCRIPTION)]
	HRESULT RemoteModuleDescription([in] BSTR RemoteModule, [in] long Bank, [out, retval] BSTR* val);

	[propget, helpstring("Returns the identity of the one of four Distribution Boards connected to the specified 34945EXT remote module."), helpcontext(HID_IAGILENT34945ASYSTEM_REMOTEMODULETYPE)]
	HRESULT RemoteModuleType([in] BSTR RemoteModule, [in] long Bank, [out, retval] BSTR* val);

	[propget, helpstring("Returns the hardware state of the 34945EXT remote modules connected to the 34945A Microwave Switch/Attenuator Driver in the specified slot."), helpcontext(HID_IAGILENT34945ASYSTEM_REMOTEMODULESTATUS)]
	HRESULT RemoteModuleStatus([in] long Slot, [out, retval] BSTR* val);
};


#endif // __INTERFACES_NIMBUS_H__
