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