#ifndef __MENU_H #define __MENU_H // void menu_init(void); // 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 empty_func_bool(bool); void empty_func(void); void draw_logo(uint8_t sel); // Измерения. Отрисовка. void draw_meas(uint8_t sel); // Диалог для измерения дозы void draw_dose_dialog(uint8_t sel); // Настройка порогов void draw_threshold(uint8_t sel); // Время. Отрисовка. void draw_time(uint8_t sel); // Дата. Отрисовка. void draw_data(uint8_t sel); // Подсветка. Отрисовка. void draw_blight(uint8_t sel); // Звук. Отрисовка. void draw_sound(uint8_t sel); // Обновление. Отрисовка. void draw_update(uint8_t sel); // Журнал. Отрисовка. void draw_log(uint8_t sel); // -------------------------------------------------------------------------- // // void menu_change_blight(uint8_t sel); // void menu_change_sound(uint8_t sel); // void menu_change_log(uint8_t sel); // -------------------------------------------------------------------------- // // Menu functions // void button_sel_1(void); // void button_gamma_thr_set_sel(void); // void button_beta_thr_set_sel(void); // void button_dose_thr_set_sel(void); // void button_thr_sel(void); // void button_log_sel(void); // void button_time_sel(void); // void button_time_set_sel(void); // void button_data_set_sel(void); // void button_start_measuring(void); // void button_start_dose(void); // void button_settings(void); // void button_shutdown(void); // void button_down_1(void); // void button_up_down_dose(void); // void button_up_1(void); // void but_time_up(void); // void but_time_down(void); // void but_exit_1(void); // void but_exit_meas(void); // void button_sel_blight(void); // void button_exit_blight(void); // void button_exit_sound(void); // void button_exit_log(void); // void button_sel_sound(void); // void button_sel_update(void); // void button_sel_log(void); // void button_sel_log_period(void); // void draw_gamma_tr_up(void); // void draw_gamma_tr_down(void); // void draw_gamma_right(void); // void draw_gamma_left(void); // void draw_beta_tr_up(void); // void draw_beta_tr_down(void); // void draw_beta_right(void); // void draw_beta_left(void); // void draw_dose_tr_up(void); // void draw_dose_tr_down(void); // void draw_dose_right(void); // void draw_dose_left(void); // void draw_time_up(void); // void draw_time_down(void); // void draw_data_up(void); // void draw_data_down(void); // void draw_time_right(void); // void draw_time_left(void); // void draw_log_up(void); // void draw_log_down(void); // void draw_log_right(void); // void draw_log_left(void); // //osStatus menu_block(uint32_t ms); // void menu_unblock(void); extern void menuChange(const menuItem* NewMenu); //extern osTimerId v_sound_timer_handle; #endif // __MENU_H