- set_sleep_mode(SLEEP_MODE_PWR_DOWN);
- PORTA = 0;
- PORTB = 0;
- DDRA = 0;
- DDRB = 0;
- GIMSK |= _BV(INT0); // enable INT0
- sleep_enable();
- sei();
- sleep_cpu();
- sleep_disable();
- cli();
- GIMSK &= ~_BV(INT0); // disable INT0
- hw_setup();
+
+ hw_suspend();
+ gpio_before_poweroff(); // Set the status LED on again
+
+ while((PINB & _BV(PB6)) == 0)
+ ; // wait for button release
+
+ _delay_ms(100);
+
+ susp_gpio(); // disable the status LED
+
+ power_down();
+}
+
+static void inline long_press(unsigned char n)
+{
+ if (n == 0)
+ do_sleep();