void select_note(void) { // Light up buttons according to data display_pattern(); // Go through each of the 16 upper buttons for (uint8_t i = 0; i < 16; i++) { if (button_pressed(i)) { enter_note_init(i); break; } } leds_7seg_set(4, current_channel + 1); if (button_pressed(BTN_BACK)) { for (uint8_t i = 0; i < 16; i++) button_led_off(i); state = STATE_TOPLEVEL; } }
void ui_getvalue_handler() /* Handles getting a parameter value. A new getvalue-session is initiated by using ui_getvalue_session. This structure holds the current parameter to be changed, which buttons to blink, and the state. */ { static int8_t value; // If the state just changed to GETVALUE, set the value to the parameter's value // and last pot value to the current. if (ui_getvalue_session.state == SESSION_INACTIVE) { if (ui_getvalue_session.parameter.type == INVRANGE) value = ui_getvalue_session.parameter.max - *ui_getvalue_session.parameter.target; else value = *ui_getvalue_session.parameter.target; button_led_blink(ui_getvalue_session.button1); if (ui_getvalue_session.button2 != 0xFF) { button_led_blink(ui_getvalue_session.button2 & 0x7F); if ((ui_getvalue_session.button2 & 0x80) != 0) { // button_leds[BTN_SHIFT] = 1; // leds_set(BTN_SHIFT, 0); button_led_blink(BTN_SHIFT); } } ui_getvalue_session.state = SESSION_ACTIVE; } // Handle up and down buttons ui_updown(&value, ui_getvalue_session.parameter.min, ui_getvalue_session.parameter.max); // When SET is pressed, store the new value in the parameter and disable LED blinking. // If type is VALTYPE_INVRANGE, the value is inverted. if (button_pressed(BTN_SAVE)) { if (ui_getvalue_session.parameter.type == INVRANGE) *ui_getvalue_session.parameter.target = ui_getvalue_session.parameter.max - value; else *ui_getvalue_session.parameter.target = value; button_led_off(ui_getvalue_session.button1); if (ui_getvalue_session.button2 != 0xFF) { button_led_off(ui_getvalue_session.button2 & 0x7F); //if ((ui_getvalue_session.button2 & 0x80) != 0) //button_leds[BTN_SHIFT] = 1; //button_led_on } ui_getvalue_session.state = SESSION_INACTIVE; mode &= 0x7F; } if (ui_getvalue_session.parameter.min < 0) { if (value < 0) { leds_7seg_set(3, LEDS_7SEG_MINUS); leds_7seg_set(4, -value); } else { leds_7seg_clear(3); leds_7seg_set(4, value); } } else leds_7seg_two_digit_set(3, 4, value); }