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

📄 events.c

📁 本程序为ST公司开发的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************* *                    CONFIDENTIAL - PHILIPS APM * *  This is unpublished work is a trade secret. Philips APM owns all rights *  to this work and intends to maintain it in confidence to preserve its *  trade secret status. Philips Automotive Playback Modules reserves the *  right to protect this work as an unpublished copyrighted work in the *  event of an inadvertent Automotive Systems also reserves its right. *  Those having access to this work mayor deliberate unauthorized publication. *  Do not copy it, use it, or disclose the information contained in it *  without the written authorization of Philips Automotive Playback Modules. ******************************************************************************//******************************************************************************//*! \file * *    Project Scope: CDM M8 * *    Organization:  Philips APM-DS * *  Version Control: *    \source       sources/player/events.c *    \version      0.1 *    \author       Bernard Bosnjak *    \date         08.02.2005 * *  Target Hardware:    Accordo ******************************************************************************* *  \brief        Event handling * *  \par          Change History: * *************************************************** * * STM CVS Log: * * $Log: events.c,v $ * Revision 1.48  2007/11/15 14:41:48  marcucci * Added Protection in event_in_shedule() and event_out_shedule() * * Revision 1.47  2007/11/09 09:13:53  sedmik * fix for compilation directive (#elif) * * Revision 1.46  2007/11/08 17:32:37  sedmik * new cmd/status channels on IPOD_AP added * * Revision 1.45  2007/10/22 15:23:28  trubac * Safer events scheduling, first copies data then signal new event. * Improved synchronous tasks events exchange * * Revision 1.44  2007/09/26 15:08:07  dellorto * dsp hf event replaced with hf event (generated by check hf fsm) * * Revision 1.43  2007/09/20 21:35:52  longauer * virtual iPod authentication is working * * Revision 1.42  2007/08/14 15:28:26  dellorto * multiple mechanisms * * Revision 1.41  2007/08/10 12:33:29  longauer * IPOD_AP compilation switch enables future iAP * * Revision 1.40  2007/07/10 13:54:03  longauer * usb events renaming * * Revision 1.39  2007/06/04 16:58:45  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.38  2007/04/11 14:20:13  belardi * Integration of HAVE_CD_MECHA modification by [GP] * * Revision 1.37  2007/02/21 20:18:14  longauer * usb states and error reorganization;  usb state is propagated to player task = usb *  state messaging * * Revision 1.36  2007/02/21 09:15:43  chlapik * new CTR - CAP interface: ESP history removed from CTR * * Revision 1.35  2007/02/13 11:04:38  sedmik * player status changed to big event (used for host update "data prepared" signalling) * * Revision 1.34  2007/02/09 14:14:47  longauer * minor passthrough events reorganization * * Revision 1.33  2007/02/09 12:12:54  belardi * First integration of iPod pass-through * - new hostif-usb events * * Revision 1.32  2007/01/29 14:32:00  chlapik * support for USB devices with any block size (not only 512B) * * Revision 1.31  2006/11/27 19:52:43  belardi * Host Update protocol addition * - new Controller command/events * * Revision 1.30  2006/09/18 09:55:24  belardi * Corrected CVS keyword usage * * Revision 1.29  2006/09/18 09:24:52  belardi * Added Log CVS keyword into file header * * ******************************************************************************/#include <string.h>#include "gendef.h"#include "osal.h"#include "player.h"#include "controller.h"#include "capture.h"#include "xfile.h"#include "filesys.h"#include "srvcmd.h"#include "bkdhdl.h"#if (0 != HAVE_USB)#include "usb.h"#if (0 != IPOD_PASSTHROUGH)#include "hostif_high.h"#endif /*IPOD_PASSTHROUGH*/#if (0 != IPOD_AP)	//[LL]new#include "ACP.h"	//[LL]new#include "iAP.h"	//[LL]new#endif /*IPOD_AP*/	//[LL]new#endif#if (HAVE_CD_MECHA == 1)void *get_servo_subcode_event_data(t_event_stage i);#endifvoid *get_controller_cmd_event_data(t_event_stage i);void *get_controller_usb_status_event_data(t_event_stage i);void *get_decoder_cmd_event_data(t_event_stage i);void *get_capture_cmd_event_data(t_event_stage i);void *get_capture_bd_event_data(t_event_stage i);void *get_capture_subcode_event_data(t_event_stage i);void *get_capture_pre_endplay_event_data(t_event_stage i);void *get_capture_read_event_data(t_event_stage i);#if (HAVE_CD_MECHA == 1)void *get_servo_cmd_event_data(t_event_stage i);void *get_acq_subcode_event_data(t_event_stage i);#endif#if ((0!=IPOD_PASSTHROUGH) && (0 != IPOD_AP))void * get_player_downstream_cmd_event_data(t_event_stage i);void * get_player_downstream_status_event_data(t_event_stage i);void * get_player_upstream_status_event_data(t_event_stage i);void * get_player_upstream_cmd_event_data(t_event_stage i);#endif /* ((0!=IPOD_PASSTHROUGH) && (0 != IPOD_AP))*/void *get_usb_cmd_event_data(t_event_stage i);void *get_usb_status_event_data(t_event_stage i);void *get_player_subcode_event_data(t_event_stage i);void *get_player_status_event_data(t_event_stage i);void *get_decoder_time_event_data(t_event_stage i);#if (0 != HAVE_SDC)void *get_sdc_cmd_event_data(t_event_stage i);#endif /* HAVE_SDC */void *get_player_cmd_event_data(t_event_stage i);void *get_filesys_cmd_event_data(t_event_stage i);#if ((0!=IPOD_PASSTHROUGH) || (0!=IPOD_AP))	//[LL]newvoid * get_usb_downstream_cmd_event_data(t_event_stage i);void * get_usb_upstream_cmd_event_data(t_event_stage i);void * get_usb_downstream_status_event_data(t_event_stage i);void * get_usb_upstream_status_event_data(t_event_stage i);#endif /* IPOD_PASSTHROUGH || IPOD_AP */#if (0!=IPOD_AP)	//[LL]newvoid* get_acp_cmd_event_data(t_event_stage i);	//[LL]newvoid* get_acp_status_event_data(t_event_stage i);	//[LL]new#endif /*IPOD_AP*/	//[LL]newt_event_union event_out[OSAL_MAX_EVENT];t_event_union event_pending[OSAL_MAX_EVENT];t_event_union event_in[OSAL_MAX_EVENT];typedef enum{  EVENT_TYPE_SIMPLE,  EVENT_TYPE_BITMAP,  EVENT_TYPE_BIG,} t_event_type;typedef struct{  OSAL_THREAD_ID_t  thread_to_shedule;  t_event_type      event_type;  Int               size;  void *(* get_event)(t_event_stage);} t_event_data;static const t_event_data event_data[OSAL_MAX_EVENT] ={#if (HAVE_CD_MECHA == 1)  {OSAL_THREAD_LoaderTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* LOADER_CMD_EVENT     */#endif#ifdef APM_PICKUP  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BITMAP, 0, NULL},   /* MSG_SET_REQUEST_PENDING */  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BITMAP, 0, NULL},   /* MSG_DELPHI_REQUEST_PENDING */#endif  {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG, sizeof(t_player_cmd_event), get_player_cmd_event_data},   /* PLAYER_CMD_EVENT */#if ((0!=IPOD_PASSTHROUGH) && (0 != IPOD_AP))  {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG, sizeof(t_usb_downstream_cmd_event), get_player_downstream_cmd_event_data},   /* PLAYER_DOWNSTREAM_CMD_EVENT */    {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG, sizeof(t_usb_upstream_cmd_event), get_player_upstream_cmd_event_data},   /* PLAYER_UPSTREAM_CMD_EVENT */    #endif /* ((0!=IPOD_PASSTHROUGH) && (0 != IPOD_AP))*/  {OSAL_THREAD_ControllerTask, EVENT_TYPE_BIG, sizeof(t_controller_cmd_event), get_controller_cmd_event_data},   /* CONTROLLER_CMD_EVENT */  {OSAL_THREAD_CaptureTask,  EVENT_TYPE_BIG, sizeof(t_cap_cmd_event), get_capture_cmd_event_data},   /* CAPTURE_CMD_EVENT */#if (HAVE_CD_MECHA == 1)  {OSAL_THREAD_ServoTask,  EVENT_TYPE_BIG, sizeof(t_servo_cmd_event), get_servo_cmd_event_data},   /* SERVO_CMD_EVENT */#endif  {OSAL_THREAD_DecoderTask,  EVENT_TYPE_BIG, sizeof(t_decoder_cmd_event), get_decoder_cmd_event_data},   /* DECODER_CMD_EVENT */  {OSAL_THREAD_FilesysTask,  EVENT_TYPE_BIG, sizeof(t_filesys_cmd_event), get_filesys_cmd_event_data},   /* FILESYS_CMD_EVENT */#if (0 != HAVE_USB)  {OSAL_THREAD_USBTask, EVENT_TYPE_BIG, sizeof(t_child_cmd_event), get_usb_cmd_event_data},      /* EVENT_USB_CMD */#if ((0!=IPOD_PASSTHROUGH) || (0!=IPOD_AP))	//[LL]new  {OSAL_THREAD_USBTask, EVENT_TYPE_BIG,sizeof(t_usb_downstream_cmd_event), get_usb_downstream_cmd_event_data},   /* USB_DOWNSTREAM_CMD_EVENT */  {OSAL_THREAD_USBTask, EVENT_TYPE_BIG, sizeof(t_usb_upstream_cmd_event), get_usb_upstream_cmd_event_data},   /* USB_UPSTREAM_CMD_EVENT */#endif /*IPOD_PASSTHROUGH || IPOD_AP*/#if (0!=IPOD_AP)	//[LL]new  {OSAL_THREAD_ACPTask, EVENT_TYPE_BIG, sizeof(t_acp_cmd_event), get_acp_cmd_event_data},   /* ACP_CMD_EVENT */	//[LL]new#endif /*IPOD_AP*/	//[LL]new #endif /*HAVE_USB*/#if (0 != HAVE_SDC)  {OSAL_THREAD_SDCTask, EVENT_TYPE_BIG, sizeof(t_child_cmd_event), get_sdc_cmd_event_data},    /* SDC_CMD_EVENT */#endif /* HAVE_SDC */#if (HAVE_CD_MECHA == 1)  {OSAL_THREAD_LoaderTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* LOADER_SW_EVENT      */#endif  {OSAL_THREAD_PlayerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* LOADER_STATUS_EVENT  */#ifndef APM_PICKUP  {OSAL_THREAD_PlayerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* HW_EJECT_EVENT       */#endif#if (HAVE_CD_MECHA == 1)  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* DSP_AGC_EVENT        */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* DSP_FOCUS_EVENT      */#ifdef APM_PICKUP  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* DSP_TTM_FG_EVENT     */#endif#ifdef ECC_WORKAROUND  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* DSP_CLV_BUFFER_EVENT */#endif  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* DSP_RAMP_EVENT       */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* DSP_SHORT_JUMP_EVENT */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* TRACKING_EVENT       */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* HF_EVENT             */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* SLEDGE_SW_EVENT      */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* SLEDGE_STATUS_EVENT  */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* TTM_EVENT            */#ifdef ECC_WORKAROUND  {OSAL_THREAD_ServoTask,  EVENT_TYPE_SIMPLE, 0, NULL},   /* CLV_IRQ_EVENT        */#endif#endif // HAVE_CD_MECHA#ifdef APM_PICKUP  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BITMAP, 0, NULL},   /* I2C_EVENTBIT         */

⌨️ 快捷键说明

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