Open Lighting Architecture 0.10.9
Loading...
Searching...
No Matches
MovingLightResponder.h
Go to the documentation of this file.
1/*
2 * This library is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU Lesser General Public
4 * License as published by the Free Software Foundation; either
5 * version 2.1 of the License, or (at your option) any later version.
6 *
7 * This library 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 GNU
10 * Lesser General Public License for more details.
11 *
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with this library; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15 *
16 * MovingLightResponder.h
17 * Copyright (C) 2013 Simon Newton
18 */
19
29#ifndef INCLUDE_OLA_RDM_MOVINGLIGHTRESPONDER_H_
30#define INCLUDE_OLA_RDM_MOVINGLIGHTRESPONDER_H_
31
33#include <ola/rdm/RDMEnums.h>
35#include <ola/rdm/ResponderPersonality.h>
36#include <ola/rdm/UID.h>
37
38#include <string>
39
40namespace ola {
41namespace rdm {
42
47 public:
48 explicit MovingLightResponder(const UID &uid);
49
50 void SendRDMRequest(RDMRequest *request, RDMCallback *callback);
51
52 uint16_t StartAddress() const { return m_start_address; }
53 uint16_t Footprint() const {
54 return m_personality_manager.ActivePersonalityFootprint();
55 }
56
57 private:
61 class RDMOps : public ResponderOps<MovingLightResponder> {
62 public:
63 static RDMOps *Instance() {
64 if (!instance)
65 instance = new RDMOps();
66 return instance;
67 }
68
69 private:
70 RDMOps() : ResponderOps<MovingLightResponder>(PARAM_HANDLERS) {}
71
72 static RDMOps *instance;
73 };
74
78 class Personalities : public PersonalityCollection {
79 public:
80 static const Personalities *Instance();
81
82 private:
83 explicit Personalities(const PersonalityList &personalities) :
84 PersonalityCollection(personalities) {
85 }
86
87 static Personalities *instance;
88 };
89
90 const UID m_uid;
91 uint16_t m_start_address;
92 std::string m_language;
93 bool m_identify_mode;
94 bool m_pan_invert;
95 bool m_tilt_invert;
96 uint32_t m_device_hours;
97 uint32_t m_lamp_hours;
98 uint32_t m_lamp_strikes;
99 rdm_lamp_state m_lamp_state;
100 rdm_lamp_mode m_lamp_on_mode;
101 uint32_t m_device_power_cycles;
102 rdm_display_invert m_display_invert;
103 uint8_t m_display_level;
104 bool m_pan_tilt_swap;
105 rdm_power_state m_power_state;
106 std::string m_device_label;
107 PersonalityManager m_personality_manager;
108
109 RDMResponse *GetParamDescription(const RDMRequest *request);
110 RDMResponse *GetDeviceInfo(const RDMRequest *request);
111 RDMResponse *GetFactoryDefaults(const RDMRequest *request);
112 RDMResponse *SetFactoryDefaults(const RDMRequest *request);
113 RDMResponse *GetLanguageCapabilities(const RDMRequest *request);
114 RDMResponse *GetLanguage(const RDMRequest *request);
115 RDMResponse *SetLanguage(const RDMRequest *request);
116 RDMResponse *GetProductDetailList(const RDMRequest *request);
117 RDMResponse *GetPersonality(const RDMRequest *request);
118 RDMResponse *SetPersonality(const RDMRequest *request);
119 RDMResponse *GetPersonalityDescription(const RDMRequest *request);
120 RDMResponse *GetSlotInfo(const RDMRequest *request);
121 RDMResponse *GetSlotDescription(const RDMRequest *request);
122 RDMResponse *GetSlotDefaultValues(const RDMRequest *request);
123 RDMResponse *GetDmxStartAddress(const RDMRequest *request);
124 RDMResponse *SetDmxStartAddress(const RDMRequest *request);
125 RDMResponse *GetDeviceHours(const RDMRequest *request);
126 RDMResponse *SetDeviceHours(const RDMRequest *request);
127 RDMResponse *GetLampHours(const RDMRequest *request);
128 RDMResponse *SetLampHours(const RDMRequest *request);
129 RDMResponse *GetLampStrikes(const RDMRequest *request);
130 RDMResponse *SetLampStrikes(const RDMRequest *request);
131 RDMResponse *GetLampState(const RDMRequest *request);
132 RDMResponse *SetLampState(const RDMRequest *request);
133 RDMResponse *GetLampOnMode(const RDMRequest *request);
134 RDMResponse *SetLampOnMode(const RDMRequest *request);
135 RDMResponse *GetDevicePowerCycles(const RDMRequest *request);
136 RDMResponse *SetDevicePowerCycles(const RDMRequest *request);
137 RDMResponse *GetIdentify(const RDMRequest *request);
138 RDMResponse *SetIdentify(const RDMRequest *request);
139 RDMResponse *GetDisplayInvert(const RDMRequest *request);
140 RDMResponse *SetDisplayInvert(const RDMRequest *request);
141 RDMResponse *GetDisplayLevel(const RDMRequest *request);
142 RDMResponse *SetDisplayLevel(const RDMRequest *request);
143 RDMResponse *GetPanInvert(const RDMRequest *request);
144 RDMResponse *SetPanInvert(const RDMRequest *request);
145 RDMResponse *GetTiltInvert(const RDMRequest *request);
146 RDMResponse *SetTiltInvert(const RDMRequest *request);
147 RDMResponse *GetPanTiltSwap(const RDMRequest *request);
148 RDMResponse *SetPanTiltSwap(const RDMRequest *request);
149 RDMResponse *GetRealTimeClock(const RDMRequest *request);
150 RDMResponse *SetResetDevice(const RDMRequest *request);
151 RDMResponse *GetPowerState(const RDMRequest *request);
152 RDMResponse *SetPowerState(const RDMRequest *request);
153 RDMResponse *GetManufacturerLabel(const RDMRequest *request);
154 RDMResponse *GetDeviceLabel(const RDMRequest *request);
155 RDMResponse *SetDeviceLabel(const RDMRequest *request);
156 RDMResponse *GetDeviceModelDescription(const RDMRequest *request);
157 RDMResponse *GetSoftwareVersionLabel(const RDMRequest *request);
158 RDMResponse *GetOlaCodeVersion(const RDMRequest *request);
159
161 PARAM_HANDLERS[];
162};
163} // namespace rdm
164} // namespace ola
165#endif // INCLUDE_OLA_RDM_MOVINGLIGHTRESPONDER_H_
Definitions and Interfaces to implement an RDMController that sends a single message at a time.
Various constants used in RDM.
A framework for building RDM responders.
A RDM unique identifier (UID).
The base class for all 1 argument callbacks.
Definition Callback.h:982
Definition MovingLightResponder.h:46
MovingLightResponder(const UID &uid)
Definition MovingLightResponder.cpp:224
void SendRDMRequest(RDMRequest *request, RDMCallback *callback)
Send a RDM command.
Definition MovingLightResponder.cpp:248
Definition ResponderPersonality.h:65
std::vector< Personality > PersonalityList
Definition ResponderPersonality.h:68
Definition ResponderPersonality.h:91
The interface that can send RDMRequest.
Definition RDMControllerInterface.h:73
RDM Commands that represent requests (GET, SET or DISCOVER).
Definition RDMCommand.h:234
An RDM Command that represents responses (GET, SET or DISCOVER).
Definition RDMCommand.h:457
A class which dispatches RDM requests to registered PID handlers.
Definition ResponderOps.h:60
Represents a RDM UID.
Definition UID.h:57
The namespace containing all OLA symbols.
Definition Credentials.cpp:44
the structure that defines the behaviour for a specific PID.o
Definition ResponderOps.h:76