134 lines
4.2 KiB
C
134 lines
4.2 KiB
C
/**************************************************************************************************
|
|
* Copyright (c) Fenda Technologies Co., Ltd. 2020-2021. All rights reserved.
|
|
* Description: 蓝牙文件传输中间层,供蓝牙调用
|
|
* Author: leon.sunzhen
|
|
* Create: 2020-12-24
|
|
************************************************************************************************/
|
|
|
|
|
|
#ifndef _FILE_TRANS_H
|
|
#define _FILE_TRANS_H
|
|
|
|
|
|
#include "stdint.h"
|
|
#include "stdbool.h"
|
|
|
|
|
|
#define FILE_TRANS_PKG_SIZE 4096
|
|
#define FILE_TRANS_OVERTIME_MS 10000
|
|
|
|
#define FILE_UPLOAD_FRAME_SIZE 4096
|
|
#define FILE_HEAD_INFO_IEN 512
|
|
|
|
#define FILE_WRITE_PKG_COMPLETE 0
|
|
#define FILE_WRITE_PKG_NO_REQUEST -1
|
|
#define FILE_WRITE_PKG_FILE_ERR -2
|
|
#define FILE_ILLEGAL_ERR -3
|
|
#define FILE_TEMP_MEM_APY_ERR -4
|
|
#define FILE_NO_DIFF_CONTENT_TRANS -5
|
|
|
|
|
|
typedef enum {
|
|
FILE_TRANS_STATE_IDLE = 0,
|
|
FILE_TRANS_STATE_START,
|
|
FILE_TRANS_STATE_TRANS,
|
|
FILE_TRANS_STATE_WAIT,
|
|
FILE_TRANS_STATE_CANCEL,
|
|
} FileTransStateType;
|
|
|
|
typedef enum {
|
|
OTA_UI_TRANS_FIRMWARE = 0,
|
|
OTA_UI_TRANS_IMAGE,
|
|
OTA_UI_TRANS_FONT,
|
|
OTA_UI_TRANS_WATCHFACE,
|
|
OTA_UI_INSTALL_FIRMWARE,
|
|
OTA_UI_INSTALL_IMAGE,
|
|
OTA_UI_INSTALL_FONT,
|
|
OTA_UI_INSTALL_WATCHFACE,
|
|
OTA_UI_UNKNOWN_TYPE
|
|
} OtaUiMsgType;
|
|
|
|
typedef enum {
|
|
FILE_ACTION_GPS = 1, //GPS星历文件
|
|
FILE_ACTION_WATCHFACE, //表盘资源文件
|
|
FILE_ACTION_LOG, //LOG文件
|
|
FILE_ACTION_IMAGE, //IMAGE资源文件
|
|
FILE_ACTION_FONT, //FONT资源文件
|
|
FILE_ACTION_MCU_FIRMWARE, //MCU固件
|
|
FILE_ACTION_NXP_FIRMWARE = 10, //NXP固件
|
|
FILE_ACTION_GPS_FIRMWARE, //GPS固件
|
|
FILE_ACTION_NFC_FIRMWARE, //NFC固件
|
|
FILE_ACTION_TP_FIRMWARE, //TP固件
|
|
FILE_ACTION_BTL_FIRMWARE, //BOOTLOADER固件
|
|
FILE_ACTION_SYS_WATCHFACE, //系统表盘
|
|
FILE_ACTION_DUMP_FILE = 20, //DUMP文件(dump目录)
|
|
FILE_ACTION_RUNNING, //RUNNING文件
|
|
FILE_ACTION_DUMP_INNERFLASH, //DUMP信息(片内FLASH)
|
|
//FILE_ACTION_HEAP_MONITOR, //heap monitor文件
|
|
FILE_ACTION_TRAINING, //运动记录文件
|
|
FILE_ACTION_BASICS, //基础功能文件
|
|
FILE_ACTION_ERR_OTA_FILE, //OTA出错文件
|
|
FILE_ACTION_ANY_FILE, //任意文件
|
|
FILE_ACTION_DATA_EXERCISE = 50,
|
|
FILE_ACTION_DATA_SLEEP,
|
|
FILE_ACTION_DATA_MIN,
|
|
FILE_ACTION_DATA_DAY,
|
|
FILE_ALL = 100, // 所有文件
|
|
} FileActionType;
|
|
|
|
enum{
|
|
STORAGE_IN_ADDR = 1,
|
|
STORAGE_IN_FILE,
|
|
};
|
|
|
|
|
|
typedef struct {
|
|
FileTransStateType state;
|
|
uint32_t fileId;
|
|
int32_t fsfd;
|
|
char fileName[128];
|
|
uint32_t fileSize;
|
|
uint32_t fileAction;
|
|
OtaUiMsgType type;
|
|
|
|
uint32_t offset;
|
|
uint32_t lastOffset;
|
|
uint32_t nextPkgSize;
|
|
uint32_t crc32;
|
|
uint8_t md5[16];
|
|
uint16_t psn;
|
|
uint8_t file_storage_cs;
|
|
uint32_t file_resume_crc32;
|
|
uint32_t file_resume_offset;
|
|
uint32_t file_resume_size;
|
|
} FileTransCtrlBlock_t;
|
|
|
|
|
|
typedef struct {
|
|
char filePathName[128];
|
|
uint32_t fileSize;
|
|
uint32_t fileFrames;
|
|
uint32_t fileId;
|
|
} FileTransUploadFileInfo_t;
|
|
|
|
|
|
void FileTransInit(void);
|
|
bool file_trans_busy(void);
|
|
void file_trans_start(uint32_t id, char *name, uint32_t size, FileActionType action);
|
|
void FileTransSetCrc(uint32_t crc);
|
|
void FileTransSetMd5(uint8_t *md5);
|
|
void file_trans_set_diff_content_trans_flag(bool flag);
|
|
bool file_trans_get_diff_content_trans_flag(void);
|
|
uint8_t* file_trans_get_temp_buff_para(uint16_t* buff_size_p);
|
|
int32_t file_trans_write_pkg(uint8_t *data, uint32_t length);
|
|
FileTransCtrlBlock_t* file_trans_get_ctrl_block_ptr(void);
|
|
void file_trans_get_ctrl_block(FileTransCtrlBlock_t *ctrl);
|
|
void file_trans_succ(void);
|
|
void FileTransOver(void);
|
|
void file_trans_break(bool save_flag);
|
|
void FileTransDisconn(void);
|
|
|
|
uint8_t GetFileListByAction(FileActionType action, FileTransUploadFileInfo_t **pFileList);
|
|
|
|
#endif
|