⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emc_menustate.c

📁 关于嵌入式PCB板UI的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************
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 + -