Libraries/IOControl/include/IO/Device.h
Go to the documentation of this file.
String toString(IO::Device::State state)
Class to manage a NUL-terminated C-style string When storing persistent strings in RAM the regular St...
Definition: CString.h:27
A Controller is responsible for serialising requests for a physical bus.
Definition: IOControl/include/IO/Controller.h:42
Abstract class which allows device instances to be created.
Definition: Libraries/IOControl/include/IO/Device.h:45
virtual const FlashString & deviceClass() const =0
Return the Device class name, e.g. 'r421a'.
bool operator==(const String &className) const
Definition: Libraries/IOControl/include/IO/Device.h:69
virtual Device * createDevice(IO::Controller &controller, const char *id) const =0
Create a new device instance.
virtual const FlashString & controllerClass() const =0
Return the expected controller type for this device class, e.g. 'rs485'.
Handles requests for a specific device; the requests are executed by the relevant controller.
Definition: Libraries/IOControl/include/IO/Device.h:36
const CString & getId() const
The unique device identifier.
Definition: Libraries/IOControl/include/IO/Device.h:132
State getState()
Get current device state.
Definition: Libraries/IOControl/include/IO/Device.h:179
const CString & getName() const
Optional descriptive name for the device.
Definition: Libraries/IOControl/include/IO/Device.h:145
unsigned minTransactionInterval() const
Definition: Libraries/IOControl/include/IO/Device.h:158
virtual Request * createRequest()=0
Create a request object for this device.
virtual ErrorCode start()
virtual ErrorCode stop()
virtual void handleEvent(Request *request, Event event)
Implementations may override this method to customise event handling.
Controller & getController() const
Obtain the owning controller.
Definition: Libraries/IOControl/include/IO/Device.h:171
Device(Controller &controller, const char *id)
Device constructor.
Definition: Libraries/IOControl/include/IO/Device.h:110
virtual DevNode::ID nodeIdMin() const
Get minimum valid Node ID for this device.
Definition: Libraries/IOControl/include/IO/Device.h:189
bool operator==(const String &id) const
Definition: Libraries/IOControl/include/IO/Device.h:137
Controller & controller
Definition: Libraries/IOControl/include/IO/Device.h:234
void submit(Request *request)
void parseJson(JsonObjectConst json, Config &cfg)
virtual const DeviceType type() const =0
virtual DevNode::States getNodeStates(DevNode node) const
Return the current set of states for all nodes controlled by this device.
Definition: Libraries/IOControl/include/IO/Device.h:216
virtual uint16_t maxNodes() const
Determine maximum number of nodes supported by the device.
Definition: Libraries/IOControl/include/IO/Device.h:206
ErrorCode init(const Config &config)
DevNode::ID nodeIdMax() const
Get maximum valid Node ID for this device.
Definition: Libraries/IOControl/include/IO/Device.h:197
virtual ErrorCode init(JsonObjectConst config)=0
virtual uint16_t address() const
Devices with a numeric address should implement this method.
Definition: Libraries/IOControl/include/IO/Device.h:153
Request represents a single user request/response over a bus.
Definition: IOControl/include/IO/Request.h:80
Base class template for linked items with type casting.
Definition: LinkedObject.h:62
Json json
Definition: IOControl/include/IO/Controller.h:26
Inherited classes expand this definition as required.
Definition: Libraries/IOControl/include/IO/Device.h:80
unsigned interval
Minimum interval between transactions.
Definition: Libraries/IOControl/include/IO/Device.h:82