📄 events.c
字号:
{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 + -