#include "menu.h" #include #include menu_state_t state = OFF; uint8_t selected = 0; int8_t menu_val_timezone_ee EEMEM; int8_t menu_val_timezone; uint8_t menu_val_format_ee EEMEM; uint8_t menu_val_format; uint8_t menu_val_leds_ee EEMEM; uint8_t menu_val_dots; uint8_t menu_val_dots_ee EEMEM; uint8_t get_menu_active(){ if(state != OFF) return 1; return 0; } void enter_menu(){ switch(state){ case OFF: state = 1; break; case EXIT: state = OFF; break; default: selected ^= 1; break; } } const char* get_menu_text(){ char *res = " "; memset(res, ' ', 6); if(selected) switch(state){ case TIMEZONE: res = " "; if(menu_val_timezone < 0) res[3] = '-'; else res[3] = ' '; res[4] = abs(menu_val_timezone / 10)+0x30; res[5] = abs(menu_val_timezone % 10)+0x30; break; case FORMAT: res[2] = (menu_val_format / 10) + 0x30; res[3] = (menu_val_format % 10) + 0x30; res[4] = 'H'; break; case LEDS: res[3] = (OCR2A / 100) + 0x30; res[4] = (OCR2A / 10 % 10) + 0x30; res[5] = (OCR2A % 10) + 0x30; break; case DOTS: if(menu_val_dots) res = " AN "; else res = " AUS"; break; default: res = "ERROR "; break; } else switch(state){ case TIMEZONE: res = "ZONE "; eeprom_write_byte((uint8_t*)&menu_val_timezone_ee, menu_val_timezone); break; case FORMAT: res = "FORMAT"; break; case LEDS: res = "LED "; eeprom_write_byte(&menu_val_leds_ee, OCR2A); break; case DOTS: res = "PUNKTE"; eeprom_write_byte((uint8_t*)&menu_val_dots_ee, menu_val_dots); break; case EXIT: res = "ZURUEK"; break; default: res = "ERROR"; break; } return res; } void menu_up_down(uint8_t up_down){ if(selected) switch(state){ case TIMEZONE: menu_val_timezone += up_down; if(menu_val_timezone < -12) menu_val_timezone = 12; if(menu_val_timezone > 12) menu_val_timezone = -12; break; case FORMAT: if(menu_val_format == 12) menu_val_format = 24; else if(menu_val_format == 24) menu_val_format = 12; break; case LEDS: OCR2A += up_down; break; case DOTS: menu_val_dots ^= 0x01; break; default: break; } else{ state += up_down; if(state < 1) state = 1; if(state > EXIT) state = EXIT;//TIMEZONE; } //debug_menu(); }