diff --git a/docs/generated/docs/_react_e_s_p_8cpp.html b/docs/generated/docs/_react_e_s_p_8cpp.html new file mode 100644 index 0000000..c96b14f --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp.html @@ -0,0 +1,182 @@ + + + + + + + +ReactESP: src/ReactESP.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
ReactESP.cpp File Reference
+
+
+
#include "ReactESP.h"
+#include <Arduino.h>
+#include <FunctionalInterrupt.h>
+#include <string.h>
+
+Include dependency graph for ReactESP.cpp:
+
+
+
+
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

void setup (void)
 
void loop (void)
 
+

Function Documentation

+ +

◆ loop()

+ +
+
+ + + + + + + + +
void loop (void )
+
+ +

Definition at line 109 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ setup()

+ +
+
+ + + + + + + + +
void setup (void )
+
+ +

Definition at line 107 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
+
+ + + + diff --git a/docs/generated/docs/_react_e_s_p_8cpp.js b/docs/generated/docs/_react_e_s_p_8cpp.js new file mode 100644 index 0000000..ff8aca6 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp.js @@ -0,0 +1,5 @@ +var _react_e_s_p_8cpp = +[ + [ "loop", "_react_e_s_p_8cpp.html#a0b33edabd7f1c4e4a0bf32c67269be2f", null ], + [ "setup", "_react_e_s_p_8cpp.html#a7dfd9b79bc5a37d7df40207afbc5431f", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/_react_e_s_p_8cpp__incl.map b/docs/generated/docs/_react_e_s_p_8cpp__incl.map new file mode 100644 index 0000000..71fbb6f --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8cpp__incl.md5 b/docs/generated/docs/_react_e_s_p_8cpp__incl.md5 new file mode 100644 index 0000000..895f8b7 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp__incl.md5 @@ -0,0 +1 @@ +47f003e2bc519a94d540a6f1430ed492 \ No newline at end of file diff --git a/docs/generated/docs/_react_e_s_p_8cpp__incl.svg b/docs/generated/docs/_react_e_s_p_8cpp__incl.svg new file mode 100644 index 0000000..c7ddd1b --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp__incl.svg @@ -0,0 +1,132 @@ + + + + + + +src/ReactESP.cpp + + +Node1 + + +src/ReactESP.cpp + + + + + +Node2 + + +ReactESP.h + + + + + +Node1->Node2 + + + + + +Node3 + + +Arduino.h + + + + + +Node1->Node3 + + + + + +Node7 + + +FunctionalInterrupt.h + + + + + +Node1->Node7 + + + + + +Node8 + + +string.h + + + + + +Node1->Node8 + + + + + +Node2->Node3 + + + + + +Node4 + + +forward_list + + + + + +Node2->Node4 + + + + + +Node5 + + +functional + + + + + +Node2->Node5 + + + + + +Node6 + + +queue + + + + + +Node2->Node6 + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.map b/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.map new file mode 100644 index 0000000..2c6dd50 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.md5 b/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.md5 new file mode 100644 index 0000000..6148d17 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.md5 @@ -0,0 +1 @@ +272a525ef315e80c2254c24f3bf00871 \ No newline at end of file diff --git a/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.svg b/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.svg new file mode 100644 index 0000000..4245a04 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp_a0b33edabd7f1c4e4a0bf32c67269be2f_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +loop + + +Node1 + + +loop + + + + + +Node2 + + +ReactESP::tick + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.map b/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.map new file mode 100644 index 0000000..d3085db --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.md5 b/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.md5 new file mode 100644 index 0000000..5c17e17 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.md5 @@ -0,0 +1 @@ +57f54787ab429dc040978793617e25fc \ No newline at end of file diff --git a/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.svg b/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.svg new file mode 100644 index 0000000..d2f6d5e --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp_a7dfd9b79bc5a37d7df40207afbc5431f_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +setup + + +Node1 + + +setup + + + + + +Node2 + + +ReactESP::setup + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8cpp_source.html b/docs/generated/docs/_react_e_s_p_8cpp_source.html new file mode 100644 index 0000000..99d7c5c --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8cpp_source.html @@ -0,0 +1,337 @@ + + + + + + + +ReactESP: src/ReactESP.cpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ReactESP.cpp
+
+
+Go to the documentation of this file.
1 #include "ReactESP.h"
+
2 
+
3 #include <Arduino.h>
+
4 #include <FunctionalInterrupt.h>
+
5 #include <string.h>
+
6 
+
14 #ifdef ESP32
+
15 uint64_t ICACHE_RAM_ATTR micros64() { return esp_timer_get_time(); }
+
16 #endif
+
17 
+
18 // Reaction classes define the behaviour of each particular
+
19 // Reaction
+
20 
+ +
22  return (this->last_trigger_time + this->interval) <
+
23  (other.last_trigger_time + other.interval);
+
24 }
+
25 
+
26 void TimedReaction::add() { ReactESP::app->timed_queue.push(this); }
+
27 
+ +
29  this->enabled = false;
+
30  // the object will be deleted when it's popped out of the
+
31  // timer queue
+
32 }
+
33 
+
34 DelayReaction::DelayReaction(uint32_t interval, const react_callback callback)
+
35  : TimedReaction(interval, callback) {
+
36  this->last_trigger_time = micros64();
+
37 }
+
38 
+
39 DelayReaction::DelayReaction(uint64_t interval, const react_callback callback)
+
40  : TimedReaction(interval, callback) {
+
41  this->last_trigger_time = micros64();
+
42 }
+
43 
+ +
45  this->last_trigger_time = micros64();
+
46  this->callback();
+
47  delete this;
+
48 }
+
49 
+ +
51  auto now = micros64();
+
52  this->last_trigger_time = this->last_trigger_time + this->interval;
+
53  if (this->last_trigger_time + this->interval < now) {
+
54  // we're lagging more than one full interval; reset the time
+
55  this->last_trigger_time = now;
+
56  }
+
57  this->callback();
+
58  ReactESP::app->timed_queue.push(this);
+
59 }
+
60 
+
61 void UntimedReaction::add() { ReactESP::app->untimed_list.push_front(this); }
+
62 
+ +
64  ReactESP::app->untimed_list.remove(this);
+
65  delete this;
+
66 }
+
67 
+ +
69  if (stream.available()) {
+
70  this->callback();
+
71  }
+
72 }
+
73 
+
74 void TickReaction::tick() { this->callback(); }
+
75 
+
76 #ifdef ESP32
+
77 bool ISRReaction::isr_service_installed = false;
+
78 
+
79 void ISRReaction::isr(void* this_ptr) {
+
80  auto* this_ = (ISRReaction*)this_ptr;
+
81  this_->callback();
+
82 }
+
83 #endif
+
84 
+ +
86 #ifdef ESP32
+
87  gpio_isr_handler_add((gpio_num_t)pin_number, ISRReaction::isr, (void*)this);
+
88 #elif defined(ESP8266)
+
89  attachInterrupt(digitalPinToInterrupt(pin_number), callback, mode);
+
90 #endif
+
91  ReactESP::app->isr_reaction_list.push_front(this);
+
92 }
+
93 
+ +
95  ReactESP::app->isr_reaction_list.remove(this);
+
96 #ifdef ESP32
+
97  gpio_isr_handler_remove((gpio_num_t)pin_number);
+
98 #elif defined(ESP8266)
+
99  detachInterrupt(digitalPinToInterrupt(this->pin_number));
+
100 #endif
+
101  delete this;
+
102 }
+
103 
+
104 // Need to define the static variable outside of the class
+
105 ReactESP* ReactESP::app = NULL;
+
106 
+
107 void setup(void) { ReactESP::app->setup(); }
+
108 
+
109 void loop(void) {
+
110  ReactESP::app->tick();
+
111  yield();
+
112 }
+
113 
+
114 void ReactESP::tickTimed() {
+
115  uint64_t now = micros64();
+
116  uint64_t trigger_t;
+
117  TimedReaction* top;
+
118 
+
119  while (true) {
+
120  if (timed_queue.empty()) {
+
121  break;
+
122  }
+
123  top = timed_queue.top();
+
124  if (!top->isEnabled()) {
+
125  timed_queue.pop();
+
126  delete top;
+
127  continue;
+
128  }
+
129  trigger_t = top->getTriggerTimeMicros();
+
130  if (now >= trigger_t) {
+
131  timed_queue.pop();
+
132  top->tick();
+
133  } else {
+
134  break;
+
135  }
+
136  }
+
137 }
+
138 
+
139 void ReactESP::tickUntimed() {
+
140  for (UntimedReaction* re : this->untimed_list) {
+
141  re->tick();
+
142  }
+
143 }
+
144 
+ +
146  tickUntimed();
+
147  tickTimed();
+
148 }
+
149 
+
150 DelayReaction* ReactESP::onDelay(const uint32_t t, const react_callback cb) {
+
151  DelayReaction* dre = new DelayReaction(t, cb);
+
152  dre->add();
+
153  return dre;
+
154 }
+
155 
+ +
157  const react_callback cb) {
+
158  DelayReaction* dre = new DelayReaction(t, cb);
+
159  dre->add();
+
160  return dre;
+
161 }
+
162 
+
163 RepeatReaction* ReactESP::onRepeat(const uint32_t t, const react_callback cb) {
+
164  RepeatReaction* rre = new RepeatReaction(t, cb);
+
165  rre->add();
+
166  return rre;
+
167 }
+
168 
+ +
170  const react_callback cb) {
+
171  RepeatReaction* rre = new RepeatReaction(t, cb);
+
172  rre->add();
+
173  return rre;
+
174 }
+
175 
+ +
177  StreamReaction* sre = new StreamReaction(stream, cb);
+
178  sre->add();
+
179  return sre;
+
180 }
+
181 
+
182 ISRReaction* ReactESP::onInterrupt(const uint8_t pin_number, int mode,
+
183  const react_callback cb) {
+
184  ISRReaction* isrre = new ISRReaction(pin_number, mode, cb);
+
185  isrre->add();
+
186  return isrre;
+
187 }
+
188 
+ +
190  TickReaction* tre = new TickReaction(cb);
+
191  tre->add();
+
192  return tre;
+
193 }
+
void loop(void)
Definition: ReactESP.cpp:109
+
void setup(void)
Definition: ReactESP.cpp:107
+ +
std::function< void()> react_callback
Definition: ReactESP.h:10
+
Reaction that is triggered after a certain time delay.
Definition: ReactESP.h:92
+
DelayReaction(const uint32_t delay, const react_callback callback)
Construct a new Delay Reaction object.
Definition: ReactESP.cpp:34
+
void tick()
Definition: ReactESP.cpp:44
+
Reaction that is triggered on an input pin change.
Definition: ReactESP.h:185
+
void remove()
Definition: ReactESP.cpp:94
+
void add()
Definition: ReactESP.cpp:85
+
Main class of a ReactESP program.
Definition: ReactESP.h:245
+
ISRReaction * onInterrupt(const uint8_t pin_number, int mode, const react_callback cb)
Create a new ISRReaction (interrupt reaction)
Definition: ReactESP.cpp:182
+
static ReactESP * app
Static singleton reference to the instantiated ReactESP object.
Definition: ReactESP.h:265
+
RepeatReaction * onRepeatMicros(const uint64_t t, const react_callback cb)
Create a new RepeatReaction.
Definition: ReactESP.cpp:169
+
friend class RepeatReaction
Definition: ReactESP.h:248
+
friend class ISRReaction
Definition: ReactESP.h:250
+
TickReaction * onTick(const react_callback cb)
Create a new TickReaction.
Definition: ReactESP.cpp:189
+
StreamReaction * onAvailable(Stream &stream, const react_callback cb)
Create a new StreamReaction.
Definition: ReactESP.cpp:176
+
void setup(void)
Definition: ReactESP.h:261
+
DelayReaction * onDelay(const uint32_t t, const react_callback cb)
Create a new DelayReaction.
Definition: ReactESP.cpp:150
+
DelayReaction * onDelayMicros(const uint64_t t, const react_callback cb)
Create a new DelayReaction.
Definition: ReactESP.cpp:156
+
RepeatReaction * onRepeat(const uint32_t t, const react_callback cb)
Create a new RepeatReaction.
Definition: ReactESP.cpp:163
+
void tick(void)
Definition: ReactESP.cpp:145
+
const react_callback callback
Definition: ReactESP.h:27
+
Reaction that is triggered repeatedly.
Definition: ReactESP.h:115
+ +
Reaction that is triggered when there is input available at the given Arduino Stream.
Definition: ReactESP.h:152
+ +
Reaction that is triggered unconditionally at each execution loop.
Definition: ReactESP.h:171
+
void tick()
Definition: ReactESP.cpp:74
+
TimedReactions are called based on elapsing of time.
Definition: ReactESP.h:45
+
void add()
Definition: ReactESP.cpp:26
+
uint64_t last_trigger_time
Definition: ReactESP.h:48
+
bool operator<(const TimedReaction &other)
Return the current time since the device restart in microseconds.
Definition: ReactESP.cpp:21
+
uint64_t getTriggerTimeMicros()
Definition: ReactESP.h:80
+
virtual void tick()=0
+
void remove()
Definition: ReactESP.cpp:28
+
const uint64_t interval
Definition: ReactESP.h:47
+
bool enabled
Definition: ReactESP.h:49
+
bool isEnabled()
Definition: ReactESP.h:81
+
Reactions that are triggered based on something else than time.
Definition: ReactESP.h:139
+
virtual void remove()
Definition: ReactESP.cpp:63
+
virtual void add()
Definition: ReactESP.cpp:61
+
void ICACHE_RAM_ATTR isr()
Definition: main.cpp:18
+
+
+ + + + diff --git a/docs/generated/docs/_react_e_s_p_8h.html b/docs/generated/docs/_react_e_s_p_8h.html new file mode 100644 index 0000000..d305a44 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h.html @@ -0,0 +1,201 @@ + + + + + + + +ReactESP: src/ReactESP.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
ReactESP.h File Reference
+
+
+
#include <Arduino.h>
+#include <forward_list>
+#include <functional>
+#include <queue>
+
+Include dependency graph for ReactESP.h:
+
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  Reaction
 Reactions are code to be called when a given condition is fulfilled. More...
 
class  TimedReaction
 TimedReactions are called based on elapsing of time. More...
 
struct  TriggerTimeCompare
 
class  DelayReaction
 Reaction that is triggered after a certain time delay. More...
 
class  RepeatReaction
 Reaction that is triggered repeatedly. More...
 
class  UntimedReaction
 Reactions that are triggered based on something else than time. More...
 
class  StreamReaction
 Reaction that is triggered when there is input available at the given Arduino Stream. More...
 
class  TickReaction
 Reaction that is triggered unconditionally at each execution loop. More...
 
class  ISRReaction
 Reaction that is triggered on an input pin change. More...
 
class  ReactESP
 Main class of a ReactESP program. More...
 
+ + + + + +

+Typedefs

typedef std::function< void()> react_callback
 
typedef void(* isr_react_callback) (void *)
 
+

Typedef Documentation

+ +

◆ isr_react_callback

+ +
+
+ + + + +
typedef void(* isr_react_callback) (void *)
+
+ +

Definition at line 11 of file ReactESP.h.

+ +
+
+ +

◆ react_callback

+ +
+
+ + + + +
typedef std::function<void()> react_callback
+
+ +

Definition at line 10 of file ReactESP.h.

