#ifndef __MENU_H #define __MENU_H // typedef enum { CONTROL_FWD = 0, CONTROL_BACK, CONTROL_PUSH, } control_t; // typedef enum { MCELL_NULL = 0, MCELL_MAIN, // Главный экран MCELL_K1, // Коэффициент MCELL_K2, // Коэффициент MCELL_REV, // Реверс MCELL_RES, // Сброс счетчиков MCELL_SAVE, // Сохранить настройки } menu_cell_t; // void menu_init(void); // void menu_send_event(control_t but); // uint8_t menu_get_current_id(void); typedef struct { void *Next; void *Previous; void *Parent; void *Child; uint8_t Select; bool Focus; void (*func_draw)(uint8_t); void (*func_change)(bool); } menuItem; extern menuItem* selectedMenuItem; // #define MAKE_MENU(Name, Next, Previous, Parent, Child, Select, Focus, func_draw, func_change) \ extern menuItem Next; \ extern menuItem Previous; \ extern menuItem Parent; \ extern menuItem Child; \ menuItem Name = {(void*) &Next, (void*)&Previous, (void*)&Parent, (void*)&Child, (uint8_t)Select, bool(Focus), func_draw, func_change} #define PREVIOUS (selectedMenuItem->Previous) #define NEXT (selectedMenuItem->Next) #define PARENT (selectedMenuItem->Parent) #define CHILD (selectedMenuItem->Child) #define SELECT (selectedMenuItem->Select) // -------------------------------------------------------------------------- // // Отрисовка // Главный экран void draw_main(uint8_t sel); // Экран с настройками void draw_settings(uint8_t sel); // -------------------------------------------------------------------------- // // Функции кнопок // void button_left(void); // void button_right(void); // void button_enter(void); // void menuFocus(void); // extern void menuChange(void* NewMenu, bool direction); // -------------------------------------------------------------------------- // // Изменение параметров. Отрисовка. // void change_factor_1(bool dir); // void change_factor_2(bool dir); // void change_revers(bool dir); // -------------------------------------------------------------------------- // // Заглушки // void empty_func_bool(bool); // void empty_func(void); // -------------------------------------------------------------------------- // //extern void menuChange(const menuItem* NewMenu); #endif // __MENU_H