123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #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
|