summaryrefslogtreecommitdiff
path: root/src/core/ao_debounce.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ao_debounce.h')
-rw-r--r--src/core/ao_debounce.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/core/ao_debounce.h b/src/core/ao_debounce.h
index ebe290e1..19c620f5 100644
--- a/src/core/ao_debounce.h
+++ b/src/core/ao_debounce.h
@@ -22,13 +22,16 @@ struct ao_debounce {
struct ao_debounce *next;
/* time that pin value must be stable before accepting */
- int8_t hold;
+ uint8_t hold;
/* last value reported to app; don't report it twice */
uint8_t value;
+ /* current value received from pins */
+ uint8_t current;
+
/* current count of intervals pin value has been stable */
- int8_t count;
+ uint8_t count;
/* This pin is running */
uint8_t running;
@@ -40,6 +43,22 @@ struct ao_debounce {
void (*_set)(struct ao_debounce *debounce, uint8_t value);
};
+static inline void
+ao_debounce_config(struct ao_debounce *debounce,
+ uint8_t (*_get)(struct ao_debounce *debounce),
+ void (*_set)(struct ao_debounce *debounce, uint8_t value),
+ uint8_t hold)
+{
+ debounce->next = 0;
+ debounce->hold = hold;
+ debounce->value = 0xff;
+ debounce->current = 0xff;
+ debounce->count = 0;
+ debounce->running = 0;
+ debounce->_get = _get;
+ debounce->_set = _set;
+}
+
void
_ao_debounce_start(struct ao_debounce *debounce);
@@ -49,4 +68,7 @@ _ao_debounce_stop(struct ao_debounce *debounce);
void
ao_debounce_init(void);
+void
+ao_debounce_dump(void);
+
#endif /* _AO_DEBOUNCE_H_ */