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

📄 fmanager.h

📁 车载电子影音系统dvd播放系统原程序代码
💻 H
📖 第 1 页 / 共 2 页
字号:
// Max length of TREE_INFO structure
#define TREE_INFO_LENGTH        3



//////////////////////////////////////////////////////////////
// ***** Extern Variable Area  *****
// It keeps each directory's name stored.
// Use index 0 to access the 1st directory info,
// and index 1 to access the 2nd directory info, ... etc.
// LLY2.80, use "Directory Name structure"
//extern  PFILENAMEINFO  __pFMDirNameList;  //__cMP3AlbumList;
extern  PDIRNAMEINFO  __pFMDirNameList;

// It keeps each file's name stored.
// Use index 0 to access the 1st file info,
// and index 1 to access the 2nd file info, ... etc.
extern PFILENAMEINFO __pFMFileNameList;  //_cMP3SongList;

// Store the file number of each directory
extern WORD *__pwFMFilesOfDir;

// Total directories/ files within the playable CDROM
extern BYTE    __bFMTotalDirs;
extern WORD    __wFMTotalFiles;

// It indicate the first directory index/ or first file index
// which is used to be displayed in the current page.
// (1). While in directory menu selection state,
// use 1stID to access __pFMDirNameList[] to get the name information.
// (2) While in file menu selection state,
// use 1stID to access __pFMFileNameList to get the name information.
// use bAlbumIndex to access __pFMDirNameList[] to get current directory name information.
extern  MENUPAGEINFO    __wFMMenuPage;

// store current file manager menu stage
extern  BYTE    __bFMMenuID;

// Keep current active/open directory ID, index from '0' -- LLY2.80
extern  BYTE    __bFMActiveDir;

// Keep current playing directory ID, index from '0' -- LLY2.81
extern  BYTE    __bFMPlayingDir;

// a pointer to dir's name array or file's name array
extern  PFILENAMEINFO  __pFMNameList;

// A pointer to keep JPG status, ex rotate/ flip/ playable
extern  BYTE  __bFMJPGStatus;

// The FM_Trigger() stage -- LLY.274p-2
extern  BYTE    __bFMStage;

// Current JPEG active frame for decode/ display  -- LLY.275
extern  BIT     __btActiveFrame;

// Keep the time while JPEG display ok -- LLY.275
extern  DWORD   __dwTimeJPEGDisplay;

// Keep JPEG decoding mode : 1st decode or re-decode -- LLY.276p-4
//extern  BYTE    __bDecodeMode;

// Keep selection/ active cursor information -- LLY2.80
// LLY2.81, support selection & active cursor while enable this define
// Otherwise, let selection same as active cursor
extern  CURSOR_INFO __FMActiveCursor;
// wyc1.05, always support moving cursor in playing mode.
extern  CURSOR_INFO __FMSelectCursor;
// wyc1.10, new variables to record the next pisition of select cursor when moving UP / DOWN / NEXT / PREV and across directories.
extern  WORD    __wNewCursorIndex;

// Keep directory tree information -- LLY2.81
extern  PTREE_INFO  __pFMDirTree;

// Keep the parent's ID of current active directory -- LLY0.83b-2
extern  BYTE    __bFMParentID;

// Keep the info. while exist "UP_DIR" or not -- LLY0.83b-2
extern  BYTE    __bFMExistUpDir;

// Keep control button information -- LLY0.83b-2
extern  CTL_BUTTON  __FMCtlBTNList[MAX_CTL_BTN_NO];

// Program list index array & content -- LLY0.83b-2
extern  PFILENAMEINFO    __pProgContent;

// wyc1.07, variable to toggle FM UI on / off.
#ifdef SUPPORT_FM_UI_ON_OFF
extern  BYTE    __bFMHide;
#endif // 

/////////////////////////////////////////////////////////////////
// ***** Some define for Global Variable usage ****
// [1] Display menu ID Area -- __bFMMenuID
#define FM_MENU_NONE    0xff
// LLY0.83b-2, Split two group for CT9928AF & CT908 UI
#define FM_MENU_NORMAL      0x1
#define FM_MENU_EDITPROG    0x2
#define FM_MENU_PROGLIST    0x3

////////////////////////////////////////////////////////////////
// ***** Some define for function parameter usage
// [1-1] Use for FM_PreparePage() 1st parameter -- bPageID
#define FM_PREPARE_FILEPAGE             0
#define FM_PREPARE_PROGLIST             100
// [1-2] Use for FM_PreparePage() 2nd parameter -- wParam
// value == 0: it will draw some button automatically
#define DONT_DRAW_BUTTON                1

// [2-1] Use for _QueryInfo() 1st parameter -- bQueryID
#define FM_QUERY_DIR_INDEX                  0
#define FM_QUERY_UNKNOWN_CHAR               1
// LLY0.83b-2, Splite into two groups for CT9928AF & CT908 UI
#define FM_QUERY_NEXTVALID_CTLBTN_INDEX     100
#define FM_QUERY_PREVVALID_CTLBTN_INDEX     101
#define FM_QUERY_CTLBTN_INDEX               102

// [2-2] Use for _FM_QueryInfo2() 1st parameter -- bQueryID
#define FM_QUERY2_NEXT_DIR_INDEX                1
#define FM_QUERY2_PREV_DIR_INDEX                2
// LLY0.83b-2, Splite into two groups for CT9928AF & CT908 UI
#define FM_QUERY2_TOTAL_ITEM_OF_FILEPAGE        100
#define FM_QUERY2_TOTAL_ITEM_OF_DIRPAGE         101

// [2-3] Use for _FM_QueryInfo3() 1st parameter -- bQueryID  // LLY2.81
#define FM_QUERY3_1STITEM_OF_FILEPAGE       1
#define FM_QUERY3_LASTITEM_OF_FILEPAGE      2
// LLY0.83b-2, Splite into two groups for CT9928AF & CT908 UI
#define FM_QUERY3_EXIST_PROGRAM_CONTENT     100


// [3] Use for _FM_ConvertName() 1st parameter -- bType
#define FM_CONVERT_DIRNAME          1
#define FM_CONVERT_FILENAME         2

// [4] Use for _FM_AccessJPGStatus() parameter  -- bMode
#define FM_GET_JPG_STATUS           1
#define FM_STORE_JPG_STATUS         2
// wyc2.39, for martking non-playable MP3 file in FM mode.
#define FM_STORE_MP3_STATUS         3

// [5] Use for FM_Trigger() stage -- LLY.275a
#define STAGE_NONE                  0
#define STAGE_PREPAREINFO           1
#define STAGE_DECODE                2
//LLY.278, #define STAGE_POLLING_END           3
#define STAGE_PLAYEND               4
#define STAGE_DISPLAY               5
#define STAGE_POLLING_TIMEOUT       6
#define STAGE_NEXT_ITEM             7
#define STAGE_IDLE                  8

// [6] Use for _FM_FileIndexConvert() 1st parameter: bMode -- LLY0.83b-2
// directory <--> disc coordinate index convert
#define FM_INDEX_CONVERT_GROUP0             0
#define FM_INDEX_CONVERT_DIR2DISC           (FM_INDEX_CONVERT_GROUP0 + 0)
#define FM_INDEX_CONVERT_DISC2DIR           (FM_INDEX_CONVERT_GROUP0 + 1)
// absolute <--> relative coordinate index convert
#define FM_INDEX_CONVERT_GROUP1             10
#define FM_INDEX_CONVERT_ABS2REL_DIR_LIST   (FM_INDEX_CONVERT_GROUP1 + 0)
#define FM_INDEX_CONVERT_REL2ABS_DIR_LIST   (FM_INDEX_CONVERT_GROUP1 + 1)
#define FM_INDEX_CONVERT_ABS2REL_FILE_LIST  (FM_INDEX_CONVERT_GROUP1 + 2)
#define FM_INDEX_CONVERT_REL2ABS_FILE_LIST  (FM_INDEX_CONVERT_GROUP1 + 3)
#define FM_INDEX_CONVERT_GROUP2             20

// [7] Use for directory ID -- LLY2.81
// Notice: 0x0 ~ 0xEF are used for real directory ID
#define UP_DIR          0xFE   // up directory
#define UNEXIST_DIR     0xFF   // unexist directory

// [8] Use for FM_Action() return value -- LLY0.83b-2
#define FM_ACTION_DONE          1
#define FM_ACTION_CONTINUE      2
#define FM_ACTION_INVALID       3

// [9] Use for FM_InitialBTNList() parameter -- LLY0.83b-2
#define NORMAL_BTN_LIST         1
#define PROG_BTN_LIST           2
#define PROGLIST_BTN_LIST       3

// [8] Use for FM_ProgAction() 1st parameter -- LLY0.83b-2
#define PROG_ACTION_ADD         1
#define PROG_ACTION_DELETE      2

// [9] Use for FM_RecoverMenu() parameter -- LLY0.84
#define FM_DEFAULT_MENU         0
#define FM_RESTORE_MENU         1

// [10] Use for _FM_InitialMenu() parameter -- LLY0.86
// Only use bit[7] to specify if clear background while draw File Manager UI
// Notice: bit[6:0] is same as __bFMMenuID
#define FM_CLEAR_BACKGROUND     0x80
#define FM_DISABLE_PLAY_BTN     0x40
// wyc1.07, add this define for _FM_InitialMenu is because when issuing BTN_PLAY in program list, we need to clear origianl active cursor color. 
// Other case don't need to do it.
#define FM_CLEAR_ACTIVE_CURSOR  0x20

// wyc1.05, supporting two types of across dir boundary.
// [11] Type of across dir boundary.
#define FM_ACROSS_DIR_NONE          0x0
#define FM_NEXT_PREV_ACROSS_DIR     0x1
#define FM_UP_DOWN_ACROSS_DIR       0x2

// wyc1.10, add define to make code program easier when doing DAT / VOB files playing.
#define FM_UI_HIDE_NONE             0x0
#define FM_UI_HIDE_FROM_ISR      0x1
#define FM_UI_HIDE_FROM_FW      0x2