+ +
+
+
+
+ + + + diff --git a/docs/generated/docs/_react_e_s_p_8h.js b/docs/generated/docs/_react_e_s_p_8h.js new file mode 100644 index 0000000..0e160e3 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h.js @@ -0,0 +1,15 @@ +var _react_e_s_p_8h = +[ + [ "Reaction", "class_reaction.html", "class_reaction" ], + [ "TimedReaction", "class_timed_reaction.html", "class_timed_reaction" ], + [ "TriggerTimeCompare", "struct_trigger_time_compare.html", "struct_trigger_time_compare" ], + [ "DelayReaction", "class_delay_reaction.html", "class_delay_reaction" ], + [ "RepeatReaction", "class_repeat_reaction.html", "class_repeat_reaction" ], + [ "UntimedReaction", "class_untimed_reaction.html", "class_untimed_reaction" ], + [ "StreamReaction", "class_stream_reaction.html", "class_stream_reaction" ], + [ "TickReaction", "class_tick_reaction.html", "class_tick_reaction" ], + [ "ISRReaction", "class_i_s_r_reaction.html", "class_i_s_r_reaction" ], + [ "ReactESP", "class_react_e_s_p.html", "class_react_e_s_p" ], + [ "isr_react_callback", "_react_e_s_p_8h.html#a67b5c9351881150cba489e7594e0c976", null ], + [ "react_callback", "_react_e_s_p_8h.html#aced18b35574cdf9238eeb6d2c997db7f", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/_react_e_s_p_8h__dep__incl.map b/docs/generated/docs/_react_e_s_p_8h__dep__incl.map new file mode 100644 index 0000000..e3b227c --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8h__dep__incl.md5 b/docs/generated/docs/_react_e_s_p_8h__dep__incl.md5 new file mode 100644 index 0000000..1d855f8 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h__dep__incl.md5 @@ -0,0 +1 @@ +49cba0f4d934ebb93e1b2c16b53e0656 \ No newline at end of file diff --git a/docs/generated/docs/_react_e_s_p_8h__dep__incl.svg b/docs/generated/docs/_react_e_s_p_8h__dep__incl.svg new file mode 100644 index 0000000..46bc7d2 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h__dep__incl.svg @@ -0,0 +1,51 @@ + + + + + + +src/ReactESP.h + + +Node1 + + +src/ReactESP.h + + + + + +Node2 + + +src/main.cpp + + + + + +Node1->Node2 + + + + + +Node3 + + +src/ReactESP.cpp + + + + + +Node1->Node3 + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8h__incl.map b/docs/generated/docs/_react_e_s_p_8h__incl.map new file mode 100644 index 0000000..bae4ae8 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8h__incl.md5 b/docs/generated/docs/_react_e_s_p_8h__incl.md5 new file mode 100644 index 0000000..5236e7d --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h__incl.md5 @@ -0,0 +1 @@ +1481cab160afc7c93030b08fcca34ba4 \ No newline at end of file diff --git a/docs/generated/docs/_react_e_s_p_8h__incl.svg b/docs/generated/docs/_react_e_s_p_8h__incl.svg new file mode 100644 index 0000000..25d8185 --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h__incl.svg @@ -0,0 +1,81 @@ + + + + + + +src/ReactESP.h + + +Node1 + + +src/ReactESP.h + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + +Node3 + + +forward_list + + + + + +Node1->Node3 + + + + + +Node4 + + +functional + + + + + +Node1->Node4 + + + + + +Node5 + + +queue + + + + + +Node1->Node5 + + + + + diff --git a/docs/generated/docs/_react_e_s_p_8h_source.html b/docs/generated/docs/_react_e_s_p_8h_source.html new file mode 100644 index 0000000..cfa986a --- /dev/null +++ b/docs/generated/docs/_react_e_s_p_8h_source.html @@ -0,0 +1,363 @@ + + + + + + + +ReactESP: src/ReactESP.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ReactESP.h
+
+
+Go to the documentation of this file.
1 #ifndef REACTESP_H_
+
2 #define REACTESP_H_
+
3 
+
4 #include <Arduino.h>
+
5 
+
6 #include <forward_list>
+
7 #include <functional>
+
8 #include <queue>
+
9 
+
10 typedef std::function<void()> react_callback;
+
11 typedef void (*isr_react_callback)(void*);
+
12 
+
13 // forward declarations
+
14 
+
15 class ReactESP;
+
16 
+
17 // ESP32 doesn't have the micros64 function defined
+
18 #ifdef ESP32
+
19 uint64_t ICACHE_RAM_ATTR micros64();
+
20 #endif
+
21 
+
25 class Reaction {
+
26  protected:
+ +
28 
+
29  public:
+ +
36  // FIXME: why do these have to be defined?
+
37  virtual void add() = 0;
+
38  virtual void remove() = 0;
+
39  virtual void tick() = 0;
+
40 };
+
41 
+
45 class TimedReaction : public Reaction {
+
46  protected:
+
47  const uint64_t interval;
+ +
49  bool enabled;
+
50 
+
51  public:
+ +
59  : Reaction(callback), interval((uint64_t)1000 * (uint64_t)interval) {
+
60  last_trigger_time = micros64();
+
61  enabled = true;
+
62  }
+ + +
71  last_trigger_time = micros64();
+
72  enabled = true;
+
73  }
+
74 
+
75  virtual ~TimedReaction() {}
+
76  bool operator<(const TimedReaction& other);
+
77  void add();
+
78  void remove();
+
79  uint32_t getTriggerTime() { return (last_trigger_time + interval) / 1000; }
+
80  uint64_t getTriggerTimeMicros() { return (last_trigger_time + interval); }
+
81  bool isEnabled() { return enabled; }
+
82  virtual void tick() = 0;
+
83 };
+
84 
+ +
86  bool operator()(TimedReaction* a, TimedReaction* b) { return *b < *a; }
+
87 };
+
88 
+
92 class DelayReaction : public TimedReaction {
+
93  public:
+
100  DelayReaction(const uint32_t delay, const react_callback callback);
+
107  DelayReaction(const uint64_t delay, const react_callback callback);
+
108  virtual ~DelayReaction() {}
+
109  void tick();
+
110 };
+
111 
+ +
116  public:
+ + + + +
133  void tick();
+
134 };
+
135 
+
139 class UntimedReaction : public Reaction {
+
140  public:
+ +
142  virtual ~UntimedReaction() {}
+
143  virtual void add();
+
144  virtual void remove();
+
145  virtual void tick() = 0;
+
146 };
+
147 
+ +
153  private:
+
154  Stream& stream;
+
155 
+
156  public:
+
163  StreamReaction(Stream& stream, const react_callback callback)
+
164  : UntimedReaction(callback), stream(stream) {}
+
165  void tick();
+
166 };
+
167 
+ +
172  public:
+ +
179  void tick();
+
180 };
+
181 
+
185 class ISRReaction : public Reaction {
+
186  private:
+
187  const uint8_t pin_number;
+
188  const int mode;
+
189 #ifdef ESP32
+
190  // set to true once gpio_install_isr_service is called
+
191  static bool isr_service_installed;
+
192  static void isr(void* arg);
+
193 #endif
+
194 
+
195  public:
+
204  ISRReaction(uint8_t pin_number, int mode, const react_callback callback)
+
205  : Reaction(callback),
+
206  pin_number(pin_number),
+
207  mode(mode) {
+
208 #ifdef ESP32
+
209  gpio_int_type_t intr_type;
+
210  switch (mode) {
+
211  case RISING:
+
212  intr_type = GPIO_INTR_POSEDGE;
+
213  break;
+
214  case FALLING:
+
215  intr_type = GPIO_INTR_NEGEDGE;
+
216  break;
+
217  case CHANGE:
+
218  intr_type = GPIO_INTR_ANYEDGE;
+
219  break;
+
220  default:
+
221  intr_type = GPIO_INTR_DISABLE;
+
222  break;
+
223  }
+
224  // configure the IO pin
+
225  gpio_set_intr_type((gpio_num_t)pin_number, intr_type);
+
226 
+
227  if (!isr_service_installed) {
+
228  gpio_install_isr_service(ESP_INTR_FLAG_LOWMED);
+
229  isr_service_installed = true;
+
230  }
+
231 #endif
+
232  }
+
233  virtual ~ISRReaction() {}
+
234  void add();
+
235  void remove();
+
236  void tick() {}
+
237 };
+
238 
+
240 // ReactESP main class implementation
+
241 
+
245 class ReactESP {
+
246  friend class Reaction;
+
247  friend class TimedReaction;
+
248  friend class RepeatReaction;
+
249  friend class UntimedReaction;
+
250  friend class ISRReaction;
+
251 
+
252  public:
+
260  ReactESP(const react_callback cb) : _setup(cb) { app = this; }
+
261  void setup(void) { _setup(); }
+
262  void tick(void);
+
263 
+
265  static ReactESP* app;
+
266 
+
274  DelayReaction* onDelay(const uint32_t t, const react_callback cb);
+
282  DelayReaction* onDelayMicros(const uint64_t t, const react_callback cb);
+
290  RepeatReaction* onRepeat(const uint32_t t, const react_callback cb);
+
298  RepeatReaction* onRepeatMicros(const uint64_t t, const react_callback cb);
+
306  StreamReaction* onAvailable(Stream& stream, const react_callback cb);
+
317  ISRReaction* onInterrupt(const uint8_t pin_number, int mode,
+
318  const react_callback cb);
+ +
326 
+
327  private:
+
328  const react_callback _setup;
+
329  std::priority_queue<TimedReaction*, std::vector<TimedReaction*>,
+ +
331  timed_queue;
+
332  std::forward_list<UntimedReaction*> untimed_list;
+
333  std::forward_list<ISRReaction*> isr_reaction_list;
+
334  std::forward_list<ISRReaction*> isr_pending_list;
+
335  void tickTimed();
+
336  void tickUntimed();
+
337  void tickISR();
+
338  void add(Reaction* re);
+
339 };
+
340 
+
341 #endif
+
void(* isr_react_callback)(void *)
Definition: ReactESP.h:11
+
std::function< void()> react_callback
Definition: ReactESP.h:10
+
Reaction that is triggered after a certain time delay.
Definition: ReactESP.h:92
+
virtual ~DelayReaction()
Definition: ReactESP.h:108
+
DelayReaction(const uint32_t delay, const react_callback callback)
Construct a new Delay Reaction object.
Definition: ReactESP.cpp:34
+
void tick()
Definition: ReactESP.cpp:44
+
Reaction that is triggered on an input pin change.
Definition: ReactESP.h:185
+
void remove()
Definition: ReactESP.cpp:94
+
ISRReaction(uint8_t pin_number, int mode, const react_callback callback)
Construct a new ISRReaction object.
Definition: ReactESP.h:204
+
void tick()
Definition: ReactESP.h:236
+
void add()
Definition: ReactESP.cpp:85
+
virtual ~ISRReaction()
Definition: ReactESP.h:233
+
Main class of a ReactESP program.
Definition: ReactESP.h:245
+
ISRReaction * onInterrupt(const uint8_t pin_number, int mode, const react_callback cb)
Create a new ISRReaction (interrupt reaction)
Definition: ReactESP.cpp:182
+
static ReactESP * app
Static singleton reference to the instantiated ReactESP object.
Definition: ReactESP.h:265
+
RepeatReaction * onRepeatMicros(const uint64_t t, const react_callback cb)
Create a new RepeatReaction.
Definition: ReactESP.cpp:169
+
ReactESP(const react_callback cb)
Construct a new ReactESP object.
Definition: ReactESP.h:260
+
TickReaction * onTick(const react_callback cb)
Create a new TickReaction.
Definition: ReactESP.cpp:189
+
StreamReaction * onAvailable(Stream &stream, const react_callback cb)
Create a new StreamReaction.
Definition: ReactESP.cpp:176
+
void setup(void)
Definition: ReactESP.h:261
+
DelayReaction * onDelay(const uint32_t t, const react_callback cb)
Create a new DelayReaction.
Definition: ReactESP.cpp:150
+
DelayReaction * onDelayMicros(const uint64_t t, const react_callback cb)
Create a new DelayReaction.
Definition: ReactESP.cpp:156
+
RepeatReaction * onRepeat(const uint32_t t, const react_callback cb)
Create a new RepeatReaction.
Definition: ReactESP.cpp:163
+
void tick(void)
Definition: ReactESP.cpp:145
+
Reactions are code to be called when a given condition is fulfilled.
Definition: ReactESP.h:25
+
const react_callback callback
Definition: ReactESP.h:27
+
virtual void tick()=0
+
virtual void add()=0
+
Reaction(react_callback callback)
Construct a new Reaction object.
Definition: ReactESP.h:35
+
virtual void remove()=0
+
Reaction that is triggered repeatedly.
Definition: ReactESP.h:115
+ +
RepeatReaction(const uint64_t interval, const react_callback callback)
Construct a new Repeat Reaction object.
Definition: ReactESP.h:131
+
RepeatReaction(const uint32_t interval, const react_callback callback)
Construct a new Repeat Reaction object.
Definition: ReactESP.h:123
+
Reaction that is triggered when there is input available at the given Arduino Stream.
Definition: ReactESP.h:152
+
StreamReaction(Stream &stream, const react_callback callback)
Construct a new Stream Reaction object.
Definition: ReactESP.h:163
+ +
Reaction that is triggered unconditionally at each execution loop.
Definition: ReactESP.h:171
+
TickReaction(const react_callback callback)
Construct a new Tick Reaction object.
Definition: ReactESP.h:178
+
void tick()
Definition: ReactESP.cpp:74
+
TimedReactions are called based on elapsing of time.
Definition: ReactESP.h:45
+
void add()
Definition: ReactESP.cpp:26
+
virtual ~TimedReaction()
Definition: ReactESP.h:75
+
uint64_t last_trigger_time
Definition: ReactESP.h:48
+
bool operator<(const TimedReaction &other)
Return the current time since the device restart in microseconds.
Definition: ReactESP.cpp:21
+
TimedReaction(const uint64_t interval, const react_callback callback)
Construct a new Timed Reaction object.
Definition: ReactESP.h:69
+
uint64_t getTriggerTimeMicros()
Definition: ReactESP.h:80
+
virtual void tick()=0
+
uint32_t getTriggerTime()
Definition: ReactESP.h:79
+
void remove()
Definition: ReactESP.cpp:28
+
const uint64_t interval
Definition: ReactESP.h:47
+
bool enabled
Definition: ReactESP.h:49
+
TimedReaction(const uint32_t interval, const react_callback callback)
Construct a new Timed Reaction object.
Definition: ReactESP.h:58
+
bool isEnabled()
Definition: ReactESP.h:81
+
Reactions that are triggered based on something else than time.
Definition: ReactESP.h:139
+
UntimedReaction(const react_callback callback)
Definition: ReactESP.h:141
+
virtual void remove()
Definition: ReactESP.cpp:63
+
virtual void tick()=0
+
virtual void add()
Definition: ReactESP.cpp:61
+
virtual ~UntimedReaction()
Definition: ReactESP.h:142
+
void ICACHE_RAM_ATTR isr()
Definition: main.cpp:18
+ +
bool operator()(TimedReaction *a, TimedReaction *b)
Definition: ReactESP.h:86
+
+
+ + + + diff --git a/docs/generated/docs/annotated.html b/docs/generated/docs/annotated.html new file mode 100644 index 0000000..45fd83b --- /dev/null +++ b/docs/generated/docs/annotated.html @@ -0,0 +1,120 @@ + + + + + + + +ReactESP: Class List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + +
 CDelayReactionReaction that is triggered after a certain time delay
 CISRReactionReaction that is triggered on an input pin change
 CReactESPMain class of a ReactESP program
 CReactionReactions are code to be called when a given condition is fulfilled
 CRepeatReactionReaction that is triggered repeatedly
 CStreamReactionReaction that is triggered when there is input available at the given Arduino Stream
 CTickReactionReaction that is triggered unconditionally at each execution loop
 CTimedReactionTimedReactions are called based on elapsing of time
 CTriggerTimeCompare
 CUntimedReactionReactions that are triggered based on something else than time
+
+
+
+ + + + diff --git a/docs/generated/docs/annotated_dup.js b/docs/generated/docs/annotated_dup.js new file mode 100644 index 0000000..d5476c1 --- /dev/null +++ b/docs/generated/docs/annotated_dup.js @@ -0,0 +1,13 @@ +var annotated_dup = +[ + [ "DelayReaction", "class_delay_reaction.html", "class_delay_reaction" ], + [ "ISRReaction", "class_i_s_r_reaction.html", "class_i_s_r_reaction" ], + [ "ReactESP", "class_react_e_s_p.html", "class_react_e_s_p" ], + [ "Reaction", "class_reaction.html", "class_reaction" ], + [ "RepeatReaction", "class_repeat_reaction.html", "class_repeat_reaction" ], + [ "StreamReaction", "class_stream_reaction.html", "class_stream_reaction" ], + [ "TickReaction", "class_tick_reaction.html", "class_tick_reaction" ], + [ "TimedReaction", "class_timed_reaction.html", "class_timed_reaction" ], + [ "TriggerTimeCompare", "struct_trigger_time_compare.html", "struct_trigger_time_compare" ], + [ "UntimedReaction", "class_untimed_reaction.html", "class_untimed_reaction" ] +]; \ No newline at end of file diff --git a/docs/generated/docs/bc_s.png b/docs/generated/docs/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/docs/generated/docs/bc_s.png differ diff --git a/docs/generated/docs/bdwn.png b/docs/generated/docs/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/docs/generated/docs/bdwn.png differ diff --git a/docs/generated/docs/class_delay_reaction-members.html b/docs/generated/docs/class_delay_reaction-members.html new file mode 100644 index 0000000..b2cb720 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction-members.html @@ -0,0 +1,127 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
DelayReaction Member List
+
+
+ +

This is the complete list of members for DelayReaction, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
add()TimedReactionvirtual
callbackReactionprotected
DelayReaction(const uint32_t delay, const react_callback callback)DelayReaction
DelayReaction(const uint64_t delay, const react_callback callback)DelayReaction
enabledTimedReactionprotected
getTriggerTime()TimedReactioninline
getTriggerTimeMicros()TimedReactioninline
intervalTimedReactionprotected
isEnabled()TimedReactioninline
last_trigger_timeTimedReactionprotected
operator<(const TimedReaction &other)TimedReaction
Reaction(react_callback callback)Reactioninline
remove()TimedReactionvirtual
tick()DelayReactionvirtual
TimedReaction(const uint32_t interval, const react_callback callback)TimedReactioninline
TimedReaction(const uint64_t interval, const react_callback callback)TimedReactioninline
~DelayReaction()DelayReactioninlinevirtual
~TimedReaction()TimedReactioninlinevirtual
+
+ + + + diff --git a/docs/generated/docs/class_delay_reaction.html b/docs/generated/docs/class_delay_reaction.html new file mode 100644 index 0000000..68c8a53 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction.html @@ -0,0 +1,324 @@ + + + + + + + +ReactESP: DelayReaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
DelayReaction Class Reference
+
+
+ +

Reaction that is triggered after a certain time delay. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for DelayReaction:
+
+
+
+
[legend]
+
+Collaboration diagram for DelayReaction:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DelayReaction (const uint32_t delay, const react_callback callback)
 Construct a new Delay Reaction object. More...
 
 DelayReaction (const uint64_t delay, const react_callback callback)
 Construct a new Delay Reaction object. More...
 
virtual ~DelayReaction ()
 
void tick ()
 
- Public Member Functions inherited from TimedReaction
 TimedReaction (const uint32_t interval, const react_callback callback)
 Construct a new Timed Reaction object. More...
 
 TimedReaction (const uint64_t interval, const react_callback callback)
 Construct a new Timed Reaction object. More...
 
virtual ~TimedReaction ()
 
bool operator< (const TimedReaction &other)
 Return the current time since the device restart in microseconds. More...
 
void add ()
 
void remove ()
 
uint32_t getTriggerTime ()
 
uint64_t getTriggerTimeMicros ()
 
bool isEnabled ()
 
- Public Member Functions inherited from Reaction
 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from TimedReaction
const uint64_t interval
 
uint64_t last_trigger_time
 
bool enabled
 
- Protected Attributes inherited from Reaction
const react_callback callback
 
+

Detailed Description

+

Reaction that is triggered after a certain time delay.

+ +

Definition at line 92 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ DelayReaction() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
DelayReaction::DelayReaction (const uint32_t delay,
const react_callback callback 
)
+
+ +

Construct a new Delay Reaction object.

+
Parameters
+ + + +
delayDelay, in milliseconds
callbackFunction to be called after the delay
+
+
+ +

Definition at line 34 of file ReactESP.cpp.

+ +
+
+ +

◆ DelayReaction() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
DelayReaction::DelayReaction (const uint64_t delay,
const react_callback callback 
)
+
+ +

Construct a new Delay Reaction object.

+
Parameters
+ + + +
delayDelay, in microseconds
callbackFunction to be called after the delay
+
+
+ +

Definition at line 39 of file ReactESP.cpp.

+ +
+
+ +

◆ ~DelayReaction()

+ +
+
+ + + + + +
+ + + + + + + +
virtual DelayReaction::~DelayReaction ()
+
+inlinevirtual
+
+ +

Definition at line 108 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
void DelayReaction::tick ()
+
+virtual
+
+ +

Implements TimedReaction.

+ +

