?? player.h
字號:
/************************************************** * * 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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -