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

📄 setup.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
#define MAIN_SETUP_DECLARE


#include "winav.h"

#ifndef SYSTEM_8051
#include <stdio.h>
#include <stdlib.h>
#endif

#include <string.h>

#include    "input.h"
#include    "osd.h"
#include    "hal.h"
#include    "cc.h"
//#include "gdimsg.chi"
#include	"setup.h"
#include    "avsys.h"   // LLY.277a-2
#include    "hal.h"
#include    "chips.h"

#include    "navigate.h"
#include    "ucode.h"
#include    "cdinfo.h"
#include    "utl.h"
#include    "servo.h"

#include	"gdi.h"
#include	"osd3.h"

#include    "comutl.h"      // TCH1.21-1;
#include    "CTString.h"    // Brian2.31

//CoCo1.11a, for backdoor
// Brian1.11b
#define BACKDOOR_DISPLAY_VERSION_START_V	268 //Brian1.25 //300//400
#define BACKDOOR_DISPLAY_VERSION_START_H	(120+SETUP_GLOBAL_OFFSET) // Brian1.24


// Brian0.87
// We can enter back door when selection bar is on a specified position
// BACKDOOR_ENTRY_POINT defines this position
#define BACKDOOR_ENTRY_POINT    SETUP_MAIN_LANGUAGE

#define WRITE_EEPROM_ENABLE
//#define SUPPORT_BACK_DOOR_APS 


// brian.277a-3rd, definition for _SetTestTone function
#define MUTE_CHANNEL    0
#define L_CHANNEL       1
#define R_CHANNEL       2
#define C_CHANNEL       3
#define LS_CHANNEL      4
#define RS_CHANNEL      5
#define SW_CHANNEL      6

#ifndef REMOVE_SETUP_SPEAKER_TEST
BYTE    _bTestToneStage;
DWORD   _dwStageCount;
BYTE    _bDSPTestTone;  // record whether we are using DSP test tone micro code or not
#endif

// Brian1.08a
#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU
// for horizontal icon menu, the backdoor area is moved to bottom-right
#define BACKDOOR_DISPLAY_X      (460+SETUP_GLOBAL_OFFSET) // Brian1.24
#define BACKDOOR_DISPLAY_Y      280

#define BACKDOOR_SERVO_X      (300+SETUP_GLOBAL_OFFSET) // Brian1.24
#define BACKDOOR_SERVO_Y      280

#else

#define BACKDOOR_DISPLAY_X      (460+SETUP_GLOBAL_OFFSET) // Brian1.24
#define BACKDOOR_DISPLAY_Y      36

#define BACKDOOR_SERVO_X      (300+SETUP_GLOBAL_OFFSET) // Brian1.24
#define BACKDOOR_SERVO_Y      36

#endif


#define BACKDOOR_OUTPUT_NUMBER(X, Y, NUM)\
    {\
        GDI_FILL_RECT(X, Y, X+95, Y+31, OSDSETUP_ENTRY_MAIN_COLOR_BG);\
        GDI_NumberToString(NUM);\
        __wGDIx=X;\
        __wGDIy=Y;\
        GDI_DrawString();\
    }

#define BACKDOOR_OUTPUT_STRING(X, Y)\
    {\
        GDI_FILL_RECT(BACKDOOR_SERVO_X, Y, BACKDOOR_SERVO_X+225, Y+31, OSDSETUP_ENTRY_MAIN_COLOR_BG);\
        GDI_CopyMsgString();\
        __wGDIx=X;\
        __wGDIy=Y;\
        GDI_DrawString();\
    }

#define BACKDOOR_CLEAR_NUMBER()\
    {\
        GDI_FILL_RECT(BACKDOOR_SERVO_X, BACKDOOR_SERVO_Y, BACKDOOR_SERVO_X+225, BACKDOOR_SERVO_Y+31, OSDSETUP_ENTRY_MAIN_COLOR_BG);\
    }



//LJY275e
// wyc.277a-2, rename by SUPPORT_CDIF.
#ifdef SUPPORT_CDIF
BIT gbtServoInfo = FALSE;       
BIT gbtServoRegRW = FALSE;      
BYTE gbKeyCntr, gbTestItem;     
WORD gwValue;   
void _ServoDebugInfo(void) ;

#endif //SUPPORT_CDIF       
#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM //XuLi.230
BYTE __bPreCountStop;//Xuli1.26, Save the previous stop mode before entering SETUP to decide if need resume after exit.
extern BYTE __bProgramStop; //Xuli1.26, Use this variable check such condition: if program cause stop, then SETUP, __bPreCountStop<>0, but still need resume after exit SETUP
#endif

// save to EEPROM info.
//BIT     __btInputPassword; //=FALSE;
//BYTE    __bPasswordIndex; // = 0;
BYTE    __bPassword[SETUP_PASSWORD_NO+1];
BYTE    __bSetupMode; // = FALSE; put in _INITIAL_Variables_PowerON

//BYTE    __btInputMenuLanguageCode; //=FALSE;
//BYTE    __bMenuLanguageCodeIndex; // = 0;
//BYTE    __bMenuLanguageCode[4];

//BYTE    __btInputAudioLanguageCode; //=FALSE;
//BYTE    __bAudioLanguageCodeIndex; // = 0;
//BYTE    __bAudioLanguageCode[4];

//BYTE    __btInputSPSTLanguageCode; //=FALSE;
//BYTE    __bSPSTLanguageCodeIndex;// = 0;
//BYTE    __bSPSTLanguageCode[4];

BYTE	__bLanguageCode[4];

BYTE    _bAudioTypeChange; // = FALSE;
BYTE    _bParentalControlChange; // = FALSE;

// for SETUP_InputPassword
BYTE    __bInputPassword; //=FALSE;
BYTE    __bInputPasswordIndex; // = 0;


BYTE *pbSetupPtr;

BYTE    i;
BYTE _bSetupTemp;

#ifdef _DEBUG_INFO
BYTE _bEEPROMError = 0;
#endif

// update Setup info to SPRM
extern  WORD __wSPRMs [24];
extern  BYTE __bNowBTNNumber;
extern  BYTE __bInvalidRegion;
extern  BYTE _bShowCEMessage;
extern  BYTE __bServoRevision[5];
extern  void _SetAudType(BYTE bType);  // in CHIPS module

void    _SetAngleMarkTime(void);
void    _WriteSetupData(BYTE bSetup, BYTE bDefaultPassword);
void    _SetTestTone(BYTE bChannel);
void    _SoftVolumeMax(void); // brian.277a-3rd
void OSDSETUP_Display(void);
void OSDSETUP_ProcessSpeaker(void);

//CoCo1.11a, for backdoor
void _OutputAllSWVersion(void);
void _OutputVersion(void);
void _ClearVersionRegion(void);

//RECT    _rcArea;
BYTE	_bPasswordOK=FALSE;
BYTE    __SetupMode=FALSE;


extern BYTE    _bGDIInit;
extern BYTE __bThumbnailRepaint;
extern BYTE    __bThumbnailMode;

extern  BYTE    DATA    _bOSDLang;

//CoCo1.11a, for backdoor
extern WORD _wHPos;
extern WORD __wVStart; // Brian1.25, for temp usage in _OutputAllSWVersion
extern BYTE    _bUDEData[6];
extern COPYINFO    cpinfo ; // Brian1.25

void _SaveDataToSetupInfo(void);
void _ProcessBackDoorKey(void);
void _SpeakerTest(void);
void _SetAnalogEnable(void);

//Alex1.07a, 20031013 SHOW PSCAN PROMPT
#if defined (SUPPORT_PSCAN_PROMPT_SETUP) || defined (SUPPORT_PSCAN_PROMPT_OSD)
extern BYTE __bOSDPromptPreKey;
extern BYTE __bOSDPromptMode;
extern BYTE OSDSETUP_InputPscan(BYTE bKey);
extern void OSDSETUP_ScreenVideoOutputPscanDlg(void);
#endif //#if defined (SUPPORT_PSCAN_PROMPT_SETUP) || defined (SUPPORT_PSCAN_PROMPT_OSD)


BYTE SETUP_ProcessKey(BYTE bKey)
{

    if ((__bSetupMode == FALSE) && (__bKey!=KEY_SETUP))
    {
        // If not in SETUP mode now, and Key is not SETUP
        // just return, process as normal keys
        return __bKey; //FALSE;
    }

    if ((__bKey == KEY_POWER) || (__bKey == KEY_OPEN_CLOSE))
    {
       
        //clear highlight
        HAL_VCD30_Area(FALSE);
        __bSetupMode = FALSE;
        //Brian1.05
        //_bDoBackDoor = FALSE;
        if (_bDoBackDoor)
            _ExitBackDoor();
        __bInputPassword = FALSE;

#if defined (SUPPORT_PSCAN_PROMPT_SETUP) || defined (SUPPORT_PSCAN_PROMPT_OSD)
            // Brian1.07a, cancel PScan prompt
            __bOSDPromptMode = FALSE;
#endif


        //Brian0.86-2
        // clear the region and inform OSD
        GDI_ClearRegion(__bCurrentRegionId);
//        OSD_Output(MSG_OSDAPP, OSD_APPMODE_EXIT, 0x0); 
		OSD_OUTPUT_MACRO(MSG_OSDAPP, OSD_APPMODE_EXIT, 0x0); // Brian1.02

        return __bKey; //TRUE;
    }

    // Brian2.81, we treate compound KEY_PLAY_PAUSE/ KEY_PAUSE_STEP as KEY_PAUSE in backdoor
    if (_bDoBackDoor)
    {
        if (__bKey == KEY_PLAY_PAUSE || __bKey == KEY_PAUSE_STEP)
            __bKey = KEY_PAUSE;

        _ProcessBackDoorKey();
        return KEY_NO_KEY;

    }
    else
    {
        if (__bKey == KEY_PLAY || __bKey == KEY_PLAY_PAUSE)
            __bKey = KEY_ENTER;

    }


	if (__bInputPassword)
	{
		extern BYTE _bMENUTemp;

		if (__wMENUCurrentItemId == SETUP_CUSTOM_CHANGE_PASSWORD)
		{

			_bMENUTemp = OSDSETUP_ChangePassword(__bKey);
			if (_bMENUTemp == SETUP_INPUT_PASSWORD_VERIFIED)
			{

#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
            HAL_EEPROM_PWrite(SETUP_ADDR_PASSSTRING, &__SetupInfo.wDefaultPassword, 2);
#endif
			}

			__bKey = KEY_NO_KEY;

		}
		else if (__wMENUCurrentItemId == SETUP_CUSTOM_PARENTAL)
		{
			_bMENUTemp = SETUP_InputPassword(__bKey);
			if (_bMENUTemp == SETUP_INPUT_PASSWORD_CORRECT)
			{
				__bKey = KEY_RIGHT;
				_bPasswordOK = TRUE;
			
			}
			else
			{
				__bKey = KEY_NO_KEY;

			}
		}
//Alex1.07a,20031013 SETUP_SHOW_PSCAN_PROMP
#ifdef SUPPORT_PSCAN_PROMPT_SETUP   
        //Alex1.07a 20031009 if current menu is one of pscan, 
        //  choose support pscan or not
        
        else if (__wMENUCurrentItemId == SETUP_SCREEN_VIDEO_OUTPUT_YUV_PSCAN ||
			     __wMENUCurrentItemId == SETUP_SCREEN_VIDEO_OUTPUT_RGB_PSCAN ||
				 __wMENUCurrentItemId == SETUP_SCREEN_VIDEO_OUTPUT_VGA) 
                

		{   
            
            _bMENUTemp = OSDSETUP_InputPscan(__bKey);
            // move to OSD3 to handle it
            /*
			if (_bMENUTemp == SETUP_INPUT_PASSWORD_CORRECT)
			{
                OSDMENU_MenuOperation(KEY_ENTER);                
                _SaveDataToSetupInfo();      
			}
            */
            /*
            else if (_bMENUTemp ==SETUP_INPUT_PASSWORD_WRONG)
            {
               
                switch (__wMENUCurrentItemId)
				{

                    case SETUP_SCREEN_VIDEO_OUTPUT_VGA:                                                
                        OSDMENU_MenuOperation(KEY_UP);
                        OSDMENU_MenuOperation(KEY_UP);                       
                    case SETUP_SCREEN_VIDEO_OUTPUT_YUV_PSCAN:
                    case SETUP_SCREEN_VIDEO_OUTPUT_RGB_PSCAN:                           
                        OSDMENU_MenuOperation(KEY_UP);
                        OSDMENU_MenuOperation(KEY_UP);  
                    OSDMENU_MenuOperation(KEY_ENTER);                   
                }
            }
            _SaveDataToSetupInfo();      
            */
		}        
#endif //#ifdef SUPPORT_PSCAN_PROMPT_SETUP


		else //if (__wMENUCurrentItemId == SETUP_LANGUAGE_MENU_OTHERS ||
			 //    __wMENUCurrentItemId == SETUP_LANGUAGE_AUDIO_OTHERS ||
			 //	 __wMENUCurrentItemId == SETUP_LANGUAGE_SP_OTHERS)
		{
			_bMENUTemp = OSDSETUP_InputLanguageCode(__bKey);
			if (_bMENUTemp == SETUP_INPUT_PASSWORD_CORRECT)
			{
				OSDMENU_MenuOperation(KEY_ENTER);
				//_SaveDataToSetupInfo(); // Brian1.07, move after Language code transfer and put in __SetupInfo.xxxLanguageCode

				switch (__wMENUPrevItemId)
				{
				case SETUP_LANGUAGE_MENU_OTHERS:
					//Save the menu language code to __SetupInfo
					__SetupInfo.wMenuLanguageCode = _GetLanguageNumber();
					//Save the data to EEPROM
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
					HAL_EEPROM_PWrite(SETUP_ADDR_MENU_LANGUAGE_CODE, &__SetupInfo.wMenuLanguageCode, 2);
#endif
					break;
				case SETUP_LANGUAGE_AUDIO_OTHERS:
					//Save the menu language code to __SetupInfo
					__SetupInfo.wAudioLanguageCode = _GetLanguageNumber();
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
					HAL_EEPROM_PWrite(SETUP_ADDR_AUDIO_LANGUAGE_CODE, &__SetupInfo.wAudioLanguageCode, 2);
#endif
					break;
				case SETUP_LANGUAGE_SP_OTHERS:
					//Save the menu language code to __SetupInfo
					__SetupInfo.wSPSTLanguageCode = _GetLanguageNumber();
#ifdef WRITE_EEPROM_ENABLE//SYSTEM_8051
					HAL_EEPROM_PWrite(SETUP_ADDR_SPST_LANGUAGE_CODE, &__SetupInfo.wSPSTLanguageCode, 2);
#endif

					break;
				}
				// has been called in the previous _SaveDataToSetupInfo()
				//_TransferLanguageToSPRM();

                _SaveDataToSetupInfo(); // Brian1.07, put it here so when it call _TransferLanguageToSPRM, the __SetupInfo.xxxLanguageCode is correct

			} // end if (_bMENUTemp == SETUP_INPUT_PASSWORD_CORRECT)
			__bKey = KEY_NO_KEY;

		}


	}

⌨️ 快捷键说明

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