/******************************************************************************
 *                                                                         
 *               Copyright 2004-2006 Agilent Technologies
 *               All rights reserved.
 *
 *****************************************************************************/
 
#include "stdafx.h"
#include "CoAgilent34980A.h"

/// <summary>
/// Returns the oldest record from the coercion record list.  Records are only added
/// to the list if RecordCoercions is True.
/// </summary>
/// <remarks>
/// 
/// </remarks>
/// <returns>
///	The coercion record string shall contain the following information: (1) The
/// name of the attribute that was coerced.  This can be the generic name, the COM
/// property name, or the C defined constant. (2) If the attribute is channel-based,
/// the name of the channel.   The channel name can be the specific driver channel
/// string or the virtual channel name that the user specified.(3) If the attribute
/// applies to a repeated capability, the name of the repeated capability. The name
/// can be the specific driver repeated capability token or the virtual repeated
/// capability name that the user specified.(4) The value that the user specified
/// for the attribute.(5) The value to which the attribute was coerced.
/// </returns>
HRESULT Agilent34980A::IIviDriverOperation_GetNextCoercionRecord(BSTR* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::GetNextCoercionRecord(Val);

	return hr;
}

/// <summary>
/// Resets the interchangeability checking algorithms of the driver so that methods
/// and properties that executed prior to calling this function have no affect on
/// whether future calls to the driver generate interchangeability warnings.
/// </summary>
/// <remarks>
/// 
/// </remarks>
/// <returns>
///	
/// </returns>
HRESULT Agilent34980A::IIviDriverOperation_ResetInterchangeCheck()
{
	HRESULT hr = S_OK;

	hr = DriverBase::ResetInterchangeCheck();

	return hr;
}

/// <summary>
/// Returns the oldest warning from the interchange warning list.  Records are only
/// added to the list if InterchangeCheck is True.
/// </summary>
/// <remarks>
/// 
/// </remarks>
/// <returns>
///	A string describing the oldest interchangeability warning or empty string if
/// no warrnings remain.
/// </returns>
HRESULT Agilent34980A::IIviDriverOperation_GetNextInterchangeWarning(BSTR* Val)
{
	HRESULT hr = S_OK;

	//hr = DriverBase::GetNextInterchangeWarning(Val);

	return hr;
}

/// <summary>
/// Clears the list of interchangeability warnings that the IVI specific driver
/// maintains.
/// </summary>
/// <remarks>
/// 
/// </remarks>
/// <returns>
///	
/// </returns>
HRESULT Agilent34980A::IIviDriverOperation_ClearInterchangeWarnings()
{
	HRESULT hr = S_OK;

	//hr = DriverBase::ClearInterchangeWarnings();

	return hr;
}

/// <summary>
/// Invalidates all of the driver's cached values.
/// </summary>
/// <remarks>
/// 
/// </remarks>
/// <returns>
///	
/// </returns>
HRESULT Agilent34980A::IIviDriverOperation_InvalidateAllAttributes()
{
	HRESULT hr = S_OK;

	hr = DriverBase::InvalidateAllAttributes();

	return hr;
}

/// <summary>
///	Logical Name identifies a driver session in the Configuration Store.  If Logical
/// Name is not empty, the driver was initialized from information in the driver
/// session.  If it is empty, the driver was initialized without using the Configuration
/// Store.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_LogicalName(BSTR* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_LogicalName(Val);

	return hr;
}

/// <summary>
///	The resource descriptor specifies the connection to a physical device.  It is
/// either specified in the Configuration Store or passed in the ResourceName parameter
/// of the Initialize function.  It is empty if the driver is not initialized.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_IoResourceDescriptor(BSTR* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_IoResourceDescriptor(Val);

	return hr;
}

/// <summary>
///	Drivers may choose to always cache some instrument settings, never cache others,
/// and optionally cache others, to avoid unecessary I/O to the instrument.  If
/// True, the driver caches optionally cached instrument settings.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_Cache(VARIANT_BOOL* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_Cache(Val);

	return hr;
}

/// <summary>
///	Drivers may choose to always cache some instrument settings, never cache others,
/// and optionally cache others, to avoid unecessary I/O to the instrument.  If
/// True, the driver caches optionally cached instrument settings.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_put_Cache(VARIANT_BOOL Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::put_Cache(Val);

	return hr;
}

/// <summary>
///	If True, the driver maintains a record of interchangeability warnings.  If the
/// driver does not support interchangeability checking, attempts to set InterchangeCheck
/// to True return an error.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_InterchangeCheck(VARIANT_BOOL* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_InterchangeCheck(Val);

	return hr;
}

/// <summary>
///	If True, the driver maintains a record of interchangeability warnings.  If the
/// driver does not support interchangeability checking, attempts to set InterchangeCheck
/// to True return an error.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_put_InterchangeCheck(VARIANT_BOOL Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::put_InterchangeCheck(Val);

	return hr;
}

/// <summary>
///	If True, the driver queries the instrument status at the end of each method
/// or property that performs I/O to the instrument.  If an error is reported, use
/// ErrorQuery to retrieve error messages one at a time from the instrument.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_QueryInstrumentStatus(VARIANT_BOOL* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_QueryInstrumentStatus(Val);

	return hr;
}

/// <summary>
///	If True, the driver queries the instrument status at the end of each method
/// or property that performs I/O to the instrument.  If an error is reported, use
/// ErrorQuery to retrieve error messages one at a time from the instrument.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_put_QueryInstrumentStatus(VARIANT_BOOL Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::put_QueryInstrumentStatus(Val);

	return hr;
}

/// <summary>
///	Drivers may choose to always validate some property/parameter values, never
/// validate others, and optionally validate others, to avoid sending invalid commands
/// to the instrument.  If True, the driver performs optional validations.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_RangeCheck(VARIANT_BOOL* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_RangeCheck(Val);

	return hr;
}

/// <summary>
///	Drivers may choose to always validate some property/parameter values, never
/// validate others, and optionally validate others, to avoid sending invalid commands
/// to the instrument.  If True, the driver performs optional validations.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_put_RangeCheck(VARIANT_BOOL Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::put_RangeCheck(Val);

	return hr;
}

/// <summary>
///	If True, the driver keeps a list of the value coercions it makes for ViInt32
/// and ViReal64 attributes.  If the driver does not support coercion recording,
/// attempts to set RecordCoercions to True will return an error.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_RecordCoercions(VARIANT_BOOL* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_RecordCoercions(Val);

	return hr;
}

/// <summary>
///	If True, the driver keeps a list of the value coercions it makes for ViInt32
/// and ViReal64 attributes.  If the driver does not support coercion recording,
/// attempts to set RecordCoercions to True will return an error.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_put_RecordCoercions(VARIANT_BOOL Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::put_RecordCoercions(Val);

	return hr;
}

/// <summary>
///	If True, the driver does not perform I/O to the instrument, and returns simulated
/// values for output parameters.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_Simulate(VARIANT_BOOL* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_Simulate(Val);

	return hr;
}

/// <summary>
///	If True, the driver does not perform I/O to the instrument, and returns simulated
/// values for output parameters.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_put_Simulate(VARIANT_BOOL Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::put_Simulate(Val);

	return hr;
}

/// <summary>
///	The driver setup string.  It is either specified in the Configuration Store
/// or passed in the OptionString parameter of the Initialize function.  Driver
/// setup is empty if the driver is not initialized.
/// </summary>
/// <remarks>
///	
/// </remarks>
HRESULT Agilent34980A::IIviDriverOperation_get_DriverSetup(BSTR* Val)
{
	HRESULT hr = S_OK;

	hr = DriverBase::get_DriverSetup(Val);

	return hr;
}


