hostif_high.c
来自「本程序为ST公司开发的源代码」· C语言 代码 · 共 2,071 行 · 第 1/5 页
C
2,071 行
case CMD_BIN_TRANSFER_READ: /* check preconditions for all modes*/ if (binary_trasfer_mode == NO_TRANSFER) { report_msg_error_mode(ERM_NA_STATE_ERROR); return; } switch (binary_trasfer_mode) { case HOST_UPDATE_MODE:#if (0!=HAVE_HOST_UPDATE_NEW) if (player_mode == PLM_UPDATE) {#if (0 != IPOD_PASSTHROUGH) saved_BinaryUpstreamParameters.send_msg_now = b_TRUE;#endif /*IPOD_PASSTHROUGH*/ } else /*no data available, or no next data were available, player went to mode stop */ hostifAppSendMsgOneParameter(response_msg, HOSTIF_GROUP_MSG_BINARY_TRANSFER, MSG_ACK_BINARY_PACKET, ACK_NO_DATA);#endif break; case RESUME_MODE:#if (0!=IPOD_PASSTHROUGH) if (saved_BinaryUpstreamParameters.data_cnt || saved_BinaryUpstreamParameters.saved_data_count) saved_BinaryUpstreamParameters.send_msg_now = b_TRUE; else /*no data available, or no next data were available, player went to mode stop */#endif /*IPOD_PASSTHROUGH*/ hostifAppSendMsgOneParameter(response_msg, HOSTIF_GROUP_MSG_BINARY_TRANSFER, MSG_ACK_BINARY_PACKET, ACK_NO_DATA); break;#if (0 != HAVE_USB)#if (0 != IPOD_PASSTHROUGH) case IPOD_MODE: /* messages are in this mode sent automatically, see new spec. */ break;#endif /* IPOD_PASSTHROUGH */#endif /*HAVE_USB*/ default: report_msg_error_mode(ERM_NA_STATE_ERROR); break; } break; /* Host writes data packet */ case CMD_BIN_TRANSFER_WRITE: switch (binary_trasfer_mode) { case IPOD_MODE:#if (0 != IPOD_PASSTHROUGH)#if (0 != HAVE_USB) if (hostif_process_binary_downstream(cmd, cmd_len, &saved_BinaryDownstreamParameters, &downstream_cmd_struct)) {#if (0 != IPOD_AP) player_downstream_command(&downstream_cmd_struct);#else /* IPOD_AP */ usb_downstream_command(&downstream_cmd_struct);#endif /* IPOD_AP */ } else#endif /*HAVE_USB*/#endif /* IPOD_PASSTHROUGH */ { report_msg_error_mode(ERM_NA_STATE_ERROR); } break; case RESUME_MODE:#if (0 != IPOD_PASSTHROUGH) /* resume data are processed locally, no need to send any command to another task */ if (hostif_process_binary_downstream(cmd, cmd_len, &saved_BinaryDownstreamParameters, &downstream_cmd_struct)) hostif_process_resume_data(&saved_BinaryDownstreamParameters, &downstream_cmd_struct);#endif /*IPOD_PASSTHROUGH*/ break; case HOST_UPDATE_MODE: default: report_msg_error_mode(ERM_NA_STATE_ERROR); break; } break; default: hostifAppSendMsgCmdEval(CMDE_ILLEGAL_COMMAND, HOSTIF_GROUP_CMD_BINARY_TRANSFER, cmd_id); break; } }#endif/************************************************** * * process_cmd_power_mode() * * Parameters: * TBD, * * Description: * **************************************************/extern t_player_time_info player_q_subcode;extern t_player_resume_info player_resume_info[];uint8 process_cmd_power_mode(void){ uint8 i; if (power_mode == PWM_POWER_ON) { report_msg_power_mode(PWM_GOING_TO_POWER_OFF);#if (0 != HAVE_POSITION) if (module_config.data.size_of_flash != 0) { //this part would be used inside player //store current playback position player_store_resume_info(player_song, recalc_time_to_position(player_q_subcode.min, player_q_subcode.sec, player_q_subcode.frame), &player_params); //copy to hostif storage structure for (i=0;i<DEV_SLOTS;i++) { hostifStoredData.f.v.resume_info[i] = player_resume_info[i]; } //player_resume_stored_in_flash = b_FALSE; //singnal to hostif, store current resume info to NVRAM send_hostif_inevent(HOSTIF_STORE_DATA); }#endif if (loader_mode != LDM_STOP) { report_msg_loader_mode(LDM_INSERTING,LDMA_NONE); } if (player_mode != PLM_STOP) { report_msg_player_mode(PLM_STOP, PLTS_RUNNING, player_current_resume_info_available,0); } } else { report_msg_power_mode(power_mode); } return PCMD_POWER_MODE;}/************************************************** * * process_cmd_stop() * * Parameters: * TBD, * * Description: * **************************************************/uint8 process_cmd_stop(void){ //common for all devices if (b_FALSE == check_preconditions()) return PCMD_NONE; else if (player_mode == PLM_STOP) { report_msg_player_mode(PLM_STOP, player_transition_state, player_current_resume_info_available,0); return PCMD_NONE; } else if ((player_mode == PLM_STARTUP) ||(player_mode == PLM_MOUNT)) { report_msg_error_mode(ERM_NA_STATE_ERROR); report_msg_player_mode(player_mode, player_transition_state, player_current_resume_info_available,player_seek.speed); return PCMD_NONE; } report_msg_player_mode(PLM_STOP, PLTS_RUNNING, player_current_resume_info_available,0); //play_mode switching will be done in player return PCMD_STOP;}/************************************************** * * process_cmd_load() * * Parameters: * TBD, * * Description: * **************************************************/uint8 process_cmd_load(void){ if (power_mode != PWM_POWER_ON) { report_msg_error_mode(ERM_NA_STATE_ERROR); report_msg_power_mode(power_mode); } else if ((loader_mode == LDM_NO_DISC) && (START_INSERT_ACTION_IN_NO_CD_POSITION == 0) && (CONSERVATIVE_BEHAVIOR_SHINWA_CDC02 == 0)) { set_and_report_disc_type(DT_NO_DISC); } else if (loader_mode == LDM_STOP) { report_msg_loader_mode(loader_mode, LDMA_NONE); } else { report_msg_loader_mode(LDM_INSERTING, LDMA_INSERTING_BY_COMMAND); return PCMD_LOAD; } return PCMD_NONE;}/************************************************** * * process_cmd_eject() * * Parameters: * TBD, * * Description: * **************************************************/uint8 process_cmd_eject(void){ if (power_mode != PWM_POWER_ON) { report_msg_error_mode(ERM_NA_STATE_ERROR); report_msg_power_mode(power_mode); } else if ((loader_mode == LDM_NO_DISC) && (START_EJECT_ACTION_IN_NO_CD_POSITION == 0) && (CONSERVATIVE_BEHAVIOR_SHINWA_CDC02 == 0)) { set_and_report_disc_type(DT_NO_DISC); } else if ((loader_mode == LDM_EJECT) && (HAVE_EJECT_REPOSITIONING == 0)) { report_msg_loader_mode(LDM_EJECT, LDMA_NONE); } else { report_msg_loader_mode(LDM_EJECTING, LDMA_NONE); return PCMD_EJECT; } return PCMD_NONE;}/************************************************** * * process_cmd_em_eject() * * Parameters: * TBD, * * Description:b * **************************************************/uint8 process_cmd_em_eject(void){ if (power_mode != PWM_POWER_ON) { report_msg_error_mode(ERM_NA_STATE_ERROR); report_msg_power_mode(power_mode); } else { report_msg_loader_mode(LDM_EM_EJECTING, LDMA_NONE); return PCMD_EM_EJECT; } return PCMD_NONE;}/************************************************** * * process_cmd_play(uint8 play_current, uint16 trackNr) * * Parameters: * TBD, * * Description: * **************************************************/uint8 process_cmd_play(uint8 current, uint8 data_tracks, uint16 trackNr, uint8 Second){ //int16 tempvol = 0; // [RB] unused //t_volume_selection_struct volume_selection_struct; // [RB] unused if (b_FALSE == check_preconditions()) return PCMD_NONE; else if ((player_mode == PLM_STOP) || (player_mode == PLM_PLAY) //allow to play cmd during playback || (player_mode == PLM_PAUSE) || (player_mode == PLM_FAST_FW) || (player_mode == PLM_FAST_BW)) { if ((current == CMD_PARAM_TIME_POSITION) || (current == CMD_PARAM_LBA_POSITION)) { if (0 == data_tracks) //audio { if ((player_playlist.enabled) || (player_params.device != DEV_CD_ID)) //requesting audio file when playlist enabled not allowed { report_msg_error_mode(ERM_INVALID_PARAMETER_ERROR); return PCMD_NONE; } if ((trackNr > CountFilesForVolume(1 /*DEV_CD_ID*/,SEARCH_PLAYABLE)) || (trackNr == 0)) { report_msg_error_mode(ERM_INVALID_PARAMETER_ERROR); return PCMD_NONE; } if (TRACK_TYPE_DATA == TOC_TRACK_TYPE(trackNr)) //temporary solution - Visteon requests this functionality { report_msg_error_mode(ERM_INVALID_PARAMETER_ERROR); return PCMD_NONE; } } else //data { //check playlist content if ((player_playlist.enabled) && (player_playlist.parsed) && (trackNr > player_playlist.array_items )) { report_msg_error_mode(ERM_INVALID_PARAMETER_ERROR); return PCMD_NONE; } if ((trackNr > CountFilesForDevice(player_params.device,b_FALSE,SEARCH_PLAYABLE)) || (trackNr == 0)) { report_msg_error_mode(ERM_INVALID_PARAMETER_ERROR); return PCMD_NONE; } } if (Second > 59) { report_msg_error_mode(ERM_INVALID_PARAMETER_ERROR); return PCMD_NONE; } report_msg_player_mode(PLM_PLAY, PLTS_RUNNING, player_current_resume_info_available,0); return PCMD_PLAY; } else if (current == CMD_PARAM_CURRENT_POSITION) { //check num of files on device if ((0 == player_song) && (0 == CountFilesForDevice(player_params.device,b_TRUE,SEARCH_PLAYABLE))) //check playable items on media { report_msg_error_mode(ERM_NA_STATE_ERROR); report_msg_player_mode(player_mode, player_transition_state, player_current_resume_info_available, player_seek.speed); return PCMD_NONE; } //check if playback already in progress if (player_mode == PLM_PLAY) { report_msg_player_mode(PLM_PLAY, PLTS_IDLE, player_current_resume_info_available,0); return PCMD_PLAY; //JS send commmand anyway (task priorities vs. global vars) } else { report_msg_player_mode(PLM_PLAY, PLTS_RUNNING, player_current_resume_info_available,0); return PCMD_PLAY; } } } else { report_msg_error_mode(ERM_NA_STATE_ERROR); report_msg_player_mode(player_mode, player_transition_state, player_current_resume_info_available, player_seek.speed); } return PCMD_NONE;}/************************************************** * * process_cmd_play_continue() * * Parameters: * TBD, * * Description: * **************************************************/uint8 process_cmd_play_continue(uint8 cancel_previous,uint8 data_tracks, uint16 trackNr){ char response_msg[3]; if ((cancel_previous !=0) && (cancel_previous !=1)) //param prechecking { report_msg_error_mode(ERM_INVALID_PARAMETER_ERROR); return PCMD_NONE; } if (b_FALSE == check_preconditions()) return PCMD_NONE; else if ((player_mode == PLM_PLAY) || (player_mode == PLM_FAST_FW) || (player_mode == PLM_FAST_BW)) { if (cancel_previous != 0) { if (0 == data_tracks) //audio { if ((player_playlist.enabled) || (player_params.device != DEV_CD_ID)) //requesting audio file when playlist enabled not allowed {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?