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

📄 player.h

📁 本程序为ST公司开发的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/************************************************** * * player.h * * CVS ID:   $Id: player.h,v 1.42 2007/11/08 17:15:22 sedmik Exp $ * Author:   Fabio Dell'Orto [FD] - STM * Date:     $Date: 2007/11/08 17:15:22 $ * Revision: $Revision: 1.42 $ *  * Description: *  *************************************************** *  * COPYRIGHT (C) ST Microelectronics  2005 *            All Rights Reserved * *************************************************** * * STM CVS Log: * * $Log: player.h,v $ * Revision 1.42  2007/11/08 17:15:22  sedmik * new funcs prototypes for cmds/statuses channels on IPOD_AP * * Revision 1.41  2007/10/18 10:47:42  longauer * handle authentication and automatically switches to the extended mode * * Revision 1.40  2007/09/20 21:35:52  longauer * virtual iPod authentication is working * * Revision 1.39  2007/08/10 12:33:29  longauer * IPOD_AP compilation switch enables future iAP * * Revision 1.38  2007/07/16 10:01:57  trubac * USB HIGH-Z control roughly tested * * Revision 1.37  2007/07/09 16:38:54  sedmik * resume info via i2c fix (added CRC data into stream) * * Revision 1.36  2007/02/23 11:40:51  sedmik * status channel to hostif rearranged * * Revision 1.35  2007/02/15 16:09:57  sedmik * RESUME_INFO_SIZE define * * Revision 1.34  2007/02/13 11:06:09  sedmik * - changes related to host_update * * Revision 1.33  2006/12/18 18:00:07  sedmik * added transition def. for mount (flash image found) * * Revision 1.32  2006/12/18 12:22:53  sedmik * structure for resume info changed, * added flag t_player_player_play_fsm_params, * funcs prototypes added * * Revision 1.31  2006/12/13 14:29:09  trubac * Removed unused navigation modes * * Revision 1.30  2006/12/13 09:27:37  belardi * Added field to player_time_info to support DirNo parameter in MsgTimeInfo * * Revision 1.29  2006/12/12 10:57:07  sedmik * new commands defined, related to file update * * Revision 1.28  2006/12/04 14:47:53  dellorto * added emergency eject command * improved loader transitions and processing of loader events * * Revision 1.27  2006/12/01 17:25:35  trubac * Improved parsing for various text encodings * * Revision 1.26  2006/12/01 15:42:02  sedmik * new defines for player_read_file_transition * * Revision 1.25  2006/11/21 15:38:36  sedmik * new flag used for song selection - use/not use advanced modes settings(Rep1,CmdContinue,shuffle) * * Revision 1.24  2006/11/20 13:33:31  sedmik * palylists support rearrangement(fsm params) * * Revision 1.23  2006/11/07 19:00:14  sedmik * time info new structure * * Revision 1.22  2006/11/07 13:45:43  belardi * Changed struct field to int16 from uint8 because it is initialized with 16bit signed values (RETVAL) * * Revision 1.21  2006/10/27 15:12:09  sedmik * removed some states in play FSM, new implementation of params for resume * * Revision 1.20  2006/09/27 19:52:42  belardi * Removed (global) unused variables * * Revision 1.19  2006/09/26 09:36:13  belardi * Removed 'extern definitions, moved to player.h * * Revision 1.18  2006/09/18 09:55:24  belardi * Corrected CVS keyword usage * * Revision 1.17  2006/09/18 09:25:15  belardi * Added Log CVS keyword into file header * * ***************************************************/#ifndef _PLAYER_INCLUDED_#define _PLAYER_INCLUDED_#include "apdevsys.h"#include "xdefines.h"#include "playlist.h"#if (0!=IPOD_AP)#include "controller.h"#include "usb.h"#endif /* (0!=IPOD_AP)*/#define MAX_CMD_PARAMS_LENGTH 11 /* maximum length of command parameters array */#define PLAYER_DISC_TYPE_REPORTED           (player_MediaInforSetting.field.msg_disc_type)#define PLAYER_DISC_ID_REPORTED             (player_MediaInforSetting.field.msg_disc_id)#define PLAYER_DISC_LABEL_REPORTED          (player_MediaInforSetting.field.msg_disc_label)#define PLAYER_CDDA_TRACK_INFO_REPORTED     (player_MediaInforSetting.field.msg_track_info)#define PLAYER_TIME_INFO_REPORTED           (player_MediaInforSetting.field.msg_time_info)#define IS_PLAYER_RANGE_DEVICE          (player_params.range == RANGE_DEVICE)#define IS_PLAYER_RANGE_DIRECTORY       (player_params.range == RANGE_DIRECTORY)#define IS_PLAYER_REPEAT                (player_params.repeat == REPEAT_ON)#define IS_PLAYER_SHUFFLE               (player_params.shuffle == SHUFFLE_ON)#define PLAYER_LAST_IN_DIR_REPORTED  (player_params.last_in_dir)#define PLAYER_LAST_ON_DISC_REPORTED (player_params.last_on_disc)#define PLAYER_AUDIO_TRACKS_FIRST    (player_params.audio_tracks_first)#define PLAYER_PAUSE_AT_EOS          (player_params.pause_at_eos)#define PLAYER_REPEAT_ONE            (player_params.repeat_one)#define PLAYER_ACCEPT_CDDA_ON_HYBRIDDISC  (player_MediaInforSetting.field.hybrid_disc_cfg)/*********************************//* Loader events definitions     *//*********************************/#define LOADER_STATUS                           event_in[LOADER_STATUS_EVENT].event#define IS_LOADER_EVENT                         (NO_EVENT != LOADER_STATUS)#define IS_LOADER_EVENT_READY                   (READY == LOADER_STATUS)#define IS_LOADER_EVENT_NOCD                    (LOADER_ERROR_NO_DISC == LOADER_STATUS)#define IS_LOADER_EVENT_INSERT_BY_USER          (LOADER_INSERT_BY_USER == LOADER_STATUS)#define IS_LOADER_EVENT_INSERT_BY_PUSHBACK      (LOADER_INSERT_BY_PUSHBACK == LOADER_STATUS)#define IS_LOADER_EVENT_INSERT_BY_PUSHBACK_8CM  (LOADER_INSERT_BY_PUSHBACK_8CM == LOADER_STATUS)#define IS_LOADER_EVENT_IMPROPER_STOP           (LOADER_IMPROPER_STOP == LOADER_STATUS)#define IS_LOADER_EVENT_ERROR                   (IS_LOADER_ERROR(LOADER_STATUS))#define IS_LOADER_EVENT_INIT                    (IS_LOADER_INIT(LOADER_STATUS))                                             /*********************************//* HW Eject events definitions   *//*********************************/#define HW_EJECT_STATUS                 event_in[HW_EJECT_EVENT].event#define IS_HW_EJECT_REQUESTED           (HW_EJECT_STATUS & HW_EJECT_REQUEST)/* Endless loop for HW Eject */#define ENDLESS_LOOP()                  _OSAL_thread_priority_set(OSAL_THREAD_PlayerTask, MAX_USER_PRIORITY);  \                                        do {} while(1);#define Fs              (44100)      		 #define TIME_TO_POSITON(minute,second,frame) ((Fs)*(minute)*60+(second)*(Fs)+((Fs)/75)*(frame))#define MAX_RETRIES_ON_ERROR            2     //error recovery retries#define USE_RANGE_SUBDIRS 0#define USE_INDEX_IN_DIR 0/*******************//* Player commands *//*******************/#define PCMD_NONE               0xFF#define PCMD_EJECT              0x01#define PCMD_STOP               0x02#define PCMD_LOAD               0x03#define PCMD_EM_EJECT           0x04#define PCMD_PLAY               0x10#define PCMD_PLAY_RESUME        0x11#define PCMD_PLAY_TC            0x12#define PCMD_PLAY_NEXT          0x13#define PCMD_PLAY_PREV          0x14#define PCMD_PLAY_CURRENT       0x15#define PCMD_SCAN               0x16#define PCMD_PLAY_CONTINUE      0x17#define PCMD_PAUSE              0x20#define PCMD_SEARCH             0x30#define PCMD_SEARCH_FW          0x30#define PCMD_SEARCH_BW          0x31// new commands to player (now player mode, transition is set inside player)#define PCMD_POWER_MODE         0x32#define PCMD_PLAY_AT_TIME       0x33  #define PCMD_REPEAT             0x34#define PCMD_SHUFFLE            0x35    #define PCMD_SOURCE_CHANGE      0x36#define PCMD_CHANGE_DIR         0x37#define PCMD_CONFIG_UPDATED     0x38#define PCMD_START_TOC          0x39#define PCMD_UPDATE_START       0x40#define PCMD_UPDATE_NEXT_PACKET 0x41          //internall command signal to player, data have been read, new data acquisition#define PCMD_UPDATE_ABORT       0x42#define PCMD_USB_HIGH_Z         0x43//#define PCMD_UPDATE_DATA_PROCESSED  0x43    //JS commented  unused//player play fsm transitions//state RUN#define PLR_PLAY_FSM_PLAY_AT_FORCED       0#define PLR_PLAY_FSM_SELECT_NEW_SONG_UNFORCED        1#define PLR_PLAY_FSM_SELECT_NEW_SONG_FORCED          2#define PLR_PLAY_FSM_SEEK_AT_FORCED                  3#define PLR_PLAY_FSM_WAIT_SONG_READY                 4#define PLR_PLAY_FSM_WAIT_BOS                        5 #define PLR_PLAY_FSM_WAIT_BOS_WITH_PRE_EOS           6#define PLR_PLAY_FSM_PLAYBACK_STARTED                7#define PLR_PLAY_FSM_CHANGE_TO_NO_NEXT_SONG_UNFORCED 8//state DONE#define PLR_PLAY_FSM_PLAYBACK_PRE_EOS                9#define PLR_PLAY_FSM_PLAYBACK_STARTED_WITH_PRE_EOS   10#define PLR_PLAY_FSM_NO_NEXT_SONG                    11#define PLR_PLAY_FSM_NO_NEXT_SONG_UNFORCED           12#define PLR_PLAY_FSM_ERROR                           13  #define ERROR_ON_UNFORCED_COMMAND                     -1  #define ERROR_ON_FORCED_COMMAND                       -2//player pause fsm transitions//state RUN#define PLR_PAUSE_FSM_PAUSE_ON        0#define PLR_PAUSE_FSM_PAUSE_OFF       1#define PLR_PAUSE_FSM_PAUSE_OFF_SET_SEEK      2#define PLR_PAUSE_FSM_PAUSE_AT        3#define PLR_PAUSE_FSM_PAUSE_CHECK     4//state DONE#define PLR_PAUSE_FSM_PAUSE_ON_DONE   5#define PLR_PAUSE_FSM_PAUSE_OFF_DONE  6#define PLR_PAUSE_FSM_ERROR           7//player stop fsm transitions//state RUN#define PLR_STOP_FSM_STOP_PLAYBACK                  0#define PLR_STOP_FSM_STOP_DEVICE                    1#define PLR_STOP_FSM_STOP_DEVICE_WITH_INIT_FOR_NEW_DISC 2#define PLR_STOP_FSM_STOP_CHECK                     3#define PLR_STOP_FSM_INIT_FOR_NEW_DISC              4#define PLR_STOP_FSM_INIT_FOR_NEW_DISC_CHECK        5//state DONE#define PLR_STOP_FSM_STOP_DONE                      6#define PLR_STOP_FSM_STOP_ERROR                     7//player mount fsm transition//state RUN#define PLR_MOUNT_CD                          0#define PLR_MOUNT_USB                         1#define PLR_MOUNT_SDC                          2#define PLR_MOUNT_CD_INIT_FOR_NEW_DISC        3#define PLR_MOUNT_CD_INIT_FOR_NEW_DISC_CHECK  4#define PLR_MOUNT_CD_READ_TOC                 5#define PLR_MOUNT_CD_READ_TOC_CHECK           6#define PLR_MOUNT_DETECT_FS                   7#define PLR_MOUNT_DETECT_FS_CHECK             8#define PLR_MOUNT_STOP                        9#define PLR_MOUNT_STOP_CHECK                 10//state DONE#define PLR_MOUNT_DONE                       11#define PLR_MOUNT_DONE_FLASH_FOUND           12 #define PLR_MOUNT_ERROR                      13#if 0  // REMOVED [OT]//state RUN#define PLR_STOP_PLAYBACK               0#define PLT_STOP_PLAYBACK_CHECK         1#define PLR_PLAYLIST_INIT               2#define PLR_PLAYLIST_READ_DATA					3#define PLR_PLAYLIST_PARSE_DATA         4//state DONE#define PLR_PLAYLIST_DONE               5#define PLR_PLAYLIST_ERROR              6#endif//player read data transition//state RUN#define PLR_READ_FILE_INIT              0#define PLR_READ_FILE_READ_DATA         1#define PLR_READ_FILE_READ_FIRST_DATA   2#define PLR_READ_FILE_WAIT_READY        3#define PLR_READ_FILE_DATA_READY        4#define PLR_READ_FILE_LAST_DATA_READY   5//state DONE                              #define PLR_READ_FILE_DONE              6#define PLR_READ_FILE_ERROR             7#if (0!=IPOD_AP)	//[LL]new//player ipod activity transition//state RUN#define PLR_IPOD_ACTIVE_INIT             0#define PLR_IPOD_ACTIVE_PENDING          1#define PLR_IPOD_ACTIVE_CLOSE            2//state DONE#define PLR_IPOD_ACTIVE_DONE             3#define PLR_IPOD_ACTIVE_ERROR            4#endif /*IPOD_AP*/	//[LL]new#define t_player_inevent uint32typedef struct {uint16    min;uint8     sec;uint8     frame;} t_time_params;typedef struct {  uint16 min;  uint8 sec;  uint8 frame;  uint16 song_nr_abs;  uint16 song_nr_rel;  uint16 song_dir;  } t_player_time_info;typedef uint32 t_player_song_time; //maximum devices number#if ((0 != HAVE_USB) && (HAVE_SDC))  #define DEV_SLOTS 3#elif (0 != HAVE_USB) || (HAVE_SDC)  #define DEV_SLOTS 2#else  #define DEV_SLOTS 1#endiftypedef enum {  DEV_CD_SLOT = 0,#if (0 != HAVE_USB)    DEV_USB_SLOT,#endif  #if (0 != HAVE_SDC)    DEV_SDC_SLOT,#endif  DEV_NONE_SLOT} t_device_slots;#define RESUME_NAME_LENGTH 16typedef struct {  t_bool             available;  t_XItem            song_index_relative;      //not used internal X_array nr, but song nr relative to 1st device's volume  t_player_song_time song_resume_time;  uint32             song_size;

⌨️ 快捷键说明

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