📄 emc_menustate.c
字号:
/*******************************************************************************
File name : emc_menustate.c
Description : UI finite state machine
Revision : 1.0
COPYRIGHT (C) EMC-HUST-JRC 2005.
Date Label Auther Comment
---- ---- ------ ---------------------
12-17-2005 Allen Wu Created
*********************************************************************************/
/* Includes --------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ostime.h>
#include "stlite.h"
#include "task.h"
#include "message.h"
#include "symbol.h"
//#include "sing_data.h"
//#include "cmdcontrol.h"
//#include "sr_dbase.h"
#include "emc_mainmenu.h"
#include "emc_menustate.h"
#include "emc_autosearch.h"
#include "emc_channeldisplay.h"
#include "emc_channellist.h"
#include "emc_manual.h"
#include "emc_infopanel.h"
#include "emc_epg.h"
#include "emc_video.h"
#include "emc_audio.h"
#include "emc_channelmanage.h"
#include "emc_password.h"
#include "emc_signal.h"
#include "emc_time.h" /*STONE ADDED*/
/* Private Typedef ----------------------------------------------------------------*/
/* Declaration of the menu action state machine*/
typedef struct
{
dvb_MenuCmd_e eLinkId; /*selected link*/
int Param; /*parameter to be passed to function*/
dvb_state_e nextState;
void (* pfKeyProcess)(int); /*calling function*/
} Dvb_MenuAction_t;
/* structure used to define the different states, for each state, it defines the:
- number of valid key available for that state
- pointer to valid key and attached action definition */
typedef struct
{
char cValidLinkNumber; /*number of valid links for the state*/
Dvb_MenuAction_t *pstAction; /*pointer to table of valid actions*/
} Dvb_MenuStateProcess_t;
const int MSM_PROCESS_PRIORITY = 4;/*Allen(02-26-2006)*/
const int MSM_PROCESS_WORKSPACE = 20480;/*this value is very important,if too small(such as 1024),the process can't run correcttly*/
/* Global variables & structures----------------------------------------------------- */
dvb_state_e currMenuState = DVB_DISPLAY;
static Dvb_MenuStateProcess_t MenuStateProcess[DVB_STATE_NUM];
static message_queue_t *pstMenuStateMsgQueue;
static task_t *pMsmTask;
extern BOOL bNoSignalLogoShow;
extern BOOL bLockMenuItem;
extern void sttbx_Print(const char *const Format_p, ...);
//extern void testCNFont16(void);
const Dvb_MenuAction_t maMainMenuAction[] =
{ /*MainMenu State*/
{cmd_ArrowUp, cmd_ArrowUp, NOCHANGE, (void(*)(int))msm_MenuItemMoves },
{cmd_ArrowDown, cmd_ArrowDown, NOCHANGE, (void(*)(int))msm_MenuItemMoves },
{cmd_ArrowLeft, cmd_ArrowLeft, NOCHANGE, (void(*)(int))msm_MenuItemBack },
{cmd_ArrowRight, cmd_ArrowRight, NOCHANGE, (void(*)(int))msm_MenuItemSelect },
{cmd_Select, cmd_Select, NOCHANGE, (void(*)(int))msm_MenuItemSelect },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_HideMainMenu },
{cmd_Menu, 0, DVB_DISPLAY, (void(*)(int))msm_HideMainMenu },
{cmd_AutoSearch, 0, DVB_AUTO_SEARCH, (void(*)(int))msm_StartAutoSearch },
{cmd_Manual, 0, DVB_MANUAL, (void(*)(int))msm_ShowManualWindow},
{cmd_Password, 0, NOCHANGE, NULL},
{cmd_ChManage, 0, DVB_CH_MANAGE, (void(*)(int))msm_ShowChannelManage},
{cmd_ChList, 0, DVB_CH_LIST, (void(*)(int))msm_ShowChannelList},
{cmd_FavrList, 1, DVB_CH_LIST, (void(*)(int))msm_ShowChannelList},
{cmd_VideoMode, 0, NOCHANGE, (void(*)(int))msm_SetVideoMode},
{cmd_AspectRatio, 0, NOCHANGE, (void(*)(int))msm_SetVideoAspectRatio},
{cmd_Contrast, cmd_Contrast, DVB_BCS_TIMEOUT, (void(*)(int))msm_ShowBCSWindow},
{cmd_Brightness, cmd_Brightness, DVB_BCS_TIMEOUT, (void(*)(int))msm_ShowBCSWindow},
{cmd_Saturation, cmd_Saturation, DVB_BCS_TIMEOUT, (void(*)(int))msm_ShowBCSWindow},
{cmd_Volume, cmd_Volume, DVB_VOL_TIMEOUT, (void(*)(int))msm_AudioChangeVolume},
{cmd_AudioMode, 0, NOCHANGE, (void(*)(int))msm_AudioChangeMode},
{cmd_Mute, 0, NOCHANGE, (void(*)(int))msm_AudioChangeMuteState},
{cmd_GetTime, 0, NOCHANGE, NULL},
{cmd_SetTimeZone, 0, DVB_TIMEZONE, (void(*)(int))msm_Timezonedisplay},/*stone modified for timezone*/
{cmd_OsdLanguage, 0, NOCHANGE, (void(*)(int))msm_MenuChangeLanguage},
{cmd_OsdTransparent, 0, NOCHANGE, (void(*)(int))msm_MenuChangeTransparent},
{cmd_Country, 0, NOCHANGE, (void(*)(int))msm_MenuChangeCountry},
{cmd_TransparentPlus, 1, NOCHANGE, (void(*)(int))msm_MenuChangeTransparent},
{cmd_TransparentMinus, -1, NOCHANGE, (void(*)(int))msm_MenuChangeTransparent},
{cmd_ActivatePassword, 1, NOCHANGE, (void(*)(int))msm_ActivateParentalLock},
{cmd_CancelPassword, 0, NOCHANGE, (void(*)(int))msm_ActivateParentalLock},
{cmd_SetPassword, 0, DVB_PASSWORD, (void(*)(int))msm_SetupPassword},
{cmd_ChangePassword, 0, DVB_PASSWORD, (void(*)(int))msm_ChangePassword},
{cmd_CheckPassword, 0, DVB_PASSWORD, (void(*)(int))msm_CheckPassword},
};
#define MainMenuActionNumber (sizeof(maMainMenuAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maDisplayAction[] =
{ /*Display State*/
{cmd_Num0, 0, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num1, 1, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num2, 2, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num3, 3, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num4, 4, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num5, 5, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num6, 6, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num7, 7, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num8, 8, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_Num9, 9, DVB_PRONUM_TIMEOUT, (void(*)(int))msm_ShowProNumPanel},
{cmd_List, -1, DVB_CH_LIST, (void(*)(int))msm_ShowChannelList },
{cmd_Select, -1, DVB_CH_LIST, (void(*)(int))msm_ShowChannelList },
{cmd_Info, 0, DVB_INFO_TIMEOUT, (void(*)(int))msm_ShowChannelInfoPanel},
{cmd_NewCh, 0, DVB_INFO_TIMEOUT, (void(*)(int))msm_ShowChannelInfoPanel},
{cmd_RadioCh, 0, DVB_INFO_TIMEOUT, (void(*)(int))msm_ShowChannelInfoPanel},
{cmd_Menu, 0, DVB_MAINMENU, (void(*)(int))msm_ShowMainMenu },
{cmd_DirChNum, 0, DVB_INFO_TIMEOUT, NULL},
{cmd_DirChPlus, cmd_DirChPlus, DVB_DISPLAY, (void(*)(int))msm_NewChannelDisplay},
{cmd_DirChMinus, cmd_DirChMinus, DVB_DISPLAY, (void(*)(int))msm_NewChannelDisplay },
{cmd_VolUp, cmd_VolUp, DVB_VOL_TIMEOUT, (void(*)(int))msm_AudioChangeVolume},
{cmd_VolDown, cmd_VolDown, DVB_VOL_TIMEOUT, (void(*)(int))msm_AudioChangeVolume},
{cmd_Subtitle, 0, DVB_SUBTITLE, NULL},
{cmd_EPG, 0, DVB_EPG, (void(*)(int))msm_ShowEPG}
};
#define DisplayActionNumber (sizeof(maDisplayAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maAutoSearchAction[] =
{
{cmd_Exit, 0, DVB_PRE_AUTO_SEARCH, (void(*)(int))msm_AutoSearchPause },
};
#define AutoSearchActionNumber (sizeof(maAutoSearchAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maPreAutoSearchAction[] =
{
{cmd_Select, 0, DVB_AUTO_SEARCH, (void(*)(int))msm_AutoSearchRestart },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_AutoSearchExit },
};
#define PreAutoSearchActionNumber (sizeof(maPreAutoSearchAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maChannelListAction[] =
{
{cmd_ArrowUp, 0, NOCHANGE, (void(*)(int))msm_ChannelItemUp },
{cmd_ArrowDown, 0, NOCHANGE, (void(*)(int))msm_ChannelItemDown },
{cmd_ArrowLeft, 0, NOCHANGE, (void(*)(int))msm_ChannelListModeExchange },
{cmd_ArrowRight, 0, NOCHANGE, (void(*)(int))msm_ChannelListModeExchange },
{cmd_Select, 0, DVB_DISPLAY, (void(*)(int))msm_ChannelItemSelect },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_ChannelListExit }
};
#define ChannelListActionNumber (sizeof(maChannelListAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maChannelManageAction[] =
{
{cmd_ArrowUp, 0, NOCHANGE, (void(*)(int))msm_ChannelManageItemUp },
{cmd_ArrowDown, 0, NOCHANGE, (void(*)(int))msm_ChannelManageItemDown },
{cmd_ArrowLeft, 0, NOCHANGE, (void(*)(int))msm_ChannelManageModeExchange },
{cmd_ArrowRight, 0, NOCHANGE, (void(*)(int))msm_ChannelManageModeExchange },
{cmd_Select, 0, NOCHANGE, (void(*)(int))msm_ChannelManageItemSelect },
{cmd_Red, 0, NOCHANGE, (void(*)(int))msm_SetChannelFavorate },
{cmd_Green, 0, NOCHANGE, (void(*)(int))msm_LockChannelItem },
{cmd_Blue, 0, NOCHANGE, (void(*)(int))msm_DeleteChannelItem },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_ChannelManageExit }
};
#define ChannelManageActionNumber (sizeof(maChannelManageAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maConfirmDeleteAction[] =
{
{cmd_Select, 0, DVB_CH_MANAGE, (void(*)(int))msm_PerformChannelDelete },
{cmd_Exit, 0, DVB_CH_MANAGE, (void(*)(int))msm_CancelChannelDelete },
};
#define ConfirmDeleteActionNumber (sizeof(maConfirmDeleteAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maManualSearchAction[] =
{
{cmd_Num0, 0, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num1, 1, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num2, 2, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num3, 3, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num4, 4, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num5, 5, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num6, 6, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num7, 7, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num8, 8, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Num9, 9, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_Back, -1, NOCHANGE, (void(*)(int))msm_InputManualFrequency },
{cmd_ArrowUp, 0, NOCHANGE, (void(*)(int))msm_SelectManualItem },
{cmd_ArrowDown, 0, NOCHANGE, (void(*)(int))msm_SelectManualItem },
{cmd_ArrowLeft, 0, NOCHANGE, (void(*)(int))msm_ChangeManualBandwidth },
{cmd_ArrowRight, 1, NOCHANGE, (void(*)(int))msm_ChangeManualBandwidth },
{cmd_Select, 0, NOCHANGE, (void(*)(int))msm_StartManualSearch },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_ExitManualSearch },
};
#define ManualSearchActionNumber (sizeof(maManualSearchAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maInfoTimeoutAction[] =
{
{cmd_DirChPlus, cmd_DirChPlus, DVB_DISPLAY, (void(*)(int))msm_NewChannelDisplay },
{cmd_DirChMinus, cmd_DirChMinus, DVB_DISPLAY, (void(*)(int))msm_NewChannelDisplay },
{cmd_ProgramInfoReady, 1, NOCHANGE, (void(*)(int))msm_ShowChannelInfoPanel },
{cmd_UpdateTime, 0, NOCHANGE, (void(*)(int))msm_UpdateInfoPanelTime },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_HideChannelInfoPanel },
};
#define InfoTimeoutActionNumber (sizeof(maInfoTimeoutAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maProNumTimeoutAction[] =
{
{cmd_Num0, 0, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num1, 1, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num2, 2, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num3, 3, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num4, 4, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num5, 5, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num6, 6, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num7, 7, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num8, 8, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Num9, 9, NOCHANGE, (void(*)(int))msm_EditProNumPanel },
{cmd_Select, 0, DVB_DISPLAY, (void(*)(int))msm_ConfirmProNumPanel},
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_ExitProNumPanel },
};
#define ProNumTimeoutActionNumber (sizeof(maProNumTimeoutAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maEPGAction[] =
{
{cmd_ArrowLeft, 0, NOCHANGE, (void(*)(int))msm_EPGChangeDate },
{cmd_ArrowRight, 1, NOCHANGE, (void(*)(int))msm_EPGChangeDate },
{cmd_Select, 0, NOCHANGE, (void(*)(int))msm_EPGProItemSelect },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_ExitEPG },
{cmd_DirChPlus, 0, NOCHANGE, (void(*)(int))msm_EPGProItemUp },
{cmd_DirChMinus, 0, NOCHANGE, (void(*)(int))msm_EPGProItemDown },
{cmd_ProgramInfoReady, 0, NOCHANGE, (void(*)(int))msm_UpdateCurrProgInfo },
{cmd_SkedInfoReady, 0, NOCHANGE, (void(*)(int))msm_UpdateSkedProgInfo },
{cmd_UpdateTime, 0, NOCHANGE, (void(*)(int))msm_UpdateEPGCurrTime },
{cmd_ArrowUp, 0, NOCHANGE, (void(*)(int))msm_EPGEventItemUp },
{cmd_ArrowDown, 0, NOCHANGE, (void(*)(int))msm_EPGEventItemDown },
};
#define EPGActionNumber (sizeof(maEPGAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maVolTimeoutAction[] =
{
{cmd_VolUp, cmd_VolUp, NOCHANGE, (void(*)(int))msm_AudioChangeVolume },
{cmd_VolDown, cmd_VolDown, NOCHANGE, (void(*)(int))msm_AudioChangeVolume },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_HideVolumeBox },
};
#define VolTimeoutActionNumber (sizeof(maVolTimeoutAction)/sizeof(Dvb_MenuAction_t))
const Dvb_MenuAction_t maBCSTimeoutAction[] =
{
{cmd_ArrowUp, cmd_ArrowUp, NOCHANGE, (void(*)(int))msm_BCSChangeValue },
{cmd_ArrowDown, cmd_ArrowDown, NOCHANGE, (void(*)(int))msm_BCSChangeValue },
{cmd_Exit, 0, DVB_DISPLAY, (void(*)(int))msm_HideBCSWindow },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -