#define MAX_LED (0b00001000)
#define MIN_LED (0b00000001)
static uint8_t LED_current = 1; // one hot addressing
static uint8_t LED_mode = 0; // one bit per LED
...
if ( _key_off_pressed_detected_ ) {
LED_mode = LED_mode & ~LED_current;
}
...
if ( _key_on_pressed_detected_ ) {
LED_mode = LED_mode | LED_current;
}
...
if ( _key_left_pressed_detected_ ) {
if ( LED_current<MAX_LED) {
setLED( (getLED() & ~LED_current) | (LED_mode & LED_current) );
LED_current = LED_current<<1;
if ( 0 != (LED_mode & LED_current) ) {
_set_coefficients_for_long_blink_
} else {
_set_coefficients_for_short_blink_
}
}
}
...
if ( _key_right_pressed_detected_ ) {\
if ( LED_current>MIN_LED) {
setLED( (getLED() & ~LED_current) | (LED_mode & LED_current) );
LED_current = LED_current>>1;
if ( 0 != (LED_mode & LED_current) ) {
_set_coefficients_for_long_blink_
} else {
_set_coefficients_for_short_blink_
}
}
}
...
// do a blink inside the code for blinking (toggle, not on/off!)
setLED( (getLED() ^LED_current) );