Files
player/Project/Src/MyApp/system_updata.h

91 lines
1.6 KiB
C
Raw Normal View History

2025-06-27 00:32:57 +08:00
#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