00001 #ifndef MENU_H
00002 #define MENU_H
00003
00004 #define MENU_MAINMENU_ITEM_MAX 5
00005 #define MENU_SYSTEMMENU_ITEM_MAX 5
00006 #define MENU_VIDEOMENU_ITEM_MAX 5
00007 #define MENU_AUDIOMENU_ITEM_MAX 5
00008 #define MENU_CODECMENU_ITEM_MAX 5
00009 #define MENU_MUXMENU_ITEM_MAX 5
00010
00011 typedef struct _ITEM_ENTRY_{
00012 void (*InitialFunction)(const struct _ITEM_ENTRY_ *pItem);
00013 void (*ActionFunction)(const struct _ITEM_ENTRY_ *pItem);
00014 const struct _ITEM_ENTRY_ *pUpItem;
00015 const struct _ITEM_ENTRY_ *pDownItem;
00016 const void *pValue;
00017 INT16U MsgIndex;
00018 }ITEM_ENTRY;
00019
00020 typedef struct _MENU_ENTRY_{
00021 const struct _ITEM_ENTRY_ *pItemList;
00022 const struct _MENU_ENTRY_ *pPrevMenu;
00023 void (*InitialFunction)(const struct _MENU_ENTRY_ *pMenu);
00024 void (*OpcodeParser)(INT8U Data);
00025 INT16U TotalItemNumber;
00026 INT16U MsgIndex;
00027 }MENU_ENTRY;
00028
00029 typedef struct{
00030 const struct _MENU_ENTRY_ *pCurMenu;
00031 const struct _ITEM_ENTRY_ *pCurItem;
00032 INT8U State;
00033 INT8U SubState;
00034 INT8U HasKey;
00035 INT8U KeyValue;
00036 INT16U Timer;
00037 }MENU_CONTROL;
00038
00039 extern MENU_CONTROL MenuCtrl;
00040 void MenuInit(void);
00041 void MenuSvc(void);
00042 void MenuKeySet(INT8U KeyValue);
00043 void MenuStop(void);
00044 void MenuStart(void);
00045 void MenuReset(void);
00046
00047 void MenuMenuInit(const struct _MENU_ENTRY_ *pMenu);
00048 void MenuItemInit(const struct _ITEM_ENTRY_ *pItem);
00049 void MenuItemAct(const struct _ITEM_ENTRY_ *pItem);
00050 void MenuOpcodeParser(INT8U KeyValue);
00051
00052 extern const MENU_ENTRY MenuMainMenu;
00053 extern const ITEM_ENTRY MenuMainMenuItem[MENU_MAINMENU_ITEM_MAX];
00054
00055 extern const MENU_ENTRY MenuSytemSubmenu;
00056 extern const ITEM_ENTRY MenuSystemmenuItem[MENU_SYSTEMMENU_ITEM_MAX];
00057
00058 extern const MENU_ENTRY MenuVideoEncoderSubmenu;
00059 extern const ITEM_ENTRY MenuVideoEncoderMenuItem[MENU_VIDEOMENU_ITEM_MAX];
00060
00061 extern const MENU_ENTRY MenuAudioEncoderSubmenu;
00062 extern const ITEM_ENTRY MenuAudioEncoderMenuItem[MENU_VIDEOMENU_ITEM_MAX];
00063
00064 extern const MENU_ENTRY MenuCodecSubmenu;
00065 extern const ITEM_ENTRY MenuCodecMenuItem[MENU_CODECMENU_ITEM_MAX];
00066
00067 extern const MENU_ENTRY MenuMuxSubmenu;
00068 extern const ITEM_ENTRY MenuMuxMenuItem[MENU_MUXMENU_ITEM_MAX];
00069
00070
00071 typedef enum{
00072 MENU_MSG_16SPACES,
00073 MENU_MSG_1ST_LAYER,
00074 MENU_MSG_2ND_LAYER,
00075 MENU_MSG_3RD_LAYER,
00076 MENU_MSG_SYSTEM,
00077 MENU_MSG_VIDEO_ENCODER,
00078 MENU_MSG_AUDIO_ENCODER,
00079 MENU_MSG_HARDWARE_CODEC,
00080 MENU_MUX_SETTING,
00081 MENU_MSG_SYSTEM_ITEM0,
00082 MENU_MSG_SYSTEM_ITEM1,
00083 MENU_MSG_SYSTEM_ITEM2,
00084 MENU_MSG_SYSTEM_ITEM3,
00085 MENU_MSG_SYSTEM_ITEM4,
00086 MENU_MSG_VIDEO_ENCODER_ITEM0,
00087 MENU_MSG_VIDEO_ENCODER_ITEM1,
00088 MENU_MSG_VIDEO_ENCODER_ITEM2,
00089 MENU_MSG_VIDEO_ENCODER_ITEM3,
00090 MENU_MSG_VIDEO_ENCODER_ITEM4,
00091 MENU_MSG_AUDIO_ENCODER_ITEM0,
00092 MENU_MSG_AUDIO_ENCODER_ITEM1,
00093 MENU_MSG_AUDIO_ENCODER_ITEM2,
00094 MENU_MSG_AUDIO_ENCODER_ITEM3,
00095 MENU_MSG_AUDIO_ENCODER_ITEM4,
00096 MENU_MSG_HARDWARE_CODEC_ITEM0,
00097 MENU_MSG_HARDWARE_CODEC_ITEM1,
00098 MENU_MSG_HARDWARE_CODEC_ITEM2,
00099 MENU_MSG_HARDWARE_CODEC_ITEM3,
00100 MENU_MSG_HARDWARE_CODEC_ITEM4,
00101 MENU_MUX_SETTING_ITEM0,
00102 MENU_MUX_SETTING_ITEM1,
00103 MENU_MUX_SETTING_ITEM2,
00104 MENU_MUX_SETTING_ITEM3,
00105 MENU_MUX_SETTING_ITEM4,
00106 SYSTEM_MSG_POWER_ON,
00107 SYSTEM_MSG_PLEASE_WAIT,
00108 SYSTEM_MSG_SDCP_CONNECTED,
00109 SYSTEM_MSG_SDCP_BOOTUP,
00110 SYSTEM_MSG_SDCP_BOOTUP_OK,
00111 }MENU_MSG_ENUM;
00112
00113 extern const char MsgLineChange[];
00114 extern const INT8U *MenuMessage[];
00115
00116 #endif