/******************************************************************************
 *                                                                         
 *               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("5019ac42-8db7-4426-8b41-f79975be2ad4"),
	v1_enum
]
enum Agilent34959AErrorCodesEnum
{
	E_AGILENT34959A_UNEXPECTED = 0x80044210,
	E_AGILENT34959A_PERSONALITY_NOT_ACTIVE = 0x80044211,
	E_AGILENT34959A_PERSONALITY_NOT_INSTALLED = 0x80044212,
	E_AGILENT34959A_PERSONALITY_NOT_LICENSED = 0x80044213,
	E_AGILENT34959A_IO_GENERAL = 0x80044214,
	E_AGILENT34959A_IO_TIMEOUT = 0x80044215,
	E_AGILENT34959A_MODEL_NOT_SUPPORTED = 0x80044216,
	E_AGILENT34959A_VALUE_OUT_OF_RANGE = 0x80044217,
	E_AGILENT34959A_WRAPPED_DRIVER_ERROR = 0x80044218
};


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

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

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


[
	export, 
	library_block, 
	uuid("3e040d66-1df4-4806-8f6a-b318636d8ec8"),
	v1_enum, 
	helpstring("Enumeration for the signal direction."), 
	helpcontext(HID_AGILENT34959ADIRECTIONENUM)
]
enum Agilent34959ADirectionEnum
{
	Agilent34959ADirectionInput = 0,
	Agilent34959ADirectionOutput = 1
};

[
	export, 
	library_block, 
	uuid("4e2f667d-c9e8-44f9-b317-2b189e140d21"),
	v1_enum, 
	helpstring("Enumeration for the channel width."), 
	helpcontext(HID_AGILENT34959AWIDTHENUM)
]
enum Agilent34959AWidthEnum
{
	Agilent34959AWidthByte = 0,
	Agilent34959AWidthWord = 1,
	Agilent34959AWidthLongWord = 2
};


[
	object, 
	library_block,
	uuid("3010a4a7-4b16-4739-bf1b-9993612234f6"),
	helpstring("Agilent34959A root interface."), 
	helpcontext(HID_IAGILENT34959A),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34959A : IUnknown
{
	[propget, helpstring("Pointer to the IAgilent34959ADigital interface."), helpcontext(HID_IAGILENT34959A_DIGITAL)]
	HRESULT Digital([out, retval] IAgilent34959ADigital** val);

	[propget, helpstring("Pointer to the IAgilent34959Aoute interface."), helpcontext(HID_IAGILENT34959A_ROUTE)]
	HRESULT Route([out, retval] IAgilent34959ARoute** val);
};

[
	object, 
	library_block,
	uuid("a717ee77-acbb-473d-9d2d-d575502c3aef"),
	helpstring("IAgilent34959ARoute interface."), 
	helpcontext(HID_IAGILENT34959AROUTE),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34959ARoute : IUnknown
{
	[helpstring("Closes the specified channels on a multiplexer or switch module."), helpcontext(HID_IAGILENT34959AROUTE_CLOSE)]
	HRESULT Close([in] BSTR ChannelList);

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

	[helpstring("Opens all channels on the specified slot (module)."), helpcontext(HID_IAGILENT34959AROUTE_OPENALL)]
	HRESULT OpenAll([in] long Slot);

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

[
	object, 
	library_block,
	uuid("2d0fe6f4-8da5-4c91-97d1-0d433afb9c04"),
	helpstring("IAgilent34959ADigital interface."), 
	helpcontext(HID_IAGILENT34959ADIGITAL),
	pointer_default(unique),
	oleautomation
]
__interface IAgilent34959ADigital : IUnknown
{
	[helpstring("Configures digital subsystem."), helpcontext(HID_IAGILENT34959ADIGITAL_CONFIGURE)]
	HRESULT Configure([in] BSTR ChannelList, [in] Agilent34959AWidthEnum Width, [in] Agilent34959ADirectionEnum Direction);

	[helpstring("Returns the last 1-bit value written to the specified output channel."), helpcontext(HID_IAGILENT34959ADIGITAL_QUERYLASTBIT)]
	HRESULT QueryLastBit([in] BSTR ChannelList, [in] long BitNumber, [out, retval] VARIANT_BOOL* val);

	[helpstring("Returns the last 8-bit value written to the specified output channels ."), helpcontext(HID_IAGILENT34959ADIGITAL_QUERYLASTBYTE)]
	HRESULT QueryLastByte([in] BSTR ChannelList, [out, retval] BYTE* val);

	[helpstring("Returns the last 16-bit value written to the specified output channels (specified channel must be either the first channel or third channel on the module)."), helpcontext(HID_IAGILENT34959ADIGITAL_QUERYLASTWORD)]
	HRESULT QueryLastWord([in] BSTR ChannelList, [out, retval] short* val);

	[helpstring("Reads the value of the specified bit location (0 through 7) on the specified digital input channels and sends the results directly to the instrument's output buffer."), helpcontext(HID_IAGILENT34959ADIGITAL_READBIT)]
	HRESULT ReadBit([in] BSTR Channel, [in] long BitNumber, [out, retval] VARIANT_BOOL* val);

	[helpstring("Performs an 8-bit read on the specified digital input channels and sends the results directly to the instrument's output buffer."), helpcontext(HID_IAGILENT34959ADIGITAL_READBYTE)]
	HRESULT ReadByte([in] BSTR ChannelList, [out, retval] BYTE* val);

	[helpstring("Performs a 16-bit read on the specified digital input channel (specified channel must be either the first channel or third channel on the module) and sends the results directly to the instrument's output buffer."), helpcontext(HID_IAGILENT34959ADIGITAL_READWORD)]
	HRESULT ReadWord([in] BSTR ChannelList, [out, retval] short* val);

	[helpstring("Sets or clears individual bits on the specified digital output channels."), helpcontext(HID_IAGILENT34959ADIGITAL_WRITEBIT)]
	HRESULT WriteBit([in] BSTR ChannelList, [in] long BitNumber, [in] VARIANT_BOOL Data);

	[helpstring("Outputs the specified 8-bit (byte) value on the specified digital output channels."), helpcontext(HID_IAGILENT34959ADIGITAL_WRITEBYTE)]
	HRESULT WriteByte([in] BSTR ChannelList, [in] BYTE Data);

	[helpstring("Outputs the specified 16-bit pattern on the specified digital output channels (must be either first or third channel on a module)."), helpcontext(HID_IAGILENT34959ADIGITAL_WRITEWORD)]
	HRESULT WriteWord([in] BSTR ChannelList, [in] short Data);

	[propget, helpstring("Sets or gets the signal direction (input or output)."), helpcontext(HID_IAGILENT34959ADIGITAL_DIRECTION)]
	HRESULT Direction([in] BSTR ChannelList, [out, retval] Agilent34959ADirectionEnum* val);

	[propput, helpstring("Sets or gets the signal direction (input or output)."), helpcontext(HID_IAGILENT34959ADIGITAL_DIRECTION)]
	HRESULT Direction(BSTR ChannelList, Agilent34959ADirectionEnum val);

	[propget, helpstring("Sets or gets the digital channel width (1,2 or 4 bytes)."), helpcontext(HID_IAGILENT34959ADIGITAL_WIDTH)]
	HRESULT Width([in] BSTR ChannelList, [out, retval] Agilent34959AWidthEnum* val);

	[propput, helpstring("Sets or gets the digital channel width (1,2 or 4 bytes)."), helpcontext(HID_IAGILENT34959ADIGITAL_WIDTH)]
	HRESULT Width(BSTR ChannelList, Agilent34959AWidthEnum val);
};


#endif // __INTERFACES_NIMBUS_H__
