📄 capture.h
字号:
/****************************************************************************** * * capture.h * * CVS ID: $Id: capture.h,v 1.70 2007/09/26 12:00:23 marcucci Exp $ * Author: Filippo Brenna [FB] - STM * Date: $Date: 2007/09/26 12:00:23 $ * Revision: $Revision: 1.70 $ * * Description: * * capture task: header * ****************************************************************************** * * COPYRIGHT (C) ST Microelectronics 2005 * All Rights Reserved * ****************************************************************************** * \par Change History: * * - DR060912 Play Mode / ROM Mode buffer access Flag Play_Mode * (Declared In t_write_event) * - BB060926b Improved error reporting * ******************************************************************************* * * STM CVS Log: * * $Log: capture.h,v $ * Revision 1.70 2007/09/26 12:00:23 marcucci * Fixed: Issue#122, Bad Time Info, Last Sector Repeat * * Revision 1.69 2007/08/01 10:17:29 belardi * Modifications to support run-time configurable ESP size * - made the ESP thresholds variables * * Revision 1.68 2007/04/13 09:54:16 hara * Put g_good_lba variable. Same modification for the issue on B_3_1_P3. * - The issue of Repeating playback some seconds. * * Revision 1.67 2007/04/06 05:29:06 hara * Add xfer_sector_start variable to fix one problem to make no target sector * due to error sector at track boundary. (SCD-4249) * * Revision 1.66 2007/02/22 18:41:30 belardi * Added function prototype * * Revision 1.65 2007/02/22 01:42:21 hara * new CTR - CAP interface : Change CAP_NUM_SKIP_ERROR_SECTORS value. * * Revision 1.64 2007/02/21 09:15:43 chlapik * new CTR - CAP interface: ESP history removed from CTR * * Revision 1.63 2007/01/17 08:30:08 hara * Fixed bug - for bad timing of BD sector error after TNO change. * Bug #52 in "SW OpenIssues 122106.xls" * * Revision 1.62 2007/01/03 09:52:15 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.61 2006/12/06 13:34:05 marcucci * Have Update Fix * * Revision 1.60 2006/12/06 07:35:23 belardi * Fix by [FH] to cope with ABEX test discs containing bad subQ data. Ignores bad subQ after a number of retries. * * Revision 1.59 2006/10/17 14:11:39 chlapik * preparation for new CTR - CAP interface, changed read cmd * * Revision 1.58 2006/10/10 12:01:21 belardi * Merge of m8_cav2_cm80507 * - renamed function * - removed buffering_mode from struct * - change return value * * Revision 1.57 2006/09/19 11:03:58 chlapik * solved misunderstanding of Play_Mode and buffering_mode bits in cmd to CAP - buffering_mode is again present in cmd structure * * Revision 1.56 2006/09/15 19:27:00 belardi * Merged the m8_cav2_cm80506_cs3563. * - APM modifications for Playlist processing * * *****************************************************************************/#ifndef __CAP_H#define __CAP_H#include "apdevsys.h"#include "gendef.h"#include "events.h"#include "srvcmd.h"#define CAP_DEBUG 0/*---------------------------------------------------------------------------*//*!\brief Capture Task gen def *//*---------------------------------------------------------------------------*/typedef enum{ CAP_WRITE = 0, CAP_READ = 1,} t_xfer_type;//#define CAP_SECTOR_INFO#define NOT_VALID_SUBCODE 0xFFFFFFFF#define STD_CDDA_ADPCM_SECTOR_SIZE 640 /* 2560 / 4 */#define STD_CDDA_SECTOR_SIZE 2352#define STD_CDROM1_SECTOR_SIZE 2048#define STD_CDROM2_SECTOR_SIZE 2336#define STD_CDROM_XA1_SECTOR_SIZE 2048#define STD_CDROM_XA2_SECTOR_SIZE 2324#define STD_CDDA_OFFSET 0#define STD_CDROM_OFFSET 16#define STD_CDROM_XA_OFFSET 24/*DR060922*/#define STD_CDROM_SYNC_OFFSET 12 #define STD_CDROM_HEADER_OFFSET 4 #define STD_CDROM_XA1_XA2_SH_OFFSET 8 #define STD_CDROM1_AUXDATA 288 #define STD_CDROM_XA1_AUXDATA 280 #define STD_CDROM_XA2_AUXDATA 4 #define DATA_TYPE_CDROM_M1 0x02 //DR060922#define DATA_TYPE_CDROM_M2 0x04#define DATA_TYPE_CDROM_XA_F1 0x05#define DATA_TYPE_CDROM_XA_F2 0x06#define DATA_TYPE_CDDA 0x08#define STD_USB_SECTOR_SIZE 0 /* tbd */#define STD_SDC_SECTOR_SIZE 0 /* tbd */#define CAP_DEFECT_SIZE 0x75#define CAP_SERVO_SEEK_MARGIN 2#define CAP_INPUT_BUFFER cap_config.esp_params.input_buffer#define CAP_INPUT_BUFFER_SIZE cap_config.esp_params.input_buffer_size#define CAP_INPUT_SECTOR_SIZE cap_config.esp_params.input_sector_size#if (0 == HAVE_SHOCK_MEMORY)#define CAP_CHIN_SECTOR_SIZE 2560#define CAP_INPUT_BUFFER_SIZE_SDRAM 0x2D0 /* SDRAM size 0x00200000 / 1sector 2856bytes = 734. (Max 0x2DE) */#endif#define CAP_INPUT_BUFFER_SIZE_INTRAM 9/* warning: (CAP_INPUT_BUFFER_SIZE - CAP_BUFFER_THRS) must be minimum 3; *//* BD is not able to xfer less than 3 sectors in one shot */#define CAP_MAX_RETRIES 7 // [FH] 06/Dec/2006#define CAP_MAX_SERVO_RETRIES 4#define CAP_RECOVER_SECTOR_OK_COUNT 5#define CAP_MAX_BD_SECTOR_IT_COUNT 32/*---------------------------------------------------------------------------*//*!\brief Capture Task ESP def *//*---------------------------------------------------------------------------*/#define CAP_ESP_MIN_ADDR_PTR 0x00#define CAP_ESP_MAX_ADDR_PTR cap_config.esp_params.input_buffer_size#define CAP_ESP_STOP_ADDR_PTR cap_config.esp_params.input_buffer_size#define CAP_ESP_OVERFLOW_THRS cap_config.esp_params.warning_overflow_thrs#define CAP_ESP_UNDERFLOW_THRS cap_config.esp_params.warning_underflow_thrs/* For ESP ON */extern uint16 CAP_ESP_ON_OVERFLOW_THRS;extern uint16 CAP_ESP_ON_UNDERFLOW_THRS;#if 0#define CAP_ESP_ON_OVERFLOW_THRS (9*75)#define CAP_ESP_ON_UNDERFLOW_THRS (7*75)#endif#define CAP_ESP_ON_STARTUP_THRS_CDDA (1*75) //BBTODO change like in basic/* For ESP OFF */#define CAP_ESP_OFF_OVERFLOW_THRS 5 /* After detect Overflow DMA will xfer 4 (or 3) sectors. */#define CAP_ESP_OFF_UNDERFLOW_THRS 5#define CAP_ESP_SUSPICIOUS_CHECK_MARGIN 14+2 /* 14 sectors for suspicious check, and 2 sectors for CDDA N-1,N-2 sector check *//* For ESP ON/OFF */#define CAP_ESP_EXTEND_SERVO_RETRIES_THRS 10// 133ms is comparable with 1 recovery time#define CAP_ESP_STARTUP_THRS 3#define CAP_NUM_SKIP_ERROR_SECTORS 2#define CAP_ESP_MAXIMUM_INVALID_CDDA_SECTORS 75 /* Maximum allowable invalid sector count on CDDA [FH] 25/Sep/2007 *//* xfer condition flags *//* write flags */#define CAP_ESP_CURR_EVENT_READY_DONE 0x01#define CAP_ESP_CURR_EVENT_ENDPLAY_DONE 0x02#define CAP_ESP_WRITE_PTR_KEEP 0x04 /* used when is adpcm only */#define CAP_ESP_MARK_FIRST_XFER 0x08 /* used when is adpcm only */#define CAP_ESP_WAKEUP_TO_RESTART 0x10#define CAP_ESP_WARNING_BACK_PTR 0x20#define CAP_ESP_ENABLE_RECOVERY 0x40 /* [FH] 17/Jan/2007 */ #define CAP_IGNORE_TRACK_CHANGE 0x01#define CAP_ALL_SECTORS_PAUSE 0x02#define CAP_FB_MODE 0x04#define CAP_KEEP_LAST_SECTOR_NUM 0x08#define CAP_ESP_BUFFER_UNDERFLOW 0x40#define CAP_FOUND_UNREAD_SECTOR 0x80#define CAP_ROM_MODE_JUMP 0 //DR060912 Jump After 200 Frames/* read flags */#define CAP_ESP_SECTOR_SIZE_CHANGE 0x01#define CAP_ESP_READ_STARTUP_DONE 0x02#define CAP_ESP_READ_RUNNING 0x04/* sector flags DR060926b*/#define CAP_END_OF_PLAY (1 << 0)#define CAP_END_OF_TARGET_TIME (1 << 1)#define CAP_END_OF_CHUNK (1 << 2)#define CAP_END_OF_BUFFER (1 << 3)#define CAP_BEGIN_OF_CHUNK (1 << 4)#define CAP_BEGIN_OF_DISCONTINUITY (1 << 5)/* Mark for invalid address sector, dummy sector */#define CAP_INVALID_SECTOR_MARK 0x33#define CAP_DUMMY_SECTOR_EOS_MARK 0x55#define CAP_DUMMY_SECTOR_ERR_MARK 0xAA/*---------------------------------------------------------------------------*//*!\brief Capture Task Xfer modes *//*---------------------------------------------------------------------------*//* xfer end_modes (uint8) */#define CAP_PLAY_UNTIL_ENDPLAY_TIME SEEK_PLAY_UNTIL_ENDPLAY_TIME#define CAP_PLAY_UNTIL_TRACK_CHANGE SEEK_PLAY_UNTIL_TRACK_CHANGE#define CAP_PLAY_UNTIL_AUDIO_TRACK SEEK_PLAY_UNTIL_AUDIO_TRACK#define CAP_PLAY_UNTIL_DATA_TRACK SEEK_PLAY_UNTIL_DATA_TRACK#define CAP_PLAY_UNTIL_LEADINOUT SEEK_PLAY_UNTIL_LEADINOUT/*---------------------------------------------------------------------------*//*!\brief Capture Task macros *//*---------------------------------------------------------------------------*//* bd */#define cap_is_bd_ready() (RUNNING != local_bd_event.status)#define cap_is_bd_run() (RUNNING == local_bd_event.status)#define cap_reset_bd_sts() (local_bd_event.status = READY)#define cap_bd_start() BD_CTL2.field.fw_stop = 0;#define cap_bd_stop() BD_CTL2.field.fw_stop = 1;/* dma1 */#define cap_dma1_start() DMA_CTRL1.field.enable = 1;/* dma3 */#define cap_dma3_start() DMA_CTRL3.field.enable = 1;#define cap_is_dma3_ready() !(cap_status.read.xfer_condition & CAP_ESP_READ_RUNNING)/*---------------------------------------------------------------------------*//*!\brief Capture Task Configuration *//*---------------------------------------------------------------------------*/typedef struct cap_config{ UInt new_config : 1; UInt esp : 1; UInt adpcm : 2; UInt sdram_ok : 1; struct { uint8 *input_buffer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -