📄 power.c
字号:
/*********************************************************
Project: ST FST(TDA7540)
File name: power.c
Description:
Write/Modify: Perry Liang
Time: 2006-1-24- 15:35:12
*********************************************************/
#include "public.h"
/*********************************************
Function: AccCheck
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:39:37
*********************************************/
void AccCheck(void)
{
switch (AccState)
{
case ACC_OFF:
if (PinIn_ACC)
{
AccDelay = 100; // 1s
AccState = ACC_ONTEST;
}
break;
case ACC_ONTEST:
if (!PinIn_ACC)
{
AccState = ACC_OFF;
}
else
{
if (AccDelay != 0)break;
AccState = ACC_ON;
System.AccMode=ACCMODE_ACCONREQ;
}
break;
case ACC_ON:
if (!PinIn_ACC)
{
AccDelay = 5; //50ms
AccState = ACC_OFFTEST;
}
break;
case ACC_OFFTEST:
if (PinIn_ACC)
{
AccState = ACC_ON;
}
else
{
if (AccDelay != 0)break;
AccState = ACC_OFF;
System.AccMode=ACCMODE_ACCOFFREQ;
}
break;
}
}
/*********************************************
Function: AccMain
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:39:39
*********************************************/
void AccMain(void)
{
AccProc();
//AccDisp();
}
void AccDisp(void)
{
/*if((System.AccMode==ACCMODE_ACCONINIT||System.AccMode==ACCMODE_ACCOFFINIT)&&AccWaitTimer==0)
{
if(AniCounter<1&&System.PowerMode==POWERMODE_POWEROFF)
{
Animation(ANIMATION_RUN);
Clock_display=0;
}
else
{
Animation(ANIMATION_STOP);
Clock_display=1;
}
}*/
}
void AccProc(void)
{
unsigned char i;
switch(System.AccMode)
{
case ACCMODE_ACCON:
break;
case ACCMODE_ACCONREQ:
//Wait1ms(100);
//ADCCSR|=y00100000; /* A/D Convert Enable */
//CDPowerOn();
//Animation(ANIMATION_START, " WELCOME ",1);
AccWaitTimer=8;
System.AccMode=ACCMODE_ACCONINIT;
break;
case ACCMODE_ACCONINIT:
if(AccWaitTimer>0)break;
//if(AniCounter==0&&F_DispAnimation==1)break;
//else Animation(ANIMATION_STOP);
if(System.PowerMode==POWERMODE_POWERON)
{
Enable_RDS_Int();
AudioCalc(AUDIO_ALL_VAL);
AudioSend(AUDIO_AREA_ALL);
//ChangeFWorkmode(System.FWorkMode.Save);
//AudioMute(HARDOFF); 2009-1-2
//AmpSend(0x6,0x10);
//ResetIconBuffer();
}
else
{
//AudioMute(HARDON); 2009-1-2
// AmpSend(0,0);
}
AccWaitTimer=5;
System.AccMode=ACCMODE_ACCONWAIT;
break;
case ACCMODE_ACCONWAIT:
if(AccWaitTimer>0)break;
System.AccMode=ACCMODE_ACCON;
break;
case ACCMODE_ACCOFF:
#if 0
if(PinIn_ACC) /* ACC ON */
{
WakeUpTimer=50;
}
#endif
break;
case ACCMODE_ACCOFFREQ:
if (F_MuteKey)
{
F_MuteKey=0;
AudioMute(SOFTOFF);
}
//CDPowerOff();
Disable_RDS_Int();
if(System.PowerMode==POWERMODE_POWERON)
{
System.FWorkMode.Save=System.FWorkMode.Current;
//ChangeFWorkmode(WORKMODE_STANDBY);
//BackupIconBuffer();
}
AudioMute(HARDON);
// AmpSend(0,0);
//ADCCSR&=y11011111; //A/D Convert Disable */
//Animation(ANIMATION_START, " SEE YOU ",1);
System.AccMode=ACCMODE_ACCOFFINIT;
AccWaitTimer=10;
break;
case ACCMODE_ACCOFFINIT:
if(AccWaitTimer>0)break;
//if(AniCounter==0&&F_DispAnimation==1)break;
//else Animation(ANIMATION_STOP);
//Pin_LCDINH=0;
//Pin_POWER=0;
AccWaitTimer=2;
System.AccMode=ACCMODE_ACCOFFWAIT;
break;
case ACCMODE_ACCOFFWAIT:
if(AccWaitTimer>0)break;
System.AccMode=ACCMODE_ACCOFF;
break;
}
}
/*********************************************
Function: PowerMain
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:39:41
*********************************************/
void PowerMain(void)
{
PowerProc();
}
#if 0
void PowerDisp(void)
{
#ifdef D_ADD_EXT
switch(System.PowerMode){
case POWERMODE_POWERONREQ:
break;
case POWERMODE_POWEROFFREQ:
break;
}
#endif
}
#endif
#if 0
void AmpTDA7564Proc(unsigned char on)
{
if(on)
{
db0 |= DIAGNOSTIC_ENABLE;
db1 |= STANDBY_ON;
AmpSend(db0,db1);
Wait1ms(600);
db0 |= (MUTE_FRONT_CHANNEL|MUTE_REAR_CHANNEL);
AmpSend(db0,db1);
//Wait1ms(400);
//AmpSend(0xff,0xff);
debug("amp on");
}else{
db0 &= (UNMUTE_FRONT_CHANNEL)|(UNMUTE_REAR_CHANNEL);
AmpSend(db0,db1);
Wait1ms(20);
db0 &= DIAGNOSTIC_DISABLE;
db1 &= STANDBY_OFF;
AmpSend(db0,db1);
debug("amp off");
}
}
#endif
void PowerProc(void)
{
switch(System.PowerMode)
{
case POWERMODE_POWERON:
//debug("POWER ON");
break;
case POWERMODE_POWERONREQ:
debug("POWER ON REQ");
//Wait10us(10);
Enable_RDS_Int();
AudioCalc(AUDIO_ALL_VAL);
AudioSend(AUDIO_AREA_ALL);
//debug_val("POWER ON MODE: ",System.FWorkMode.Current);
//ChangeFWorkmode(System.FWorkMode.Save);
//ResetIconBuffer();
//Animation(ANIMATION_STOP);
//accordo_initial();
PowerWaitTimer=15;
//AudioMute(SOFTOFF);
#ifdef SINO_MOS
//db0 = 0;
//db1 = 0;
//AmpSend(amp_byte1_init,amp_byte2_init);
// AmpTDA7564Proc(ON);
#endif
System.PowerMode=POWERMODE_POWERONWAIT;
break;
case POWERMODE_POWERONWAIT:
if(PowerWaitTimer>0)break;
debug("POWER ON WAIT");
//AudioMute(HARDOFF);
System.PowerMode=POWERMODE_POWERON;
break;
case POWERMODE_POWEROFF:
//debug("POWER OFF");
break;
case POWERMODE_POWEROFFREQ:
if (F_MuteKey)
{
//debug("now is mute");
F_MuteKey=0;
AudioMute(SOFTOFF);
}
//PrintLine("POW OFF");
debug("POWER OFF REQ");
Disable_RDS_Int();
//Animation(ANIMATION_STOP);
if(System.FWorkMode.Current !=WORKMODE_STANDBY)
{
System.FWorkMode.Save=System.FWorkMode.Current;
//ChangeFWorkmode(WORKMODE_STANDBY);
}
//AudioMute(SOFTON);
#ifdef SINO_MOS
// AmpSend(0,0);
// AmpTDA7564Proc(OFF);
#endif
//BackupIconBuffer();
System.PowerMode=POWERMODE_POWEROFFWAIT;
PowerWaitTimer=15;
break;
case POWERMODE_POWEROFFWAIT:
if(PowerWaitTimer>0)break;
debug("POWER OFF WAIT");
System.PowerMode=POWERMODE_POWEROFF;
break;
}
}
/*********************************************
Function: PowerOff
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:39:43
*********************************************/
void PowerOff (void)
{
System.PowerMode=POWERMODE_POWEROFFREQ;
AmpMode = AMPMODE_OFFREQ;
//AmpReq(AMPMODE_OFFREQ);
}
/*********************************************
Function: PowerOn
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:39:46
*********************************************/
void PowerOn (void)
{
System.PowerMode=POWERMODE_POWERONREQ;
AmpMode = AMPMODE_ONREQ;
//AmpReq(AMPMODE_ONREQ);
}
/*********************************************
Function: PowerInit
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:16
*********************************************/
void PowerInit(void)
{
/***************ACC and POWER Must be set INPUT and init value */
PD_ACC=0;
PCR1_ACC=1;
PCR2_ACC=0;
PD_DVDPOWER = 1;
PCR1_DVDPOWER = 1;
PCR2_DVDPOWER = 0;
PIN_DVDPOWER = 1;
PD_ANTPOWER = 1;
PCR1_ANTPOWER = 1;
PCR2_ANTPOWER = 0;
PIN_ANTPOWER = 0;
PD_CAMERAPOWER = 1;
PCR1_CAMERAPOWER = 1;
PCR2_CAMERAPOWER = 0;
PIN_CAMERAPOWER = 1;
PD_AMPCTR = 1;
PCR1_AMPCTR = 1;
PCR2_AMPCTR = 0;
PIN_AMPCTR = 1;
PD_LIGHTDET = 0;
PCR1_LIGHTDET = 1;
PCR2_LIGHTDET = 0;
PD_BREAKDET = 0;
PCR1_BREAKDET = 1;
PCR2_BREAKDET = 0;
PD_POWER = 1;
PCR1_POWER = 1;
PCR2_POWER = 0;
Pin_POWER = 0;
AccState = ACC_OFF;
System.PowerMode=POWERMODE_POWEROFFREQ;
System.AccMode=ACCMODE_ACCOFF;
}
/*********************************************
Function: PowerTimer10ms
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:18
*********************************************/
void PowerTimer10ms(void)
{
if(AccDelay>0)AccDelay--;
if(AccWaitTimer>0)AccWaitTimer--;
if(PowerWaitTimer>0)PowerWaitTimer--;
}
/*********************************************
Function: PowerTimer1s
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:20
*********************************************/
void PowerTimer1s(void)
{
}
void ACCTimer100ms(void)
{
if(WakeUpTimer>0)WakeUpTimer--;
}
/*********************************************************
File End
*********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -