255 lines
10 KiB
C
255 lines
10 KiB
C
![]() |
#include "userapp.h"
|
|||
|
#include <string.h>
|
|||
|
#include <stdlib.h>
|
|||
|
|
|||
|
/********************************************************************************
|
|||
|
* @file gateapp.c
|
|||
|
* @author <EFBFBD>̳ϿƼ<EFBFBD> Mr.Wang
|
|||
|
* @version V1.0.0
|
|||
|
* @date 11-Dec-2018
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SmartGateӦ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>װ
|
|||
|
******************************************************************************
|
|||
|
* @attention
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>жԳ<EFBFBD>USER<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>gateapp<EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
|
|||
|
|
|||
|
/*********Ӧ<>ò<EFBFBD><C3B2>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>*******************************************************/
|
|||
|
#include "usart.h" //printf
|
|||
|
#include "ec20module.h"
|
|||
|
#include "ec20net.h"
|
|||
|
#include "ec20tcp.h"
|
|||
|
#include "ec20http.h" //RunResult Send_Post( POSTP_s *psHttpP, char* postBody )
|
|||
|
#include "key.h"
|
|||
|
#include "sysport.h"
|
|||
|
#include "malloc.h"
|
|||
|
#include "cjson.h"
|
|||
|
#include "rtc.h"
|
|||
|
#include "beep.h"
|
|||
|
#include "led.h"
|
|||
|
#include "logflash.h"
|
|||
|
#include "syslib.h"
|
|||
|
#include "user_oled.h"
|
|||
|
#include "user_tcp.h"
|
|||
|
#include "user_http.h"
|
|||
|
#include "usercmd.h"
|
|||
|
#include "logflash.h"
|
|||
|
#include "io.h"
|
|||
|
#include "pvd.h"
|
|||
|
#include "oled.h"
|
|||
|
#include "stm32Temp.h"
|
|||
|
#include "user_key.h"
|
|||
|
/**********************************************************************************/
|
|||
|
|
|||
|
/**********************************************************************************
|
|||
|
*<EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>õij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
**********************************************************************************/
|
|||
|
|
|||
|
|
|||
|
/**********************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ⲿʹ<EFBFBD>õij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
***********************************************************************************/
|
|||
|
Application gateApp ; //gateApp<70><70><EFBFBD><EFBFBD>Ӧ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
|
|||
|
/*Ӧ<>ò㻺<C3B2><E3BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
EventGroupHandle_t netEventHandler ; //<2F>¼<EFBFBD><C2BC><EFBFBD>־<EFBFBD>飨<EFBFBD><E9A3A8>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
EventGroupHandle_t osSafeEventHandler ; //<2F>¼<EFBFBD><C2BC><EFBFBD>־<EFBFBD>飨<EFBFBD><E9A3A8>־λOSÿ<53><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SemaphoreHandle_t ec20MutexSemaphore; //<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EC20<32><30>Դ<EFBFBD><D4B4>ռ<EFBFBD><D5BC><EFBFBD>ͷţ<CDB7>
|
|||
|
char lastOccupyEc20[30] = {0} ; //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>¼<EFBFBD><C2BC>һ<EFBFBD><D2BB>ռ<EFBFBD><D5BC>EC20<32><30>Դ<EFBFBD><D4B4>__FILE__, __LINE__
|
|||
|
char lastReleseEc20[30] = {0} ; //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>¼<EFBFBD><C2BC>һ<EFBFBD><D2BB><EFBFBD>ͷ<EFBFBD>EC20<32><30>Դ<EFBFBD><D4B4>__FILE__, __LINE__
|
|||
|
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void Board_Init(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
void Board_Init(void)
|
|||
|
{
|
|||
|
SysTick_Init() ; //ϵͳ<CFB5>δ<EFBFBD><CEB4><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> 1ms<6D>ж<EFBFBD>һ<EFBFBD><D2BB> <20>ж<EFBFBD><D0B6>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD><CEB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LogFlash_Init() ; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FLASH<53>ܴ洢<DCB4><E6B4A2>LOG
|
|||
|
MyMenInit(SRAMIN) ; //<2F><>̬<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
RTC_Init(INT_RANK_15) ; //ʵʱʱ<CAB1>ӳ<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
PrintfDeviceInfo() ; //UART_DEBUG<55><47><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>Ϣ
|
|||
|
Rtc_RegHookCallback(RTC_IT_ALR, Rtc_Alr_Callback) ; //ע<><D7A2>RTC<54><43><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UserKeyInit() ; //<2F><>ʼ<EFBFBD><CABC>KEY<45><59><EFBFBD><EFBFBD>
|
|||
|
Led_Init() ; //<2F><>ʼ<EFBFBD><CABC>LED
|
|||
|
Beep_Init() ; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
T_Adc_Init() ; //<2F><>ʼ<EFBFBD><CABC>ADC<44><43><EFBFBD><EFBFBD>MCU<43>ڲ<EFBFBD><DAB2>¶ȼ<C2B6><C8BC><EFBFBD>
|
|||
|
OLED_Init() ; //OLED<45><44>ʼ<EFBFBD><CABC>
|
|||
|
RS232Init(115200) ; //RS232<33><32>ʼ<EFBFBD><CABC>
|
|||
|
RS485Init(115200) ; //RS485<38><35>ʼ<EFBFBD><CABC>
|
|||
|
//Pvd_Init( EXTI_Trigger_Rising_Falling, INT_RANK_14) ;
|
|||
|
PWR_PVD_Init() ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void PrintfDeviceInfo(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DEBUG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
**************************************************************************************************/
|
|||
|
void PrintfDeviceInfo(void)
|
|||
|
{
|
|||
|
printf("\r\n**************************************************************" ) ;
|
|||
|
printf("\r\n<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20>̳ϿƼ<CFBF> 2017/8-2027/8 .\
|
|||
|
\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> : Mr. Wang 13635513618 .") ;
|
|||
|
SetBootVersion(&gateApp, (char*)uIapFlash.sIapFlash.BootVers) ;
|
|||
|
printf("\r\nBoot<EFBFBD>汾 : %*.*s", 0, VERSION_LEN, gateApp.bootVers) ;
|
|||
|
Query_AppVersion((char*)gateApp.appVers) ;
|
|||
|
SetAppVersion(&gateApp, (char*)gateApp.appVers) ;
|
|||
|
printf("\r\nAPP <20>汾 : %s", gateApp.appVers) ;
|
|||
|
printf("\r\nRunAppNum: APP%d", uIapFlash.sIapFlash.RunAppNum-0x30 ) ;
|
|||
|
GetDeviceMacAddress((uint8_t*)gateApp.macId, STRMACID) ;
|
|||
|
printf("\r\n<EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : %.*s", MAC_BYTES_LEN, gateApp.macId) ;
|
|||
|
DeviceRstReason((uint8_t*)gateApp.rstReason, VERSION_LEN) ;
|
|||
|
printf("\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD> : %.*s", VERSION_LEN, gateApp.rstReason) ;
|
|||
|
printf("\r\n**************************************************************" ) ;
|
|||
|
char buf[128] = {0} ;
|
|||
|
snprintf(buf, 128, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>:%s.", gateApp.rstReason) ;
|
|||
|
WriteLogToFlash(buf) ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void DeviceRstReason(uint8_t *reason, uint8_t maxLen)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ж<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
void DeviceRstReason(uint8_t *reason, uint8_t maxLen)
|
|||
|
{
|
|||
|
if( SET == RCC_GetFlagStatus( RCC_FLAG_PORRST) )
|
|||
|
{
|
|||
|
strncpy((char*)reason, "<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", maxLen) ;
|
|||
|
}
|
|||
|
if( SET == RCC_GetFlagStatus(RCC_FLAG_SFTRST) )
|
|||
|
{
|
|||
|
strncpy((char*)reason, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", maxLen) ;
|
|||
|
}
|
|||
|
if( SET == RCC_GetFlagStatus(RCC_FLAG_IWDGRST) )
|
|||
|
{
|
|||
|
strncpy((char*)reason, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", maxLen) ;
|
|||
|
}
|
|||
|
if( SET == RCC_GetFlagStatus(RCC_FLAG_WWDGRST) )
|
|||
|
{
|
|||
|
strncpy((char*)reason, "<EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", maxLen) ;
|
|||
|
}
|
|||
|
if( (RESET == RCC_GetFlagStatus(RCC_FLAG_SFTRST)) &&
|
|||
|
(RESET == RCC_GetFlagStatus(RCC_FLAG_IWDGRST)) &&
|
|||
|
(RESET == RCC_GetFlagStatus(RCC_FLAG_WWDGRST)) &&
|
|||
|
(SET == RCC_GetFlagStatus(RCC_FLAG_PINRST))
|
|||
|
)
|
|||
|
{
|
|||
|
strncpy((char*)reason, "Ӳ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", maxLen) ;
|
|||
|
}
|
|||
|
RCC_ClearFlag() ;
|
|||
|
}
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void OccpyEc20(TickType_t timeout, char* file, int line)
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ȡEC20<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>timeoutû<EFBFBD>л<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>LOGȻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ
|
|||
|
* ע <EFBFBD>⣺һֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱΪ<EFBFBD><EFBFBD>portMAX_DELAY
|
|||
|
****************************************************************************/
|
|||
|
void OccpyEc20(TickType_t timeout, char* file, int line)
|
|||
|
{
|
|||
|
BaseType_t result = pdFAIL ;
|
|||
|
result = xSemaphoreTake(ec20MutexSemaphore, timeout) ;
|
|||
|
if( result == pdPASS )
|
|||
|
{
|
|||
|
memset(lastOccupyEc20, 0, 30);
|
|||
|
snprintf( lastOccupyEc20, 30, "%s %d <20><>ռEC20!", file, line) ;
|
|||
|
AppLogPrintf(lastOccupyEc20) ;
|
|||
|
//UARTx_SendData(UART_DEBUG, lastOccupyEc20, strlen(lastOccupyEc20)) ;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
char *buf = portMalloc(192);
|
|||
|
snprintf( buf, 192, "<EFBFBD>ϴ<EFBFBD>:%s, <20>ϴ<EFBFBD>:%s, <20><>ǰ%s %d <20><>ռEC20ʧ<30>ܣ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", lastOccupyEc20, lastReleseEc20, file, line ) ;
|
|||
|
WriteLogToFlash(buf) ;
|
|||
|
AppLogPrintf(buf) ;
|
|||
|
portFree(buf) ;
|
|||
|
SystemSoftReset() ; //ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void TcpUpFlashLog(void)
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>ͨ<EFBFBD><EFBFBD>TCP<EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FLASH<EFBFBD>洢<EFBFBD><EFBFBD>LOG
|
|||
|
****************************************************************************/
|
|||
|
void TcpUpFlashLog(void)
|
|||
|
{
|
|||
|
uint32_t readAddr = LOGFLASH_START_ADDRESS ;
|
|||
|
uint8_t* logReadBuffer = portMalloc(FLASH_PAGE_SIZE/8) ;
|
|||
|
uint16_t n = uLogFlash.sLogFlash.writeOffset/(FLASH_PAGE_SIZE/8) ;
|
|||
|
while(n--)
|
|||
|
{
|
|||
|
Read_Flash_Byte(readAddr, logReadBuffer, (FLASH_PAGE_SIZE/8)) ;
|
|||
|
TcpWritedata( TCPLOGFRAME, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>log:%s", (char*)logReadBuffer);
|
|||
|
readAddr = readAddr+(FLASH_PAGE_SIZE/8) ;
|
|||
|
}
|
|||
|
memset(logReadBuffer, 0, (FLASH_PAGE_SIZE/8)) ;
|
|||
|
Read_Flash_Byte(readAddr, logReadBuffer, uLogFlash.sLogFlash.writeOffset%(FLASH_PAGE_SIZE/8) ) ;
|
|||
|
TcpWritedata( TCPLOGFRAME, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>log:%s", (char*)logReadBuffer) ;
|
|||
|
portFree(logReadBuffer) ;
|
|||
|
Erase_LogFlash() ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void RefreshOledTime(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>С<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<EFBFBD>䡰2018-03-20 17:51<EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
void RefreshOledTime(void)
|
|||
|
{
|
|||
|
static Calendar_u uLastTime ;
|
|||
|
if( currentMenuIndex == 0 ) //HTTP<54><50><EFBFBD><EFBFBD>״̬<D7B4><CCAC>־λΪSTATE_OK<4F><4B><EFBFBD><EFBFBD>ʾ<EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȷʱ<C8B7><CAB1> (GETHTTPSTATE == STATE_OK) &&
|
|||
|
{
|
|||
|
if( memcmp(uLastTime.bytes, uCalendar.bytes, 16) == 0 ) /*<2A><><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ֻ<EFBFBD>ı<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
|||
|
{
|
|||
|
DisplayPointBlink() ;
|
|||
|
}
|
|||
|
else /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ı<EFBFBD>*/
|
|||
|
{
|
|||
|
DisplayTime() ;
|
|||
|
strncpy((char*)uLastTime.bytes, (const char*)uCalendar.bytes, 20) ;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void Rtc_Alr_Callback(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> RTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ<EFBFBD>ڶ<EFBFBD><EFBFBD>죬ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
|||
|
**************************************************************************************************/
|
|||
|
void Rtc_Alr_Callback(void)
|
|||
|
{
|
|||
|
Calendar_u uAlaCal ;
|
|||
|
memcpy(uAlaCal.bytes, uCalendar.bytes, CALENDAR_LEN) ;
|
|||
|
uAlaCal.sCalendar.w_date[1] += 1 ; //<2F><><EFBFBD><EFBFBD>+1<><31>
|
|||
|
memcpy((u8*)uAlaCal.sCalendar.hour, "01", 2) ; //<2F>賿1<E8B3BF><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ڴ˿̵<CBBF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ//
|
|||
|
//memcpy((u8*)uAlaCal.sCalendar.min, "42", 2) ; //<2F>賿30<33><30>//uAlaCal.sCalendar.sec[0] += 2 ;
|
|||
|
RTC_Alarm_Set(&uAlaCal) ;
|
|||
|
WriteLogToFlash((char*)uCalendar.bytes) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>FLASH<53><48>
|
|||
|
WriteLogToFlash("Rtc_Alr_Callback!") ;
|
|||
|
SysLog("Rtc_Alr_Callback!") ;
|
|||
|
SystemSoftReset() ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void InitApplictationState(Application *appPointer)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Application<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @param *appPointer Application<EFBFBD>ṹָ<EFBFBD><EFBFBD>
|
|||
|
*************************************************************************************************/
|
|||
|
void InitApplictationState(Application *appPointer)
|
|||
|
{
|
|||
|
memset(appPointer->appVers, 0, VERSION_LEN+1) ;
|
|||
|
memset(appPointer->bootVers, 0, VERSION_LEN+1) ;
|
|||
|
memset(appPointer->macId, 0, MAC_BYTES_LEN+1) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void SetAppVersion(Application *appPointer, char *version)
|
|||
|
{
|
|||
|
strncpy((char*)appPointer->appVers, version, VERSION_LEN) ;
|
|||
|
*(appPointer->appVers+VERSION_LEN+1) = 0 ;
|
|||
|
}
|
|||
|
|
|||
|
void SetBootVersion(Application *appPointer, char *version)
|
|||
|
{
|
|||
|
strncpy((char*)appPointer->bootVers, version, VERSION_LEN) ;
|
|||
|
*(appPointer->bootVers+VERSION_LEN+1) = 0 ;
|
|||
|
}
|