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

📄 initial.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    //StatusInfo.bDiscNumber=1; //--CoCo1.21, remove it because no one use it.

    // ** TCH0.38; begin...
    if ( __wDiscType & BOOK_DVD )
        StatusInfo.bPBCMode= __bNVPlayMode;
    else
        StatusInfo.bPBCMode= __btPBC;       //PBC on/off
    // ** TCH0.38; end...
    if (__wDiscType&BOOK_VCD)
        StatusInfo.wTotalTracks=__wTrackEnd-1;   //total tracks
    else
        StatusInfo.wTotalTracks=__wTrackEnd;   //total tracks

    {
		/* --CoCo1.21, remove it because no one use it.
    BYTE        bMin,bSec;

    __dwTemp= UTL_SectorstoMSF ( __dwTimeDiscEnd- __dwTimeDiscBegin );
    bMin= MSF_MINUTE ( __dwTemp );
    bSec= MSF_SECOND ( __dwTemp );

    StatusInfo.wTotalTime=MAKEWORD(bSec,bMin);     //total time(bMM:bSEC)
	*/
    }

    StatusInfo.bSetProgram=FALSE;       //program on/off
    //StatusInfo.bProgram=__btProgram;       //program on/off //--CoCo1.21, remove it because no one use it.
    //StatusInfo.bAudioChannel=__bModeChannel;  //audio channel status //--CoCo1.21, remove it.
    StatusInfo.bPlayingMode=MSG_STOP;   //playing mode
    //StatusInfo.bMute=__btMute;          //mute status //--CoCo1.21, remove it because no one use it.

    //StatusInfo.bKaraokeLevel=(2*NORMALKEY_OFFSET)+1; //--CoCo1.21, remove it because no one use it.
    //StatusInfo.bRepeat=__bRepeat;        //repeat track/disc/all disc/off //--CoCo1.21, remove it because no one use it.
    //StatusInfo.bRepeatAB=__bRepeatAB;      //repeat AtoB(on/off) //--CoCo1.21, remove it because no one use it.
    //StatusInfo.bRandom=__btRandom;        //random on/off //--CoCo1.21, remove it because no one use it.
    // DVD_102pMicky, remove __bTVMode, replace with SetupInfo.bTVSystem
    StatusInfo.bTVMODE=__SetupInfo.bTVSystem;
    StatusInfo.bOsdDisplay=__bDisplay;    //osd display on/off
//alex1.23,20040218 combine gototime, search,bookmark, remove gcShowStatus.bSetTime in _INITIAL_gcShowStatus function
    //StatusInfo.bSetTime=__btGoToTime;
    StatusInfo.bStill=FALSE;
    StatusInfo.wCurrentTime=NULL;
    //StatusInfo.bOpen= __btDriveOpen; //--CoCo1.21, remove it because no one use it.
    StatusInfo.wCurrentTrack=0;
    // LLY.104, keep vocal mode: ON/ OFF/ LL/ RR.
// ** TCH1.54; Remove it as don't use it.    StatusInfo.bVocal=__bVocal;
    StatusInfo.bPowerDown=__btPowerDown;
    // LLY.022
    //StatusInfo.bMP3Mode=FALSE; //--CoCo1.21, remove it because no one use it.
    // LLY.036
    StatusInfo.bSetSearch=__bSearchMode;    // search mode on/off
    StatusInfo.bSearch=FALSE;
//DVD018, volume bar error
	/* --CoCo1.21, remove it
    StatusInfo.bVolume=(BYTE)(__wVolAudio/VOLUME_GAP);
    if ( __wVolAudio % VOLUME_GAP)
        StatusInfo.bVolume++;
		*/

	/*--CoCo1.21, remove it
    StatusInfo.bVolumeLevel=(VOLUME_MAX-VOLUME_MIN)/VOLUME_GAP;
    if ((VOLUME_MAX-VOLUME_MIN)%VOLUME_GAP)
        StatusInfo.bVolumeLevel++;
    // LLY.277a, let it same as the max volume control bar NO if it larger than it
    if(StatusInfo.bVolumeLevel>MAX_VOLCTL_BAR)
        StatusInfo.bVolumeLevel=MAX_VOLCTL_BAR;

    StatusInfo.bKey= __cKeyShift+NORMALKEY_OFFSET;
	*/
    //StatusInfo.bEcho=__bEchoLevel; //--CoCo1.21, remove it because no one use it.
    //StatusInfo.bEchoLevel=ECHO_LEVEL; //--CoCo1.21, remove it because no one use it.
    //StatusInfo.bSurround=__bSurround; //--CoCo1.21, remove it because no one use it.
    __bpDataPointer=(BYTE *)(&StatusInfo);

    // LLY.172q, it's only "TRUE" or "FALSE" flag to communicate with OSD/ PANEL mode (ARM error)
    //OSD_Output ( MSG_STOPWAIT, (WORD)&StatusInfo, 0 );
    OSD_Output ( MSG_STOPWAIT, TRUE, 0 );

    if (bFlag)
        //PANEL_Output ( MSG_STOPWAIT, (WORD)&StatusInfo);
        PANEL_Output ( MSG_STOPWAIT, TRUE);
}

//  *********************************************************************
//  Function    :   _CheckUpgradeCD
//  Description :   Check if the CD contains the file "dvdfull.bin". If so and file size correct, proceed to Flash mode (Will call W99AV_WriteFlash).
//  Arguments   :   None
//  Return      :    FLASH_FAIL_NO_ERROR : No Error detected
//                                      FLASH_FAIL_NO_DISC : No disc found
//                                      FLASH_FAIL_INVALID_DISC : Can't find "dvdfull.bin" in disc
//                                      FLASH_FAIL_USER_ABORT : User choose to abort to upgrade
//                                      FLASH_FAIL_PASSWORD : The password user input is incorrect
//  Side Effect :
//  *********************************************************************
// Chuan 172 2002/02/22: This function have major change. Now Don't use include method
BYTE _CheckUpgradeCD(void)
{
#ifdef SUPPORT_AUTO_UPGRADE
//#define DUMP_INFO
    // DWORD   __dwFileLoc, __dwFileLen;  Chuan 278 2002/10/09: Use __dwTimeBegin and __dwTimeEnd instead
    // BYTE    __bFailStage = FLASH_FAIL_NO_ERROR; Chuan 278 2002/10/08: Use _bINITIALTemp instead.
    BYTE    *pbBuf;   // Chuan 172r2 2002/04/03: Store the file name
    extern  BYTE _bCDROMDecodingMode ;
    extern  BYTE DATA _bIdex;

    // malloc ENTRY_MAX_LEN+1 size to store the file name
    pbBuf = __bPool+ __wPoolOffset;
    __wPoolOffset+=(WORD)(ENTRY_MAX_LEN+1);

    // Chuan 273, The same as MP3 Module.
    // when specify Initial code bank,
    // other bank modules can't access the codes.
    // so, put in variable array    
    pbBuf[0]='\0';
    // ** TCH1.73; begin... Fix the potential problem: ROOT has many files. <ex> one MP3 title has 182 songs.
///    if (!CD_ParserDirectory ((char*)pbBuf, NULL))    // ** TCH1.73; 

    //alex2.31,use CT_strcpy to replace strcpy to reduce code size
    CT_strcpy ( pbBuf+ 2, "BIN" );    
    
    if (!CD_ParserDirectory ((char*)pbBuf, (char*)(pbBuf+2) )) // ** TCH1.73; 
    // ** TCH1.73; end...         
    {
        _bINITIALTemp = FLASH_FAIL_OTHER_DISC ;
        goto EXIT ;
    }
#ifdef CHECKSUM_CHECK
    // Chuan0.87-2th, Get CheckSUM Value
    _bIdex = 0;
    while (1)
    {
        if ( CD_GetEntrybyIndex (_bIdex++, pbBuf ) == FILE_FLAG_NONE )
        {
#ifdef SUPPORT_PRINTF            
            printf ("Not found !\n") ;
#endif
            _bINITIALTemp = FLASH_FAIL_OTHER_DISC ;
            goto EXIT ;
        }
        pbBuf[0x0c]=0 ;
        
        //alex2.31, use CT_strcmp to replace strcmy to reduce code size
        //if (!CT_strcmp(pbBuf, "CHECKSUM.BIN"))   
        if (!CT_strcmp(pbBuf, CT_strcpy(__bMsgString,"CHECKSUM.BIN"))) //LJY2.32
            
        //if (!strcmp(pbBuf,"CHECKSUM.BIN"))
        {
            // Chuan 172 2002/02/22: Find FLASH.BIN and then get location and length
            CD_GetEntryInfo ( ENTRY_INFO_LOCATION, & __dwTimeBegin );
            CD_GetEntryInfo ( ENTRY_INFO_DATALENGTH, & __dwTimeEnd );  // Chuan 278 2002/10/21: Keep the size of Flash.bin
            break ;
        }
    }
    __dwSectorCDROMBegin=__dwSectorCDROMEnd=NULL; // Chuan 172r 2002/03/29: Must do cdrom decoding.
    if (!UTL_ReadSectors (__dwTimeBegin, (BYTE)__dwTimeEnd, _bCDROMDecodingMode))
    {
        _bINITIALTemp = FLASH_FAIL_CDROMDECODE;
        goto ERROR;
    }
    W99AV_ReadDRAMData((ECCBASE_REALCDROM+((__wDiscType & CDROM_XA)?CDXA_START:CDROM_START)/4+4),&_dwINITIALTemp); // Chuan0.87, _dwINITIALTemp keep the checksum value
#endif    
    // Chuan 172 2002/02/22: Try to find FLASH.BIN
    _bIdex = 0;
    while (1)
    {
        if ( CD_GetEntrybyIndex (_bIdex++, pbBuf ) == FILE_FLAG_NONE )
        {
#ifdef SUPPORT_PRINTF            
            printf ("Not found !\n") ;
#endif
            _bINITIALTemp = FLASH_FAIL_OTHER_DISC ;
            goto EXIT ;
        }
        pbBuf [0x9] = 0 ;

//alex1.25 20040419, if USE CTMAN to combine, the write flash procedure change as CTMAN.BIN
//---------------------------------------------------------------------//
#ifdef SUPPORT_DVD_T

        //alex2.31, use CT_strcmp to replace strcmy to reduce code size
//        if ( ! CT_strcmp ( pbBuf, "CTMAN.BIN") )        
        if (!CT_strcmp(pbBuf, CT_strcpy(__bMsgString,"CTMAN.BIN"))) //LJY2.32

#else  //#ifdef SUPPORT_DVD_T
        //alex2.31, use CT_strcmp to replace strcmy to reduce code size
//        if ( ! CT_strcmp ( pbBuf, "FLASH.BIN") )
        if (!CT_strcmp(pbBuf, CT_strcpy(__bMsgString,"FLASH.BIN"))) //LJY2.32
#endif //#ifdef SUPPORT_DVD_T        
//---------------------------------------------------------------------//
        {
            // Chuan 172 2002/02/22: Find FLASH.BIN and then get location and length
            CD_GetEntryInfo ( ENTRY_INFO_LOCATION, & __dwTimeBegin );
            CD_GetEntryInfo ( ENTRY_INFO_DATALENGTH, & __dwTimeEnd );  // Chuan 278 2002/10/21: Keep the size of Flash.bin
            break ;
        }
    }
    // Chuan 172 2002/02/22: Set border color and disable frame.
    OSD_OUTPUT_MACRO ( MSG_STOPWAIT, FALSE, 0 );
    HAL_SetBorderColor(HAL_COLOR_BLACK);
    HAL_Display(HAL_DISPLAY_VIDEO, FALSE);
    
    OSD_OUTPUT_MACRO(MSG_OSDAPP, OSD_APPMODE_AUTOUPGRADE, 0xFF); // Chuan 172r 2002/03/15: Now prepare OSD information.
    // Chuan 172 2002/02/22: Show prepare message
    OSD_OUTPUT_MACRO(MSG_AUTOUPGRADE,AUTOUPGRADE_PREPARE,0xff);
    __dwSectorCDROMBegin=__dwSectorCDROMEnd=NULL; // Chuan 172r 2002/03/29: Must do cdrom decoding.
    if (!UTL_ReadSectors (__dwTimeBegin, (BYTE)__dwTimeEnd + 1, _bCDROMDecodingMode))
    {
        _bINITIALTemp = FLASH_FAIL_CDROMDECODE;
        goto ERROR;
    }
    // Chuan 172r 2002/03/15: Move DRAM(0x4800) to DRAM(0x65000)
    // Chuan 277 2002/09/11: Use DRAM COPY API.
    __dwW99AV_SrcDRAM = __dwW99AVECCBASE;
    __dwW99AV_DestDRAM = W99AV_FLASH_DRAMADDR; // Chuan0.86, Rename the Name
    W99AV_DRAMCopy(__dwTimeEnd*588);

//alex1.23,20040218,donwload flash.bin from dram (only for debug)
/**********************************************************************/
#ifdef SUPPORT_CHECKSUM_DOWNLOAD
    //_CC_DumpDRAM(char* strFile, DWORD dwStart, DWORD dwEnd);  // LLY.046OSD    
    _CC_DumpDRAM("flash.cm2", __dwW99AV_SrcDRAM,__dwW99AV_SrcDRAM+__dwTimeEnd*588);
    _CC_DumpDRAM("flash.cm1", __dwW99AV_DestDRAM,__dwW99AV_DestDRAM+__dwTimeEnd*588);
#endif //#define SUPPORT_DOWNLOAD_WINDVD_FOR_AUTOUPGRADE 
/**********************************************************************/

    // Chuan 172 2002/02/22: Try to find DVDFULL.BIN or LOGO.BIN
    _bIdex = 0;
    while (1)
    {
        if ( CD_GetEntrybyIndex (_bIdex++, pbBuf ) == FILE_FLAG_NONE )
        {
#ifdef SUPPORT_PRINTF            
            printf ("Not found !\n") ;
#endif
            _bINITIALTemp = FLASH_FAIL_INVALID_DISC ;
            goto ERROR ;
        }
        // Specify the desired binary code filename
        // Notice: must set the correspond index by "end of string" flag
        pbBuf [0xa] = 0 ;
        //alex2.31, use CT_strcmp to replace strcmy to reduce code size
//        if ( ! CT_strcmp ( pbBuf, "DVD908.BIN") )  // Chuan0.87b-2th, Rename.        
        if (!CT_strcmp(pbBuf, CT_strcpy(__bMsgString,"DVD908.BIN"))) //LJY2.32
        {
            _bINITIALTemp = FLASH_AUTO_UPGRADE ;
            break ;
        }
    }
    // Chuan 172 2002/02/22: Find FLASH.BIN and then get location and length
    CD_GetEntryInfo ( ENTRY_INFO_LOCATION, & __dwTimeBegin );
    CD_GetEntryInfo ( ENTRY_INFO_DATALENGTH, & __dwTimeEnd );
    if (_bINITIALTemp == FLASH_AUTO_UPGRADE)
    {
        // Alex1.25 , add 16M flash for CTMAN, 
//---------------------------------------------------------------//
        // 4M -> 0x100 , 8M -> 0x200  , 16M -> 0x400         
        // if ((__dwTimeEnd != 0x100)&&(__dwTimeEnd != 0x200) )
        if ((__dwTimeEnd != 0x100)&&(__dwTimeEnd != 0x200) &&(__dwTimeEnd != 0x400) )
//---------------------------------------------------------------//
        {
            _bINITIALTemp = FLASH_FAIL_INVALID_DISC ;
            goto ERROR ;
        }    
    }
#ifdef AUTO_UPGRADE_CONFIRM
    // Chuan 172 2002/02/22: Show confirm message
    OSD_OUTPUT_MACRO(MSG_AUTOUPGRADE,AUTOUPGRADE_CHECK,0xff);
#ifdef SYSTEM_8051
    while (1)
    {
        // Chuan 277 2002/09/09: update the progress count for system hang control
        __dwProgressCount = __dwCountSystem;

        if (__bISRKey == KEY_N2)
        {
            _bINITIALTemp = FLASH_FAIL_USER_ABORT ;
            // Chuan 172 2002/02/22: Show abort message            
            OSD_OUTPUT_MACRO(MSG_AUTOUPGRADE,AUTOUPGRADE_ABORT,0xff);        
            goto ERROR ;
        }
        else if (__bISRKey == KEY_N1)
            break ;
    }    
#else   //#ifdef SYSTEM_8051
    printf ("Ready to burn ? 1=yes/others=no\n") ;
    _bIdex = getche () ;
    if (_bIdex != '1')
    {
        _bINITIALTemp = FLASH_FAIL_USER_ABORT ;
        OSD_OUTPUT_MACRO(MSG_AUTOUPGRADE,AUTOUPGRADE_ABORT,0xff);        
        goto ERROR ;
    }
#endif  //#ifdef SYSTEM_8051
#endif      //#ifdef USER_OPERATION


        GDI_FILL_RECT(135, 280, 510, 310, OSDND_PALETTE_ENTRY_BACKGROUND);
        __dwW99AV_SrcDRAM = __dwW99AVECCBASE;
        

        //alex2.30-2,20040701,use bigger Region
        for(_bIdex=0;_bIdex<(__dwTimeEnd/0x10);_bIdex++)           
        {
#ifdef NO_RISC_DRAMCOPY
            // Chuan 278 2002/10/21: 5 sec w/RISC command, 70 sec w/o RISC command. So need update the progress count for system hang control when w/o RISC command
            __dwProgressCount = __dwCountSystem;
#endif
            if (!UTL_ReadSectors (__dwTimeBegin+16*_bIdex, 16, _bCDROMDecodingMode))    // CDROM_DECODE_SECTOR_AMOUNT sector once.
            {
                _bINITIALTemp = FLASH_FAIL_CDROMDECODE;
                goto ERROR;
            }           
            //Alex1.25,20040408,change the legnth 80-> 35 for 16M
            GDI_FILL_RECT( 230, 285, 6*(_bIdex)+230, 305, OSDND_PALETTE_ENTRY_BOTTOM_STRING);            
            __dwW99AV_DestDRAM = W99AV_UPGRADE_DRAMADDR+9408L*_bIdex;
            W99AV_DRAMCopy(9408L); // 588*128
            //Alex1.23,20040218,fix checksum error 
            //only show one time , mark second tims
            //GDI_FILL_RECT((80*_bIdex*(3-__bTemp)+220), 285, (80*_bIdex*(3-__bTemp)+260), 305, OSDND_PALETTE_ENTRY_BOTTOM_STRING);
            //GDI_FILL_RECT((80*_bIdex+220), 285, (80*_bIdex+260), 305, OSDND_PALETTE_ENTRY_BOTTOM_STRING);            

         }


     
#ifdef CHECKSUM_CHECK
    // Chuan0.87-2th Start CheckSUM Verify.
    OSD_OUTPUT_MACRO(MSG_AUTOUPGRADE,AUTOUPGRADE_CHECKSUM,0xff);
    //__dwTimeNow = W99AV_CheckSum((WORD)__dwTimeEnd); // LJY1.21, Chuan1.11, pass # of sectors into function
    //alex1.24a,add parameter to compare , if not the same, use single read checksum.
    __dwTimeNow = W99AV_CheckSum((WORD)__dwTimeEnd,(WORD)_dwINITIALTemp); 


    GDI_SetTextColor(TEXT_FG_COLOR, OSDND_PALETTE_ENTRY_BOTTOM_STRING);   
    GDI_OUTPUT_NUMBERHEX(350, 280, (WORD)__dwTimeNow); // Chuan1.00-2, Display Hex Number

    
    
    GDI_SetTextColor(TEXT_FG_COLOR, OSDND_PALETTE_ENTRY_UPPER_RIGHT_STRING);

#if defined( SUPPORT_PRINTF) || defined(SERIAL_DEBUG)
    printf("\nCHECKSUM = [%x -> %x]",(WORD)_dwINITIALTemp,(WORD)__dwTimeNow);
#endif
    if((_dwINITIALTemp&0x0ffff)!=(__dwTimeNow&0x0ffff))
    {
        _bINITIALTemp = FLASH_FAIL_CHECKSUM;
        goto ERROR;
    }
#endif

    SERVO_OpenTray () ;
    UTL_DelayTime((WORD)COUNT_5_SEC, FALSE); // Chuan0.8

⌨️ 快捷键说明

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