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

📄 controller.h

📁 本程序为ST公司开发的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/************************************************** * * controller.h * * CVS ID:   $Id: controller.h,v 1.95 2007/09/21 05:25:45 hara Exp $ * Author:   Ondrey Trubac [OT] - STM * Date:     $Date: 2007/09/21 05:25:45 $ * Revision: $Revision: 1.95 $ * * Description: * *   Main entry point for the controller task. * *************************************************** * * COPYRIGHT (C) ST Microelectronics  2005 *            All Rights Reserved * ********************************************************************************************** * *  \brief        Controller * *  \par          Change History: * * *  - DR060912    Play Mode / ROM Mode buffer access Flag Play_Mode(Declared In t_child_xfer_event) * ****************************************************************************** * * STM CVS Log: * * $Log: controller.h,v $ * Revision 1.95  2007/09/21 05:25:45  hara * Initial implementation for WMDRM feature into A+. * * Revision 1.94  2007/07/12 16:44:27  longauer * init/close usb controller cmd/status path partly implemented * * Revision 1.93  2007/07/09 11:10:35  longauer * preparation for forced closing *  of the usb controller, preparation for iAP, total medium size info, *  usb device serial number string length corrected, cleaning * * Revision 1.92  2007/06/04 16:58:44  longauer * USBtask rearrangement in order to support more logical units; new file usb_pri.h added with USBtask private declarations; USB compilation switches added; constants renaming; * * Revision 1.91  2007/02/26 12:32:41  trubac * SDC defines not conditional to ease compilation problems when no SDC * * Revision 1.90  2007/02/21 20:18:13  longauer * usb states and error reorganization;  usb state is propagated to player task = usb *  state messaging * * Revision 1.89  2007/02/21 09:15:42  chlapik * new CTR - CAP interface: ESP history removed from CTR * * Revision 1.88  2007/01/03 09:52:14  chlapik * fixed bug - if fast seek cmd coming while prebuffering of next song for CDDA, modify cap_write_q_tno inside CAP from CTR to current played song * * Revision 1.87  2006/12/06 13:34:28  marcucci * Have Update Fix * * Revision 1.86  2006/12/04 16:43:41  chlapik * waiting for read ready in read tr. * * Revision 1.85  2006/11/27 19:39:45  belardi * Host Update protocol addition * * Revision 1.84  2006/11/21 15:34:37  sedmik * new macro def, checking all seek params * * Revision 1.83  2006/11/13 19:03:59  longauer * *** empty log message *** * * Revision 1.82  2006/10/17 14:19:36  chlapik * - multiple ready * - modified devices handling: type of last cmd from PLY to CTR stored for each device separately * - CTR checks if there is not wrong unforced cmd for prebuffering while old one is still not finished * - new CTR - CAP interface: * 	- CTR is able to process info about amount of really provided data from CAP, re-ask for rest of data again * 	- number of xfered data calculates CTR itself (temporarily) * 	- sector lba in read requests for CDDA added * 	- CTR doesn't use ctr_read_cmd() * 	- CTR has posibility to work without ESP_HISTORY * * Revision 1.81  2006/10/17 09:46:39  trubac * xfer_params struct, removed unused tag * * Revision 1.80  2006/10/10 12:03:29  belardi * Merge of m8_cav2_cm80507 * - removed buffering_mode from struct * * Revision 1.79  2006/09/26 09:41:20  belardi * Added function prototype * * Revision 1.78  2006/09/19 11:03:57  chlapik * solved misunderstanding of Play_Mode and buffering_mode bits in cmd to CAP - buffering_mode is again present in cmd structure * * Revision 1.77  2006/09/18 13:22:27  chlapik * fixed bug - if FF cmd cancelled by FB * - wrong determination of search mode in process_preevents (not only data params but also play params must be checked) * - again checking errors for read requests from CAP * * Revision 1.76  2006/09/15 19:32:15  belardi * Merged the m8_cav2_cm80506_cs3563. * - changed xfer_prameters fields * * ************************************************************************************************//* TODO* READY different types for different commands and force/unforced commands* controller configuration* search  - silence between search chunks (configurable length)* insert pause (silence no mute) between songs (CA only)* fix offset MACROS and use it in controller* clean device ID* USB bug* error handling of unfinished write request to capture* add fade in/out* ESP prebuffering to check* Reset all tasks to be able to execute eject when everything fail* Recheck read ready from capture requirements to be not interrupted with new command*//* DONE* implement unforced to force command (search - play always forced)* finish PLAY_AT from current position* search  - implement first play and than jump  - capture communication to ignore only first jump track change* time after stop to be reported in relation with real begin of song* Add buffer mode to capture write command (TODO-1)*/#ifndef DEFINE_CONTROLLER_H#define DEFINE_CONTROLLER_H#include "capture.h"#include "decoder_defines.h"#include "decoder_task.h"#include "xdefines.h"#define END_OF_SONG                    0x1#define END_OF_PLAY                    0x3#define XFER_SPLIT                     0x1#define DONT_DO_FIRST_JUMP             0x2#define BITRATE_DETECT_LENGTH      (5*2048)  // 5sectors// Used for Device data for other Task (FileSys / Player)#define CTR_FOR_FILESYS_TASK          0#define CTR_FOR_PLAYER_TASK           1// Controller events:#define CONTROLLER_NEW_CAPTURE_TOC_EVENT      0x020#define CONTROLLER_NEW_FILESYS_DATA_REQUEST_EVENT   0x040#define CONTROLLER_NEW_FILESYS_INIT_EVENT           0x080#define CONTROLLER_NEW_FILESYS_TAG_EVENT            0x100#define CONTROLLER_NEW_FILESYS_MOUNT_EVENT          0x200#define CONTROLLER_NEW_FILESYS_STOP_EVENT           0x400#if (0 != HAVE_HOST_UPDATE)#define UPDATE_LOAD_NEXT                            0x80000#endif// controller's sub_fsm:#define CTR_TRANSITION_READ_TOC           0x001#define CTR_TRANSITION_MOUNT_FS           0x002#define CTR_TRANSITION_TAG_DECODE         0x004#define CTR_TRANSITION_STOP               0x008#define CTR_TRANSITION_CD_DATA_FOR_CTR    0x010#define CTR_TRANSITION_CD_DATA_FOR_TASK   0x020#define CTR_TRANSITION_PLAY               0x040#define CTR_TRANSITION_USB_DATA_FOR_CTR   0x080 // M.Ch#define CTR_TRANSITION_USB_DATA_FOR_TASK  0x100 // M.Ch#if (0 != HAVE_SDC)#define CTR_TRANSITION_SDC_DATA_FOR_CTR   CTR_TRANSITION_USB_DATA_FOR_CTR#define CTR_TRANSITION_SDC_DATA_FOR_TASK  CTR_TRANSITION_USB_DATA_FOR_TASK#endif /* HAVE_SDC */#define CTR_TRANSITION_STOP_FYSESYS       0x200#define CTR_TRANSITION_STOP_DECODER       0x400#define CTR_TRANSITION_CD_EXTENT          0x800#define CTR_TRANSITION_STOP_USB           0x1000#define CTR_TRANSITION_INIT_DISC          0x2000#define CTR_TRANSITION_DATA               0x4000#define CTR_TRANSITION_STOP_CD            0x8000#define CTR_TRANSITION_STOP_DEVICE        0x8000 // TBD would need return values to be uint32#define CTR_TRANSITION_ESP                0x8000 // TBD would need return values to be uint32#define CTR_TRANSITION_READ               0x8000 // TBD would need return values to be uint32#if (0 != HAVE_UPDATE)#define CTR_TRANSITION_UPDATE             CTR_TRANSITION_PLAY#endif /* HAVE_UPDATE *///#if (0 != HAVE_SDC)#define SDC_MOUNT             0x20000	//originally USB_MOUNT#define SDC_UMOUNT            0x40000	//originally USB_UMOUNT//#endif /* HAVE_SDC */#define PREPARE_IOREAD(ev,dev,lba,stp,ofs,ssz,buf,cnt,flg)  do {  \  ev.command = CHILD_CMD_XFER_DATA;                               \  ev.did=dev;                                                     \  ev.command_params.xfer_params.sector_start=lba;                 \  ev.command_params.xfer_params.sector_stop=stp;                  \  ev.command_params.xfer_params.offset=ofs;                       \  ev.command_params.xfer_params.sector_size=ssz;                  \  ev.command_params.xfer_params.dest=buf;                         \  ev.command_params.xfer_params.count=cnt;                        \  ev.command_params.xfer_params.flags=flg;               } while(0)#define COPY_CAP_CMD(dst,src)                                     do {  \  dst.command = CAP_CMD_XFER_DATA;                                      \  dst.did=DEV_CD_ID;                                                    \  dst.command_params.xfer_params.sector_start=src.sector_start;         \  dst.command_params.xfer_params.sector_stop=src.sector_stop;           \  dst.command_params.xfer_params.end_mode = src.end_mode;               \  dst.command_params.xfer_params.force_execution=src.force_execution;   \  dst.command_params.xfer_params.Play_Mode = src.Play_Mode;             \  dst.command_params.xfer_params.data_type=src.data_type;               \  dst.command_params.xfer_params.dont_ignore_first_track_change=src.dont_ignore_first_track_change; \  dst.command_params.xfer_params.FB_mode=src.FB_mode;                   \  dst.command_params.xfer_params.update_process = src.update_process;   \  dst.command_params.xfer_params.cur_TNO = src.cur_TNO;                 \  } while(0)#if 0  dst.command_params.xfer_params.offset=src.command_params.xfer_params.offset;            \  dst.command_params.xfer_params.sector_size=src.command_params.xfer_params.sector_size;  \  dst.command_params.xfer_params.dest=src.command_params.xfer_params.dest;                \  dst.command_params.xfer_params.count=src.command_params.xfer_params.count;              \  dst.command_params.xfer_params.flags=flg;#endif// internal run states of FSM data_acquisition#define CTR_GET_DATA_FSM_IDLE             0#define CTR_GET_DATA_FSM_WAIT_READ_READY  1#define CTR_GET_DATA_FSM_CHECK_FB         2#define CTR_GET_DATA_FSM_WAIT_FB          3#define CTR_GET_DATA_FSM_READ_CACHE       4#define CTR_GET_DATA_FSM_READ             5#define CTR_GET_DATA_FSM_WAIT             6#define CTR_GET_DATA_FSM_WAIT_DMA         7#define CTR_GET_DATA_FSM_WAIT_NEXT_SONG   8#define CTR_GET_DATA_FSM_SONG_TOO_SHORT   9#define CTR_GET_DATA_FSM_READ_CACHE_NEXT        10#define CTR_GET_DATA_FSM_WAIT_WAKE_UP     11// states of FSM tag decode#define CTR_TAG_FSM_BITRATE     0#define CTR_TAG_FSM_TAG         1#define CTR_TAG_FSM_WAIT        2// states of FSM mount FS#define CTR_MOUNT_FSM_WAIT_READ_READY   0#define CTR_MOUNT_FSM_IDLE              1#define CTR_MOUNT_FSM_WAIT_START        2#define CTR_MOUNT_FSM_CHECK_TOC         3#define CTR_MOUNT_FSM_WAIT_FOR_TOC      4#define CTR_MOUNT_FSM_WAIT_READ_READY_2 5#define CTR_MOUNT_FSM_WAIT_SPEED        6#define CTR_MOUNT_FSM_START_MOUNT       7#define CTR_MOUNT_FSM_WAIT_FOR_MOUNT    8// states of FSM init new disc#define CTR_INIT_DISC_FSM_WAIT_READ_READY   0#define CTR_INIT_DISC_FSM_IDLE              1#define CTR_INIT_DISC_FSM_WAIT_STOP         2#define CTR_INIT_DISC_FSM_WAIT_READ_READY_2 3#define CTR_INIT_DISC_FSM_INIT              4#define CTR_INIT_DISC_FSM_WAIT_INIT         5// states of FSM toc read#define CTR_TOC_FSM_WAIT_READ_READY   0#define CTR_TOC_FSM_IDLE              1#define CTR_TOC_FSM_WAIT_START        2#define CTR_TOC_FSM_READ_TOC          3#define CTR_TOC_FSM_READING           4#define CTR_TOC_FSM_WAIT_READ_READY_2 5#define CTR_TOC_FSM_SET_SPEED         6#define CTR_TOC_FSM_WAIT_SPEED        7// states of FSM CD_EXTENT#define CTR_CD_EXTENT_FSM_IDLE        0#define CTR_CD_EXTENT_FSM_WAIT_READ_READY_OR_ESP_NOT_FULL 1#define CTR_CD_EXTENT_FSM_WAIT_ESP    2#define CTR_CD_EXTENT_FSM_WAIT_EXTENT 3// states of FSM PLAY#define CTR_PLAY_FSM_IDLE                   0#define CTR_PLAY_FSM_WAIT_STOP              1#define CTR_PLAY_FSM_SERVO_START            2#define CTR_PLAY_FSM_WAIT_START             3#define CTR_PLAY_FSM_UNKNOW_SONG            4#define CTR_PLAY_FSM_WAIT_OLD_SONG_FINISHED 5#define CTR_PLAY_FSM_SELECT_DEVICE          6#define CTR_PLAY_FSM_WAIT_FB_BUFFERED       7#define CTR_PLAY_FSM_WAIT_FOR_BITRATE       8#define CTR_PLAY_FSM_TAG                    9#define CTR_PLAY_FSM_WAIT_FOR_TAG           10#define CTR_PLAY_FSM_FEED_DATA              11#define CTR_PLAY_FSM_WAIT_DEC_RESET         12#define CTR_PLAY_FSM_WAIT_READ_READY        13// states of FSM data for Decoder#define CTR_DATA_FSM_IDLE                 0#define CTR_DATA_FSM_FEED_DATA            1#define CTR_DATA_FSM_WAIT_FOR_DATA        2#define CTR_DATA_FSM_START_NEW_SONG       3#define CTR_DATA_FSM_WAIT_START_NEW_SONG  4#define CTR_DATA_FSM_WAIT_FOR_DECODER_EOS 5#if (1 == HAVE_WMDRM)#define CTR_DATA_FSM_WAIT_FOR_CLOSE       6#endif// ESP FSM#define CTR_ESP_FSM_BITRATE       0#define CTR_ESP_FSM_WAIT_BITRATE  1#define CTR_ESP_FSM_ID3V1         2#define CTR_ESP_FSM_WAIT_ID3V1    3#define CTR_ESP_FSM_SONG          4// READ FSM#define CTR_READ_FSM_IDLE         0

⌨️ 快捷键说明

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