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

136 lines
3.0 KiB
C
Raw Normal View History

2023-12-19 16:55:05 +08:00
#include "cw_page.h"
#include "by_rt_button.h"
2023-12-19 16:55:05 +08:00
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,
CallbackFunction_t setupCallback, CallbackFunction_t loopCallback,
CallbackFunction_t exitCallback, EventFunction_t eventCallback)
{
pagelist[pageID].Text = pageText;
2023-12-19 16:55:05 +08:00
pagelist[pageID].SetupCallback = setupCallback;
pagelist[pageID].LoopCallback = loopCallback;
pagelist[pageID].ExitCallback = exitCallback;
2023-12-19 16:55:05 +08:00
pagelist[pageID].EventCallback = eventCallback;
}
/**
* @brief
* @param event:
* @retval
*/
void Page_EventTransmit(unsigned char event)
{
2023-12-19 16:55:05 +08:00
/*将事件传递到当前页面*/
if (pagelist[now_page].EventCallback != 0)
pagelist[now_page].EventCallback(event);
}
/**
* @brief
* @param pageID
* @retval 1 0
*/
void Page_Shift(unsigned char pageID)
{
2023-12-19 16:55:05 +08:00
if (page_busy == 0) {
new_page = pageID;
}
}
/**
* @brief
*
*/
void Page_CloseCurrentPage()
{
2023-12-19 16:55:05 +08:00
pagelist[now_page].ExitCallback();
}
/**
* @brief
*
*/
void Page_OpenCurrentPage()
{
2023-12-19 16:55:05 +08:00
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)
{
2024-01-08 22:08:43 +08:00
uint8_t temp_status = by_get_rb_status(); // 轮询旋钮状态
if(temp_status){
pagelist[now_page].EventCallback(temp_status);
}
2023-12-19 16:55:05 +08:00
if (now_page != new_page) {
if (new_page >= page_max && new_page < page_menu) {
new_page = page_menu;
}
// 执行当前页面退出回调函数
2023-12-19 16:55:05 +08:00
if ((pagelist[now_page].ExitCallback != 0)) {
pagelist[now_page].ExitCallback();
}
// 执行新页面构造回调函数
2023-12-19 16:55:05 +08:00
if (pagelist[new_page].SetupCallback != 0) {
pagelist[new_page].SetupCallback();
}
now_page = new_page;
}
if (page_busy == 0) {
// 执行循环函数
2023-12-19 16:55:05 +08:00
pagelist[now_page].LoopCallback();
}
}
/**
* @brief //ATTENTION 在此处添加新加入的页面
*
*/
void Page_Init(void)
{
2023-12-19 16:55:05 +08:00
PAGE_REG(page_menu);
PAGE_REG(page_rtcam);
2023-12-19 16:55:05 +08:00
// PAGE_REG(page_argv);
// PAGE_REG(page_sys);
// PAGE_REG(page_run);
Page_Shift(page_menu);
pagelist[now_page].SetupCallback(); // 先构建一遍
2023-12-19 16:55:05 +08:00
}