93 lines
5.2 KiB
C
93 lines
5.2 KiB
C
#ifndef __USERAPPx_H
|
||
#define __USERAPPx_H
|
||
|
||
#include <stdbool.h> //bool布尔类型变量定义
|
||
#include <stdint.h>
|
||
#include <stdlib.h>
|
||
#include "mac.h"
|
||
#include "timer.h"
|
||
#include "rs232.h"
|
||
#include "rs485.h"
|
||
#include "osPort.h"
|
||
|
||
/**********************************************************************************
|
||
**GateApp配置选项
|
||
*********************************************************************************/
|
||
|
||
/**********************************************************************************
|
||
**自定义变量类型
|
||
*********************************************************************************/
|
||
typedef struct
|
||
{
|
||
char macId[MAC_BYTES_LEN+1] ; //存放 硬件mac地址字符串 的数组
|
||
char appVers[VERSION_LEN+1] ; //存放 软件版本号字符串 的数组
|
||
char bootVers[VERSION_LEN+1] ; //存放 boot软件版本号 的数组
|
||
char rstReason[VERSION_LEN+1] ; //存放 上次设备重启原因 的数组
|
||
}Application ; //存放 应用程序一写参数的结构体变量类型
|
||
|
||
typedef struct
|
||
{
|
||
bool moduleStatus : 1 ; //标志EC20_Module_Init()初始化后状态
|
||
bool netRegStatus : 1 ; //标志EC20_Net_Reg()初始化后状态
|
||
bool tcpStatus : 1 ; //标志AppTcpInit()初始化后状态
|
||
bool httpStatus : 1 ; //标志Http_Init()初始化后状态
|
||
bool ftpStatus : 1 ; //标志AppFtpInit()初始化后状态
|
||
}NETSTATUS_s ; //结构体类型反映网络状态
|
||
|
||
typedef enum
|
||
{
|
||
SelfApp , //硬件独有的APP文件,固件使用MACID.bin命令,只需要macid一致的设备升级
|
||
CommonApp //通用的APP文件, 固件使用CommonApp.bin命令,允许所有硬件升级该固件
|
||
}APPTYPE_e ; //固件类型枚举
|
||
|
||
typedef struct
|
||
{
|
||
uint32_t appFlashAddr ; //存储当前下载的固件是APP2、APP3。。。 对应写入FLASH中的开始地址
|
||
uint8_t fileName[MAC_BYTES_LEN+4+1] ; //24位硬件地址+4位文件拓展名(.bin)+1位字符串结束符
|
||
APPTYPE_e eAppType ; //新固件类型,是唯一固件还是通用固件
|
||
uint32_t fileSize ; //新固件的大小(byte)
|
||
uint8_t subPackSum ; //新固件分多少个子包进行下载
|
||
uint8_t subPackNum ; //子包指针
|
||
uint32_t downPos ; //下载文件字节数指针
|
||
}DownFileP_s ; //存放下载文件的相关参数结构体变量
|
||
|
||
/**********************************************************************************
|
||
*常变量声明
|
||
*********************************************************************************/
|
||
extern Application gateApp ; //gateApp存放应用参数
|
||
extern DownFileP_s sDownApp ; //sDownApp存放下载文件的相关参数的结构体变量
|
||
extern NETSTATUS_s sNetStatus ; //NETSTATUS_s结构体类型变量反映网络状态
|
||
|
||
/*网络状态标志位宏定义*/
|
||
#define MODULEBIT_0 sNetStatus.moduleStatus //标志EC20_Module_Init()初始化后状态
|
||
#define NETREGBIT_1 sNetStatus.netRegStatus //标志EC20_Net_Reg()初始化后状态
|
||
#define TCPBIT_2 sNetStatus.tcpStatus //标志AppTcpInit()初始化后状态
|
||
#define HTTPBIT_3 sNetStatus.httpStatus //标志Http_Init()初始化后状态
|
||
#define FTPBIT_4 sNetStatus.ftpStatus //标志AppFtpInit()初始化后状态
|
||
|
||
#define ONCE_DOWN_LEN 2048 //FTP单次下载的数据包大小
|
||
|
||
/**********************************************************************************
|
||
*内部函数声明
|
||
***********************************************************************************/
|
||
uint32_t Check_AppNum( u32 appNumFlagWord ) ;
|
||
void Erase_App_Area(uint32_t appNum) ;
|
||
|
||
/********************************************************************************
|
||
*对外接口函数声明
|
||
*********************************************************************************/
|
||
extern void Board_Init(void) ; //驱动及功能块初始化
|
||
extern RunResult NetDisconnetc(void) ; //断开TCP连接,注销FTP登陆
|
||
extern RunResult FindAppFile(DownFileP_s *psFileParm) ; //在sFtpBoot.ftpDirectory目录中查找(文件名为24位MAC地址+.bin)/("CommonApp.bin")的文件
|
||
extern RunResult DownSubpackVerify(DownFileP_s *psFileParm, int *pHeadPos) ;//新固件bin文件栈顶地址合法性校验
|
||
extern RunResult DownOtherSubpack(DownFileP_s *psFileParm) ; //下载新固件并写入对应的FLASH段
|
||
extern void PrintfDeviceInfo(void) ; //DEBUG口输出设备信息
|
||
extern void DeviceRstReason(uint8_t *reason, uint8_t maxLen) ; //获取硬件上次重启原因
|
||
extern void InitApplictationState(Application *appPointer); //初始化Application结构体变量
|
||
extern void SetAppVersion(Application *appPointer, char *version) ; //设置Application结构体变量中的APP软件版本
|
||
extern void SetBootVersion(Application *appPointer, char *version) ;//设置Application结构体变量中的boot软件版本
|
||
extern void SetMacId(Application *appPointer, char *macId) ; //设置Application结构体变量中的macid
|
||
|
||
|
||
#endif
|