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

📄 chips.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
            if (++__b3DLevel > 5) __b3DLevel = 0;
            break ;
        default:
            return FALSE;
    }
    KARAOKE_3DLevel(__b3DLevel);
    OSD_OUTPUT_MACRO(MSG_3D, __b3DLevel+1, 0x3);
    return TRUE;
#else
        // Not support by W9922QF
    //if (__btMute)
    //{
    //    __btMute= FALSE;
    //    OSD_OUTPUT_MACRO(MSG_MUTE, __btMute, 0 );
    //}
    //OSD_OUTPUT_MACRO(MSG_3D, __b3DLevel, 0x3);
    return FALSE ;
#endif
}

//  *********************************************************************
//  Function    :   CHIPS_MICControl
//  Description :   Toggle between mic effect levels
//                  w9922qf doesn't support mic control
//  Arguments   :   bON :
//                      CHIPS_TOGGLE, toggle between mic level
//  Return      :   TRUE : supported and carried out
//                  FALSE : Not supported
//  Change      :
//  Side Effect :
//  *********************************************************************
BYTE    CHIPS_MICControl(BYTE bON)
{
#ifdef KARAOKE          // WWH_HC2500
    static _bMicHarmony=0;
    switch (bON)
    {
        case CHIPS_TOGGLE :
            if (++_bMicHarmony > 8) _bMicHarmony = 0;
            break ;
        default:
            return FALSE;
    }
    KARAOKE_MicControl(_bMicHarmony);
    OSD_OUTPUT_MACRO ( MSG_KARAOKE, _bMicHarmony, 0x3 );
    return TRUE;
#else   // #ifdef KARAOKE
// DVD_102Micky, support MIC on/off
#ifdef SUPPORT_MIC_CONTROL
    if (bON == CHIPS_ON)
        __sbMuteMic = 1 ;
    else if (bON == CHIPS_OFF)
        __sbMuteMic = 0 ;
#else   //#ifdef SUPPORT_MIC_CONTROL
#ifdef SUPPORT_MIC_CONTROL_INV
    if (bON == CHIPS_ON)
        __sbMuteMic = 0 ;
    else if (bON == CHIPS_OFF)
        __sbMuteMic = 1 ;
#else   //#ifdef SUPPORT_MIC_CONTROL_INV
    return FALSE;
#endif  //#ifdef SUPPORT_MIC_CONTROL_INV
#endif  //#ifdef SUPPORT_MIC_CONTROL

    return TRUE;
#endif  // #ifdef KARAOKE
}


//  *********************************************************************
//  Function    :   CHIPS_VolumeControl
//  Description :   It will do volume level control according to the parameter
//  Arguments   :   bFunction:      The type of command
//                      CHIPS_UP : control up 1 level
//                      CHIPS_DOWN : control down 1 level
//                      CHIPS_NORMAL : set to default level
//                      CHIPS_TOGGLE : toggle between levels in range
//                      CHIPS_LEVEL : return current level
//                      CHIPS_SUPPORT : return if this function supported
//  Return      :   TRUE : Supported/Succeeded
//              :   FALSE : Not supported
//  Change      :   Will open audio if mute
//  Side Effect :
//  *********************************************************************
DWORD    CHIPS_VolumeControl( BYTE bFunction)
{
    //Kevin2.81, Filter if the desired function is supported or not in one place
    if (!_CHIPS_FilterFunSupport(CHIPS_VOLUMECONTROL))
        return FALSE;
        
    switch(bFunction)
    {
        case    CHIPS_UP:
                // wyc.277a-AVSys, function to control the all channel volume up.
#ifdef  SUPPORT_AV_SYSTEM
                CHIPS_AMPAction(AMP_MODE_ALL_VOL_UP);
                return TRUE;
#else
                //_TuneAudioVolume(TRUE);
                //Kevin2.81 delete _TuneAudioVolume()
                __wVolAudio += VOLUME_GAP ;
                if ( __wVolAudio > __dwVOLUME_MAX ) //jyliu.yhi
                    __wVolAudio= __dwVOLUME_MAX;
#endif // #ifdef  SUPPORT_AV_SYSTEM
                break;

        case    CHIPS_DOWN:
                // wyc.277a-AVSys, function to control the all channel volume down.
#ifdef  SUPPORT_AV_SYSTEM
                CHIPS_AMPAction(AMP_MODE_ALL_VOL_DOWN);
                return TRUE;
#else
                //_TuneAudioVolume(FALSE);
                //Kevin2.81 delete _TuneAudioVolume()
                if ( __wVolAudio < VOLUME_MIN + VOLUME_GAP)
                    __wVolAudio = VOLUME_MIN;
                else
                __wVolAudio -= VOLUME_GAP;
#endif // #ifdef  SUPPORT_AV_SYSTEM
                break;

        case    CHIPS_LEVEL:
                return __wVolAudio;

        case    CHIPS_NORMAL :
                __wVolAudio = VOLUME_DEFAULT ;
                break ;

        case    CHIPS_TOGGLE :
                break ;

        case    CHIPS_SUPPORT :
                return TRUE ;

        default:
                return FALSE;
    }
//DVD018
    if (__btMute)
    {
        //DVD018
       __btMute= FALSE ;
       OSD_OUTPUT_MACRO(MSG_MUTE, __btMute, 0 );
    }
    CHIPS_OpenAudio(TRUE);
    //dwTemp=(_dwVolAudio / VOLUME_GAP);
    OSD_OUTPUT_MACRO(MSG_VOLUME, (WORD)(__wVolAudio / VOLUME_GAP), 3 );
    return TRUE;
}


//Kevin1.10, create
//  *********************************************************************
//  Function    :   CHIPS_MICVolControl
//  Description :   Do MIC volume level control
//  Arguments   :   bFunction:      The type of command
//                      CHIPS_UP : control up 1 level
//                      CHIPS_DOWN : control down 1 level
//                      CHIPS_NORMAL : set to default level
//  Return      :   None
//  Side Effect :   None
//  *********************************************************************
void    CHIPS_MICVolControl( BYTE bFunction)
{
#ifndef NO_MIC_INPUT
    switch(bFunction)
    {
        case    CHIPS_UP:
                __wMICVol += MIC_VOL_GAP ;
                if ( __wMICVol > MIC_VOL_MAX )
                    __wMICVol= MIC_VOL_MAX;
                break;

        case    CHIPS_DOWN:
                if ( __wMICVol < MIC_VOL_MIN + VOLUME_GAP)
                    __wMICVol = MIC_VOL_MIN;
                else
                    __wMICVol -= MIC_VOL_GAP;
                break;

        case    CHIPS_NORMAL :
                __wMICVol = MIC_VOL_DEFAULT ;
                break;
    }

    _printf("__wMICVol=%lx\n",__wMICVol);
    #define W99AV_DM_MIC_PCMSCALE  0x17ef   //20 bits
    W99AV_WriteDM(W99AV_DM_MIC_PCMSCALE,__wMICVol);
    _bVolOrMIC = 1; //1: MIC 
    OSD_OUTPUT_MACRO(MSG_VOLUME, (__wMICVol / MIC_VOL_GAP), 3 );
    _bVolOrMIC = 0; //0: VOLUME     
#endif
}



//#######################################################################
//  Function    :   CHIPS_EPPROMReadWriteVolume
//  Description :   Write to per-channel volume to serial EPPROM.
//  Parameters  :   bState, the state of the write process.
//  Return      :   None
//#######################################################################
// wyc2.79, rename this function and add read EPPROM code inside it
void    CHIPS_EPPROMReadWriteVolume (BYTE bState)
{
#ifdef  SUPPORT_AV_SYSTEM
#ifdef  VOLUME_VALUE_SAVE_IN_SERIAL_EPROM        
    if (bState & WRITE_TO_EPPROM)
    {
        if (bState == WRITE_ALL_INITIAL)
        {
            __bAMPVol = DEFAULT_ALL_CHANNEL_VOLUME;
	        for (_bCHIPSTmp=0; _bCHIPSTmp < EPROM_PER_CHANNEL_VOLUME_BYTE; _bCHIPSTmp++)
            	__bPerVol[_bCHIPSTmp] = DEFAULT_OTHER_CHANNEL_DEGREE;
        }	        
        
        bState &= 0x3; //Kevin2.79-2, otherwise will always enter the following two cases simultaneously
        if (bState & WRITE_ALL_CHANNEL_NOT_INITIAL)  
            HAL_EEPROM_Write(AVSYS_ADDR_ALL_VOLUME, __bAMPVol);
        if (bState & WRITE_PER_CHANNEL_NOT_INITIAL)  
        {
            //Kevin2.80, use HAL_EEPROM_PWrite instead of HAL_EEPROM_Write to decrease the # of times to do _I2C_Write()
            //for (_bCHIPSTmp=0; _bCHIPSTmp<EPROM_PER_CHANNEL_VOLUME_BYTE; _bCHIPSTmp++)
            //    HAL_EEPROM_Write(AVSYS_ADDR_PER_CHANNEL_VOLUME + _bCHIPSTmp, __bPerVol[_bCHIPSTmp]);
            HAL_EEPROM_PWrite(AVSYS_ADDR_PER_CHANNEL_VOLUME, __bPerVol, EPROM_PER_CHANNEL_VOLUME_BYTE);
        }
    }
    else //READ_FROM_EPPROM
    {
        __bAMPVol = HAL_EEPROM_Read(AVSYS_ADDR_ALL_VOLUME);
        HAL_EEPROM_PRead(AVSYS_ADDR_PER_CHANNEL_VOLUME, EPROM_PER_CHANNEL_VOLUME_BYTE, __bPerVol);

        //Kevin2.81 add EEPROM read protection for __bAMPVol & __bPerVol
        if(__bAMPVol>MAX_ALL_CHANNEL_VOLUME) 
            __bAMPVol = DEFAULT_ALL_CHANNEL_VOLUME; 
        for (_bCHIPSTmp=0; _bCHIPSTmp < EPROM_PER_CHANNEL_VOLUME_BYTE; _bCHIPSTmp++)
        {
            if(__bPerVol[_bCHIPSTmp]>MAX_OTHER_CHANNEL_DEGREE) 
                __bPerVol[_bCHIPSTmp] = DEFAULT_OTHER_CHANNEL_DEGREE;
        }                  
    }
#else
    //bState &= 0x3; //Kevin2.79-2, commented, WRITE_ALL_CHANNEL_NOT_INITIAL/WRITE_PER_CHANNEL_NOT_INITIAL will do nothing
    if ( (bState == READ_FROM_EPPROM) || (bState == WRITE_ALL_INITIAL) )
	{
		__bAMPVol = DEFAULT_ALL_CHANNEL_VOLUME;
        for (_bCHIPSTmp=0; _bCHIPSTmp < EPROM_PER_CHANNEL_VOLUME_BYTE; _bCHIPSTmp++)
        	__bPerVol[_bCHIPSTmp] = DEFAULT_OTHER_CHANNEL_DEGREE;
    }        

#endif //     
#endif // SUPPORT_AV_SYSTEM
}

// wyc2.80, move function CHIPS_ComputeVolumeValue to AMP module and rename to _AMP_CombineMainPerVol.
// .....

//  *********************************************************************
//  Function    :   CHIPS_AMPAction
//  Description :   This function is used to control AMP mode.
//  Arguments   :   bAMPMode -> The operation of AMP mode.
//  Return      :   void
//  Change      :
//  Side Effect :
//  *********************************************************************
//Kevin2.81 rename CHIPS_AMPActive as CHIPS_AMPAction 
void    CHIPS_AMPAction(BYTE    bAMPMode)
{
#ifdef  SUPPORT_AV_SYSTEM
    __dwTimeAMP = UTL_GetSysTimer();
    if ((bAMPMode == AMP_MODE_ALL_VOL_UP) || (bAMPMode == AMP_MODE_ALL_VOL_DOWN))
    {
        __bAMPActive |= AMP_TUNE_ALL_CHANNEL;
        // wyc.278-3, only write per channel volume to serial EPPROM when enter tuning all volume mode from per-channel mode.
        if (__bAMPActive & AMP_TUNE_PER_CHANNEL)
        {
            CHIPS_EPPROMReadWriteVolume(WRITE_PER_CHANNEL_NOT_INITIAL);
            __bAMPActive &= ~AMP_TUNE_PER_CHANNEL;
        }
        if (bAMPMode == AMP_MODE_ALL_VOL_UP)
        {
            if (__bAMPVol < MAX_ALL_CHANNEL_VOLUME)
                __bAMPVol++;
        }
        else
        {
            if (__bAMPVol != 0)
                __bAMPVol--;
        }
        // wyc.278-3, mute on when enter AMP mode.
        if (__btMute)
        {
            __btMute= FALSE ;
            CHIPS_OpenAudio(TRUE);
            OSD_OUTPUT_MACRO(MSG_MUTE, __btMute, 0 );
            // wyc2.80, rename function name to AMP_mute
            AMP_mute(__btMute?DAC_MUTE_ON:DAC_MUTE_OFF);     // KCHong, shut down DDX when mute, 278b-Mustek
        }
        // wyc2.80, rename function name to AMP_SetChannelVolume
        AMP_SetChannelVolume(AUDIO_CHANNEL_ALL, TRUE);        
        __wTemp = MAKEWORD(__bAMPVol, AUDIO_CHANNEL_ALL);
        OSD_OUTPUT_MACRO(MSG_VOLUME, __wTemp, 0xff);        
    }
    else
    {
        // wyc.277a, need to notice if updaing the key define number then need to update follow code also.
        if (bAMPMode != AMP_MODE_ENTER_EXIT)
            bAMPMode -= INPUT_KEY_GROUP8;
        switch (bAMPMode)
        {
            case    AMP_MODE_KEY_UP:
                if (__bAudioChannel > AUDIO_CHANNEL_BEGIN)
                    __bAudioChannel--;
                else
                    __bAudioChannel = AUDIO_CHANNEL_END;
                break;
            case    AMP_MODE_KEY_DOWN:
                if (__bAudioChannel < AUDIO_CHANNEL_END)
                    __bAudioChannel++;
                else
                    __bAudioChannel = AUDIO_CHANNEL_BEGIN;
                break;               
            case    AMP_MODE_KEY_LEFT:
                if (__bPerVol[__bAudioChannel] != 0)
                    __bPerVol[__bAudioChannel]--;
                break;
            case    AMP_MODE_KEY_RIGHT:
                if (__bPerVol[__bAudioChannel] < MAX_OTHER_CHANNEL_DEGREE ) // wyc2.79
                    __bPerVol[__bAudioChannel]++;
                break;
            case    AMP_MODE_ENTER_EXIT:
                if (__bAMPActive & AMP_TUNE_PER_CHANNEL)
                {
                    __bAMPActive &= ~AMP_TUNE_PER_CHANNEL;
                    CHIPS_EPPROMReadWriteVolume(WRITE_PER_CHANNEL_NOT_INITIAL);
                }
                else
                {
                    CHIPS_EPPROMReadWriteVolume(WRITE_ALL_CHANNEL_NOT_INITIAL);
                    __bAMPActive |= AMP_TUNE_PER_CHANNEL;
                }
                break;
        }
        __wTemp = MAKEWORD(__bPerVol[__bAudioChannel], __bAudioChannel);
        __bKeyMessage = MSG_VOLUME;
        if (__bAMPActive & AMP_TUNE_PER_CHANNEL)
        {
            // wyc2.80, rename function name to AMP_SetChannelVolume
            if ((bAMPMode == AMP_MODE_KEY_LEFT) || (bAMPMode == AMP_MODE_KEY_RIGHT))
                AMP_SetChannelVolume(__bAudioChannel, TRUE);            
            OSD_OUTPUT_MACRO(MSG_VOLUME, __wTemp, 0xFF);
        }
        else
        {
            // LLY.278, use meaning define for MSG_VOLUME, ex. "CLEAR_MSG"
            OSD_OUTPUT_MACRO(MSG_VOLUME, CLEAR_MSG, NULL);
        }
    }
#endif // #ifdef  SUPPORT_AV_SYSTEM
}
// end ..



//  *********************************************************************
//  Function    :   CHIPS_ChannelSwitch
//  Description :   It will set the desired channel mode
//  Arguments   :   bCh:      The type of channel
//                      CHIPS_LRD : Audio is Stereo (LR) Dolby Surround Compatible
//                      CHIPS_C : Audio is Center
//                      CHIPS_LR : Audio is LR
//                      CHIPS_LCR : Audio is LCR
//                      CHIPS_LRLS : Audio is LRLs

⌨️ 快捷键说明

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