Open Lighting Architecture
0.9.6
Main Page
Modules
Related Pages
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
plugins
usbdmx
JaRuleWidgetImpl.h
1
/*
2
* This program is free software; you can redistribute it and/or modify
3
* it under the terms of the GNU General Public License as published by
4
* the Free Software Foundation; either version 2 of the License, or
5
* (at your option) any later version.
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU Library General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software
14
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
15
*
16
* JaRuleWidgetImpl.h
17
* The implementation of the Ja Rule Widget.
18
* Copyright (C) 2015 Simon Newton
19
*/
20
21
#ifndef PLUGINS_USBDMX_JARULEWIDGETIMPL_H_
22
#define PLUGINS_USBDMX_JARULEWIDGETIMPL_H_
23
24
#include <
ola/base/Macro.h
>
25
#include <ola/io/ByteString.h>
26
#include <
ola/rdm/DiscoveryAgent.h
>
27
#include <
ola/rdm/QueueingRDMController.h
>
28
#include <
ola/rdm/RDMCommand.h
>
29
#include <
ola/rdm/RDMControllerInterface.h
>
30
#include <
ola/rdm/UID.h
>
31
#include <ola/util/SequenceNumber.h>
32
33
#include "plugins/usbdmx/JaRuleEndpoint.h"
34
#include "plugins/usbdmx/JaRuleWidget.h"
35
#include "plugins/usbdmx/LibUsbAdaptor.h"
36
37
namespace
ola {
38
namespace
plugin {
39
namespace
usbdmx {
40
44
class
JaRuleWidgetImpl
:
public
ola::rdm::DiscoveryTargetInterface
,
45
public
ola::rdm::DiscoverableRDMControllerInterface
{
46
public
:
55
JaRuleWidgetImpl
(
ola::io::SelectServerInterface
*ss,
56
AsyncronousLibUsbAdaptor
*adaptor,
57
libusb_device *device,
58
const
ola::rdm::UID
&controller_uid);
59
60
~
JaRuleWidgetImpl
();
61
66
bool
Init
();
67
68
// From DiscoverableRDMControllerInterface
69
void
RunFullDiscovery
(
ola::rdm::RDMDiscoveryCallback
*callback);
70
void
RunIncrementalDiscovery
(
ola::rdm::RDMDiscoveryCallback
*callback);
71
void
SendRDMRequest
(
ola::rdm::RDMRequest
*request,
72
ola::rdm::RDMCallback
*on_complete);
73
74
// From DiscoveryTargetInterface
75
void
MuteDevice
(
const
ola::rdm::UID
&target,
76
MuteDeviceCallback
*mute_complete);
77
void
UnMuteAll
(
UnMuteDeviceCallback
*unmute_complete);
78
void
Branch
(
const
ola::rdm::UID
&lower,
79
const
ola::rdm::UID
&upper,
80
BranchCallback
*branch_complete);
81
87
bool
SendDMX
(
const
DmxBuffer
&buffer);
88
92
void
ResetDevice
();
93
94
private
:
95
typedef
enum
{
96
RC_OK,
97
RC_UNKNOWN,
98
RC_BUFFER_FULL,
99
RC_BAD_PARAM,
100
RC_TX_ERROR,
101
RC_RDM_TIMEOUT,
102
RC_RDM_BCAST_RESPONSE,
103
RC_RDM_INVALID_RESPONSE,
104
} JaRuleReturnCode;
105
106
PACK(
107
struct
DUBTiming {
108
uint16_t start;
109
uint16_t end;
110
});
111
112
PACK(
113
struct
GetSetTiming {
114
uint16_t break_start;
115
uint16_t mark_start;
116
uint16_t mark_end;
117
});
118
119
JaRuleEndpoint
m_endpoint;
120
bool
m_in_shutdown;
121
122
// DMX members
123
DmxBuffer
m_dmx;
124
bool
m_dmx_in_progress;
125
bool
m_dmx_queued;
126
JaRuleEndpoint::CommandCompleteCallback
*m_dmx_callback;
127
128
// RDM members
129
ola::rdm::DiscoveryAgent
m_discovery_agent;
130
const
ola::rdm::UID
m_our_uid;
131
ola::SequenceNumber<uint8_t>
m_transaction_number;
132
ola::rdm::UIDSet
m_uids;
133
134
void
CheckStatusFlags(uint8_t flags);
135
void
DMXComplete(
JaRuleEndpoint::CommandResult
result, uint8_t return_code,
136
uint8_t status_flags,
const
ola::io::ByteString
&payload);
137
void
MuteDeviceComplete(
MuteDeviceCallback
*mute_complete,
138
JaRuleEndpoint::CommandResult
result,
139
uint8_t return_code,
140
uint8_t status_flags,
141
const
ola::io::ByteString
&payload);
142
void
UnMuteDeviceComplete(
UnMuteDeviceCallback
*unmute_complete,
143
JaRuleEndpoint::CommandResult
result,
144
uint8_t return_code,
145
uint8_t status_flags,
146
const
ola::io::ByteString
&payload);
147
void
DUBComplete(
BranchCallback
*callback,
148
JaRuleEndpoint::CommandResult
status,
149
uint8_t return_code,
150
uint8_t status_flags,
151
const
ola::io::ByteString
&payload);
152
void
RDMComplete(
const
ola::rdm::RDMRequest
*request,
153
ola::rdm::RDMCallback
*m_rdm_callback,
154
JaRuleEndpoint::CommandResult
result,
155
uint8_t return_code,
156
uint8_t status_flags,
157
const
ola::io::ByteString
&payload);
158
ola::rdm::RDMResponse
* UnpackRDMResponse(
159
const
ola::rdm::RDMRequest
*request,
160
const
ola::io::ByteString
&payload,
161
ola::rdm::RDMStatusCode *status_code);
162
void
DiscoveryComplete(
ola::rdm::RDMDiscoveryCallback
*callback,
163
OLA_UNUSED
bool
ok,
164
const
ola::rdm::UIDSet
&uids);
165
JaRuleEndpoint::CommandClass
GetCommandFromRequest(
166
const
ola::rdm::RDMRequest
*request);
167
168
DISALLOW_COPY_AND_ASSIGN(
JaRuleWidgetImpl
);
169
};
170
}
// namespace usbdmx
171
}
// namespace plugin
172
}
// namespace ola
173
#endif // PLUGINS_USBDMX_JARULEWIDGETIMPL_H_
Generated on Fri Jul 3 2015 15:58:45 for Open Lighting Architecture by
1.8.1.2