stm32_ota/USER/USERAPP/userapp.h

93 lines
5.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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