Files
banban/ql-bootloader/updater/inc/rs_ua_porting.h
T

163 lines
4.2 KiB
C

#ifndef __RS_UA_PORTING_H__
#define __RS_UA_PORTING_H__
#include "rsplatform.h"
#ifdef WIN32
#include "rs_bl_config.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
// TODO: 配置升级是否放到flash中,如果不配置此项,则放置于文件系统中
#define RS_DIFF_PACKAGE_ON_FLASH
// TODO: 配置差分升级所需内存的大小
#define RS_FOTA_UA_RAM_BUFFER_SIZE 0x180000
// TODO: 配置Flash的block的大小 blocksize
//#define RS_FOTA_UA_FLASH_BLCOK_SIZE 0x1000
#define RS_FOTA_UA_FLASH_BLCOK_SIZE 0x10000
#ifdef RS_DIFF_PACKAGE_ON_FLASH
// TODO: 配置升级包区域的起始地址
//#define RS_UA_DELTA_ADDR (0x370000)
#define KB(n) (n * 1024)
#define MB(n) (n * 1024 * 1024)
#if 0
#define RS_UA_DELTA_ADDR (0x1000000 - KB(128) - MB(3) - KB(64))
#else
#define RS_UA_DELTA_ADDR (0xCD0000)
#endif
// TODO: 配置存放updateinfo的block的大小,一般为一个blocksize
#define RS_FOTA_UA_UPDATEINFO_BLCOK_SIZE (RS_FOTA_UA_FLASH_BLCOK_SIZE)
#else
// TODO: 配置升级包、信息文件、GPS文件所在路径
#define RS_UA_UPDATEINFO1_FILE L"Z:\\updateinfo1"
#define RS_UA_UPDATEINFO2_FILE L"Z:\\updateinfo2"
#define RS_UA_DELTA_FILE L"Z:\\update.bin"
#define RS_UA_EXTEND_FILE L"Z:\\gps_image.bin"
#define RS_UA_UPDATEINFO1_FILE_INDEX 1
#define RS_UA_UPDATEINFO2_FILE_INDEX 2
#define RS_UA_DELTA_FILE_INDEX 3
#define RS_UA_EXTEND_FILE_INDEX 4
void rs_ua_setUpdateInfo1File(const rs_s8* file);
void rs_ua_setUpdateInfo2File(const rs_s8* file);
void rs_ua_setDeltaFile(const rs_s8* file);
void rs_ua_setExtendFile(const rs_s8* file);
#endif
#define PROGRESS_EXTEND_PRE (20)
#define PROGRESS_NORMAL_PRE (100 - PROGRESS_EXTEND_PRE)
typedef rs_bool (* OUTPUT_DATA_STREAM)(rs_u8 unitID, rs_u8* buff, rs_u32 size, rs_u32 offset, rs_bool isFinal);
typedef enum
{
UPSTATE_INVALID = -1,
UPSTATE_IDLE , /*idle*/
UPSTATE_CHECK, /* check */
UPSTATE_CHECKED, /* checked */
UPSTATE_UPDATE, /* update */
UPSTATE_UPDATEED,/* update finish */
}e_updateState;
typedef enum
{
DELTA_DATA_TYPE_IMAGE_UPDATE,
DELTA_DATA_TYPE_FS_UPDATE,
DELTA_DATA_TYPE_COMPRESSED_BIN,
DELTA_DATA_TYPE_RAW_BIN,
DELTA_DATA_TYPE_NOT_SUPPORT = 100
}DELTA_DATA_TYPE;
e_updateState rs_ua_getUpdateState(void);
rs_bool rs_ua_setRecoveryPhase(void);
rs_u32 rs_ua_sdk_heap_size(void);
void rs_ua_postUpdateProgress(rs_u32 current , rs_u32 total);
void rs_ua_kick_watchdog(void);
rs_u32 rs_ua_sdk_heap_addr(void);
rs_u32 rs_ua_ram_block(void);
rs_u32 rs_ua_ram_block_size(void);
void rs_ua_set_deltaPartitionAddr(rs_u32 addr);
rs_u32 rs_ua_getPackageAddr(void);
rs_u32 rs_ua_getUpdateInfo1Addr(void);
rs_u32 rs_ua_getUpdateInfo2Addr(void);
rs_u8 rs_ua_getUpdateInfo1File(void);
rs_u8 rs_ua_getUpdateInfo2File(void);
rs_u8 rs_ua_getOTAPackageFile(void);
rs_s32 rs_ua_openFileRD(rs_u32 fileIndex);
rs_s32 rs_ua_openFileCreate(rs_u32 fileIndex);
rs_s32 rs_ua_openFileRW(rs_u32 fileIndex);
rs_bool rs_ua_removeFile(rs_u32 fileIndex);
rs_u32 rs_ua_getFileSize(rs_u32 fileIndex);
rs_u32 rs_ua_processExtendFile(void);
void rs_ua_cleanExtendFile(void);
rs_u32 rs_ua_saveExtendDataToFile(rs_u8* buff, rs_u32 size, rs_u32 offset, rs_bool isFinal);
rs_bool rs_ua_outPutDataStream(rs_u8 unitID, rs_u8* buff, rs_u32 size, rs_u32 offset, rs_bool isFinal);
rs_u8 rs_ua_packageStore(void);
rs_bool rs_trace(const rs_s8 *format,...);
rs_u32 rs_ua_validation(rs_bool multiUnit, rs_u32 index);
rs_u32 rs_ua_upgrade(rs_bool multiUnit, rs_u32 index);
rs_bool rs_ua_hasMultiUnit(void);
rs_u32 rs_ua_getMultiUnitCount(void);
rs_bool rs_ua_getCurrentUnitIndex(rs_u32 *index);
rs_bool rs_ua_setCurrentUnitIndex(rs_u32 index);
rs_bool rs_ua_getUnitDataTypeAndID(rs_u32 index, rs_u8* dataType, rs_u8* unitID);
rs_bool rs_ua_validateMultiUnitPkg(void);
rs_bool rs_ua_decodeUnitData(rs_u32 index, OUTPUT_DATA_STREAM outputFunction);
rs_bool rs_ua_getUnitRawData(rs_u32 index, OUTPUT_DATA_STREAM outputFunction);
rs_s32 rs_porting_validation(rs_bool multiUnit, rs_u32 unitCount);
rs_s32 rs_porting_update(rs_bool multiUnit, rs_u32 unitCount);
rs_bool rs_ua_updatePhaseComplete(void);
rs_bool rs_ua_validationPhaseComplete(void);
rs_s32 rs_ua_execute();
#ifdef __cplusplus
}
#endif
#endif