Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*----- PROTECTED REGION ID(USB2.h) ENABLED START -----*/
//=============================================================================
//
// file : USB2.h
//
// description : Include file for the USB2 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: 2018-10-24 08:12:41 $
//
// $HeadURL: $
//
//=============================================================================
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//=============================================================================
#ifndef USB2_H
#define USB2_H
#include <tango.h>
#include <libusb-1.0/libusb.h>
/*----- PROTECTED REGION END -----*/ // USB2.h
#ifdef TANGO_LOG
// cppTango after c934adea (Merge branch 'remove-cout-definition' into 'main', 2022-05-23)
// nothing to do
#else
// cppTango 9.3-backports and older
#define TANGO_LOG cout
#define TANGO_LOG_INFO cout2
#define TANGO_LOG_DEBUG cout3
#endif // TANGO_LOG
namespace USB2_ns
{
/*----- PROTECTED REGION ID(USB2::Additional Class Declarations) ENABLED START -----*/
// Additional Class Declarations
/*----- PROTECTED REGION END -----*/ // USB2::Additional Class Declarations
class USB2 : public TANGO_BASE_CLASS
{
/*----- PROTECTED REGION ID(USB2::Data Members) ENABLED START -----*/
// Add your own data members
string init_error;
libusb_context *ctx;
int conn_state;
enum event_type {READ, WRITE};
int reconnections;
enum {SLEEP, SELECT} multiplexing;
/*----- PROTECTED REGION END -----*/ // USB2::Data Members
// Device property data members
public:
// Timeout:
Tango::DevLong timeout;
// VendorID:
// Interface:
Tango::DevLong interface;
// EndpointUP:
// MaxPacketSize:
Tango::DevLong maxPacketSize;
bool mandatoryNotDefined;
// Attribute data members
public:
Tango::DevLong *attr_InputLength_read;
Tango::DevLong *attr_OutputLength_read;
Tango::DevLong *attr_Reconnections_read;
// Constructors and destructors
public:
/**
* Constructs a newly device object.
*
* @param cl Class.
* @param s Device Name
*/
USB2(Tango::DeviceClass *cl,std::string &s);
/**
* Constructs a newly device object.
*
* @param cl Class.
* @param s Device Name
*/
USB2(Tango::DeviceClass *cl,const char *s);
/**
* Constructs a newly device object.
*
* @param cl Class.
* @param s Device name
* @param d Device description.
*/
USB2(Tango::DeviceClass *cl,const char *s,const char *d);
/**
* The device object destructor.
*/
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
// 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 : USB2::read_attr_hardware()
* Description: Hardware acquisition for attributes.
*/
//--------------------------------------------------------
virtual void read_attr_hardware(std::vector<long> &attr_list);
/**
* Attribute InputLength related methods
*
* Data type: Tango::DevLong
* Attr type: Scalar
*/
virtual void read_InputLength(Tango::Attribute &attr);
virtual bool is_InputLength_allowed(Tango::AttReqType type);
/**
* Attribute OutputLength related methods
*
* Data type: Tango::DevLong
* Attr type: Scalar
*/
virtual void read_OutputLength(Tango::Attribute &attr);
virtual bool is_OutputLength_allowed(Tango::AttReqType type);
/**
* Attribute Reconnections related methods
*
* Data type: Tango::DevLong
* Attr type: Scalar
*/
virtual void read_Reconnections(Tango::Attribute &attr);
virtual bool is_Reconnections_allowed(Tango::AttReqType type);
//--------------------------------------------------------
/**
* Method : USB2::add_dynamic_attributes()
* Description: Add dynamic attributes if any.
*/
//--------------------------------------------------------
void add_dynamic_attributes();
// Command related methods
public:
/**
* Command Write related method
*
*/
virtual void write(const Tango::DevVarCharArray *argin);
virtual bool is_Write_allowed(const CORBA::Any &any);
/**
* Command Read related method
*
*/
virtual Tango::DevVarCharArray *read(Tango::DevLong argin);
virtual bool is_Read_allowed(const CORBA::Any &any);
/**
* Command ReadUntil related method
*
*/
virtual Tango::DevVarCharArray *read_until(const Tango::DevVarCharArray *argin);
virtual bool is_ReadUntil_allowed(const CORBA::Any &any);
//--------------------------------------------------------
/**
* Method : USB2::add_dynamic_commands()
* Description: Add dynamic commands if any.
*/
//--------------------------------------------------------
void add_dynamic_commands();
/*----- PROTECTED REGION ID(USB2::Additional Method prototypes) ENABLED START -----*/
// Additional Method prototypes
void open();
int input_queue_length();
int output_queue_length();
void close();
ssize_t _write(unsigned char*, size_t);
void _read(size_t);
void check_state(bool);
int select(event_type);
void resolve();
/*----- PROTECTED REGION END -----*/ // USB2::Additional Method prototypes
};
/*----- PROTECTED REGION ID(USB2::Additional Classes Definitions) ENABLED START -----*/
// Additional Classes Definitions
/*----- PROTECTED REGION END -----*/ // USB2::Additional Classes Definitions
} // End of namespace
#endif // USB2_H