     1	class DeviceImpl : public Tango_Device_skel
     2	{
     3	public:
     4		DeviceImpl(DeviceClass *class_ptr,
     5		           const char *dev_name,const char *description = "A TANGO device",
     6		           Tango_DevState state = Tango_UNKNOWN,
     7		           const char *status = "Not Initialised");
     8		DeviceImpl(DeviceClass *class_ptr,string &dev_name);	
     9		DeviceImpl(DeviceClass *class_ptr,string &dev_name,string &description);
    10		DeviceImpl(DeviceClass *class_ptr,
    11		           string &dev_name,string &description,
    12		           Tango_DevState state,string &status);
    13			   
    14		virtual ~DeviceImpl();
    15			
    16		string &get_status();
    17		void set_status(const string &new_status);
    18		Tango_DevState &get_state();
    19		void set_state (const Tango_DevState &new_state);
    20		Tango_DevState &get_init_state();
    21		string &get_init_status();
    22		string &get_name();
    23		DeviceClass *get_device_class();
    24		MultiAttribute *get_device_attr();
    25		void set_device_attr(MultiAttribute *);
    26	
    27		virtual char *name();
    28		virtual char *description();
    29		virtual char *status();
    30		virtual Tango_DevState state();
    31	
    32		virtual CORBA_Any *command_inout(const char *, const CORBA_Any &);
    33		virtual Tango_DevVarStringArray *black_box(CORBA_Long);
    34		virtual Tango_DevCmdInfoList *command_list_query();
    35		virtual Tango_DevCmdInfo *command_query(const char *);
    36		virtual Tango_DevInfo *info();
    37		virtual void ping();
    38		virtual Tango_AttributeConfigList *get_attribute_config(
    39					const Tango_DevVarStringArray &);
    40		virtual void set_attribute_config(const Tango_AttributeConfigList &);
    41		virtual Tango_AttributeValueList *read_attributes(
    42					const Tango_DevVarStringArray &);
    43		virtual void write_attributes(const Tango_AttributeValueList &);
    44	
    45		virtual void init_device() = 0;
    46		virtual Tango_DevState dev_state();
    47		virtual Tango_DevString dev_status();
    48		virtual void always_executed_hook();
    49		virtual void read_attr_hardware(vector<long> &);
    50		virtual void read_attr(Attribute &);
    51		virtual void write_attr_hardware(vector<long> &);
    52		
    53		void register_signal(long);
    54		void unregister_signal(long);
    55		virtual void signal_handler(long);
    56		
    57	protected:
    58		BlackBox		*blackbox_ptr;	
    59		long			blackbox_depth;
    60		string			device_name;	
    61		string			desc;	
    62		string			device_status;	
    63		string			init_status;
    64		Tango_DevState		device_state;
    65		Tango_DevState		init_state;
    66		Tango_DevSecurity	access;	
    67		long			version;
    68		DeviceClass		*device_class;
    69		MultiAttribute		*dev_attr;
    70	};
