Libraries/IOControl/include/IO/RFSwitch/Device.h
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include <IO/Device.h>
23 #include "Controller.h"
24 
25 namespace IO
26 {
27 namespace RFSwitch
28 {
29 DECLARE_FSTR(ATTR_REPEATS)
30 
31 
34 struct Timing {
41 };
42 
43 /*
44  * A specific type of RF device protocol.
45  * Actual RF I/O is performed by Controller.
46  */
47 class Device : public IO::Device
48 {
49 public:
51  {
52  public:
53  IO::Device* createDevice(IO::Controller& controller, const char* id) const override
54  {
55  return new Device(reinterpret_cast<Controller&>(controller), id);
56  }
57 
58  const FlashString& controllerClass() const override
59  {
60  return CONTROLLER_CLASSNAME;
61  }
62 
63  const FlashString& deviceClass() const override
64  {
65  DEFINE_FSTR_LOCAL(DEVICE_CLASSNAME, "rfswitch")
66  return DEVICE_CLASSNAME;
67  }
68  };
69 
70  static const Factory factory;
71 
72  struct Config {
76  };
77 
78  const DeviceType type() const override
79  {
80  return DeviceType::RFSwitch;
81  }
82 
83  ErrorCode init(const Config& config);
84  ErrorCode init(JsonObjectConst config) override;
85 
86  Device(Controller& controller, const char* id) : IO::Device(controller, id)
87  {
88  }
89 
90  IO::Request* createRequest() override;
91 
92  const Timing& getTiming() const
93  {
94  return timing;
95  }
96 
98  {
99  return repeats;
100  }
101 
102 protected:
103  void parseJson(JsonObjectConst json, Config& cfg);
104 
105 protected:
108 };
109 
110 } // namespace RFSwitch
111 } // namespace IO
Controller & controller
Definition: Libraries/IOControl/include/IO/Device.h:228
Device(Controller &controller, const char *id)
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:86
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:50
uint16_t bit1
Width of a &#39;1&#39; high pulse.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:39
ErrorCode init(const Config &config)
Protocol timings in microseconds.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:34
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:47
IO::Request * createRequest() override
Create a request object for this device.
static const Factory factory
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:70
Definition: IOControl/include/IO/Controller.h:25
uint16_t gap
Gap after final bit before repeating.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:40
Handles requests for a specific device; the requests are executed by the relevant controller...
Definition: Libraries/IOControl/include/IO/Device.h:35
const DeviceType type() const override
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:78
Abstract class which allows device instances to be created.
Definition: Libraries/IOControl/include/IO/Device.h:44
#define DECLARE_FSTR(name)
Declare a global FSTR::String& reference.
Definition: String.hpp:63
uint8_t getRepeats() const
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:97
IO::Device * createDevice(IO::Controller &controller, const char *id) const override
Create a new device instance.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:53
uint8_t repeats
Number of times to repeat code.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:107
Timing timing
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:74
Json json
void parseJson(JsonObjectConst json, Config &cfg)
uint16_t starth
Width of start High pulse.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:35
uint16_t bit0
Width of a &#39;0&#39; high pulse.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:38
const Timing & getTiming() const
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:92
const FlashString & deviceClass() const override
Return the Device class name, e.g. &#39;r421a&#39;.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:63
A Controller is responsible for serialising requests for a physical bus.
Definition: IOControl/include/IO/Controller.h:41
Request represents a single user request/response over a bus.
Definition: IOControl/include/IO/Request.h:75
Inherited classes expand this definition as required.
Definition: Libraries/IOControl/include/IO/Device.h:80
const FlashString & controllerClass() const override
Return the expected controller type for this device class, e.g. &#39;rs485&#39;.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:58
#define DEFINE_FSTR_LOCAL(name, str)
Like DEFINE_FSTR except reference is declared static constexpr.
Definition: String.hpp:84
describes a counted string stored in flash memory
Definition: String.hpp:173
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
uint16_t startl
Width of start Low pulse.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:36
DeviceType
Definition: DeviceType.h:24
IO::Device::Config base
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:73
uint16_t period
Bit period.
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:37
Controller for 433MHz transmitter.
Definition: IOControl/include/IO/RFSwitch/Controller.h:40
Timing timing
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:106
uint8_t repeats
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:75
Definition: Libraries/IOControl/include/IO/RFSwitch/Device.h:72