Definition at line 44 of file ReactESP.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_delay_reaction.js b/docs/generated/docs/class_delay_reaction.js new file mode 100644 index 0000000..8294f42 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction.js @@ -0,0 +1,7 @@ +var class_delay_reaction = +[ + [ "DelayReaction", "class_delay_reaction.html#ab8cabba2391d4f4d836f4f060425ddb0", null ], + [ "DelayReaction", "class_delay_reaction.html#a27b07f8afc197ac54b6192c411d7e50b", null ], + [ "~DelayReaction", "class_delay_reaction.html#a50777489f0975d07a81c39c0638d1a7e", null ], + [ "tick", "class_delay_reaction.html#af2a85d71205ad1cbf5f6471f17e91a6f", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_delay_reaction__coll__graph.map b/docs/generated/docs/class_delay_reaction__coll__graph.map new file mode 100644 index 0000000..2a41a67 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_delay_reaction__coll__graph.md5 b/docs/generated/docs/class_delay_reaction__coll__graph.md5 new file mode 100644 index 0000000..7c91652 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction__coll__graph.md5 @@ -0,0 +1 @@ +83ac53dbae16e380692a621d3c11a8ea \ No newline at end of file diff --git a/docs/generated/docs/class_delay_reaction__coll__graph.svg b/docs/generated/docs/class_delay_reaction__coll__graph.svg new file mode 100644 index 0000000..aaae798 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction__coll__graph.svg @@ -0,0 +1,51 @@ + + + + + + +DelayReaction + + +Node1 + + +DelayReaction + + + + + +Node2 + + +TimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_delay_reaction__inherit__graph.map b/docs/generated/docs/class_delay_reaction__inherit__graph.map new file mode 100644 index 0000000..2a41a67 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_delay_reaction__inherit__graph.md5 b/docs/generated/docs/class_delay_reaction__inherit__graph.md5 new file mode 100644 index 0000000..7c91652 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +83ac53dbae16e380692a621d3c11a8ea \ No newline at end of file diff --git a/docs/generated/docs/class_delay_reaction__inherit__graph.svg b/docs/generated/docs/class_delay_reaction__inherit__graph.svg new file mode 100644 index 0000000..aaae798 --- /dev/null +++ b/docs/generated/docs/class_delay_reaction__inherit__graph.svg @@ -0,0 +1,51 @@ + + + + + + +DelayReaction + + +Node1 + + +DelayReaction + + + + + +Node2 + + +TimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction-members.html b/docs/generated/docs/class_i_s_r_reaction-members.html new file mode 100644 index 0000000..a7d2ffe --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction-members.html @@ -0,0 +1,116 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ISRReaction Member List
+
+
+ +

This is the complete list of members for ISRReaction, including all inherited members.

+ + + + + + + + +
add()ISRReactionvirtual
callbackReactionprotected
ISRReaction(uint8_t pin_number, int mode, const react_callback callback)ISRReactioninline
Reaction(react_callback callback)Reactioninline
remove()ISRReactionvirtual
tick()ISRReactioninlinevirtual
~ISRReaction()ISRReactioninlinevirtual
+
+ + + + diff --git a/docs/generated/docs/class_i_s_r_reaction.html b/docs/generated/docs/class_i_s_r_reaction.html new file mode 100644 index 0000000..512bb3c --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction.html @@ -0,0 +1,342 @@ + + + + + + + +ReactESP: ISRReaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
ISRReaction Class Reference
+
+
+ +

Reaction that is triggered on an input pin change. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for ISRReaction:
+
+
+
+
[legend]
+
+Collaboration diagram for ISRReaction:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 ISRReaction (uint8_t pin_number, int mode, const react_callback callback)
 Construct a new ISRReaction object. More...
 
virtual ~ISRReaction ()
 
void add ()
 
void remove ()
 
void tick ()
 
- Public Member Functions inherited from Reaction
 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from Reaction
const react_callback callback
 
+

Detailed Description

+

Reaction that is triggered on an input pin change.

+ +

Definition at line 185 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ ISRReaction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ISRReaction::ISRReaction (uint8_t pin_number,
int mode,
const react_callback callback 
)
+
+inline
+
+ +

Construct a new ISRReaction object.

+
Parameters
+ + + + +
pin_numberGPIO pin number to which the interrupt is attached
modeInterrupt mode. One of RISING, FALLING, CHANGE
callbackInterrupt callback. Keep this function short and add the ICACHE_RAM_ATTR attribute.
+
+
+ +

Definition at line 204 of file ReactESP.h.

+ +
+
+ +

◆ ~ISRReaction()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ISRReaction::~ISRReaction ()
+
+inlinevirtual
+
+ +

Definition at line 233 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + +
+ + + + + + + +
void ISRReaction::add ()
+
+virtual
+
+ +

Implements Reaction.

+ +

Definition at line 85 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ remove()

+ +
+
+ + + + + +
+ + + + + + + +
void ISRReaction::remove ()
+
+virtual
+
+ +

Implements Reaction.

+ +

Definition at line 94 of file ReactESP.cpp.

+ +
+
+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
void ISRReaction::tick ()
+
+inlinevirtual
+
+ +

Implements Reaction.

+ +

Definition at line 236 of file ReactESP.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_i_s_r_reaction.js b/docs/generated/docs/class_i_s_r_reaction.js new file mode 100644 index 0000000..0fa21a7 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction.js @@ -0,0 +1,8 @@ +var class_i_s_r_reaction = +[ + [ "ISRReaction", "class_i_s_r_reaction.html#a675599c657aa6aae62a1bc08510edfe5", null ], + [ "~ISRReaction", "class_i_s_r_reaction.html#adca866ff1b4dd48450ab0076707221bd", null ], + [ "add", "class_i_s_r_reaction.html#aba4a495b10cf265d41cbdb9790936072", null ], + [ "remove", "class_i_s_r_reaction.html#a6470d8b82a5066562ad9a2e169ea19b8", null ], + [ "tick", "class_i_s_r_reaction.html#aab332af06426b145d73c1b46b4d7c3fd", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_i_s_r_reaction__coll__graph.map b/docs/generated/docs/class_i_s_r_reaction__coll__graph.map new file mode 100644 index 0000000..6771083 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction__coll__graph.md5 b/docs/generated/docs/class_i_s_r_reaction__coll__graph.md5 new file mode 100644 index 0000000..e45f21c --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction__coll__graph.md5 @@ -0,0 +1 @@ +491e32108358970ab24eb07e06eb234c \ No newline at end of file diff --git a/docs/generated/docs/class_i_s_r_reaction__coll__graph.svg b/docs/generated/docs/class_i_s_r_reaction__coll__graph.svg new file mode 100644 index 0000000..39951eb --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +ISRReaction + + +Node1 + + +ISRReaction + + + + + +Node2 + + +Reaction + + + + + +Node2->Node1 + + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction__inherit__graph.map b/docs/generated/docs/class_i_s_r_reaction__inherit__graph.map new file mode 100644 index 0000000..6771083 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction__inherit__graph.md5 b/docs/generated/docs/class_i_s_r_reaction__inherit__graph.md5 new file mode 100644 index 0000000..e45f21c --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +491e32108358970ab24eb07e06eb234c \ No newline at end of file diff --git a/docs/generated/docs/class_i_s_r_reaction__inherit__graph.svg b/docs/generated/docs/class_i_s_r_reaction__inherit__graph.svg new file mode 100644 index 0000000..39951eb --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction__inherit__graph.svg @@ -0,0 +1,36 @@ + + + + + + +ISRReaction + + +Node1 + + +ISRReaction + + + + + +Node2 + + +Reaction + + + + + +Node2->Node1 + + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.map b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.map new file mode 100644 index 0000000..01b84be --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.md5 b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.md5 new file mode 100644 index 0000000..1949c72 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.md5 @@ -0,0 +1 @@ +6e3be8db972aa114b240bd3a49a37cef \ No newline at end of file diff --git a/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.svg b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.svg new file mode 100644 index 0000000..2a09332 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ISRReaction::add + + +Node1 + + +ISRReaction::add + + + + + +Node2 + + +isr + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.map b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.map new file mode 100644 index 0000000..dad29c1 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.md5 b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.md5 new file mode 100644 index 0000000..3db7821 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.md5 @@ -0,0 +1 @@ +4916fef969860ccec7788931e9b38c80 \ No newline at end of file diff --git a/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.svg b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.svg new file mode 100644 index 0000000..dd33017 --- /dev/null +++ b/docs/generated/docs/class_i_s_r_reaction_aba4a495b10cf265d41cbdb9790936072_icgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ISRReaction::add + + +Node1 + + +ISRReaction::add + + + + + +Node2 + + +ReactESP::onInterrupt + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p-members.html b/docs/generated/docs/class_react_e_s_p-members.html new file mode 100644 index 0000000..ea10129 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p-members.html @@ -0,0 +1,125 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ReactESP Member List
+
+
+ +

This is the complete list of members for ReactESP, including all inherited members.

+ + + + + + + + + + + + + + + + + +
appReactESPstatic
ISRReaction classReactESPfriend
onAvailable(Stream &stream, const react_callback cb)ReactESP
onDelay(const uint32_t t, const react_callback cb)ReactESP
onDelayMicros(const uint64_t t, const react_callback cb)ReactESP
onInterrupt(const uint8_t pin_number, int mode, const react_callback cb)ReactESP
onRepeat(const uint32_t t, const react_callback cb)ReactESP
onRepeatMicros(const uint64_t t, const react_callback cb)ReactESP
onTick(const react_callback cb)ReactESP
ReactESP(const react_callback cb)ReactESPinline
Reaction classReactESPfriend
RepeatReaction classReactESPfriend
setup(void)ReactESPinline
tick(void)ReactESP
TimedReaction classReactESPfriend
UntimedReaction classReactESPfriend
+
+ + + + diff --git a/docs/generated/docs/class_react_e_s_p.html b/docs/generated/docs/class_react_e_s_p.html new file mode 100644 index 0000000..6683040 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p.html @@ -0,0 +1,746 @@ + + + + + + + +ReactESP: ReactESP Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
ReactESP Class Reference
+
+
+ +

Main class of a ReactESP program. + More...

+ +

#include <ReactESP.h>

+
+Collaboration diagram for ReactESP:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ReactESP (const react_callback cb)
 Construct a new ReactESP object. More...
 
void setup (void)
 
void tick (void)
 
DelayReactiononDelay (const uint32_t t, const react_callback cb)
 Create a new DelayReaction. More...
 
DelayReactiononDelayMicros (const uint64_t t, const react_callback cb)
 Create a new DelayReaction. More...
 
RepeatReactiononRepeat (const uint32_t t, const react_callback cb)
 Create a new RepeatReaction. More...
 
RepeatReactiononRepeatMicros (const uint64_t t, const react_callback cb)
 Create a new RepeatReaction. More...
 
StreamReactiononAvailable (Stream &stream, const react_callback cb)
 Create a new StreamReaction. More...
 
ISRReactiononInterrupt (const uint8_t pin_number, int mode, const react_callback cb)
 Create a new ISRReaction (interrupt reaction) More...
 
TickReactiononTick (const react_callback cb)
 Create a new TickReaction. More...
 
+ + + + +

+Static Public Attributes

static ReactESPapp = NULL
 Static singleton reference to the instantiated ReactESP object. More...
 
+ + + + + + + + + + + +

+Friends

class Reaction
 
class TimedReaction
 
class RepeatReaction
 
class UntimedReaction
 
class ISRReaction
 
+

Detailed Description

+

Main class of a ReactESP program.

+ +

Definition at line 245 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ ReactESP()

+ +
+
+ + + + + +
+ + + + + + + + +
ReactESP::ReactESP (const react_callback cb)
+
+inline
+
+ +

Construct a new ReactESP object.

+
Parameters
+ + +
cbSetup function to be called. This is equivalent to the regular Arduino setup() function and should perform any initial setup the program requires.
+
+
+ +

Definition at line 260 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ onAvailable()

+ +
+
+ + + + + + + + + + + + + + + + + + +
StreamReaction * ReactESP::onAvailable (Stream & stream,
const react_callback cb 
)
+
+ +

Create a new StreamReaction.

+
Parameters
+ + + +
streamArduino Stream object to monitor
cbCallback function
+
+
+
Returns
StreamReaction*
+ +

Definition at line 176 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ onDelay()

+ +
+
+ + + + + + + + + + + + + + + + + + +
DelayReaction * ReactESP::onDelay (const uint32_t t,
const react_callback cb 
)
+
+ +

Create a new DelayReaction.

+
Parameters
+ + + +
tDelay, in milliseconds
cbCallback function
+
+
+
Returns
DelayReaction*
+ +

Definition at line 150 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ onDelayMicros()

+ +
+
+ + + + + + + + + + + + + + + + + + +
DelayReaction * ReactESP::onDelayMicros (const uint64_t t,
const react_callback cb 
)
+
+ +

Create a new DelayReaction.

+
Parameters
+ + + +
tDelay, in microseconds
cbCallback function
+
+
+
Returns
DelayReaction*
+ +

Definition at line 156 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ onInterrupt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ISRReaction * ReactESP::onInterrupt (const uint8_t pin_number,
int mode,
const react_callback cb 
)
+
+ +

Create a new ISRReaction (interrupt reaction)

+
Parameters
+ + + + +
pin_numberGPIO pin number
modeOne of CHANGE, RISING, FALLING
cbInterrupt handler to call. This should be a very simple function, ideally setting a flag variable or incrementing a counter. The function should be defined with ICACHE_RAM_ATTR.
+
+
+
Returns
ISRReaction*
+ +

Definition at line 182 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ onRepeat()

+ +
+
+ + + + + + + + + + + + + + + + + + +
RepeatReaction * ReactESP::onRepeat (const uint32_t t,
const react_callback cb 
)
+
+ +

Create a new RepeatReaction.

+
Parameters
+ + + +
tInterval, in milliseconds
cbCallback function
+
+
+
Returns
RepeatReaction*
+ +

Definition at line 163 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ onRepeatMicros()

+ +
+
+ + + + + + + + + + + + + + + + + + +
RepeatReaction * ReactESP::onRepeatMicros (const uint64_t t,
const react_callback cb 
)
+
+ +

Create a new RepeatReaction.

+
Parameters
+ + + +
tInterval, in microseconds
cbCallback function
+
+
+
Returns
RepeatReaction*
+ +

Definition at line 169 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ onTick()

+ +
+
+ + + + + + + + +
TickReaction * ReactESP::onTick (const react_callback cb)
+
+ +

Create a new TickReaction.

+
Parameters
+ + +
cbCallback function to be called at every loop execution
+
+
+
Returns
TickReaction*
+ +

Definition at line 189 of file ReactESP.cpp.

+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ setup()

+ +
+
+ + + + + +
+ + + + + + + + +
void ReactESP::setup (void )
+
+inline
+
+ +

Definition at line 261 of file ReactESP.h.

+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ tick()

+ +
+
+ + + + + + + + +
void ReactESP::tick (void )
+
+ +

Definition at line 145 of file ReactESP.cpp.

+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Friends And Related Function Documentation

+ +

◆ ISRReaction

+ +
+
+ + + + + +
+ + + + +
friend class ISRReaction
+
+friend
+
+ +

Definition at line 250 of file ReactESP.h.

+ +
+
+ +

◆ Reaction

+ +
+
+ + + + + +
+ + + + +
friend class Reaction
+
+friend
+
+ +

Definition at line 246 of file ReactESP.h.

+ +
+
+ +

◆ RepeatReaction

+ +
+
+ + + + + +
+ + + + +
friend class RepeatReaction
+
+friend
+
+ +

Definition at line 248 of file ReactESP.h.

+ +
+
+ +

◆ TimedReaction

+ +
+
+ + + + + +
+ + + + +
friend class TimedReaction
+
+friend
+
+ +

Definition at line 247 of file ReactESP.h.

+ +
+
+ +

◆ UntimedReaction

+ +
+
+ + + + + +
+ + + + +
friend class UntimedReaction
+
+friend
+
+ +

Definition at line 249 of file ReactESP.h.

+ +
+
+

Member Data Documentation

+ +

◆ app

+ +
+
+ + + + + +
+ + + + +
ReactESP * ReactESP::app = NULL
+
+static
+
+ +

Static singleton reference to the instantiated ReactESP object.

+ +

Definition at line 265 of file ReactESP.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_react_e_s_p.js b/docs/generated/docs/class_react_e_s_p.js new file mode 100644 index 0000000..93d667a --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p.js @@ -0,0 +1,18 @@ +var class_react_e_s_p = +[ + [ "ReactESP", "class_react_e_s_p.html#a5dafe71a8c9c2834c5c34cc86b820c9a", null ], + [ "onAvailable", "class_react_e_s_p.html#a831c11dd7f1a6e15d70785c3a990df93", null ], + [ "onDelay", "class_react_e_s_p.html#ab26769ff3e426972e87746749560ffc0", null ], + [ "onDelayMicros", "class_react_e_s_p.html#ad5739bf0fedb24931f98762113161e95", null ], + [ "onInterrupt", "class_react_e_s_p.html#a02ce0511803b0d3a1fcec6bc56ff8b3f", null ], + [ "onRepeat", "class_react_e_s_p.html#adb20144bde6e60b41e484d2f6f61d0f5", null ], + [ "onRepeatMicros", "class_react_e_s_p.html#a2a7018e7a5e89634e8e4385be51eafd4", null ], + [ "onTick", "class_react_e_s_p.html#a7da68d41f2a9790ab1aec2610bad07eb", null ], + [ "setup", "class_react_e_s_p.html#aa26556a0954d117dc5b8d925e5924cdf", null ], + [ "tick", "class_react_e_s_p.html#aeefac464d9df930d020a321a63cdcf4b", null ], + [ "ISRReaction", "class_react_e_s_p.html#a6181e312f42c9b243cf44b38fe310269", null ], + [ "Reaction", "class_react_e_s_p.html#a5f86463029cca47f8aa15ff8cd5b9e51", null ], + [ "RepeatReaction", "class_react_e_s_p.html#a539b4fe2115897ce16658443ea39f348", null ], + [ "TimedReaction", "class_react_e_s_p.html#af650768845083eb3a0ec1493679bd20d", null ], + [ "UntimedReaction", "class_react_e_s_p.html#ab45ae4a88e6fcc0191e9f4d682bc34ad", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p__coll__graph.map b/docs/generated/docs/class_react_e_s_p__coll__graph.map new file mode 100644 index 0000000..abdf669 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/generated/docs/class_react_e_s_p__coll__graph.md5 b/docs/generated/docs/class_react_e_s_p__coll__graph.md5 new file mode 100644 index 0000000..07fed2e --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p__coll__graph.md5 @@ -0,0 +1 @@ +dda90421ed985d2f57faaadb4edd47cb \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p__coll__graph.svg b/docs/generated/docs/class_react_e_s_p__coll__graph.svg new file mode 100644 index 0000000..86a687c --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p__coll__graph.svg @@ -0,0 +1,28 @@ + + + + + + +ReactESP + + +Node1 + + +ReactESP + + + + + +Node1->Node1 + + + app + + + diff --git a/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.map b/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.map new file mode 100644 index 0000000..c8666d4 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.md5 b/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.md5 new file mode 100644 index 0000000..1671481 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.md5 @@ -0,0 +1 @@ +0c20754a0e44a1a66248e942d2abbe5c \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.svg b/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.svg new file mode 100644 index 0000000..2133422 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a02ce0511803b0d3a1fcec6bc56ff8b3f_cgraph.svg @@ -0,0 +1,51 @@ + + + + + + +ReactESP::onInterrupt + + +Node1 + + +ReactESP::onInterrupt + + + + + +Node2 + + +ISRReaction::add + + + + + +Node1->Node2 + + + + + +Node3 + + +isr + + + + + +Node2->Node3 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.map b/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.map new file mode 100644 index 0000000..ea50919 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.md5 b/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.md5 new file mode 100644 index 0000000..169a4fe --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.md5 @@ -0,0 +1 @@ +619ccc662adcc55150ddd192ac5f37f5 \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.svg b/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.svg new file mode 100644 index 0000000..05410ac --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a2a7018e7a5e89634e8e4385be51eafd4_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::onRepeatMicros + + +Node1 + + +ReactESP::onRepeatMicros + + + + + +Node2 + + +TimedReaction::add + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.map b/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.map new file mode 100644 index 0000000..8a2fcf8 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.md5 b/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.md5 new file mode 100644 index 0000000..a2fc46c --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.md5 @@ -0,0 +1 @@ +497775e650a9042b2b5dec73a508d139 \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.svg b/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.svg new file mode 100644 index 0000000..4e6c146 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a7da68d41f2a9790ab1aec2610bad07eb_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::onTick + + +Node1 + + +ReactESP::onTick + + + + + +Node2 + + +UntimedReaction::add + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.map b/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.map new file mode 100644 index 0000000..909fe84 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.md5 b/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.md5 new file mode 100644 index 0000000..48a6a0b --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.md5 @@ -0,0 +1 @@ +d420121c82b7acff4fd37b33cc99d0f0 \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.svg b/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.svg new file mode 100644 index 0000000..b836e6f --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_a831c11dd7f1a6e15d70785c3a990df93_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::onAvailable + + +Node1 + + +ReactESP::onAvailable + + + + + +Node2 + + +UntimedReaction::add + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.map b/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.map new file mode 100644 index 0000000..e841a47 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.md5 b/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.md5 new file mode 100644 index 0000000..2d97efe --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.md5 @@ -0,0 +1 @@ +74bf0c93b0607b23548c8cce795e4657 \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.svg b/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.svg new file mode 100644 index 0000000..e87d6d3 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_aa26556a0954d117dc5b8d925e5924cdf_icgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::setup + + +Node1 + + +ReactESP::setup + + + + + +Node2 + + +setup + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.map b/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.map new file mode 100644 index 0000000..e718d9d --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.md5 b/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.md5 new file mode 100644 index 0000000..a8f951f --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.md5 @@ -0,0 +1 @@ +89f3991134c5064b2f2056ae575f2169 \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.svg b/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.svg new file mode 100644 index 0000000..60efd37 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_ab26769ff3e426972e87746749560ffc0_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::onDelay + + +Node1 + + +ReactESP::onDelay + + + + + +Node2 + + +TimedReaction::add + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.map b/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.map new file mode 100644 index 0000000..134e3fb --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.md5 b/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.md5 new file mode 100644 index 0000000..41c67e2 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.md5 @@ -0,0 +1 @@ +854abce29eefdb9fb1b140d792d04a66 \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.svg b/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.svg new file mode 100644 index 0000000..3d0202e --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_ad5739bf0fedb24931f98762113161e95_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::onDelayMicros + + +Node1 + + +ReactESP::onDelayMicros + + + + + +Node2 + + +TimedReaction::add + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.map b/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.map new file mode 100644 index 0000000..df3b53a --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.md5 b/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.md5 new file mode 100644 index 0000000..a4a526f --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.md5 @@ -0,0 +1 @@ +598d9d6a53c4ca6d83403a074f37a881 \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.svg b/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.svg new file mode 100644 index 0000000..f81a51f --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_adb20144bde6e60b41e484d2f6f61d0f5_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::onRepeat + + +Node1 + + +ReactESP::onRepeat + + + + + +Node2 + + +TimedReaction::add + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.map b/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.map new file mode 100644 index 0000000..85495b5 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.md5 b/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.md5 new file mode 100644 index 0000000..bb94d41 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.md5 @@ -0,0 +1 @@ +19e48c057cd7fcd6535494fbdd06f1aa \ No newline at end of file diff --git a/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.svg b/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.svg new file mode 100644 index 0000000..7394745 --- /dev/null +++ b/docs/generated/docs/class_react_e_s_p_aeefac464d9df930d020a321a63cdcf4b_icgraph.svg @@ -0,0 +1,36 @@ + + + + + + +ReactESP::tick + + +Node1 + + +ReactESP::tick + + + + + +Node2 + + +loop + + + + + +Node1->Node2 + + + + + diff --git a/docs/generated/docs/class_reaction-members.html b/docs/generated/docs/class_reaction-members.html new file mode 100644 index 0000000..a257ffc --- /dev/null +++ b/docs/generated/docs/class_reaction-members.html @@ -0,0 +1,114 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Reaction Member List
+
+
+ +

This is the complete list of members for Reaction, including all inherited members.

+ + + + + + +
add()=0Reactionpure virtual
callbackReactionprotected
Reaction(react_callback callback)Reactioninline
remove()=0Reactionpure virtual
tick()=0Reactionpure virtual
+
+ + + + diff --git a/docs/generated/docs/class_reaction.html b/docs/generated/docs/class_reaction.html new file mode 100644 index 0000000..4d2cd58 --- /dev/null +++ b/docs/generated/docs/class_reaction.html @@ -0,0 +1,291 @@ + + + + + + + +ReactESP: Reaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Reaction Class Referenceabstract
+
+
+ +

Reactions are code to be called when a given condition is fulfilled. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for Reaction:
+
+
+
+
[legend]
+ + + + + + + + + + + +

+Public Member Functions

 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
virtual void add ()=0
 
virtual void remove ()=0
 
virtual void tick ()=0
 
+ + + +

+Protected Attributes

const react_callback callback
 
+

Detailed Description

+

Reactions are code to be called when a given condition is fulfilled.

+ +

Definition at line 25 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ Reaction()

+ +
+
+ + + + + +
+ + + + + + + + +
Reaction::Reaction (react_callback callback)
+
+inline
+
+ +

Construct a new Reaction object.

+
Parameters
+ + +
callbackFunction to be called when the reaction is triggered
+
+
+ +

Definition at line 35 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void Reaction::add ()
+
+pure virtual
+
+ +

Implemented in ISRReaction, UntimedReaction, and TimedReaction.

+ +
+
+ +

◆ remove()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void Reaction::remove ()
+
+pure virtual
+
+ +

Implemented in ISRReaction, UntimedReaction, and TimedReaction.

+ +
+
+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void Reaction::tick ()
+
+pure virtual
+
+
+

Member Data Documentation

+ +

◆ callback

+ +
+
+ + + + + +
+ + + + +
const react_callback Reaction::callback
+
+protected
+
+ +

Definition at line 27 of file ReactESP.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/generated/docs/class_reaction.js b/docs/generated/docs/class_reaction.js new file mode 100644 index 0000000..f457985 --- /dev/null +++ b/docs/generated/docs/class_reaction.js @@ -0,0 +1,8 @@ +var class_reaction = +[ + [ "Reaction", "class_reaction.html#aea66093d451e22677190c38176b9fe40", null ], + [ "add", "class_reaction.html#a349da2fef93c94095c264ead1f5ffcb8", null ], + [ "remove", "class_reaction.html#af88faf9664340633d6cc5f913ab4e105", null ], + [ "tick", "class_reaction.html#a24cc0bd38eea8c50dd6718bb7a1c8051", null ], + [ "callback", "class_reaction.html#a13fdfc7eef62041f7394eac1f0b53978", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_reaction__inherit__graph.map b/docs/generated/docs/class_reaction__inherit__graph.map new file mode 100644 index 0000000..0589cfc --- /dev/null +++ b/docs/generated/docs/class_reaction__inherit__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/generated/docs/class_reaction__inherit__graph.md5 b/docs/generated/docs/class_reaction__inherit__graph.md5 new file mode 100644 index 0000000..d21a2f2 --- /dev/null +++ b/docs/generated/docs/class_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +e28a9098edbf155292a5317c292570cf \ No newline at end of file diff --git a/docs/generated/docs/class_reaction__inherit__graph.svg b/docs/generated/docs/class_reaction__inherit__graph.svg new file mode 100644 index 0000000..a6a38cc --- /dev/null +++ b/docs/generated/docs/class_reaction__inherit__graph.svg @@ -0,0 +1,126 @@ + + + + + + +Reaction + + +Node1 + + +Reaction + + + + + +Node2 + + +ISRReaction + + + + + +Node1->Node2 + + + + + +Node3 + + +TimedReaction + + + + + +Node1->Node3 + + + + + +Node6 + + +UntimedReaction + + + + + +Node1->Node6 + + + + + +Node4 + + +DelayReaction + + + + + +Node3->Node4 + + + + + +Node5 + + +RepeatReaction + + + + + +Node3->Node5 + + + + + +Node7 + + +StreamReaction + + + + + +Node6->Node7 + + + + + +Node8 + + +TickReaction + + + + + +Node6->Node8 + + + + + diff --git a/docs/generated/docs/class_repeat_reaction-members.html b/docs/generated/docs/class_repeat_reaction-members.html new file mode 100644 index 0000000..ba437b6 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction-members.html @@ -0,0 +1,126 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
RepeatReaction Member List
+
+
+ +

This is the complete list of members for RepeatReaction, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
add()TimedReactionvirtual
callbackReactionprotected
enabledTimedReactionprotected
getTriggerTime()TimedReactioninline
getTriggerTimeMicros()TimedReactioninline
intervalTimedReactionprotected
isEnabled()TimedReactioninline
last_trigger_timeTimedReactionprotected
operator<(const TimedReaction &other)TimedReaction
Reaction(react_callback callback)Reactioninline
remove()TimedReactionvirtual
RepeatReaction(const uint32_t interval, const react_callback callback)RepeatReactioninline
RepeatReaction(const uint64_t interval, const react_callback callback)RepeatReactioninline
tick()RepeatReactionvirtual
TimedReaction(const uint32_t interval, const react_callback callback)TimedReactioninline
TimedReaction(const uint64_t interval, const react_callback callback)TimedReactioninline
~TimedReaction()TimedReactioninlinevirtual
+
+ + + + diff --git a/docs/generated/docs/class_repeat_reaction.html b/docs/generated/docs/class_repeat_reaction.html new file mode 100644 index 0000000..2e50548 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction.html @@ -0,0 +1,311 @@ + + + + + + + +ReactESP: RepeatReaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
RepeatReaction Class Reference
+
+
+ +

Reaction that is triggered repeatedly. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for RepeatReaction:
+
+
+
+
[legend]
+
+Collaboration diagram for RepeatReaction:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RepeatReaction (const uint32_t interval, const react_callback callback)
 Construct a new Repeat Reaction object. More...
 
 RepeatReaction (const uint64_t interval, const react_callback callback)
 Construct a new Repeat Reaction object. More...
 
void tick ()
 
- Public Member Functions inherited from TimedReaction
 TimedReaction (const uint32_t interval, const react_callback callback)
 Construct a new Timed Reaction object. More...
 
 TimedReaction (const uint64_t interval, const react_callback callback)
 Construct a new Timed Reaction object. More...
 
virtual ~TimedReaction ()
 
bool operator< (const TimedReaction &other)
 Return the current time since the device restart in microseconds. More...
 
void add ()
 
void remove ()
 
uint32_t getTriggerTime ()
 
uint64_t getTriggerTimeMicros ()
 
bool isEnabled ()
 
- Public Member Functions inherited from Reaction
 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from TimedReaction
const uint64_t interval
 
uint64_t last_trigger_time
 
bool enabled
 
- Protected Attributes inherited from Reaction
const react_callback callback
 
+

Detailed Description

+

Reaction that is triggered repeatedly.

+ +

Definition at line 115 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ RepeatReaction() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
RepeatReaction::RepeatReaction (const uint32_t interval,
const react_callback callback 
)
+
+inline
+
+ +

Construct a new Repeat Reaction object.

+
Parameters
+ + + +
intervalRepetition interval, in milliseconds
callbackFunction to be called at every repetition
+
+
+ +

Definition at line 123 of file ReactESP.h.

+ +
+
+ +

◆ RepeatReaction() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
RepeatReaction::RepeatReaction (const uint64_t interval,
const react_callback callback 
)
+
+inline
+
+ +

Construct a new Repeat Reaction object.

+
Parameters
+ + + +
intervalRepetition interval, in microseconds
callbackFunction to be called at every repetition
+
+
+ +

Definition at line 131 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
void RepeatReaction::tick ()
+
+virtual
+
+ +

Implements TimedReaction.

+ +

Definition at line 50 of file ReactESP.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_repeat_reaction.js b/docs/generated/docs/class_repeat_reaction.js new file mode 100644 index 0000000..a53a4a2 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction.js @@ -0,0 +1,6 @@ +var class_repeat_reaction = +[ + [ "RepeatReaction", "class_repeat_reaction.html#a68c6ea9ade842d93ef967d977937f683", null ], + [ "RepeatReaction", "class_repeat_reaction.html#a5b53f55d5b252708eb2348c4c3a55868", null ], + [ "tick", "class_repeat_reaction.html#a2c05598c7a03d60ec1088db1da5d851d", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_repeat_reaction__coll__graph.map b/docs/generated/docs/class_repeat_reaction__coll__graph.map new file mode 100644 index 0000000..96041e9 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_repeat_reaction__coll__graph.md5 b/docs/generated/docs/class_repeat_reaction__coll__graph.md5 new file mode 100644 index 0000000..9e78445 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction__coll__graph.md5 @@ -0,0 +1 @@ +f2afd5861193d56d225538e45a4c3333 \ No newline at end of file diff --git a/docs/generated/docs/class_repeat_reaction__coll__graph.svg b/docs/generated/docs/class_repeat_reaction__coll__graph.svg new file mode 100644 index 0000000..be3ec24 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction__coll__graph.svg @@ -0,0 +1,51 @@ + + + + + + +RepeatReaction + + +Node1 + + +RepeatReaction + + + + + +Node2 + + +TimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_repeat_reaction__inherit__graph.map b/docs/generated/docs/class_repeat_reaction__inherit__graph.map new file mode 100644 index 0000000..96041e9 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_repeat_reaction__inherit__graph.md5 b/docs/generated/docs/class_repeat_reaction__inherit__graph.md5 new file mode 100644 index 0000000..9e78445 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +f2afd5861193d56d225538e45a4c3333 \ No newline at end of file diff --git a/docs/generated/docs/class_repeat_reaction__inherit__graph.svg b/docs/generated/docs/class_repeat_reaction__inherit__graph.svg new file mode 100644 index 0000000..be3ec24 --- /dev/null +++ b/docs/generated/docs/class_repeat_reaction__inherit__graph.svg @@ -0,0 +1,51 @@ + + + + + + +RepeatReaction + + +Node1 + + +RepeatReaction + + + + + +Node2 + + +TimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_stream_reaction-members.html b/docs/generated/docs/class_stream_reaction-members.html new file mode 100644 index 0000000..6cfdc07 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction-members.html @@ -0,0 +1,117 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
StreamReaction Member List
+
+
+ +

This is the complete list of members for StreamReaction, including all inherited members.

+ + + + + + + + + +
add()UntimedReactionvirtual
callbackReactionprotected
Reaction(react_callback callback)Reactioninline
remove()UntimedReactionvirtual
StreamReaction(Stream &stream, const react_callback callback)StreamReactioninline
tick()StreamReactionvirtual
UntimedReaction(const react_callback callback)UntimedReactioninline
~UntimedReaction()UntimedReactioninlinevirtual
+
+ + + + diff --git a/docs/generated/docs/class_stream_reaction.html b/docs/generated/docs/class_stream_reaction.html new file mode 100644 index 0000000..abdf9b4 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction.html @@ -0,0 +1,241 @@ + + + + + + + +ReactESP: StreamReaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
StreamReaction Class Reference
+
+
+ +

Reaction that is triggered when there is input available at the given Arduino Stream. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for StreamReaction:
+
+
+
+
[legend]
+
+Collaboration diagram for StreamReaction:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StreamReaction (Stream &stream, const react_callback callback)
 Construct a new Stream Reaction object. More...
 
void tick ()
 
- Public Member Functions inherited from UntimedReaction
 UntimedReaction (const react_callback callback)
 
virtual ~UntimedReaction ()
 
virtual void add ()
 
virtual void remove ()
 
- Public Member Functions inherited from Reaction
 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from Reaction
const react_callback callback
 
+

Detailed Description

+

Reaction that is triggered when there is input available at the given Arduino Stream.

+ +

Definition at line 152 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ StreamReaction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
StreamReaction::StreamReaction (Stream & stream,
const react_callback callback 
)
+
+inline
+
+ +

Construct a new Stream Reaction object.

+
Parameters
+ + + +
streamStream to monitor
callbackCallback to call for new input
+
+
+ +

Definition at line 163 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
void StreamReaction::tick ()
+
+virtual
+
+ +

Implements UntimedReaction.

+ +

Definition at line 68 of file ReactESP.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_stream_reaction.js b/docs/generated/docs/class_stream_reaction.js new file mode 100644 index 0000000..8539593 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction.js @@ -0,0 +1,5 @@ +var class_stream_reaction = +[ + [ "StreamReaction", "class_stream_reaction.html#a902a27a4c687e6eac1255c4fad74bf17", null ], + [ "tick", "class_stream_reaction.html#aa874d5cc82b5392075da1262e318a703", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_stream_reaction__coll__graph.map b/docs/generated/docs/class_stream_reaction__coll__graph.map new file mode 100644 index 0000000..57a0a88 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_stream_reaction__coll__graph.md5 b/docs/generated/docs/class_stream_reaction__coll__graph.md5 new file mode 100644 index 0000000..1b94068 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction__coll__graph.md5 @@ -0,0 +1 @@ +75af67a68041f7d180f42181b68b294f \ No newline at end of file diff --git a/docs/generated/docs/class_stream_reaction__coll__graph.svg b/docs/generated/docs/class_stream_reaction__coll__graph.svg new file mode 100644 index 0000000..d802385 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction__coll__graph.svg @@ -0,0 +1,51 @@ + + + + + + +StreamReaction + + +Node1 + + +StreamReaction + + + + + +Node2 + + +UntimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_stream_reaction__inherit__graph.map b/docs/generated/docs/class_stream_reaction__inherit__graph.map new file mode 100644 index 0000000..57a0a88 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_stream_reaction__inherit__graph.md5 b/docs/generated/docs/class_stream_reaction__inherit__graph.md5 new file mode 100644 index 0000000..1b94068 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +75af67a68041f7d180f42181b68b294f \ No newline at end of file diff --git a/docs/generated/docs/class_stream_reaction__inherit__graph.svg b/docs/generated/docs/class_stream_reaction__inherit__graph.svg new file mode 100644 index 0000000..d802385 --- /dev/null +++ b/docs/generated/docs/class_stream_reaction__inherit__graph.svg @@ -0,0 +1,51 @@ + + + + + + +StreamReaction + + +Node1 + + +StreamReaction + + + + + +Node2 + + +UntimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_tick_reaction-members.html b/docs/generated/docs/class_tick_reaction-members.html new file mode 100644 index 0000000..4fe2b5c --- /dev/null +++ b/docs/generated/docs/class_tick_reaction-members.html @@ -0,0 +1,117 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TickReaction Member List
+
+
+ +

This is the complete list of members for TickReaction, including all inherited members.

+ + + + + + + + + +
add()UntimedReactionvirtual
callbackReactionprotected
Reaction(react_callback callback)Reactioninline
remove()UntimedReactionvirtual
tick()TickReactionvirtual
TickReaction(const react_callback callback)TickReactioninline
UntimedReaction(const react_callback callback)UntimedReactioninline
~UntimedReaction()UntimedReactioninlinevirtual
+
+ + + + diff --git a/docs/generated/docs/class_tick_reaction.html b/docs/generated/docs/class_tick_reaction.html new file mode 100644 index 0000000..129544e --- /dev/null +++ b/docs/generated/docs/class_tick_reaction.html @@ -0,0 +1,230 @@ + + + + + + + +ReactESP: TickReaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
TickReaction Class Reference
+
+
+ +

Reaction that is triggered unconditionally at each execution loop. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for TickReaction:
+
+
+
+
[legend]
+
+Collaboration diagram for TickReaction:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TickReaction (const react_callback callback)
 Construct a new Tick Reaction object. More...
 
void tick ()
 
- Public Member Functions inherited from UntimedReaction
 UntimedReaction (const react_callback callback)
 
virtual ~UntimedReaction ()
 
virtual void add ()
 
virtual void remove ()
 
- Public Member Functions inherited from Reaction
 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from Reaction
const react_callback callback
 
+

Detailed Description

+

Reaction that is triggered unconditionally at each execution loop.

+ +

Definition at line 171 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ TickReaction()

+ +
+
+ + + + + +
+ + + + + + + + +
TickReaction::TickReaction (const react_callback callback)
+
+inline
+
+ +

Construct a new Tick Reaction object.

+
Parameters
+ + +
callbackFunction to be called at each execution loop
+
+
+ +

Definition at line 178 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
void TickReaction::tick ()
+
+virtual
+
+ +

Implements UntimedReaction.

+ +

Definition at line 74 of file ReactESP.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_tick_reaction.js b/docs/generated/docs/class_tick_reaction.js new file mode 100644 index 0000000..9356100 --- /dev/null +++ b/docs/generated/docs/class_tick_reaction.js @@ -0,0 +1,5 @@ +var class_tick_reaction = +[ + [ "TickReaction", "class_tick_reaction.html#a0928c0693f10acec61157027dd4658fe", null ], + [ "tick", "class_tick_reaction.html#aa4e6419363cef721057c990111542b93", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_tick_reaction__coll__graph.map b/docs/generated/docs/class_tick_reaction__coll__graph.map new file mode 100644 index 0000000..4642079 --- /dev/null +++ b/docs/generated/docs/class_tick_reaction__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_tick_reaction__coll__graph.md5 b/docs/generated/docs/class_tick_reaction__coll__graph.md5 new file mode 100644 index 0000000..bf2463f --- /dev/null +++ b/docs/generated/docs/class_tick_reaction__coll__graph.md5 @@ -0,0 +1 @@ +d01e55858de2672443e20e54b0e88a34 \ No newline at end of file diff --git a/docs/generated/docs/class_tick_reaction__coll__graph.svg b/docs/generated/docs/class_tick_reaction__coll__graph.svg new file mode 100644 index 0000000..efd8cb6 --- /dev/null +++ b/docs/generated/docs/class_tick_reaction__coll__graph.svg @@ -0,0 +1,51 @@ + + + + + + +TickReaction + + +Node1 + + +TickReaction + + + + + +Node2 + + +UntimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_tick_reaction__inherit__graph.map b/docs/generated/docs/class_tick_reaction__inherit__graph.map new file mode 100644 index 0000000..4642079 --- /dev/null +++ b/docs/generated/docs/class_tick_reaction__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_tick_reaction__inherit__graph.md5 b/docs/generated/docs/class_tick_reaction__inherit__graph.md5 new file mode 100644 index 0000000..bf2463f --- /dev/null +++ b/docs/generated/docs/class_tick_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +d01e55858de2672443e20e54b0e88a34 \ No newline at end of file diff --git a/docs/generated/docs/class_tick_reaction__inherit__graph.svg b/docs/generated/docs/class_tick_reaction__inherit__graph.svg new file mode 100644 index 0000000..efd8cb6 --- /dev/null +++ b/docs/generated/docs/class_tick_reaction__inherit__graph.svg @@ -0,0 +1,51 @@ + + + + + + +TickReaction + + +Node1 + + +TickReaction + + + + + +Node2 + + +UntimedReaction + + + + + +Node2->Node1 + + + + + +Node3 + + +Reaction + + + + + +Node3->Node2 + + + + + diff --git a/docs/generated/docs/class_timed_reaction-members.html b/docs/generated/docs/class_timed_reaction-members.html new file mode 100644 index 0000000..24a7a7e --- /dev/null +++ b/docs/generated/docs/class_timed_reaction-members.html @@ -0,0 +1,124 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TimedReaction Member List
+
+
+ +

This is the complete list of members for TimedReaction, including all inherited members.

+ + + + + + + + + + + + + + + + +
add()TimedReactionvirtual
callbackReactionprotected
enabledTimedReactionprotected
getTriggerTime()TimedReactioninline
getTriggerTimeMicros()TimedReactioninline
intervalTimedReactionprotected
isEnabled()TimedReactioninline
last_trigger_timeTimedReactionprotected
operator<(const TimedReaction &other)TimedReaction
Reaction(react_callback callback)Reactioninline
remove()TimedReactionvirtual
tick()=0TimedReactionpure virtual
TimedReaction(const uint32_t interval, const react_callback callback)TimedReactioninline
TimedReaction(const uint64_t interval, const react_callback callback)TimedReactioninline
~TimedReaction()TimedReactioninlinevirtual
+
+ + + + diff --git a/docs/generated/docs/class_timed_reaction.html b/docs/generated/docs/class_timed_reaction.html new file mode 100644 index 0000000..80ac235 --- /dev/null +++ b/docs/generated/docs/class_timed_reaction.html @@ -0,0 +1,572 @@ + + + + + + + +ReactESP: TimedReaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
TimedReaction Class Referenceabstract
+
+
+ +

TimedReactions are called based on elapsing of time. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for TimedReaction:
+
+
+
+
[legend]
+
+Collaboration diagram for TimedReaction:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TimedReaction (const uint32_t interval, const react_callback callback)
 Construct a new Timed Reaction object. More...
 
 TimedReaction (const uint64_t interval, const react_callback callback)
 Construct a new Timed Reaction object. More...
 
virtual ~TimedReaction ()
 
bool operator< (const TimedReaction &other)
 Return the current time since the device restart in microseconds. More...
 
void add ()
 
void remove ()
 
uint32_t getTriggerTime ()
 
uint64_t getTriggerTimeMicros ()
 
bool isEnabled ()
 
virtual void tick ()=0
 
- Public Member Functions inherited from Reaction
 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
+ + + + + + + + + + +

+Protected Attributes

const uint64_t interval
 
uint64_t last_trigger_time
 
bool enabled
 
- Protected Attributes inherited from Reaction
const react_callback callback
 
+

Detailed Description

+

TimedReactions are called based on elapsing of time.

+ +

Definition at line 45 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ TimedReaction() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TimedReaction::TimedReaction (const uint32_t interval,
const react_callback callback 
)
+
+inline
+
+ +

Construct a new Timed Reaction object.

+
Parameters
+ + + +
intervalInterval or delay for the reaction, in milliseconds
callbackFunction to be called when the reaction is triggered
+
+
+ +

Definition at line 58 of file ReactESP.h.

+ +
+
+ +

◆ TimedReaction() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TimedReaction::TimedReaction (const uint64_t interval,
const react_callback callback 
)
+
+inline
+
+ +

Construct a new Timed Reaction object.

+
Parameters
+ + + +
intervalInterval, in microseconds
callbackFunction to be called when the reaction is triggered
+
+
+ +

Definition at line 69 of file ReactESP.h.

+ +
+
+ +

◆ ~TimedReaction()

+ +
+
+ + + + + +
+ + + + + + + +
virtual TimedReaction::~TimedReaction ()
+
+inlinevirtual
+
+ +

Definition at line 75 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + +
+ + + + + + + +
void TimedReaction::add ()
+
+virtual
+
+ +

Implements Reaction.

+ +

Definition at line 26 of file ReactESP.cpp.

+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ getTriggerTime()

+ +
+
+ + + + + +
+ + + + + + + +
uint32_t TimedReaction::getTriggerTime ()
+
+inline
+
+ +

Definition at line 79 of file ReactESP.h.

+ +
+
+ +

◆ getTriggerTimeMicros()

+ +
+
+ + + + + +
+ + + + + + + +
uint64_t TimedReaction::getTriggerTimeMicros ()
+
+inline
+
+ +

Definition at line 80 of file ReactESP.h.

+ +
+
+ +

◆ isEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool TimedReaction::isEnabled ()
+
+inline
+
+ +

Definition at line 81 of file ReactESP.h.

+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + + + + +
bool TimedReaction::operator< (const TimedReactionother)
+
+ +

Return the current time since the device restart in microseconds.

+

Returns the time since the device restart. Even though the time is in microseconds, a 64-bit integer is all but guaranteed not to rewrap, ever.

+ +

Definition at line 21 of file ReactESP.cpp.

+ +
+
+ +

◆ remove()

+ +
+
+ + + + + +
+ + + + + + + +
void TimedReaction::remove ()
+
+virtual
+
+ +

Implements Reaction.

+ +

Definition at line 28 of file ReactESP.cpp.

+ +
+
+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void TimedReaction::tick ()
+
+pure virtual
+
+ +

Implements Reaction.

+ +

Implemented in RepeatReaction, and DelayReaction.

+ +
+
+

Member Data Documentation

+ +

◆ enabled

+ +
+
+ + + + + +
+ + + + +
bool TimedReaction::enabled
+
+protected
+
+ +

Definition at line 49 of file ReactESP.h.

+ +
+
+ +

◆ interval

+ +
+
+ + + + + +
+ + + + +
const uint64_t TimedReaction::interval
+
+protected
+
+ +

Definition at line 47 of file ReactESP.h.

+ +
+
+ +

◆ last_trigger_time

+ +
+
+ + + + + +
+ + + + +
uint64_t TimedReaction::last_trigger_time
+
+protected
+
+ +

Definition at line 48 of file ReactESP.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_timed_reaction.js b/docs/generated/docs/class_timed_reaction.js new file mode 100644 index 0000000..be7c70f --- /dev/null +++ b/docs/generated/docs/class_timed_reaction.js @@ -0,0 +1,16 @@ +var class_timed_reaction = +[ + [ "TimedReaction", "class_timed_reaction.html#af1653cd9ff0b545e95baec51cde2743c", null ], + [ "TimedReaction", "class_timed_reaction.html#a4a775a7624ba511ae80016e14b8d88f5", null ], + [ "~TimedReaction", "class_timed_reaction.html#a2f26edad67264a6c4f4da7d7ebfbb661", null ], + [ "add", "class_timed_reaction.html#a163d0232141ebe0d446d853969766a69", null ], + [ "getTriggerTime", "class_timed_reaction.html#ac419476db7b8b64c6b13ff62334a95ad", null ], + [ "getTriggerTimeMicros", "class_timed_reaction.html#a4ff15ba9b01cc69b045aac06b896404c", null ], + [ "isEnabled", "class_timed_reaction.html#af42d731961b6abcd508b48f4e007ebcf", null ], + [ "operator<", "class_timed_reaction.html#a431489308733484afc1f3b6b80289be1", null ], + [ "remove", "class_timed_reaction.html#acac370ae042f0561beecf528551ccad9", null ], + [ "tick", "class_timed_reaction.html#a56eb9a737b11089358d34cc347f9fc7a", null ], + [ "enabled", "class_timed_reaction.html#ae4c582a52e93db97646f8fbb0bb1b909", null ], + [ "interval", "class_timed_reaction.html#ad4a692b89c47ea51055534e8286532fa", null ], + [ "last_trigger_time", "class_timed_reaction.html#a403ac811efb47fc24aae688b83309540", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_timed_reaction__coll__graph.map b/docs/generated/docs/class_timed_reaction__coll__graph.map new file mode 100644 index 0000000..39334c8 --- /dev/null +++ b/docs/generated/docs/class_timed_reaction__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_timed_reaction__coll__graph.md5 b/docs/generated/docs/class_timed_reaction__coll__graph.md5 new file mode 100644 index 0000000..79e34f0 --- /dev/null +++ b/docs/generated/docs/class_timed_reaction__coll__graph.md5 @@ -0,0 +1 @@ +b901838df6ccef0a3481f70497f1c517 \ No newline at end of file diff --git a/docs/generated/docs/class_timed_reaction__coll__graph.svg b/docs/generated/docs/class_timed_reaction__coll__graph.svg new file mode 100644 index 0000000..15a5402 --- /dev/null +++ b/docs/generated/docs/class_timed_reaction__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +TimedReaction + + +Node1 + + +TimedReaction + + + + + +Node2 + + +Reaction + + + + + +Node2->Node1 + + + + + diff --git a/docs/generated/docs/class_timed_reaction__inherit__graph.map b/docs/generated/docs/class_timed_reaction__inherit__graph.map new file mode 100644 index 0000000..27d7065 --- /dev/null +++ b/docs/generated/docs/class_timed_reaction__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/generated/docs/class_timed_reaction__inherit__graph.md5 b/docs/generated/docs/class_timed_reaction__inherit__graph.md5 new file mode 100644 index 0000000..2fa454b --- /dev/null +++ b/docs/generated/docs/class_timed_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +1058a80145844da8d3db6f4686bd9bd8 \ No newline at end of file diff --git a/docs/generated/docs/class_timed_reaction__inherit__graph.svg b/docs/generated/docs/class_timed_reaction__inherit__graph.svg new file mode 100644 index 0000000..4aec88d --- /dev/null +++ b/docs/generated/docs/class_timed_reaction__inherit__graph.svg @@ -0,0 +1,66 @@ + + + + + + +TimedReaction + + +Node1 + + +TimedReaction + + + + + +Node3 + + +DelayReaction + + + + + +Node1->Node3 + + + + + +Node4 + + +RepeatReaction + + + + + +Node1->Node4 + + + + + +Node2 + + +Reaction + + + + + +Node2->Node1 + + + + + diff --git a/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.map b/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.map new file mode 100644 index 0000000..e7d375d --- /dev/null +++ b/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.md5 b/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.md5 new file mode 100644 index 0000000..340bc97 --- /dev/null +++ b/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.md5 @@ -0,0 +1 @@ +bda910d851fe515467558b2eea347018 \ No newline at end of file diff --git a/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.svg b/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.svg new file mode 100644 index 0000000..eb74baf --- /dev/null +++ b/docs/generated/docs/class_timed_reaction_a163d0232141ebe0d446d853969766a69_icgraph.svg @@ -0,0 +1,81 @@ + + + + + + +TimedReaction::add + + +Node1 + + +TimedReaction::add + + + + + +Node2 + + +ReactESP::onDelay + + + + + +Node1->Node2 + + + + + +Node3 + + +ReactESP::onDelayMicros + + + + + +Node1->Node3 + + + + + +Node4 + + +ReactESP::onRepeat + + + + + +Node1->Node4 + + + + + +Node5 + + +ReactESP::onRepeatMicros + + + + + +Node1->Node5 + + + + + diff --git a/docs/generated/docs/class_untimed_reaction-members.html b/docs/generated/docs/class_untimed_reaction-members.html new file mode 100644 index 0000000..7f91b0c --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction-members.html @@ -0,0 +1,116 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
UntimedReaction Member List
+
+
+ +

This is the complete list of members for UntimedReaction, including all inherited members.

+ + + + + + + + +
add()UntimedReactionvirtual
callbackReactionprotected
Reaction(react_callback callback)Reactioninline
remove()UntimedReactionvirtual
tick()=0UntimedReactionpure virtual
UntimedReaction(const react_callback callback)UntimedReactioninline
~UntimedReaction()UntimedReactioninlinevirtual
+
+ + + + diff --git a/docs/generated/docs/class_untimed_reaction.html b/docs/generated/docs/class_untimed_reaction.html new file mode 100644 index 0000000..ba49dc3 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction.html @@ -0,0 +1,309 @@ + + + + + + + +ReactESP: UntimedReaction Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
UntimedReaction Class Referenceabstract
+
+
+ +

Reactions that are triggered based on something else than time. + More...

+ +

#include <ReactESP.h>

+
+Inheritance diagram for UntimedReaction:
+
+
+
+
[legend]
+
+Collaboration diagram for UntimedReaction:
+
+
+
+
[legend]
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 UntimedReaction (const react_callback callback)
 
virtual ~UntimedReaction ()
 
virtual void add ()
 
virtual void remove ()
 
virtual void tick ()=0
 
- Public Member Functions inherited from Reaction
 Reaction (react_callback callback)
 Construct a new Reaction object. More...
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from Reaction
const react_callback callback
 
+

Detailed Description

+

Reactions that are triggered based on something else than time.

+ +

Definition at line 139 of file ReactESP.h.

+

Constructor & Destructor Documentation

+ +

◆ UntimedReaction()

+ +
+
+ + + + + +
+ + + + + + + + +
UntimedReaction::UntimedReaction (const react_callback callback)
+
+inline
+
+ +

Definition at line 141 of file ReactESP.h.

+ +
+
+ +

◆ ~UntimedReaction()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UntimedReaction::~UntimedReaction ()
+
+inlinevirtual
+
+ +

Definition at line 142 of file ReactESP.h.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + +
+ + + + + + + +
void UntimedReaction::add ()
+
+virtual
+
+ +

Implements Reaction.

+ +

Definition at line 61 of file ReactESP.cpp.

+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ remove()

+ +
+
+ + + + + +
+ + + + + + + +
void UntimedReaction::remove ()
+
+virtual
+
+ +

Implements Reaction.

+ +

Definition at line 63 of file ReactESP.cpp.

+ +
+
+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void UntimedReaction::tick ()
+
+pure virtual
+
+ +

Implements Reaction.

+ +

Implemented in TickReaction, and StreamReaction.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs/generated/docs/class_untimed_reaction.js b/docs/generated/docs/class_untimed_reaction.js new file mode 100644 index 0000000..6beab85 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction.js @@ -0,0 +1,8 @@ +var class_untimed_reaction = +[ + [ "UntimedReaction", "class_untimed_reaction.html#a1e33cb5f40db3c477f0a476d63999770", null ], + [ "~UntimedReaction", "class_untimed_reaction.html#acd2ff1b448599949c3ad1d2e80b23507", null ], + [ "add", "class_untimed_reaction.html#aaf8d78a83d9c8174a2e069cb6279a793", null ], + [ "remove", "class_untimed_reaction.html#a52cdd4974e63425e6db056a50c9a51d6", null ], + [ "tick", "class_untimed_reaction.html#a803aa29ba1f5d9f0312d71e09ee83f15", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/class_untimed_reaction__coll__graph.map b/docs/generated/docs/class_untimed_reaction__coll__graph.map new file mode 100644 index 0000000..67afebf --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/generated/docs/class_untimed_reaction__coll__graph.md5 b/docs/generated/docs/class_untimed_reaction__coll__graph.md5 new file mode 100644 index 0000000..806a637 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction__coll__graph.md5 @@ -0,0 +1 @@ +72fe3a7ed0cff140e93b488c0c4028ae \ No newline at end of file diff --git a/docs/generated/docs/class_untimed_reaction__coll__graph.svg b/docs/generated/docs/class_untimed_reaction__coll__graph.svg new file mode 100644 index 0000000..bf6dbe7 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +UntimedReaction + + +Node1 + + +UntimedReaction + + + + + +Node2 + + +Reaction + + + + + +Node2->Node1 + + + + + diff --git a/docs/generated/docs/class_untimed_reaction__inherit__graph.map b/docs/generated/docs/class_untimed_reaction__inherit__graph.map new file mode 100644 index 0000000..b32e7b4 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/generated/docs/class_untimed_reaction__inherit__graph.md5 b/docs/generated/docs/class_untimed_reaction__inherit__graph.md5 new file mode 100644 index 0000000..c1b3d52 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction__inherit__graph.md5 @@ -0,0 +1 @@ +edcd70e351b72bf0a61349655ee5dddc \ No newline at end of file diff --git a/docs/generated/docs/class_untimed_reaction__inherit__graph.svg b/docs/generated/docs/class_untimed_reaction__inherit__graph.svg new file mode 100644 index 0000000..91c0417 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction__inherit__graph.svg @@ -0,0 +1,66 @@ + + + + + + +UntimedReaction + + +Node1 + + +UntimedReaction + + + + + +Node3 + + +StreamReaction + + + + + +Node1->Node3 + + + + + +Node4 + + +TickReaction + + + + + +Node1->Node4 + + + + + +Node2 + + +Reaction + + + + + +Node2->Node1 + + + + + diff --git a/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.map b/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.map new file mode 100644 index 0000000..d10a4b5 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.md5 b/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.md5 new file mode 100644 index 0000000..b163ff7 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.md5 @@ -0,0 +1 @@ +39ea5a48e3be9240a9dc2ff09a9465e4 \ No newline at end of file diff --git a/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.svg b/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.svg new file mode 100644 index 0000000..a10fc67 --- /dev/null +++ b/docs/generated/docs/class_untimed_reaction_aaf8d78a83d9c8174a2e069cb6279a793_icgraph.svg @@ -0,0 +1,51 @@ + + + + + + +UntimedReaction::add + + +Node1 + + +UntimedReaction::add + + + + + +Node2 + + +ReactESP::onAvailable + + + + + +Node1->Node2 + + + + + +Node3 + + +ReactESP::onTick + + + + + +Node1->Node3 + + + + + diff --git a/docs/generated/docs/classes.html b/docs/generated/docs/classes.html new file mode 100644 index 0000000..e752de2 --- /dev/null +++ b/docs/generated/docs/classes.html @@ -0,0 +1,127 @@ + + + + + + + +ReactESP: Class Index + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
D | I | R | S | T | U
+ +
+
+ + + + diff --git a/docs/generated/docs/closed.png b/docs/generated/docs/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/docs/generated/docs/closed.png differ diff --git a/docs/generated/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/generated/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..46e5fb4 --- /dev/null +++ b/docs/generated/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,117 @@ + + + + + + + +ReactESP: src Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
src Directory Reference
+
+
+ + + + + + + + +

+Files

file  main.cpp [code]
 
file  ReactESP.cpp [code]
 
file  ReactESP.h [code]
 
+
+
+ + + + diff --git a/docs/generated/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/docs/generated/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..bf3a1bc --- /dev/null +++ b/docs/generated/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,6 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "main.cpp", "main_8cpp.html", "main_8cpp" ], + [ "ReactESP.cpp", "_react_e_s_p_8cpp.html", "_react_e_s_p_8cpp" ], + [ "ReactESP.h", "_react_e_s_p_8h.html", "_react_e_s_p_8h" ] +]; \ No newline at end of file diff --git a/docs/generated/docs/doc.png b/docs/generated/docs/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/generated/docs/doc.png differ diff --git a/docs/generated/docs/doxygen.css b/docs/generated/docs/doxygen.css new file mode 100644 index 0000000..ffbff02 --- /dev/null +++ b/docs/generated/docs/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs/generated/docs/doxygen.svg b/docs/generated/docs/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/docs/generated/docs/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/generated/docs/dynsections.js b/docs/generated/docs/dynsections.js new file mode 100644 index 0000000..88f2c27 --- /dev/null +++ b/docs/generated/docs/dynsections.js @@ -0,0 +1,128 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +ReactESP: File List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 12]
+ + + + +
  src
 main.cpp
 ReactESP.cpp
 ReactESP.h
+
+
+
+ + + + diff --git a/docs/generated/docs/files_dup.js b/docs/generated/docs/files_dup.js new file mode 100644 index 0000000..c3b39c4 --- /dev/null +++ b/docs/generated/docs/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/docs/generated/docs/folderclosed.png b/docs/generated/docs/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/docs/generated/docs/folderclosed.png differ diff --git a/docs/generated/docs/folderopen.png b/docs/generated/docs/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/docs/generated/docs/folderopen.png differ diff --git a/docs/generated/docs/functions.html b/docs/generated/docs/functions.html new file mode 100644 index 0000000..c26c5c1 --- /dev/null +++ b/docs/generated/docs/functions.html @@ -0,0 +1,275 @@ + + + + + + + +ReactESP: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- ~ -

+
+
+ + + + diff --git a/docs/generated/docs/functions_func.html b/docs/generated/docs/functions_func.html new file mode 100644 index 0000000..189fd42 --- /dev/null +++ b/docs/generated/docs/functions_func.html @@ -0,0 +1,243 @@ + + + + + + + +ReactESP: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- d -

+ + +

- g -

+ + +

- i -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- ~ -

+
+
+ + + + diff --git a/docs/generated/docs/functions_rela.html b/docs/generated/docs/functions_rela.html new file mode 100644 index 0000000..5e052a8 --- /dev/null +++ b/docs/generated/docs/functions_rela.html @@ -0,0 +1,119 @@ + + + + + + + +ReactESP: Class Members - Related Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs/generated/docs/functions_vars.html b/docs/generated/docs/functions_vars.html new file mode 100644 index 0000000..2c083bc --- /dev/null +++ b/docs/generated/docs/functions_vars.html @@ -0,0 +1,119 @@ + + + + + + + +ReactESP: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs/generated/docs/globals.html b/docs/generated/docs/globals.html new file mode 100644 index 0000000..94ef9c9 --- /dev/null +++ b/docs/generated/docs/globals.html @@ -0,0 +1,128 @@ + + + + + + + +ReactESP: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+
+ + + + diff --git a/docs/generated/docs/globals_defs.html b/docs/generated/docs/globals_defs.html new file mode 100644 index 0000000..0566459 --- /dev/null +++ b/docs/generated/docs/globals_defs.html @@ -0,0 +1,107 @@ + + + + + + + +ReactESP: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs/generated/docs/globals_func.html b/docs/generated/docs/globals_func.html new file mode 100644 index 0000000..cd89c70 --- /dev/null +++ b/docs/generated/docs/globals_func.html @@ -0,0 +1,113 @@ + + + + + + + +ReactESP: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs/generated/docs/globals_type.html b/docs/generated/docs/globals_type.html new file mode 100644 index 0000000..14c8ff7 --- /dev/null +++ b/docs/generated/docs/globals_type.html @@ -0,0 +1,110 @@ + + + + + + + +ReactESP: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs/generated/docs/globals_vars.html b/docs/generated/docs/globals_vars.html new file mode 100644 index 0000000..4668bc1 --- /dev/null +++ b/docs/generated/docs/globals_vars.html @@ -0,0 +1,110 @@ + + + + + + + +ReactESP: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs/generated/docs/graph_legend.html b/docs/generated/docs/graph_legend.html new file mode 100644 index 0000000..470eff3 --- /dev/null +++ b/docs/generated/docs/graph_legend.html @@ -0,0 +1,166 @@ + + + + + + + +ReactESP: Graph Legend + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/docs/generated/docs/graph_legend.md5 b/docs/generated/docs/graph_legend.md5 new file mode 100644 index 0000000..5eb5d7e --- /dev/null +++ b/docs/generated/docs/graph_legend.md5 @@ -0,0 +1 @@ +4bd89fcedc1a2fed970f477be8ea7616 \ No newline at end of file diff --git a/docs/generated/docs/graph_legend.svg b/docs/generated/docs/graph_legend.svg new file mode 100644 index 0000000..b2da8b9 --- /dev/null +++ b/docs/generated/docs/graph_legend.svg @@ -0,0 +1,116 @@ + + + + + + +Graph Legend + + +Node9 + +Inherited + + + +Node10 + +PublicBase + + + +Node10->Node9 + + + + + +Node11 + +Truncated + + + +Node11->Node10 + + + + + +Node13 + +ProtectedBase + + + +Node13->Node9 + + + + + +Node14 + +PrivateBase + + + +Node14->Node9 + + + + + +Node15 + +Undocumented + + + +Node15->Node9 + + + + + +Node16 + +Templ< int > + + + +Node16->Node9 + + + + + +Node17 + +Templ< T > + + + +Node17->Node16 + + +< int > + + + +Node18 + +Used + + + +Node18->Node9 + + +m_usedClass + + + diff --git a/docs/generated/docs/hierarchy.html b/docs/generated/docs/hierarchy.html new file mode 100644 index 0000000..f6d3cd6 --- /dev/null +++ b/docs/generated/docs/hierarchy.html @@ -0,0 +1,122 @@ + + + + + + + +ReactESP: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + +
 CReactESPMain class of a ReactESP program
 CReactionReactions are code to be called when a given condition is fulfilled
 CISRReactionReaction that is triggered on an input pin change
 CTimedReactionTimedReactions are called based on elapsing of time
 CDelayReactionReaction that is triggered after a certain time delay
 CRepeatReactionReaction that is triggered repeatedly
 CUntimedReactionReactions that are triggered based on something else than time
 CStreamReactionReaction that is triggered when there is input available at the given Arduino Stream
 CTickReactionReaction that is triggered unconditionally at each execution loop
 CTriggerTimeCompare
+
+
+
+ + + + diff --git a/docs/generated/docs/hierarchy.js b/docs/generated/docs/hierarchy.js new file mode 100644 index 0000000..e0a6fd1 --- /dev/null +++ b/docs/generated/docs/hierarchy.js @@ -0,0 +1,16 @@ +var hierarchy = +[ + [ "ReactESP", "class_react_e_s_p.html", null ], + [ "Reaction", "class_reaction.html", [ + [ "ISRReaction", "class_i_s_r_reaction.html", null ], + [ "TimedReaction", "class_timed_reaction.html", [ + [ "DelayReaction", "class_delay_reaction.html", null ], + [ "RepeatReaction", "class_repeat_reaction.html", null ] + ] ], + [ "UntimedReaction", "class_untimed_reaction.html", [ + [ "StreamReaction", "class_stream_reaction.html", null ], + [ "TickReaction", "class_tick_reaction.html", null ] + ] ] + ] ], + [ "TriggerTimeCompare", "struct_trigger_time_compare.html", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/index.html b/docs/generated/docs/index.html new file mode 100644 index 0000000..563280a --- /dev/null +++ b/docs/generated/docs/index.html @@ -0,0 +1,106 @@ + + + + + + + +ReactESP: Main Page + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ReactESP Documentation
+
+
+
+
+ + + + diff --git a/docs/generated/docs/inherit_graph_0.map b/docs/generated/docs/inherit_graph_0.map new file mode 100644 index 0000000..6847ae6 --- /dev/null +++ b/docs/generated/docs/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/generated/docs/inherit_graph_0.md5 b/docs/generated/docs/inherit_graph_0.md5 new file mode 100644 index 0000000..6b572c2 --- /dev/null +++ b/docs/generated/docs/inherit_graph_0.md5 @@ -0,0 +1 @@ +11aa96855da99383db57ddd5a5b1100f \ No newline at end of file diff --git a/docs/generated/docs/inherit_graph_0.svg b/docs/generated/docs/inherit_graph_0.svg new file mode 100644 index 0000000..d218032 --- /dev/null +++ b/docs/generated/docs/inherit_graph_0.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +ReactESP + + + + + diff --git a/docs/generated/docs/inherit_graph_1.map b/docs/generated/docs/inherit_graph_1.map new file mode 100644 index 0000000..6897ef1 --- /dev/null +++ b/docs/generated/docs/inherit_graph_1.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/generated/docs/inherit_graph_1.md5 b/docs/generated/docs/inherit_graph_1.md5 new file mode 100644 index 0000000..31a86a7 --- /dev/null +++ b/docs/generated/docs/inherit_graph_1.md5 @@ -0,0 +1 @@ +a1e3129cea70dc8c9e90d4e033561ea6 \ No newline at end of file diff --git a/docs/generated/docs/inherit_graph_1.svg b/docs/generated/docs/inherit_graph_1.svg new file mode 100644 index 0000000..07941b3 --- /dev/null +++ b/docs/generated/docs/inherit_graph_1.svg @@ -0,0 +1,126 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Reaction + + + + + +Node1 + + +ISRReaction + + + + + +Node0->Node1 + + + + + +Node2 + + +TimedReaction + + + + + +Node0->Node2 + + + + + +Node5 + + +UntimedReaction + + + + + +Node0->Node5 + + + + + +Node3 + + +DelayReaction + + + + + +Node2->Node3 + + + + + +Node4 + + +RepeatReaction + + + + + +Node2->Node4 + + + + + +Node6 + + +StreamReaction + + + + + +Node5->Node6 + + + + + +Node7 + + +TickReaction + + + + + +Node5->Node7 + + + + + diff --git a/docs/generated/docs/inherit_graph_2.map b/docs/generated/docs/inherit_graph_2.map new file mode 100644 index 0000000..43c14b9 --- /dev/null +++ b/docs/generated/docs/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/generated/docs/inherit_graph_2.md5 b/docs/generated/docs/inherit_graph_2.md5 new file mode 100644 index 0000000..ba9257a --- /dev/null +++ b/docs/generated/docs/inherit_graph_2.md5 @@ -0,0 +1 @@ +ba8c9c72b0da5cb0c4b85eee6ca12f32 \ No newline at end of file diff --git a/docs/generated/docs/inherit_graph_2.svg b/docs/generated/docs/inherit_graph_2.svg new file mode 100644 index 0000000..709e4ef --- /dev/null +++ b/docs/generated/docs/inherit_graph_2.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +TriggerTimeCompare + + + + + diff --git a/docs/generated/docs/inherits.html b/docs/generated/docs/inherits.html new file mode 100644 index 0000000..eba6821 --- /dev/null +++ b/docs/generated/docs/inherits.html @@ -0,0 +1,116 @@ + + + + + + + +ReactESP: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + +
+
+
+
+
+
+ + + + diff --git a/docs/generated/docs/jquery.js b/docs/generated/docs/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/docs/generated/docs/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/generated/docs/main_8cpp.html b/docs/generated/docs/main_8cpp.html new file mode 100644 index 0000000..bb481c7 --- /dev/null +++ b/docs/generated/docs/main_8cpp.html @@ -0,0 +1,217 @@ + + + + + + + +ReactESP: src/main.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
main.cpp File Reference
+
+
+
#include <Arduino.h>
+#include <ReactESP.h>
+
+Include dependency graph for main.cpp:
+
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Macros

#define IO_REPEAT_DELAY   200
 
+ + + +

+Functions

void ICACHE_RAM_ATTR isr ()
 
+ + + + + +

+Variables

volatile int ticks = 0
 
ReactESP app ([]() { Serial.begin(115200);pinMode(LED_PIN, OUTPUT);pinMode(INPUT_PIN, INPUT_PULLUP);app.onRepeatMicros(IO_REPEAT_DELAY, []() { static bool state=false;digitalWrite(LED_PIN, state);state=!state;});app.onInterrupt(INPUT_PIN, RISING, &isr);app.onRepeat(1000, []() { uint64_t now=micros64();uint32_t now_high=now >> 32;uint32_t now_low=now &0xffffffff;Serial.printf("Ticks: %d %08X %08X\n", ticks, now_high, now_low);ticks=0;});pinMode(OUTPUT_PIN, OUTPUT);app.onRepeat(20, []() { digitalWrite(OUTPUT_PIN, !digitalRead(OUTPUT_PIN));});Serial.println("First");Serial.println("Second");})
 
+

Macro Definition Documentation

+ +

◆ IO_REPEAT_DELAY

+ +
+
+ + + + +
#define IO_REPEAT_DELAY   200
+
+ +

Definition at line 14 of file main.cpp.

+ +
+
+

Function Documentation

+ +

◆ isr()

+ +
+
+ + + + + + + +
void ICACHE_RAM_ATTR isr ()
+
+ +

Definition at line 18 of file main.cpp.

+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Variable Documentation

+ +

◆ app

+ +
+
+ + + + + + + + +
ReactESP app([]() { Serial.begin(115200);pinMode(LED_PIN, OUTPUT);pinMode(INPUT_PIN, INPUT_PULLUP);app.onRepeatMicros(IO_REPEAT_DELAY,[]() { static bool state=false; digitalWrite(LED_PIN, state); state=!state; }); app.onInterrupt(INPUT_PIN, RISING, &isr);app.onRepeat(1000,[]() { uint64_t now=micros64(); uint32_t now_high=now >> 32; uint32_t now_low=now &0xffffffff; Serial.printf("Ticks: %d %08X %08X\n", ticks, now_high, now_low); ticks=0; });pinMode(OUTPUT_PIN, OUTPUT);app.onRepeat(20,[]() { digitalWrite(OUTPUT_PIN, !digitalRead(OUTPUT_PIN)); });Serial.println("First");Serial.println("Second");}) ([] () { Serial.begin(115200);pinMode(LED_PIN, OUTPUT);pinMode(INPUT_PIN, INPUT_PULLUP);app.onRepeatMicros(IO_REPEAT_DELAY, []() { static bool state=false;digitalWrite(LED_PIN, state);state=!state;});app.onInterrupt(INPUT_PIN, RISING, &isr);app.onRepeat(1000, []() { uint64_t now=micros64();uint32_t now_high=now >> 32;uint32_t now_low=now &0xffffffff;Serial.printf("Ticks: %d %08X %08X\n", ticks, now_high, now_low);ticks=0;});pinMode(OUTPUT_PIN, OUTPUT);app.onRepeat(20, []() { digitalWrite(OUTPUT_PIN, !digitalRead(OUTPUT_PIN));});Serial.println("First");Serial.println("Second");} )
+
+ +
+
+ +

◆ ticks

+ +
+
+ + + + +
volatile int ticks = 0
+
+ +

Definition at line 16 of file main.cpp.

+ +
+
+
+
+ + + + diff --git a/docs/generated/docs/main_8cpp.js b/docs/generated/docs/main_8cpp.js new file mode 100644 index 0000000..af96585 --- /dev/null +++ b/docs/generated/docs/main_8cpp.js @@ -0,0 +1,7 @@ +var main_8cpp = +[ + [ "IO_REPEAT_DELAY", "main_8cpp.html#ad64fdff6a92cd05ce2adf27c0adaf065", null ], + [ "isr", "main_8cpp.html#aa6359e12c4743a5b1888ac194c199674", null ], + [ "app", "main_8cpp.html#a3bac9e7c19af67b87759d88b0701dccd", null ], + [ "ticks", "main_8cpp.html#ab97230fdf86fd49a50dbcc8e44fdf9cc", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/main_8cpp__incl.map b/docs/generated/docs/main_8cpp__incl.map new file mode 100644 index 0000000..6005723 --- /dev/null +++ b/docs/generated/docs/main_8cpp__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/generated/docs/main_8cpp__incl.md5 b/docs/generated/docs/main_8cpp__incl.md5 new file mode 100644 index 0000000..5195ca0 --- /dev/null +++ b/docs/generated/docs/main_8cpp__incl.md5 @@ -0,0 +1 @@ +c6f1f45dc6e0c7a74d352d5be06d373f \ No newline at end of file diff --git a/docs/generated/docs/main_8cpp__incl.svg b/docs/generated/docs/main_8cpp__incl.svg new file mode 100644 index 0000000..0a60668 --- /dev/null +++ b/docs/generated/docs/main_8cpp__incl.svg @@ -0,0 +1,102 @@ + + + + + + +src/main.cpp + + +Node1 + + +src/main.cpp + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + +Node3 + + +ReactESP.h + + + + + +Node1->Node3 + + + + + +Node3->Node2 + + + + + +Node4 + + +forward_list + + + + + +Node3->Node4 + + + + + +Node5 + + +functional + + + + + +Node3->Node5 + + + + + +Node6 + + +queue + + + + + +Node3->Node6 + + + + + diff --git a/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.map b/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.map new file mode 100644 index 0000000..19f0942 --- /dev/null +++ b/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.md5 b/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.md5 new file mode 100644 index 0000000..ae115b8 --- /dev/null +++ b/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.md5 @@ -0,0 +1 @@ +fabb3ce237c2398fde5acf054d064bdf \ No newline at end of file diff --git a/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.svg b/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.svg new file mode 100644 index 0000000..90d54de --- /dev/null +++ b/docs/generated/docs/main_8cpp_aa6359e12c4743a5b1888ac194c199674_icgraph.svg @@ -0,0 +1,51 @@ + + + + + + +isr + + +Node1 + + +isr + + + + + +Node2 + + +ISRReaction::add + + + + + +Node1->Node2 + + + + + +Node3 + + +ReactESP::onInterrupt + + + + + +Node2->Node3 + + + + + diff --git a/docs/generated/docs/main_8cpp_source.html b/docs/generated/docs/main_8cpp_source.html new file mode 100644 index 0000000..6d8054b --- /dev/null +++ b/docs/generated/docs/main_8cpp_source.html @@ -0,0 +1,167 @@ + + + + + + + +ReactESP: src/main.cpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
ReactESP +  0.3.1 +
+
Asynchronous programming for the ESP microcontrollers
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
main.cpp
+
+
+Go to the documentation of this file.
1 #include <Arduino.h>
+
2 #include <ReactESP.h>
+
3 
+
4 #ifdef ESP32
+
5 #define LED_PIN 2
+
6 #define INPUT_PIN 13
+
7 #define OUTPUT_PIN 15
+
8 #elif defined(ESP8266)
+
9 #define LED_PIN D2
+
10 #define INPUT_PIN D5
+
11 #define OUTPUT_PIN D4
+
12 #endif
+
13 
+
14 #define IO_REPEAT_DELAY 200
+
15 
+
16 volatile int ticks = 0;
+
17 
+
18 void ICACHE_RAM_ATTR isr() { ticks++; }
+
19 
+
20 ReactESP app([]() {
+
21  Serial.begin(115200);
+
22 
+
23  pinMode(LED_PIN, OUTPUT);
+
24  pinMode(INPUT_PIN, INPUT_PULLUP);
+
25 
+ +
27  static bool state = false;
+
28  digitalWrite(LED_PIN, state);
+
29  state = !state;
+
30  });
+
31 
+
32  // attachInterrupt(INPUT_PIN, &isr, FALLING);
+
33  app.onInterrupt(INPUT_PIN, RISING, &isr);
+
34 
+
35  app.onRepeat(1000, []() {
+
36  uint64_t now = micros64();
+
37  uint32_t now_high = now >> 32;
+
38  uint32_t now_low = now & 0xffffffff;
+
39  Serial.printf("Ticks: %d %08X %08X\n", ticks, now_high, now_low);
+
40  ticks = 0;
+
41  });
+
42 
+
43  pinMode(OUTPUT_PIN, OUTPUT);
+
44 
+
45  app.onRepeat(20, []() {
+
46  digitalWrite(OUTPUT_PIN, !digitalRead(OUTPUT_PIN));
+
47  });
+
48 
+
49  Serial.println("First");
+
50  Serial.println("Second");
+
51 });
+ +
Main class of a ReactESP program.
Definition: ReactESP.h:245
+
ISRReaction * onInterrupt(const uint8_t pin_number, int mode, const react_callback cb)
Create a new ISRReaction (interrupt reaction)
Definition: ReactESP.cpp:182
+
RepeatReaction * onRepeatMicros(const uint64_t t, const react_callback cb)
Create a new RepeatReaction.
Definition: ReactESP.cpp:169
+
RepeatReaction * onRepeat(const uint32_t t, const react_callback cb)
Create a new RepeatReaction.
Definition: ReactESP.cpp:163
+
ReactESP app([]() { Serial.begin(115200);pinMode(LED_PIN, OUTPUT);pinMode(INPUT_PIN, INPUT_PULLUP);app.onRepeatMicros(IO_REPEAT_DELAY, []() { static bool state=false;digitalWrite(LED_PIN, state);state=!state;});app.onInterrupt(INPUT_PIN, RISING, &isr);app.onRepeat(1000, []() { uint64_t now=micros64();uint32_t now_high=now >> 32;uint32_t now_low=now &0xffffffff;Serial.printf("Ticks: %d %08X %08X\n", ticks, now_high, now_low);ticks=0;});pinMode(OUTPUT_PIN, OUTPUT);app.onRepeat(20, []() { digitalWrite(OUTPUT_PIN, !digitalRead(OUTPUT_PIN));});Serial.println("First");Serial.println("Second");})
+
void ICACHE_RAM_ATTR isr()
Definition: main.cpp:18
+
volatile int ticks
Definition: main.cpp:16
+
#define IO_REPEAT_DELAY
Definition: main.cpp:14
+
+
+ + + + diff --git a/docs/generated/docs/menu.js b/docs/generated/docs/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/docs/generated/docs/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/generated/docs/menudata.js b/docs/generated/docs/menudata.js new file mode 100644 index 0000000..9face5c --- /dev/null +++ b/docs/generated/docs/menudata.js @@ -0,0 +1,66 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"o",url:"functions.html#index_o"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"~",url:"functions.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"u",url:"functions_func.html#index_u"}, +{text:"~",url:"functions_func.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Related Functions",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}, +{text:"Variables",url:"globals_vars.html"}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/docs/generated/docs/nav_f.png b/docs/generated/docs/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/docs/generated/docs/nav_f.png differ diff --git a/docs/generated/docs/nav_g.png b/docs/generated/docs/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/docs/generated/docs/nav_g.png differ diff --git a/docs/generated/docs/nav_h.png b/docs/generated/docs/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/docs/generated/docs/nav_h.png differ diff --git a/docs/generated/docs/navtree.css b/docs/generated/docs/navtree.css new file mode 100644 index 0000000..33341a6 --- /dev/null +++ b/docs/generated/docs/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/generated/docs/navtree.js b/docs/generated/docs/navtree.js new file mode 100644 index 0000000..1e272d3 --- /dev/null +++ b/docs/generated/docs/navtree.js @@ -0,0 +1,546 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/generated/docs/search/all_0.html b/docs/generated/docs/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/docs/generated/docs/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_0.js b/docs/generated/docs/search/all_0.js new file mode 100644 index 0000000..26446cf --- /dev/null +++ b/docs/generated/docs/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['add_0',['add',['../class_reaction.html#a349da2fef93c94095c264ead1f5ffcb8',1,'Reaction::add()'],['../class_timed_reaction.html#a163d0232141ebe0d446d853969766a69',1,'TimedReaction::add()'],['../class_untimed_reaction.html#aaf8d78a83d9c8174a2e069cb6279a793',1,'UntimedReaction::add()'],['../class_i_s_r_reaction.html#aba4a495b10cf265d41cbdb9790936072',1,'ISRReaction::add()']]], + ['app_1',['app',['../class_react_e_s_p.html#a0af13aed55f3b30703e027ff2d761774',1,'ReactESP::app()'],['../main_8cpp.html#a3bac9e7c19af67b87759d88b0701dccd',1,'app(): main.cpp']]] +]; diff --git a/docs/generated/docs/search/all_1.html b/docs/generated/docs/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/docs/generated/docs/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_1.js b/docs/generated/docs/search/all_1.js new file mode 100644 index 0000000..880fda6 --- /dev/null +++ b/docs/generated/docs/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['callback_2',['callback',['../class_reaction.html#a13fdfc7eef62041f7394eac1f0b53978',1,'Reaction']]] +]; diff --git a/docs/generated/docs/search/all_2.html b/docs/generated/docs/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/docs/generated/docs/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_2.js b/docs/generated/docs/search/all_2.js new file mode 100644 index 0000000..278a0c6 --- /dev/null +++ b/docs/generated/docs/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['delayreaction_3',['DelayReaction',['../class_delay_reaction.html',1,'DelayReaction'],['../class_delay_reaction.html#ab8cabba2391d4f4d836f4f060425ddb0',1,'DelayReaction::DelayReaction(const uint32_t delay, const react_callback callback)'],['../class_delay_reaction.html#a27b07f8afc197ac54b6192c411d7e50b',1,'DelayReaction::DelayReaction(const uint64_t delay, const react_callback callback)']]] +]; diff --git a/docs/generated/docs/search/all_3.html b/docs/generated/docs/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/docs/generated/docs/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_3.js b/docs/generated/docs/search/all_3.js new file mode 100644 index 0000000..fac6615 --- /dev/null +++ b/docs/generated/docs/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['enabled_4',['enabled',['../class_timed_reaction.html#ae4c582a52e93db97646f8fbb0bb1b909',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/all_4.html b/docs/generated/docs/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/docs/generated/docs/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_4.js b/docs/generated/docs/search/all_4.js new file mode 100644 index 0000000..5c34f80 --- /dev/null +++ b/docs/generated/docs/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gettriggertime_5',['getTriggerTime',['../class_timed_reaction.html#ac419476db7b8b64c6b13ff62334a95ad',1,'TimedReaction']]], + ['gettriggertimemicros_6',['getTriggerTimeMicros',['../class_timed_reaction.html#a4ff15ba9b01cc69b045aac06b896404c',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/all_5.html b/docs/generated/docs/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/docs/generated/docs/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_5.js b/docs/generated/docs/search/all_5.js new file mode 100644 index 0000000..258bc7d --- /dev/null +++ b/docs/generated/docs/search/all_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['interval_7',['interval',['../class_timed_reaction.html#ad4a692b89c47ea51055534e8286532fa',1,'TimedReaction']]], + ['io_5frepeat_5fdelay_8',['IO_REPEAT_DELAY',['../main_8cpp.html#ad64fdff6a92cd05ce2adf27c0adaf065',1,'main.cpp']]], + ['isenabled_9',['isEnabled',['../class_timed_reaction.html#af42d731961b6abcd508b48f4e007ebcf',1,'TimedReaction']]], + ['isr_10',['isr',['../main_8cpp.html#aa6359e12c4743a5b1888ac194c199674',1,'main.cpp']]], + ['isr_5freact_5fcallback_11',['isr_react_callback',['../_react_e_s_p_8h.html#a67b5c9351881150cba489e7594e0c976',1,'ReactESP.h']]], + ['isrreaction_12',['ISRReaction',['../class_i_s_r_reaction.html',1,'ISRReaction'],['../class_react_e_s_p.html#a6181e312f42c9b243cf44b38fe310269',1,'ReactESP::ISRReaction()'],['../class_i_s_r_reaction.html#a675599c657aa6aae62a1bc08510edfe5',1,'ISRReaction::ISRReaction()']]] +]; diff --git a/docs/generated/docs/search/all_6.html b/docs/generated/docs/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/docs/generated/docs/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_6.js b/docs/generated/docs/search/all_6.js new file mode 100644 index 0000000..febd68a --- /dev/null +++ b/docs/generated/docs/search/all_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['last_5ftrigger_5ftime_13',['last_trigger_time',['../class_timed_reaction.html#a403ac811efb47fc24aae688b83309540',1,'TimedReaction']]], + ['loop_14',['loop',['../_react_e_s_p_8cpp.html#a0b33edabd7f1c4e4a0bf32c67269be2f',1,'ReactESP.cpp']]] +]; diff --git a/docs/generated/docs/search/all_7.html b/docs/generated/docs/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/docs/generated/docs/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_7.js b/docs/generated/docs/search/all_7.js new file mode 100644 index 0000000..f217d55 --- /dev/null +++ b/docs/generated/docs/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2ecpp_15',['main.cpp',['../main_8cpp.html',1,'']]] +]; diff --git a/docs/generated/docs/search/all_8.html b/docs/generated/docs/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/docs/generated/docs/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_8.js b/docs/generated/docs/search/all_8.js new file mode 100644 index 0000000..36ddacc --- /dev/null +++ b/docs/generated/docs/search/all_8.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['onavailable_16',['onAvailable',['../class_react_e_s_p.html#a831c11dd7f1a6e15d70785c3a990df93',1,'ReactESP']]], + ['ondelay_17',['onDelay',['../class_react_e_s_p.html#ab26769ff3e426972e87746749560ffc0',1,'ReactESP']]], + ['ondelaymicros_18',['onDelayMicros',['../class_react_e_s_p.html#ad5739bf0fedb24931f98762113161e95',1,'ReactESP']]], + ['oninterrupt_19',['onInterrupt',['../class_react_e_s_p.html#a02ce0511803b0d3a1fcec6bc56ff8b3f',1,'ReactESP']]], + ['onrepeat_20',['onRepeat',['../class_react_e_s_p.html#adb20144bde6e60b41e484d2f6f61d0f5',1,'ReactESP']]], + ['onrepeatmicros_21',['onRepeatMicros',['../class_react_e_s_p.html#a2a7018e7a5e89634e8e4385be51eafd4',1,'ReactESP']]], + ['ontick_22',['onTick',['../class_react_e_s_p.html#a7da68d41f2a9790ab1aec2610bad07eb',1,'ReactESP']]], + ['operator_28_29_23',['operator()',['../struct_trigger_time_compare.html#a8c43f2a1e90a47ea77876a76522ced21',1,'TriggerTimeCompare']]], + ['operator_3c_24',['operator<',['../class_timed_reaction.html#a431489308733484afc1f3b6b80289be1',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/all_9.html b/docs/generated/docs/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/docs/generated/docs/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_9.js b/docs/generated/docs/search/all_9.js new file mode 100644 index 0000000..07ecdb7 --- /dev/null +++ b/docs/generated/docs/search/all_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['react_5fcallback_25',['react_callback',['../_react_e_s_p_8h.html#aced18b35574cdf9238eeb6d2c997db7f',1,'ReactESP.h']]], + ['reactesp_26',['ReactESP',['../class_react_e_s_p.html',1,'ReactESP'],['../class_react_e_s_p.html#a5dafe71a8c9c2834c5c34cc86b820c9a',1,'ReactESP::ReactESP()']]], + ['reactesp_2ecpp_27',['ReactESP.cpp',['../_react_e_s_p_8cpp.html',1,'']]], + ['reactesp_2eh_28',['ReactESP.h',['../_react_e_s_p_8h.html',1,'']]], + ['reaction_29',['Reaction',['../class_reaction.html',1,'Reaction'],['../class_react_e_s_p.html#a5f86463029cca47f8aa15ff8cd5b9e51',1,'ReactESP::Reaction()'],['../class_reaction.html#aea66093d451e22677190c38176b9fe40',1,'Reaction::Reaction(react_callback callback)']]], + ['remove_30',['remove',['../class_reaction.html#af88faf9664340633d6cc5f913ab4e105',1,'Reaction::remove()'],['../class_timed_reaction.html#acac370ae042f0561beecf528551ccad9',1,'TimedReaction::remove()'],['../class_untimed_reaction.html#a52cdd4974e63425e6db056a50c9a51d6',1,'UntimedReaction::remove()'],['../class_i_s_r_reaction.html#a6470d8b82a5066562ad9a2e169ea19b8',1,'ISRReaction::remove()']]], + ['repeatreaction_31',['RepeatReaction',['../class_repeat_reaction.html',1,'RepeatReaction'],['../class_react_e_s_p.html#a539b4fe2115897ce16658443ea39f348',1,'ReactESP::RepeatReaction()'],['../class_repeat_reaction.html#a68c6ea9ade842d93ef967d977937f683',1,'RepeatReaction::RepeatReaction(const uint32_t interval, const react_callback callback)'],['../class_repeat_reaction.html#a5b53f55d5b252708eb2348c4c3a55868',1,'RepeatReaction::RepeatReaction(const uint64_t interval, const react_callback callback)']]] +]; diff --git a/docs/generated/docs/search/all_a.html b/docs/generated/docs/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/docs/generated/docs/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_a.js b/docs/generated/docs/search/all_a.js new file mode 100644 index 0000000..8d5892e --- /dev/null +++ b/docs/generated/docs/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['setup_32',['setup',['../class_react_e_s_p.html#aa26556a0954d117dc5b8d925e5924cdf',1,'ReactESP::setup()'],['../_react_e_s_p_8cpp.html#a7dfd9b79bc5a37d7df40207afbc5431f',1,'setup(void): ReactESP.cpp']]], + ['streamreaction_33',['StreamReaction',['../class_stream_reaction.html',1,'StreamReaction'],['../class_stream_reaction.html#a902a27a4c687e6eac1255c4fad74bf17',1,'StreamReaction::StreamReaction()']]] +]; diff --git a/docs/generated/docs/search/all_b.html b/docs/generated/docs/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/docs/generated/docs/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_b.js b/docs/generated/docs/search/all_b.js new file mode 100644 index 0000000..c8cc554 --- /dev/null +++ b/docs/generated/docs/search/all_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['tick_34',['tick',['../class_reaction.html#a24cc0bd38eea8c50dd6718bb7a1c8051',1,'Reaction::tick()'],['../class_timed_reaction.html#a56eb9a737b11089358d34cc347f9fc7a',1,'TimedReaction::tick()'],['../class_delay_reaction.html#af2a85d71205ad1cbf5f6471f17e91a6f',1,'DelayReaction::tick()'],['../class_repeat_reaction.html#a2c05598c7a03d60ec1088db1da5d851d',1,'RepeatReaction::tick()'],['../class_untimed_reaction.html#a803aa29ba1f5d9f0312d71e09ee83f15',1,'UntimedReaction::tick()'],['../class_stream_reaction.html#aa874d5cc82b5392075da1262e318a703',1,'StreamReaction::tick()'],['../class_tick_reaction.html#aa4e6419363cef721057c990111542b93',1,'TickReaction::tick()'],['../class_i_s_r_reaction.html#aab332af06426b145d73c1b46b4d7c3fd',1,'ISRReaction::tick()'],['../class_react_e_s_p.html#aeefac464d9df930d020a321a63cdcf4b',1,'ReactESP::tick()']]], + ['tickreaction_35',['TickReaction',['../class_tick_reaction.html',1,'TickReaction'],['../class_tick_reaction.html#a0928c0693f10acec61157027dd4658fe',1,'TickReaction::TickReaction()']]], + ['ticks_36',['ticks',['../main_8cpp.html#ab97230fdf86fd49a50dbcc8e44fdf9cc',1,'main.cpp']]], + ['timedreaction_37',['TimedReaction',['../class_timed_reaction.html',1,'TimedReaction'],['../class_react_e_s_p.html#af650768845083eb3a0ec1493679bd20d',1,'ReactESP::TimedReaction()'],['../class_timed_reaction.html#af1653cd9ff0b545e95baec51cde2743c',1,'TimedReaction::TimedReaction(const uint32_t interval, const react_callback callback)'],['../class_timed_reaction.html#a4a775a7624ba511ae80016e14b8d88f5',1,'TimedReaction::TimedReaction(const uint64_t interval, const react_callback callback)']]], + ['triggertimecompare_38',['TriggerTimeCompare',['../struct_trigger_time_compare.html',1,'']]] +]; diff --git a/docs/generated/docs/search/all_c.html b/docs/generated/docs/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/docs/generated/docs/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_c.js b/docs/generated/docs/search/all_c.js new file mode 100644 index 0000000..8dda3bd --- /dev/null +++ b/docs/generated/docs/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['untimedreaction_39',['UntimedReaction',['../class_untimed_reaction.html',1,'UntimedReaction'],['../class_react_e_s_p.html#ab45ae4a88e6fcc0191e9f4d682bc34ad',1,'ReactESP::UntimedReaction()'],['../class_untimed_reaction.html#a1e33cb5f40db3c477f0a476d63999770',1,'UntimedReaction::UntimedReaction()']]] +]; diff --git a/docs/generated/docs/search/all_d.html b/docs/generated/docs/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/docs/generated/docs/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/all_d.js b/docs/generated/docs/search/all_d.js new file mode 100644 index 0000000..def8a26 --- /dev/null +++ b/docs/generated/docs/search/all_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7edelayreaction_40',['~DelayReaction',['../class_delay_reaction.html#a50777489f0975d07a81c39c0638d1a7e',1,'DelayReaction']]], + ['_7eisrreaction_41',['~ISRReaction',['../class_i_s_r_reaction.html#adca866ff1b4dd48450ab0076707221bd',1,'ISRReaction']]], + ['_7etimedreaction_42',['~TimedReaction',['../class_timed_reaction.html#a2f26edad67264a6c4f4da7d7ebfbb661',1,'TimedReaction']]], + ['_7euntimedreaction_43',['~UntimedReaction',['../class_untimed_reaction.html#acd2ff1b448599949c3ad1d2e80b23507',1,'UntimedReaction']]] +]; diff --git a/docs/generated/docs/search/classes_0.html b/docs/generated/docs/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/docs/generated/docs/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/classes_0.js b/docs/generated/docs/search/classes_0.js new file mode 100644 index 0000000..9454265 --- /dev/null +++ b/docs/generated/docs/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['delayreaction_44',['DelayReaction',['../class_delay_reaction.html',1,'']]] +]; diff --git a/docs/generated/docs/search/classes_1.html b/docs/generated/docs/search/classes_1.html new file mode 100644 index 0000000..576e916 --- /dev/null +++ b/docs/generated/docs/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/classes_1.js b/docs/generated/docs/search/classes_1.js new file mode 100644 index 0000000..2617673 --- /dev/null +++ b/docs/generated/docs/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isrreaction_45',['ISRReaction',['../class_i_s_r_reaction.html',1,'']]] +]; diff --git a/docs/generated/docs/search/classes_2.html b/docs/generated/docs/search/classes_2.html new file mode 100644 index 0000000..956405e --- /dev/null +++ b/docs/generated/docs/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/classes_2.js b/docs/generated/docs/search/classes_2.js new file mode 100644 index 0000000..cc84e14 --- /dev/null +++ b/docs/generated/docs/search/classes_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['reactesp_46',['ReactESP',['../class_react_e_s_p.html',1,'']]], + ['reaction_47',['Reaction',['../class_reaction.html',1,'']]], + ['repeatreaction_48',['RepeatReaction',['../class_repeat_reaction.html',1,'']]] +]; diff --git a/docs/generated/docs/search/classes_3.html b/docs/generated/docs/search/classes_3.html new file mode 100644 index 0000000..d33343b --- /dev/null +++ b/docs/generated/docs/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/classes_3.js b/docs/generated/docs/search/classes_3.js new file mode 100644 index 0000000..e1f82ca --- /dev/null +++ b/docs/generated/docs/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['streamreaction_49',['StreamReaction',['../class_stream_reaction.html',1,'']]] +]; diff --git a/docs/generated/docs/search/classes_4.html b/docs/generated/docs/search/classes_4.html new file mode 100644 index 0000000..8430b07 --- /dev/null +++ b/docs/generated/docs/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/classes_4.js b/docs/generated/docs/search/classes_4.js new file mode 100644 index 0000000..fb9569c --- /dev/null +++ b/docs/generated/docs/search/classes_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tickreaction_50',['TickReaction',['../class_tick_reaction.html',1,'']]], + ['timedreaction_51',['TimedReaction',['../class_timed_reaction.html',1,'']]], + ['triggertimecompare_52',['TriggerTimeCompare',['../struct_trigger_time_compare.html',1,'']]] +]; diff --git a/docs/generated/docs/search/classes_5.html b/docs/generated/docs/search/classes_5.html new file mode 100644 index 0000000..c2f1b76 --- /dev/null +++ b/docs/generated/docs/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/classes_5.js b/docs/generated/docs/search/classes_5.js new file mode 100644 index 0000000..adb203b --- /dev/null +++ b/docs/generated/docs/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['untimedreaction_53',['UntimedReaction',['../class_untimed_reaction.html',1,'']]] +]; diff --git a/docs/generated/docs/search/close.svg b/docs/generated/docs/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/docs/generated/docs/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/docs/generated/docs/search/defines_0.html b/docs/generated/docs/search/defines_0.html new file mode 100644 index 0000000..15cc3de --- /dev/null +++ b/docs/generated/docs/search/defines_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/defines_0.js b/docs/generated/docs/search/defines_0.js new file mode 100644 index 0000000..36544cf --- /dev/null +++ b/docs/generated/docs/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['io_5frepeat_5fdelay_101',['IO_REPEAT_DELAY',['../main_8cpp.html#ad64fdff6a92cd05ce2adf27c0adaf065',1,'main.cpp']]] +]; diff --git a/docs/generated/docs/search/files_0.html b/docs/generated/docs/search/files_0.html new file mode 100644 index 0000000..9498842 --- /dev/null +++ b/docs/generated/docs/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/files_0.js b/docs/generated/docs/search/files_0.js new file mode 100644 index 0000000..08fd254 --- /dev/null +++ b/docs/generated/docs/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2ecpp_54',['main.cpp',['../main_8cpp.html',1,'']]] +]; diff --git a/docs/generated/docs/search/files_1.html b/docs/generated/docs/search/files_1.html new file mode 100644 index 0000000..7050ef4 --- /dev/null +++ b/docs/generated/docs/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/files_1.js b/docs/generated/docs/search/files_1.js new file mode 100644 index 0000000..3fedccd --- /dev/null +++ b/docs/generated/docs/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reactesp_2ecpp_55',['ReactESP.cpp',['../_react_e_s_p_8cpp.html',1,'']]], + ['reactesp_2eh_56',['ReactESP.h',['../_react_e_s_p_8h.html',1,'']]] +]; diff --git a/docs/generated/docs/search/functions_0.html b/docs/generated/docs/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/docs/generated/docs/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_0.js b/docs/generated/docs/search/functions_0.js new file mode 100644 index 0000000..c5850a8 --- /dev/null +++ b/docs/generated/docs/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_57',['add',['../class_reaction.html#a349da2fef93c94095c264ead1f5ffcb8',1,'Reaction::add()'],['../class_timed_reaction.html#a163d0232141ebe0d446d853969766a69',1,'TimedReaction::add()'],['../class_untimed_reaction.html#aaf8d78a83d9c8174a2e069cb6279a793',1,'UntimedReaction::add()'],['../class_i_s_r_reaction.html#aba4a495b10cf265d41cbdb9790936072',1,'ISRReaction::add()']]] +]; diff --git a/docs/generated/docs/search/functions_1.html b/docs/generated/docs/search/functions_1.html new file mode 100644 index 0000000..ef4088b --- /dev/null +++ b/docs/generated/docs/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_1.js b/docs/generated/docs/search/functions_1.js new file mode 100644 index 0000000..ea389b7 --- /dev/null +++ b/docs/generated/docs/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['delayreaction_58',['DelayReaction',['../class_delay_reaction.html#ab8cabba2391d4f4d836f4f060425ddb0',1,'DelayReaction::DelayReaction(const uint32_t delay, const react_callback callback)'],['../class_delay_reaction.html#a27b07f8afc197ac54b6192c411d7e50b',1,'DelayReaction::DelayReaction(const uint64_t delay, const react_callback callback)']]] +]; diff --git a/docs/generated/docs/search/functions_2.html b/docs/generated/docs/search/functions_2.html new file mode 100644 index 0000000..ca5aa10 --- /dev/null +++ b/docs/generated/docs/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_2.js b/docs/generated/docs/search/functions_2.js new file mode 100644 index 0000000..b7acf3d --- /dev/null +++ b/docs/generated/docs/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gettriggertime_59',['getTriggerTime',['../class_timed_reaction.html#ac419476db7b8b64c6b13ff62334a95ad',1,'TimedReaction']]], + ['gettriggertimemicros_60',['getTriggerTimeMicros',['../class_timed_reaction.html#a4ff15ba9b01cc69b045aac06b896404c',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/functions_3.html b/docs/generated/docs/search/functions_3.html new file mode 100644 index 0000000..d79f55b --- /dev/null +++ b/docs/generated/docs/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_3.js b/docs/generated/docs/search/functions_3.js new file mode 100644 index 0000000..513ccae --- /dev/null +++ b/docs/generated/docs/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['isenabled_61',['isEnabled',['../class_timed_reaction.html#af42d731961b6abcd508b48f4e007ebcf',1,'TimedReaction']]], + ['isr_62',['isr',['../main_8cpp.html#aa6359e12c4743a5b1888ac194c199674',1,'main.cpp']]], + ['isrreaction_63',['ISRReaction',['../class_i_s_r_reaction.html#a675599c657aa6aae62a1bc08510edfe5',1,'ISRReaction']]] +]; diff --git a/docs/generated/docs/search/functions_4.html b/docs/generated/docs/search/functions_4.html new file mode 100644 index 0000000..1657cad --- /dev/null +++ b/docs/generated/docs/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_4.js b/docs/generated/docs/search/functions_4.js new file mode 100644 index 0000000..3a21c00 --- /dev/null +++ b/docs/generated/docs/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['loop_64',['loop',['../_react_e_s_p_8cpp.html#a0b33edabd7f1c4e4a0bf32c67269be2f',1,'ReactESP.cpp']]] +]; diff --git a/docs/generated/docs/search/functions_5.html b/docs/generated/docs/search/functions_5.html new file mode 100644 index 0000000..9301d6b --- /dev/null +++ b/docs/generated/docs/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_5.js b/docs/generated/docs/search/functions_5.js new file mode 100644 index 0000000..a0babe9 --- /dev/null +++ b/docs/generated/docs/search/functions_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['onavailable_65',['onAvailable',['../class_react_e_s_p.html#a831c11dd7f1a6e15d70785c3a990df93',1,'ReactESP']]], + ['ondelay_66',['onDelay',['../class_react_e_s_p.html#ab26769ff3e426972e87746749560ffc0',1,'ReactESP']]], + ['ondelaymicros_67',['onDelayMicros',['../class_react_e_s_p.html#ad5739bf0fedb24931f98762113161e95',1,'ReactESP']]], + ['oninterrupt_68',['onInterrupt',['../class_react_e_s_p.html#a02ce0511803b0d3a1fcec6bc56ff8b3f',1,'ReactESP']]], + ['onrepeat_69',['onRepeat',['../class_react_e_s_p.html#adb20144bde6e60b41e484d2f6f61d0f5',1,'ReactESP']]], + ['onrepeatmicros_70',['onRepeatMicros',['../class_react_e_s_p.html#a2a7018e7a5e89634e8e4385be51eafd4',1,'ReactESP']]], + ['ontick_71',['onTick',['../class_react_e_s_p.html#a7da68d41f2a9790ab1aec2610bad07eb',1,'ReactESP']]], + ['operator_28_29_72',['operator()',['../struct_trigger_time_compare.html#a8c43f2a1e90a47ea77876a76522ced21',1,'TriggerTimeCompare']]], + ['operator_3c_73',['operator<',['../class_timed_reaction.html#a431489308733484afc1f3b6b80289be1',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/functions_6.html b/docs/generated/docs/search/functions_6.html new file mode 100644 index 0000000..9c4f5fc --- /dev/null +++ b/docs/generated/docs/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_6.js b/docs/generated/docs/search/functions_6.js new file mode 100644 index 0000000..c0d88b8 --- /dev/null +++ b/docs/generated/docs/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['reactesp_74',['ReactESP',['../class_react_e_s_p.html#a5dafe71a8c9c2834c5c34cc86b820c9a',1,'ReactESP']]], + ['reaction_75',['Reaction',['../class_reaction.html#aea66093d451e22677190c38176b9fe40',1,'Reaction']]], + ['remove_76',['remove',['../class_reaction.html#af88faf9664340633d6cc5f913ab4e105',1,'Reaction::remove()'],['../class_timed_reaction.html#acac370ae042f0561beecf528551ccad9',1,'TimedReaction::remove()'],['../class_untimed_reaction.html#a52cdd4974e63425e6db056a50c9a51d6',1,'UntimedReaction::remove()'],['../class_i_s_r_reaction.html#a6470d8b82a5066562ad9a2e169ea19b8',1,'ISRReaction::remove()']]], + ['repeatreaction_77',['RepeatReaction',['../class_repeat_reaction.html#a68c6ea9ade842d93ef967d977937f683',1,'RepeatReaction::RepeatReaction(const uint32_t interval, const react_callback callback)'],['../class_repeat_reaction.html#a5b53f55d5b252708eb2348c4c3a55868',1,'RepeatReaction::RepeatReaction(const uint64_t interval, const react_callback callback)']]] +]; diff --git a/docs/generated/docs/search/functions_7.html b/docs/generated/docs/search/functions_7.html new file mode 100644 index 0000000..46b5c0f --- /dev/null +++ b/docs/generated/docs/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_7.js b/docs/generated/docs/search/functions_7.js new file mode 100644 index 0000000..8b17274 --- /dev/null +++ b/docs/generated/docs/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['setup_78',['setup',['../class_react_e_s_p.html#aa26556a0954d117dc5b8d925e5924cdf',1,'ReactESP::setup()'],['../_react_e_s_p_8cpp.html#a7dfd9b79bc5a37d7df40207afbc5431f',1,'setup(): ReactESP.cpp']]], + ['streamreaction_79',['StreamReaction',['../class_stream_reaction.html#a902a27a4c687e6eac1255c4fad74bf17',1,'StreamReaction']]] +]; diff --git a/docs/generated/docs/search/functions_8.html b/docs/generated/docs/search/functions_8.html new file mode 100644 index 0000000..31a1d95 --- /dev/null +++ b/docs/generated/docs/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_8.js b/docs/generated/docs/search/functions_8.js new file mode 100644 index 0000000..acb1397 --- /dev/null +++ b/docs/generated/docs/search/functions_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tick_80',['tick',['../class_reaction.html#a24cc0bd38eea8c50dd6718bb7a1c8051',1,'Reaction::tick()'],['../class_timed_reaction.html#a56eb9a737b11089358d34cc347f9fc7a',1,'TimedReaction::tick()'],['../class_delay_reaction.html#af2a85d71205ad1cbf5f6471f17e91a6f',1,'DelayReaction::tick()'],['../class_repeat_reaction.html#a2c05598c7a03d60ec1088db1da5d851d',1,'RepeatReaction::tick()'],['../class_untimed_reaction.html#a803aa29ba1f5d9f0312d71e09ee83f15',1,'UntimedReaction::tick()'],['../class_stream_reaction.html#aa874d5cc82b5392075da1262e318a703',1,'StreamReaction::tick()'],['../class_tick_reaction.html#aa4e6419363cef721057c990111542b93',1,'TickReaction::tick()'],['../class_i_s_r_reaction.html#aab332af06426b145d73c1b46b4d7c3fd',1,'ISRReaction::tick()'],['../class_react_e_s_p.html#aeefac464d9df930d020a321a63cdcf4b',1,'ReactESP::tick()']]], + ['tickreaction_81',['TickReaction',['../class_tick_reaction.html#a0928c0693f10acec61157027dd4658fe',1,'TickReaction']]], + ['timedreaction_82',['TimedReaction',['../class_timed_reaction.html#af1653cd9ff0b545e95baec51cde2743c',1,'TimedReaction::TimedReaction(const uint32_t interval, const react_callback callback)'],['../class_timed_reaction.html#a4a775a7624ba511ae80016e14b8d88f5',1,'TimedReaction::TimedReaction(const uint64_t interval, const react_callback callback)']]] +]; diff --git a/docs/generated/docs/search/functions_9.html b/docs/generated/docs/search/functions_9.html new file mode 100644 index 0000000..9a8e429 --- /dev/null +++ b/docs/generated/docs/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_9.js b/docs/generated/docs/search/functions_9.js new file mode 100644 index 0000000..c28b751 --- /dev/null +++ b/docs/generated/docs/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['untimedreaction_83',['UntimedReaction',['../class_untimed_reaction.html#a1e33cb5f40db3c477f0a476d63999770',1,'UntimedReaction']]] +]; diff --git a/docs/generated/docs/search/functions_a.html b/docs/generated/docs/search/functions_a.html new file mode 100644 index 0000000..5ecc152 --- /dev/null +++ b/docs/generated/docs/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/functions_a.js b/docs/generated/docs/search/functions_a.js new file mode 100644 index 0000000..a24b20a --- /dev/null +++ b/docs/generated/docs/search/functions_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7edelayreaction_84',['~DelayReaction',['../class_delay_reaction.html#a50777489f0975d07a81c39c0638d1a7e',1,'DelayReaction']]], + ['_7eisrreaction_85',['~ISRReaction',['../class_i_s_r_reaction.html#adca866ff1b4dd48450ab0076707221bd',1,'ISRReaction']]], + ['_7etimedreaction_86',['~TimedReaction',['../class_timed_reaction.html#a2f26edad67264a6c4f4da7d7ebfbb661',1,'TimedReaction']]], + ['_7euntimedreaction_87',['~UntimedReaction',['../class_untimed_reaction.html#acd2ff1b448599949c3ad1d2e80b23507',1,'UntimedReaction']]] +]; diff --git a/docs/generated/docs/search/mag_sel.svg b/docs/generated/docs/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/docs/generated/docs/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/generated/docs/search/nomatches.html b/docs/generated/docs/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/docs/generated/docs/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/generated/docs/search/related_0.html b/docs/generated/docs/search/related_0.html new file mode 100644 index 0000000..506aaec --- /dev/null +++ b/docs/generated/docs/search/related_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/related_0.js b/docs/generated/docs/search/related_0.js new file mode 100644 index 0000000..3b5a7e0 --- /dev/null +++ b/docs/generated/docs/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isrreaction_96',['ISRReaction',['../class_react_e_s_p.html#a6181e312f42c9b243cf44b38fe310269',1,'ReactESP']]] +]; diff --git a/docs/generated/docs/search/related_1.html b/docs/generated/docs/search/related_1.html new file mode 100644 index 0000000..605d4b7 --- /dev/null +++ b/docs/generated/docs/search/related_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/related_1.js b/docs/generated/docs/search/related_1.js new file mode 100644 index 0000000..759d1a3 --- /dev/null +++ b/docs/generated/docs/search/related_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reaction_97',['Reaction',['../class_react_e_s_p.html#a5f86463029cca47f8aa15ff8cd5b9e51',1,'ReactESP']]], + ['repeatreaction_98',['RepeatReaction',['../class_react_e_s_p.html#a539b4fe2115897ce16658443ea39f348',1,'ReactESP']]] +]; diff --git a/docs/generated/docs/search/related_2.html b/docs/generated/docs/search/related_2.html new file mode 100644 index 0000000..6d6ae33 --- /dev/null +++ b/docs/generated/docs/search/related_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/related_2.js b/docs/generated/docs/search/related_2.js new file mode 100644 index 0000000..446cfbc --- /dev/null +++ b/docs/generated/docs/search/related_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['timedreaction_99',['TimedReaction',['../class_react_e_s_p.html#af650768845083eb3a0ec1493679bd20d',1,'ReactESP']]] +]; diff --git a/docs/generated/docs/search/related_3.html b/docs/generated/docs/search/related_3.html new file mode 100644 index 0000000..e6c5d17 --- /dev/null +++ b/docs/generated/docs/search/related_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/related_3.js b/docs/generated/docs/search/related_3.js new file mode 100644 index 0000000..0feeb05 --- /dev/null +++ b/docs/generated/docs/search/related_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['untimedreaction_100',['UntimedReaction',['../class_react_e_s_p.html#ab45ae4a88e6fcc0191e9f4d682bc34ad',1,'ReactESP']]] +]; diff --git a/docs/generated/docs/search/search.css b/docs/generated/docs/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/docs/generated/docs/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/generated/docs/search/search.js b/docs/generated/docs/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/docs/generated/docs/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/typedefs_0.js b/docs/generated/docs/search/typedefs_0.js new file mode 100644 index 0000000..e463c94 --- /dev/null +++ b/docs/generated/docs/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isr_5freact_5fcallback_94',['isr_react_callback',['../_react_e_s_p_8h.html#a67b5c9351881150cba489e7594e0c976',1,'ReactESP.h']]] +]; diff --git a/docs/generated/docs/search/typedefs_1.html b/docs/generated/docs/search/typedefs_1.html new file mode 100644 index 0000000..46cf01e --- /dev/null +++ b/docs/generated/docs/search/typedefs_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/typedefs_1.js b/docs/generated/docs/search/typedefs_1.js new file mode 100644 index 0000000..9a60860 --- /dev/null +++ b/docs/generated/docs/search/typedefs_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['react_5fcallback_95',['react_callback',['../_react_e_s_p_8h.html#aced18b35574cdf9238eeb6d2c997db7f',1,'ReactESP.h']]] +]; diff --git a/docs/generated/docs/search/variables_0.html b/docs/generated/docs/search/variables_0.html new file mode 100644 index 0000000..1e477c0 --- /dev/null +++ b/docs/generated/docs/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/variables_0.js b/docs/generated/docs/search/variables_0.js new file mode 100644 index 0000000..ccbb9f3 --- /dev/null +++ b/docs/generated/docs/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['app_88',['app',['../class_react_e_s_p.html#a0af13aed55f3b30703e027ff2d761774',1,'ReactESP::app()'],['../main_8cpp.html#a3bac9e7c19af67b87759d88b0701dccd',1,'app(): main.cpp']]] +]; diff --git a/docs/generated/docs/search/variables_1.html b/docs/generated/docs/search/variables_1.html new file mode 100644 index 0000000..ea73d9a --- /dev/null +++ b/docs/generated/docs/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/variables_1.js b/docs/generated/docs/search/variables_1.js new file mode 100644 index 0000000..f01dfb3 --- /dev/null +++ b/docs/generated/docs/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['callback_89',['callback',['../class_reaction.html#a13fdfc7eef62041f7394eac1f0b53978',1,'Reaction']]] +]; diff --git a/docs/generated/docs/search/variables_2.html b/docs/generated/docs/search/variables_2.html new file mode 100644 index 0000000..0580462 --- /dev/null +++ b/docs/generated/docs/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/variables_2.js b/docs/generated/docs/search/variables_2.js new file mode 100644 index 0000000..a3874c9 --- /dev/null +++ b/docs/generated/docs/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['enabled_90',['enabled',['../class_timed_reaction.html#ae4c582a52e93db97646f8fbb0bb1b909',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/variables_3.html b/docs/generated/docs/search/variables_3.html new file mode 100644 index 0000000..0d69e76 --- /dev/null +++ b/docs/generated/docs/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/variables_3.js b/docs/generated/docs/search/variables_3.js new file mode 100644 index 0000000..dd50423 --- /dev/null +++ b/docs/generated/docs/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['interval_91',['interval',['../class_timed_reaction.html#ad4a692b89c47ea51055534e8286532fa',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/variables_4.html b/docs/generated/docs/search/variables_4.html new file mode 100644 index 0000000..a4b6506 --- /dev/null +++ b/docs/generated/docs/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/variables_4.js b/docs/generated/docs/search/variables_4.js new file mode 100644 index 0000000..7f0b273 --- /dev/null +++ b/docs/generated/docs/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['last_5ftrigger_5ftime_92',['last_trigger_time',['../class_timed_reaction.html#a403ac811efb47fc24aae688b83309540',1,'TimedReaction']]] +]; diff --git a/docs/generated/docs/search/variables_5.html b/docs/generated/docs/search/variables_5.html new file mode 100644 index 0000000..7e345d1 --- /dev/null +++ b/docs/generated/docs/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/generated/docs/search/variables_5.js b/docs/generated/docs/search/variables_5.js new file mode 100644 index 0000000..b6d4287 --- /dev/null +++ b/docs/generated/docs/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ticks_93',['ticks',['../main_8cpp.html#ab97230fdf86fd49a50dbcc8e44fdf9cc',1,'main.cpp']]] +]; diff --git a/docs/generated/docs/splitbar.png b/docs/generated/docs/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/docs/generated/docs/splitbar.png differ diff --git a/docs/generated/docs/struct_trigger_time_compare-members.html b/docs/generated/docs/struct_trigger_time_compare-members.html new file mode 100644 index 0000000..0d3f5c0 --- /dev/null +++ b/docs/generated/docs/struct_trigger_time_compare-members.html @@ -0,0 +1,110 @@ + + + + + + + +ReactESP: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    ReactESP +  0.3.1 +
    +
    Asynchronous programming for the ESP microcontrollers
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TriggerTimeCompare Member List
    +
    +
    + +

    This is the complete list of members for TriggerTimeCompare, including all inherited members.

    + + +
    operator()(TimedReaction *a, TimedReaction *b)TriggerTimeCompareinline
    +
    + + + + diff --git a/docs/generated/docs/struct_trigger_time_compare.html b/docs/generated/docs/struct_trigger_time_compare.html new file mode 100644 index 0000000..f756a33 --- /dev/null +++ b/docs/generated/docs/struct_trigger_time_compare.html @@ -0,0 +1,163 @@ + + + + + + + +ReactESP: TriggerTimeCompare Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    ReactESP +  0.3.1 +
    +
    Asynchronous programming for the ESP microcontrollers
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TriggerTimeCompare Struct Reference
    +
    +
    + +

    #include <ReactESP.h>

    + + + + +

    +Public Member Functions

    bool operator() (TimedReaction *a, TimedReaction *b)
     
    +

    Detailed Description

    +
    +

    Definition at line 85 of file ReactESP.h.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool TriggerTimeCompare::operator() (TimedReactiona,
    TimedReactionb 
    )
    +
    +inline
    +
    + +

    Definition at line 86 of file ReactESP.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/docs/generated/docs/struct_trigger_time_compare.js b/docs/generated/docs/struct_trigger_time_compare.js new file mode 100644 index 0000000..fd4e3ab --- /dev/null +++ b/docs/generated/docs/struct_trigger_time_compare.js @@ -0,0 +1,4 @@ +var struct_trigger_time_compare = +[ + [ "operator()", "struct_trigger_time_compare.html#a8c43f2a1e90a47ea77876a76522ced21", null ] +]; \ No newline at end of file diff --git a/docs/generated/docs/svgpan.js b/docs/generated/docs/svgpan.js new file mode 100644 index 0000000..2678d38 --- /dev/null +++ b/docs/generated/docs/svgpan.js @@ -0,0 +1,323 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + The code below is based on SVGPan Library 1.2 and was modified for doxygen + to support both zooming and panning via the mouse and via embedded buttons. + + This code is licensed under the following BSD license: + + Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation are those of the + authors and should not be interpreted as representing official policies, either expressed + or implied, of Andrea Leofreddi. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +var root = document.documentElement; +var state = 'none'; +var stateOrigin; +var stateTf = root.createSVGMatrix(); +var cursorGrab = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move'; +var zoomSteps = 10; +var zoomInFactor; +var zoomOutFactor; +var windowWidth; +var windowHeight; +var svgDoc; +var minZoom; +var maxZoom; +if (!window) window=this; + +/** + * Show the graph in the middle of the view, scaled to fit + */ +function show() +{ + if (window.innerHeight) // Firefox + { + windowWidth = window.innerWidth; + windowHeight = window.innerHeight; + } + else if (document.documentElement.clientWidth) // Chrome/Safari + { + windowWidth = document.documentElement.clientWidth + windowHeight = document.documentElement.clientHeight + } + if (!windowWidth || !windowHeight) // failsafe + { + windowWidth = 800; + windowHeight = 600; + } + minZoom = Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth); + maxZoom = minZoom+1.5; + zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps); + zoomOutFactor = 1.0/zoomInFactor; + + var g = svgDoc.getElementById('viewport'); + try + { + var bb = g.getBBox(); // this can throw an exception if css { display: none } + var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom); + var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom); + var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')'; + g.setAttribute('transform',a); + } + catch(e) {} +} + +/** + * Register handlers + */ +function init(evt) +{ + svgDoc = evt.target.ownerDocument; + try { + if (top.window && top.window.registerShow) { // register show function in html doc for dynamic sections + top.window.registerShow(sectionId,show); + } + } catch(e) { + // ugh, we are not allowed to talk to the parent; can happen with Chrome when viewing pages + // locally, since they treat every local page as having a different origin + } + show(); + + setAttributes(root, { + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)" + }); + + if (window.addEventListener) + { + if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 || + navigator.userAgent.toLowerCase().indexOf("opera") >= 0 || + navigator.appVersion.indexOf("MSIE") != -1) + { + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9 + } + else + { + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others + } + } +} + +window.onresize=function() +{ + if (svgDoc) { show(); } +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) +{ + var p = root.createSVGPoint(); + p.x = evt.clientX; + p.y = evt.clientY; + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) +{ + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + element.setAttribute("transform", s); +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes) +{ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +function doZoom(g,point,zoomFactor) +{ + var p = point.matrixTransform(g.getCTM().inverse()); + var k = root.createSVGMatrix().translate(p.x, p.y).scale(zoomFactor).translate(-p.x, -p.y); + var n = g.getCTM().multiply(k); + var s = Math.max(n.a,n.d); + if (s>maxZoom) n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y); + else if (s'); + d.write('Print SVG'); + d.write(''); + d.write('
    '+xs+'
    '); + d.write(''); + d.write(''); + d.close(); + } catch(e) { + alert('Failed to open popup window needed for printing!\n'+e.message); + } +} +/* @license-end */ diff --git a/docs/generated/docs/sync_off.png b/docs/generated/docs/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/docs/generated/docs/sync_off.png differ diff --git a/docs/generated/docs/sync_on.png b/docs/generated/docs/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/docs/generated/docs/sync_on.png differ diff --git a/docs/generated/docs/tab_a.png b/docs/generated/docs/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/docs/generated/docs/tab_a.png differ diff --git a/docs/generated/docs/tab_b.png b/docs/generated/docs/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/docs/generated/docs/tab_b.png differ diff --git a/docs/generated/docs/tab_h.png b/docs/generated/docs/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/docs/generated/docs/tab_h.png differ diff --git a/docs/generated/docs/tab_s.png b/docs/generated/docs/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/docs/generated/docs/tab_s.png differ diff --git a/docs/generated/docs/tabs.css b/docs/generated/docs/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/docs/generated/docs/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file