📄 panelvfd.c
字号:
/* Copyright 1996, ESS Technology, Inc. *//* SCCSID @(#)panelvfd.c 4.11 07/27/04 *//* * $Log$ */#include <stdio.h>#include "vcxi.h"#include "const.h"#include "vfdshare.h"#include "dsa.h"#include "util.h"#include "panel.h"#include "micro.h"#include "play.h"#include "tdm.h"#include "cd.h"#ifdef TWO_FIELDS_OSD#include "cg.h"#else#include "fsosd.h"#endif#if(defined(MP3)||defined(WMA_DEC))#include "filesys.h"#include "nav_menu.h"#ifdef MP3#include "mp3.h"#endif#ifdef WMA_DECextern int wma_freq,wma_smpl_num;#endif#endif#ifdef MIC_RECORD#include "echo.h"#include "recorder.h"#endif#ifdef HOST_SLAVEextern int codeOperand;#endif /*===========================================================================*//*===========================================================================*/#ifdef HOST_SLAVE int wtime=0, welapsed, countdbg=0;extern unsigned char force_Playing_State_flag;extern unsigned char Disc_Status_Monitor;extern unsigned char Play_Mode_Monitor;extern unsigned char Play_Order_Monitor;#endifint SystemStatus ;int DiscMode ;#ifdef HOST_SLAVE int TimeMode ;#elsestatic int TimeMode;#endifstatic int ElapsedTime; /* In mm:ss:ff (CD format, i.e. BCD) */static void show_FF_FR_osd(int cur_state, int index);void show_program_osd_number(int index, int track, int done);static void enable_program_cdda();static void show_panel_time(int time);/*===========================================================================*//* The following informations are from play.c */#define TOTAL_PROGRAM_TRACKS \ track_list_max#define TRACK_LIST_INDEX \ cur_track_index/*===========================================================================*//* function protype *//*===========================================================================*/void panel_system_status(int status){#ifdef HOST_SLAVE force_Playing_State_flag = 1; Disc_Status_Monitor=status; #else switch (status) { case SYSTEM_STOP: VFD_icon(VFDICON_stop);#if( defined(MP3) || defined(WMA_DEC) ) if (STREAM_type) { TimeMode = TIME_SINGLE_ELAPSED; ElapsedTime = 0;#ifdef MP3 if ((STREAM_type == MP3_ID) && (MPG_layer == 3)) { MPG_frames = 0; mp3_time_elapsed = 0; }#endif#ifdef WMA_DEC if (STREAM_type == WMA_ID) wma_smpl_num = 0;#endif panel_running_time(0); VFD_icon(VFDICON_colon_on); break; }#endif VFD_segment(VFD_TRACK, (DiscMode & DISC_PROGRAM) ? TOTAL_PROGRAM_TRACKS : num_of_track, 1); VFD_calendar(0); TimeMode = TIME_TOTAL_REMAIN; ElapsedTime = 0; SystemStatus = status; if (SystemStatus != SYSTEM_OPEN) panel_running_time(0); if (DiscMode & DISC_OSD_ON) { OSD_clear_region(OSD_TRACK_REGION); } break; case SYSTEM_OPEN: DiscMode = 0; TimeMode = TIME_SINGLE_ELAPSED; ElapsedTime = 0; repeat_mode = REPEAT_OFF; VFD_calendar(99); VFD_blank_all(); VFD_msg(VFDMSG_open); break; case SYSTEM_PLAYING: if ((SystemStatus == SYSTEM_STOP) || (DiscMode & DISC_PBC_ON)) { showProgramTime(TIME_SINGLE_ELAPSED); } case SYSTEM_CONTINUE: status = SYSTEM_PLAYING; VFD_icon(VFDICON_play); break; } SystemStatus = status;#endif}/*===========================================================================*//* * Show the TV type on the panel VFD. * * Input: * mode: TV_PAL: PAL TV * TV_NTSC: NTSC TV * TV_AUTO: NTSC or PAL determined by vcx_scn_height */void panel_TV_mode(int mode){ unsigned char *vfd_icon; if (mode == TV_PAL) { vfd_icon = VFDICON_pal; } else if (mode == TV_NTSC) { vfd_icon = VFDICON_ntsc; } else { /* mode == TV_AUTO */ vfd_icon = (vcx_scn_height == 240) ? VFDICON_ntsc : VFDICON_pal; } /* Output TV-output type to VFD */ VFD_icon(vfd_icon);}/*===========================================================================*/void panel_key_shift(int level){ if (level > 0) VFD_icon(VFDICON_key_up); else if (level < 0) VFD_icon(VFDICON_key_down); else VFD_icon(VFDICON_key_resume); OSD_pitch_bar(level);}/*===========================================================================*/void panel_osd_mode_change(void){ unsigned char *msg, *c_msg; DiscMode ^= DISC_OSD_ON; if (DiscMode & DISC_OSD_ON) { /* Turn on time & track */ if (cur_track_number) {#ifdef JPEG_DEC if (STREAM_type == JPEG_ID) { /* for JPEG, don't show time */ OSD_time_track(OSD_TRACK_REGION_MASK, 0); } else#endif { OSD_time_track(OSD_TRACK_REGION_MASK|OSD_TIME_REGION_MASK, 0); } if( cd_stop ) {#if(defined(MP3) || defined(WMA_DEC)) if (STREAM_type) OSD_time_minute = OSD_time_second = 0;#endif OSD_update_info(); } if (TimeMode == TIME_SINGLE_ELAPSED) { assign_osd_msg(msg, MSG_single_elapsed, c_msg, MSG_c_single_elapsed); } else if (TimeMode == TIME_SINGLE_REMAIN) { assign_osd_msg(msg, MSG_single_remain, c_msg, MSG_c_single_remain);#ifdef HOST_SLAVE }else if (TimeMode == TIME_TOTAL_ELAPSED) { assign_osd_msg(msg, MSG_total_elapsed, c_msg, MSG_c_total_elapsed);#endif } else if (TimeMode == TIME_TOTAL_REMAIN) { assign_osd_msg(msg, MSG_total_remain, c_msg, MSG_c_total_remain); } /* Output time-type message... */#ifdef DATA_CD if (STREAM_type != JPEG_ID)#endif OUTOSD(OSD_FUNCTION_STATUS_REGION, msg, c_msg, QUICK_TIME_OUT); } #ifdef TWO_FIELDS_OSD if (CG_menu_on) return;#endif /* Checking play-order */ msg = c_msg = NULL; /* initialize */ if (DiscMode & DISC_PBC_ON) { assign_osd_msg(msg, MSG_pbc, c_msg, MSG_pbc); } else if (DiscMode & DISC_SHUFFLE) { assign_osd_msg(msg, MSG_shuffle, c_msg, MSG_c_shuffle); } else if (DiscMode & DISC_PROGRAM) { assign_osd_msg(msg, MSG_program, c_msg, MSG_c_program); } if (msg) /* Output play-order message... */ OUTOSD(OSD_PLAY_ORDER_REGION, msg, c_msg, EXTENDED_TIME_OUT); /* Checking track-repeat type */ if (repeat_mode == REPEAT_ONE) { assign_osd_msg(msg, MSG_repeat_one, c_msg, MSG_c_repeat_one); } else if (repeat_mode == REPEAT_ALL) { assign_osd_msg(msg, MSG_repeat_all, c_msg, MSG_c_repeat_all); } else {/* repeat_mode == REPEAT_OFF */ assign_osd_msg(msg, MSG_repeat_off, c_msg, MSG_c_repeat_off); } /* Output track-repeat type message... */ OUTOSD(OSD_REPEAT_REGION, msg, c_msg, EXTENDED_TIME_OUT); /* Checking TV-output type */ if (currentTVmode == TV_PAL) { assign_osd_msg(msg, MSG_pal, c_msg, MSG_pal); } else { /* currentTVmode == TV_NTSC */ assign_osd_msg(msg, MSG_ntsc, c_msg, MSG_ntsc); } /* Output TV-output type message... */ OUTOSD(OSD_TV_STANDARD_REGION, msg, c_msg, EXTENDED_TIME_OUT);#ifdef SPATIAL /* Output audio-effects mode... */ OUTOSD(OSD_AUDFX_REGION, SPA_msg, SPA_msg, DISPLAY_TIME_OUT);#endif /* Output vocal and audio modes */ show_audio_panel(1); } else {#if (defined(MP3) || defined(WMA_DEC)) if (STREAM_type) {#ifdef TWO_FIELDS_OSD CG_clear_message(0,0,CG_LINE_WIDTH);#else mp3_menu_changed = 1; MP3_select();#endif /* TWO_FIELDS_OSD */ } #endif /* MP3 */ /* Need to call OSD_clear_all().. * to update "gi_msg" related variables. */ OSD_clear_all(!STREAM_type); }}/*===========================================================================*/void panel_sequence_mode(int mode){ static int previous_mode; unsigned char clear_msg[] = {FONT_BLANK,0}; unsigned char *msg_ptr=0;#ifdef BILINGUAL_OSD unsigned char *c_msg_ptr;#endif if (mode == SEQ_PBC_ON) { DiscMode &= ~(DISC_PROGRAM | DISC_SHUFFLE | DISC_CONTINUE); DiscMode |= DISC_PBC_ON; VFD_icon(VFDICON_pbc_on); assign_osd_msg(msg_ptr, MSG_pbc_on, c_msg_ptr, MSG_c_pbc_on); } else if (mode == SEQ_CONTINUE) { DiscMode |= DISC_CONTINUE; DiscMode &= ~(DISC_PBC_ON | DISC_PROGRAM | DISC_SHUFFLE); VFD_icon(VFDICON_pbc_off); panel_running_time(0); } else if (mode == SEQ_PROGRAM) { DiscMode |= DISC_PROGRAM; DiscMode &= ~(DISC_PBC_ON | DISC_CONTINUE | DISC_SHUFFLE); VFD_calendar(99); VFD_segment(VFD_TRACK, 0, 1); VFD_icon(VFDICON_program); show_panel_time(0); show_program_osd_number(0, 0, 1); } else if (mode == SEQ_SHUFFLE) { DiscMode |= DISC_SHUFFLE; DiscMode &= ~(DISC_PBC_ON | DISC_CONTINUE | DISC_PROGRAM); VFD_icon(VFDICON_shuffle); assign_osd_msg(msg_ptr, MSG_shuffle_on, c_msg_ptr, MSG_c_shuffle_on); } if (mode == SEQ_PROGRAM || mode == SEQ_CONTINUE) { if (previous_mode == SEQ_PBC_ON) { assign_osd_msg(msg_ptr, MSG_pbc_off, c_msg_ptr, MSG_c_pbc_off); } else if (previous_mode == SEQ_SHUFFLE) { assign_osd_msg(msg_ptr, MSG_shuffle_off, c_msg_ptr, MSG_c_shuffle_off); } } if (msg_ptr) OUTOSD(OSD_INPUT_MODE_REGION, msg_ptr, c_msg_ptr, QUICK_TIME_OUT); previous_mode = mode;}#if (THREE_CDS || SONY3D)void panel_disc_slot(int number){ /* use vfdspec stuff..i.e, VFD_icon(..)*/;}#endif/*===========================================================================*/void panel_scan_mode(int mode){ CLEARALLOSD(); if (mode == SCAN_INTRO) VFD_icon(VFDICON_intro_on); else /* SCAN_NORMAL, SCAN_CD_DIGEST, SCAN_TRACK_DIGEST */ VFD_icon(VFDICON_intro_off);}/*===========================================================================*/int panel_repeat_mode_change(void){ unsigned char *msg, *c_msg; int mode=repeat_mode; if (DiscMode & DISC_PBC_ON) mode = REPEAT_OFF; else {#ifdef HOST_SLAVE if (codeOperand !=0) { if (codeOperand == 0x01) mode = REPEAT_ONE; if (codeOperand == 0x02) mode = REPEAT_ALL; if (codeOperand == 0x04) mode = REPEAT_OFF; } else#endif mode++; if (mode > REPEAT_ALL) mode = REPEAT_OFF; } if (mode == REPEAT_OFF) { assign_osd_msg(msg, MSG_repeat_off, c_msg, MSG_c_repeat_off); VFD_icon(VFDICON_repeat_off); } else if (mode == REPEAT_ONE) { assign_osd_msg(msg, MSG_repeat_one, c_msg, MSG_c_repeat_one); VFD_icon(VFDICON_repeat_one); } else { /* (mode == REPEAT_ALL) */ VFD_icon(VFDICON_repeat_all); assign_osd_msg(msg, MSG_repeat_all, c_msg, MSG_c_repeat_all); } OUTOSD(OSD_REPEAT_REGION, msg, c_msg, QUICK_TIME_OUT); return (mode);}/*===========================================================================*/void panel_play_track(int track_num){ VFD_icon(VFDICON_track); VFD_calendar((DiscMode & DISC_PBC_ON) ? 0 : cur_track_index); if (track_num) { VFD_segment(VFD_TRACK, track_num, 1); if (track_num <= MAX_CALENDAR) { EnableFlashing = 1; FlashingCalendar = track_num; } VFD_icon(VFDICON_hyphen_on); } /* if track number is 0, we are in play segment. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -