?? events.h
字號:
/* capture use common type for subcode and endplay event, so we are making one unique TEP event type */typedef enum{ /* types common to time and end of play event */ _EVENT_TEP_NOEVENT = 0, _EVENT_TEP_LEADIN = (1 << 0), _EVENT_TEP_LEADOUT = (1 << 1), _EVENT_TEP_LEADINOUT = (_EVENT_TEP_LEADIN | _EVENT_TEP_LEADOUT), _EVENT_TEP_DATA_TRACK = (1 << 2), _EVENT_TEP_AUDIO_TRACK = (1 << 3), _EVENT_TEP_NEW_TRACK = (1 << 4), /* end of play only event types */ _EVENT_TEP_TARGET_TIME = (1 << 5), _EVENT_TEP_PAUSE_CMD = (1 << 6), /* time only event types */ _EVENT_TEP_NEW_T = (1 << 7), _EVENT_TEP_CRCOK = (1 << 8), _EVENT_TEP_ABS_TIME = (1 << 9), _EVENT_TEP_REL_TIME = (1 << 10), _EVENT_TEP_INTERPOLATED = (1 << 11), _EVENT_TEP_END_OF_SEEK = (1 << 12), _EVENT_TEP_AFTER_RECOVER = (1 << 13), /* TODO following are sent by capture, it is not clear if time or endplay */ _EVENT_CT_END_OF_READ = (1 << 14), _EVENT_CT_END_OF_SONG = (1 << 15), _EVENT_CT_END_OF_TARGET_TIME = (1 << 16), _EVENT_CT_BEGIN_OF_SONG = (1 << 17), _EVENT_CT_SECTORS_PAUSE = (1 << 18), /* DR060926b - BEGIN */ _EVENT_CT_END_OF_CHUNK = (1 << 19), _EVENT_CT_END_OF_BUFFER = (1 << 20), _EVENT_CT_BEGIN_OF_DISCONTINUITY = (1 << 21), _EVENT_CT_BEGIN_OF_CHUNK = (1 << 22), _EVENT_TEP_HAD_TIME_BEFORE = (1 << 23), /* BB070110a *//* DR060926b - END */} tTEPEvent_type;/********************************//* Time event definition *//********************************/typedef tTEPEvent_type tTimeEvent_type;typedef struct{ uint8 q_cadr;#ifdef APM_PICKUP uint8 q_tno;#else // [RB] improper use of the SUBCODE type, we use this same field to store the CDROM // track number, which can be higher than 99, so we need uint16 uint16 q_tno;#endif uint8 q_point; uint16 q_min; //for long CA songs uint8 q_sec; uint8 q_frame; uint8 q_zero; uint8 q_amin; uint8 q_asec; uint8 q_aframe;#ifndef APM_PICKUP // [RB] another improper use of the SUBCODE to avoid recalculations in MsgTimeInfo uint16 xid;#endif} STRUCT_Q_SUBCODE;typedef enum{ CAP_READ_OK, CAP_READ_NOT_OK}t_read_status; typedef struct{ uint32 sector_diff; UInt underflow :1; UInt write_status :1; UInt buffer_status :1; UInt sector_status : 2;}t_read_error; /**BEGIN DR061122************************* * sector_status 00 good sector CAP_READ_OK * sector_status 01 bad sector CAP_READ_OK * sector_status 02 missing sector CAP_READ_NOT_OK * **END DR061122***/typedef struct{ UInt event_subcode : 1; tTimeEvent_type event_type; int32 T_actual; /* BB070110a */ STRUCT_Q_SUBCODE q_subcode; uint16 bytes_xfered; t_read_status read_status; // DR061114...new t_read_error read_error;// DR061114...new} tQsubcode_event;typedef struct{ UInt event_subcode : 1; tTimeEvent_type event_type; uint32 rel_time; uint32 xid;} tMiliSec_event;typedef union{ // subcode (CDDA) and miliseconds (MP3/WMA) in one type tQsubcode_event subcode; tMiliSec_event ms; // in miliseconds} tDecoderTime_event;/******************************//* Endplay events definition *//******************************/typedef tTEPEvent_type tEndPlay_type;/***********************//* Servo events *//***********************//* Aquisition subcode event */#define ACQ_EVENT_SUBCODE_NONE _EVENT_TEP_NOEVENT#define ACQ_EVENT_SUBCODE_LEADIN _EVENT_TEP_LEADIN#define ACQ_EVENT_SUBCODE_LEADOUT _EVENT_TEP_LEADOUT#define ACQ_EVENT_SUBCODE_CRCOK _EVENT_TEP_CRCOK#define ACQ_EVENT_SUBCODE_INTERPOLATED _EVENT_TEP_INTERPOLATED#define ACQ_EVENT_SUBCODE_NEW_T _EVENT_TEP_NEW_T#define ACQ_EVENT_SUBCODE_NEW_TRACK _EVENT_TEP_NEW_TRACK#define ACQ_EVENT_SUBCODE_ABS_TIME _EVENT_TEP_ABS_TIME#define ACQ_EVENT_SUBCODE_REL_TIME _EVENT_TEP_REL_TIMEtypedef struct{ tQsubcode_event subcode_event; int32 T_actual; uint32 freq_1T;} t_acq_subcode_event;extern t_acq_subcode_event acq_subcode_event[EVENT_MAX_STAGES];/* Servo subcode event */#define SERVO_EVENT_SUBCODE_NONE _EVENT_TEP_NOEVENT#define SERVO_EVENT_SUBCODE_CRCOK _EVENT_TEP_CRCOK#define SERVO_EVENT_SUBCODE_AFTER_RECOVER _EVENT_TEP_AFTER_RECOVER#define SERVO_EVENT_SUBCODE_END_OF_SEEK _EVENT_TEP_END_OF_SEEKextern tQsubcode_event servo_subcode_event[EVENT_MAX_STAGES];/* Servo Status Events */#if (HAVE_CD_MECHA == 1)#define event_set_servo(__event) (event_out[SERVO_STATUS_EVENT].event = (t_event)(__event))#define SERVO_STATUS event_in[SERVO_STATUS_EVENT].event#define IS_SERVO_EVENT (NO_EVENT != SERVO_STATUS)#define IS_SERVO_EVENT_READY (READY == SERVO_STATUS)#define IS_SERVO_EVENT_RECOVER (SERVO_RECOVER == SERVO_STATUS)#define IS_SERVO_EVENT_ERROR ((READY != SERVO_STATUS) && (SERVO_RECOVER != SERVO_STATUS))#endif/* Servo endplay event */#define SERVO_EVENT_ENDPLAY_AUDIO_TRACK _EVENT_TEP_AUDIO_TRACK#define SERVO_EVENT_ENDPLAY_DATA_TRACK _EVENT_TEP_DATA_TRACK#define SERVO_EVENT_ENDPLAY_LEADIN _EVENT_TEP_LEADIN#define SERVO_EVENT_ENDPLAY_LEADOUT _EVENT_TEP_LEADOUT#define SERVO_EVENT_ENDPLAY_NOEVENT _EVENT_TEP_NOEVENT#define SERVO_EVENT_ENDPLAY_TARGET_TIME _EVENT_TEP_TARGET_TIME#define SERVO_EVENT_ENDPLAY_TRACK_CHANGED _EVENT_TEP_NEW_TRACK#define SERVO_EVENT_ENDPLAY_PAUSE_CMD _EVENT_TEP_PAUSE_CMD//#define IS_SERVO_EVENT_ENDPLAY() (0 != (event_in[SERVO_ENDPLAY_EVENT].event))#if (HAVE_CD_MECHA == 1)#define event_set_servo_endplay(__event) (event_out[SERVO_ENDPLAY_EVENT].event |= (t_event)(__event))#endif // #if (HAVE_CD_MECHA == 1)/*************************//* Capture Events *//*************************//* Capture Status Event */#define event_set_capture(__event) (event_out[CAPTURE_STATUS_EVENT].event = (t_event)(__event))#define CAPTURE_STATUS event_in[CAPTURE_STATUS_EVENT].event#define IS_CAPTURE_EVENT (NO_EVENT != CAPTURE_STATUS)#define IS_CAPTURE_EVENT_READY (READY == CAPTURE_STATUS)#define IS_CAPTURE_EVENT_ERROR (READY != CAPTURE_STATUS)/* Controller Wake up event from Capture */#define event_set_ctr_wakeup(__event) (event_out[CAPTURE_CTR_WAKEUP_EVENT].event = (t_event)(__event))#define CONTROLLER_WAKEUP event_in[CAPTURE_CTR_WAKEUP_EVENT].event#define IS_CONTROLLER_WAKEUP_EVENT (NO_EVENT != CONTROLLER_WAKEUP)#define IS_CONTROLLER_WAKEUP_EVENT_READY (READY == CONTROLLER_WAKEUP)#define IS_CONTROLLER_WAKEUP_EVENT_ERROR (READY != CONTROLLER_WAKEUP)/* Capture Read Event */#define event_set_capture_read(__event) (event_out[CAPTURE_READ_EVENT].event = (t_event)(__event))#define CAPTURE_READ event_in[CAPTURE_READ_EVENT].event#define IS_CAPTURE_READ_EVENT (NO_EVENT != CAPTURE_READ)#define IS_CAPTURE_READ_EVENT_READY (READY == CAPTURE_READ)#define IS_CAPTURE_READ_EVENT_ERROR (READY != CAPTURE_READ)/* Capture Endplay Event */#define CAPTURE_EVENT_PAUSE_NONE _EVENT_TEP_NOEVENT#define CAPTURE_EVENT_PAUSE_TARGET_TIME _EVENT_TEP_TARGET_TIME#define CAPTURE_EVENT_PAUSE_TRACK_CHANGED _EVENT_TEP_NEW_TRACK#define CAPTURE_EVENT_PAUSE_AUDIO_TRACK _EVENT_TEP_AUDIO_TRACK#define CAPTURE_EVENT_PAUSE_DATA_TRACK _EVENT_TEP_DATA_TRACK#define CAPTURE_EVENT_PAUSE_LEADINOUT _EVENT_TEP_LEADINOUT#define CAPTURE_EVENT_PAUSE_MASKALL (CAPTURE_EVENT_PAUSE_DATA_TRACK \ | CAPTURE_EVENT_PAUSE_AUDIO_TRACK \ | CAPTURE_EVENT_PAUSE_LEADINOUT \ | CAPTURE_EVENT_PAUSE_TRACK_CHANGED \ | CAPTURE_EVENT_PAUSE_TARGET_TIME)typedef struct{ UInt event_subcode : 1; tTimeEvent_type event_type; STRUCT_Q_SUBCODE q_subcode;} tCaptEndPlay_event;/* pre endplay event */#define IS_CAPTURE_PRE_ENDPLAY_EVENT (NO_EVENT != (event_in[CAPTURE_PRE_ENDPLAY_EVENT].event))#define IS_CAPTURE_PRE_ENDPLAY_EVENT_READY \ (IS_CAPTURE_PRE_ENDPLAY_EVENT ? (((tCaptEndPlay_event *)(event_in[CAPTURE_PRE_ENDPLAY_EVENT].pevent))->event_type) & CAPTURE_EVENT_PAUSE_MASKALL : 0)#define IS_CAPTURE_PRE_ENDPLAY_TARGET_TIME_EVENT_READY \ (IS_CAPTURE_PRE_ENDPLAY_EVENT ? (((tCaptEndPlay_event *)(event_in[CAPTURE_PRE_ENDPLAY_EVENT].pevent))->event_type) & CAPTURE_EVENT_PAUSE_TARGET_TIME : 0)#define IS_CAPTURE_PRE_ENDPLAY_SUBCODE_ALL_SECTORS_PAUSE ((((tQsubcode_event *)(event_in[CAPTURE_PRE_ENDPLAY_EVENT].pevent))->event_type) & CAPTURE_EVENT_SUBCODE_ALL_SECTORS_PAUSE)/* Capture Subcode Event */#define CAPTURE_EVENT_SUBCODE_NONE _EVENT_TEP_NOEVENT#define CAPTURE_EVENT_SUBCODE_LEADIN _EVENT_TEP_LEADIN#define CAPTURE_EVENT_SUBCODE_LEADOUT _EVENT_TEP_LEADOUT#define CAPTURE_EVENT_SUBCODE_LEADINOUT _EVENT_TEP_LEADINOUT#define CAPTURE_EVENT_SUBCODE_CRCOK _EVENT_TEP_CRCOK#define CAPTURE_EVENT_SUBCODE_NEW_T _EVENT_TEP_NEW_T#define CAPTURE_EVENT_SUBCODE_ABS_TIME _EVENT_TEP_ABS_TIME#define CAPTURE_EVENT_SUBCODE_REL_TIME _EVENT_TEP_REL_TIME#define CAPTURE_EVENT_SUBCODE_NEW_TRACK _EVENT_TEP_NEW_TRACK#define CAPTURE_EVENT_SUBCODE_END_OF_READ _EVENT_CT_END_OF_READ#define CAPTURE_EVENT_SUBCODE_END_OF_SONG _EVENT_CT_END_OF_SONG#define CAPTURE_EVENT_SUBCODE_END_OF_TARGET_TIME _EVENT_CT_END_OF_TARGET_TIME#define CAPTURE_EVENT_SUBCODE_BEGIN_OF_SONG _EVENT_CT_BEGIN_OF_SONG#define CAPTURE_EVENT_SUBCODE_ALL_SECTORS_PAUSE _EVENT_CT_SECTORS_PAUSE/* DR060926b - BEGIN */#define CAPTURE_EVENT_SUBCODE_END_OF_CHUNK _EVENT_CT_END_OF_CHUNK #define CAPTURE_EVENT_SUBCODE_END_OF_BUFFER _EVENT_CT_END_OF_BUFFER #define CAPTURE_EVENT_SUBCODE_BEGIN_OF_DISCONTINUITY _EVENT_CT_BEGIN_OF_DISCONTINUITY #define CAPTURE_EVENT_SUBCODE_BEGIN_OF_CHUNK _EVENT_CT_BEGIN_OF_CHUNK /* DR060926b - END */#define CAPTURE_SUBCODE (capture_subcode_event[EVENT_IN])#define IS_CAPTURE_SUBCODE_EVENT (NO_EVENT != (event_in[CAPTURE_SUBCODE_EVENT].event))#define IS_CAPTURE_SUBCODE_EVENT_TRACK_CHANGED (IS_CAPTURE_SUBCODE_EVENT ? (((tQsubcode_event *)(event_in[CAPTURE_SUBCODE_EVENT].pevent))->event_type) & CAPTURE_EVENT_PAUSE_TRACK_CHANGED : 0)#define IS_CAPTURE_SUBCODE_EVENT_END_OF_READ (IS_CAPTURE_SUBCODE_EVENT ? (((tQsubcode_event *)(event_in[CAPTURE_SUBCODE_EVENT].pevent))->event_type) & CAPTURE_EVENT_SUBCODE_END_OF_READ : 0)#define IS_CAPTURE_SUBCODE_EVENT_END_OF_SONG (IS_CAPTURE_SUBCODE_EVENT ? (((tQsubcode_event *)(event_in[CAPTURE_SUBCODE_EVENT].pevent))->event_type) & CAPTURE_EVENT_SUBCODE_END_OF_SONG : 0)#define IS_CAPTURE_SUBCODE_EVENT_END_OF_TARGET_TIME (IS_CAPTURE_SUBCODE_EVENT ? (((tQsubcode_event *)(event_in[CAPTURE_SUBCODE_EVENT].pevent))->event_type) & CAPTURE_EVENT_SUBCODE_END_OF_TARGET_TIME : 0)#define IS_CAPTURE_SUBCODE_EVENT_BEGIN_OF_DISCONTINUITY (IS_CAPTURE_SUBCODE_EVENT ? (((tQsubcode_event *)(event_in[CAPTURE_SUBCODE_EVENT].pevent))->event_type) & CAPTURE_EVENT_SUBCODE_BEGIN_OF_DISCONTINUITY : 0)#define event_in_clear_subcode(__event) event_in_clear(CAPTURE_SUBCODE_EVENT);/*****************//* Hostif events *//*****************/#define IS_HOSTIF_OUT_CMD_EVENT (NO_EVENT != (event_out[PLAYER_CMD_EVENT].pevent))#define GET_HOSTIF_OUT_CMD_EVENT (*(t_player_cmd_event *)(event_out[PLAYER_CMD_EVENT].pevent)) /*****************//* Player events *//*****************/#define event_message_set_hostif(__event) (event_out[USB_STOP_EVENT].event = (t_event)(__event))#define IS_PLAYER_CMD (NO_EVENT != (event_in[PLAYER_CMD_EVENT].event))#ifndef APM_PICKUP#define PLAYER_CMD (*(t_player_cmd_event *)(event_in[PLAYER_CMD_EVENT].pevent))#endif#define PLAYER_STATUS (*(t_player_status_event *)(event_in[PLAYER_STATUS_EVENT].pevent))
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -