static const char *RcsId     = "$Header: /home/cvsadm/cvsroot/AbstractClasses/SpectrumAnalyzer/SpectrumAnalyzerClass.cpp,v 1.1 2008/04/23 12:27:46 claudio Exp $";
static const char *TagName   = "$Name:  $";
static const char *HttpServer= "http://www.esrf.fr/computing/cs/tango/tango_doc/ds_doc/";
//+=============================================================================
//
// file :        SpectrumAnalyzerClass.cpp
//
// description : C++ source for the SpectrumAnalyzerClass. A singleton
//               class derived from DeviceClass. It implements the
//               command list and all properties and methods required
//               by the SpectrumAnalyzer once per process.
//
// project :     TANGO Device Server
//
// $Author: claudio $
//
// $Revision: 1.1 $
//
// $Log: SpectrumAnalyzerClass.cpp,v $
// Revision 1.1  2008/04/23 12:27:46  claudio
// first import
//
//
// copyleft :   European Synchrotron Radiation Facility
//              BP 220, Grenoble 38043
//              FRANCE
//
//-=============================================================================
//
//  		This file is generated by POGO
//	(Program Obviously used to Generate tango Object)
//
//         (c) - Software Engineering Group - ESRF
//=============================================================================


#include <tango.h>

#include <SpectrumAnalyzer.h>
#include <SpectrumAnalyzerClass.h>


namespace SpectrumAnalyzer_ns
{















//+----------------------------------------------------------------------------
//
// method : 		ResetClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *ResetClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "ResetClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->reset());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		ClearStatusClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *ClearStatusClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "ClearStatusClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->clear_status());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		RemoteClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *RemoteClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "RemoteClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->remote());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		LocalClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *LocalClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "LocalClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->local());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		GetPeakClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *GetPeakClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "GetPeakClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->get_peak());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		SetSingleSweepClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *SetSingleSweepClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "SetSingleSweepClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->set_single_sweep());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		ChangePowUnitsClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *ChangePowUnitsClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "ChangePowUnitsClass::execute(): arrived" << endl;

	Tango::DevString	argin;
	extract(in_any, argin);

	((static_cast<SpectrumAnalyzer *>(device))->change_pow_units(argin));
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		GetErrorInfoClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *GetErrorInfoClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "GetErrorInfoClass::execute(): arrived" << endl;

	return insert((static_cast<SpectrumAnalyzer *>(device))->get_error_info());
}

//+----------------------------------------------------------------------------
//
// method : 		GetMinClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *GetMinClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "GetMinClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->get_min());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		SetContinuousSweepClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *SetContinuousSweepClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "SetContinuousSweepClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->set_continuous_sweep());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		RestartMeasurementClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *RestartMeasurementClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "RestartMeasurementClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->restart_measurement());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		SetAutoAttenuationClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *SetAutoAttenuationClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "SetAutoAttenuationClass::execute(): arrived" << endl;

	Tango::DevBoolean	argin;
	extract(in_any, argin);

	((static_cast<SpectrumAnalyzer *>(device))->set_auto_attenuation(argin));
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		GetAutoAttenuationClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *GetAutoAttenuationClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "GetAutoAttenuationClass::execute(): arrived" << endl;

	return insert((static_cast<SpectrumAnalyzer *>(device))->get_auto_attenuation());
}

//+----------------------------------------------------------------------------
//
// method : 		SetAsciiDataClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *SetAsciiDataClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "SetAsciiDataClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->set_ascii_data());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		SetINT32DataClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *SetINT32DataClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "SetINT32DataClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->set_int32_data());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		SetReal32DataClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *SetReal32DataClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "SetReal32DataClass::execute(): arrived" << endl;

	((static_cast<SpectrumAnalyzer *>(device))->set_real32_data());
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		GetDataFormatClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *GetDataFormatClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "GetDataFormatClass::execute(): arrived" << endl;

	return insert((static_cast<SpectrumAnalyzer *>(device))->get_data_format());
}

//+----------------------------------------------------------------------------
//
// method : 		SaveDataClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *SaveDataClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "SaveDataClass::execute(): arrived" << endl;

	Tango::DevString	argin;
	extract(in_any, argin);

	((static_cast<SpectrumAnalyzer *>(device))->save_data(argin));
	return new CORBA::Any();
}

//+----------------------------------------------------------------------------
//
// method : 		PrintDataClass::execute()
// 
// description : 	method to trigger the execution of the command.
//                PLEASE DO NOT MODIFY this method core without pogo   
//
// in : - device : The device on which the command must be excuted
//		- in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *PrintDataClass::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{

	cout2 << "PrintDataClass::execute(): arrived" << endl;

	Tango::DevString	argin;
	extract(in_any, argin);

	return insert((static_cast<SpectrumAnalyzer *>(device))->print_data(argin));
}


//+----------------------------------------------------------------------------
//
// method : 		SpectrumAnalyzerClass::SpectrumAnalyzerClass(string &s)
// 
// description : 	constructor for the SpectrumAnalyzerClass
//
// in : - s : The class name
//
//-----------------------------------------------------------------------------
SpectrumAnalyzerClass::SpectrumAnalyzerClass(string &s):DeviceClass(s)
{

	cout2 << "Entering SpectrumAnalyzerClass constructor" << endl;
	
	cout2 << "Leaving SpectrumAnalyzerClass constructor" << endl;

}
//+----------------------------------------------------------------------------
//
// method : 		SpectrumAnalyzerClass::command_factory
// 
// description : 	Create the command object(s) and store them in the 
//			command list
//
//-----------------------------------------------------------------------------
void SpectrumAnalyzerClass::command_factory()
{
	command_list.push_back(new ResetClass("Reset",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new ClearStatusClass("ClearStatus",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new RemoteClass("Remote",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new LocalClass("Local",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new GetPeakClass("GetPeak",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new SetSingleSweepClass("SetSingleSweep",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new ChangePowUnitsClass("ChangePowUnits",
		Tango::DEV_STRING, Tango::DEV_VOID,
		"Set the power units of measure: DBM, DBMV, DBUV, W, V",
		"",
		Tango::OPERATOR));
	command_list.push_back(new GetErrorInfoClass("GetErrorInfo",
		Tango::DEV_VOID, Tango::DEV_STRING,
		"",
		"The string represents the earliest entry to the error queue.",
		Tango::OPERATOR));
	command_list.push_back(new GetMinClass("GetMin",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new SetContinuousSweepClass("SetContinuousSweep",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new RestartMeasurementClass("RestartMeasurement",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new SetAutoAttenuationClass("SetAutoAttenuation",
		Tango::DEV_BOOLEAN, Tango::DEV_VOID,
		"1 Enables auto attenuation, 0 disables it.",
		"",
		Tango::OPERATOR));
	command_list.push_back(new GetAutoAttenuationClass("GetAutoAttenuation",
		Tango::DEV_VOID, Tango::DEV_BOOLEAN,
		"",
		"! if auto attenuation is enabled, 0 if disabled",
		Tango::OPERATOR));
	command_list.push_back(new SetAsciiDataClass("SetAsciiData",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new SetINT32DataClass("SetINT32Data",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new SetReal32DataClass("SetReal32Data",
		Tango::DEV_VOID, Tango::DEV_VOID,
		"",
		"",
		Tango::OPERATOR));
	command_list.push_back(new GetDataFormatClass("GetDataFormat",
		Tango::DEV_VOID, Tango::DEV_STRING,
		"",
		"Returns the format of the data in trace",
		Tango::OPERATOR));
	command_list.push_back(new SaveDataClass("SaveData",
		Tango::DEV_STRING, Tango::DEV_VOID,
		"Name of the file to which you want to save trace data.",
		"",
		Tango::OPERATOR));
	command_list.push_back(new PrintDataClass("PrintData",
		Tango::DEV_STRING, Tango::CONST_DEV_STRING,
		"Input data filename.",
		"Output in string format.",
		Tango::OPERATOR));

	//	add polling if any
	for (unsigned int i=0 ; i<command_list.size(); i++)
	{
	}
}
//+----------------------------------------------------------------------------
//	Method: SpectrumAnalyzerClass::attribute_factory(vector<Tango::Attr *> &att_list)
//-----------------------------------------------------------------------------
void SpectrumAnalyzerClass::attribute_factory(vector<Tango::Attr *> &att_list)
{
	//	Attribute : Span
	SpanAttrib	*span = new SpanAttrib();
	Tango::UserDefaultAttrProp	span_prop;
	span_prop.set_label("Frequency  Span");
	span_prop.set_unit("MHz");
	span_prop.set_format("%6.2f");
	span_prop.set_max_value("3000");
	span_prop.set_min_value("0.009");
	span_prop.set_description("Span Frequency, in MHz");
	span->set_default_properties(span_prop);
	att_list.push_back(span);

	//	Attribute : CenterFrequency
	CenterFrequencyAttrib	*center_frequency = new CenterFrequencyAttrib();
	Tango::UserDefaultAttrProp	center_frequency_prop;
	center_frequency_prop.set_label("Center Frequency");
	center_frequency_prop.set_unit("MHz");
	center_frequency_prop.set_max_value("3000");
	center_frequency_prop.set_min_value("0.009");
	center_frequency_prop.set_description("Sets or retrieves the central frequency. This is listed\nin the base IVI Spec functions.");
	center_frequency->set_default_properties(center_frequency_prop);
	att_list.push_back(center_frequency);

	//	Attribute : MarkerX
	MarkerXAttrib	*marker_x = new MarkerXAttrib();
	Tango::UserDefaultAttrProp	marker_x_prop;
	marker_x_prop.set_label("Marker at the oeak");
	marker_x_prop.set_unit("MHz");
	marker_x_prop.set_max_value("3000");
	marker_x_prop.set_min_value("0.009");
	marker_x_prop.set_description("Sets or retrieves the central frequency. This is listed\nin the base IVI Spec functions.");
	marker_x->set_default_properties(marker_x_prop);
	att_list.push_back(marker_x);

	//	Attribute : MarkerY
	MarkerYAttrib	*marker_y = new MarkerYAttrib();
	Tango::UserDefaultAttrProp	marker_y_prop;
	marker_y_prop.set_label("X-Axis point to marker");
	marker_y_prop.set_unit("MHz");
	marker_y_prop.set_description("The point on the y-axis corresponding to the value of the marker\nIVI Spec compliance: IviSpecAnMarker Extension Group.");
	marker_y->set_default_properties(marker_y_prop);
	att_list.push_back(marker_y);

	//	Attribute : ErrorPolling
	ErrorPollingAttrib	*error_polling = new ErrorPollingAttrib();
	Tango::UserDefaultAttrProp	error_polling_prop;
	error_polling_prop.set_label("Error polling status");
	error_polling_prop.set_description("This function periodically polls the device and reads its status,\nsignaling malfunctioning.");
	error_polling->set_default_properties(error_polling_prop);
	error_polling->set_polling_period(5000);
	att_list.push_back(error_polling);

	//	Attribute : Attenuation
	AttenuationAttrib	*attenuation = new AttenuationAttrib();
	Tango::UserDefaultAttrProp	attenuation_prop;
	attenuation_prop.set_label("Attenuation");
	attenuation_prop.set_unit("dB");
	attenuation_prop.set_standard_unit("dB");
	attenuation_prop.set_max_value("75");
	attenuation_prop.set_min_value("0");
	attenuation_prop.set_description("Specifies the input attenuation (in positive dB).\nIVI Spec base attribute.");
	attenuation->set_default_properties(attenuation_prop);
	att_list.push_back(attenuation);

	//	Attribute : DetectorType
	DetectorTypeAttrib	*detector_type = new DetectorTypeAttrib();
	Tango::UserDefaultAttrProp	detector_type_prop;
	detector_type_prop.set_label("Detector type");
	detector_type_prop.set_description("Specifies the detection method used to capture and process the signal.\nIVI SpecAn base attribute.");
	detector_type->set_default_properties(detector_type_prop);
	att_list.push_back(detector_type);

	//	Attribute : StartFrequency
	StartFrequencyAttrib	*start_frequency = new StartFrequencyAttrib();
	Tango::UserDefaultAttrProp	start_frequency_prop;
	start_frequency_prop.set_label("Frequency start");
	start_frequency_prop.set_unit("MHz");
	start_frequency_prop.set_standard_unit("MHz");
	start_frequency_prop.set_max_value("3100");
	start_frequency_prop.set_min_value("-80");
	start_frequency_prop.set_description("Sets the start frequency. IVI SpecAn base functions.");
	start_frequency->set_default_properties(start_frequency_prop);
	att_list.push_back(start_frequency);

	//	Attribute : StopFrequency
	StopFrequencyAttrib	*stop_frequency = new StopFrequencyAttrib();
	Tango::UserDefaultAttrProp	stop_frequency_prop;
	stop_frequency_prop.set_label("Stop Frequency");
	stop_frequency_prop.set_unit("MHz");
	stop_frequency_prop.set_standard_unit("MHz");
	stop_frequency_prop.set_max_value("3000");
	stop_frequency_prop.set_description("Sets the stop frequency. IVI SpecAn base functions.");
	stop_frequency->set_default_properties(stop_frequency_prop);
	att_list.push_back(stop_frequency);

	//	Attribute : FreqOffset
	FreqOffsetAttrib	*freq_offset = new FreqOffsetAttrib();
	Tango::UserDefaultAttrProp	freq_offset_prop;
	freq_offset_prop.set_label("Frequency Offset");
	freq_offset_prop.set_unit("MHz");
	freq_offset_prop.set_standard_unit("MHz");
	freq_offset_prop.set_max_value("500000000");
	freq_offset_prop.set_min_value("-3000");
	freq_offset_prop.set_description("Specifies the frequency offset for all frequency readouts \nsuch as center frequency, except that it does not affect \nmarker count.\nIVI SpecAn base functions.");
	freq_offset->set_default_properties(freq_offset_prop);
	att_list.push_back(freq_offset);

	//	Attribute : ReferenceLevel
	ReferenceLevelAttrib	*reference_level = new ReferenceLevelAttrib();
	Tango::UserDefaultAttrProp	reference_level_prop;
	reference_level_prop.set_label("reference Level");
	reference_level_prop.set_standard_unit("dBm");
	reference_level_prop.set_max_value("55");
	reference_level_prop.set_min_value("-327.6");
	reference_level_prop.set_description("Sets the amplitude of the reference level for the y axis.\nThis is used as reference for amplitude measurements.\nThis is typically set to a value slightly higher than the highest\nexpected signal level. The units are determined by the amplitude \nunits attribute. IVI SpecAn base attributes.");
	reference_level->set_default_properties(reference_level_prop);
	att_list.push_back(reference_level);

	//	Attribute : StartStop
	StartStopAttrib	*start_stop = new StartStopAttrib();
	Tango::UserDefaultAttrProp	start_stop_prop;
	start_stop_prop.set_label("Start and Stop Frequencies");
	start_stop_prop.set_unit("MHz");
	start_stop_prop.set_standard_unit("MHz");
	start_stop_prop.set_description("Sets the start and stop frequencies. Center frequency \nwill be in the middle.");
	start_stop->set_default_properties(start_stop_prop);
	att_list.push_back(start_stop);

	//	Attribute : TraceReal32
	TraceReal32Attrib	*trace_real32 = new TraceReal32Attrib();
	Tango::UserDefaultAttrProp	trace_real32_prop;
	trace_real32_prop.set_label("Trace Float");
	trace_real32_prop.set_unit("dBm");
	trace_real32_prop.set_standard_unit("dBm");
	trace_real32_prop.set_description("Vector containing the Y values corresponding to the 401 points \nof the spectrum.");
	trace_real32->set_default_properties(trace_real32_prop);
	att_list.push_back(trace_real32);

	//	Attribute : TraceInt32
	TraceInt32Attrib	*trace_int32 = new TraceInt32Attrib();
	Tango::UserDefaultAttrProp	trace_int32_prop;
	trace_int32_prop.set_label("Trace Int32");
	trace_int32_prop.set_unit("dBm");
	trace_int32_prop.set_standard_unit("dBm");
	trace_int32_prop.set_description("Y values corresponding to the 401 points in X axis \nof the spectrum analyzer");
	trace_int32->set_default_properties(trace_int32_prop);
	att_list.push_back(trace_int32);

	//	Attribute : OPC
	OPCAttrib	*opc = new OPCAttrib();
	Tango::UserDefaultAttrProp	opc_prop;
	opc_prop.set_description("Operation completed command. \nSets bit 0 in the standard event status register to ");
	opc->set_default_properties(opc_prop);
	att_list.push_back(opc);

	//	Attribute : ResolutionBandwidth
	ResolutionBandwidthAttrib	*resolution_bandwidth = new ResolutionBandwidthAttrib();
	Tango::UserDefaultAttrProp	resolution_bandwidth_prop;
	resolution_bandwidth_prop.set_label("Resolution Bandwidth");
	resolution_bandwidth_prop.set_unit("MHz");
	resolution_bandwidth_prop.set_standard_unit("MHz");
	resolution_bandwidth_prop.set_max_value("5");
	resolution_bandwidth_prop.set_min_value("0.001");
	resolution_bandwidth_prop.set_description("See specific instrument documentation.\nIVI SpecAn base attribute.");
	resolution_bandwidth->set_default_properties(resolution_bandwidth_prop);
	att_list.push_back(resolution_bandwidth);

	//	Attribute : PeakThreshold
	PeakThresholdAttrib	*peak_threshold = new PeakThresholdAttrib();
	Tango::UserDefaultAttrProp	peak_threshold_prop;
	peak_threshold_prop.set_label("Peak threshold");
	peak_threshold_prop.set_unit("Amplitude Units");
	peak_threshold_prop.set_description("Specifies the minimum signal level for thee analyzer's\ninternal peak identification routine to recognize a signal as\na peak. This applies to all traces and all windows.\nSee specific instrument documentation and manual for\ndetails.");
	peak_threshold->set_default_properties(peak_threshold_prop);
	att_list.push_back(peak_threshold);

	//	Attribute : PeakExcursion
	PeakExcursionAttrib	*peak_excursion = new PeakExcursionAttrib();
	Tango::UserDefaultAttrProp	peak_excursion_prop;
	peak_excursion_prop.set_label("Define Peak Excursion");
	peak_excursion_prop.set_standard_unit("dB");
	peak_excursion_prop.set_description("Specifies the minimum signal excursion above the threshold\nfor the internal peak identification routine to recognize\na signal as a peak .\nThe excursion is the delta power between the noise level\nand the signal peak.\nSee specific instrument documentation and manual for\ndetails.");
	peak_excursion->set_default_properties(peak_excursion_prop);
	att_list.push_back(peak_excursion);

	//	Attribute : GetSignalPeaks
	GetSignalPeaksAttrib	*get_signal_peaks = new GetSignalPeaksAttrib();
	Tango::UserDefaultAttrProp	get_signal_peaks_prop;
	get_signal_peaks_prop.set_description("Retrieves the signal peaks.");
	get_signal_peaks->set_default_properties(get_signal_peaks_prop);
	att_list.push_back(get_signal_peaks);

	//	Attribute : Fs
	FsAttrib	*fs = new FsAttrib();
	Tango::UserDefaultAttrProp	fs_prop;
	fs_prop.set_label("Synchrotron Frequency");
	fs_prop.set_unit("kHz");
	fs_prop.set_description("Sets/reads synchrotron frequency.\nThis is a synchrotron related functionality, it could be\nremoved from abstract class if one was interested only\nin a Spectrum Analyzer device.");
	fs->set_default_properties(fs_prop);
	att_list.push_back(fs);

	//	Attribute : WindowFs
	WindowFsAttrib	*window_fs = new WindowFsAttrib();
	Tango::UserDefaultAttrProp	window_fs_prop;
	window_fs_prop.set_label("Window around fs");
	window_fs_prop.set_unit("kHz");
	window_fs_prop.set_description("Window around fs in which we look for peaks.\nThis is a synchrotron related functionality, it could be\nremoved from abstract class if one was interested only\nin a Spectrum Analyzer device.");
	window_fs->set_default_properties(window_fs_prop);
	att_list.push_back(window_fs);

	//	Attribute : Window
	WindowAttrib	*window = new WindowAttrib();
	att_list.push_back(window);

	//	Attribute : NumberOfSweeps
	NumberOfSweepsAttrib	*number_of_sweeps = new NumberOfSweepsAttrib();
	Tango::UserDefaultAttrProp	number_of_sweeps_prop;
	number_of_sweeps_prop.set_label("Number of sweeps");
	number_of_sweeps_prop.set_description("Sets the number of measures.\nSets and reads the number of sweeps. See the related\nclass property for details. This instrument supports\nonly single and continuous sweep.\nIVI SpecAn base attribute.");
	number_of_sweeps->set_default_properties(number_of_sweeps_prop);
	att_list.push_back(number_of_sweeps);

}

}	// namespace