Skip to content
Snippets Groups Projects
USB2Class.h 7.05 KiB
Newer Older
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
/*----- PROTECTED REGION ID(USB2Class.h) ENABLED START -----*/
//=============================================================================
//
// file :        USB2Class.h
//
// description : Include for the USB2 root class.
//               This class is the singleton class for
//                the USB2 device class.
//               It contains all properties and methods which the 
//               USB2 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.1.1.1 $
// $Date: 2018-01-16 15:32:20 $
//
// $HeadURL:  $
//
//=============================================================================
//                This file is generated by POGO
//        (Program Obviously used to Generate tango Object)
//=============================================================================


#ifndef USB2Class_H
#define USB2Class_H

#include <tango.h>
#include <USB2.h>


/*----- PROTECTED REGION END -----*/	//	USB2Class.h


namespace USB2_ns
{
/*----- PROTECTED REGION ID(USB2Class::classes for dynamic creation) ENABLED START -----*/


/*----- PROTECTED REGION END -----*/	//	USB2Class::classes for dynamic creation

//=========================================
//	Define classes for attributes
//=========================================
//	Attribute InputLength class definition
class InputLengthAttrib: public Tango::Attr
{
public:
	InputLengthAttrib():Attr("InputLength",
			Tango::DEV_LONG, Tango::READ) {}
	~InputLengthAttrib() {}
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
		{(static_cast<USB2 *>(dev))->read_InputLength(att);}
	virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
		{return (static_cast<USB2 *>(dev))->is_InputLength_allowed(ty);}
};

//	Attribute OutputLength class definition
class OutputLengthAttrib: public Tango::Attr
{
public:
	OutputLengthAttrib():Attr("OutputLength",
			Tango::DEV_LONG, Tango::READ) {}
	~OutputLengthAttrib() {}
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
		{(static_cast<USB2 *>(dev))->read_OutputLength(att);}
	virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
		{return (static_cast<USB2 *>(dev))->is_OutputLength_allowed(ty);}
};

//	Attribute Reconnections class definition
class ReconnectionsAttrib: public Tango::Attr
{
public:
	ReconnectionsAttrib():Attr("Reconnections",
			Tango::DEV_LONG, Tango::READ) {}
	~ReconnectionsAttrib() {}
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
		{(static_cast<USB2 *>(dev))->read_Reconnections(att);}
	virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
		{return (static_cast<USB2 *>(dev))->is_Reconnections_allowed(ty);}
};


//=========================================
//	Define classes for commands
//=========================================
//	Command Write class definition
class WriteClass : public Tango::Command
{
public:
	WriteClass(const char   *cmd_name,
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	               Tango::CmdArgType in,
				   Tango::CmdArgType out,
				   const char        *in_desc,
				   const char        *out_desc,
				   Tango::DispLevel  level)
	:Command(cmd_name,in,out,in_desc,out_desc, level)	{}
	WriteClass(const char   *cmd_name,
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	               Tango::CmdArgType in,
				   Tango::CmdArgType out)
	:Command(cmd_name,in,out)	{}
	~WriteClass() {}

Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any);
	virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any)
	{return (static_cast<USB2 *>(dev))->is_Write_allowed(any);}
};

//	Command Read class definition
class ReadClass : public Tango::Command
{
public:
	ReadClass(const char   *cmd_name,
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	               Tango::CmdArgType in,
				   Tango::CmdArgType out,
				   const char        *in_desc,
				   const char        *out_desc,
				   Tango::DispLevel  level)
	:Command(cmd_name,in,out,in_desc,out_desc, level)	{}
	ReadClass(const char   *cmd_name,
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	               Tango::CmdArgType in,
				   Tango::CmdArgType out)
	:Command(cmd_name,in,out)	{}
	~ReadClass() {}

Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any);
	virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any)
	{return (static_cast<USB2 *>(dev))->is_Read_allowed(any);}
};

//	Command ReadUntil class definition
class ReadUntilClass : public Tango::Command
{
public:
	ReadUntilClass(const char   *cmd_name,
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	               Tango::CmdArgType in,
				   Tango::CmdArgType out,
				   const char        *in_desc,
				   const char        *out_desc,
				   Tango::DispLevel  level)
	:Command(cmd_name,in,out,in_desc,out_desc, level)	{}
	ReadUntilClass(const char   *cmd_name,
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	               Tango::CmdArgType in,
				   Tango::CmdArgType out)
	:Command(cmd_name,in,out)	{}
	~ReadUntilClass() {}

Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any);
	virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any)
	{return (static_cast<USB2 *>(dev))->is_ReadUntil_allowed(any);}
};


/**
 *	The USB2Class singleton definition
 */

#ifdef _TG_WINDOWS_
class __declspec(dllexport)  USB2Class : public Tango::DeviceClass
#else
class USB2Class : public Tango::DeviceClass
#endif
{
	/*----- PROTECTED REGION ID(USB2Class::Additional DServer data members) ENABLED START -----*/
	/*----- PROTECTED REGION END -----*/	//	USB2Class::Additional DServer data members
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed

	public:
		//	write class properties data members
		Tango::DbData	cl_prop;
		Tango::DbData	cl_def_prop;
		Tango::DbData	dev_def_prop;
		//	Method prototypes
		static USB2Class *init(const char *);
		static USB2Class *instance();
		~USB2Class();
		Tango::DbDatum	get_class_property(std::string &);
		Tango::DbDatum	get_default_device_property(std::string &);
		Tango::DbDatum	get_default_class_property(std::string &);

Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	protected:
		USB2Class(std::string &);
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
		static USB2Class *_instance;
		void command_factory();
		void attribute_factory(std::vector<Tango::Attr *> &);
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
		void pipe_factory();
		void write_class_property();
		void set_default_property();
		void get_class_property();
		std::string get_cvstag();
		std::string get_cvsroot();

Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
	private:
		void device_factory(TANGO_UNUSED(const Tango::DevVarStringArray *));
		void create_static_attribute_list(std::vector<Tango::Attr *> &);
		void erase_dynamic_attributes(const Tango::DevVarStringArray *,std::vector<Tango::Attr *> &);
		std::vector<std::string>	defaultAttList;
		Tango::Attr *get_attr_object_by_name(std::vector<Tango::Attr *> &att_list, std::string attname);
Alessio Igor Bogani's avatar
Alessio Igor Bogani committed
};

}	//	End of namespace

#endif   //	USB2_H