projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Add debounce helper. Use in button and quadrature drivers for TeleLCO
[fw/altos]
/
src
/
telelco-v0.2
/
ao_lco.c
diff --git
a/src/telelco-v0.2/ao_lco.c
b/src/telelco-v0.2/ao_lco.c
index 418c0509539e34dfc65a4d5707e23c60e4468b14..6e490247314b53b4ba2a68f20070a16706dcfda6 100644
(file)
--- a/
src/telelco-v0.2/ao_lco.c
+++ b/
src/telelco-v0.2/ao_lco.c
@@
-114,11
+114,9
@@
ao_lco_input(void)
switch (event.unit) {
case AO_QUADRATURE_PAD:
if (!ao_lco_armed) {
switch (event.unit) {
case AO_QUADRATURE_PAD:
if (!ao_lco_armed) {
- if (event.value == ao_lco_pad)
- break;
- dir = ((int8_t) event.value - (int8_t) ao_lco_pad) > 0 ? 1 : -1;
- new_pad = event.value;
- while (!ao_lco_pad_present(new_pad)) {
+ dir = (int8_t) event.value;
+ new_pad = ao_lco_pad;
+ do {
new_pad += dir;
if (new_pad > AO_PAD_MAX_CHANNELS)
new_pad = 0;
new_pad += dir;
if (new_pad > AO_PAD_MAX_CHANNELS)
new_pad = 0;
@@
-126,21
+124,18
@@
ao_lco_input(void)
new_pad = AO_PAD_MAX_CHANNELS - 1;
if (new_pad == ao_lco_pad)
break;
new_pad = AO_PAD_MAX_CHANNELS - 1;
if (new_pad == ao_lco_pad)
break;
- }
+ }
while (!ao_lco_pad_present(new_pad));
if (new_pad != ao_lco_pad) {
ao_lco_pad = new_pad;
if (new_pad != ao_lco_pad) {
ao_lco_pad = new_pad;
- ao_quadrature_count[AO_QUADRATURE_PAD] = ao_lco_pad;
ao_lco_set_pad();
}
}
break;
case AO_QUADRATURE_BOX:
if (!ao_lco_armed) {
ao_lco_set_pad();
}
}
break;
case AO_QUADRATURE_BOX:
if (!ao_lco_armed) {
- if (event.value == ao_lco_box)
- break;
- dir = ((int8_t) event.value - (int8_t) ao_lco_box) > 0 ? 1 : -1;
- new_box = event.value;
- while (!ao_lco_box_present(new_box)) {
+ dir = (int8_t) event.value;
+ new_box = ao_lco_box;
+ do {
new_box += dir;
if (new_box > ao_lco_max_box)
new_box = ao_lco_min_box;
new_box += dir;
if (new_box > ao_lco_max_box)
new_box = ao_lco_min_box;
@@
-148,8
+143,7
@@
ao_lco_input(void)
new_box = ao_lco_min_box;
if (new_box == ao_lco_box)
break;
new_box = ao_lco_min_box;
if (new_box == ao_lco_box)
break;
- }
- ao_quadrature_count[AO_QUADRATURE_PAD] = new_box;
+ } while (!ao_lco_box_present(new_box));
if (ao_lco_box != new_box) {
ao_lco_box = new_box;
ao_lco_got_channels = 0;
if (ao_lco_box != new_box) {
ao_lco_box = new_box;
ao_lco_got_channels = 0;