/*******************************************************************************************/
/*include */
/*******************************************************************************************/
#include "Menu_Page.h"
#include "Bsp.h"
#include "Font.h"
#include "Bsp_Ds3231.h"
#include "Bsp_LightMonitor.h"
#include "Menu_If.h"
#include "Brightness.h"
#include "Audio_Wav.h"
#include "App_Common.h"
#include "fdatefunc.h"
/*******************************************************************************************/
/*Local Macro and Tyedef */
/*******************************************************************************************/
/*******************************************************************************************/
/*Static Function Declaration */
/*******************************************************************************************/
/*******************************************************************************************/
/*Public Function Declaration */
/*******************************************************************************************/
/*******************************************************************************************/
/*Local variables */
/*******************************************************************************************/
//static uint16_t flg_HoldTimer;
/*******************************************************************************************/
/*Global variables */
/*******************************************************************************************/
/*******************************************************************************************/
/*Static Function Implementation */
/*******************************************************************************************/
static void Page_Switch_Prev_Item (MenuRunInfo* MenuRunInfos, uint8_t FirstItem, uint8_t EndItem)
{
if (MenuRunInfos->CursorMenu->CurrentItem > FirstItem)
{
MenuRunInfos->CursorMenu->CurrentItem--;
}
else
{
MenuRunInfos->CursorMenu->CurrentItem = EndItem;
}
MenuRunInfos->CursorMenu->Status = MENU_STATUS_HAS_UPATE;
}
static void Page_Switch_Next_Item (MenuRunInfo* MenuRunInfos, uint8_t FirstItem, uint8_t EndItem)
{
if (MenuRunInfos->CursorMenu->CurrentItem < EndItem)
{
MenuRunInfos->CursorMenu->CurrentItem++;
}
else
{
MenuRunInfos->CursorMenu->CurrentItem = FirstItem;
}
MenuRunInfos->CursorMenu->Status = MENU_STATUS_HAS_UPATE;
}
static void Page_Play_Next_Wav (void)
{
static DIR dir;
FILINFO fileinfo;
FRESULT res;
char* temp;
static uint8_t flg = 0;
if (flg == 0)
{
f_opendir (&dir, "");
flg = 1;
}
res = f_readdir (&dir, &fileinfo);
if ((fileinfo.fname[0]) && ( res == FR_OK))
{
temp = strrchr (fileinfo.fname, '.');
temp ++;
if (! (fileinfo.fattrib & AM_DIR))
{
if (!strcasecmp (temp, "WAV"))
{
printf ("wav FileList=%s", fileinfo.fname);
Audio_Wav_List_Add (fileinfo.fname);
Audio_Wav_List_Play_Start ();
}
}
}
else
{
f_closedir (&dir);
flg = 0;
}
}
uint16_t ReadDirs (char* dir_str)
{
uint16_t cnt = 0;
DIR dir;
FILINFO fileinfo;
FRESULT res;
f_opendir (&dir, dir_str);
res = f_readdir (&dir, &fileinfo);
while ((fileinfo.fname[0] && res == FR_OK))
{
if (fileinfo.fattrib & AM_DIR)
{
res = f_readdir (&dir, &fileinfo);
}
else
{
printf ("FileList=%s", fileinfo.fname);
cnt ++;
}
}
f_closedir (&dir);
return cnt;
}
static void Page_Main_DisplayMode0 (MenuRunInfo* MenuRunInfos)
{
#define PAGE_ITEM_FIRST 1
#define PAGE_ITEM_DATE 1
#define PAGE_ITEM_DATE_CN 2
#define PAGE_ITEM_TEMPRA 3
#define PAGE_ITEM_HOLIDAY_INFO 4
#define PAGE_ITEM_BIRTHDAY_INFO 5
#define PAGE_ITEM_END 5
#define PAGE_MAIN_DIS_ON_TIME_MS (MySettings.Display_Effect.Hold_Timer_ms)
#define PAGE_MAIN_DIS_OFF_TIME_MS (MySettings.Display_Effect.Off_Timer_ms)
//#define PAGE_MAIN_DIS_ON_TIME_MS 4000
//#define PAGE_MAIN_DIS_OFF_TIME_MS 800
#define PAGE_MAIN_DIS_SWITCH_TIMEOUT_MS ((PAGE_MAIN_DIS_ON_TIME_MS+PAGE_MAIN_DIS_OFF_TIME_MS)*4)
static uint16_t LastBrightness;
switch (MenuRunInfos->CursorMenu->CurrentItem)
{
case MENU_PAGE_ITEM_DEFAULT:
MenuRunInfos->CursorMenu->CurrentItem = PAGE_ITEM_DATE;
MenuRunInfos->Timer_PageHold = PAGE_MAIN_DIS_OFF_TIME_MS;
Bsp_Screen_Set_Brightness_Immediately (SCREEN_INDEX_TOP, Brightness_GetMaxValue());
Bsp_Screen_Set_Brightness_Immediately (SCREEN_INDEX_BOTTOM, 0);
break;
case PAGE_ITEM_DATE:
if (MySettings.Display_Effect.Page_Date_En)
{
if (Bsp_Screen_Get_Brightness_Current (SCREEN_INDEX_BOTTOM) == 0)
{
MenuRunInfos->Timer_Timerout = 0;
if (MenuRunInfos->Timer_PageHold * MENU_LOOP_TIME_MS > PAGE_MAIN_DIS_OFF_TIME_MS)
{
MenuRunInfos->Timer_PageHold = 0;
Screen_Clear (16, 0, 64, 16, SCREEN_COLOR_ALL, SCREEN_UPDATE_NORMAL);
Screen_Printf (16, 0, MySettings.FontCfg.FontType_Info_Num, SCREEN_COLOR_RED, SCREEN_UPDATE_NORMAL, "%02d", TimeDS3231.Month);
Screen_DisplayChar (16, 16, FontsType_DefaultMix, SCREEN_COLOR_RED, SCREEN_UPDATE_NORMAL, "成");
// Screen_DisplayChar (0, 16, FontsType_DefaultMix, SCREEN_COLOR_GREEN, SCREEN_UPDATE_NORMAL, "?");
Screen_Printf (16, 24, MySettings.FontCfg.FontType_Info_Num, SCREEN_COLOR_RED, SCREEN_UPDATE_NORMAL, "%02d", TimeDS3231.Day);
Screen_DisplayChar (16, 40, FontsType_DefaultMix, SCREEN_COLOR_RED, SCREEN_UPDATE_NORMAL, "×");
// Screen_Printf (16, 40, MySettings.FontCfg.FontType_Info_CN, SCREEN_COLOR_RED, SCREEN_UPDATE_NORMAL, "笚");
if ((TimeDS3231.Week > 0) && (TimeDS3231.Week < 8))
{
Screen_Printf (16, 40 + 8, MySettings.FontCfg.FontType_Info_CN, SCREEN_COLOR_GREEN, SCREEN_UPDATE_NORMAL, "%s",
dayNameInWeek_ByWeek (TimeDS3231.Week - 1));
}
Screen_UpdateImmediately (SCREEN_COLOR_ALL);
LastBrightness = Brightness_GetMaxValue();
Bsp_Screen_Set_Brightness_Slowly (SCREEN_INDEX_BOTTOM, LastBrightness);
}
else
{
MenuRunInfos->Timer_PageHold++;
}
}
else if (Bsp_Screen_Get_Brightness_Current (SCREEN_INDEX_BOTTOM) >= LastBrightness)
{
评论1