Files
AC707N/loader/edr_ota_update/include_lib/driver/jlfs/jlfs.h
T
2025-12-03 11:12:34 +08:00

77 lines
1.9 KiB
C

#ifndef __JLFS_H__
#define __JLFS_H__
#include "typedef.h"
typedef struct {
u32 addr; //flash里的绝对地址
u32 size; //文件大小
u32 pos; //操作的偏移量
u32 res; //预留参数
} JLFS_FILE;
struct jlfs_flash_head {
u16 head_crc;
u16 size4burner;
char vid[4];
u32 flash_size;
u8 fs_version;
u8 BlockAlignSize;
u16 SpecialOptFlag;
char pid[16];
};
struct jlfs_file_head {
u16 head_crc;
u16 data_crc;
u32 addr;
u32 len;
u8 attr;
u8 res;
u16 index;
char name[16];
};
struct jlfs_app_info_head {
u16 head_crc;
u16 data_crc;
u16 encodedata_crc;
u16 version;
u32 len;
u32 reserved;
char name[16];
};
void *get_global_buffer(u32 size);
u32 jlfs_get_flash_align_size(void);
u32 jlfs_get_flash_app_base_addr(void);
u32 jlfs_get_flash_eoffset_size(void);
u32 jlfs_get_app_entry_addr(void);
u8 *jlfs_get_isd_cfg_ptr(void);
u8 jlfs_read_isd_cfg_ini(const char *cfg, void *value);
u8 jlfs_mount(void);
u8 jlfs_fopen_by_addr(JLFS_FILE *file, u32 addr);
u8 jlfs_fopen_by_name(JLFS_FILE *file, const char *name, u8 mode);
u32 jlfs_fread(JLFS_FILE *file, u8 *buf, u32 len);
u32 jlfs_erase(JLFS_FILE *file, u32 len);
u32 jlfs_write(JLFS_FILE *file, u8 *buf, u32 len);
void jlfs_fseek(JLFS_FILE *file, u32 offset);
void jlfs_get_pid_vid(u8 *pid, u8 *vid);
void jlfs_get_bt_mac(u8 *mac);
u32 jlfs_get_flen_by_name(const char *name);
u32 jlfs_get_idle_bank_info(JLFS_FILE *file, u32 mode);
u32 jlfs_updata_dual_bank_info(JLFS_FILE *file, u16 data_crc);
/* --------------------------------------------------------------------------*/
/**
* @brief 选择哪个code跑,必须在 jlfs_mount() 前调用才有效
*
* @param code_index 0:code0 1:code1 -1:自动切换(原模式) >1的数值会被强制为code0
*/
/* ----------------------------------------------------------------------------*/
void jlfs_dual_bank_choose_code(u8 code_index);
#endif