32 #define IOCOMMAND_MAP(XX) \ 33 XX(undefined, "Undefined or invalid") \ 34 XX(query, "Query node states") \ 35 XX(off, "Turn node off or set to minimum") \ 36 XX(on, "Turn node on or set to maximum") \ 37 XX(toggle, "Toggle node(s) between on and off") \ 38 XX(latch, "Relay nodes") \ 39 XX(momentary, "Relay nodes") \ 40 XX(delay, "Relay nodes") \ 41 XX(set, "Set value") \ 42 XX(adjust, "Adjust value") \ 43 XX(update, "Perform update cycle (e.g. DMX512)") 46 #define XX(tag, comment) tag, 97 debug_d(
"Request %p created",
this);
105 debug_d(
"Request %p (%s) destroyed",
this, requestId.c_str());
138 virtual void submit();
150 virtual void getJson(JsonObject json)
const;
174 this->callback = callback;
179 command = Command::query;
180 return setNode(node);
185 setCommand(Command::off);
186 return setNode(node);
191 setCommand(Command::on);
192 return setNode(node);
197 setCommand(Command::toggle);
198 return setNode(node);
232 setCommand(Command::on);
234 setCommand(Command::off);
238 return setNode(node);
257 virtual void handleEvent(
Event event);
263 Command command{Command::undefined};
virtual ~Request()
Definition: IOControl/include/IO/Request.h:103
#define str(s)
Definition: testrunner.h:124
void setID(const String &value)
Request identifiers are optional, useful for tracking remote requests.
Definition: IOControl/include/IO/Request.h:155
Identifies a device node.
Definition: DevNode.h:30
void onComplete(Callback callback)
Set the request completion callback.
Definition: IOControl/include/IO/Request.h:172
Command getCommand() const
Definition: IOControl/include/IO/Request.h:249
Definition: IOControl/include/IO/Controller.h:25
The String class.
Definition: WString.h:136
bool isPending() const
Definition: IOControl/include/IO/Request.h:116
Definition: Libraries/IOControl/include/IO/Error.h:71
virtual DevNode::States getNodeStates(DevNode node)
Query node status from response.
Definition: IOControl/include/IO/Request.h:220
Handles requests for a specific device; the requests are executed by the relevant controller...
Definition: Libraries/IOControl/include/IO/Device.h:35
String toString(Event event)
#define debug_d
Definition: debug_progmem.h:100
Class to manage a NUL-terminated C-style string When storing persistent strings in RAM the regular St...
Definition: CString.h:26
Request represents a single user request/response over a bus.
Definition: IOControl/include/IO/Request.h:75
bool fromString(Command &cmd, const char *str)
bool nodeOff(DevNode node)
Definition: IOControl/include/IO/Request.h:183
bool nodeQuery(DevNode node)
Definition: IOControl/include/IO/Request.h:177
Base class template for linked items with type casting.
Definition: LinkedObject.h:61
Command
Definition: IOControl/include/IO/Request.h:45
State
Definition: DevNode.h:36
Manage a set of bit values using enumeration.
Definition: BitSet.h:44
bool nodeToggle(DevNode node)
Definition: IOControl/include/IO/Request.h:195
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
#define IOCOMMAND_MAP(XX)
Definition: IOControl/include/IO/Request.h:32
const CString & id() const
Get the request ID, if there is one.
Definition: IOControl/include/IO/Request.h:244
Event
Definition: Event.h:36
virtual bool setNode(DevNode node)
If nodes are supported, implemented this method.
Definition: IOControl/include/IO/Request.h:212
void setCommand(Command cmd)
Set the command code.
Definition: IOControl/include/IO/Request.h:163
Device & device
Definition: IOControl/include/IO/Request.h:259
Request(Device &device)
Definition: IOControl/include/IO/Request.h:95
bool nodeOn(DevNode node)
Definition: IOControl/include/IO/Request.h:189
virtual bool nodeAdjust(DevNode node, int value)
If nodes support analogue state (e.g. brightness) the implement this method.
Definition: IOControl/include/IO/Request.h:204
ErrorCode error() const
Request error code defaults to 'pending' and is set on completion.
Definition: IOControl/include/IO/Request.h:111
virtual bool setNodeState(DevNode node, DevNode::State state)
Definition: IOControl/include/IO/Request.h:229