X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=bike-lights.git;a=blobdiff_plain;f=firmware%2Fmain.c;h=d10a322bd34c721aca16d3bfbc63e12c2e4bb570;hp=5db08b17d7335ed07b370b775de44416819978e8;hb=a444b197e7f5d489227ea6952b78201f26aa82a0;hpb=33c451a9ba18c59b405d735b2420bc7b549643a4 diff --git a/firmware/main.c b/firmware/main.c index 5db08b1..d10a322 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -35,6 +35,10 @@ void hw_suspend() void power_down() { + uint16_t wake_count = 0; + unsigned char btn; + +sleep_again: // enable PCINT14, so that user can wake up later GIMSK |= _BV(PCIE1); PCMSK1 |= _BV(PCINT14); @@ -55,6 +59,20 @@ void power_down() GIMSK &= ~_BV(PCIE1); PCMSK1 &= ~_BV(PCINT14); + // allow wakeup by long button-press only + for (btn = 0; btn < 5; btn++) { + if ((PINB & _BV(PB6)) != 0) { + wake_count++; + goto sleep_again;; + } + _delay_ms(100); + } + + // ok, so I will wake up + log_byte(0xb1); + log_word(wake_count); + log_flush(); + hw_setup(); }