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

📄 vfd_drv_gt1128.c

📁 Sunplus 8202S source code.
💻 C
字号:
//GT1128 DRIVER 
void polling_vfdr(void) 
{ 
#ifdef SUPPORT_VFD
    UINT8   i;
    UINT32  temp;
    UINT32  key_data;
    static UINT8 count = 0;
    static UINT32 key_previ = 0;    
    static BYTE bWriteState=0;
        
    UINT32 *VfdReadData;
    
    if(regs0->iop_data[0] & FUN_MASK)       return;
       

    if(vfd_state == VFD_READ)
    {
        #ifndef USE_C_IOP//2004-2-12 12:08 lijd     
        VfdReadData =
            
            ((UINT32 *) (SDRAM_BASE_UNCACHED + regs0->iopya * 1024 + 0x5d8));       //fengjl edit 2004-07-02 18:05
        
        //current is read 3 byte on io
        key_data = *VfdReadData & 0x00ffffff;

        *VfdReadData = 0; // Robert 030313
        #else//USE_C_IOP
                key_data =(regs0->iop_data[3]);
        #endif//USE_C_IOP
        if(key_data == 0xffffff)
            return;
        if(key_data != key_previ)
        {
            key_previ = key_data;

            if(key_data != 0)
            {                               
                for(i = 0; i < 24; i++)
                {
                    temp = 0x01 << i;
                    if(key_data & temp)
                    {
                        if (key_data > temp) // Robert 030224 for preventing illegal key_data
                        {
                            key_data = 0;
                            return;
                        }
                        else
                        {
                            key_data = i + 1;
                            break;
                        }
                    }
                }
                
                save_srn_start_t = get_rtc_val();
                
#ifdef VFD_KEY_TEST
                psprintf(RegionValStr[REGION1], "KEY %02d F:%d", key_data,
                    vfd_keycode[key_data - 1]);
                PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
#else
                if((Is_JPEG_SlideMode()) && (vfd_keycode[key_data - 1] == IRC_PAUSE))
                {
                    //Jeff 20020523
                    bJpgVFDPause = 1;
                }
                else if((Is_JPEG_SlideMode()) &&
                    ((vfd_keycode[key_data - 1] == IRC_PLAY) ||
                    (vfd_keycode[key_data - 1] == IRC_PLAY_SELECT) ||
                    (vfd_keycode[key_data - 1] == IRC_PLAY_RESUME)))
                {
                    //bJpgVFDPause=0;
                    bJpgVFDPause = 2;           //Jeff 20020525
                    PrintOsdMsg(STR_OS_PLAY,REGION1,1,0);//nono 20030804
                    ircmd_play();//nono 20031210
                }
                else if((Is_JPEG_SlideMode()) &&    //Jeff 20020527
                    (vfd_keycode[key_data - 1] == IRC_PAUSEPLAY))
                {
                    if(bJpgVFDPause == 0)
                    {
                        //bJpgVFDPause = 1;
                        if(play_state == VCD_STATE_PAUSE)   //nono 2-6-28 14:00
                            //bJpgVFDPause = 2;
                            
                            {
                            bJpgVFDPause = 2;
                            PrintOsdMsg(STR_OS_PLAY,REGION1,1,0);//nono 20030804
                            ircmd_play();//nono 20031210
                            }
                            
                        else
                            bJpgVFDPause = 1;
                    }
                    else if(bJpgVFDPause == 1)
                    {
                        bJpgVFDPause = 2;
                    }
                }
                else if(key_data<40)
                {
                    extern UINT8 power_on;        

                    if(power_on == 2)           //2-6-18 13:36 to avoid accepting a VFD_key in the beginning. 
                    {
                        power_on--;
                        if(key_data != 1)
                        {

                            //save_srn_start_t = get_rtc_val();//axel moved to top 2004/2/4 06:13PM
                            call_ir_func(vfd_keycode[key_data - 1]);
                        }
                    }
                    else
                    {
                        //save_srn_start_t = get_rtc_val(); //axel moved to top 2004/2/4 06:13PM        

                        call_ir_func(vfd_keycode[key_data - 1]);
                    }

                }
#endif
        }        

        }
 
                
        vfd_state = VFD_WRITE;
         update_vfd_data();
    }
    
    else
    {
         switch (bWriteState)
         {      
        case 0:             
            
            regs0->iop_data[VFD_CMD] =(count*2)<<8;//in cmd we only send address! write cmd deal in iop!
            regs0->iop_data[VFD_DAT0] =vfd_mem[count + 1] << 8 | vfd_mem[count];
            regs0->iop_data[VFD_DAT1] =vfd_mem[count + 3] << 8 | vfd_mem[count + 2];             
            regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |(FUN_VFD_WRITE | VFD_DAT_LEN4);            
            /* transfer data size add by chichang 2001 6/6 */
            count += 4;            
            if(count == VFD_DISPLAY_SIZE)
            {
                count = 0;
                vfd_state = VFD_READ;
            }            
            bWriteState=0;
            break;
        default:
            bWriteState=0;            
            
        }      
        
    }      
    
#endif//SUPPORT_VFD

}

⌨️ 快捷键说明

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