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

📄 ircmd.c

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 C
📖 第 1 页 / 共 2 页
字号:
    if( (!speed_chg_end) && (shock_state & SHOCK_ENABLE)  )
    {
      return;   
    }
    
    esp.show_time = 0;
    if(shock_state & (SHOCK_PAUSE))
    {
        shock_state &= (~(SHOCK_PAUSE));    //pause release //kevinlu 2002/9/24 11:18AM
        ircmd_play();
    }
#endif
#ifdef IR_SHUFFLE_ON
    if(IsKYRand())
        ircmd_cancel(RAND_CNL);         //ClrKYRand();
#endif
    if(IsKYProg())
    {
#if VFD_DRIVER==SPL10                       //zhg 2002/10/16
        if((cd_type_loaded != CDDA) && (cd_type_loaded != CDROM))
            prog_func_input(num);
#else
#ifdef DIGITAL_DIRECT_SELECT
        direct_p5_flag = 0;
        direct_p10_flag = 0;
#endif
        prog_func_input(num);
#endif
    }
    else if(IsKYGoto())
    {
        ir_select_number = num;
        goto_func_input();
    }
#ifndef DIGITAL_DIRECT_SELECT
#ifdef IR_5_PLUS
    else if(num == 10 || num == 11)
#else
    else if(num == 10)
#endif
    {
        irkey_timer = T5SECOND;
#ifdef IR_5_PLUS
        if(num == 10)
#endif
            ir_select_number += 10;
#ifdef IR_5_PLUS
        else
#ifdef P3_IN_P5
            ir_select_number += 3;
#else
            ir_select_number += 5;
#endif
#endif
        if(cd_type_loaded == CDROM)
            #ifdef MP3_SELECT_MORE//TECOBEST FZH 2003.03.06
            tmp_num = Gmem.gmp3.iso9660_file_cnt;//wangbin for direct select mp3 file.03-03-14
            #else
            tmp_num = file_in_dir;      //wyf 2-4-27 11:17
             #endif
        else
#ifdef SUPPORT_OLD_NES_DISC
        if((bDiscType & NES_DISC) && (cd_type_loaded == CDVCD20))
            tmp_num = 20;
        else
#endif
            tmp_num = cd_total_trk();

        if(ir_select_number > tmp_num)  //vcd 10+ large than selectable number
        {
            if(IsPBCOn()&&(ir_select_number<Gmem.s.nos)) 
            	{
                  psprintf(RegionValStr[REGION1], " %d+", ir_select_number);
                PrintOsdMsg(STR_OS_SELECT, REGION1, 0, 1, CH_N);    
            	}
            else {
            ir_select_number = 0;
            invalid_key();
            }   
            //return;
        }
        else
        {
            psprintf(RegionValStr[REGION1], " %d+", ir_select_number);
            PrintOsdMsg(STR_OS_SELECT, REGION1, 0, 1, CH_N);
        }
    }
#endif
    else
    {
#ifdef DIGITAL_DIRECT_SELECT
        if(IsPBCOn())
            upper_selection_limit = Gmem.s.nos;
        else if(IsNMPreview() || IsNM9frame())
            upper_selection_limit = 9;
        else if(cd_type_loaded == CDROM)
            upper_selection_limit = Gmem.gmp3.iso9660_file_cnt;
        else
            upper_selection_limit = cd_total_trk();

        if(ir_select_number) {
            if(direct_p5_time||(direct_p10_time && direct_p10_flag)) 
               ir_select_number = ir_select_number + num;
            else
               ir_select_number = ir_select_number*10 + num;
          }
        else  ir_select_number = num;
        if(!ir_select_number&&!num)
            ir_select_number = 10;

        if(direct_p10_flag && (upper_selection_limit <= ir_select_number*10))
            ir_select_number = ir_select_number*10;

        if(upper_selection_limit < ir_select_number) {
            ir_select_number = 0;
            invalid_key();
            return;
          }
        else if(upper_selection_limit >= ir_select_number * 10) {
            if(direct_p10_flag) {
               psprintf(RegionValStr[REGION1], " %d+", ir_select_number*10);
               PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);
               direct_p10_flag = 0;
               direct_p10_time = 0xff;
              }
            else if(direct_p5_flag) {
               psprintf(RegionValStr[REGION1], " %d+", ir_select_number);
               PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);
               direct_p5_flag = 0;
               direct_p5_time = 0xff;
              }
            else {
               psprintf(RegionValStr[REGION1], " %d", ir_select_number);
               PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);
              }
            direct_time = 0xff;
            return;
          }
        else {
            if(direct_p5_flag) {
               psprintf(RegionValStr[REGION1], " %d+", ir_select_number);
               PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);
               direct_p5_flag = 0;
               direct_p5_time = 0xff;
               return;
            }
            Res = ircmd_post_func(CMD_IR_SELECT | (ir_select_number));
            if(Res) {
               Chg2PlayMd();                           
               if(IsNMPreview() || IsNM9frame()) 
                   remkey_timer = T4SECOND;
               UISetState(VCD_STATE_NORMAL);
               psprintf(RegionValStr[REGION1], " %d", ir_select_number);
               PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);
#ifdef IR_INTRO_ON 
               intro_osd_flag=0;                     
#endif 
              }
           direct_time = 0;
           direct_p5_flag = 0;
           direct_p5_time = 0;
           direct_p10_flag = 0;
           direct_p10_time = 0;
           ir_select_number =0;   //Clear all value
          }
#else
        if(num == 0)
        {
            if(ir_select_number > 0)
                tmp_num = ir_select_number + num;
            else
                tmp_num = 10;
        }
        else
            tmp_num = ir_select_number + num;

        /* check IR select number range */
        if(cd_type_loaded == CDROM)
        {
            ir_select_number = tmp_num; ///???? still nedd to check valid or invalid
            #ifdef MP3_SELECT_MORE//TECOBEST FZH 2003.03.06
        if(ir_select_number > Gmem.gmp3.iso9660_file_cnt)//wangbin for direct select mp3 file.03-03-14
            #else
            if(ir_select_number > file_in_dir)  //Jack add 2-7-29 17:58.
            #endif
            {
                ir_select_number = 0;
                invalid_key();
                return;
            }
        }
        else
        {
            /*tmp_num finally assign to ir_select_number */
            ir_select_number = tmp_num;

            /*change tmp_num to real track to check valid or invalid */
            tmp_num += (cd_trk_lo_now - 1);

#ifdef MONE_IR_SELECT
            psprintf(linebuf, "-----issue inIR:%x tmpIR:%x\n", ir_select_number,
                             tmp_num);
            epp_write_wait(linebuf);
#endif

            if(!IsPBCOn())
            {
                /**Story Disc preview/9frames can select**/
                if(!IsNMPreview() && !IsNM9frame())
                {
                    if((tmp_num < cd_trk_lo_now) || (tmp_num > cd_trk_hi))
                    {
#ifdef MONE_IR_SELECT
                        epp_write("[1]Select Number over range\n");
#endif
                        //PrintOsdMsg(STR_OS_NO, REGION1, 1, 0, CH_N);
                        ir_select_number = 0;
                        invalid_key();
                        return;
                    }

                    GotoSkipFrm = 4;            //jhuang 2-6-16 move from below
                }
                else if(IsNMPreview())
                {
                    //if((tmp_num<cd_trk_lo_now)||(tmp_num>cd_trk_hi))
                    if((ir_select_number < 1) || (ir_select_number > 9) ||
                         (((ir_select_number - 1) + base_track) > cd_trk_hi))
                    {
#ifdef MONE_IR_SELECT
                        epp_write("[2]Select Number over range\n");
#endif

                        //PrintOsdMsg(STR_OS_NO, REGION1, 1, 0, CH_N);
                        ir_select_number = 0;
                        invalid_key();
                        return;
                    }
                }
                else if(IsNM9frame())
                {
                    if((ir_select_number < 1) || (ir_select_number > 9))    //jhaung 2002/3/15
                    {
#ifdef MONE_IR_SELECT
                        epp_write("[3]Select Number over range\n");
#endif

                        //PrintOsdMsg(STR_OS_NO, REGION1, 1, 0, CH_N);
                        ir_select_number = 0;
                        invalid_key();
                        return;
                    }
                }
                //GotoSkipFrm = 4;//jhuang 2-6-16 move to above
            }//end if(!IsPBCOn())
        }

        #ifdef  SUPPORT_ESP//BBK_TEST
        if((CheckUIState(VCD_STATE_PAUSE)) && (cd_type_loaded == CDDA))
        {
          regs0->cddsp_status = 0;
          SET_CDDSP_VX(0);
          SET_CDDSP_VY(0);
          cbv_x = 0;
          cbv_y = 0;    
        }
        #endif
        
        Res = ircmd_post_func(CMD_IR_SELECT | (ir_select_number));

        if(Res)                                         //if invalid in ircmd_post_func(),ir_select_num=0
        {
            Chg2PlayMd();                           //jhuang 2002/3/15 09:20PM
            if(IsNMPreview() || IsNM9frame()) 
                remkey_timer = T4SECOND; //ZHX 062403 clear OSD
            UISetState(VCD_STATE_NORMAL);
            psprintf(RegionValStr[REGION1], " %d", ir_select_number);
            PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);

#ifdef IR_INTRO_ON 
            intro_osd_flag=0;                           //ZHX 032903
#endif 
        }
#ifdef USE_PP5_KEY
        if (pp5_flag > 1)
      	    pp5_flag = 0;
#endif
        ir_select_number = 0;
#endif
    }
}


void ircmd_n(BYTE num)
{
#ifdef MONE_IRCMD
    psprintf(linebuf, "SELECT %d\n", num);
    epp_write_wait(linebuf);
#endif

    ircmd_select_number(num);
}


/*
** FUNCTION
**
** DESCRIPTION
**
*/
void ircmd_p10(void)
{
#ifdef MONE_IRCMD
    epp_write_wait("SELECT 10+\n");
#endif
    ircmd_select_number(10);
}

