menu.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. #ifndef __MENU_H
  2. #define __MENU_H
  3. typedef enum
  4. {
  5. CONTROL_FWD = 0,
  6. CONTROL_BACK,
  7. CONTROL_PUSH,
  8. } control_t;
  9. //
  10. void menu_init(void);
  11. //
  12. void menu_send_event(control_t but);
  13. //
  14. uint8_t menu_get_current_id(void);
  15. typedef struct
  16. {
  17. void *Next;
  18. void *Previous;
  19. void *Parent;
  20. void *Child;
  21. uint8_t Select;
  22. bool Focus;
  23. void (*func_draw)(uint8_t);
  24. void (*func_change)(bool);
  25. } menuItem;
  26. extern menuItem* selectedMenuItem;
  27. //
  28. #define MAKE_MENU(Name, Next, Previous, Parent, Child, Select, Focus, func_draw, func_change) \
  29. extern menuItem Next; \
  30. extern menuItem Previous; \
  31. extern menuItem Parent; \
  32. extern menuItem Child; \
  33. menuItem Name = {(void*) &Next, (void*)&Previous, (void*)&Parent, (void*)&Child, (uint8_t)Select, bool(Focus), func_draw, func_change}
  34. #define PREVIOUS (selectedMenuItem->Previous)
  35. #define NEXT (selectedMenuItem->Next)
  36. #define PARENT (selectedMenuItem->Parent)
  37. #define CHILD (selectedMenuItem->Child)
  38. #define SELECT (selectedMenuItem->Select)
  39. // Главное меню. Отрисовка.
  40. void draw_main(uint8_t sel);
  41. // Экран с настройкми. Отрисовка.
  42. void draw_settings(uint8_t sel);
  43. //
  44. void button_left(void);
  45. //
  46. void button_right(void);
  47. //
  48. void button_enter(void);
  49. //
  50. void menuFocus(void);
  51. //
  52. extern void menuChange(void* NewMenu, bool direction);
  53. //
  54. void empty_func_bool(bool);
  55. void empty_func(void);
  56. void draw_logo(uint8_t sel);
  57. // Измерения. Отрисовка.
  58. void draw_meas(uint8_t sel);
  59. // Диалог для измерения дозы
  60. void draw_dose_dialog(uint8_t sel);
  61. // Настройка порогов
  62. void draw_threshold(uint8_t sel);
  63. // Время. Отрисовка.
  64. void draw_time(uint8_t sel);
  65. // Дата. Отрисовка.
  66. void draw_data(uint8_t sel);
  67. // Подсветка. Отрисовка.
  68. void draw_blight(uint8_t sel);
  69. // Звук. Отрисовка.
  70. void draw_sound(uint8_t sel);
  71. // Обновление. Отрисовка.
  72. void draw_update(uint8_t sel);
  73. // Журнал. Отрисовка.
  74. void draw_log(uint8_t sel);
  75. // -------------------------------------------------------------------------- //
  76. //
  77. void menu_change_blight(uint8_t sel);
  78. //
  79. void menu_change_sound(uint8_t sel);
  80. //
  81. void menu_change_log(uint8_t sel);
  82. // -------------------------------------------------------------------------- //
  83. // Menu functions
  84. //
  85. void button_sel_1(void);
  86. //
  87. void button_gamma_thr_set_sel(void);
  88. //
  89. void button_beta_thr_set_sel(void);
  90. //
  91. void button_dose_thr_set_sel(void);
  92. //
  93. void button_thr_sel(void);
  94. //
  95. void button_log_sel(void);
  96. //
  97. void button_time_sel(void);
  98. //
  99. void button_time_set_sel(void);
  100. //
  101. void button_data_set_sel(void);
  102. //
  103. void button_start_measuring(void);
  104. //
  105. void button_start_dose(void);
  106. //
  107. void button_settings(void);
  108. //
  109. void button_shutdown(void);
  110. //
  111. void button_down_1(void);
  112. //
  113. void button_up_down_dose(void);
  114. //
  115. void button_up_1(void);
  116. //
  117. void but_time_up(void);
  118. //
  119. void but_time_down(void);
  120. //
  121. void but_exit_1(void);
  122. //
  123. void but_exit_meas(void);
  124. //
  125. void button_sel_blight(void);
  126. //
  127. void button_exit_blight(void);
  128. //
  129. void button_exit_sound(void);
  130. //
  131. void button_exit_log(void);
  132. //
  133. void button_sel_sound(void);
  134. //
  135. void button_sel_update(void);
  136. //
  137. void button_sel_log(void);
  138. //
  139. void button_sel_log_period(void);
  140. //
  141. void draw_gamma_tr_up(void);
  142. //
  143. void draw_gamma_tr_down(void);
  144. //
  145. void draw_gamma_right(void);
  146. //
  147. void draw_gamma_left(void);
  148. //
  149. void draw_beta_tr_up(void);
  150. //
  151. void draw_beta_tr_down(void);
  152. //
  153. void draw_beta_right(void);
  154. //
  155. void draw_beta_left(void);
  156. //
  157. void draw_dose_tr_up(void);
  158. //
  159. void draw_dose_tr_down(void);
  160. //
  161. void draw_dose_right(void);
  162. //
  163. void draw_dose_left(void);
  164. //
  165. void draw_time_up(void);
  166. //
  167. void draw_time_down(void);
  168. //
  169. void draw_data_up(void);
  170. //
  171. void draw_data_down(void);
  172. //
  173. void draw_time_right(void);
  174. //
  175. void draw_time_left(void);
  176. //
  177. void draw_log_up(void);
  178. //
  179. void draw_log_down(void);
  180. //
  181. void draw_log_right(void);
  182. //
  183. void draw_log_left(void);
  184. //
  185. //osStatus menu_block(uint32_t ms);
  186. //
  187. void menu_unblock(void);
  188. extern void menuChange(const menuItem* NewMenu);
  189. //extern osTimerId v_sound_timer_handle;
  190. #endif // __MENU_H