#include #include "debounce.h" void debounce_init(sample_state *ss, bool initial, uint32_t threshold) { ss->candidate = initial; ss->count = ss->count_reset = threshold; } bool *debounce(sample_state *ss, bool val) { if (val == ss->candidate) ss->count = ss->count_reset; else if (--ss->count == 0) { ss->candidate = val; ss->count = ss->count_reset; return &ss->candidate; } return NULL; }