Files
QDAC-firmware/app/page/cw_page.c

121 lines
2.8 KiB
C
Raw Normal View History

2023-12-19 16:55:05 +08:00
#include "cw_page.h"
PAGE_LIST pagelist[page_max];
static uint8_t page_busy = 0;
static int8_t now_page = page_menu;
static int8_t new_page = page_menu;
2023-12-19 16:55:05 +08:00
/**
* @brief 退
* @param pageID:
* @param pageText:
* @param setupCallback:
* @param loopCallback:
* @param exitCallback: 退
* @param eventCallback:
* @retval
*/
void Page_Register(uint8_t pageID, char *pageText,
2023-12-19 16:55:05 +08:00
CallbackFunction_t setupCallback, CallbackFunction_t loopCallback,
CallbackFunction_t exitCallback, EventFunction_t eventCallback) {
pagelist[pageID].Text = pageText;
pagelist[pageID].SetupCallback = setupCallback;
pagelist[pageID].LoopCallback = loopCallback;
pagelist[pageID].ExitCallback = exitCallback;
pagelist[pageID].EventCallback = eventCallback;
}
/**
* @brief
* @param event:
* @retval
*/
void Page_EventTransmit(unsigned char event) {
/*将事件传递到当前页面*/
if (pagelist[now_page].EventCallback != 0)
pagelist[now_page].EventCallback(event);
}
/**
* @brief
* @param pageID
* @retval 1 0
*/
void Page_Shift(unsigned char pageID) {
if (page_busy == 0) {
new_page = pageID;
}
}
/**
* @brief
*
*/
void Page_CloseCurrentPage() {
pagelist[now_page].ExitCallback();
}
/**
* @brief
*
*/
void Page_OpenCurrentPage() {
pagelist[now_page].SetupCallback();
}
/**
* @brief
*
* @return uint8_t 1 0
2023-12-19 16:55:05 +08:00
*/
uint8_t Page_GetStatus(void) {
2023-12-19 16:55:05 +08:00
if (page_busy)
return 1;
else
return 0;
}
/**
* @brief
*
*/
void Page_Run(void) {
if (now_page != new_page) {
if (new_page >= page_max && new_page < page_menu) {
new_page = page_menu;
}
//执行当前页面退出回调函数
if ((pagelist[now_page].ExitCallback != 0)) {
pagelist[now_page].ExitCallback();
}
//执行新页面构造回调函数
if (pagelist[new_page].SetupCallback != 0) {
pagelist[new_page].SetupCallback();
}
now_page = new_page;
}
if (page_busy == 0) {
//执行循环函数
pagelist[now_page].LoopCallback();
}
}
/**
* @brief //ATTENTION 在此处添加新加入的页面
*
*/
void Page_Init(void) {
PAGE_REG(page_menu);
// PAGE_REG(page_argv);
// PAGE_REG(page_sys);
// PAGE_REG(page_run);
Page_Shift(page_menu);
pagelist[now_page].SetupCallback(); //先构建一遍
}