Open Lighting Architecture 0.10.9
Loading...
Searching...
No Matches
DimmerRootDevice.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 * DimmerRootDevice.h
17 * Copyright (C) 2013 Simon Newton
18 */
19
29#ifndef INCLUDE_OLA_RDM_DIMMERROOTDEVICE_H_
30#define INCLUDE_OLA_RDM_DIMMERROOTDEVICE_H_
31
35#include <ola/rdm/UID.h>
36
37#include <string>
38#include <map>
39
40namespace ola {
41namespace rdm {
42
47 public:
48 typedef const std::map<uint16_t, class DimmerSubDevice*> SubDeviceMap;
49
50 DimmerRootDevice(const UID &uid, SubDeviceMap sub_devices);
51
52 void SendRDMRequest(RDMRequest *request, RDMCallback *callback);
53
54 private:
58 class RDMOps : public ResponderOps<DimmerRootDevice> {
59 public:
60 static RDMOps *Instance() {
61 if (!instance)
62 instance = new RDMOps();
63 return instance;
64 }
65
66 private:
67 RDMOps() : ResponderOps<DimmerRootDevice>(PARAM_HANDLERS) {}
68 static RDMOps *instance;
69 };
70
71 const UID m_uid;
72 bool m_identify_on;
73 rdm_identify_mode m_identify_mode;
74 SubDeviceMap m_sub_devices;
75
76 RDMResponse *GetDeviceInfo(const RDMRequest *request);
77 RDMResponse *GetProductDetailList(const RDMRequest *request);
78 RDMResponse *GetDeviceModelDescription(const RDMRequest *request);
79 RDMResponse *GetManufacturerLabel(const RDMRequest *request);
80 RDMResponse *GetDeviceLabel(const RDMRequest *request);
81 RDMResponse *GetSoftwareVersionLabel(const RDMRequest *request);
82 RDMResponse *GetIdentify(const RDMRequest *request);
83 RDMResponse *SetIdentify(const RDMRequest *request);
84 RDMResponse *GetDmxBlockAddress(const RDMRequest *request);
85 RDMResponse *SetDmxBlockAddress(const RDMRequest *request);
86 RDMResponse *GetIdentifyMode(const RDMRequest *request);
87 RDMResponse *SetIdentifyMode(const RDMRequest *request);
88
89 static const ResponderOps<DimmerRootDevice>::ParamHandler PARAM_HANDLERS[];
90};
91} // namespace rdm
92} // namespace ola
93#endif // INCLUDE_OLA_RDM_DIMMERROOTDEVICE_H_
A soft responder that implements a SubDevice in DimmerResponder.
Definitions and Interfaces to implement an RDMController that sends a single message at a time.
A framework for building RDM responders.
A RDM unique identifier (UID).
The base class for all 1 argument callbacks.
Definition Callback.h:982
Definition DimmerRootDevice.h:46
void SendRDMRequest(RDMRequest *request, RDMCallback *callback)
Send a RDM command.
Definition DimmerRootDevice.cpp:97
DimmerRootDevice(const UID &uid, SubDeviceMap sub_devices)
Definition DimmerRootDevice.cpp:83
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