//CoCo2.37, Tune JPEG buffer for 3 frames, 4 frames for CT908B/CT908S-16M, CT908B-32M, CT908A-64M
#ifdef SUPPORT_JPEG_3_FRAMES
#ifdef SUPPORT_JPEG_KEEP_1X1_RATIO
#define FM_CD_JPEG_FRAME_WIDTH      HAL_DISPLAY_CD_JPEG_FIRST_SCALING_WIDTH
#define FM_CD_JPEG_FRAME_HEIGHT	    HAL_DISPLAY_CD_JPEG_FIRST_SCALING_HEIGHT
#define FM_DVD_JPEG_FRAME_WIDTH     HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_WIDTH
#define FM_DVD_JPEG_FRAME_HEIGHT	HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_HEIGHT
#else //This case may do JPEG scaling two times.
#define FM_CD_JPEG_FRAME_WIDTH      640
#define FM_CD_JPEG_FRAME_HEIGHT	    432
#define FM_DVD_JPEG_FRAME_WIDTH     624
#define FM_DVD_JPEG_FRAME_HEIGHT	416
#endif //SUPPORT_JPEG_KEEP_1X1_RATIO
#else
#ifdef JPEG_SMALL_BUFFER
#ifdef SUPPORT_JPEG_KEEP_1X1_RATIO
#define FM_CD_JPEG_FRAME_WIDTH      HAL_DISPLAY_CD_JPEG_FIRST_SCALING_WIDTH
#define FM_CD_JPEG_FRAME_HEIGHT	    HAL_DISPLAY_CD_JPEG_FIRST_SCALING_HEIGHT
#define FM_DVD_JPEG_FRAME_WIDTH     HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_WIDTH
#define FM_DVD_JPEG_FRAME_HEIGHT	HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_HEIGHT
#else //This case may do JPEG scaling two times.
#define FM_CD_JPEG_FRAME_WIDTH      592
#define FM_CD_JPEG_FRAME_HEIGHT	    400
#define FM_DVD_JPEG_FRAME_WIDTH     544
#define FM_DVD_JPEG_FRAME_HEIGHT	368
#endif //SUPPORT_JPEG_KEEP_1X1_RATIO
#else
#ifdef SUPPORT_JPEG_KEEP_1X1_RATIO
#define FM_CD_JPEG_FRAME_WIDTH      HAL_DISPLAY_CD_JPEG_FIRST_SCALING_WIDTH
#define FM_CD_JPEG_FRAME_HEIGHT	    HAL_DISPLAY_CD_JPEG_FIRST_SCALING_HEIGHT
#define FM_DVD_JPEG_FRAME_WIDTH     HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_WIDTH
#define FM_DVD_JPEG_FRAME_HEIGHT	HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_HEIGHT
#else //This case may do JPEG scaling two times.
#if 0	//xuli1108, SUPPORT_JPEG_KEEP_1X1_RATIO is defined in HALJPEG.H, not be included before fmanager.h
#define FM_CD_JPEG_FRAME_WIDTH      672
#define FM_CD_JPEG_FRAME_HEIGHT	    448
#define FM_DVD_JPEG_FRAME_WIDTH     672
#define FM_DVD_JPEG_FRAME_HEIGHT	448
#else
#define FM_CD_JPEG_FRAME_WIDTH      720
#define FM_CD_JPEG_FRAME_HEIGHT	    480
#define FM_DVD_JPEG_FRAME_WIDTH     720
#define FM_DVD_JPEG_FRAME_HEIGHT	480
#endif
#endif //SUPPORT_JPEG_KEEP_1X1_RATIO
#endif //JPEG_SMALL_BUFFER
#endif //SUPPORT_JPEG_3_FRAMES

/////////////////////////////////////////////////////////////
// *****  Function Prototype Area  ******
//BYTE FM_Trigger(void);
void FM_Trigger(void); //CoCo1.21, modify the function prototype.
BYTE FM_CheckPlayableCDROM(void);
//BYTE FM_Initial(void); 
// wyc1.21, modify return type to void to reduce SRAM code.
void FM_Initial(void); //CoCo1.21, modify the function prototype
//BYTE FM_GetRange(WORD wIndex);
void FM_GetRange(WORD wIndex); //CoCo1.21, modify the function prototype
BYTE FM_GetFileType(WORD wIndex);
// LLY2.80, remove 2nd parameter because nobody reference it
BYTE FM_ProcessKey(BYTE bKey); //, WORD wTrackNO);
void FM_ProcessHighLight(WORD wTrackNO);
void FM_AccessJPGStatus(BYTE bMode, WORD wIdx);
WORD _GetDir1stID(BYTE bDirIdx); // LLY2.80
// LLY0.83b-2, new added APIs
BYTE FM_RepeatFolder(BYTE bKey);
BYTE FM_Action(BYTE bAction, WORD wParam);
#ifdef  SUPPORT_FM_BUTTONS
BYTE FM_UpdateBTNStatus(BYTE bBTNID, BYTE bStatus);
void FM_InitialBTNList(BYTE bMode);
#endif //SUPPORT_FM_BUTTONS
//void FM_ProgAction(BYTE bAction, WORD wIndex); //--CoCo, remove emptry function declaraction.
void FM_RecoverMenu(BYTE bMode);
// wyc1.00, extern to Thumb to reference it.
void FM_PreparePage(BYTE bPageID, WORD wParam);
// wyc1.10, move to here to let outside module can call it.
void _FM_InitialMenu(BYTE bMode, BYTE bRecover); // LLY0.84
// wyc2.31, new function to initial variables.
void    FM_InitialVariables(void);
// wyc2.39, for martking non-playable MP3 file in FM mode.
void    _FM_MP3CANNOTPLAY(void);


#ifdef __cplusplus
   }
#endif
#endif  // __FMANAGER_H__


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -