📄 fmtuner_drvfunction.c
字号:
//-----------------------------------------------------------------------------
// (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 + -