From bbebd3e523a530a607ab8afa109613c95d1ff596 Mon Sep 17 00:00:00 2001
From: Alessio Igor Bogani <alessio.bogani@elettra.eu>
Date: Wed, 20 May 2020 17:32:29 +0200
Subject: [PATCH] Move Serial2Client class into a dedicated repository

---
 src/Serial2Client.cpp             | 589 ------------------------------
 src/Serial2Client.h               | 238 ------------
 src/Serial2Client.xmi             |  32 --
 src/Serial2ClientClass.cpp        | 589 ------------------------------
 src/Serial2ClientClass.h          | 110 ------
 src/Serial2ClientStateMachine.cpp |  65 ----
 6 files changed, 1623 deletions(-)
 delete mode 100644 src/Serial2Client.cpp
 delete mode 100644 src/Serial2Client.h
 delete mode 100644 src/Serial2Client.xmi
 delete mode 100644 src/Serial2ClientClass.cpp
 delete mode 100644 src/Serial2ClientClass.h
 delete mode 100644 src/Serial2ClientStateMachine.cpp

diff --git a/src/Serial2Client.cpp b/src/Serial2Client.cpp
deleted file mode 100644
index 536616b..0000000
--- a/src/Serial2Client.cpp
+++ /dev/null
@@ -1,589 +0,0 @@
-/*----- PROTECTED REGION ID(Serial2Client.cpp) ENABLED START -----*/
-static const char *RcsId = "$Id: Serial2Client.cpp,v 1.5 2018-07-09 13:58:05 alessio Exp $";
-//=============================================================================
-//
-// file :        Serial2Client.cpp
-//
-// description : C++ source for the Serial2Client class and its commands.
-//               The class is derived from Device. It represents the
-//               CORBA servant object which will be accessed from the
-//               network. All commands which can be executed on the
-//               Serial2Client are implemented in this file.
-//
-// project :     
-//
-// This file is part of Tango device class.
-// 
-// Tango is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// Tango is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-// 
-// $Author: alessio $
-//
-// $Revision: 1.5 $
-// $Date: 2018-07-09 13:58:05 $
-//
-// $HeadURL:  $
-//
-//=============================================================================
-//                This file is generated by POGO
-//        (Program Obviously used to Generate tango Object)
-//=============================================================================
-
-
-#include <Serial2Client.h>
-#include <Serial2ClientClass.h>
-#include <iomanip>
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client.cpp
-
-/**
- *  Serial2Client class description:
- *    
- */
-
-//================================================================
-//  The following table gives the correspondence
-//  between command and method names.
-//
-//  Command name  |  Method name
-//================================================================
-//  State         |  Inherited (no method)
-//  Status        |  Inherited (no method)
-//================================================================
-
-//================================================================
-//  Attributes managed is:
-//================================================================
-//================================================================
-
-namespace Serial2Client_ns
-{
-/*----- PROTECTED REGION ID(Serial2Client::namespace_starting) ENABLED START -----*/
-
-//	static initializations
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::namespace_starting
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::Serial2Client()
- *	Description : Constructors for a Tango device
- *                implementing the classSerial2Client
- */
-//--------------------------------------------------------
-Serial2Client::Serial2Client(Tango::DeviceClass *cl, string &s)
- : TANGO_BASE_CLASS(cl, s.c_str())
-{
-	/*----- PROTECTED REGION ID(Serial2Client::constructor_1) ENABLED START -----*/
-	init_device();
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::constructor_1
-}
-//--------------------------------------------------------
-Serial2Client::Serial2Client(Tango::DeviceClass *cl, const char *s)
- : TANGO_BASE_CLASS(cl, s)
-{
-	/*----- PROTECTED REGION ID(Serial2Client::constructor_2) ENABLED START -----*/
-	init_device();
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::constructor_2
-}
-//--------------------------------------------------------
-Serial2Client::Serial2Client(Tango::DeviceClass *cl, const char *s, const char *d)
- : TANGO_BASE_CLASS(cl, s, d)
-{
-	/*----- PROTECTED REGION ID(Serial2Client::constructor_3) ENABLED START -----*/
-	init_device();
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::constructor_3
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::delete_device()
- *	Description : will be called at device destruction or at init command
- */
-//--------------------------------------------------------
-void Serial2Client::delete_device()
-{
-	DEBUG_STREAM << "Serial2Client::delete_device() " << device_name << endl;
-	/*----- PROTECTED REGION ID(Serial2Client::delete_device) ENABLED START -----*/
-	
-	//	Delete device allocated objects
-	if (device_proxy) {
-		delete device_proxy;
-		device_proxy = NULL;
-	}
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::delete_device
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::init_device()
- *	Description : will be called at device initialization.
- */
-//--------------------------------------------------------
-void Serial2Client::init_device()
-{
-	DEBUG_STREAM << "Serial2Client::init_device() create device " << device_name << endl;
-	/*----- PROTECTED REGION ID(Serial2Client::init_device_before) ENABLED START -----*/
-	
-	//	Initialization before get_device_property() call
-	device_proxy = NULL;
-	init_error.clear();
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::init_device_before
-	
-
-	//	Get the device properties from database
-	get_device_property();
-	
-	//	No longer if mandatory property not set. 
-	if (mandatoryNotDefined)
-		return;
-
-	/*----- PROTECTED REGION ID(Serial2Client::init_device) ENABLED START -----*/
-	
-	//	Initialize device
-	try
-	{
-		device_proxy = new Tango::DeviceProxy(deviceName);
-	} catch( Tango::DevFailed &e )
-	{
-		init_error = "Initialization failed: " + string(e.errors[0].desc);
-	}
-	catch( ... )
-	{
-		init_error = "Initialization failed: unknown reason";
-	}
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::init_device
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::get_device_property()
- *	Description : Read database to initialize property data members.
- */
-//--------------------------------------------------------
-void Serial2Client::get_device_property()
-{
-	/*----- PROTECTED REGION ID(Serial2Client::get_device_property_before) ENABLED START -----*/
-	
-	//	Initialize property data members
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::get_device_property_before
-
-	mandatoryNotDefined = false;
-
-	//	Read device properties from database.
-	Tango::DbData	dev_prop;
-	dev_prop.push_back(Tango::DbDatum("DeviceName"));
-
-	//	is there at least one property to be read ?
-	if (dev_prop.size()>0)
-	{
-		//	Call database and extract values
-		if (Tango::Util::instance()->_UseDb==true)
-			get_db_device()->get_property(dev_prop);
-	
-		//	get instance on Serial2ClientClass to get class property
-		Tango::DbDatum	def_prop, cl_prop;
-		Serial2ClientClass	*ds_class =
-			(static_cast<Serial2ClientClass *>(get_device_class()));
-		int	i = -1;
-
-		//	Try to initialize DeviceName from class property
-		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
-		if (cl_prop.is_empty()==false)	cl_prop  >>  deviceName;
-		else {
-			//	Try to initialize DeviceName from default device value
-			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
-			if (def_prop.is_empty()==false)	def_prop  >>  deviceName;
-		}
-		//	And try to extract DeviceName value from database
-		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  deviceName;
-		//	Property StartDsPath is mandatory, check if has been defined in database.
-		check_mandatory_property(cl_prop, dev_prop[i]);
-
-	}
-
-	/*----- PROTECTED REGION ID(Serial2Client::get_device_property_after) ENABLED START -----*/
-	
-	//	Check device property data members init
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::get_device_property_after
-}
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::check_mandatory_property()
- *	Description : For mandatory properties check if defined in database.
- */
-//--------------------------------------------------------
-void Serial2Client::check_mandatory_property(Tango::DbDatum &class_prop, Tango::DbDatum &dev_prop)
-{
-	//	Check if all properties are empty
-	if (class_prop.is_empty() && dev_prop.is_empty())
-	{
-		TangoSys_OMemStream	tms;
-		tms << endl <<"Property \'" << dev_prop.name;
-		if (Tango::Util::instance()->_UseDb==true)
-			tms << "\' is mandatory but not defined in database";
-		else
-			tms << "\' is mandatory but cannot be defined without database";
-		string	status(get_status());
-		status += tms.str();
-		set_status(status);
-		mandatoryNotDefined = true;
-		/*----- PROTECTED REGION ID(Serial2Client::check_mandatory_property) ENABLED START -----*/
-		cerr << tms.str() << " for " << device_name << endl;
-		
-		/*----- PROTECTED REGION END -----*/	//	Serial2Client::check_mandatory_property
-	}
-}
-
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::always_executed_hook()
- *	Description : method always executed before any command is executed
- */
-//--------------------------------------------------------
-void Serial2Client::always_executed_hook()
-{
-	DEBUG_STREAM << "Serial2Client::always_executed_hook()  " << device_name << endl;
-	if (mandatoryNotDefined)
-	{
-		string	status(get_status());
-		Tango::Except::throw_exception(
-					(const char *)"PROPERTY_NOT_SET",
-					status.c_str(),
-					(const char *)"Serial2Client::always_executed_hook()");
-	}
-	/*----- PROTECTED REGION ID(Serial2Client::always_executed_hook) ENABLED START -----*/
-	
-	//	code always executed before all requests
-	if (! init_error.empty()) {
-		set_state( Tango::FAULT );
-		set_status( init_error );
-	}
-
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::always_executed_hook
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::read_attr_hardware()
- *	Description : Hardware acquisition for attributes
- */
-//--------------------------------------------------------
-void Serial2Client::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list))
-{
-	DEBUG_STREAM << "Serial2Client::read_attr_hardware(vector<long> &attr_list) entering... " << endl;
-	/*----- PROTECTED REGION ID(Serial2Client::read_attr_hardware) ENABLED START -----*/
-	
-	//	Add your own code
-	check_init();
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::read_attr_hardware
-}
-
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::add_dynamic_attributes()
- *	Description : Create the dynamic attributes if any
- *                for specified device.
- */
-//--------------------------------------------------------
-void Serial2Client::add_dynamic_attributes()
-{
-	/*----- PROTECTED REGION ID(Serial2Client::add_dynamic_attributes) ENABLED START -----*/
-	
-	//	Add your own code to create and add dynamic attributes if any
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::add_dynamic_attributes
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2Client::add_dynamic_commands()
- *	Description : Create the dynamic commands if any
- *                for specified device.
- */
-//--------------------------------------------------------
-void Serial2Client::add_dynamic_commands()
-{
-	/*----- PROTECTED REGION ID(Serial2Client::add_dynamic_commands) ENABLED START -----*/
-	
-	//	Add your own code to create and add dynamic commands if any
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2Client::add_dynamic_commands
-}
-
-/*----- PROTECTED REGION ID(Serial2Client::namespace_ending) ENABLED START -----*/
-
-//	Additional Methods
-void Serial2Client::check_init()
-{
-	if (! init_error.empty())
-		Tango::Except::throw_exception( "",
-				init_error.c_str(),
-				"Serial2Client::check_init()");
-}
-
-void Serial2Client::write_(const vector<unsigned char> &data_to_write)
-{
-	check_init();
-
-	vector<unsigned char> *data_to_write_
-		= const_cast< vector<unsigned char>* >(&data_to_write);
-
-	Tango::DeviceData dtw;
-	dtw << *data_to_write_;
-	device_proxy->command_inout("Write", dtw);
-}
-
-void Serial2Client::read_(const Tango::DevLong len, vector<unsigned char> &data_to_read)
-{
-	check_init();
-
-	Tango::DeviceData dtr, dtr_len;
-	dtr_len << len;
-
-	dtr = device_proxy->command_inout("Read", dtr_len);
-	dtr >> data_to_read;
-}
-
-void Serial2Client::read_until_(const unsigned char delim, vector<unsigned char> &data_to_read)
-{
-	check_init();
-
-	vector<unsigned char> delim_;
-	delim_.push_back(delim);
-
-	Tango::DeviceData dtr, dtr_delim;
-	dtr_delim << delim_;
-
-	dtr = device_proxy->command_inout("ReadUntil", dtr_delim);
-	dtr >> data_to_read;
-}
-
-void Serial2Client::write(const vector<unsigned char> &data_to_write)
-{
-	write_(data_to_write);
-
-	DEBUG_STREAM << "Written " << data_to_write.size()
-		<< " byte(s): " << dump_hex(data_to_write) << endl;
-}
-
-void Serial2Client::read(const Tango::DevLong len, vector<unsigned char> &data_to_read)
-{
-	read_(len, data_to_read);
-	
-	DEBUG_STREAM << "Readed " << data_to_read.size()
-		<< " byte(s): " << dump_hex(data_to_read) << endl;
-}
-
-void Serial2Client::read_until(const unsigned char delim, vector<unsigned char> &data_to_read)
-{
-	read_until_(delim, data_to_read);
-	
-	DEBUG_STREAM << "Readed " << data_to_read.size()
-		<< " byte(s): " << dump_hex(data_to_read) << endl;
-}
-
-void Serial2Client::write(const string &data_to_write)
-{
-	vector<unsigned char> data;
-	for (unsigned int i=0; i<data_to_write.size(); ++i)
-		data.push_back(data_to_write[i]);
-
-	write_(data);
-
-	DEBUG_STREAM << "Written " << data.size()
-		<< " byte(s): " << dump_ascii(data) << endl;
-}
-
-void Serial2Client::read(const Tango::DevLong len, string &data_readed)
-{
-	vector<unsigned char> data;
-	read_(len, data);
-
-	data_readed = "";
-	for (unsigned int i=0; i<data.size(); ++i)
-		data_readed += data[i];
-	
-	DEBUG_STREAM << "Readed " << data.size()
-		<< " byte(s): " << dump_ascii(data) << endl;
-}
-
-void Serial2Client::read_until(const char delim, string &data_readed)
-{
-	vector<unsigned char> data;
-	read_until_(delim, data);
-
-	data_readed = "";
-	for (unsigned int i=0; i<data.size(); ++i)
-		data_readed += data[i];
-	
-	DEBUG_STREAM << "Readed " << data.size()
-		<< " byte(s): " << dump_ascii(data) << endl;
-}
-
-int Serial2Client::output_length()
-{
-	check_init();
-
-	Tango::DevLong ret;
-	device_proxy->read_attribute("OutputLength") >> ret;
-	return ret;
-}
-
-int Serial2Client::input_length()
-{
-	check_init();
-
-	Tango::DevLong ret;
-	device_proxy->read_attribute("InputLength") >> ret;
-	return ret;
-}
-
-Tango::DevState Serial2Client::get_state2()
-{
-	check_init();
-
-	Tango::DevState state;
-	device_proxy->read_attribute( "State" ) >> state;
-	return state;
-}
-
-string Serial2Client::get_status2()
-{
-	check_init();
-
-	string status;
-	device_proxy->read_attribute( "Status" ) >> status;
-	return status;
-}
-
-/*
-void StreamClient::read(Tango::DeviceProxy &dp, const Tango::DevLong len,
-		Tango::DevVarCharArray &data_readed)
-{
-	Tango::DeviceData dtr, dtr_len;
-	dtr_len << len;
-
-	dtr = dp.command_inout("Read", dtr_len);
-	const Tango::DevVarCharArray *dvca;
-	dtr >> dvca;
-	data_readed.length(dvca->length());
-	for (unsigned int i=0; i<dvca->length(); ++i)
-		data_readed[i] = (*dvca)[i];
-}
-
-void StreamClient::read_until(Tango::DeviceProxy &dp,
-		const Tango::DevVarCharArray &delim,
-		Tango::DevVarCharArray &data_readed)
-{
-	Tango::DeviceData dtr, d;
-	Tango::DevVarCharArray *temp = new Tango::DevVarCharArray();
-	temp->length(delim.length());
-	for (unsigned int i=0; i<delim.length(); ++i)
-		(*temp)[i] = delim[i];
-	d << temp;
-	dtr = dp.command_inout("ReadUntil", d);
-	const Tango::DevVarCharArray *dvca;
-	dtr >> dvca;
-	data_readed.length(dvca->length());
-	for (unsigned int i=0; i<dvca->length(); ++i)
-		data_readed[i] = (*dvca)[i];
-}
-
-*/
-/*
-void Serial2Client::write(const Tango::DevVarCharArray *data_to_write)
-{
-	Tango::DeviceData dtw;
-	dtw << data_to_write;
-	device_proxy->command_inout("Write", dtw);
-}
-*/
-/*
-void StreamClient::write(const Tango::DevString *data_to_write)
-{
-}
-
-void StreamClient::write_and_read(Tango::DeviceProxy &dp,
-		const Tango::DevVarCharArray &data_to_write,
-		const Tango::DevLong len, Tango::DevVarCharArray &data_readed)
-{
-	write(dp, data_to_write);
-	read(dp, len, data_readed);
-}
-
-void StreamClient::write_and_read(Tango::DeviceProxy &dp,
-		const string &data_to_write, const Tango::DevLong len,
-		string &data_readed)
-{
-	write(dp, data_to_write);
-	read(dp, len, data_readed);
-}
-
-void StreamClient::write_and_read_until(Tango::DeviceProxy &dp,
-		const Tango::DevVarCharArray &data_to_write,
-		const Tango::DevVarCharArray &delim,
-		Tango::DevVarCharArray &data_readed)
-{
-	write(dp, data_to_write);
-	read_until(dp, delim, data_readed);
-}
-
-void StreamClient::write_and_read_until(Tango::DeviceProxy &dp,
-		const string &data_to_write, const string &delim,
-		string &data_readed)
-{
-	write(dp, data_to_write);
-	read_until(dp, delim, data_readed);
-}
-*/
-string Serial2Client::dump_ascii(const vector<unsigned char> &data)
-{
-	stringstream mesg_ascii;
-
-	for (unsigned int i=0; i<data.size(); ++i) {
-		if (isspace((char)data[i])) {
-			if ((int)data[i] == 0x20)
-				mesg_ascii << (char)data[i];
-		} else
-			mesg_ascii << (char)data[i];
-	}
-
-	return mesg_ascii.str();
-}
-
-string Serial2Client::dump_hex(const vector<unsigned char> &data)
-{
-	stringstream mesg_hex;
-
-	for (unsigned int i=0; i<data.size(); ++i) {
-		mesg_hex << setw(2) << setfill('0')
-			<< hex << (int)data[i] << " ";
-	}
-
-	return mesg_hex.str();
-}
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::namespace_ending
-} //	namespace
diff --git a/src/Serial2Client.h b/src/Serial2Client.h
deleted file mode 100644
index 2381fc4..0000000
--- a/src/Serial2Client.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/*----- PROTECTED REGION ID(Serial2Client.h) ENABLED START -----*/
-//=============================================================================
-//
-// file :        Serial2Client.h
-//
-// description : Include file for the Serial2Client class
-//
-// project :     
-//
-// This file is part of Tango device class.
-// 
-// Tango is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// Tango is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-// 
-// $Author: alessio $
-//
-// $Revision: 1.5 $
-// $Date: 2018-07-09 13:58:05 $
-//
-// $HeadURL:  $
-//
-//=============================================================================
-//                This file is generated by POGO
-//        (Program Obviously used to Generate tango Object)
-//=============================================================================
-
-
-#ifndef Serial2Client_H
-#define Serial2Client_H
-
-#include <tango.h>
-
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client.h
-
-/**
- *  Serial2Client class description:
- *    
- */
-
-namespace Serial2Client_ns
-{
-/*----- PROTECTED REGION ID(Serial2Client::Additional Class Declarations) ENABLED START -----*/
-
-//	Additional Class Declarations
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::Additional Class Declarations
-
-class Serial2Client : public TANGO_BASE_CLASS
-{
-
-/*----- PROTECTED REGION ID(Serial2Client::Data Members) ENABLED START -----*/
-
-//	Add your own data members
-private:
-	Tango::DeviceProxy *device_proxy;
-	string init_error;
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::Data Members
-
-//	Device property data members
-public:
-	//	DeviceName:	
-	string	deviceName;
-
-	bool	mandatoryNotDefined;
-
-
-//	Constructors and destructors
-public:
-	/**
-	 * Constructs a newly device object.
-	 *
-	 *	@param cl	Class.
-	 *	@param s 	Device Name
-	 */
-	Serial2Client(Tango::DeviceClass *cl,string &s);
-	/**
-	 * Constructs a newly device object.
-	 *
-	 *	@param cl	Class.
-	 *	@param s 	Device Name
-	 */
-	Serial2Client(Tango::DeviceClass *cl,const char *s);
-	/**
-	 * Constructs a newly device object.
-	 *
-	 *	@param cl	Class.
-	 *	@param s 	Device name
-	 *	@param d	Device description.
-	 */
-	Serial2Client(Tango::DeviceClass *cl,const char *s,const char *d);
-	/**
-	 * The device object destructor.
-	 */
-	~Serial2Client() {delete_device();};
-
-
-//	Miscellaneous methods
-public:
-	/*
-	 *	will be called at device destruction or at init command.
-	 */
-	void delete_device();
-	/*
-	 *	Initialize the device
-	 */
-	virtual void init_device();
-	/*
-	 *	Read the device properties from database
-	 */
-	void get_device_property();
-	/*
-	 *	Always executed method before execution command method.
-	 */
-	virtual void always_executed_hook();
-
-	/*
-	 *	Check if mandatory property has been set
-	 */
-	 void check_mandatory_property(Tango::DbDatum &class_prop, Tango::DbDatum &dev_prop);
-
-//	Attribute methods
-public:
-	//--------------------------------------------------------
-	/*
-	 *	Method      : Serial2Client::read_attr_hardware()
-	 *	Description : Hardware acquisition for attributes.
-	 */
-	//--------------------------------------------------------
-	virtual void read_attr_hardware(vector<long> &attr_list);
-
-
-	//--------------------------------------------------------
-	/**
-	 *	Method      : Serial2Client::add_dynamic_attributes()
-	 *	Description : Add dynamic attributes if any.
-	 */
-	//--------------------------------------------------------
-	void add_dynamic_attributes();
-
-
-
-
-//	Command related methods
-public:
-
-
-	//--------------------------------------------------------
-	/**
-	 *	Method      : Serial2Client::add_dynamic_commands()
-	 *	Description : Add dynamic commands if any.
-	 */
-	//--------------------------------------------------------
-	void add_dynamic_commands();
-
-/*----- PROTECTED REGION ID(Serial2Client::Additional Method prototypes) ENABLED START -----*/
-
-//	Additional Method prototypes
-private:
-	void check_init();
-	void write_(const vector<unsigned char> &data_to_write);
-	void read_(const Tango::DevLong len, vector<unsigned char> &data_to_read);
-	void read_until_(const unsigned char delim, vector<unsigned char> &data_to_read);
-
-protected:
-	int input_length();
-	int output_length();
-
-	// Methods for binary protocols (using std::vector<char>)
-	void write(const vector<unsigned char> &data_to_write);
-	void read(const Tango::DevLong len, vector<unsigned char> &data_to_read);
-	void read_until(const unsigned char delim, vector<unsigned char> &data_to_read);
-
-	// Methods for ascii protocols (using std::string)
-	void write(const string &data_to_write);
-	void read(const Tango::DevLong len, string &data_readed);
-	void read_until(const char delim, string &data_readed);
-
-	Tango::DevState get_state2();
-	string get_status2();
-
-	// Methods for binary protocols (using Tango::DevVarCharArray)
-
-//	void write(const Tango::DevVarCharArray *data_to_write);
-
-/*
-	void write(const Tango::DevString *data_to_write);
-
-*/
-/*	void read(Tango::DeviceProxy &dp, const Tango::DevLong len,
-			Tango::DevVarCharArray &data_readed);
-
-	void read_until(Tango::DeviceProxy &dp,	const Tango::DevVarCharArray &delim,
-			Tango::DevVarCharArray &data_readed);
-*/
-/*
-	void write_and_read(Tango::DeviceProxy &dp, const Tango::DevVarCharArray &data_to_write,
-			const Tango::DevLong len, Tango::DevVarCharArray &data_readed);
-
-	void write_and_read_until(Tango::DeviceProxy &dp,
-			const Tango::DevVarCharArray &data_to_write, 
-			const Tango::DevVarCharArray &delim,
-			Tango::DevVarCharArray &data_readed);
-*/
-	// Methods for ascii protocols (using Tango::DevString)
-/*	void write_and_read(Tango::DeviceProxy &dp, const string &data_to_write,
-			const Tango::DevLong len, string &data_readed);
-
-	void write_and_read_until(Tango::DeviceProxy &dp, const string &data_to_write,
-			const string &delim, string &data_readed);
-*/
-
-	string dump_ascii(const vector<unsigned char> &data);
-	string dump_hex(const vector<unsigned char> &data);
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::Additional Method prototypes
-};
-
-/*----- PROTECTED REGION ID(Serial2Client::Additional Classes Definitions) ENABLED START -----*/
-
-//	Additional Classes Definitions
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::Additional Classes Definitions
-
-}	//	End of namespace
-
-#endif   //	Serial2Client_H
diff --git a/src/Serial2Client.xmi b/src/Serial2Client.xmi
deleted file mode 100644
index 1536de9..0000000
--- a/src/Serial2Client.xmi
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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="Serial2Client" pogoRevision="9.4">
-    <description description="" title="" sourcePath="/home/alessio/WIP/fermi/servers/serial2/src" language="Cpp" filestogenerate="XMI   file,Code files,Protected Regions" license="GPL" hasMandatoryProperty="true" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false">
-      <inheritances classname="Device_Impl" sourcePath=""/>
-      <identification contact="at elettra.eu> - Alessio Igor Bogani &lt;alessio.bogani" author="Alessio Igor Bogani &lt;alessio.bogani" emailDomain="elettra.eu>" classFamily="Communication" siteSpecific="" platform="Unix Like" bus="Serial Line" manufacturer="none" reference=""/>
-    </description>
-    <deviceProperties name="DeviceName" mandatory="true" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </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" isDynamic="false">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device state">
-        <type xsi:type="pogoDsl:StateType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true" concreteHere="false"/>
-    </commands>
-    <commands name="Status" description="This command gets the device status (stored in its device_status data member) and returns it to the caller." execMethod="dev_status" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device status">
-        <type xsi:type="pogoDsl:ConstStringType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true" concreteHere="false"/>
-    </commands>
-    <preferences docHome="./doc_html" makefileHome="$(TANGO_HOME)"/>
-  </classes>
-</pogoDsl:PogoSystem>
diff --git a/src/Serial2ClientClass.cpp b/src/Serial2ClientClass.cpp
deleted file mode 100644
index dabf701..0000000
--- a/src/Serial2ClientClass.cpp
+++ /dev/null
@@ -1,589 +0,0 @@
-/*----- PROTECTED REGION ID(Serial2ClientClass.cpp) ENABLED START -----*/
-static const char *RcsId      = "$Id: Serial2ClientClass.cpp,v 1.3 2017-12-21 15:35:39 alessio Exp $";
-static const char *TagName    = "Serial2Client $Name:  $";
-static const char *CvsPath    = "$Source: /home/cvsadm/cvsroot/fermi/servers/serial2/src/Serial2ClientClass.cpp,v $";
-static const char *SvnPath    = "$HeadURL:  $";
-static const char *HttpServer = "http://www.esrf.eu/computing/cs/tango/tango_doc/ds_doc/";
-//=============================================================================
-//
-// file :        Serial2ClientClass.cpp
-//
-// description : C++ source for the Serial2ClientClass.
-//               A singleton class derived from DeviceClass.
-//               It implements the command and attribute list
-//               and all properties and methods required
-//               by the Serial2Client once per process.
-//
-// project :     
-//
-// This file is part of Tango device class.
-// 
-// Tango is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// Tango is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-// 
-// $Author: alessio $
-//
-// $Revision: 1.3 $
-// $Date: 2017-12-21 15:35:39 $
-//
-// $HeadURL:  $
-//
-//=============================================================================
-//                This file is generated by POGO
-//        (Program Obviously used to Generate tango Object)
-//=============================================================================
-
-
-#include <Serial2ClientClass.h>
-
-/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass.cpp
-
-//-------------------------------------------------------------------
-/**
- *	Create Serial2ClientClass singleton and
- *	return it in a C function for Python usage
- */
-//-------------------------------------------------------------------
-extern "C" {
-#ifdef _TG_WINDOWS_
-
-__declspec(dllexport)
-
-#endif
-
-	Tango::DeviceClass *_create_Serial2Client_class(const char *name) {
-		return Serial2Client_ns::Serial2ClientClass::init(name);
-	}
-}
-
-namespace Serial2Client_ns
-{
-//===================================================================
-//	Initialize pointer for singleton pattern
-//===================================================================
-Serial2ClientClass *Serial2ClientClass::_instance = NULL;
-
-//--------------------------------------------------------
-/**
- * method : 		Serial2ClientClass::Serial2ClientClass(string &s)
- * description : 	constructor for the Serial2ClientClass
- *
- * @param s	The class name
- */
-//--------------------------------------------------------
-Serial2ClientClass::Serial2ClientClass(string &s):Tango::DeviceClass(s)
-{
-	cout2 << "Entering Serial2ClientClass constructor" << endl;
-	set_default_property();
-	write_class_property();
-
-	/*----- PROTECTED REGION ID(Serial2ClientClass::constructor) ENABLED START -----*/
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::constructor
-
-	cout2 << "Leaving Serial2ClientClass constructor" << endl;
-}
-
-//--------------------------------------------------------
-/**
- * method : 		Serial2ClientClass::~Serial2ClientClass()
- * description : 	destructor for the Serial2ClientClass
- */
-//--------------------------------------------------------
-Serial2ClientClass::~Serial2ClientClass()
-{
-	/*----- PROTECTED REGION ID(Serial2ClientClass::destructor) ENABLED START -----*/
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::destructor
-
-	_instance = NULL;
-}
-
-
-//--------------------------------------------------------
-/**
- * method : 		Serial2ClientClass::init
- * description : 	Create the object if not already done.
- *                  Otherwise, just return a pointer to the object
- *
- * @param	name	The class name
- */
-//--------------------------------------------------------
-Serial2ClientClass *Serial2ClientClass::init(const char *name)
-{
-	if (_instance == NULL)
-	{
-		try
-		{
-			string s(name);
-			_instance = new Serial2ClientClass(s);
-		}
-		catch (bad_alloc &)
-		{
-			throw;
-		}
-	}
-	return _instance;
-}
-
-//--------------------------------------------------------
-/**
- * method : 		Serial2ClientClass::instance
- * description : 	Check if object already created,
- *                  and return a pointer to the object
- */
-//--------------------------------------------------------
-Serial2ClientClass *Serial2ClientClass::instance()
-{
-	if (_instance == NULL)
-	{
-		cerr << "Class is not initialised !!" << endl;
-		exit(-1);
-	}
-	return _instance;
-}
-
-
-
-//===================================================================
-//	Command execution method calls
-//===================================================================
-
-//===================================================================
-//	Properties management
-//===================================================================
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::get_class_property()
- *	Description : Get the class property for specified name.
- */
-//--------------------------------------------------------
-Tango::DbDatum Serial2ClientClass::get_class_property(string &prop_name)
-{
-	for (unsigned int i=0 ; i<cl_prop.size() ; i++)
-		if (cl_prop[i].name == prop_name)
-			return cl_prop[i];
-	//	if not found, returns  an empty DbDatum
-	return Tango::DbDatum(prop_name);
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::get_default_device_property()
- *	Description : Return the default value for device property.
- */
-//--------------------------------------------------------
-Tango::DbDatum Serial2ClientClass::get_default_device_property(string &prop_name)
-{
-	for (unsigned int i=0 ; i<dev_def_prop.size() ; i++)
-		if (dev_def_prop[i].name == prop_name)
-			return dev_def_prop[i];
-	//	if not found, return  an empty DbDatum
-	return Tango::DbDatum(prop_name);
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::get_default_class_property()
- *	Description : Return the default value for class property.
- */
-//--------------------------------------------------------
-Tango::DbDatum Serial2ClientClass::get_default_class_property(string &prop_name)
-{
-	for (unsigned int i=0 ; i<cl_def_prop.size() ; i++)
-		if (cl_def_prop[i].name == prop_name)
-			return cl_def_prop[i];
-	//	if not found, return  an empty DbDatum
-	return Tango::DbDatum(prop_name);
-}
-
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::set_default_property()
- *	Description : Set default property (class and device) for wizard.
- *                For each property, add to wizard property name and description.
- *                If default value has been set, add it to wizard property and
- *                store it in a DbDatum.
- */
-//--------------------------------------------------------
-void Serial2ClientClass::set_default_property()
-{
-	string	prop_name;
-	string	prop_desc;
-	string	prop_def;
-	vector<string>	vect_data;
-
-	//	Set Default Class Properties
-
-	//	Set Default device Properties
-	prop_name = "DeviceName";
-	prop_desc = "";
-	prop_def  = "";
-	vect_data.clear();
-	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);
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::write_class_property()
- *	Description : Set class description fields as property in database
- */
-//--------------------------------------------------------
-void Serial2ClientClass::write_class_property()
-{
-	//	First time, check if database used
-	if (Tango::Util::_UseDb == false)
-		return;
-
-	Tango::DbData	data;
-	string	classname = get_name();
-	string	header;
-	string::size_type	start, end;
-
-	//	Put title
-	Tango::DbDatum	title("ProjectTitle");
-	string	str_title("");
-	title << str_title;
-	data.push_back(title);
-
-	//	Put Description
-	Tango::DbDatum	description("Description");
-	vector<string>	str_desc;
-	str_desc.push_back("");
-	description << str_desc;
-	data.push_back(description);
-
-	//	put cvs or svn location
-	string	filename("Serial2Client");
-	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;
-	inheritance.push_back("TANGO_BASE_CLASS");
-	inher_datum << inheritance;
-	data.push_back(inher_datum);
-
-	//	Call database and and values
-	get_db_class()->put_property(data);
-}
-
-//===================================================================
-//	Factory methods
-//===================================================================
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::device_factory()
- *	Description : Create the device object(s)
- *                and store them in the device list
- */
-//--------------------------------------------------------
-void Serial2ClientClass::device_factory(const Tango::DevVarStringArray *devlist_ptr)
-{
-	/*----- PROTECTED REGION ID(Serial2ClientClass::device_factory_before) ENABLED START -----*/
-	
-	//	Add your own code
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::device_factory_before
-
-	//	Create devices and add it into the device list
-	for (unsigned long i=0 ; i<devlist_ptr->length() ; i++)
-	{
-		cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl;
-		device_list.push_back(new Serial2Client(this, (*devlist_ptr)[i]));
-	}
-
-	//	Manage dynamic attributes if any
-	erase_dynamic_attributes(devlist_ptr, get_class_attr()->get_attr_list());
-
-	//	Export devices to the outside world
-	for (unsigned long i=1 ; i<=devlist_ptr->length() ; i++)
-	{
-		//	Add dynamic attributes if any
-		Serial2Client *dev = static_cast<Serial2Client *>(device_list[device_list.size()-i]);
-		dev->add_dynamic_attributes();
-
-		//	Check before if database used.
-		if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false))
-			export_device(dev);
-		else
-			export_device(dev, dev->get_name().c_str());
-	}
-
-	/*----- PROTECTED REGION ID(Serial2ClientClass::device_factory_after) ENABLED START -----*/
-	
-	//	Add your own code
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::device_factory_after
-}
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::attribute_factory()
- *	Description : Create the attribute object(s)
- *                and store them in the attribute list
- */
-//--------------------------------------------------------
-void Serial2ClientClass::attribute_factory(vector<Tango::Attr *> &att_list)
-{
-	/*----- PROTECTED REGION ID(Serial2ClientClass::attribute_factory_before) ENABLED START -----*/
-	
-	//	Add your own code
-	(void)att_list;
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::attribute_factory_before
-
-	//	Create a list of static attributes
-	create_static_attribute_list(get_class_attr()->get_attr_list());
-	/*----- PROTECTED REGION ID(Serial2ClientClass::attribute_factory_after) ENABLED START -----*/
-	
-	//	Add your own code
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::attribute_factory_after
-}
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::pipe_factory()
- *	Description : Create the pipe object(s)
- *                and store them in the pipe list
- */
-//--------------------------------------------------------
-void Serial2ClientClass::pipe_factory()
-{
-	/*----- PROTECTED REGION ID(Serial2ClientClass::pipe_factory_before) ENABLED START -----*/
-	
-	//	Add your own code
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::pipe_factory_before
-	/*----- PROTECTED REGION ID(Serial2ClientClass::pipe_factory_after) ENABLED START -----*/
-	
-	//	Add your own code
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::pipe_factory_after
-}
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::command_factory()
- *	Description : Create the command object(s)
- *                and store them in the command list
- */
-//--------------------------------------------------------
-void Serial2ClientClass::command_factory()
-{
-	/*----- PROTECTED REGION ID(Serial2ClientClass::command_factory_before) ENABLED START -----*/
-	
-	//	Add your own code
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::command_factory_before
-
-
-	/*----- PROTECTED REGION ID(Serial2ClientClass::command_factory_after) ENABLED START -----*/
-	
-	//	Add your own code
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::command_factory_after
-}
-
-//===================================================================
-//	Dynamic attributes related methods
-//===================================================================
-
-//--------------------------------------------------------
-/**
- * method : 		Serial2ClientClass::create_static_attribute_list
- * description : 	Create the a list of static attributes
- *
- * @param	att_list	the ceated attribute list
- */
-//--------------------------------------------------------
-void Serial2ClientClass::create_static_attribute_list(vector<Tango::Attr *> &att_list)
-{
-	for (unsigned long i=0 ; i<att_list.size() ; i++)
-	{
-		string att_name(att_list[i]->get_name());
-		transform(att_name.begin(), att_name.end(), att_name.begin(), ::tolower);
-		defaultAttList.push_back(att_name);
-	}
-
-	cout2 << defaultAttList.size() << " attributes in default list" << endl;
-
-	/*----- PROTECTED REGION ID(Serial2ClientClass::create_static_att_list) ENABLED START -----*/
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::create_static_att_list
-}
-
-
-//--------------------------------------------------------
-/**
- * method : 		Serial2ClientClass::erase_dynamic_attributes
- * description : 	delete the dynamic attributes if any.
- *
- * @param	devlist_ptr	the device list pointer
- * @param	list of all attributes
- */
-//--------------------------------------------------------
-void Serial2ClientClass::erase_dynamic_attributes(const Tango::DevVarStringArray *devlist_ptr, vector<Tango::Attr *> &att_list)
-{
-	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());
-		Serial2Client *dev = static_cast<Serial2Client *> (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)
-		{
-			string att_name((*ite_att)->get_name_lower());
-			if ((att_name == "state") || (att_name == "status"))
-				continue;
-			vector<string>::iterator ite_str = find(defaultAttList.begin(), defaultAttList.end(), att_name);
-			if (ite_str == defaultAttList.end())
-			{
-				cout2 << att_name << " is a UNWANTED dynamic attribute for device " << (*devlist_ptr)[i] << endl;
-				Tango::Attribute &att = dev->get_device_attr()->get_attr_by_name(att_name.c_str());
-				dev->remove_attribute(att_list[att.get_attr_idx()], true, false);
-				--ite_att;
-			}
-		}
-	}
-	/*----- PROTECTED REGION ID(Serial2ClientClass::erase_dynamic_attributes) ENABLED START -----*/
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::erase_dynamic_attributes
-}
-
-//--------------------------------------------------------
-/**
- *	Method      : Serial2ClientClass::get_attr_by_name()
- *	Description : returns Tango::Attr * object found by name
- */
-//--------------------------------------------------------
-Tango::Attr *Serial2ClientClass::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)
-		if ((*it)->get_name()==attname)
-			return (*it);
-	//	Attr does not exist
-	return NULL;
-}
-
-
-/*----- PROTECTED REGION ID(Serial2ClientClass::Additional Methods) ENABLED START -----*/
-
-/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::Additional Methods
-} //	namespace
diff --git a/src/Serial2ClientClass.h b/src/Serial2ClientClass.h
deleted file mode 100644
index 7c06b9c..0000000
--- a/src/Serial2ClientClass.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*----- PROTECTED REGION ID(Serial2ClientClass.h) ENABLED START -----*/
-//=============================================================================
-//
-// file :        Serial2ClientClass.h
-//
-// description : Include for the Serial2Client root class.
-//               This class is the singleton class for
-//                the Serial2Client device class.
-//               It contains all properties and methods which the 
-//               Serial2Client requires only once e.g. the commands.
-//
-// project :     
-//
-// This file is part of Tango device class.
-// 
-// Tango is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// Tango is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-// 
-// $Author: alessio $
-//
-// $Revision: 1.2 $
-// $Date: 2017-12-21 15:35:39 $
-//
-// $HeadURL:  $
-//
-//=============================================================================
-//                This file is generated by POGO
-//        (Program Obviously used to Generate tango Object)
-//=============================================================================
-
-
-#ifndef Serial2ClientClass_H
-#define Serial2ClientClass_H
-
-#include <tango.h>
-#include <Serial2Client.h>
-
-
-/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass.h
-
-
-namespace Serial2Client_ns
-{
-/*----- PROTECTED REGION ID(Serial2ClientClass::classes for dynamic creation) ENABLED START -----*/
-
-
-/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::classes for dynamic creation
-
-/**
- *	The Serial2ClientClass singleton definition
- */
-
-#ifdef _TG_WINDOWS_
-class __declspec(dllexport)  Serial2ClientClass : public Tango::DeviceClass
-#else
-class Serial2ClientClass : public Tango::DeviceClass
-#endif
-{
-	/*----- PROTECTED REGION ID(Serial2ClientClass::Additionnal DServer data members) ENABLED START -----*/
-	
-	
-	/*----- PROTECTED REGION END -----*/	//	Serial2ClientClass::Additionnal DServer data members
-
-	public:
-		//	write class properties data members
-		Tango::DbData	cl_prop;
-		Tango::DbData	cl_def_prop;
-		Tango::DbData	dev_def_prop;
-	
-		//	Method prototypes
-		static Serial2ClientClass *init(const char *);
-		static Serial2ClientClass *instance();
-		~Serial2ClientClass();
-		Tango::DbDatum	get_class_property(string &);
-		Tango::DbDatum	get_default_device_property(string &);
-		Tango::DbDatum	get_default_class_property(string &);
-	
-	protected:
-		Serial2ClientClass(string &);
-		static Serial2ClientClass *_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();
-		string get_cvstag();
-		string get_cvsroot();
-	
-	private:
-		void device_factory(const Tango::DevVarStringArray *);
-		void create_static_attribute_list(vector<Tango::Attr *> &);
-		void erase_dynamic_attributes(const Tango::DevVarStringArray *,vector<Tango::Attr *> &);
-		vector<string>	defaultAttList;
-		Tango::Attr *get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname);
-};
-
-}	//	End of namespace
-
-#endif   //	Serial2Client_H
diff --git a/src/Serial2ClientStateMachine.cpp b/src/Serial2ClientStateMachine.cpp
deleted file mode 100644
index cf462e9..0000000
--- a/src/Serial2ClientStateMachine.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*----- PROTECTED REGION ID(Serial2ClientStateMachine.cpp) ENABLED START -----*/
-static const char *RcsId = "$Id: Serial2ClientStateMachine.cpp,v 1.2 2017-12-21 15:35:39 alessio Exp $";
-//=============================================================================
-//
-// file :        Serial2ClientStateMachine.cpp
-//
-// description : State machine file for the Serial2Client class
-//
-// project :     
-//
-// This file is part of Tango device class.
-// 
-// Tango is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// Tango is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-// 
-// $Author: alessio $
-//
-// $Revision: 1.2 $
-// $Date: 2017-12-21 15:35:39 $
-//
-// $HeadURL:  $
-//
-//=============================================================================
-//                This file is generated by POGO
-//        (Program Obviously used to Generate tango Object)
-//=============================================================================
-
-#include <Serial2Client.h>
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::Serial2ClientStateMachine.cpp
-
-//================================================================
-//  States  |  Description
-//================================================================
-
-
-namespace Serial2Client_ns
-{
-//=================================================
-//		Attributes Allowed Methods
-//=================================================
-
-
-//=================================================
-//		Commands Allowed Methods
-//=================================================
-
-
-/*----- PROTECTED REGION ID(Serial2Client::Serial2ClientStateAllowed.AdditionalMethods) ENABLED START -----*/
-
-//	Additional Methods
-
-/*----- PROTECTED REGION END -----*/	//	Serial2Client::Serial2ClientStateAllowed.AdditionalMethods
-
-}	//	End of namespace
-- 
GitLab