📄 powerup.c
字号:
/*
******************************************************************
* XIAMEN YAXON NETWORK CO.LTD.
* XINXI BUILDING,HULI,XIAMEN
* (c) Copyright 2002,XIAMEN YAXON NETWORK CO.LTD. ,XIAMEN
* All Rights Reserved
*
* FileName : PowerUp.C
* Programmer(s): WuJingYu
* Description :
******************************************************************
*/
/*
*****************************************************************
* REVISION HISTORY
*
* Date: 2002-11-12
*****************************************************************
*/
#define POWERUP_GLOBALS
#include "includes.h"
#include "TimeTask.h"
#include "Lcd.h"
#include "Tools.H"
#include "stdio.h"
#include "structs.H"
#include "Infield.h"
#include "_Keyboard.h"
#include "systime.h"
#include "uartdrv.h"
#include "Hardware.h"
#include "public.h"
#include "test.h"
#include "zprint.h"
#include "GpsSer.h"
#define DEBUG_CYB 0
/*
********************************************************************************************
注意:按键接收的初始化在本模块中完成;
********************************************************************************************
*/
//#define LINK_CONNECT//定义用来开机侦测链接
#define connectlifetime 30
static INT8U WEEKS[][]={"周 日","周 一","周 二","周 三","周 四","周 五","周 六"};
static INT8U Connceting[] = {"正在连接GPS!"};
static INT8U ConnectSucc[] = {"成功连接GPS!"};
static INT8U ConnectFail[] = {"GPS 连接失败!"};
static GPOUT networkgpout = {2,134,16,24,1,1,2,2,BORDER_NONE,SCROLLBAR_NONE};
static GPOUT hostlinkgpout = {2,30,16,24,1,1,2,2,BORDER_NONE,SCROLLBAR_NONE};
static GPOUT messagegpout = {2,3,16,24,1,1,2,2,BORDER_NONE,SCROLLBAR_NONE};
static GPOUT logogpout = {27,10,64,64,1,1,2,2,BORDER_2D,SCROLLBAR_NONE};
static OUTBOX dateoutbox = {25,100,2,6,2,BORDER_NONE,SCROLLBAR_NONE};
static OUTBOX timeoutbox = {60,100,1,5,3,BORDER_NONE,SCROLLBAR_NONE};
static OUTBOX weekoutbox = {80,100,1,6,2,BORDER_NONE,SCROLLBAR_NONE};
static BEELINE DetachLine = {20,0,20,159,LINE_DASHED};
static TMR_TSK *UpdateMainFormTmr,*IconFlashTmr,*PowerUpTmr,*MonitorConnectTmr;
static PHOTOBOX HostLinkPhoto,NetWorkPhoto,MessagePhoto,LogoPhoto;
static TEXTBOX DateBox,TimeBox,WeekBox;
static INT8U datetext[12],timetext[5];
static FORMPAGE *mainformpage;
static INT8U statecnt;
static INT8U LogedIcon[] = {0x18,0x6E,0x4E,0x8F,0x8F,0x4E,0x6E,0x18};
static INT8U GPSvalidIcon[] = { 0x18,0x76,0x72,0xF1,0xF1,0x72,0x76,0x18};
static INT8U ALLGETIcon[] = {0x18,0x7E,0x7E,0xFF,0xFF,0x7E,0x7E,0x18};
static PHOTOBOX GETIconPhoto;
static GPOUT GETIcongpout = {7,120,8,8,1,1,2,2, BORDER_NONE,SCROLLBAR_NONE};
static INT8U tempcnt = 0;//for NCK
static INT8U _COUNT = 0;
//static INT8U RECOUNT = 0;
static INT8U LogedCount = 0;
//static INT8U ValidCount = 0;
static INT8U Unnormaltime = 0;
static BOOLEAN Unnormal;
static void MonitorConnectFunc(void)
{
SetHostLinkState(OFF);
SetDummyHostLinkState(OFF);
}
static void IconFlashFunc(void)
{
if (GetFormPageDepth() == 0) {
statecnt++;
if (GetHostLinkState() == OFF) {
if (statecnt % 2) {
RefreshPhotoBox(&HostLinkPhoto);
} else {
ClearPhotoBox(&HostLinkPhoto);
}
} else {
ClearPhotoBox(&HostLinkPhoto);
}
if (HaveNotAccessedMessage() == TRUE) {//有未访问信息
if (!(statecnt % 2)) {
RefreshPhotoBox(&MessagePhoto);
} else {
ClearPhotoBox(&MessagePhoto);
}
} else {
ClearPhotoBox(&MessagePhoto);
}
ShowNetWorkIcon();
ShowLogedFlag();
}
}
static void DplySysTime(void)
{
ASCII_DATE AsciiSysDate;
ASCII_TIME AsciiSysTime;
INT8U week;
ClaimForSysTime();
GetAsciiDate(&AsciiSysDate);
GetAsciiTime(&AsciiSysTime);
week = GetWeekDay();
memset(datetext,' ',sizeof(datetext));
memcpy(&datetext[0],AsciiSysDate.ac_year,4);//y 1
memcpy(&datetext[6],AsciiSysDate.ac_month,2);
datetext[8] = '/';
memcpy(&datetext[9],AsciiSysDate.ac_day,2);
memcpy(timetext,AsciiSysTime.ac_hour,2);
timetext[2] = ':';
memcpy(&timetext[3],AsciiSysTime.ac_minute,2);
/*
Printu("ac_minute\n");
Printu("%x ",timetext[3]);
Printu("%x ",timetext[4]);
*/
AddTextBoxText(&DateBox,datetext,sizeof(datetext));
AddTextBoxText(&TimeBox,timetext,sizeof(timetext));
AddTextBoxText(&WeekBox,WEEKS[week],5);
}
static void UpdateDplyTimeFunc(void)//刷新待机界面
{
DplySysTime();
if (GetFormPageDepth() == 0) {
RefreshTextBox(&DateBox);
RefreshTextBox(&TimeBox);
RefreshTextBox(&WeekBox);
RefreshPhotoBox(&LogoPhoto);
}
}
static void MainFormInitFunc(void)
{
HostLinkPhoto.gpout = &hostlinkgpout;
HostLinkPhoto.gpdata= HostLinkIcon;
NetWorkPhoto.gpout = &networkgpout;
NetWorkPhoto.gpdata = NetWorkIcon[4];
MessagePhoto.gpout = &messagegpout;
MessagePhoto.gpdata = MessageIcon;
GETIconPhoto.gpout = &GETIcongpout;
LogoPhoto.gpout = &logogpout;
LogoPhoto.gpdata = LogoIcon;
DateBox.box = &dateoutbox;
TimeBox.box = &timeoutbox;
WeekBox.box = &weekoutbox;
DplySysTime();
RemoveTmr(PowerUpTmr);
UpdateMainFormTmr = CreateTimer(UpdateDplyTimeFunc,0);
IconFlashTmr = CreateTimer(IconFlashFunc,0);
MonitorConnectTmr = CreateTimer(MonitorConnectFunc,0);
StartTmr(UpdateMainFormTmr,SECOND,5);
StartTmr(IconFlashTmr,SECOND,1);
StartTmr(MonitorConnectTmr,SECOND,32);
tempcnt = 0;
}
/*static INT8U TestFlame[] = {0x01,0x42,0x03,0x05,0x12,0x06,0x20,0x19};
static void testfunc(void)//broadcast
{
OSQPost(LcdTaskQ,0x83,(INT32U)TestFlame,sizeof(TestFlame));//for test
}
static INT8U TestFlame1[] = {0x7F,0x40,0x03,0x05,0x12,0x06,0x21,0x19};
static void testfunc1(void)//attemper
{
OSQPost(LcdTaskQ,0x87,(INT32U)TestFlame1,sizeof(TestFlame1));//for test
}
static INT8U TestFlame2[] = {0x0e,0xc6,0x1a,0x1b,0x1c,0x1d,0x02,0x33,0x05,0x21,0xbc,0xb8,0xb0,0xd9};
static void testfunc2(void)//attemper
{
OSQPost(LcdTaskQ,0x70,(INT32U)TestFlame2,sizeof(TestFlame2));//for test
}
static INT8U TestFlame[] = {0x0d,0x4b,0x11,0x12,0x13,0x14,0x00,0x33,0x04,0x31,0x32,0x33,0x34};
static void testfunc(void)//broadcast
{
OSQPost(LcdTaskQ,0x70,(INT32U)TestFlame,sizeof(TestFlame));//for test
}*/
static void MainFormHdlKeyFunc(void)
{
INT8U key,firstkey;
key = GetCurLcdKey();
if (key == KEY_XING) {
firstkey = '*';
} else if (key == KEY_JING) {
firstkey = '#';
} else {
firstkey = key + '0';
}
switch (key) {
case KEY_ACK:
CreateMainMenu();
break;
case KEY_REDAIL:
CreateSpecifiedPubPage(RECORDPAGE);
break;
case KEY_CLR:
CreateSpecifiedPubPage(TELBOOKPAGE);
break;
case KEY_UP:
CreateSpecifiedPubPage(OPERATIONPAGE); // cybero 06.07.25
break;
case KEY_DOWN:
//CreateSpecifiedPubPage(EVENTPAGE);
//testfunc2();
CreateSoftDialPage();
break;
/*case KEY_NCK:
testfunc2();
break;*/
// case KEY_MEDICAL:
// testaddtel();
// break;
case KEY_TRAFFIC:
DailAtemptel();
break;
case KEY_MEDICAL:
ActivateEuninstall();
break;
case KEY_BORTHER:
SendHelp_2(key-0x14);
break;
default:
if (IsInRange(key,KEY_0,KEY_JING)) {
InitDigitalInputPage(&firstkey,1,DialInDigitalInputPage);
CreateDigitalInputPage();
}
break;
}
}
static void MainFormCreateFunc(void)
{
ShowHostLinkIcon();
ShowNetWorkIcon();
ShowMessageIcon();
ShowLogedFlag();
RefreshPhotoBox(&LogoPhoto);
}
static void MainFormSusPendFunc(void)
{
StopTmr(IconFlashTmr);
// StopTmr(UpdateMainFormTmr);
}
static void MainFormResumeFunc(void)
{
StartTmr(IconFlashTmr,SECOND,1);
UpdateDplyTimeFunc();
LcdUpdate_dots(20,0,1,160);
tempcnt = 0;
}
void PowerOffDestroy(void)
{
StopTmr(UpdateMainFormTmr);
StopTmr(IconFlashTmr);
StopTmr(MonitorConnectTmr);
}
void PowerupFunc(void)
{
SetHostLinkState(OFF);
//ClaimForSysTime();
StartTmr(UpdateMainFormTmr,SECOND,5);
StartTmr(MonitorConnectTmr,SECOND,32);
MainFormResumeFunc();
ShortMsgRing(SUCCESSTYPE);
}
void CreateMainForm(void)
{
mainformpage = AllocateFormPage();
AddControlToFormPage(mainformpage,CTL_TEXTBOX, (void*)&DateBox);
AddControlToFormPage(mainformpage,CTL_TEXTBOX, (void*)&TimeBox);
AddControlToFormPage(mainformpage,CTL_TEXTBOX, (void*)&WeekBox);
AddControlToFormPage(mainformpage,CTL_BEELINE, (void*)&DetachLine);
mainformpage->initfunc = MainFormInitFunc;
mainformpage->createfunc = MainFormCreateFunc;
mainformpage->hdlkeyfunc = MainFormHdlKeyFunc;
mainformpage->resumefunc = MainFormResumeFunc;
CreateFormPage();
InitKeyBoard();
}
void RefreshMainForm(void)
{
UpdateDplyTimeFunc();
}
BOOLEAN HaveNotAccessedMessage(void)
{
if (HaveNotAccessedUniMsg(BROADMSG) || HaveNotAccessedUniMsg(ATMPMSG)
|| HaveNotAccessedUniMsg(RECVSMS) || HaveNotAccessedTelRecord(HANGUPPHONE)) {
return TRUE;
} else return FALSE;
}
void ShowHostLinkIcon(void)
{
if (GetFormPageDepth() == 0) {
if (GetHostLinkState() == OFF) {
RefreshPhotoBox(&HostLinkPhoto);
} else {
ClearPhotoBox(&HostLinkPhoto);
}
}
}
void ShowNetWorkIcon(void)//信号强度图标
{
if (GetFormPageDepth() == 0) {
if (GetGsmNetIntension() == 0) {
ClearPhotoBox(&NetWorkPhoto);
} else if(GetGsmNetIntension() <= 5) {
NetWorkPhoto.gpdata = NetWorkIcon[GetGsmNetIntension()-1];
RefreshPhotoBox(&NetWorkPhoto);
} else {
ClearPhotoBox(&HostLinkPhoto);
}
}
}
void ShowMessageIcon(void)//显示"新事件"图标
{
if (GetFormPageDepth() == 0) {
if (HaveNotAccessedMessage() == TRUE) {
RefreshPhotoBox(&MessagePhoto);
} else {
ClearPhotoBox(&MessagePhoto);
}
}
}
void ShowLogedFlag(void)
{
if (GetFormPageDepth() == 0)
{
if(TCPDrvLoged() && GpsDataValid())
{
GETIconPhoto.gpdata = ALLGETIcon;
RefreshPhotoBox(&GETIconPhoto);
}
else if ( TCPDrvLoged())
{
GETIconPhoto.gpdata = LogedIcon;
RefreshPhotoBox(&GETIconPhoto);
}
else if ( GpsDataValid())
{
GETIconPhoto.gpdata = GPSvalidIcon;
RefreshPhotoBox(&GETIconPhoto);
}
else
{
ClearPhotoBox(&GETIconPhoto);
}
}
if( !TCPDrvLoged())
{
Unnormal = TRUE;
}
else
{
Unnormal = FALSE;
}
if( TCPDrvLoged())
{
if ( Unnormal == TRUE)
{
LogedCount++;
}
}
if (TCPDrvLoged() && GpsDataValid())
{
_COUNT++;
Unnormaltime =0;
if ( _COUNT == 255) _COUNT =2;
if ( _COUNT == 1)
{
StartupMonitor();
}
}
if ( !TCPDrvLoged() )
{
Unnormaltime++;
if (Unnormaltime>180)
{
ResetCPU();
}
if ( LogedCount >10 )
{
ResetCPU();
}
}
}
void ActivatePowerUpPage(void)//开机任务
{
InitLcd();
CreateMainForm();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -