summaryrefslogtreecommitdiff
path: root/src/core/ao_debounce.h
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-06-09 22:09:13 -0700
committerKeith Packard <keithp@keithp.com>2013-06-09 22:09:13 -0700
commit988924b51980ad43e39bc4785a625ff25eb16449 (patch)
treeb0b3abecd78b1a3471244867cbbe9d3bbf1c7944 /src/core/ao_debounce.h
parent72b6c699d355fcd41addb9919d846e63105b9db7 (diff)
altos: Add fast-timer API. Use for quadrature and button drivers
This splits the fast-timer portion out of the debounce helper code and shares that with the quadrature driver which now uses it directly. Signed-off-by: Keith Packard <keithp@keithp.com>
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_ */