📄 remote.c
字号:
}
void door_opened_guard(void)
{
static bank1 Timer16Struct Timer35s=0;
frameout_precoss(0xffff);//一直让引擎关闭
switch(OpenStep)
{
case OPEN_REMIND:
//frameout_precoss(0xffff);
flash_trun_signal(120/TIME_BASE,580/TIME_BASE,3);
if(speak_act_precoss(40/TIME_BASE,660/TIME_BASE,3,SHORT))
{
flash_trun_signal(0,0,0);
speak_act_precoss(0,0,0,RESET);
OpenStep=OPEN_DELAY_10S;
Timer35s.Interval=0;
}
break;
case OPEN_DELAY_10S:
if(++Timer35s.Interval>=10000/TIME_BASE)
OpenStep=OPEN_ALARM;
if(InState.SideDoor!=DOOR_OPENED)
Flag.DoorOpenedGuard=0;
break;
case OPEN_ALARM:
flash_trun_signal(500/TIME_BASE,500/TIME_BASE,240);
if(speak_act_precoss(0,0,240000/TIME_BASE/5,LONG))
{
OpenStep=OPEN_STOP;
flash_trun_signal(0,0,0);
speak_act_precoss(0,0,0,RESET);
}
break;
case OPEN_STOP:
Flag.DoorOpenedGuard=0;
break;
default:break;
}
}
#ifdef BOOT_EN
bit open_boot(uchar Interval)
{
static bank1 BootTimer=0;
if(Interval==0)
{
BOOT=0;
BootTimer=0;
}
else
{
if(++BootTimer<=Interval*5)
{
BOOT=1;
return 0;
}
else
{
BootTimer=Interval*5;
BOOT=0;
return 1;
}
}
return 1;
}
#endif
void normal_process(void)
{
static bank1 AutoRestoreStruct AutoRestore=0;
if(Flag.SystemStateChange)
{
RemindState=DOOR_OPEN;
AutoRestore.Flag.Shaked=0;
AutoRestore.Flag.Opened=0;
AutoRestore.Time.Interval=0;
Flag.RememTouch=0;
switch(PreState)
{
case GUARD_SOUND:
door_lock_process(500/TIME_BASE/5,LOCK_OFF);
if(PressUnlock==0)
speak_act_precoss(50/TIME_BASE,200/TIME_BASE,2,SHORT);
if(flash_trun_signal(250/TIME_BASE,250/TIME_BASE,2))
{
Flag.SystemStateChange=0;
flash_trun_signal(0,0,0);
speak_act_precoss(0,0,0,RESET);
if(Jump.Electromotion) door_lock_process(0,0);
}
break;
case GUARD_QUIET:
door_lock_process(500/TIME_BASE/5,LOCK_OFF);
//if(speak_act_precoss(50/TIME_BASE,200/TIME_BASE,2,SHORT));
if(flash_trun_signal(250/TIME_BASE,250/TIME_BASE,2))
{
Flag.SystemStateChange=0;
flash_trun_signal(0,0,0);
speak_act_precoss(0,0,0,RESET);
if(Jump.Electromotion) door_lock_process(0,0);
}
break;
case RUN:
if(PressUnlock>0)
{
door_lock_process(500/TIME_BASE/5,LOCK_OFF);
//if(speak_act_precoss(50/TIME_BASE,200/TIME_BASE,2,SHORT));
if(flash_trun_signal(250/TIME_BASE,250/TIME_BASE,2))
{
Flag.SystemStateChange=0;
flash_trun_signal(0,0,0);
speak_act_precoss(0,0,0,RESET);
if(Jump.Electromotion) door_lock_process(0,0);
}
}
else
{
if(door_lock_process(500/TIME_BASE/5,LOCK_OFF))
{
Flag.SystemStateChange=0;
if(Jump.Electromotion) door_lock_process(0,0);
}
}
break;
default:
Flag.SystemStateChange=0;
break;
}
}
else
{
if(RemoteKey.Flag.Press)
{
RemoteKey.Flag.Press=0;
switch(RemoteKey.Key)
{
case KEY_LOCK:
system_state_change(State,GUARD_SOUND,1);
//break;
return ;
case KEY_QUIET:
system_state_change(State,GUARD_QUIET,1);
//break;
return ;
case KEY_FIND:
system_state_change(State,FIND,1);
//break;
return ;
case KEY_UNLOCK:
if(++PressUnlock<=3)
{
flash_trun_signal(0,0,0);
Flag.SystemStateChange=1;
}
else
PressUnlock=3;
break;
#ifdef BOOT_EN
case KEY_BOOT:
Flag.Boot=1;
open_boot(0);
break;
#endif
default:
break;
}
}
// 进入行驶
#ifdef BOOT_EN
if(Flag.Boot)
{
Flag.Boot=0;
open_boot(500/TIME_BASE/5);
}
#endif
if(InState.Acc)
{
system_state_change(State,RUN,1);
return ;
}
//提醒设置防盗 for remind to shutdown
//if(PreState==RUN)
//remind_shutdown();
if(PreState==RUN)
Flag.FromRemindShutDown=remind_shutdown();
//路边停车
roadside_stop();
//for auto restore
if(!InState.Shake)
AutoRestore.Flag.Shaked=1;
if(InState.SideDoor==DOOR_OPENED)
{
if(AlarmNoub>3) AlarmNoub=3;
if(AlarmNoub>0)
{
AlarmNoub=0;
Flag.RememTouch=1;
alarm_led_long_light(0,0);
}
AutoRestore.Flag.Opened=1;
AlarmGrade=Guard;
}
if((!AutoRestore.Flag.Shaked)&&(!AutoRestore.Flag.Opened))
{
if(PreState==GUARD_QUIET||PreState==GUARD_SOUND)
if(AutoRestore.Time.Interval++>=AUTO_RESTORE_TIME)
{
system_state_change(State,PreState,1);
AutoRestore.Time.Interval=0;
}
}
else AutoRestore.Time.Interval=0;
//记忆触发
if(Flag.RememTouch)
{
speak_act_precoss(50/TIME_BASE,950/TIME_BASE,1,SHORT);
if(alarm_led_long_light(6,1))
{
alarm_led_long_light(0,0);
SIGNAL_LED=0;
AlarmNoub=0;
speak_act_precoss(0,0,0,RESET);
Flag.RememTouch=0;
}
}
}
}
void guard_process(uchar Mode)
{
if(GuardQuiet5s.Interval++>=5000/TIME_BASE)
{
GuardQuiet5s.enable=0;
GuardQuiet5s.Interval=0;
Flag.BeginGuard=1;
}
if(Flag.BeginGuard)
{
if(Flag.DoorOpenedGuard)
door_opened_guard();
else
{
if(!InState.Shake)
{
if(AlarmSharkTimer.Interval==0)
{
SharkFlag.Time=1;
AlarmSharkTimer.enable=1;
}
else if(AlarmSharkTimer.Interval<15000/TIME_BASE)
SharkFlag.Time=2;
else
{
SharkFlag.Time=1;
AlarmSharkTimer.enable=1;
}
AlarmSharkTimer.Interval=0;
if(Mode==QUIET_MODE)
system_state_change(State,ALARM_QUIET,1);
else if(Mode==SOUND_MODE)
system_state_change(State,ALARM_SOUND,1);
}
if(InState.SideDoor==DOOR_OPENED||InState.Acc||InState.Brake)
system_state_change(State,ALARM_DOOR_OPENED,1);
}
}
}
void guard_quiet_process(void)
{
// 5s later into the guard mode
signal_led_alarm(AlarmGrade);
if(!Flag.GuardEngineOFF)
{
if(PreState!=FIND)
{
if(Flag.DoorOpenedGuard)
Flag.GuardEngineOFF=1;
if(frameout_precoss(40))
Flag.GuardEngineOFF=1;
}
else Flag.GuardEngineOFF=1;
}
if(Flag.SystemStateChange)
{
if(PreState!=FIND)
{
if(!Flag.FromRemindShutDown)
door_lock_process(500/TIME_BASE/5,LOCK_ON);
if(flash_trun_signal(500/TIME_BASE,200/TIME_BASE,1))
{
Flag.SystemStateChange=0;
flash_trun_signal(0,0,0);
if(Jump.Electromotion) door_lock_process(0,0);
speak_act_precoss(0,0,0,RESET);
}
GuardQuiet5s.Interval=0;
}
else Flag.SystemStateChange=0;
Flag.BeginGuard=0;
/////////////////////////////////当进入防盗系统的时候 如果门未关好 提醒用户关门////////////////
if(SystemGuardChangeFirstTime)
{
if(InState.SideDoor==DOOR_OPENED)
{
Flag.DoorOpenedGuard=1;
OpenStep=OPEN_REMIND;
}
else
Flag.DoorOpenedGuard=0;
}
SystemGuardChangeFirstTime=0;
AlarmSharkTimer.enable=0;
AlarmSharkTimer.Interval=0;
}
else
{
guard_process(QUIET_MODE);
if(RemoteKey.Flag.Press)
{
RemoteKey.Flag.Press=0;
switch(RemoteKey.Key)
{
case KEY_LOCK:
system_state_change(State,GUARD_SOUND,1);
break;
case KEY_UNLOCK:
ALARM_LED=0;
system_state_change(State,NORMAL,1);
break;
case KEY_FIND:
system_state_change(State,FIND,1);
break;
case KEY_QUIET:
Flag.GuardEngineOFF=0;
frameout_precoss(0);
Flag.SystemStateChange=1;
break;
#ifdef BOOT_EN
case KEY_BOOT:
Flag.Boot=1;
open_boot(0);
break;
#endif
default:break;
}
}
}
}
void guard_sound_process(void)
{
//flash_alarm_led(4,2);
signal_led_alarm(AlarmGrade);
if(!Flag.GuardEngineOFF)
{
if(PreState!=FIND)
{
if(Flag.DoorOpenedGuard)
{
Flag.GuardEngineOFF=1;
}
if(frameout_precoss(40))
Flag.GuardEngineOFF=1;
}
else Flag.GuardEngineOFF=1;
}
if(Flag.SystemStateChange)
{
if(PreState!=FIND)
{
speak_act_precoss(50/TIME_BASE,200/TIME_BASE,1,SHORT);
door_lock_process(500/TIME_BASE/5,LOCK_ON);
if(flash_trun_signal(500/TIME_BASE,200/TIME_BASE,1))
{
Flag.SystemStateChange=0;
speak_act_precoss(0,0,0,RESET);
flash_trun_signal(0,0,0);
if(Jump.Electromotion) door_lock_process(0,0);
}
GuardQuiet5s.enable=1;
GuardQuiet5s.Interval=0;
}
else Flag.SystemStateChange=0;
Flag.BeginGuard=0;
/////////////////////////////////当进入防盗系统的时候 如果门未关好 提醒用户关门////////////////
if(SystemGuardChangeFirstTime)
{
if(InState.SideDoor==DOOR_OPENED)
{
Flag.DoorOpenedGuard=1;
OpenStep=OPEN_REMIND;
}
else Flag.DoorOpenedGuard=0;
}
SystemGuardChangeFirstTime=0;
AlarmSharkTimer.enable=0;
AlarmSharkTimer.Interval=0;
}
else
{
guard_process(SOUND_MODE);
if(RemoteKey.Flag.Press)
{
RemoteKey.Flag.Press=0;
switch(RemoteKey.Key)
{
case KEY_LOCK:
system_state_change(State,GUARD_SOUND,1);
break;
case KEY_UNLOCK:
ALARM_LED=0;
system_state_change(State,NORMAL,1);
break;
case KEY_FIND:
system_state_change(State,FIND,1);
break;
case KEY_QUIET:
system_state_change(State,GUARD_QUIET,1);
break;
default:break;
}
}
}
}
void find_process(void)
{
flash_trun_signal(500/TIME_BASE,500/TIME_BASE,5);
if(speak_act_precoss(0,0,5000/TIME_BASE/5,LONG))
{
speak_act_precoss(0,0,0,RESET);
flash_trun_signal(0,0,0);
system_state_change(State,PreState,0);
}
if(RemoteKey.Flag.Press)
{
RemoteKey.Flag.Press=0;
switch(RemoteKey.Key)
{
case KEY_LOCK:
system_state_change(State,PreState,0);
break;
case KEY_UNLOCK:
system_state_change(State,PreState,0);
break;
case KEY_FIND:
system_state_change(State,PreState,0);
break;
case KEY_QUIET:
system_state_change(State,PreState,0);
default:break;
}
}
}
typedef struct
{
unsigned char Lock:1;
unsigned char Unlock:1;
unsigned char Help:1;
unsigned char Call:1;
unsigned char DoorOpened:1;
unsigned char State:2;
}RunStruct;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -