diff --git a/Keithley428.cpp b/Keithley428.cpp index 7028527619a1fa18ee10ff2054577c9bd2d96bc9..a7c7a2b6eb9ed156f934d826248823c21b8ce292 100644 --- a/Keithley428.cpp +++ b/Keithley428.cpp @@ -183,36 +183,45 @@ void Keithley428::init_device() { gpib_device = new Tango::DeviceProxy(gpibDevice); gpib_device->ping(); - set_state(Tango::ON); - set_status("Keithley428 is ON"); + } catch (Tango::DevFailed &e) { set_state(Tango::FAULT); set_status("Not able to connect to Gpib Device"); } + Tango::DeviceInfo dev_info = gpib_device->info(); - if(gpibDeviceType == 1 || gpibDeviceType == 3) + + + if(dev_info.dev_class == "PrologixGpib") { + Tango::DeviceData devin; + Tango::DevVarLongArray* args = new Tango::DevVarLongArray; + args->length(7); + (*args)[0] = gpibDeviceId; + (*args)[1] = 0; + (*args)[2] = 1; + (*args)[3] = 2; + (*args)[4] = 0; + (*args)[5] = 0; + (*args)[6] = 500; + devin << args; + gpib_device->command_inout("RegisterDevice", devin); m_write_read = "GPIBWriteRead"; m_write = "GPIBWrite"; + gpib_devicetype = PROLOGIX; } - else + else if(dev_info.dev_class == "GpibDeviceServer") { - m_write_read = "WriteRead"; - m_write = "Write"; + m_write_read = "GPIBWriteRead"; + m_write = "GPIBWrite"; } - if(gpibDeviceType == 3) - { - stringstream tmp; - tmp << gpibDeviceId << ','; - prepend = tmp.str(); - } - else - { - prepend = ""; - } + + set_state(Tango::ON); + set_status("Keithley428 is ON"); + /*----- PROTECTED REGION END -----*/ // Keithley428::init_device } @@ -236,7 +245,6 @@ void Keithley428::get_device_property() // Read device properties from database. Tango::DbData dev_prop; dev_prop.push_back(Tango::DbDatum("GpibDevice")); - dev_prop.push_back(Tango::DbDatum("GpibDeviceType")); dev_prop.push_back(Tango::DbDatum("GpibDeviceId")); // is there at least one property to be read ? @@ -263,17 +271,6 @@ void Keithley428::get_device_property() // And try to extract GpibDevice value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> gpibDevice; - // Try to initialize GpibDeviceType from class property - cl_prop = ds_class->get_class_property(dev_prop[++i].name); - if (cl_prop.is_empty()==false) cl_prop >> gpibDeviceType; - else { - // Try to initialize GpibDeviceType from default device value - def_prop = ds_class->get_default_device_property(dev_prop[i].name); - if (def_prop.is_empty()==false) def_prop >> gpibDeviceType; - } - // And try to extract GpibDeviceType value from database - if (dev_prop[i].is_empty()==false) dev_prop[i] >> gpibDeviceType; - // Try to initialize GpibDeviceId from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> gpibDeviceId; @@ -290,11 +287,11 @@ void Keithley428::get_device_property() /*----- PROTECTED REGION ID(Keithley428::get_device_property_after) ENABLED START -----*/ // Check device property data members init - if(gpibDeviceType == 3 && gpibDeviceId < 0) + /*if(gpibDeviceType == 3 && gpibDeviceId < 0) { set_state(Tango::FAULT); set_status("Invalid setting for property GpibDeviceId"); - } + }*/ /*----- PROTECTED REGION END -----*/ // Keithley428::get_device_property_after } @@ -307,7 +304,7 @@ void Keithley428::get_device_property() //-------------------------------------------------------- void Keithley428::always_executed_hook() { - INFO_STREAM << "Keithley428::always_executed_hook() " << device_name << endl; + DEBUG_STREAM << "Keithley428::always_executed_hook() " << device_name << endl; /*----- PROTECTED REGION ID(Keithley428::always_executed_hook) ENABLED START -----*/ // code always executed before all requests @@ -361,20 +358,26 @@ void Keithley428::read_Gain(Tango::Attribute &attr) { DEBUG_STREAM << "Keithley428::read_Gain(Tango::Attribute &attr) entering... " << endl; /*----- PROTECTED REGION ID(Keithley428::read_Gain) ENABLED START -----*/ - DeviceData din; + DeviceData din; DeviceData dout; - - string tmp_string; - int r_v; int w_v; + string tmp_string; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "U0X"; + din << msg; + } + else + { + din << "U0X"; + } - stringstream tmp; - tmp << prepend << "U0X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - din << buffer; - - dout = gpib_device->command_inout(m_write_read.c_str(), din); + dout = gpib_device->command_inout(m_write_read.c_str(), din); dout >> tmp_string; @@ -418,15 +421,26 @@ void Keithley428::write_Gain(Tango::WAttribute &attr) } stringstream tmp; - tmp << prepend; if(attr_Gain_write < 11) { tmp << "W0XR" << (int)attr_Gain_write << 'X'; } else { tmp << "W1XR10X"; } - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = tmp.str().c_str(); + din << msg; + } + else + { + Tango::DevString buffer = (char*) tmp.str().c_str(); + din << buffer; + } gpib_device->command_inout(m_write.c_str(),din); /*----- PROTECTED REGION END -----*/ // Keithley428::write_Gain @@ -448,11 +462,20 @@ void Keithley428::read_GainStr(Tango::Attribute &attr) DeviceData dout; string tmp_string; - stringstream tmp; - tmp << prepend << "U3X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "U3X"; + din << msg; + } + else + { + din << "U3X";; + } dout = gpib_device->command_inout(m_write_read.c_str(),din); @@ -480,14 +503,23 @@ void Keithley428::read_Overloaded(Tango::Attribute &attr) DeviceData din; DeviceData dout; - string tmp_string; int overload_flag; - stringstream tmp; - tmp << prepend << "U1X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); + string tmp_string; - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "U1X"; + din << msg; + } + else + { + din << "U1X"; + } dout = gpib_device->command_inout(m_write_read.c_str(),din); @@ -521,11 +553,19 @@ void Keithley428::read_Bypass(Tango::Attribute &attr) int c_v; - stringstream tmp; - tmp << prepend << "U0X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "U0X"; + din << msg; + } + else + { + din << "U0X"; + } dout = gpib_device->command_inout(m_write_read.c_str(),din); @@ -565,10 +605,21 @@ void Keithley428::write_Bypass(Tango::WAttribute &attr) (const char *)"write_Bypass"); } stringstream tmp; - tmp << prepend << 'C' << attr_Bypass_write << 'X'; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - din << buffer; - + tmp << 'C' << attr_Bypass_write << 'X'; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = tmp.str().c_str(); + din << msg; + } + else + { + Tango::DevString buffer = (char* )tmp.str().c_str(); + din << buffer; + } gpib_device->command_inout(m_write.c_str(),din); /*----- PROTECTED REGION END -----*/ // Keithley428::write_Bypass @@ -594,12 +645,19 @@ void Keithley428::read_filterState(Tango::Attribute &attr) int r_v; - stringstream tmp; - tmp << prepend << "U0X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - - din << buffer; - + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "U0X"; + din << msg; + } + else + { + din << "U0X"; + } dout = gpib_device->command_inout(m_write_read.c_str(),din); dout >> tmp_string; @@ -645,11 +703,19 @@ void Keithley428::read_autoFilterState(Tango::Attribute &attr) int r_v; - stringstream tmp; - tmp << prepend << "U0X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "U0X"; + din << msg; + } + else + { + din << "U0X"; + } dout = gpib_device->command_inout(m_write_read.c_str(),din); @@ -691,18 +757,24 @@ void Keithley428::read_RiseTime(Tango::Attribute &attr) DeviceData din; DeviceData dout; - string tmp_string; string rise_time_str; + string tmp_string; int value; - stringstream tmp; - tmp << prepend << "U0X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - - - din << buffer; - + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "U0X"; + din << msg; + } + else + { + din << "U0X"; + } dout = gpib_device->command_inout(m_write_read.c_str(),din); dout >> tmp_string; @@ -769,11 +841,21 @@ void Keithley428::write_RiseTime(Tango::WAttribute &attr) (const char *)"write_RiseTime"); } stringstream tmp; - tmp << prepend << 'T' << (int)attr_RiseTime_write << 'X'; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - - din << buffer; - + tmp << 'T' << (int)attr_RiseTime_write << 'X'; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = tmp.str().c_str(); + din << msg; + } + else + { + Tango::DevString buffer = (char*) tmp.str().c_str(); + din << buffer; + } gpib_device->command_inout(m_write.c_str(),din); /*----- PROTECTED REGION END -----*/ // Keithley428::write_RiseTime @@ -827,11 +909,19 @@ void Keithley428::perform_zero_correct() // Add your own code DeviceData din; - stringstream tmp; - tmp << prepend << "C2X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - din << buffer; - + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "C2X"; + din << msg; + } + else + { + din << "C2X"; + } gpib_device->command_inout(m_write.c_str(),din); /*----- PROTECTED REGION END -----*/ // Keithley428::perform_zero_correct @@ -850,11 +940,19 @@ void Keithley428::filter_on() // Add your own code DeviceData din; - stringstream tmp; - tmp << prepend << "P1X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "P1X"; + din << msg; + } + else + { + din << "P1X"; + } gpib_device->command_inout(m_write.c_str(),din); @@ -874,11 +972,19 @@ void Keithley428::filter_off() // Add your own code DeviceData din; - stringstream tmp; - tmp << prepend << "P0X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "P0X"; + din << msg; + } + else + { + din << "P0X"; + } gpib_device->command_inout(m_write.c_str(),din); @@ -912,10 +1018,19 @@ void Keithley428::auto_filter_on() } DeviceData din; - stringstream tmp; - tmp << prepend << "Z1X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "Z1X"; + din << msg; + } + else + { + din << "Z1X"; + } gpib_device->command_inout(m_write.c_str(),din); @@ -935,15 +1050,39 @@ void Keithley428::auto_filter_off() // Add your own code DeviceData din; - stringstream tmp; - tmp << prepend << "Z0X"; - Tango::DevString buffer = Tango::string_dup(tmp.str().c_str()); - din << buffer; + if(gpib_devicetype == PROLOGIX) + { + Tango::DevVarLongStringArray msg; + msg.lvalue.length(1); + msg.svalue.length(1); + msg.lvalue[0] = gpibDeviceId; + msg.svalue[0] = "Z0X"; + din << msg; + } + else + { + din << "Z0X"; + } gpib_device->command_inout(m_write.c_str(),din); /*----- PROTECTED REGION END -----*/ // Keithley428::auto_filter_off } +//-------------------------------------------------------- +/** + * Method : Keithley428::add_dynamic_commands() + * Description : Create the dynamic commands if any + * for specified device. + */ +//-------------------------------------------------------- +void Keithley428::add_dynamic_commands() +{ + /*----- PROTECTED REGION ID(Keithley428::add_dynamic_commands) ENABLED START -----*/ + + // Add your own code to create and add dynamic commands if any + + /*----- PROTECTED REGION END -----*/ // Keithley428::add_dynamic_commands +} /*----- PROTECTED REGION ID(Keithley428::namespace_ending) ENABLED START -----*/ diff --git a/Keithley428.h b/Keithley428.h index 721db415623cd4146e05ad36e13dc801752eb4e8..b3985c9c94a5a6706ad0c5100ce1c4b1ba8e8f76 100644 --- a/Keithley428.h +++ b/Keithley428.h @@ -62,6 +62,10 @@ class Keithley428 : public TANGO_BASE_CLASS /*----- PROTECTED REGION ID(Keithley428::Data Members) ENABLED START -----*/ // Add your own data members +private: + //string prepend; + Tango::DevShort gpib_devicetype; + enum gpib_devtype {PROLOGIX = 1, GPIBDEV = 2}; public: Tango::DevLong attr_Gain_write; @@ -75,21 +79,9 @@ public: public: // GpibDevice: Name of the gpib device connected to the hardware. string gpibDevice; - // GpibDeviceType: Type of the Gpib device used to communicate with the Keithley. - // this can be: - // 1 -> Desy GpibDevice (default value) - // 2 -> Soleil GpibDeviceServer - // 3-> Prologix GPIB network adapter. In this case - // the included GpibDevice will be ignored and - // GpibDeviceId has to be set correctly. The Prologix - // device server has to be configured and started - // separatly. - Tango::DevUShort gpibDeviceType; // GpibDeviceId: Gpib device ID if this is to be used with a prologix network // adapter. -private: Tango::DevShort gpibDeviceId; - string prepend; // Attribute data members public: @@ -128,7 +120,7 @@ public: Keithley428(Tango::DeviceClass *cl,const char *s,const char *d); /** * The device object destructor. - */ + */ ~Keithley428() {delete_device();}; @@ -256,6 +248,7 @@ public: + // Command related methods public: /** diff --git a/Keithley428.xmi b/Keithley428.xmi index e79a8152b4894f49502414c1b2564d9cc456250d..813c527e2fffcf41bd83998b3137e31ffe51d899 100644 --- a/Keithley428.xmi +++ b/Keithley428.xmi @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="ASCII"?> <pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> - <classes name="Keithley428" pogoRevision="8.4"> - <description description="Class for controlling the Keithley428 current amplifier." title="Keithley428 Current Amplifier" sourcePath="/ssd/blume/src/TangoSvn/tango-ds/DeviceClasses/MeasureInstruments/Keithley/Keithley428/trunk" language="Cpp" filestogenerate="XMI file,Code files" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false"> + <classes name="Keithley428" pogoRevision="9.4"> + <description description="Class for controlling the Keithley428 current amplifier." title="Keithley428 Current Amplifier" sourcePath="/ssd/blume/src/TangoSvn/tango-ds/DeviceClasses/MeasureInstruments/Keithley/Keithley428/trunk" language="Cpp" filestogenerate="XMI file,Code files,Protected Regions" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false"> <inheritances classname="Device_4Impl" sourcePath=""/> <identification contact="at mail.desy.de - tnunez" author="tnunez" emailDomain="mail.desy.de" classFamily="Instrumentation" siteSpecific="" platform="Unix Like" bus="GPIB" manufacturer="Keithley" reference="428"/> </description> @@ -9,11 +9,6 @@ <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> - <deviceProperties name="GpibDeviceType" description="Type of the Gpib device used to communicate with the Keithley.
this can be:
1 -> Desy GpibDevice (default value)
2 -> Soleil GpibDeviceServer
3-> Prologix GPIB network adapter. In this case
 the included GpibDevice will be ignored and
 GpibDeviceId has to be set correctly. The Prologix
 device server has to be configured and started
 separatly."> - <type xsi:type="pogoDsl:UShortType"/> - <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> - <DefaultPropValue>1</DefaultPropValue> - </deviceProperties> <deviceProperties name="GpibDeviceId" description="Gpib device ID if this is to be used with a prologix network
adapter."> <type xsi:type="pogoDsl:ShortType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> diff --git a/Keithley428Class.cpp b/Keithley428Class.cpp index e2905ab409d328407e189d7ed18db6329eb14a5c..c6353948db4b097e472ff593176d0cee6c979b0e 100644 --- a/Keithley428Class.cpp +++ b/Keithley428Class.cpp @@ -123,8 +123,8 @@ Keithley428Class *Keithley428Class::init(const char *name) catch (bad_alloc &) { throw; - } - } + } + } return _instance; } @@ -320,20 +320,6 @@ void Keithley428Class::set_default_property() dev_def_prop.push_back(data); add_wiz_dev_prop(prop_name, prop_desc, prop_def); } - else - add_wiz_dev_prop(prop_name, prop_desc); - prop_name = "GpibDeviceType"; - prop_desc = "Type of the Gpib device used to communicate with the Keithley.\nthis can be:\n1 -> Desy GpibDevice (default value)\n2 -> Soleil GpibDeviceServer\n3-> Prologix GPIB network adapter. In this case\n the included GpibDevice will be ignored and\n GpibDeviceId has to be set correctly. The Prologix\n device server has to be configured and started\n separatly."; - prop_def = "1"; - vect_data.clear(); - vect_data.push_back("1"); - if (prop_def.length()>0) - { - Tango::DbDatum data(prop_name); - data << vect_data ; - dev_def_prop.push_back(data); - add_wiz_dev_prop(prop_name, prop_desc, prop_def); - } else add_wiz_dev_prop(prop_name, prop_desc); prop_name = "GpibDeviceId"; @@ -382,104 +368,6 @@ void Keithley428Class::write_class_property() description << str_desc; data.push_back(description); - // put cvs or svn location - string filename("Keithley428"); - filename += "Class.cpp"; - - // check for cvs information - string src_path(CvsPath); - start = src_path.find("/"); - if (start!=string::npos) - { - end = src_path.find(filename); - if (end>start) - { - string strloc = src_path.substr(start, end-start); - // Check if specific repository - start = strloc.find("/cvsroot/"); - if (start!=string::npos && start>0) - { - string repository = strloc.substr(0, start); - if (repository.find("/segfs/")!=string::npos) - strloc = "ESRF:" + strloc.substr(start, strloc.length()-start); - } - Tango::DbDatum cvs_loc("cvs_location"); - cvs_loc << strloc; - data.push_back(cvs_loc); - } - } - - // check for svn information - else - { - string src_path(SvnPath); - start = src_path.find("://"); - if (start!=string::npos) - { - end = src_path.find(filename); - if (end>start) - { - header = "$HeadURL: "; - start = header.length(); - string strloc = src_path.substr(start, (end-start)); - - Tango::DbDatum svn_loc("svn_location"); - svn_loc << strloc; - data.push_back(svn_loc); - } - } - } - - // Get CVS or SVN revision tag - - // CVS tag - string tagname(TagName); - header = "$Name: "; - start = header.length(); - string endstr(" $"); - - end = tagname.find(endstr); - if (end!=string::npos && end>start) - { - string strtag = tagname.substr(start, end-start); - Tango::DbDatum cvs_tag("cvs_tag"); - cvs_tag << strtag; - data.push_back(cvs_tag); - } - - // SVN tag - string svnpath(SvnPath); - header = "$HeadURL: "; - start = header.length(); - - end = svnpath.find(endstr); - if (end!=string::npos && end>start) - { - string strloc = svnpath.substr(start, end-start); - - string tagstr ("/tags/"); - start = strloc.find(tagstr); - if ( start!=string::npos ) - { - start = start + tagstr.length(); - end = strloc.find(filename); - string strtag = strloc.substr(start, end-start-1); - - Tango::DbDatum svn_tag("svn_tag"); - svn_tag << strtag; - data.push_back(svn_tag); - } - } - - // Get URL location - string httpServ(HttpServer); - if (httpServ.length()>0) - { - Tango::DbDatum db_doc_url("doc_url"); - db_doc_url << httpServ; - data.push_back(db_doc_url); - } - // Put inheritance Tango::DbDatum inher_datum("InheritedFrom"); vector<string> inheritance; @@ -750,6 +638,7 @@ void Keithley428Class::attribute_factory(vector<Tango::Attr *> &att_list) // Not Memorized att_list.push_back(risetimestr); + // Create a list of static attributes create_static_attribute_list(get_class_attr()->get_attr_list()); /*----- PROTECTED REGION ID(Keithley428Class::attribute_factory_after) ENABLED START -----*/ @@ -759,6 +648,26 @@ void Keithley428Class::attribute_factory(vector<Tango::Attr *> &att_list) /*----- PROTECTED REGION END -----*/ // Keithley428Class::attribute_factory_after } //-------------------------------------------------------- +/** + * Method : Keithley428Class::pipe_factory() + * Description : Create the pipe object(s) + * and store them in the pipe list + */ +//-------------------------------------------------------- +void Keithley428Class::pipe_factory() +{ + /*----- PROTECTED REGION ID(Keithley428Class::pipe_factory_before) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // Keithley428Class::pipe_factory_before + /*----- PROTECTED REGION ID(Keithley428Class::pipe_factory_after) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // Keithley428Class::pipe_factory_after +} +//-------------------------------------------------------- /** * Method : Keithley428Class::command_factory() * Description : Create the command object(s) @@ -831,7 +740,7 @@ void Keithley428Class::command_factory() * method : Keithley428Class::create_static_attribute_list * description : Create the a list of static attributes * - * @param att_list the ceated attribute list + * @param att_list the ceated attribute list */ //-------------------------------------------------------- void Keithley428Class::create_static_attribute_list(vector<Tango::Attr *> &att_list) @@ -865,10 +774,10 @@ void Keithley428Class::erase_dynamic_attributes(const Tango::DevVarStringArray * Tango::Util *tg = Tango::Util::instance(); for (unsigned long i=0 ; i<devlist_ptr->length() ; i++) - { + { Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((string)(*devlist_ptr)[i]).c_str()); Keithley428 *dev = static_cast<Keithley428 *> (dev_impl); - + vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list(); vector<Tango::Attribute *>::iterator ite_att; for (ite_att=dev_att_list.begin() ; ite_att != dev_att_list.end() ; ++ite_att) @@ -900,7 +809,7 @@ void Keithley428Class::erase_dynamic_attributes(const Tango::DevVarStringArray * Tango::Attr *Keithley428Class::get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname) { vector<Tango::Attr *>::iterator it; - for (it=att_list.begin() ; it<att_list.end() ; it++) + for (it=att_list.begin() ; it<att_list.end() ; ++it) if ((*it)->get_name()==attname) return (*it); // Attr does not exist diff --git a/Keithley428Class.h b/Keithley428Class.h index 8e047b00e09ad7b6c6df78c29554fdcf8ab0959c..9d7f1b3a6e20121fc23358ec31d10d874bc6b7ea 100644 --- a/Keithley428Class.h +++ b/Keithley428Class.h @@ -312,6 +312,7 @@ public: static Keithley428Class *_instance; void command_factory(); void attribute_factory(vector<Tango::Attr *> &); + void pipe_factory(); void write_class_property(); void set_default_property(); void get_class_property(); diff --git a/Keithley428StateMachine.cpp b/Keithley428StateMachine.cpp index 7d4f334b8293cabc0cdaa3522b535d3b2765965e..e8704b076ddf66770cf3544804464324a367ffc2 100644 --- a/Keithley428StateMachine.cpp +++ b/Keithley428StateMachine.cpp @@ -288,6 +288,7 @@ bool Keithley428::is_RiseTimeStr_allowed(TANGO_UNUSED(Tango::AttReqType type)) return true; } + //================================================= // Commands Allowed Methods //================================================= @@ -387,4 +388,11 @@ bool Keithley428::is_AutoFilterOff_allowed(TANGO_UNUSED(const CORBA::Any &any)) return true; } + +/*----- PROTECTED REGION ID(Keithley428::Keithley428StateAllowed.AdditionalMethods) ENABLED START -----*/ + +// Additional Methods + +/*----- PROTECTED REGION END -----*/ // Keithley428::Keithley428StateAllowed.AdditionalMethods + } // End of namespace diff --git a/Makefile b/Makefile index bb8a2835dc53a8279557f6739fca99aa7716ccb5..a0674488a9227f44263ab42d0309513fa19831c3 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ MAKE_ENV = $(TANGO_DIR)/Libraries/cppserver/common # PACKAGE_NAME = Keithley428 MAJOR_VERS = 1 -MINOR_VERS = 5 +MINOR_VERS = 7 RELEASE = Release_$(MAJOR_VERS)_$(MINOR_VERS) # #============================================================================= @@ -37,7 +37,7 @@ RELEASE = Release_$(MAJOR_VERS)_$(MINOR_VERS) # # - DEBUG : debug symbols - no optimization # # - OPTIMIZED : no debug symbols - optimization level set to O2 # #----------------------------------------------------------------------------- -RELEASE_TYPE = DEBUG +# RELEASE_TYPE = DEBUG #============================================================================= # OUTPUT_TYPE can be one of the following : @@ -56,16 +56,20 @@ OUTPUT_TYPE = DEVICE # - $HOME/DeviceServers if OUTPUT_TYPE is DEVICE # - ../bin for others # -OUTPUT_DIR = ./bin/$(BIN_DIR) +#OUTPUT_DIR = ./bin/$(BIN_DIR) # # if 'make using_trunk=1' use the trunk directories # -ifdef using_trunk +using_trunk ?= 0 + +ifeq ($(using_trunk), 1) GPIB_DIR = $(TANGO_DIR)/DeviceClasses/Communication/GpibDeviceServer/trunk + RELEASE_TYPE = DEBUG else GPIB_DIR = $(shell find $(TANGO_DIR)/DeviceClasses/Communication/GpibDeviceServer/tags -type d -regex '.*Release_[0-9]*_[0-9]*' | sort -t '_' -k2 -k3 -nr | head -1) + RELEASE_TYPE = OPTIMIZED endif #============================================================================= @@ -82,7 +86,7 @@ INC_DIR_USER= -I . -I$(GPIB_DIR) # - for a device server, tango libraries directories are automatically appended # - '-L ../lib' is automatically appended in all cases # -LIB_DIR_USER= +LIB_DIR_USER= -L$(GPIB_DIR)/$(_libdir) -L$(TANGO_HOME)/$(_libdir) #============================================================================= # LFLAGS_USR is the list of user link flags @@ -95,7 +99,7 @@ LIB_DIR_USER= # you must use '-lA -lB' in this order as link flags, otherwise you will get # 'undefined reference' errors # -LFLAGS_USR+= $(GPIB_DIR)/bin/libGpibDeviceServer.a $(TANGO_HOME)/$(_libdir)/libgpib.a +LFLAGS_USR+= -lGpibDeviceServer -lgpib #============================================================================= @@ -157,6 +161,6 @@ include $(MAKE_ENV)/common_target.opt libGpibDeviceServer.a: - @echo -e "\n >>> Making $(GPIB_DIR)/bin/libGpibDeviceServer.a \n" + @echo -e "\n >>> Making $(GPIB_DIR)/$(_libdir)/libGpibDeviceServer.a \n" cd $(GPIB_DIR) && make OUTPUT_TYPE=STATIC_LIB #PROTECTED REGION END#