/* MIPS I system
* Copyright 2011-2012 Stefan Schuermans <stefan@blinkenarea.org>
* Copyleft GNU public license V2 or later
* http://www.gnu.org/copyleft/gpl.html
*/
#include "config.h"
#include "eth.h"
#include "format.h"
#include "lcd.h"
#include "macros.h"
#include "menu.h"
#include "switches.h"
/// last value of rotary knob
static int menu_cur_rot_cnt = 0;
/// current screen
static int menu_cur_screen = 0;
/// current content on screen
static char menu_cur_content[16];
/**
* @brief update screen content
* @param[in] str new content to display
*/
static void menu_update_content(const char *str)
{
unsigned int i;
// update only characters that changed (LCD is slow)
for (i = 0; str[i] != 0 && i < 16; ++i) {
if (menu_cur_content[i] != str[i]) {
menu_cur_content[i] = str[i];
lcd_chr(1, i, str[i]);
}
}
// clear rest of line
for (; i < 16; ++i) {
if (menu_cur_content[i] != ' ') {
menu_cur_content[i] = ' ';
lcd_chr(1, i, ' ');
}
}
}
/// start screen
static void menu_screen_start(void)
{
menu_update_content("turn knob...");