diff --git a/src/MetadataExporter.cpp b/src/MetadataExporter.cpp index fbd27d036afb51883e56af35b25148e96fa86b6d..125baec0a451646b3b0dc6f7386785e5b13f7dbb 100644 --- a/src/MetadataExporter.cpp +++ b/src/MetadataExporter.cpp @@ -159,6 +159,13 @@ void MetadataExporter::init_device() m_server_sp = SSLServer::create(this, m_configuration_sp); else m_server_sp = PlainServer::create(this, m_configuration_sp); + + //Start device if auto start enabled + if(autoStart) + { + INFO_STREAM << "FitsImporter::init_device() auto start enabled " << endl; + on(); + } } catch(std::exception& ex) { @@ -212,6 +219,7 @@ void MetadataExporter::get_device_property() dev_prop.push_back(Tango::DbDatum("DatabaseConnectionNumber")); dev_prop.push_back(Tango::DbDatum("ExportedTables")); dev_prop.push_back(Tango::DbDatum("AuthorisedUsers")); + dev_prop.push_back(Tango::DbDatum("AutoStart")); // is there at least one property to be read ? if (dev_prop.size()>0) @@ -380,6 +388,17 @@ void MetadataExporter::get_device_property() // And try to extract AuthorisedUsers value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> authorisedUsers; + // Try to initialize AutoStart from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> autoStart; + else { + // Try to initialize AutoStart from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> autoStart; + } + // And try to extract AutoStart value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> autoStart; + } /*----- PROTECTED REGION ID(MetadataExporter::get_device_property_after) ENABLED START -----*/ diff --git a/src/MetadataExporter.h b/src/MetadataExporter.h index 04a1d28493947d0dc92097e7622f91d1e7bc189e..859652c93e2b3b258a8cc2bba51e6cfefdeeb45e 100644 --- a/src/MetadataExporter.h +++ b/src/MetadataExporter.h @@ -121,6 +121,8 @@ public: // AuthorisedUsers: Authorised user list: one user per row // [username password] vector<string> authorisedUsers; + // AutoStart: Exec On command after init if state is not fault + Tango::DevBoolean autoStart; // Constructors and destructors diff --git a/src/MetadataExporter.xmi b/src/MetadataExporter.xmi index 41c3c6b6d1db2f7ff7f0341d37edd8868789be92..e6e2621255a132684e19540c9539166dec4ceb49 100644 --- a/src/MetadataExporter.xmi +++ b/src/MetadataExporter.xmi @@ -84,6 +84,11 @@ <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> + <deviceProperties name="AutoStart" description="Exec On command after init if state is not fault"> + <type xsi:type="pogoDsl:BooleanType"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <DefaultPropValue>false</DefaultPropValue> + </deviceProperties> <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0"> <argin description="none"> <type xsi:type="pogoDsl:VoidType"/> diff --git a/src/MetadataExporterClass.cpp b/src/MetadataExporterClass.cpp index f633b588485c0f0b1c80fc1f5e597d69d8613a95..923b000e2ab6deacbd10409109d424062b53f306 100644 --- a/src/MetadataExporterClass.cpp +++ b/src/MetadataExporterClass.cpp @@ -606,6 +606,20 @@ void MetadataExporterClass::set_default_property() } else add_wiz_dev_prop(prop_name, prop_desc); + prop_name = "AutoStart"; + prop_desc = "Exec On command after init if state is not fault"; + prop_def = "false"; + vect_data.clear(); + vect_data.push_back("false"); + 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); } //--------------------------------------------------------