91 lines
1.4 KiB
C
91 lines
1.4 KiB
C
#ifndef SYSTEM_UPDATA_H__
|
||
#define SYSTEM_UPDATA_H__
|
||
|
||
|
||
#include "main.h"
|
||
|
||
|
||
|
||
//定义文件升级时缓存区大小
|
||
#define UPDATA_BUFF_SIZE 4096
|
||
|
||
// 发送文件时单包数据最大尺寸
|
||
#define SEND_FILE_PACK_MAXSIZE 100
|
||
|
||
//定义下载数据结构体
|
||
typedef struct
|
||
{
|
||
int step;
|
||
char name[256];
|
||
u32 dataLen;
|
||
u32 saveAddr;
|
||
int packet_all;
|
||
int packet_now;
|
||
u8 dataBuff[UPDATA_BUFF_SIZE];
|
||
int buffUsed;
|
||
}SysFile_UpdataStruct;
|
||
|
||
|
||
// 定义发送数据的结构体
|
||
typedef struct
|
||
{
|
||
char *name;
|
||
char *path;
|
||
int packet_all;
|
||
int packet_now;
|
||
int file_size;
|
||
int size_left;
|
||
int (*send_data)(void *data,int len);// 发送函数,返回0成功
|
||
int (*progress)(int now,int all);// 反馈进度的函数
|
||
}SysFile_SendStruct;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//读取一个文件
|
||
u8 *SysFile_GetFileByName (char *name,u32 *size);
|
||
|
||
|
||
//通过SD卡进行系统文件升级
|
||
void SysFile_Updata(char *FileName,char *FilePath);
|
||
|
||
//通过协议进行系统文件升级
|
||
void SysFile_UpdataByCom (void);
|
||
|
||
|
||
//通过USB进行系统文件升级,在中断中调用这个函数
|
||
void SysFile_UpdataByIrq (u8 *data,int len);
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// 初始化
|
||
int SysFile_SendFileInit(SysFile_SendStruct *send,char *name,char *path,
|
||
int (*send_data)(void *data,int len),int (*progress)(int now,int all));
|
||
|
||
// 发送文件名,返回0成功
|
||
int SysFile_SendFileName(SysFile_SendStruct *send);
|
||
|
||
// 发送文件尺寸,返回0成功
|
||
int SysFile_SendFileInfo(SysFile_SendStruct *send);
|
||
|
||
// 发送文件数据,返回0成功
|
||
int SysFile_SendFileData(SysFile_SendStruct *send);
|
||
|
||
// 打包,成功返回0
|
||
int SysFile_PackData(u8 *out,u8 *in,int in_size);
|
||
|
||
|
||
|
||
|
||
#endif
|
||
|