#ifndef __USERAPPx_H #define __USERAPPx_H #include //bool布尔类型变量定义 #include #include #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