uint8_t OSD::write(uint8_t c) { if(c == '|') { close_panel(); //It does all needed to finish auto increment and change current row open_panel(); //It does all needed to re-enable auto increment } else { spi->take_spi_right(&spi_dev_max7456); spi->write(MAX7456_DMDI_reg); spi->write(c); spi->release_spi_right(); } return 1; }
// call this when one of the mode buttons is pressed // see also close_any_edit_window() in g_game.c void mode_button(int mode_pressed) { // if (inter.mode_button_available [mode_pressed] == 0) // return; #define MODE_BUTTON_SAMPLE SAMPLE_BLIP4 #define MODE_BUTTON_TONE_OPEN TONE_3C #define MODE_BUTTON_TONE_CLOSE TONE_2G switch(mode_pressed) { case MODE_BUTTON_SYSTEM: if (panel[PANEL_SYSMENU].open) { close_panel(PANEL_SYSMENU, 1); play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_CLOSE); // panel[PANEL_SYSMENU].element [FPE_SYSMENU_CONFIRM_QUIT].open = 0; this is now done by close_panel } else { open_panel(PANEL_SYSMENU); play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_OPEN); } break; case MODE_BUTTON_EDITOR: if (panel[PANEL_EDITOR].open) { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_CLOSE); close_panel(PANEL_EDITOR, 1); } else { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_OPEN); open_panel(PANEL_EDITOR); } break; case MODE_BUTTON_DESIGN: if (panel[PANEL_DESIGN].open) { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_CLOSE); close_panel(PANEL_DESIGN, 1); } else { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_OPEN); open_panel(PANEL_DESIGN); } break; case MODE_BUTTON_TEMPLATES: if (panel[PANEL_TEMPLATE].open) { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_CLOSE); close_panel(PANEL_TEMPLATE, 1); } else { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_OPEN); open_panel(PANEL_TEMPLATE); } break; case MODE_BUTTON_BCODE: if (panel[PANEL_BCODE].open) { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_CLOSE); close_panel(PANEL_BCODE, 1); } else { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_OPEN); open_panel(PANEL_BCODE); } break; case MODE_BUTTON_CLOSE: // if (inter.mode_buttons_maximised) if (panel[PANEL_DESIGN].open || panel[PANEL_EDITOR].open || panel[PANEL_TEMPLATE].open || panel[PANEL_BCODE].open || panel[PANEL_SYSMENU].open) { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_CLOSE); close_all_panels(); } else { play_interface_sound(MODE_BUTTON_SAMPLE, MODE_BUTTON_TONE_OPEN); int opened_any = 0; int i; for (i = 1; i < PANEL_BCODE+1; i ++) // note i starts at 1 { if (inter.panel_restore [i]) { open_panel(i); opened_any = 1; } } if (!opened_any) open_panel(PANEL_SYSMENU); } // else // inter.mode_buttons_maximised = 1; break; // case MODE_BUTTON_MIN_MAX: // inter.mode_buttons_maximised ^= 1; // break; } }