/
Device.h
79 lines (57 loc) · 2.36 KB
/
Device.h
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*==============================================================================
Device.h
rc-unitd: a device event to osc bridge
Copyright (C) 2010 Dan Wilcox <danomatika@gmail.com>
This program 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.
This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
==============================================================================*/
#ifndef DEVICE_H
#define DEVICE_H
#include "Common.h"
/** \class Device
\brief a baseclass for devices
*/
class Device
{
public:
Device(string oscAddress="/device") :
m_devName(""), m_oscAddress(oscAddress),
m_config(Config::instance()) {}
virtual ~Device() {}
/**
\brief open the device
\return false on failure
*/
virtual bool open() = 0;
/// close the device
virtual void close() = 0;
/**
\brief handles device events and sends corresponding OSC messages
\return true if event was handled
call this inside a loop, does not block, does nothing if device has
not been opened
*/
virtual bool handleEvents(void* data=NULL) = 0;
/// print device info
virtual void print() = 0;
/// returns true if device is open
virtual bool isOpen() = 0;
/// get device name i.e. "/dev/input/js0"
inline string getDevName() {return m_devName;}
/// set/get the osc addrss of this device ie "/js0" etc
inline void setOscAddress(string oscAddress) {m_oscAddress = oscAddress;}
inline string getOscAddress() {return m_oscAddress;}
protected:
string m_devName; ///< the device name
string m_oscAddress; ///< osc address to send to
Config& m_config; ///< global config access
};
#endif // DEVICE_H