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

📄 events.c

📁 本程序为ST公司开发的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BITMAP, 0, NULL},   /* SVC_PENDING          */  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BITMAP, 0, NULL},   /* SVC_DBG_PENDING      */#else  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BIG,sizeof(t_player_status_event), get_player_status_event_data},   /* PLAYER_STATUS_EVENT */#endif //APM_PICKUP#if ((0!=IPOD_PASSTHROUGH) && (0 != IPOD_AP))  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BIG,sizeof(t_usb_downstream_status_event), get_player_downstream_status_event_data},   /* PLAYER_DOWNSTREAM_STATUS_EVENT */  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BIG,sizeof(t_usb_upstream_status_event), get_player_upstream_status_event_data},   /* PLAYER_UPSTREAM_STATUS_EVENT */#endif /* ((0!=IPOD_PASSTHROUGH) && (0 != IPOD_AP))*/  {OSAL_THREAD_PlayerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CONTROLLER_STATUS_EVENT */  {OSAL_THREAD_PlayerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CONTROLLER_PRE_EOS_STATUS_EVENT */  {OSAL_THREAD_PlayerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CONTROLLER_EOS_STATUS_EVENT */#if (0 != HAVE_USB)  {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG, sizeof(t_usb_status_event), get_controller_usb_status_event_data},   /* CONTROLLER_USB_STATUS_EVENT */#endif /*HAVE_USB*/  {OSAL_THREAD_PlayerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CONTROLLER_SDC_STATUS_EVENT */  {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG,sizeof(tQsubcode_event), get_player_subcode_event_data},   /* CONTROLLER_TIME_STATUS_EVENT */#if (0 != HAVE_USB)  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* USB_STOP_EVENT */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* USB_DATA_EVENT */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_BIG, sizeof(t_usb_status_event), get_usb_status_event_data},   /* EVENT_USB_STATUS */  {OSAL_THREAD_USBTask, EVENT_TYPE_SIMPLE, 0, NULL},          /* USB_IRQ_EVENT */#if ((0!=IPOD_PASSTHROUGH) && (0==IPOD_AP))  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BIG, sizeof(t_usb_downstream_status_event), get_usb_downstream_status_event_data},   /* USB_DOWNSTREAM_STATUS_EVENT */  {OSAL_THREAD_HostIfTask, EVENT_TYPE_BIG, sizeof(t_usb_upstream_status_event), get_usb_upstream_status_event_data},   /* USB_UPSTREAM_STATUS_EVENT */#elif (0!=IPOD_AP)    {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG, sizeof(t_usb_downstream_status_event), get_usb_downstream_status_event_data},   /* USB_DOWNSTREAM_STATUS_EVENT */  {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG, sizeof(t_usb_upstream_status_event), get_usb_upstream_status_event_data},   /* USB_UPSTREAM_STATUS_EVENT */  {OSAL_THREAD_PlayerTask, EVENT_TYPE_BIG, sizeof(t_acp_status_event), get_acp_status_event_data},   /* ACP_STATUS_EVENT */	//[LL]new#endif /* IPOD_AP || IPOD_PASSTHROUGH*/#endif /*HAVE_USB*/#if (0 != HAVE_SDC)  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* SDC_STOP_EVENT */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* SDC_DATA_EVENT */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* SDC_MOUNT_EVENT */#endif /* HAVE_SDC */#if (0 != HAVE_HOST_UPDATE)  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CONTROLLER_HOSTIF_STATUS_EVENT */#endif  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* DECODER_STOP_EVENT        */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* DECODER_START_EVENT        */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* DECODER_SLEEP_EVENT       */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* DECODER_REQ_EVENT         */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_BIG, sizeof(tDecoderTime_event), get_decoder_time_event_data},   /* DECODER_TIME_EVENT   */  {OSAL_THREAD_DecoderTask,    EVENT_TYPE_SIMPLE, 0, NULL},   /* DMA0_IRQ_XFER_EVENT       */  {OSAL_THREAD_DecoderTask,    EVENT_TYPE_SIMPLE, 0, NULL},   /* DMA0_IRQ_TIME_EVENT       */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* FILESYS_TAG_EVENT         */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* FILESYS_MOUNT_EVENT       */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* FILESYS_STOP_EVENT        */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* FILESYS_INIT_EVENT        */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* FILESYS_REQ_EVENT         */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CAPTURE_READ_EVENT        */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CAPTURE_CTR_WAKEUP_EVENT  */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_SIMPLE, 0, NULL},   /* CAPTURE_STATUS_EVENT      */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_BIG, sizeof(tCaptEndPlay_event), get_capture_pre_endplay_event_data}, /* CAPTURE_PRE_ENDPLAY_EVENT */  {OSAL_THREAD_ControllerTask, EVENT_TYPE_BIG, sizeof(tQsubcode_event), get_capture_subcode_event_data},   /* CAPTURE_SUBCODE_EVENT */  {OSAL_THREAD_CaptureTask,    EVENT_TYPE_SIMPLE, 0, NULL},   /* DMA_IRQ_WRITE_EVENT       */  {OSAL_THREAD_CaptureTask,    EVENT_TYPE_BIG, sizeof(t_cap_read_event), get_capture_read_event_data},   /* DMA_IRQ_READ_EVENT        */  {OSAL_THREAD_CaptureTask,    EVENT_TYPE_SIMPLE, 0, NULL},   /* DMA_IRQ_XFER_EVENT        */  {OSAL_THREAD_CaptureTask,    EVENT_TYPE_BIG, sizeof(t_bd_event), get_capture_bd_event_data},           /* BD_IRQ_EVENT          */#if (HAVE_CD_MECHA == 1)  {OSAL_THREAD_CaptureTask,    EVENT_TYPE_SIMPLE, 0, NULL},   /* SERVO_STATUS_EVENT */  {OSAL_THREAD_IdleTask,       EVENT_TYPE_SIMPLE, 0, NULL},   /* SERVO_ENDPLAY_EVENT */  {OSAL_THREAD_CaptureTask,    EVENT_TYPE_BIG,    sizeof(tQsubcode_event),        get_servo_subcode_event_data  },   /* SERVO_SUBCODE_EVENT         */  {OSAL_THREAD_ServoTask,  EVENT_TYPE_BIG, sizeof(t_acq_subcode_event), get_acq_subcode_event_data},   /* ACQ_IRQ_SUBCODE_EVENT */#endif};extern void _event_OSAL_wake_thread(OSAL_THREAD_ID_t thread);#define wake_event(id)    _event_OSAL_wake_thread(event_data[id].thread_to_shedule)void *pevent_get_out(OSAL_EVENT_ID_t id){  ASSERT(id < OSAL_MAX_EVENT, "pevent_get_out wrong event id");  ASSERT(NULL != event_data[id].get_event, "pevent_get_out get_event NULL");  return event_data[id].get_event(EVENT_OUT);}void event_set_out(OSAL_EVENT_ID_t id){  ASSERT(id < OSAL_MAX_EVENT, "event_set_out wrong event id");  ASSERT(NULL != event_data[id].get_event, "event_set_out get_event NULL");  event_out[id].pevent = event_data[id].get_event(EVENT_OUT);}/******************************************************************************//* Function:  event_out_shedule                                               *//*                                                                            *//*! \brief    Shedule event from sender to pending state *  \param    OSAL_EVENT_ID_t event ID *  \return   void *  \remark *//******************************************************************************/void event_out_shedule(OSAL_EVENT_ID_t id){  void    *local_pevent;    ASSERT(id < OSAL_MAX_EVENT, "event_out_shedule wrong event id");  DISABLE_INTERRUPTS();  if (NO_EVENT != event_out[id].event)  {    if (EVENT_TYPE_BITMAP == event_data[id].event_type)    {      event_pending[id].event |= event_out[id].event;    }    else if (EVENT_TYPE_SIMPLE == event_data[id].event_type)    {      event_pending[id] = event_out[id];    }    else    {                  event_pending[id].pevent = NO_EVENT; //[BB] Invalidate Pending Event      //memcpy(event_pending[id].pevent, event_out[id].pevent, event_data[id].size);      local_pevent = event_data[id].get_event(EVENT_PEND);      //memcpy(event_data[id].get_event(EVENT_PEND), event_out[id].pevent, event_data[id].size);      memcpy(local_pevent, event_out[id].pevent, event_data[id].size);      //event_pending[id].pevent = event_data[id].get_event(EVENT_PEND);      event_pending[id].pevent = local_pevent;    }    event_out[id].event = NO_EVENT;    wake_event(id);  }  ENABLE_INTERRUPTS();}/******************************************************************************//* Function:  event_in_shedule                                                *//*                                                                            *//*! \brief    Shedule pending event to receaver *  \param    OSAL_EVENT_ID_t event ID *  \return   void *  \remark *//******************************************************************************/void event_in_shedule(OSAL_EVENT_ID_t id){  void    *local_pevent;    ASSERT(id < OSAL_MAX_EVENT, "event_in_shedule wrong event id");  DISABLE_INTERRUPTS();    if (NO_EVENT != event_pending[id].event)  {    if (EVENT_TYPE_BITMAP == event_data[id].event_type)    {      event_in[id].event |= event_pending[id].event;    }    else if (EVENT_TYPE_SIMPLE == event_data[id].event_type)    {      event_in[id] = event_pending[id];    }    else    {      //event_in[id].pevent = event_data[id].get_event(EVENT_IN);      //memcpy(event_in[id].pevent, event_pending[id].pevent, event_data[id].size);                  event_in[id].pevent = NO_EVENT; //Added       local_pevent = event_data[id].get_event(EVENT_IN);      memcpy(local_pevent, event_pending[id].pevent, event_data[id].size);      event_in[id].pevent = local_pevent;    }    event_pending[id].event = NO_EVENT;  }  ENABLE_INTERRUPTS();}/******************************************************************************//* Function:  event_in_clear                                                  *//*                                                                            *//*! \brief    Clear receaved event *  \param    OSAL_EVENT_ID_t event ID, t_event bitmap events to be cleared *  \return   void *  \remark *//******************************************************************************/void event_in_clear(OSAL_EVENT_ID_t id){  ASSERT(id < OSAL_MAX_EVENT, "event_in_clear wrong event id");  event_in[id].event = NO_EVENT;}/******************************************************************************//* Function:  event_cmd_set                                                   *//*                                                                            *//*! \brief    Mark thread for command sheduling *  \param    OSAL_EVENT_ID_t event ID *  \return   void *  \remark *//******************************************************************************/void event_cmd_set(OSAL_EVENT_ID_t id){  OSAL_THREAD_DATA_t *ptask;  ASSERT(id < OSAL_MAX_CMD_EVENT, "event_cmd_set not command event id");  ptask = (OSAL_THREAD_DATA_t *) task_id();  ptask->eventcmd_to_shedule |= 1 << id;}/******************************************************************************//* Function:  event_in_clear                                                  *//*                                                                            *//*! \brief    Shedule all command events *  \param    OSAL_EVENT_ID_t event ID, t_event bitmap events to be cleared *  \return   void *  \remark *//******************************************************************************/void event_cmd_shedule(void){  OSAL_THREAD_DATA_t *ptask;  OSAL_EVENT_ID_t i;  ptask = (OSAL_THREAD_DATA_t *)task_id();  for (i = (OSAL_EVENT_ID_t)0; 0 != ptask->eventcmd_to_shedule;  ptask->eventcmd_to_shedule >>= 1, i++)  {    if (ptask->eventcmd_to_shedule & 1)    {      event_out_shedule(i);    }  }}void event_init(void){  OSAL_EVENT_ID_t id;  for (id = (OSAL_EVENT_ID_t) 0; id < OSAL_MAX_EVENT ; id++)  {    event_out[id].event = NO_EVENT;    event_in[id].event = NO_EVENT;    event_pending[id].event = NO_EVENT;  }}

⌨️ 快捷键说明

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