/*
**ZHX 070303 Add ircmd_pp5()
*/
#ifdef USE_PP5_KEY
void ircmd_pp5(void)
{
     pp5_flag ++;
     if (pp5_flag == 1)
#ifdef P3_IN_P5    //ZHX 122503
     	ircmd_select_number(3); 
#else
     	ircmd_select_number(5);
#endif     
     else
     	ircmd_select_number(11);
}
#endif

/*
** FUNCTION
**
** DESCRIPTION
**
*/
void pbcon_init()
{
    ClearPSDList();                             //psd_st.psd_list_id = 0x0;
    CLR_PSD_STATE();                            //ready to exit psd browser and enter again
    bPbcOff = C_FALSE;                      //jhuang 2002/3/5
    PbcBlackEnable = C_FIRST_TIME;  //jhuang 2002/4/21 for pbc off play->pbc on config
/*
  *** clear play mode
*/
    config_play_mode(CLEAR_ALL);

    ircmd_post_func(CMD_FUNC | CMD_FUNC_PBC);

    switch_to_menu = 1;
#ifdef MONE_IRCMD
    epp_write_wait("PBC OFF init\n");
#endif
}

/*
** FUNCTION
**
** DESCRIPTION
**
*/
void pbcoff_init()
{
    PbcBlackEnable = 0;
    PlaySeg = play_hires = 0; //Joseph 20021226 modify for reset play_hires
    InvalidPSDList();

//#ifdef START_UP_PBC_ON
    //We found TRACK  can be usded as SELECTION LIST   
    if(!CheckUIState(VCD_STATE_STOP) && IsPLAY_TRK())   // Joseph 20021114 roll back to previous setting
        //if(!CheckUIState (VCD_STATE_STOP) && ((!IsPLAY_LIST())&&(!IsPLAY_TRK())) )
        // Joseph 20021111 merge JJding's Code
        //if(!CheckUIState (VCD_STATE_STOP) && ((!IsPLAY_LIST())&&(!IsPLAY_TRK()))&&(cd_type_loaded!=CDDA))
    {
        ircmd_callback_check = NULL;
        bPbcOff = C_TRUE;

#ifdef MONE_IRCMD
        epp_write_wait("[1]PBC OFF init(NOT Post Cmd)\n");
#endif
    }
    else
//#endif  /*  */
    {
        //SetIntrFlag (GetIntrFlag () | INTR_IRKEY);//JJDing remarked.

        //AVD_SetMediaInterrupt (); //JJDing remarked.

#ifdef MONE_IRCMD
        epp_write_wait("[2]PBC OFF init(Post Cmd)\n");
#endif

        ircmd_post_func(CMD_FUNC | CMD_FUNC_PBC);
    }


    CLR_PSD_STATE();                            //psd_state = 0;
}

/*
** FUNCTION
**
** DESCRIPTION
**
*/
void ircmd_playmode_toggle(void)    //jhuang reduce 2002/4/12
{
#if CONFIG==CONFIG_COMBO_VCD 
    if(vpp_disable_video)   //For EDO MENU Green Issue By Gary 92.07.31
    {
      invalid_key();
      return;   
    }   
#endif
#ifdef MONE_IRCMD
    epp_write_wait("CMD PBC\n");
#endif

    //if(bDiscType & NES_DISC)//jhuang 2002/9/12 move to irdef.h
    //return;
#ifdef IR_INTRO_ON      //ZHX 062903
    intro_osd_flag = 0; 
#endif
    //Tony added 020510
#ifdef IR_FDFC_ON                               //jhuang 2002/5/17
    if(!IsFDFC_STOP())
    {
        //UISetFDFC_STOP();
        FDFC_OFF(C_OFF);                        //jhuang 2002/9/11
        //rep_ab_mode = REPEAT_AB_IDLE;//jhuang reduce FDFC//2002/9/5
        //AVAPI_control(C_WRITE,AVAPI_FDFC_STOP,0);//jhuang reduce FDFC//2002/9/5
    }
#endif

#ifdef IR_SCORE_ON

    if(score_status != SCORE_STOP)  //zhyf (use wyf) 2-8-14 16:37 PBCON play -->(score-->return OFF SCORE).
    {
        score_status = SCORE_R;
        PrintOsdMsg(STR_OS_NULL, REGION0, 1, 0, CH_N);  //zhyf score 消失慢 2-8-14 16:20
        PrintOsdMsg(STR_OS_NULL, REGION1, 1, 0, CH_N);
        ircmd_score();
    }


#endif

    if((cd_type_loaded == CDVCD20) || (cd_type_loaded == CDCVD) ||
         (cd_type_loaded == CDSVCD))
    {

        Chg2PlayMd();                               //jhuang reduce 2002/4/12

        if(CheckUIState(VCD_STATE_STOP))    //copy form 702 stop navigation//don't move position
            UISetState(VCD_STATE_NORMAL);

        if(IsPBCOn())
        {

            if(psd_state == 0)              //磷

⌨️ 快捷键说明

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