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

📄 fmtuner_drvfunction.c

📁 这是一款聚电视和收音为一体的微处理器 C++ 源代码,成果奉献,供广大的底层软件开发者学习和参考
💻 C
📖 第 1 页 / 共 3 页
字号:
//-----------------------------------------------------------------------------
// (C) Copyright 2003 Philips Semiconductors, All rights reserved
//
// This source code and any compilation or derivative thereof is the sole
// property of Philips Corporation and is provided pursuant to a Software
// License Agreement.  This code is the proprietary information of Philips
// Corporation and is confidential in nature.  Its use and dissemination by
// any party other than Philips Corporation is strictly limited by the
// confidential information provisions of the Agreement referenced above.
//-----------------------------------------------------------------------------
// FILE NAME:    fmTuner_Key.c
//
// VERSION:      <1.00.00.0000>
//
// DESCRIPTION:  This module handles the keyboard event process
//               This virsion has no local variables, using global variables for key
//               process,pointer structure for function of key process  is not modified,
//               return value is replaced with fuzhi yuju.
//
// DOCUMENT REF: SZLAB/PRS0001 SZLAB/PRS0003
// NOTES:        <File notes>
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// Standard include files:
//-----------------------------------------------------------------------------
//
#include "common.h"
#include "cmd_glb.h"
#include "keyb_glb.h"
#include "global.h"
#include "PSA_API.h"

//-----------------------------------------------------------------------------
// Project include files:
//-----------------------------------------------------------------------------
//
#include "fmTuner.h"
#include "fmI2cmaster.h"
#include "fmTuner_DrvFunction.h"
#include "fmDisplay.h"
#include "fmTuner_GPIO.h"
#include "fmTuner_PresetStore.h"
//-----------------------------------------------------------------------------
// Types and defines:
//-----------------------------------------------------------------------------
//
#define cTIME_SLOT_1MS  10000

//declarations for internal functions
static void fmTuner_SendSequentialByte(U8* pkBuffer,U32 kSize);
static void FetchCommandData(void);
static U32 GetPllFromFrequency(U16 kFrequencyWanted);
static U8  SaveFrequencyStep;
U16 fmTuner_GetStepSize(void);
U16 fmTuner_GetMinimumFrequency(void);
U16 fmTuner_GetMaxFrequency(void);

//-----------------------------------------------------------------------------
// Global data:
//-----------------------------------------------------------------------------
U8 gfmTuner_I2C_BufferRead[5];
U8 gfmTuner_I2C_BufferSend[5];
fmTuner_MonoStereo_e          gfmTuner_eMonoStereo;
fmTuner_MonoStereo_e          gfmTuner_eStereoStatus;
fmTuner_HighLowInjection_e    gfmTuner_eHighLowInjection;
fmTuner_SearchLevel_e         gfmTuner_eSearchLevel;
U8 gfmTuner_u8SearchBusy;
U8     gfmTuner_u8InTune;
U8  gfmTuner_u8AstSearchBusy;
U8  gfmTuner_u8SearchWrapAround;
U8  gfmTuner_u8SaveBusy;
U8  gfmTuner_u8TimerHalfSec;
U8  gfmTuner_u8TimeOutFunctionTimer;
U8  gfmTuner_u8BackGround;
U8  gfmTuner_u8WriteFlash;

U16 gfmTuner_u16TunerFrequency=cFM_TUNER_FREQUENCY_START;
U16 gfmTuner_u32FrequencyRemainder=0;

fmTuner_TuningDirection_e gfmTuner_eSearchDirection; 




static U8  gfmTuner_u8SlectChannel=0;


//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_GetMonoStereoStatus  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
static fmTuner_MonoStereo_e  fmTuner_GetMonoStereoStatus(void)
{
    if(gfmTuner_I2C_BufferRead[TUNER_STEREO_LOCATION]&TUNER_STEREO_MASK)
    {
        return fmTuner_MonoStereo_Stereo;    	
    }
    else
    {
    	return fmTuner_MonoStereo_Mono;
    }

}
//-----------------------------------------------------------------------------
// FUNCTION: fmTuner_DisplayRefresh     
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_DisplayRefresh(void)
{
    fmDisplay_RadioFrequency(gfmTuner_u16TunerFrequency);
    fmDisplay_RadioPresetIndicator(gfmTuner_u8ManualPreset);
    fmTuner_PresetDetect();
    
}
//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_GlobalVariablesInitialize      
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_GlobalVariablesInitialize(void)
{
   gfmTuner_u8ManualPreset=cFM_TUNER_MANUAL;
   gfmTuner_u8PresetIndex=0;
   gfmTuner_u8PresetFirst=0;
   gfmTuner_eMonoStereo=fmTuner_MonoStereo_Stereo;
   gfmTuner_eStereoStatus=fmTuner_MonoStereo_Mono;
   gfmTuner_eHighLowInjection=fmTuner_HighLowInjection_High;
   gfmTuner_eSearchLevel=fmTuner_SearchLevel_1;
   gfmTuner_u8SearchBusy=FALSE;
   gfmTuner_u8InTune=FALSE;
   gfmTuner_u8AstSearchBusy=FALSE;
   gfmTuner_u8SaveBusy=FALSE;
   gfmTuner_u8TimerHalfSec=0;
   gfmTuner_u8TimeOutFunctionTimer=0;
   gfmTuner_u8BackGround=FALSE;
   gfmTuner_u8WriteFlash=FALSE;
}
//-----------------------------------------------------------------------------
// FUNCTION:      
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// FUNCTION:  fmTuner_InitiateSaveHandler  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_InitiateSaveHandler(void)
{
    gfmTuner_u8SaveBusy=TRUE;
    SaveFrequencyStep=1;
    gfmTuner_u8TimeOutFunctionTimer=150;
    
}
//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_ExitSaveHandler  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_ExitSaveHandler(void)
{
     gfmTuner_u8SaveBusy=FALSE;
     SaveFrequencyStep=0;
     fmDisplay_RadioPutChannelNumber(0,0);
     fmTuner_PresetDetect();
}
//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_PresetDetect  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_PresetDetect(void)
{
    U8    PresetNumber; 
    PresetNumber=fmTuner_IsInPresetChannel(gfmTuner_u16TunerFrequency);
    if(PresetNumber)
    {
        fmDisplay_RadioPutChannelNumber(PresetNumber--,1);
        gfmTuner_u8PresetIndex=PresetNumber;
        gfmTuner_u8PresetFirst=TRUE;
    }

}
//-----------------------------------------------------------------------------
// FUNCTION:  fmTuner_SaveHandler  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_SaveHandler(U32 Key)
{
    if(Key==Keyb_Code_Play)
    {
        //exit this handler    
        gfmTuner_u8TimeOutFunctionTimer=1;
    }
    else
    {
        
        switch(SaveFrequencyStep)
        {
           
            case 2:
                 if(Key==Keyb_Code_Eq)
                 {
                      if(gfmTuner_u8SlectChannel<cFM_TUNER_PRESET_MAX)
                      {
                          gfmTuner_pPointer->PreSetChannel[gfmTuner_u8SlectChannel].PresetFrequency=gfmTuner_u16TunerFrequency;
                          gfmTuner_pPointer->PreSetChannel[gfmTuner_u8SlectChannel].DisableEnable=TRUE;
                          gfmTuner_u8PresetIndex=gfmTuner_u8SlectChannel;
                      }
                     
                     gfmTuner_u8TimeOutFunctionTimer=1;
                     SaveFrequencyStep=0;
                     gfmTuner_u8WriteFlash=TRUE;
                     
                 }
            case 1:
                   if(Key==Keyb_Code_Next)
                   {
                       gfmTuner_u8SlectChannel++;
                       if(gfmTuner_u8SlectChannel>=cFM_TUNER_PRESET_MAX)
                       {
                           gfmTuner_u8SlectChannel=0;
                       }
                       SaveFrequencyStep=2;
                   }
                   else if(Key==Keyb_Code_Prev)
                   {
                       if(gfmTuner_u8SlectChannel)
                       {
                           gfmTuner_u8SlectChannel--;
                       }
                       else
                       {
                           gfmTuner_u8SlectChannel=cFM_TUNER_PRESET_MAX-1;
                       }
                      
                       
                      
                       SaveFrequencyStep=2;
                   }
                   
                   
            break;
            default:
            break;
        }   
    }
    
    
}

//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_FlashChannelNumber  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_FlashChannelNumber(void)
{
    U8 True;
    True=FALSE;    
    if(gfmTuner_u8TimerHalfSec>=8)
    {
        True=TRUE;
    }
    
    fmDisplay_RadioPutChannelNumber((U8)(gfmTuner_u8SlectChannel+1),True);
}
//-----------------------------------------------------------------------------
// FUNCTION:  fmTuner_StereoMonoDisplay  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_StereoMonoDisplay(void)
{
    fmTuner_MonoStereo_e temp;
    temp=fmTuner_GetMonoStereoStatus();
    if(temp!=gfmTuner_eStereoStatus)
    {
        fmDisplay_RadioStereo(temp==fmTuner_MonoStereo_Stereo);
                
    }
    gfmTuner_eStereoStatus=temp;		
}
//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_ToggleStereoMono
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_ToggleStereoMono(void)
{
    gfmTuner_eMonoStereo=(fmTuner_MonoStereo_e)(!gfmTuner_eMonoStereo);
    fmTuner_TuneToFrequecy(gfmTuner_u16TunerFrequency);
    fmTuner_OsGenernalDelay(200);
    fmTuner_MuteDemuteTuner(FALSE);
}


//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_CancelAstSearch  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_CancelAstSearch(void)
{
    fmTuner_TuneToFrequecy(gfmTuner_u16TunerFrequency);
    fmTuner_OsGenernalDelay(5);	
    fmDisplay_RadioFrequency(gfmTuner_u16TunerFrequency);
    gfmTuner_u8AstSearchBusy=FALSE;
    gfmTuner_u8InTune=TRUE;
    
     
}
//-----------------------------------------------------------------------------
// FUNCTION:    fmTuner_CheckAstSearch  
//
// DESCRIPTION: 
//
// RETURN:      none
//
// NOTES:       <Function notes - pre/post state, side effects, reentrancy>
//-----------------------------------------------------------------------------
void fmTuner_CheckAstSearch(void)
{
    if(gfmTuner_u8SearchWrapAround==TRUE)
    {
        fmTuner_CancelAstSearch();

⌨️ 快捷键说明

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