From 5e6713fb77e926fa6b970c2fbf08e368f22489c6 Mon Sep 17 00:00:00 2001 From: Cameron King Date: Fri, 18 Mar 2022 23:48:55 -0500 Subject: [PATCH] adds duration and marks as deprecated, updates docs --- docs/files/_bounce2_8h_source.html | 427 +++++++++--------- docs/files/annotated.html | 26 +- docs/files/bounce_basic_8ino-example.html | 28 +- docs/files/button_basic_8ino-example.html | 28 +- docs/files/class_bounce-members.html | 69 ++- docs/files/class_bounce.html | 120 +++-- .../class_bounce2_1_1_button-members.html | 81 ++-- docs/files/class_bounce2_1_1_button.html | 103 +++-- docs/files/class_debouncer-members.html | 55 ++- docs/files/class_debouncer.html | 102 +++-- docs/files/classes.html | 51 +-- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 32 +- docs/files/doxygen.css | 220 ++++++--- docs/files/dynsections.js | 33 +- docs/files/examples.html | 28 +- docs/files/files.html | 26 +- docs/files/functions.html | 108 ++--- docs/files/functions_func.html | 104 ++--- docs/files/functions_vars.html | 27 +- docs/files/hierarchy.html | 26 +- docs/files/index.html | 112 +++-- docs/files/jquery.js | 4 +- docs/files/menu.js | 119 ++++- docs/files/menudata.js | 33 +- docs/files/namespace_bounce2.html | 30 +- docs/files/namespaces.html | 31 +- docs/files/search/all_0.html | 23 +- docs/files/search/all_1.html | 23 +- docs/files/search/all_1.js | 6 +- docs/files/search/all_2.html | 23 +- docs/files/search/all_2.js | 4 +- docs/files/search/all_3.html | 23 +- docs/files/search/all_3.js | 4 +- docs/files/search/all_4.html | 23 +- docs/files/search/all_4.js | 4 +- docs/files/search/all_5.html | 23 +- docs/files/search/all_5.js | 4 +- docs/files/search/all_6.html | 23 +- docs/files/search/all_6.js | 4 +- docs/files/search/all_7.html | 23 +- docs/files/search/all_7.js | 6 +- docs/files/search/all_8.html | 23 +- docs/files/search/all_8.js | 8 +- docs/files/search/all_9.html | 23 +- docs/files/search/all_9.js | 2 +- docs/files/search/all_a.html | 23 +- docs/files/search/all_a.js | 2 +- docs/files/search/classes_0.html | 23 +- docs/files/search/classes_0.js | 4 +- docs/files/search/classes_1.html | 23 +- docs/files/search/classes_1.js | 2 +- docs/files/search/functions_0.html | 23 +- docs/files/search/functions_0.js | 2 +- docs/files/search/functions_1.html | 23 +- docs/files/search/functions_1.js | 4 +- docs/files/search/functions_2.html | 23 +- docs/files/search/functions_2.js | 4 +- docs/files/search/functions_3.html | 23 +- docs/files/search/functions_3.js | 3 +- docs/files/search/functions_4.html | 23 +- docs/files/search/functions_4.js | 4 +- docs/files/search/functions_5.html | 23 +- docs/files/search/functions_5.js | 4 +- docs/files/search/functions_6.html | 23 +- docs/files/search/functions_6.js | 4 +- docs/files/search/functions_7.html | 23 +- docs/files/search/functions_7.js | 4 +- docs/files/search/functions_8.html | 23 +- docs/files/search/functions_8.js | 8 +- docs/files/search/functions_9.html | 23 +- docs/files/search/functions_9.js | 2 +- docs/files/search/functions_a.html | 23 +- docs/files/search/functions_a.js | 2 +- docs/files/search/namespaces_0.html | 23 +- docs/files/search/namespaces_0.js | 2 +- docs/files/search/nomatches.html | 3 +- docs/files/search/pages_0.html | 23 +- docs/files/search/pages_0.js | 2 +- docs/files/search/search.css | 112 +++-- docs/files/search/search.js | 116 ++--- docs/files/search/searchdata.js | 2 +- docs/files/search/variables_0.html | 23 +- docs/files/search/variables_0.js | 2 +- docs/files/tabs.css | 2 +- src/Bounce2.cpp | 4 + src/Bounce2.h | 12 + 86 files changed, 1635 insertions(+), 1357 deletions(-) diff --git a/docs/files/_bounce2_8h_source.html b/docs/files/_bounce2_8h_source.html index c1decaf..bd592c8 100644 --- a/docs/files/_bounce2_8h_source.html +++ b/docs/files/_bounce2_8h_source.html @@ -2,8 +2,8 @@ - - + + Bounce2: src/Bounce2.h Source File @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
-
-
Bounce2.h
+
Bounce2.h
-
1 /*
-
2  The MIT License (MIT)
-
3 
-
4  Copyright (c) 2013 thomasfredericks
-
5 
-
6  Permission is hereby granted, free of charge, to any person obtaining a copy of
-
7  this software and associated documentation files (the "Software"), to deal in
-
8  the Software without restriction, including without limitation the rights to
-
9  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-
10  the Software, and to permit persons to whom the Software is furnished to do so,
-
11  subject to the following conditions:
-
12 
-
13  The above copyright notice and this permission notice shall be included in all
-
14  copies or substantial portions of the Software.
-
15 
-
16  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
17  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-
18  FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-
19  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-
20  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-
21  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
22 */
-
23 
-
24 /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
25  Main code by Thomas O Fredericks (tof@t-o-f.info)
-
26  Previous contributions by Eric Lowry, Jim Schimpf and Tom Harkaway
-
27  * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
28 
-
29 
-
30 #ifndef Bounce2_h
-
31 #define Bounce2_h
-
32 
-
33 #if defined(ARDUINO) && ARDUINO >= 100
-
34 #include "Arduino.h"
-
35 #else
-
36 #include "WProgram.h"
-
37 #endif
-
38 
-
39 // Uncomment the following line for "LOCK-OUT" debounce method
-
40 //#define BOUNCE_LOCK_OUT
-
41 
-
42 // Uncomment the following line for "BOUNCE_WITH_PROMPT_DETECTION" debounce method
-
43 //#define BOUNCE_WITH_PROMPT_DETECTION
-
44 
-
45 #include <inttypes.h>
-
46 
-
62 class Debouncer
-
63 {
-
64  // Note : this is private as it migh change in the futur
-
65 private:
-
66  static const uint8_t DEBOUNCED_STATE = 0b00000001; // Final returned calculated debounced state
-
67  static const uint8_t UNSTABLE_STATE = 0b00000010; // Actual last state value behind the scene
-
68  static const uint8_t CHANGED_STATE = 0b00000100; // The DEBOUNCED_STATE has changed since last update()
-
69 
-
70 // Note : this is private as it migh change in the futur
-
71 private:
-
72  inline void changeState();
-
73  inline void setStateFlag(const uint8_t flag) {state |= flag;}
-
74  inline void unsetStateFlag(const uint8_t flag) {state &= ~flag;}
-
75  inline void toggleStateFlag(const uint8_t flag) {state ^= flag;}
-
76  inline bool getStateFlag(const uint8_t flag) const {return((state & flag) != 0);}
-
77 
-
78 public:
-
84  Debouncer();
-
85 
-
93  void interval(uint16_t interval_millis);
-
94 
-
103  bool update();
-
104 
-
110  bool read() const;
-
111 
-
115  bool fell() const;
-
116 
-
120  bool rose() const;
-
121 
-
122 
-
123 
-
124 public:
-
130  bool changed( ) const { return getStateFlag(CHANGED_STATE); }
-
131 
-
140  unsigned long currentDuration() const;
-
141 
-
142 
-
150  unsigned long previousDuration() const;
-
151 
-
152 protected:
-
153  void begin();
-
154  virtual bool readCurrentState() =0;
-
155  unsigned long previous_millis;
-
156  uint16_t interval_millis;
-
157  uint8_t state;
-
158  unsigned long stateChangeLastTime;
-
159  unsigned long durationOfPreviousState;
-
160 
-
161 };
-
162 
-
163 
-
168 class Bounce : public Debouncer
-
169 {
-
170 
-
171 
-
172 public:
-
173 
-
184  Bounce();
-
185 
-
186 
-
195  void attach(int pin, int mode);
-
196 
-
200  void attach(int pin);
-
201 
-
202  Bounce(uint8_t pin, unsigned long interval_millis ) : Bounce() {
-
203  attach(pin);
-
204  interval(interval_millis);
-
205  }
-
206 
-
207 
-
213  inline int getPin() const {
-
214  return this->pin;
-
215  };
-
216 
-
218  // Deprecated //
-
220 
-
224  bool risingEdge() const { return rose(); }
-
228  bool fallingEdge() const { return fell(); }
-
234 protected:
-
235 
-
236 
-
237  uint8_t pin;
-
238 
-
239  virtual bool readCurrentState() { return digitalRead(pin); }
-
240  virtual void setPinMode(int pin, int mode) {
-
241 #if defined(ARDUINO_ARCH_STM32F1)
-
242  pinMode(pin, (WiringPinMode)mode);
-
243 #else
-
244  pinMode(pin, mode);
-
245 #endif
-
246  }
-
247 
-
248 
-
249 
-
250 };
-
251 
-
255 namespace Bounce2 {
-
256  // code declarations
-
257 
-
258 class Button : public Bounce{
-
259 protected:
-
260  bool stateForPressed = 1; //
-
261  public:
-
272  Button(){ }
-
273 
-
281  void setPressedState(bool state){
-
282  stateForPressed = state;
-
283  }
-
284 
-
288  inline bool getPressedState() const {
-
289  return stateForPressed;
-
290  };
-
291 
-
295  inline bool isPressed() const {
-
296  return read() == getPressedState();
-
297  };
-
298 
-
302  inline bool pressed() const {
-
303  return changed() && isPressed();
-
304  };
-
305 
-
309  inline bool released() const {
-
310  return changed() && !isPressed();
-
311  };
-
312 
-
313 };
-
314 };
-
315 
-
316 #endif
-
-
Definition: Bounce2.h:258
-
void interval(uint16_t interval_millis)
Sets the debounce interval in milliseconds.
Definition: Bounce2.cpp:14
-
unsigned long previousDuration() const
Returns the duration in milliseconds of the previous state.
Definition: Bounce2.cpp:103
-
bool getPressedState() const
Get the electrical state (HIGH/LOW) that corresponds to a physical press.
Definition: Bounce2.h:288
-
Bounce()
Create an instance of the Bounce class.
Definition: Bounce2.cpp:138
-
bool fallingEdge() const
Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce ver...
Definition: Bounce2.h:228
-
bool rose() const
Returns true if pin signal transitions from low to high.
Definition: Bounce2.cpp:123
-
uint8_t pin
Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce ver...
Definition: Bounce2.h:237
-
bool pressed() const
Returns true if the button was physically pressed
Definition: Bounce2.h:302
-
unsigned long currentDuration() const
Returns the duration in milliseconds of the current state.
Definition: Bounce2.cpp:107
-
bool update()
Updates the pin's state.
Definition: Bounce2.cpp:32
-
Button()
Create an instance of the Button class. By default, the pressed state is matched to a HIGH electrical...
Definition: Bounce2.h:272
-
The Debouncer:Bounce class. Links the Deboucing class to a hardware pin. This class is odly named,...
Definition: Bounce2.h:168
-
int getPin() const
Return pin that this Bounce is attached to.
Definition: Bounce2.h:213
-
The Debouce class. Just the deboucing code separated from all harware.
Definition: Bounce2.h:62
-
void setPressedState(bool state)
Set the electrical state (HIGH/LOW) that corresponds to a physical press. By default,...
Definition: Bounce2.h:281
-
bool fell() const
Returns true if pin signal transitions from high to low.
Definition: Bounce2.cpp:128
-
bool released() const
Returns true if the button was physically released
Definition: Bounce2.h:309
-
void attach(int pin, int mode)
Attach to a pin and sets that pin's mode (INPUT, INPUT_PULLUP or OUTPUT).
Definition: Bounce2.cpp:149
-
bool isPressed() const
Returns true if the button is currently physically pressed.
Definition: Bounce2.h:295
-
bool read() const
Returns the pin's state (HIGH or LOW).
Definition: Bounce2.cpp:118
-
bool risingEdge() const
Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce ver...
Definition: Bounce2.h:224
+
1/*
+
2 The MIT License (MIT)
+
3
+
4 Copyright (c) 2013 thomasfredericks
+
5
+
6 Permission is hereby granted, free of charge, to any person obtaining a copy of
+
7 this software and associated documentation files (the "Software"), to deal in
+
8 the Software without restriction, including without limitation the rights to
+
9 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+
10 the Software, and to permit persons to whom the Software is furnished to do so,
+
11 subject to the following conditions:
+
12
+
13 The above copyright notice and this permission notice shall be included in all
+
14 copies or substantial portions of the Software.
+
15
+
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+
18 FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+
19 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+
20 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+
21 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
22*/
+
23
+
24/* * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
25 Main code by Thomas O Fredericks (tof@t-o-f.info)
+
26 Previous contributions by Eric Lowry, Jim Schimpf and Tom Harkaway
+
27 * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
28
+
29
+
30#ifndef Bounce2_h
+
31#define Bounce2_h
+
32
+
33#if defined(ARDUINO) && ARDUINO >= 100
+
34#include "Arduino.h"
+
35#else
+
36#include "WProgram.h"
+
37#endif
+
38
+
39// Uncomment the following line for "LOCK-OUT" debounce method
+
40//#define BOUNCE_LOCK_OUT
+
41
+
42// Uncomment the following line for "BOUNCE_WITH_PROMPT_DETECTION" debounce method
+
43//#define BOUNCE_WITH_PROMPT_DETECTION
+
44
+
45#include <inttypes.h>
+
46
+ +
63{
+
64 // Note : this is private as it migh change in the futur
+
65private:
+
66 static const uint8_t DEBOUNCED_STATE = 0b00000001; // Final returned calculated debounced state
+
67 static const uint8_t UNSTABLE_STATE = 0b00000010; // Actual last state value behind the scene
+
68 static const uint8_t CHANGED_STATE = 0b00000100; // The DEBOUNCED_STATE has changed since last update()
+
69
+
70// Note : this is private as it migh change in the futur
+
71private:
+
72 inline void changeState();
+
73 inline void setStateFlag(const uint8_t flag) {state |= flag;}
+
74 inline void unsetStateFlag(const uint8_t flag) {state &= ~flag;}
+
75 inline void toggleStateFlag(const uint8_t flag) {state ^= flag;}
+
76 inline bool getStateFlag(const uint8_t flag) const {return((state & flag) != 0);}
+
77
+
78public:
+
84 Debouncer();
+
85
+
93 void interval(uint16_t interval_millis);
+
94
+
103 bool update();
+
104
+
110 bool read() const;
+
111
+
115 bool fell() const;
+
116
+
120 bool rose() const;
+
121
+
122
+
123
+
124public:
+
130 bool changed( ) const { return getStateFlag(CHANGED_STATE); }
+
131
+
140 unsigned long currentDuration() const;
+
141
+
152 unsigned long duration() const;
+
153
+
154
+
162 unsigned long previousDuration() const;
+
163
+
164protected:
+
165 void begin();
+
166 virtual bool readCurrentState() =0;
+
167 unsigned long previous_millis;
+
168 uint16_t interval_millis;
+
169 uint8_t state;
+
170 unsigned long stateChangeLastTime;
+
171 unsigned long durationOfPreviousState;
+
172
+
173};
+
174
+
175
+
180class Bounce : public Debouncer
+
181{
+
182
+
183
+
184public:
+
185
+
196 Bounce();
+
197
+
198
+
207 void attach(int pin, int mode);
+
208
+
212 void attach(int pin);
+
213
+
214 Bounce(uint8_t pin, unsigned long interval_millis ) : Bounce() {
+
215 attach(pin);
+
216 interval(interval_millis);
+
217 }
+
218
+
219
+
225 inline int getPin() const {
+
226 return this->pin;
+
227 };
+
228
+
230 // Deprecated //
+
232
+
236 bool risingEdge() const { return rose(); }
+
240 bool fallingEdge() const { return fell(); }
+
246protected:
+
247
+
248
+
249 uint8_t pin;
+
250
+
251 virtual bool readCurrentState() { return digitalRead(pin); }
+
252 virtual void setPinMode(int pin, int mode) {
+
253#if defined(ARDUINO_ARCH_STM32F1)
+
254 pinMode(pin, (WiringPinMode)mode);
+
255#else
+
256 pinMode(pin, mode);
+
257#endif
+
258 }
+
259
+
260
+
261
+
262};
+
263
+
267namespace Bounce2 {
+
268 // code declarations
+
269
+
270class Button : public Bounce{
+
271protected:
+
272 bool stateForPressed = 1; //
+
273 public:
+ +
285
+
293 void setPressedState(bool state){
+
294 stateForPressed = state;
+
295 }
+
296
+
300 inline bool getPressedState() const {
+
301 return stateForPressed;
+
302 };
+
303
+
307 inline bool isPressed() const {
+
308 return read() == getPressedState();
+
309 };
+
310
+
314 inline bool pressed() const {
+
315 return changed() && isPressed();
+
316 };
+
317
+
321 inline bool released() const {
+
322 return changed() && !isPressed();
+
323 };
+
324
+
325};
+
326};
+
327
+
328#endif
+
Definition: Bounce2.h:270
+
Button()
Create an instance of the Button class. By default, the pressed state is matched to a HIGH electrical...
Definition: Bounce2.h:284
+
bool getPressedState() const
Get the electrical state (HIGH/LOW) that corresponds to a physical press.
Definition: Bounce2.h:300
+
void setPressedState(bool state)
Set the electrical state (HIGH/LOW) that corresponds to a physical press. By default,...
Definition: Bounce2.h:293
+
bool pressed() const
Returns true if the button was physically pressed
Definition: Bounce2.h:314
+
bool isPressed() const
Returns true if the button is currently physically pressed.
Definition: Bounce2.h:307
+
bool released() const
Returns true if the button was physically released
Definition: Bounce2.h:321
+
The Debouncer:Bounce class. Links the Deboucing class to a hardware pin. This class is odly named,...
Definition: Bounce2.h:181
+
int getPin() const
Return pin that this Bounce is attached to.
Definition: Bounce2.h:225
+
uint8_t pin
Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce ver...
Definition: Bounce2.h:249
+
bool fallingEdge() const
Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce ver...
Definition: Bounce2.h:240
+
Bounce()
Create an instance of the Bounce class.
Definition: Bounce2.cpp:142
+
void attach(int pin, int mode)
Attach to a pin and sets that pin's mode (INPUT, INPUT_PULLUP or OUTPUT).
Definition: Bounce2.cpp:153
+
bool risingEdge() const
Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce ver...
Definition: Bounce2.h:236
+
The Debouce class. Just the deboucing code separated from all harware.
Definition: Bounce2.h:63
bool changed() const
Returns true if the state changed on last update.
Definition: Bounce2.h:130
-
The Debouncer:Bounce:Button class. The Button class matches an electrical state to a physical action.
Definition: Bounce2.h:255
Debouncer()
Create an instance of the Debounce class.
Definition: Bounce2.cpp:10
+
bool update()
Updates the pin's state.
Definition: Bounce2.cpp:32
+
bool fell() const
Returns true if pin signal transitions from high to low.
Definition: Bounce2.cpp:132
+
unsigned long currentDuration() const
Returns the duration in milliseconds of the current state.
Definition: Bounce2.cpp:107
+
void interval(uint16_t interval_millis)
Sets the debounce interval in milliseconds.
Definition: Bounce2.cpp:14
+
bool read() const
Returns the pin's state (HIGH or LOW).
Definition: Bounce2.cpp:122
+
bool rose() const
Returns true if pin signal transitions from low to high.
Definition: Bounce2.cpp:127
+
unsigned long previousDuration() const
Returns the duration in milliseconds of the previous state.
Definition: Bounce2.cpp:103
+
unsigned long duration() const
Returns the duration in milliseconds of the current state.
Definition: Bounce2.cpp:111
+
The Debouncer:Bounce:Button class. The Button class matches an electrical state to a physical action.
Definition: Bounce2.h:267
+
diff --git a/docs/files/annotated.html b/docs/files/annotated.html index 94dd1c0..4bb1d40 100644 --- a/docs/files/annotated.html +++ b/docs/files/annotated.html @@ -2,8 +2,8 @@ - - + + Bounce2: Class List @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -61,8 +62,7 @@ $(function() {
-
-
Class List
+
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
@@ -76,9 +76,7 @@ $(function() {
diff --git a/docs/files/bounce_basic_8ino-example.html b/docs/files/bounce_basic_8ino-example.html index c7df6b0..54ff700 100644 --- a/docs/files/bounce_basic_8ino-example.html +++ b/docs/files/bounce_basic_8ino-example.html @@ -2,8 +2,8 @@ - - + + Bounce2: bounce_basic.ino @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
@@ -61,11 +62,10 @@ $(function() {
-
-
bounce_basic.ino
+
bounce_basic.ino
-

Basic example of the Bounce class.

+

Basic example of the Bounce class.

/*
DESCRIPTION
@@ -139,9 +139,7 @@ $(function() {
diff --git a/docs/files/button_basic_8ino-example.html b/docs/files/button_basic_8ino-example.html index 1aa21c1..5dcef95 100644 --- a/docs/files/button_basic_8ino-example.html +++ b/docs/files/button_basic_8ino-example.html @@ -2,8 +2,8 @@ - - + + Bounce2: button_basic.ino @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -61,17 +62,14 @@ $(function() {
-
-
button_basic.ino
+
button_basic.ino
-

Basic example of the Button class.

+

Basic example of the Button class.

diff --git a/docs/files/class_bounce-members.html b/docs/files/class_bounce-members.html index 4db5885..3a46c6a 100644 --- a/docs/files/class_bounce-members.html +++ b/docs/files/class_bounce-members.html @@ -2,8 +2,8 @@ - - + + Bounce2: Member List @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
-
-
Bounce Member List
+
Bounce Member List

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

- + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
attach(int pin, int mode)Bounce
attach(int pin)Bounce
attach(int pin)Bounce
begin() (defined in Debouncer)Debouncerprotected
Bounce()Bounce
Bounce()Bounce
Bounce(uint8_t pin, unsigned long interval_millis) (defined in Bounce)Bounceinline
changed() constDebouncerinline
changed() constDebouncerinline
currentDuration() constDebouncer
Debouncer()Debouncer
durationOfPreviousState (defined in Debouncer)Debouncerprotected
fallingEdge() constBounceinline
fell() constDebouncer
getPin() constBounceinline
interval(uint16_t interval_millis)Debouncer
interval_millis (defined in Debouncer)Debouncerprotected
pinBounceprotected
previous_millis (defined in Debouncer)Debouncerprotected
previousDuration() constDebouncer
read() constDebouncer
readCurrentState() (defined in Bounce)Bounceinlineprotectedvirtual
risingEdge() constBounceinline
rose() constDebouncer
setPinMode(int pin, int mode) (defined in Bounce)Bounceinlineprotectedvirtual
state (defined in Debouncer)Debouncerprotected
stateChangeLastTime (defined in Debouncer)Debouncerprotected
update()Debouncer
Debouncer()Debouncer
duration() constDebouncer
durationOfPreviousState (defined in Debouncer)Debouncerprotected
fallingEdge() constBounceinline
fell() constDebouncer
getPin() constBounceinline
interval(uint16_t interval_millis)Debouncer
interval_millis (defined in Debouncer)Debouncerprotected
pinBounceprotected
previous_millis (defined in Debouncer)Debouncerprotected
previousDuration() constDebouncer
read() constDebouncer
readCurrentState() (defined in Bounce)Bounceinlineprotectedvirtual
risingEdge() constBounceinline
rose() constDebouncer
setPinMode(int pin, int mode) (defined in Bounce)Bounceinlineprotectedvirtual
state (defined in Debouncer)Debouncerprotected
stateChangeLastTime (defined in Debouncer)Debouncerprotected
update()Debouncer
diff --git a/docs/files/class_bounce.html b/docs/files/class_bounce.html index b050b51..c429c9c 100644 --- a/docs/files/class_bounce.html +++ b/docs/files/class_bounce.html @@ -2,8 +2,8 @@ - - + + Bounce2: Bounce Class Reference @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
Protected Member Functions | Protected Attributes | List of all members
-
-
Bounce Class Reference
+
Bounce Class Reference
@@ -86,7 +86,7 @@ Inheritance diagram for Bounce:
- @@ -96,18 +96,18 @@ Public Member Functions - - + - + @@ -123,12 +123,12 @@ bool  - + - + @@ -137,50 +137,55 @@ bool  + + +

+

Public Member Functions

 Bounce ()
 Create an instance of the Bounce class. More...
 
void attach (int pin)
 
+
 Bounce (uint8_t pin, unsigned long interval_millis)
 
int getPin () const
 Return pin that this Bounce is attached to. More...
 
-bool risingEdge () const
+bool risingEdge () const
 Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce version 1.
 
-bool fallingEdge () const
+bool fallingEdge () const
 Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce version 1.
 
- Public Member Functions inherited from Debouncer
bool read () const
 Returns the pin's state (HIGH or LOW). More...
 
-bool fell () const
+bool fell () const
 Returns true if pin signal transitions from high to low.
 
-bool rose () const
+bool rose () const
 Returns true if pin signal transitions from low to high.
 
bool changed () const
unsigned long currentDuration () const
 Returns the duration in milliseconds of the current state. More...
 
unsigned long duration () const
 Returns the duration in milliseconds of the current state. More...
 
unsigned long previousDuration () const
 Returns the duration in milliseconds of the previous state. More...
 
- - + - - + +

+

Protected Member Functions

-virtual bool readCurrentState ()
virtual bool readCurrentState ()
 
+
virtual void setPinMode (int pin, int mode)
 
- Protected Member Functions inherited from Debouncer
+
void begin ()
 
+virtual bool readCurrentState ()=0
 
- - + - - - - -

+

Protected Attributes

-uint8_t pin
+uint8_t pin
 Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce version 1.
 
- Protected Attributes inherited from Debouncer
+
unsigned long previous_millis
 
+
uint16_t interval_millis
 
+
uint8_t state
 
+
unsigned long stateChangeLastTime
 
+
unsigned long durationOfPreviousState
 

Detailed Description

-

The Debouncer:Bounce class. Links the Deboucing class to a hardware pin. This class is odly named, but it will be kept that so it stays compatible with previous code.

+

The Debouncer:Bounce class. Links the Deboucing class to a hardware pin. This class is odly named, but it will be kept that so it stays compatible with previous code.

Constructor & Destructor Documentation

- +

◆ Bounce()

@@ -197,12 +202,13 @@ unsigned long durationOfPr

Create an instance of the Bounce class.

// Create an instance of the Bounce class.
-
Bounce() button;
+
Bounce() button;
+
Bounce()
Create an instance of the Bounce class.
Definition: Bounce2.cpp:142

Member Function Documentation

- +

◆ attach() [1/2]

@@ -217,11 +223,11 @@ unsigned long durationOfPr
-

Attach to a pin for advanced users. Only attach the pin this way once you have previously set it up. Otherwise use attach(int pin, int mode).

+

Attach to a pin for advanced users. Only attach the pin this way once you have previously set it up. Otherwise use attach(int pin, int mode).

- +

◆ attach() [2/2]

@@ -258,7 +264,7 @@ unsigned long durationOfPr
- +

◆ getPin()

@@ -284,6 +290,33 @@ unsigned long durationOfPr

Return pin that this Bounce is attached to.

Returns
integer identifier of the coupled pin
+
+ + +

◆ readCurrentState()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool Bounce::readCurrentState ()
+
+inlineprotectedvirtual
+
+ +

Implements Debouncer.

+

The documentation for this class was generated from the following files:
    @@ -291,12 +324,9 @@ unsigned long durationOfPr
  • src/Bounce2.cpp
-
Bounce()
Create an instance of the Bounce class.
Definition: Bounce2.cpp:138
diff --git a/docs/files/class_bounce2_1_1_button-members.html b/docs/files/class_bounce2_1_1_button-members.html index 96091af..8839bf2 100644 --- a/docs/files/class_bounce2_1_1_button-members.html +++ b/docs/files/class_bounce2_1_1_button-members.html @@ -2,8 +2,8 @@ - - + + Bounce2: Member List @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
-
-
Bounce2::Button Member List
+
Bounce2::Button Member List

This is the complete list of members for Bounce2::Button, including all inherited members.

- + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +
attach(int pin, int mode)Bounce
attach(int pin)Bounce
attach(int pin)Bounce
begin() (defined in Debouncer)Debouncerprotected
Bounce()Bounce
Bounce()Bounce
Bounce(uint8_t pin, unsigned long interval_millis) (defined in Bounce)Bounceinline
Button()Bounce2::Buttoninline
Button()Bounce2::Buttoninline
changed() constDebouncerinline
currentDuration() constDebouncer
currentDuration() constDebouncer
Debouncer()Debouncer
durationOfPreviousState (defined in Debouncer)Debouncerprotected
fallingEdge() constBounceinline
fell() constDebouncer
getPin() constBounceinline
getPressedState() constBounce2::Buttoninline
interval(uint16_t interval_millis)Debouncer
interval_millis (defined in Debouncer)Debouncerprotected
isPressed() constBounce2::Buttoninline
pinBounceprotected
pressed() constBounce2::Buttoninline
previous_millis (defined in Debouncer)Debouncerprotected
previousDuration() constDebouncer
read() constDebouncer
readCurrentState() (defined in Bounce)Bounceinlineprotectedvirtual
released() constBounce2::Buttoninline
risingEdge() constBounceinline
rose() constDebouncer
setPinMode(int pin, int mode) (defined in Bounce)Bounceinlineprotectedvirtual
setPressedState(bool state)Bounce2::Buttoninline
state (defined in Debouncer)Debouncerprotected
stateChangeLastTime (defined in Debouncer)Debouncerprotected
stateForPressed (defined in Bounce2::Button)Bounce2::Buttonprotected
update()Debouncer
duration() constDebouncer
durationOfPreviousState (defined in Debouncer)Debouncerprotected
fallingEdge() constBounceinline
fell() constDebouncer
getPin() constBounceinline
getPressedState() constBounce2::Buttoninline
interval(uint16_t interval_millis)Debouncer
interval_millis (defined in Debouncer)Debouncerprotected
isPressed() constBounce2::Buttoninline
pinBounceprotected
pressed() constBounce2::Buttoninline
previous_millis (defined in Debouncer)Debouncerprotected
previousDuration() constDebouncer
read() constDebouncer
readCurrentState() (defined in Bounce)Bounceinlineprotectedvirtual
released() constBounce2::Buttoninline
risingEdge() constBounceinline
rose() constDebouncer
setPinMode(int pin, int mode) (defined in Bounce)Bounceinlineprotectedvirtual
setPressedState(bool state)Bounce2::Buttoninline
state (defined in Debouncer)Debouncerprotected
stateChangeLastTime (defined in Debouncer)Debouncerprotected
stateForPressed (defined in Bounce2::Button)Bounce2::Buttonprotected
update()Debouncer
diff --git a/docs/files/class_bounce2_1_1_button.html b/docs/files/class_bounce2_1_1_button.html index 867e51a..df9bc61 100644 --- a/docs/files/class_bounce2_1_1_button.html +++ b/docs/files/class_bounce2_1_1_button.html @@ -2,8 +2,8 @@ - - + + Bounce2: Bounce2::Button Class Reference @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
Public Member Functions | Protected Attributes | List of all members
-
-
Bounce2::Button Class Reference
+
Bounce2::Button Class Reference
@@ -84,7 +84,7 @@ Inheritance diagram for Bounce2::Button:
- @@ -92,21 +92,21 @@ Public Member Functions - + - + - + - + @@ -119,18 +119,18 @@ bool  - - + - + @@ -146,12 +146,12 @@ bool  - + - + @@ -160,53 +160,58 @@ bool  + + +

+

Public Member Functions

 Button ()
 Create an instance of the Button class. By default, the pressed state is matched to a HIGH electrical level. More...
void setPressedState (bool state)
 Set the electrical state (HIGH/LOW) that corresponds to a physical press. By default, the pressed state is matched to a HIGH electrical level. More...
 
-bool getPressedState () const
+bool getPressedState () const
 Get the electrical state (HIGH/LOW) that corresponds to a physical press.
 
-bool isPressed () const
+bool isPressed () const
 Returns true if the button is currently physically pressed.
 
-bool pressed () const
+bool pressed () const
 Returns true if the button was physically pressed

 
-bool released () const
+bool released () const
 Returns true if the button was physically released

 
 
void attach (int pin)
 
+
 Bounce (uint8_t pin, unsigned long interval_millis)
 
int getPin () const
 Return pin that this Bounce is attached to. More...
 
-bool risingEdge () const
+bool risingEdge () const
 Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce version 1.
 
-bool fallingEdge () const
+bool fallingEdge () const
 Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce version 1.
 
- Public Member Functions inherited from Debouncer
bool read () const
 Returns the pin's state (HIGH or LOW). More...
 
-bool fell () const
+bool fell () const
 Returns true if pin signal transitions from high to low.
 
-bool rose () const
+bool rose () const
 Returns true if pin signal transitions from low to high.
 
bool changed () const
unsigned long currentDuration () const
 Returns the duration in milliseconds of the current state. More...
 
unsigned long duration () const
 Returns the duration in milliseconds of the current state. More...
 
unsigned long previousDuration () const
 Returns the duration in milliseconds of the previous state. More...
 
- - - + - - - - -

+

Protected Attributes

+
bool stateForPressed = 1
 
- Protected Attributes inherited from Bounce
-uint8_t pin
+uint8_t pin
 Deprecated (i.e. do not use). Included for partial compatibility for programs written with Bounce version 1.
 
- Protected Attributes inherited from Debouncer
+
unsigned long previous_millis
 
+
uint16_t interval_millis
 
+
uint8_t state
 
+
unsigned long stateChangeLastTime
 
+
unsigned long durationOfPreviousState
 
- - + - - + +

+

Additional Inherited Members

- Protected Member Functions inherited from Bounce
-virtual bool readCurrentState ()
virtual bool readCurrentState ()
 
+
virtual void setPinMode (int pin, int mode)
 
- Protected Member Functions inherited from Debouncer
+
void begin ()
 
+virtual bool readCurrentState ()=0
 

Constructor & Destructor Documentation

- +

◆ Button()

@@ -231,12 +236,13 @@ void begin ()Create an instance of the Button class. By default, the pressed state is matched to a HIGH electrical level.

// Create an instance of the Button class.
-
Button() button;
+
Button() button;
+
Button()
Create an instance of the Button class. By default, the pressed state is matched to a HIGH electrical...
Definition: Bounce2.h:284

Member Function Documentation

- +

◆ setPressedState()

@@ -274,12 +280,9 @@ void begin ()src/Bounce2.h
-
Button()
Create an instance of the Button class. By default, the pressed state is matched to a HIGH electrical...
Definition: Bounce2.h:272
diff --git a/docs/files/class_debouncer-members.html b/docs/files/class_debouncer-members.html index 38e32cd..0016793 100644 --- a/docs/files/class_debouncer-members.html +++ b/docs/files/class_debouncer-members.html @@ -2,8 +2,8 @@ - - + + Bounce2: Member List @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
-
-
Debouncer Member List
+
Debouncer Member List

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

- + - - - - - - - - - - - - - + + + + + + + + + + + + + +
begin() (defined in Debouncer)Debouncerprotected
changed() constDebouncerinline
changed() constDebouncerinline
currentDuration() constDebouncer
Debouncer()Debouncer
durationOfPreviousState (defined in Debouncer)Debouncerprotected
fell() constDebouncer
interval(uint16_t interval_millis)Debouncer
interval_millis (defined in Debouncer)Debouncerprotected
previous_millis (defined in Debouncer)Debouncerprotected
previousDuration() constDebouncer
read() constDebouncer
readCurrentState()=0 (defined in Debouncer)Debouncerprotectedpure virtual
rose() constDebouncer
state (defined in Debouncer)Debouncerprotected
stateChangeLastTime (defined in Debouncer)Debouncerprotected
update()Debouncer
Debouncer()Debouncer
duration() constDebouncer
durationOfPreviousState (defined in Debouncer)Debouncerprotected
fell() constDebouncer
interval(uint16_t interval_millis)Debouncer
interval_millis (defined in Debouncer)Debouncerprotected
previous_millis (defined in Debouncer)Debouncerprotected
previousDuration() constDebouncer
read() constDebouncer
readCurrentState()=0 (defined in Debouncer)Debouncerprotectedpure virtual
rose() constDebouncer
state (defined in Debouncer)Debouncerprotected
stateChangeLastTime (defined in Debouncer)Debouncerprotected
update()Debouncer
diff --git a/docs/files/class_debouncer.html b/docs/files/class_debouncer.html index ae47dfa..101ccef 100644 --- a/docs/files/class_debouncer.html +++ b/docs/files/class_debouncer.html @@ -2,8 +2,8 @@ - - + + Bounce2: Debouncer Class Reference @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
Protected Member Functions | Protected Attributes | List of all members
-
-
Debouncer Class Referenceabstract
+
Debouncer Class Referenceabstract
@@ -86,7 +86,7 @@ Inheritance diagram for Debouncer:
- @@ -100,12 +100,12 @@ Public Member Functions - + - + @@ -114,41 +114,44 @@ bool  + + +

+

Public Member Functions

 Debouncer ()
 Create an instance of the Debounce class. More...
bool read () const
 Returns the pin's state (HIGH or LOW). More...
 
-bool fell () const
+bool fell () const
 Returns true if pin signal transitions from high to low.
 
-bool rose () const
+bool rose () const
 Returns true if pin signal transitions from low to high.
 
bool changed () const
unsigned long currentDuration () const
 Returns the duration in milliseconds of the current state. More...
 
unsigned long duration () const
 Returns the duration in milliseconds of the current state. More...
 
unsigned long previousDuration () const
 Returns the duration in milliseconds of the previous state. More...
 
- - -

+

Protected Member Functions

+
void begin ()
 
+
virtual bool readCurrentState ()=0
 
- - - - - -

+

Protected Attributes

+
unsigned long previous_millis
 
+
uint16_t interval_millis
 
+
uint8_t state
 
+
unsigned long stateChangeLastTime
 
+
unsigned long durationOfPreviousState
 

Detailed Description

-

The Debouce class. Just the deboucing code separated from all harware.

+

The Debouce class. Just the deboucing code separated from all harware.

Constructor & Destructor Documentation

- +

◆ Debouncer()

@@ -168,7 +171,7 @@ unsigned long durationOfPr

Member Function Documentation

- +

◆ changed()

@@ -196,7 +199,7 @@ unsigned long durationOfPr
- +

◆ currentDuration()

@@ -212,12 +215,35 @@ unsigned long durationOfPr

Returns the duration in milliseconds of the current state.

-

Is reset to 0 once the pin rises ( rose() ) or falls ( fell() ).

+

Is reset to 0 once the pin rises ( rose() ) or falls ( fell() ).

Returns
The duration in milliseconds (unsigned long) of the current state.
- + +

◆ duration()

+ +
+
+ + + + + + + +
unsigned long Debouncer::duration () const
+
+ +

Returns the duration in milliseconds of the current state.

+
Deprecated:
since 2.70
+

Is reset to 0 once the pin rises ( rose() ) or falls ( fell() ).

+

This function is deprecated in favor of currentDuration() and may be removed in future versions.

+
Returns
The duration in milliseconds (unsigned long) of the current state.
+ +
+
+

◆ interval()

@@ -243,7 +269,7 @@ unsigned long durationOfPr
- +

◆ previousDuration()

@@ -259,12 +285,12 @@ unsigned long durationOfPr

Returns the duration in milliseconds of the previous state.

-

Takes the values of duration() once the pin changes state.

+

Takes the values of duration() once the pin changes state.

Returns
The duration in milliseconds (unsigned long) of the previous state.
- +

◆ read()

@@ -284,7 +310,7 @@ unsigned long durationOfPr
- +

◆ update()

@@ -300,7 +326,7 @@ unsigned long durationOfPr

Updates the pin's state.

-

Because Bounce does not use interrupts, you have to "update" the object before reading its value and it has to be done as often as possible (that means to include it in your loop()). Only call update() once per loop().

+

Because Bounce does not use interrupts, you have to "update" the object before reading its value and it has to be done as often as possible (that means to include it in your loop()). Only call update() once per loop().

Returns
True if the pin changed state.
@@ -312,9 +338,7 @@ unsigned long durationOfPr diff --git a/docs/files/classes.html b/docs/files/classes.html index 22d2713..fc8839a 100644 --- a/docs/files/classes.html +++ b/docs/files/classes.html @@ -2,8 +2,8 @@ - - + + Bounce2: Class Index @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -61,32 +62,22 @@ $(function() {
-
-
Class Index
+
Class Index
-
b | d
- - - - - - - - - - - -
  b  
-
Button (Bounce2)   
  d  
-
Bounce   
Debouncer   
-
b | d
+
B | D
+
diff --git a/docs/files/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/files/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 6c6997a..b9581c7 100644 --- a/docs/files/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/docs/files/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -2,8 +2,8 @@ - - + + Bounce2: src Directory Reference @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
-
-
src Directory Reference
+
src Directory Reference
+ + + + +

+Files

file  Bounce2.h [code]
 
diff --git a/docs/files/doxygen.css b/docs/files/doxygen.css index 73ecbb2..9036737 100644 --- a/docs/files/doxygen.css +++ b/docs/files/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.8.17 */ +/* The standard CSS for doxygen 1.9.3 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; @@ -66,7 +66,7 @@ p.startli, p.startdd { margin-top: 2px; } -th p.starttd, p.intertd, p.endtd { +th p.starttd, th p.intertd, th p.endtd { font-size: 100%; font-weight: 700; } @@ -103,30 +103,96 @@ caption { } span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; + font-size: 70%; text-align: center; } -div.qindex, div.navpath { - width: 100%; - line-height: 140%; +h3.version { + font-size: 90%; + text-align: center; } div.navtab { - margin-right: 15px; + 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 { @@ -143,17 +209,6 @@ a:hover { text-decoration: underline; } -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - .contents a.qindexHL:visited { color: #FFFFFF; } @@ -173,6 +228,33 @@ a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { color: #4665A2; } +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + /* @end */ dl.el { @@ -180,7 +262,7 @@ dl.el { } ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ + overflow: visible; } #side-nav ul { @@ -258,6 +340,7 @@ div.line.glow { span.lineno { padding-right: 4px; + margin-right: 9px; text-align: right; border-right: 2px solid #0F0; background-color: #E8E8E8; @@ -384,6 +467,12 @@ img.footer { vertical-align: middle; } +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + /* @group Code Colorization */ span.keyword { @@ -1267,6 +1356,11 @@ dl.section dd { } +#projectrow +{ + height: 56px; +} + #projectlogo { text-align: center; @@ -1282,18 +1376,19 @@ dl.section dd { #projectalign { vertical-align: middle; + padding-left: 0.5em; } #projectname { - font: 300% Tahoma, Arial,sans-serif; + font: 200% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px; } #projectbrief { - font: 120% Tahoma, Arial,sans-serif; + font: 90% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } @@ -1358,10 +1453,12 @@ dl.citelist dt { font-weight:bold; margin-right:10px; padding:5px; + text-align:right; + width:52px; } dl.citelist dd { - margin:2px 0; + margin:2px 0 2px 72px; padding:5px 0; } @@ -1424,6 +1521,16 @@ 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; + */ +} + +span.obfuscator { + display: none; +} + .PageDocRTL-title div.toc li.level1 { margin-left: 0 !important; margin-right: 0; @@ -1478,7 +1585,7 @@ tr.heading h2 { #powerTip { cursor: default; - white-space: nowrap; + /*white-space: nowrap;*/ background-color: white; border: 1px solid gray; border-radius: 4px 4px 4px 4px; @@ -1661,47 +1768,6 @@ tr.heading h2 { /* @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.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - table.markdownTable { border-collapse:collapse; margin-top: 4px; @@ -1758,6 +1824,10 @@ table.DocNodeLTR { margin-left: 0; } +code.JavaDocCode + direction:ltr; +} + tt, code, kbd, samp { display: inline-block; diff --git a/docs/files/dynsections.js b/docs/files/dynsections.js index ea0a7b3..3174bd7 100644 --- a/docs/files/dynsections.js +++ b/docs/files/dynsections.js @@ -1,25 +1,26 @@ /* - @licstart The following is the entire license notice for the - JavaScript code in this file. + @licstart The following is the entire license notice for the JavaScript code in this file. - Copyright (C) 1997-2017 by Dimitri van Heesch + The MIT License (MIT) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + Copyright (C) 1997-2020 by Dimitri van Heesch - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + 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: - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. - @licend The above is the entire license notice - for the JavaScript code in this file + 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) { diff --git a/docs/files/examples.html b/docs/files/examples.html index d8d9fae..6f78c91 100644 --- a/docs/files/examples.html +++ b/docs/files/examples.html @@ -2,8 +2,8 @@ - - + + Bounce2: Examples @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -61,22 +62,17 @@ $(function() {
-
-
Examples
+
Examples
Here is a list of all examples:
diff --git a/docs/files/files.html b/docs/files/files.html index 85b1be9..76d796c 100644 --- a/docs/files/files.html +++ b/docs/files/files.html @@ -2,8 +2,8 @@ - - + + Bounce2: File List @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -61,8 +62,7 @@ $(function() {
-
-
File List
+
File List
Here is a list of all documented files with brief descriptions:
@@ -74,9 +74,7 @@ $(function() {
diff --git a/docs/files/functions.html b/docs/files/functions.html index d926b39..043cdc7 100644 --- a/docs/files/functions.html +++ b/docs/files/functions.html @@ -2,8 +2,8 @@ - - + + Bounce2: Class Members @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
@@ -62,76 +63,33 @@ $(function() {
Here is a list of all documented class members with links to the class documentation for each member:
diff --git a/docs/files/functions_func.html b/docs/files/functions_func.html index bb349e4..bee6dba 100644 --- a/docs/files/functions_func.html +++ b/docs/files/functions_func.html @@ -2,8 +2,8 @@ - - + + Bounce2: Class Members - Functions @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -62,73 +63,32 @@ $(function() {
 
diff --git a/docs/files/functions_vars.html b/docs/files/functions_vars.html index 27a425c..98168ad 100644 --- a/docs/files/functions_vars.html +++ b/docs/files/functions_vars.html @@ -2,8 +2,8 @@ - - + + Bounce2: Class Members - Variables @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -62,16 +63,12 @@ $(function() {
 
diff --git a/docs/files/hierarchy.html b/docs/files/hierarchy.html index 475b4cc..c113ca0 100644 --- a/docs/files/hierarchy.html +++ b/docs/files/hierarchy.html @@ -2,8 +2,8 @@ - - + + Bounce2: Class Hierarchy @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ + @@ -61,8 +62,7 @@ $(function() {
-
-
Class Hierarchy
+
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
@@ -75,9 +75,7 @@ $(function() {
diff --git a/docs/files/index.html b/docs/files/index.html index dc8dddf..d342e62 100644 --- a/docs/files/index.html +++ b/docs/files/index.html @@ -2,8 +2,8 @@ - - + + Bounce2: BOUNCE 2 @@ -19,8 +19,8 @@
- - + @@ -29,21 +29,22 @@
+
Bounce2
- + +/* @license-end */ +
@@ -60,39 +61,44 @@ $(function() { -
-
-
BOUNCE 2
+
+
BOUNCE 2
-

Debouncing library for Arduino and Wiring by Thomas Ouellet Fredericks with many contributions from the community : https://github.com/thomasfredericks/Bounce2/graphs/contributors

-

Basically, the mechanical part of buttons and switches vibrate slightly when closed or opened causing multiple undesired false states (similar to noise). This library filters out these undesired state changes. More about debouncing:

    +

    Debouncing library for Arduino and Wiring by Thomas Ouellet Fredericks with many contributions from the community : https://github.com/thomasfredericks/Bounce2/graphs/contributors

    +

    Basically, the mechanical part of buttons and switches vibrate slightly when closed or opened causing multiple undesired false states (similar to noise). This library filters out these undesired state changes. More about debouncing:

    -

    See the bottom of this page for a basic usage example and the "examples" folder for more.

    -

    The library is composed of three classes:

      +

      See the bottom of this page for a basic usage example and the "examples" folder for more.

      +

      The library is composed of three classes:

      • Debouncer : The code that does the actual debouncing. Only advanced users should play with this class.
      • Bounce : This is the general use library. It links the Debouncer to a hardware pin on your board.
      • Button : A special version of Bounce for buttons that are pressed.

      INSTALLATION & DOWNLOAD

      -

      Install through your software's Library Manager or download the latest version here and put the "Bounce2" folder in your "libraries" folder.

      -

      Please note that the original version of this library (Bounce 1) is included in the "extras" folder of the download but not supported anymore.

      +

      Install through your software's Library Manager or download the latest version here and put the "Bounce2" folder in your "libraries" folder.

      +

      Please note that the original version of this library (Bounce 1) is included in the "extras" folder of the download but not supported anymore.

      BASIC USE

      INSTANTIATE

      #include <Bounce2.h>
      -
      Bounce b = Bounce(); // Instantiate a Bounce object
      +
      Bounce b = Bounce(); // Instantiate a Bounce object
      +
      The Debouncer:Bounce class. Links the Deboucing class to a hardware pin. This class is odly named,...
      Definition: Bounce2.h:181

      SETUP

      -
      b.attach ( <PIN> , <PIN MODE> );
      -
      b.interval( <INTERVAL IN MS> );
      -

      LOOP

      -
      b.update();
      -
      if ( b.changed() ) {
      +
      b.attach ( <PIN> , <PIN MODE> );
      +
      b.interval( <INTERVAL IN MS> );
      +
      void attach(int pin, int mode)
      Attach to a pin and sets that pin's mode (INPUT, INPUT_PULLUP or OUTPUT).
      Definition: Bounce2.cpp:153
      +
      void interval(uint16_t interval_millis)
      Sets the debounce interval in milliseconds.
      Definition: Bounce2.cpp:14
      +

      LOOP

      +
      b.update();
      +
      if ( b.changed() ) {
      // THE STATE OF THE INPUT CHANGED
      -
      int deboucedValue = b.read();
      +
      int deboucedValue = b.read();
      // DO SOMETHING WITH THE VALUE
      }
      +
      bool changed() const
      Returns true if the state changed on last update.
      Definition: Bounce2.h:130
      +
      bool update()
      Updates the pin's state.
      Definition: Bounce2.cpp:32
      +
      bool read() const
      Returns the pin's state (HIGH or LOW).
      Definition: Bounce2.cpp:122

      BOUNCE EXAMPLE

      // This example toggles the debug LED (pin 13) on or off when a button on pin 2 is pressed.
      @@ -106,12 +112,12 @@ $(function() {
      int ledState = LOW;
      -
      Bounce b = Bounce(); // Instantiate a Bounce object
      +
      Bounce b = Bounce(); // Instantiate a Bounce object
      void setup() {
      -
      b.attach(BUTTON_PIN,INPUT_PULLUP); // Attach the debouncer to a pin with INPUT_PULLUP mode
      -
      b.interval(25); // Use a debounce interval of 25 milliseconds
      +
      b.attach(BUTTON_PIN,INPUT_PULLUP); // Attach the debouncer to a pin with INPUT_PULLUP mode
      +
      b.interval(25); // Use a debounce interval of 25 milliseconds
      pinMode(LED_PIN,OUTPUT); // Setup the LED
      @@ -121,13 +127,14 @@ $(function() {
      void loop() {
      -
      b.update(); // Update the Bounce instance
      +
      b.update(); // Update the Bounce instance
      -
      if ( b.fell() ) { // Call code if button transitions from HIGH to LOW
      +
      if ( b.fell() ) { // Call code if button transitions from HIGH to LOW
      ledState = !ledState; // Toggle LED state
      digitalWrite(LED_PIN,ledState); // Apply new LED state
      }
      }
      +
      bool fell() const
      Returns true if pin signal transitions from high to low.
      Definition: Bounce2.cpp:132

      BUTTON EXAMPLE

      /*
      DESCRIPTION
      @@ -149,7 +156,7 @@ $(function() {
      #include <Bounce2.h>
      // INSTANTIATE A Button OBJECT
      - +
      // WE WILL attach() THE BUTTON TO THE FOLLOWING PIN IN setup()
      #define BUTTON_PIN 39
      @@ -171,13 +178,13 @@ $(function() {
      // 1) IF YOUR BUTTON HAS AN INTERNAL PULL-UP
      // button.attach( BUTTON_PIN , INPUT_PULLUP ); // USE INTERNAL PULL-UP
      // 2) IF YOUR BUTTON USES AN EXTERNAL PULL-UP
      -
      button.attach( BUTTON_PIN, INPUT ); // USE EXTERNAL PULL-UP
      +
      button.attach( BUTTON_PIN, INPUT ); // USE EXTERNAL PULL-UP
      // DEBOUNCE INTERVAL IN MILLISECONDS
      -
      button.interval(5);
      +
      button.interval(5);
      // INDICATE THAT THE LOW STATE CORRESPONDS TO PHYSICALLY PRESSING THE BUTTON
      -
      button.setPressedState(LOW);
      +
      button.setPressedState(LOW);
      // LED SETUP
      pinMode(LED_PIN,OUTPUT);
      @@ -188,9 +195,9 @@ $(function() {
      void loop() {
      // UPDATE THE BUTTON
      // YOU MUST CALL THIS EVERY LOOP
      -
      button.update();
      +
      button.update();
      -
      if ( button.pressed() ) {
      +
      if ( button.pressed() ) {
      // TOGGLE THE LED STATE :
      ledState = !ledState; // SET ledState TO THE OPPOSITE OF ledState
      @@ -198,22 +205,25 @@ $(function() {
      }
      }
      +
      Definition: Bounce2.h:270
      +
      void setPressedState(bool state)
      Set the electrical state (HIGH/LOW) that corresponds to a physical press. By default,...
      Definition: Bounce2.h:293
      +
      bool pressed() const
      Returns true if the button was physically pressed
      Definition: Bounce2.h:314

      DOCUMENTATION

      -

      The complete class documentation can be found in the "docs" folder or online here.

      +

      The complete class documentation can be found in the "docs" folder or online here.

      GITHUB PAGE (SOURCE CODE)

      -

      https://github.com/thomasfredericks/Bounce2

      +

      https://github.com/thomasfredericks/Bounce2

      HAVE A QUESTION?

      -

      Please post your questions here.

      +

      Please post your questions here.

      ALTERNATE DEBOUNCE ALGORITHMS FOR ADVANCED USERS AND SPECIFIC CASES

      STABLE INTERVAL

      -

      By default, the Bounce library uses a stable interval to process the debouncing. This is simpler to understand and can cancel unwanted noise.

      -

      +

      By default, the Bounce library uses a stable interval to process the debouncing. This is simpler to understand and can cancel unwanted noise.

      +

      LOCK-OUT INTERVAL

      -

      By defining "#define BOUNCE_LOCK_OUT" in "Bounce.h" (or in your code before including "Bounce.h") you can activate an alternative debouncing method. This method is a lot more responsive, but does not cancel noise.

      +

      By defining "#define BOUNCE_LOCK_OUT" in "Bounce.h" (or in your code before including "Bounce.h") you can activate an alternative debouncing method. This method is a lot more responsive, but does not cancel noise.

      #define BOUNCE_LOCK_OUT
      -

      +

      WITH PROMPT DETECTION

      -

      By defining "#define BOUNCE_WITH_PROMPT_DETECTION" in "Bounce.h" (or in your code before including "Bounce.h") you can activate an alternative debouncing method. Button state changes are available immediately so long as the previous state has been stable for the timeout period. Otherwise the state will be updated as soon as the timeout period allows.

      +

      By defining "#define BOUNCE_WITH_PROMPT_DETECTION" in "Bounce.h" (or in your code before including "Bounce.h") you can activate an alternative debouncing method. Button state changes are available immediately so long as the previous state has been stable for the timeout period. Otherwise the state will be updated as soon as the timeout period allows.

      • Able to report acurate switch time normally with no delay.
      • Use when accurate switch transition timing is important.
      • @@ -221,21 +231,9 @@ $(function() {
        #define BOUNCE_WITH_PROMPT_DETECTION
-
Definition: Bounce2.h:258
-
void interval(uint16_t interval_millis)
Sets the debounce interval in milliseconds.
Definition: Bounce2.cpp:14
-
bool pressed() const
Returns true if the button was physically pressed
Definition: Bounce2.h:302
-
bool update()
Updates the pin's state.
Definition: Bounce2.cpp:32
-
The Debouncer:Bounce class. Links the Deboucing class to a hardware pin. This class is odly named,...
Definition: Bounce2.h:168
-
void setPressedState(bool state)
Set the electrical state (HIGH/LOW) that corresponds to a physical press. By default,...
Definition: Bounce2.h:281
-
bool fell() const
Returns true if pin signal transitions from high to low.
Definition: Bounce2.cpp:128
-
void attach(int pin, int mode)
Attach to a pin and sets that pin's mode (INPUT, INPUT_PULLUP or OUTPUT).
Definition: Bounce2.cpp:149
-
bool read() const
Returns the pin's state (HIGH or LOW).
Definition: Bounce2.cpp:118
-
bool changed() const
Returns true if the state changed on last update.
Definition: Bounce2.h:130
diff --git a/docs/files/jquery.js b/docs/files/jquery.js index 103c32d..c9ed3d9 100644 --- a/docs/files/jquery.js +++ b/docs/files/jquery.js @@ -1,5 +1,5 @@ -/*! 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 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),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-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|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(p.childNodes),p.childNodes),t[p.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&&(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&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$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[S]=!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&&e.namespaceURI,n=e&&(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:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),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=S,!C.getElementsByName||!C.getElementsByName(S).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){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),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("!=",F)}),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},j=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==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,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]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[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){N(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=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(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)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.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 S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.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(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(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;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={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)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").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 _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.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(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.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?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.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=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.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,S.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)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.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"===S.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"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.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)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.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?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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){S.fn[n]=function(e,t){return 0
'); + searchBox='
'+ + '
'+ + '
'+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; } else { - $('#main-menu').append('
  • '); + searchBox='
    '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
    '; } } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } $('#main-menu').smartmenus(); } /* @license-end */ diff --git a/docs/files/menudata.js b/docs/files/menudata.js index b9c04a5..2515e5b 100644 --- a/docs/files/menudata.js +++ b/docs/files/menudata.js @@ -1,27 +1,30 @@ /* -@licstart The following is the entire license notice for the -JavaScript code in this file. + @licstart The following is the entire license notice for the JavaScript code in this file. -Copyright (C) 1997-2019 by Dimitri van Heesch + The MIT License (MIT) -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation + Copyright (C) 1997-2020 by Dimitri van Heesch -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + 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: -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. -@licend The above is the entire license notice -for the JavaScript code in this file + 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:"Related Pages",url:"pages.html"}, {text:"Namespaces",url:"namespaces.html",children:[ {text:"Namespace List",url:"namespaces.html"}]}, {text:"Classes",url:"annotated.html",children:[ diff --git a/docs/files/namespace_bounce2.html b/docs/files/namespace_bounce2.html index bcbe7e7..bc05754 100644 --- a/docs/files/namespace_bounce2.html +++ b/docs/files/namespace_bounce2.html @@ -2,8 +2,8 @@ - - + + Bounce2: Bounce2 Namespace Reference @@ -19,8 +19,8 @@
    - - + @@ -29,21 +29,22 @@
    +
    Bounce2
    - + +/* @license-end */ +
    -
    -
    Bounce2 Namespace Reference
    +
    Bounce2 Namespace Reference

    The Debouncer:Bounce:Button class. The Button class matches an electrical state to a physical action. More...

    -

    +

    Classes

    class  Button
     

    Detailed Description

    -

    The Debouncer:Bounce:Button class. The Button class matches an electrical state to a physical action.

    +

    The Debouncer:Bounce:Button class. The Button class matches an electrical state to a physical action.

    diff --git a/docs/files/namespaces.html b/docs/files/namespaces.html index be40128..652c38c 100644 --- a/docs/files/namespaces.html +++ b/docs/files/namespaces.html @@ -2,8 +2,8 @@ - - + + Bounce2: Namespace List @@ -19,8 +19,8 @@
    - - + @@ -29,21 +29,22 @@
    +
    Bounce2
    - + +/* @license-end */ +
    @@ -61,21 +62,19 @@ $(function() {
    -
    -
    Namespace List
    +
    Namespace List
    Here is a list of all documented namespaces with brief descriptions:
    - - +
    [detail level 12]
     NBounce2The Debouncer:Bounce:Button class. The Button class matches an electrical state to a physical action
    + +
     ▼NBounce2The Debouncer:Bounce:Button class. The Button class matches an electrical state to a physical action
     CButton
    diff --git a/docs/files/search/all_0.html b/docs/files/search/all_0.html index 26dd244..c36c9af 100644 --- a/docs/files/search/all_0.html +++ b/docs/files/search/all_0.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_1.html b/docs/files/search/all_1.html index 8eb215b..91cfe8a 100644 --- a/docs/files/search/all_1.html +++ b/docs/files/search/all_1.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_1.js b/docs/files/search/all_1.js index 767cbc6..28369e5 100644 --- a/docs/files/search/all_1.js +++ b/docs/files/search/all_1.js @@ -1,7 +1,7 @@ var searchData= [ - ['bounce_1',['Bounce',['../class_bounce.html',1,'Bounce'],['../class_bounce.html#aa62a2e2b5ad0ee6913a95f2f2a0e7606',1,'Bounce::Bounce()']]], + ['bounce_0',['Bounce',['../class_bounce.html',1,'Bounce'],['../class_bounce.html#aa62a2e2b5ad0ee6913a95f2f2a0e7606',1,'Bounce::Bounce()']]], + ['bounce_202_1',['BOUNCE 2',['../index.html',1,'']]], ['bounce2_2',['Bounce2',['../namespace_bounce2.html',1,'']]], - ['button_3',['Button',['../class_bounce2_1_1_button.html',1,'Bounce2::Button'],['../class_bounce2_1_1_button.html#a18710b645862d2b8f058a73aabbaf7ad',1,'Bounce2::Button::Button()']]], - ['bounce_202_4',['BOUNCE 2',['../index.html',1,'']]] + ['button_3',['Button',['../class_bounce2_1_1_button.html',1,'Bounce2::Button'],['../class_bounce2_1_1_button.html#a18710b645862d2b8f058a73aabbaf7ad',1,'Bounce2::Button::Button()']]] ]; diff --git a/docs/files/search/all_2.html b/docs/files/search/all_2.html index b26d916..259dde4 100644 --- a/docs/files/search/all_2.html +++ b/docs/files/search/all_2.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_2.js b/docs/files/search/all_2.js index d01b109..9337f54 100644 --- a/docs/files/search/all_2.js +++ b/docs/files/search/all_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['changed_5',['changed',['../class_debouncer.html#a1bbd627f9d8809b5ee9e64e9fb21e248',1,'Debouncer']]], - ['currentduration_6',['currentDuration',['../class_debouncer.html#a883645ca26b4df6e5823586432104d11',1,'Debouncer']]] + ['changed_0',['changed',['../class_debouncer.html#a1bbd627f9d8809b5ee9e64e9fb21e248',1,'Debouncer']]], + ['currentduration_1',['currentDuration',['../class_debouncer.html#a883645ca26b4df6e5823586432104d11',1,'Debouncer']]] ]; diff --git a/docs/files/search/all_3.html b/docs/files/search/all_3.html index b61b96f..1e60c94 100644 --- a/docs/files/search/all_3.html +++ b/docs/files/search/all_3.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_3.js b/docs/files/search/all_3.js index 10b8335..7749728 100644 --- a/docs/files/search/all_3.js +++ b/docs/files/search/all_3.js @@ -1,4 +1,6 @@ var searchData= [ - ['debouncer_7',['Debouncer',['../class_debouncer.html',1,'Debouncer'],['../class_debouncer.html#a34c46ca04d4178933cc0049436d10fe6',1,'Debouncer::Debouncer()']]] + ['debouncer_0',['Debouncer',['../class_debouncer.html',1,'Debouncer'],['../class_debouncer.html#a34c46ca04d4178933cc0049436d10fe6',1,'Debouncer::Debouncer()']]], + ['deprecated_20list_1',['Deprecated List',['../deprecated.html',1,'']]], + ['duration_2',['duration',['../class_debouncer.html#aecef41e77bd00747ed895f8f77480b6d',1,'Debouncer']]] ]; diff --git a/docs/files/search/all_4.html b/docs/files/search/all_4.html index 06de155..08f1aed 100644 --- a/docs/files/search/all_4.html +++ b/docs/files/search/all_4.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_4.js b/docs/files/search/all_4.js index 3787fd7..2d36412 100644 --- a/docs/files/search/all_4.js +++ b/docs/files/search/all_4.js @@ -1,5 +1,5 @@ var searchData= [ - ['fallingedge_8',['fallingEdge',['../class_bounce.html#a3ef5b85db62a7a7807f0050c86cc735f',1,'Bounce']]], - ['fell_9',['fell',['../class_debouncer.html#a80315de311b855f9787b4b6d5b7899e0',1,'Debouncer']]] + ['fallingedge_0',['fallingEdge',['../class_bounce.html#a3ef5b85db62a7a7807f0050c86cc735f',1,'Bounce']]], + ['fell_1',['fell',['../class_debouncer.html#a80315de311b855f9787b4b6d5b7899e0',1,'Debouncer']]] ]; diff --git a/docs/files/search/all_5.html b/docs/files/search/all_5.html index 2544c4e..0d85fcc 100644 --- a/docs/files/search/all_5.html +++ b/docs/files/search/all_5.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_5.js b/docs/files/search/all_5.js index cc156f9..4cc3715 100644 --- a/docs/files/search/all_5.js +++ b/docs/files/search/all_5.js @@ -1,5 +1,5 @@ var searchData= [ - ['getpin_10',['getPin',['../class_bounce.html#a114878745aa1f29d3c0c293538280646',1,'Bounce']]], - ['getpressedstate_11',['getPressedState',['../class_bounce2_1_1_button.html#a1f90c647e0c75d243cdafed16c6eb28c',1,'Bounce2::Button']]] + ['getpin_0',['getPin',['../class_bounce.html#a114878745aa1f29d3c0c293538280646',1,'Bounce']]], + ['getpressedstate_1',['getPressedState',['../class_bounce2_1_1_button.html#a1f90c647e0c75d243cdafed16c6eb28c',1,'Bounce2::Button']]] ]; diff --git a/docs/files/search/all_6.html b/docs/files/search/all_6.html index 43f14ea..7e088b8 100644 --- a/docs/files/search/all_6.html +++ b/docs/files/search/all_6.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_6.js b/docs/files/search/all_6.js index 5868912..1efc7b4 100644 --- a/docs/files/search/all_6.js +++ b/docs/files/search/all_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['interval_12',['interval',['../class_debouncer.html#a930bf3945e698d77b889f6309079857d',1,'Debouncer']]], - ['ispressed_13',['isPressed',['../class_bounce2_1_1_button.html#a73c7c9ef574afe8bf1a9f3eb492bfa7f',1,'Bounce2::Button']]] + ['interval_0',['interval',['../class_debouncer.html#a930bf3945e698d77b889f6309079857d',1,'Debouncer']]], + ['ispressed_1',['isPressed',['../class_bounce2_1_1_button.html#a73c7c9ef574afe8bf1a9f3eb492bfa7f',1,'Bounce2::Button']]] ]; diff --git a/docs/files/search/all_7.html b/docs/files/search/all_7.html index af52f82..d2b1825 100644 --- a/docs/files/search/all_7.html +++ b/docs/files/search/all_7.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_7.js b/docs/files/search/all_7.js index 99db241..10ff5d4 100644 --- a/docs/files/search/all_7.js +++ b/docs/files/search/all_7.js @@ -1,6 +1,6 @@ var searchData= [ - ['pin_14',['pin',['../class_bounce.html#a1cb79cb0ba2379cd12cc7c098d97053a',1,'Bounce']]], - ['pressed_15',['pressed',['../class_bounce2_1_1_button.html#a61541ae21354cb7f5cc5bc8c05db59dd',1,'Bounce2::Button']]], - ['previousduration_16',['previousDuration',['../class_debouncer.html#ac6af22dc9c6ae84462fe356b7430659e',1,'Debouncer']]] + ['pin_0',['pin',['../class_bounce.html#a1cb79cb0ba2379cd12cc7c098d97053a',1,'Bounce']]], + ['pressed_1',['pressed',['../class_bounce2_1_1_button.html#a61541ae21354cb7f5cc5bc8c05db59dd',1,'Bounce2::Button']]], + ['previousduration_2',['previousDuration',['../class_debouncer.html#ac6af22dc9c6ae84462fe356b7430659e',1,'Debouncer']]] ]; diff --git a/docs/files/search/all_8.html b/docs/files/search/all_8.html index cf2b5df..f4e3a2a 100644 --- a/docs/files/search/all_8.html +++ b/docs/files/search/all_8.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_8.js b/docs/files/search/all_8.js index bc772aa..e351b66 100644 --- a/docs/files/search/all_8.js +++ b/docs/files/search/all_8.js @@ -1,7 +1,7 @@ var searchData= [ - ['read_17',['read',['../class_debouncer.html#aa5fcde9156f700c362fd49af5dd92ecd',1,'Debouncer']]], - ['released_18',['released',['../class_bounce2_1_1_button.html#ae9bc1365cf132e57feda6dff112edbad',1,'Bounce2::Button']]], - ['risingedge_19',['risingEdge',['../class_bounce.html#adff02eed264355c2bf90d131768f84c2',1,'Bounce']]], - ['rose_20',['rose',['../class_debouncer.html#ab61244e043754ebdc7a156da1e1824bf',1,'Debouncer']]] + ['read_0',['read',['../class_debouncer.html#aa5fcde9156f700c362fd49af5dd92ecd',1,'Debouncer']]], + ['released_1',['released',['../class_bounce2_1_1_button.html#ae9bc1365cf132e57feda6dff112edbad',1,'Bounce2::Button']]], + ['risingedge_2',['risingEdge',['../class_bounce.html#adff02eed264355c2bf90d131768f84c2',1,'Bounce']]], + ['rose_3',['rose',['../class_debouncer.html#ab61244e043754ebdc7a156da1e1824bf',1,'Debouncer']]] ]; diff --git a/docs/files/search/all_9.html b/docs/files/search/all_9.html index 690785a..89177a8 100644 --- a/docs/files/search/all_9.html +++ b/docs/files/search/all_9.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_9.js b/docs/files/search/all_9.js index 7af647e..a58cb01 100644 --- a/docs/files/search/all_9.js +++ b/docs/files/search/all_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['setpressedstate_21',['setPressedState',['../class_bounce2_1_1_button.html#a3c88b7938b26bca9dc2c7e72aedc442e',1,'Bounce2::Button']]] + ['setpressedstate_0',['setPressedState',['../class_bounce2_1_1_button.html#a3c88b7938b26bca9dc2c7e72aedc442e',1,'Bounce2::Button']]] ]; diff --git a/docs/files/search/all_a.html b/docs/files/search/all_a.html index f2f3d3a..1f90b7a 100644 --- a/docs/files/search/all_a.html +++ b/docs/files/search/all_a.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/all_a.js b/docs/files/search/all_a.js index e0e8bda..484a283 100644 --- a/docs/files/search/all_a.js +++ b/docs/files/search/all_a.js @@ -1,4 +1,4 @@ var searchData= [ - ['update_22',['update',['../class_debouncer.html#a72f3e8d483555031d2ac21b0b7702c06',1,'Debouncer']]] + ['update_0',['update',['../class_debouncer.html#a72f3e8d483555031d2ac21b0b7702c06',1,'Debouncer']]] ]; diff --git a/docs/files/search/classes_0.html b/docs/files/search/classes_0.html index f7e4c14..8361bcd 100644 --- a/docs/files/search/classes_0.html +++ b/docs/files/search/classes_0.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/classes_0.js b/docs/files/search/classes_0.js index 33dad1a..f949217 100644 --- a/docs/files/search/classes_0.js +++ b/docs/files/search/classes_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['bounce_23',['Bounce',['../class_bounce.html',1,'']]], - ['button_24',['Button',['../class_bounce2_1_1_button.html',1,'Bounce2']]] + ['bounce_0',['Bounce',['../class_bounce.html',1,'']]], + ['button_1',['Button',['../class_bounce2_1_1_button.html',1,'Bounce2']]] ]; diff --git a/docs/files/search/classes_1.html b/docs/files/search/classes_1.html index c7ff4b3..3c668de 100644 --- a/docs/files/search/classes_1.html +++ b/docs/files/search/classes_1.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/classes_1.js b/docs/files/search/classes_1.js index 7d5535f..2f4d18d 100644 --- a/docs/files/search/classes_1.js +++ b/docs/files/search/classes_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['debouncer_25',['Debouncer',['../class_debouncer.html',1,'']]] + ['debouncer_0',['Debouncer',['../class_debouncer.html',1,'']]] ]; diff --git a/docs/files/search/functions_0.html b/docs/files/search/functions_0.html index e17c711..2d2d950 100644 --- a/docs/files/search/functions_0.html +++ b/docs/files/search/functions_0.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_0.js b/docs/files/search/functions_0.js index 5f58e96..faaa902 100644 --- a/docs/files/search/functions_0.js +++ b/docs/files/search/functions_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['attach_27',['attach',['../class_bounce.html#aba08e592941465d033e3eba3dde66eaf',1,'Bounce::attach(int pin, int mode)'],['../class_bounce.html#a163477dbcbaf1a3dee6cb3b62eedf09e',1,'Bounce::attach(int pin)']]] + ['attach_0',['attach',['../class_bounce.html#aba08e592941465d033e3eba3dde66eaf',1,'Bounce::attach(int pin, int mode)'],['../class_bounce.html#a163477dbcbaf1a3dee6cb3b62eedf09e',1,'Bounce::attach(int pin)']]] ]; diff --git a/docs/files/search/functions_1.html b/docs/files/search/functions_1.html index 0ddac0a..3b96b90 100644 --- a/docs/files/search/functions_1.html +++ b/docs/files/search/functions_1.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_1.js b/docs/files/search/functions_1.js index 63d4fa7..c9d26e6 100644 --- a/docs/files/search/functions_1.js +++ b/docs/files/search/functions_1.js @@ -1,5 +1,5 @@ var searchData= [ - ['bounce_28',['Bounce',['../class_bounce.html#aa62a2e2b5ad0ee6913a95f2f2a0e7606',1,'Bounce']]], - ['button_29',['Button',['../class_bounce2_1_1_button.html#a18710b645862d2b8f058a73aabbaf7ad',1,'Bounce2::Button']]] + ['bounce_0',['Bounce',['../class_bounce.html#aa62a2e2b5ad0ee6913a95f2f2a0e7606',1,'Bounce']]], + ['button_1',['Button',['../class_bounce2_1_1_button.html#a18710b645862d2b8f058a73aabbaf7ad',1,'Bounce2::Button']]] ]; diff --git a/docs/files/search/functions_2.html b/docs/files/search/functions_2.html index 2737c5a..1f16d2a 100644 --- a/docs/files/search/functions_2.html +++ b/docs/files/search/functions_2.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_2.js b/docs/files/search/functions_2.js index 2c52768..9337f54 100644 --- a/docs/files/search/functions_2.js +++ b/docs/files/search/functions_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['changed_30',['changed',['../class_debouncer.html#a1bbd627f9d8809b5ee9e64e9fb21e248',1,'Debouncer']]], - ['currentduration_31',['currentDuration',['../class_debouncer.html#a883645ca26b4df6e5823586432104d11',1,'Debouncer']]] + ['changed_0',['changed',['../class_debouncer.html#a1bbd627f9d8809b5ee9e64e9fb21e248',1,'Debouncer']]], + ['currentduration_1',['currentDuration',['../class_debouncer.html#a883645ca26b4df6e5823586432104d11',1,'Debouncer']]] ]; diff --git a/docs/files/search/functions_3.html b/docs/files/search/functions_3.html index 6da86e7..0b37ee2 100644 --- a/docs/files/search/functions_3.html +++ b/docs/files/search/functions_3.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_3.js b/docs/files/search/functions_3.js index 2ab528f..81b3e71 100644 --- a/docs/files/search/functions_3.js +++ b/docs/files/search/functions_3.js @@ -1,4 +1,5 @@ var searchData= [ - ['debouncer_32',['Debouncer',['../class_debouncer.html#a34c46ca04d4178933cc0049436d10fe6',1,'Debouncer']]] + ['debouncer_0',['Debouncer',['../class_debouncer.html#a34c46ca04d4178933cc0049436d10fe6',1,'Debouncer']]], + ['duration_1',['duration',['../class_debouncer.html#aecef41e77bd00747ed895f8f77480b6d',1,'Debouncer']]] ]; diff --git a/docs/files/search/functions_4.html b/docs/files/search/functions_4.html index 911304e..0eaf2b4 100644 --- a/docs/files/search/functions_4.html +++ b/docs/files/search/functions_4.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_4.js b/docs/files/search/functions_4.js index 0188c5f..2d36412 100644 --- a/docs/files/search/functions_4.js +++ b/docs/files/search/functions_4.js @@ -1,5 +1,5 @@ var searchData= [ - ['fallingedge_33',['fallingEdge',['../class_bounce.html#a3ef5b85db62a7a7807f0050c86cc735f',1,'Bounce']]], - ['fell_34',['fell',['../class_debouncer.html#a80315de311b855f9787b4b6d5b7899e0',1,'Debouncer']]] + ['fallingedge_0',['fallingEdge',['../class_bounce.html#a3ef5b85db62a7a7807f0050c86cc735f',1,'Bounce']]], + ['fell_1',['fell',['../class_debouncer.html#a80315de311b855f9787b4b6d5b7899e0',1,'Debouncer']]] ]; diff --git a/docs/files/search/functions_5.html b/docs/files/search/functions_5.html index 61b920d..eaa2769 100644 --- a/docs/files/search/functions_5.html +++ b/docs/files/search/functions_5.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_5.js b/docs/files/search/functions_5.js index 9fe6341..4cc3715 100644 --- a/docs/files/search/functions_5.js +++ b/docs/files/search/functions_5.js @@ -1,5 +1,5 @@ var searchData= [ - ['getpin_35',['getPin',['../class_bounce.html#a114878745aa1f29d3c0c293538280646',1,'Bounce']]], - ['getpressedstate_36',['getPressedState',['../class_bounce2_1_1_button.html#a1f90c647e0c75d243cdafed16c6eb28c',1,'Bounce2::Button']]] + ['getpin_0',['getPin',['../class_bounce.html#a114878745aa1f29d3c0c293538280646',1,'Bounce']]], + ['getpressedstate_1',['getPressedState',['../class_bounce2_1_1_button.html#a1f90c647e0c75d243cdafed16c6eb28c',1,'Bounce2::Button']]] ]; diff --git a/docs/files/search/functions_6.html b/docs/files/search/functions_6.html index dc70a4a..25d1cc8 100644 --- a/docs/files/search/functions_6.html +++ b/docs/files/search/functions_6.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_6.js b/docs/files/search/functions_6.js index 991e1c8..1efc7b4 100644 --- a/docs/files/search/functions_6.js +++ b/docs/files/search/functions_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['interval_37',['interval',['../class_debouncer.html#a930bf3945e698d77b889f6309079857d',1,'Debouncer']]], - ['ispressed_38',['isPressed',['../class_bounce2_1_1_button.html#a73c7c9ef574afe8bf1a9f3eb492bfa7f',1,'Bounce2::Button']]] + ['interval_0',['interval',['../class_debouncer.html#a930bf3945e698d77b889f6309079857d',1,'Debouncer']]], + ['ispressed_1',['isPressed',['../class_bounce2_1_1_button.html#a73c7c9ef574afe8bf1a9f3eb492bfa7f',1,'Bounce2::Button']]] ]; diff --git a/docs/files/search/functions_7.html b/docs/files/search/functions_7.html index 7de3106..b6392ea 100644 --- a/docs/files/search/functions_7.html +++ b/docs/files/search/functions_7.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_7.js b/docs/files/search/functions_7.js index 471419e..cad743e 100644 --- a/docs/files/search/functions_7.js +++ b/docs/files/search/functions_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['pressed_39',['pressed',['../class_bounce2_1_1_button.html#a61541ae21354cb7f5cc5bc8c05db59dd',1,'Bounce2::Button']]], - ['previousduration_40',['previousDuration',['../class_debouncer.html#ac6af22dc9c6ae84462fe356b7430659e',1,'Debouncer']]] + ['pressed_0',['pressed',['../class_bounce2_1_1_button.html#a61541ae21354cb7f5cc5bc8c05db59dd',1,'Bounce2::Button']]], + ['previousduration_1',['previousDuration',['../class_debouncer.html#ac6af22dc9c6ae84462fe356b7430659e',1,'Debouncer']]] ]; diff --git a/docs/files/search/functions_8.html b/docs/files/search/functions_8.html index 7422be2..ecf6a89 100644 --- a/docs/files/search/functions_8.html +++ b/docs/files/search/functions_8.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_8.js b/docs/files/search/functions_8.js index 890b308..e351b66 100644 --- a/docs/files/search/functions_8.js +++ b/docs/files/search/functions_8.js @@ -1,7 +1,7 @@ var searchData= [ - ['read_41',['read',['../class_debouncer.html#aa5fcde9156f700c362fd49af5dd92ecd',1,'Debouncer']]], - ['released_42',['released',['../class_bounce2_1_1_button.html#ae9bc1365cf132e57feda6dff112edbad',1,'Bounce2::Button']]], - ['risingedge_43',['risingEdge',['../class_bounce.html#adff02eed264355c2bf90d131768f84c2',1,'Bounce']]], - ['rose_44',['rose',['../class_debouncer.html#ab61244e043754ebdc7a156da1e1824bf',1,'Debouncer']]] + ['read_0',['read',['../class_debouncer.html#aa5fcde9156f700c362fd49af5dd92ecd',1,'Debouncer']]], + ['released_1',['released',['../class_bounce2_1_1_button.html#ae9bc1365cf132e57feda6dff112edbad',1,'Bounce2::Button']]], + ['risingedge_2',['risingEdge',['../class_bounce.html#adff02eed264355c2bf90d131768f84c2',1,'Bounce']]], + ['rose_3',['rose',['../class_debouncer.html#ab61244e043754ebdc7a156da1e1824bf',1,'Debouncer']]] ]; diff --git a/docs/files/search/functions_9.html b/docs/files/search/functions_9.html index befd4fa..cd70e2b 100644 --- a/docs/files/search/functions_9.html +++ b/docs/files/search/functions_9.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_9.js b/docs/files/search/functions_9.js index 36672f7..a58cb01 100644 --- a/docs/files/search/functions_9.js +++ b/docs/files/search/functions_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['setpressedstate_45',['setPressedState',['../class_bounce2_1_1_button.html#a3c88b7938b26bca9dc2c7e72aedc442e',1,'Bounce2::Button']]] + ['setpressedstate_0',['setPressedState',['../class_bounce2_1_1_button.html#a3c88b7938b26bca9dc2c7e72aedc442e',1,'Bounce2::Button']]] ]; diff --git a/docs/files/search/functions_a.html b/docs/files/search/functions_a.html index a81e963..d2a3de9 100644 --- a/docs/files/search/functions_a.html +++ b/docs/files/search/functions_a.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/functions_a.js b/docs/files/search/functions_a.js index 30d713b..484a283 100644 --- a/docs/files/search/functions_a.js +++ b/docs/files/search/functions_a.js @@ -1,4 +1,4 @@ var searchData= [ - ['update_46',['update',['../class_debouncer.html#a72f3e8d483555031d2ac21b0b7702c06',1,'Debouncer']]] + ['update_0',['update',['../class_debouncer.html#a72f3e8d483555031d2ac21b0b7702c06',1,'Debouncer']]] ]; diff --git a/docs/files/search/namespaces_0.html b/docs/files/search/namespaces_0.html index 76996d1..c6a0d24 100644 --- a/docs/files/search/namespaces_0.html +++ b/docs/files/search/namespaces_0.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/namespaces_0.js b/docs/files/search/namespaces_0.js index d5f9c00..66fd10b 100644 --- a/docs/files/search/namespaces_0.js +++ b/docs/files/search/namespaces_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['bounce2_26',['Bounce2',['../namespace_bounce2.html',1,'']]] + ['bounce2_0',['Bounce2',['../namespace_bounce2.html',1,'']]] ]; diff --git a/docs/files/search/nomatches.html b/docs/files/search/nomatches.html index 4377320..2b9360b 100644 --- a/docs/files/search/nomatches.html +++ b/docs/files/search/nomatches.html @@ -1,5 +1,6 @@ - + + diff --git a/docs/files/search/pages_0.html b/docs/files/search/pages_0.html index 9a6a29a..e53c280 100644 --- a/docs/files/search/pages_0.html +++ b/docs/files/search/pages_0.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/pages_0.js b/docs/files/search/pages_0.js index b5c0e13..c64d374 100644 --- a/docs/files/search/pages_0.js +++ b/docs/files/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['bounce_202_48',['BOUNCE 2',['../index.html',1,'']]] + ['bounce_202_0',['BOUNCE 2',['../index.html',1,'']]] ]; diff --git a/docs/files/search/search.css b/docs/files/search/search.css index 3cf9df9..648a792 100644 --- a/docs/files/search/search.css +++ b/docs/files/search/search.css @@ -1,98 +1,88 @@ /*---------------- Search Box */ -#FSearchBox { - float: left; -} - #MSearchBox { white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; z-index: 102; } -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; } #MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; } #MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; border:none; - width:115px; - margin-left:20px; - padding-left:4px; color: #909090; outline: none; - font: 9pt Arial, Verdana, sans-serif; + font-family: Arial, Verdana, sans-serif; -webkit-border-radius: 0px; + border-radius: 0px; + background: none; } -#FSearchBox #MSearchField { - margin-left:15px; +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } } #MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; } #MSearchClose { display: none; - position: absolute; - top: 4px; + font-size: inherit; background : none; border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; + margin: 0; + padding: 0; outline: none; + } -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; +#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 { @@ -154,7 +144,7 @@ a.SelectItem:hover { /*---------------- Search results window */ iframe#MSearchResults { - width: 60ex; + /*width: 60ex;*/ height: 15em; } @@ -220,19 +210,21 @@ a.SRScope:focus, a.SRScope:active { 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 { +div.searchresults { margin-left: 10px; margin-right: 10px; } diff --git a/docs/files/search/search.js b/docs/files/search/search.js index a554ab9..ac8055d 100644 --- a/docs/files/search/search.js +++ b/docs/files/search/search.js @@ -1,25 +1,26 @@ /* - @licstart The following is the entire license notice for the - JavaScript code in this file. + @licstart The following is the entire license notice for the JavaScript code in this file. - Copyright (C) 1997-2017 by Dimitri van Heesch + The MIT License (MIT) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + Copyright (C) 1997-2020 by Dimitri van Heesch - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + 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: - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. - @licend The above is the entire license notice - for the JavaScript code in this file + 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) { @@ -79,9 +80,10 @@ function getYPos(item) storing this instance. Is needed to be able to set timeouts. resultPath - path to use for external files */ -function SearchBox(name, resultsPath, inFrame, label) +function SearchBox(name, resultsPath, label, extension) { if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } // ---------- Instance variables this.name = name; @@ -94,8 +96,8 @@ function SearchBox(name, resultsPath, inFrame, label) this.hideTimeout = 0; this.searchIndex = 0; this.searchActive = false; - this.insideFrame = inFrame; this.searchLabel = label; + this.extension = extension; // ----------- DOM Elements @@ -133,30 +135,14 @@ function SearchBox(name, resultsPath, inFrame, label) var searchSelectWindow = this.DOMSearchSelectWindow(); var searchField = this.DOMSearchSelect(); - if (this.insideFrame) - { - var left = getXPos(searchField); - var top = getYPos(searchField); - left += searchField.offsetWidth + 6; - top += searchField.offsetHeight; + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; - // show search selection popup - searchSelectWindow.style.display='block'; - left -= searchSelectWindow.offsetWidth; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } - else - { - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; // stop selection hide timer if (this.hideTimeout) @@ -200,10 +186,9 @@ function SearchBox(name, resultsPath, inFrame, label) } return; } - else if (window.frames.MSearchResults.searchResults) + else { - var elem = window.frames.MSearchResults.searchResults.NavNext(0); - if (elem) elem.focus(); + window.frames.MSearchResults.postMessage("take_focus", "*"); } } else if (e.keyCode==27) // Escape out of the search field @@ -347,13 +332,13 @@ function SearchBox(name, resultsPath, inFrame, label) if (idx!=-1) { var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + 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.html'; + resultsPage = this.resultsPath + '/nomatches' + this.extension; resultsPageWithSearch = resultsPage; hasResultsPage = false; } @@ -364,26 +349,19 @@ function SearchBox(name, resultsPath, inFrame, label) if (domPopupSearchResultsWindow.style.display!='block') { var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - 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.DOMSearchClose().style.display = 'inline-block'; + 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; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; } this.lastSearchValue = searchValue; @@ -439,12 +417,12 @@ function SearchResults(name) while (element && element!=parentElement) { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { return element; } - if (element.nodeName == 'DIV' && element.hasChildNodes()) + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { element = element.firstChild; } @@ -762,6 +740,7 @@ function createResults() if (searchData[e][1].length==2) // single result { srLink.setAttribute('href',searchData[e][1][1][0]); + srLink.setAttribute('onclick','parent.searchBox.CloseResultsWindow()'); if (searchData[e][1][1][1]) { srLink.setAttribute('target','_parent'); @@ -783,6 +762,7 @@ function createResults() setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); setClassAttr(srChild,'SRScope'); srChild.setAttribute('href',searchData[e][1][c+1][0]); + srChild.setAttribute('onclick','parent.searchBox.CloseResultsWindow()'); if (searchData[e][1][c+1][1]) { srChild.setAttribute('target','_parent'); diff --git a/docs/files/search/searchdata.js b/docs/files/search/searchdata.js index 5958075..6e4e6c7 100644 --- a/docs/files/search/searchdata.js +++ b/docs/files/search/searchdata.js @@ -5,7 +5,7 @@ var indexSectionsWithContent = 2: "b", 3: "abcdfgiprsu", 4: "p", - 5: "b" + 5: "bd" }; var indexSectionNames = diff --git a/docs/files/search/variables_0.html b/docs/files/search/variables_0.html index bf3eba5..950bfc5 100644 --- a/docs/files/search/variables_0.html +++ b/docs/files/search/variables_0.html @@ -1,7 +1,8 @@ - + + - + @@ -10,21 +11,27 @@
    Loading...
    - +
    Searching...
    No Matches
    - +
    diff --git a/docs/files/search/variables_0.js b/docs/files/search/variables_0.js index 415c185..fd68e60 100644 --- a/docs/files/search/variables_0.js +++ b/docs/files/search/variables_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['pin_47',['pin',['../class_bounce.html#a1cb79cb0ba2379cd12cc7c098d97053a',1,'Bounce']]] + ['pin_0',['pin',['../class_bounce.html#a1cb79cb0ba2379cd12cc7c098d97053a',1,'Bounce']]] ]; diff --git a/docs/files/tabs.css b/docs/files/tabs.css index 7d45d36..00d1c60 100644 --- a/docs/files/tabs.css +++ b/docs/files/tabs.css @@ -1 +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:0px/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:0px 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:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.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);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{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{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{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:#fff;text-shadow:0px 1px 1px #000}.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;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff 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;border-radius:5px !important;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:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.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;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}} +.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}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.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 span.sub-arrow:before{display:block;content:'+'}.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 diff --git a/src/Bounce2.cpp b/src/Bounce2.cpp index 6a755ea..0bc1900 100644 --- a/src/Bounce2.cpp +++ b/src/Bounce2.cpp @@ -108,6 +108,10 @@ unsigned long Debouncer::currentDuration() const { return (millis() - stateChangeLastTime); } +unsigned long Debouncer::duration() const { + return (millis() - stateChangeLastTime); +} + inline void Debouncer::changeState() { toggleStateFlag(DEBOUNCED_STATE); setStateFlag(CHANGED_STATE) ; diff --git a/src/Bounce2.h b/src/Bounce2.h index 83363ec..fb1898c 100644 --- a/src/Bounce2.h +++ b/src/Bounce2.h @@ -139,6 +139,18 @@ public: unsigned long currentDuration() const; + /** + @deprecated since 2.70 + @brief Returns the duration in milliseconds of the current state. + + Is reset to 0 once the pin rises ( rose() ) or falls ( fell() ). + + This function is deprecated in favor of currentDuration() and may be removed in future versions. + + @return The duration in milliseconds (unsigned long) of the current state. + */ + unsigned long duration() const; + /** @brief Returns the duration in milliseconds of the previous state. -- 2.54.0