📄 startuppage.c
字号:
/****************************************************************
** *
** FILE : StartupPage.c *
** *
** By : Cyb 2007.07.01 *
****************************************************************/
#define STARTUPPAGE_GLOBALS
#include "includes.h"
#include "timetask.h"
#include "systask.h"
#include "message.h"
#include "errcode.h"
#include "errtask.h"
#include "uart_drv.h"
#include "hardware.h"
#include "LedDrv.h"
#include "DisplayTask.h"
#include "alarmer.h"
#include "watchdog.h"
#include "Predictor.h"
#include "PredicTools.h"
#include "StartupPage.h"
#include "GpsRecer.h"
#include "audio.h"
#include "voice.h"
#include "FormPage.h"
#include "WinStack.h"
#include "_keyboard.h"
#include "VolumeControlPage.h"
#include "DriverLogPage.h"
#include "LineChangePage.h"
#define MAX_STATION 50 // 一条线路不超过30个站点
#define STARTUPPAGE_DEBUG 1
static TMR_TSK *UpdateStartupFormTmr,*StartupTmr;
static INT8U Gpsvalidcnt,Gpsinvalidcnt;
static FORMPAGE *StartupPage;
static INT8U Status;
static INT8U i_Load;
static INT8U ICON_GPSVALID[2] ={0x40,0x40};
static INT8U ICON_GPSINVALID[2] ={0x80,0x80};
static INT8U ICON_SKIPUP[2] ={0x0e,0x0e};
static INT8U ICON_SKIPDOWN[2] ={0x38,0x38};
static INT8U ICON_PULLIN[2] ={0x40,0x0f};
static INT8U ICON_PULLOUT[2] ={0x39,0x40};
static INT8U ICON_DOWNLOAD =0x52;
static INT8U STATION_ID[][2] = {0x00,0x3f,
0x00,0x06,
0x00,0x5b,
0x00,0x4f,
0x00,0x66,
0x00,0x6d,
0x00,0x7d,
0x00,0x07,
0x00,0xff,
0x00,0x6f,
0x06,0x3f,
0x06,0x06,
0x06,0x5b,
0x06,0x4f,
0x06,0x66,
0x06,0x6d,
0x06,0x7d,
0x06,0x07,
0x06,0xff,
0x06,0x6f,
0x5b,0x3f,
0x5b,0x06,
0x5b,0x5b,
0x5b,0x4f,
0x5b,0x66,
0x5b,0x6d,
0x5b,0x7d,
0x5b,0x07,
0x5b,0xff,
0x5b,0x6f,
0x4f,0x3f,
0x4f,0x06,
0x4f,0x5b,
0x4f,0x4f,
0x4f,0x66,
0x4f,0x6d,
0x4f,0x7d,
0x4f,0x07,
0x4f,0xff,
0x4f,0x6f,
0x66,0x3f,
0x66,0x06,
0x66,0x5b,
0x66,0x4f,
0x66,0x66,
0x66,0x6d,
0x66,0x7d,
0x66,0x07,
0x66,0xff,
0x66,0x6f
};
static void UpdateStartupFormFunc(void)
{
INT8U index;
INT8U i;
if(GetFormPageDepth() != 0)
{
i_Load = 0;
return;
}
if(IsWorkAuto())
{
Status = STS_WORKAUTO;
index = GetStationPotID();
if(index >=MAX_STATION)
{
return;
}
SendLedDisplay(ICON_GPSVALID,2,0,1);
SendLedDisplay(STATION_ID[index],2,2,3);
}
else
{
Status = GetWorkStauts();
switch(Status)
{
case STS_SKIPUP:
SendLedDisplay(ICON_SKIPUP,2,0,1);
break;
case STS_SKIPDOWN:
SendLedDisplay(ICON_SKIPDOWN,2,0,1);
break;
case STS_PULLIN:
SendLedDisplay(ICON_PULLIN,2,0,1);
break;
case STS_PULLOUT:
SendLedDisplay(ICON_PULLOUT,2,0,1);
break;
default:
SendLedDisplay(ICON_GPSINVALID,2,0,1);
break;
}
if(Status == STS_DOWNLOAD)
{
i = i_Load++ % 4;
SendLedDisplay(&ICON_DOWNLOAD,1,i,i); // 跑马灯式显示
}
else
{
index = GetStationPotID();
if(index >=MAX_STATION)
{
return;
}
SendLedDisplay(STATION_ID[index],2,2,3);
}
}
}
static void StartupPageInitFunc(void)
{
i_Load = 0;
UpdateStartupFormFunc();
UpdateStartupFormTmr = CreateTimer(UpdateStartupFormFunc,0);
StartTmr(UpdateStartupFormTmr,MILTICK,15);
}
static void StartupPageCreateFunc(void)
{
UpdateStartupFormFunc();
}
static void StartupPageHdlKeyFunc(void)
{
INT8U key;
key = GetCurKey();
switch(key)
{
case KEY_1: //礼貌用语1
HdlManualRongji();
break;
case KEY_2: //礼貌用语2
HdlManualRangzuo();
break;
case KEY_3: //礼貌用语3
#if STARTUPPAGE_DEBUG >0
PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n礼貌用语3");
#endif
HdlPlayerAscend();
break;
case KEY_4: //礼貌用语4
#if STARTUPPAGE_DEBUG >0
PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n礼貌用语4");
#endif
break;
case KEY_5: //增大音量
CreateVolumeControlPage();
break;
case KEY_6: //减小音量
CreateVolumeControlPage();
break;
case KEY_8: //上行
SetUpLine();
break;
case KEY_9:
SetDownLine();
break;
case KEY_OK: //快进
HdlSkipUpforStation();
break;
case KEY_0: //快退
HdlSkipDownforStation();
break;
case KEY_IN: //进站
HdlPullInStation();
break;
case KEY_OUT: //出站
HdlPullOutStation();
break;
case KEY_REPEAT: //重拨
HdlManualRepeat();
break;
case KEY_SHIFT: //进入身份录入页面
CreateDriverLogPage();
break;
case KEY_SOUND: //开或关按键音
if(IsKeySound_ON())
{
#if STARTUPPAGE_DEBUG >0
PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n按键音关");
#endif
SwitchKeySound_OFF();
}
else
{
#if STARTUPPAGE_DEBUG >0
PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n按键音开");
#endif
SwitchKeySound_ON();
}
break;
case KEY_LINE: //线路切换页面
CreateLineChangePage();
break;
default:
break;
}
}
static void StartupPageResumeFunc(void)
{
UpdateStartupFormFunc();
}
static void CreateStartupPageForm(void)
{
StartupPage = AllocateFormPage();
StartupPage->initfunc = StartupPageInitFunc;
StartupPage->createfunc = StartupPageCreateFunc;
StartupPage->hdlkeyfunc = StartupPageHdlKeyFunc;
StartupPage->resumefunc = StartupPageResumeFunc;
CreateFormPage();
}
static void StartupFunc(void)
{
INT8U station_id;
if(IsWorkAuto())
{
if(Gpsvalidcnt++ >= 15)
{
Gpsvalidcnt = 0;
StopTmr(StartupTmr);
RemoveTmr(StartupTmr);
station_id = GetStationVoiceID();
SendLedDisplay(ICON_GPSVALID,2,0,1);
PlaySingleAudio(FALSE,TRUE,AD_yidingwei);
PlaySingleAudio(FALSE,TRUE,AD_city);
PlaySingleAudio(FALSE,TRUE,station_id);
}
}
else
{
if((Gpsinvalidcnt++%10)==0)
{
// PlaySingleAudio(FALSE,TRUE,AD_weidingwei);
}
}
}
void ActivateStartupPage(void)
{
InitLed();
InitAudio();
InitKeyBoard();
Gpsvalidcnt = 0;
Gpsinvalidcnt = 0;
StartupTmr = CreateTimer(StartupFunc,0);
StartTmr(StartupTmr,SECOND,1);
CreateStartupPageForm();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -