/* * @Author: CaoWangrenbo cao.wangrenbo@yandex.com * @Date: 2023-03-19 18:28:44 * @LastEditors: CaoWangrenbo cao.wangrenbo@yandex.com * @LastEditTime: 2023-03-19 20:43:00 * @FilePath: \icr18_btl143_ch32v_slave\project\code\page\fd_page.h * @Description: * * */ #ifndef _FD_PAGE_H__ #define _FD_PAGE_H__ #include "zf_common_headfile.h" #include "by_button.h" enum PageID { PAGE_NULL = -1, //...... page_menu, page_rtcam, page_param1, page_param2, page_dparam, // page_argv, // page_sys, // page_run, //...... page_max, }; typedef enum page_event { page_event_forward = button_event_up, page_event_backward = button_event_down, page_event_press_short = button_event_center_sp, page_event_press_long = button_event_center_lp, } page_event; typedef void (*CallbackFunction_t)(void); typedef void (*EventFunction_t)(page_event); typedef struct { char *Text; CallbackFunction_t SetupCallback; CallbackFunction_t LoopCallback; CallbackFunction_t ExitCallback; EventFunction_t EventCallback; } PAGE_LIST; // 页面注册函数 #define PAGE_REG(_name_, _text_) \ do { \ extern void PageRegister_##_name_(unsigned char pageID); \ PageRegister_##_name_(_name_); \ } while (0); \ pagelist[_name_].Text = _text_ ; void Page_Register(uint8_t pageID, CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, CallbackFunction_t exitCallback, EventFunction_t eventCallback); void Page_EventTransmit(unsigned char event); void Page_Shift(unsigned char pageID); void Page_CloseCurrentPage(void); void Page_OpenCurrentPage(void); uint8_t Page_GetStatus(void); void Page_Run(void); void Page_Init(void); int8_t Get_new_page(void); extern PAGE_LIST pagelist[page_max]; #endif