menu.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #ifndef __MENU_H
  2. #define __MENU_H
  3. //
  4. typedef enum
  5. {
  6. CONTROL_FWD = 0,
  7. CONTROL_BACK,
  8. CONTROL_PUSH,
  9. } control_t;
  10. //
  11. typedef enum
  12. {
  13. MCELL_NULL = 0,
  14. MCELL_MAIN, // Главный экран
  15. MCELL_K1, // Коэффициент
  16. MCELL_K2, // Коэффициент
  17. MCELL_REV, // Реверс
  18. MCELL_RES, // Сброс счетчиков
  19. MCELL_SAVE, // Сохранить настройки
  20. } menu_cell_t;
  21. //
  22. void menu_init(void);
  23. //
  24. void menu_send_event(control_t but);
  25. //
  26. uint8_t menu_get_current_id(void);
  27. typedef struct
  28. {
  29. void *Next;
  30. void *Previous;
  31. void *Parent;
  32. void *Child;
  33. uint8_t Select;
  34. bool Focus;
  35. void (*func_draw)(uint8_t);
  36. void (*func_change)(bool);
  37. } menuItem;
  38. extern menuItem* selectedMenuItem;
  39. //
  40. #define MAKE_MENU(Name, Next, Previous, Parent, Child, Select, Focus, func_draw, func_change) \
  41. extern menuItem Next; \
  42. extern menuItem Previous; \
  43. extern menuItem Parent; \
  44. extern menuItem Child; \
  45. menuItem Name = {(void*) &Next, (void*)&Previous, (void*)&Parent, (void*)&Child, (uint8_t)Select, bool(Focus), func_draw, func_change}
  46. #define PREVIOUS (selectedMenuItem->Previous)
  47. #define NEXT (selectedMenuItem->Next)
  48. #define PARENT (selectedMenuItem->Parent)
  49. #define CHILD (selectedMenuItem->Child)
  50. #define SELECT (selectedMenuItem->Select)
  51. // -------------------------------------------------------------------------- //
  52. // Отрисовка
  53. // Главный экран
  54. void draw_main(uint8_t sel);
  55. // Экран с настройками
  56. void draw_settings(uint8_t sel);
  57. // -------------------------------------------------------------------------- //
  58. // Функции кнопок
  59. //
  60. void button_left(void);
  61. //
  62. void button_right(void);
  63. //
  64. void button_enter(void);
  65. //
  66. void menuFocus(void);
  67. //
  68. extern void menuChange(void* NewMenu, bool direction);
  69. // -------------------------------------------------------------------------- //
  70. // Изменение параметров. Отрисовка.
  71. //
  72. void change_factor_1(bool dir);
  73. //
  74. void change_factor_2(bool dir);
  75. //
  76. void change_revers(bool dir);
  77. // -------------------------------------------------------------------------- //
  78. // Заглушки
  79. //
  80. void empty_func_bool(bool);
  81. //
  82. void empty_func(void);
  83. // -------------------------------------------------------------------------- //
  84. //extern void menuChange(const menuItem* NewMenu);
  85. #endif // __MENU_H