199 lines
7.1 KiB
C
199 lines
7.1 KiB
C
/*================================================================
|
|
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
|
|
Quectel Wireless Solutions Proprietary and Confidential.
|
|
=================================================================*/
|
|
|
|
#ifndef _QL_FS_H
|
|
#define _QL_FS_H
|
|
|
|
|
|
#include "quec_rtos.h"
|
|
#include "quec_fs.h"
|
|
#include "lfs.h"
|
|
#include "lfs_api.h"
|
|
#ifdef QUEC_NAND_YAFFS
|
|
#include "yaffs_fdi2.h"
|
|
|
|
/*-----------------------------------------------------------------------------------------
|
|
* Nand hardware Information Structure
|
|
*-----------------------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
unsigned int page_size;
|
|
unsigned int spare_size;
|
|
unsigned int pages_per_block;
|
|
unsigned int block_size;
|
|
unsigned int total_blocks;
|
|
unsigned int total_size;
|
|
unsigned char manufacturer_id;
|
|
unsigned char device_id[4];
|
|
char model_name[32];
|
|
char manufacturer_name[32];
|
|
} ql_spi_nand_flash_hw_info_t;
|
|
|
|
typedef enum {
|
|
QL_SPI_NAND_AREA_MAIN_ONLY = 0,
|
|
QL_SPI_NAND_AREA_WITH_SPARE = 1,
|
|
} ql_spi_nand_access_e;
|
|
|
|
typedef struct nand_device* ql_spi_nand_flash_hndl_t;
|
|
|
|
struct ql_yaffs_dev
|
|
{
|
|
const char *name;
|
|
u32 start_block;
|
|
u32 end_block;
|
|
};
|
|
|
|
#endif
|
|
|
|
int ql_fs_format(char disk_sym);
|
|
|
|
int ql_fs_mount(char disk_sym);
|
|
|
|
int ql_fs_unmount(char disk_sym);
|
|
|
|
int ql_fs_size(char disk_sym);
|
|
|
|
int ql_fs_used_size(char disk_sym);
|
|
|
|
int ql_fs_free_size(char disk_sym);
|
|
|
|
QFILE * ql_fopen(const char *fname, const char *mode);
|
|
|
|
int ql_fclose(QFILE * fp);
|
|
|
|
int ql_fsync(QFILE * fp);
|
|
|
|
int ql_fread(void * buffer, size_t size, size_t num, QFILE * fp);
|
|
|
|
int ql_fwrite(void * buffer, size_t size, size_t num, QFILE * fp);
|
|
|
|
int ql_fputc(int chr, QFILE *fp);
|
|
|
|
int ql_fputs(const char *str, QFILE *fp);
|
|
int _ql_fprintf(QFILE *fp, const char *format, va_list arg_ptr);
|
|
int ql_fprintf(QFILE *fp, const char *format, ...);
|
|
|
|
int ql_fgetc(QFILE *fp);
|
|
|
|
char *ql_fgets(char *str, int n, QFILE *fp);
|
|
|
|
int ql_fscanf(QFILE *fp, const char *format, ...);
|
|
int _ql_fscanf(QFILE *fp, const char *format, va_list arg_ptr);
|
|
|
|
int ql_fseek(QFILE *fp, long offset, int origin);
|
|
|
|
int ql_ftruncate(QFILE *fp, uint32 length);
|
|
|
|
long ql_ftell(QFILE *fp);
|
|
|
|
int ql_frewind(QFILE *fp);
|
|
|
|
int ql_fsize(QFILE *fp);
|
|
|
|
int ql_mkdir(const char *path, uint32 mode);
|
|
|
|
QDIR * ql_opendir(const char *path);
|
|
|
|
int ql_closedir(QDIR *dp);
|
|
|
|
int ql_readdir(QDIR *dp, struct lfs_info *info);
|
|
|
|
int ql_seekdir(QDIR *dp, long int loc);
|
|
|
|
long ql_telldir(QDIR *dp);
|
|
|
|
int ql_rewinddir(QDIR *dp);
|
|
|
|
int ql_remove(const char *fname);
|
|
|
|
int ql_rename(const char *oldpath, const char *newpath);
|
|
|
|
int ql_copy(const char *oldpath, const char *newpath);
|
|
|
|
int ql_access(const char *path, uint32 mode);
|
|
|
|
int ql_stat(const char *path, struct lfs_info *info);
|
|
|
|
int ql_set_flash_atomic_size(unsigned int read_size,unsigned int prog_size);
|
|
|
|
File_Handle ql_FDI_fopen(const char *filename_ptr, const char *mode);
|
|
int ql_FDI_fclose(File_Handle stream);
|
|
size_t ql_FDI_fread(void *buffer_ptr, size_t element_size, size_t count, File_Handle stream);
|
|
size_t ql_FDI_fwrite(const void *buffer_ptr,size_t element_size,size_t count,File_Handle stream);
|
|
int ql_FDI_fseek(File_Handle stream, long offset, int wherefrom);
|
|
unsigned int ql_FDI_GetFileSize(int fd);
|
|
#ifdef QUEC_NAND_YAFFS
|
|
int ql_spi_nand_init(int spi_port, int spi_pin,int spi_clk);
|
|
int ql_spi_nand_flash_get_hw_info(ql_spi_nand_flash_hndl_t hndl,ql_spi_nand_flash_hw_info_t *info);
|
|
int ql_spi_nand_flash_get_block_num(ql_spi_nand_flash_hndl_t hndl);
|
|
int ql_spi_nand_flash_open(int spi_port, int spi_pin, int spi_clk,unsigned char flashnu, ql_spi_nand_flash_hndl_t *hndl);
|
|
int ql_spi_nand_flash_close(ql_spi_nand_flash_hndl_t hndl);
|
|
int ql_spi_nand_flash_read(ql_spi_nand_flash_hndl_t hndl, unsigned int flash_addr,unsigned char *buf, unsigned int size, ql_spi_nand_access_e area);
|
|
int ql_spi_nand_flash_write(ql_spi_nand_flash_hndl_t hndl, unsigned int flash_addr,const unsigned char *buf, unsigned int size, ql_spi_nand_access_e area);
|
|
int ql_spi_nand_flash_erase(ql_spi_nand_flash_hndl_t hndl, unsigned int flash_addr,unsigned int size);
|
|
const struct nand_device *ql_spi_nand_flash_get_nand_device(ql_spi_nand_flash_hndl_t hndl);
|
|
File_Handle ql_nand_fopen(const char *filename_ptr, const char *mode);
|
|
int ql_nand_fclose(File_Handle stream);
|
|
int ql_nand_fread(void *buff, size_t element_size, size_t count, File_Handle stream);
|
|
int ql_nand_fwrite(const void *buff, size_t element_size, size_t count, File_Handle stream);
|
|
int ql_nand_fseek(File_Handle stream, long offset, int wherefrom);
|
|
int ql_nand_lseek(File_Handle stream, long offset, int wherefrom);
|
|
int ql_nand_ftell(File_Handle stream);
|
|
int ql_nand_fremove(const char *filename_ptr);
|
|
int ql_nand_frename(char *name, char *new_name);
|
|
int ql_nand_fsize(char *file_name);
|
|
int ql_nand_mkdir(char *dir_name);
|
|
int ql_nand_access(char *file_name);
|
|
int ql_nand_get_free_size(void);
|
|
void ql_nand_format(void);
|
|
int ql_nand_removedir(char *dir_name);
|
|
int ql_nand_closedir(FILE_ID hDirID);
|
|
int ql_nand_readddir(FILE_ID hDirID, NandFs_info *fileinfo_ptr);
|
|
FILE_ID ql_nand_opendir(char *dir_name);
|
|
int ql_nand_lstat(char *path,NandFs_info *fileinfo_ptr);
|
|
int ql_nand_fgetc(File_Handle stream);
|
|
char *ql_nand_fgets(char *str, int n, File_Handle stream);
|
|
int ql_nand_fsync(File_Handle stream);
|
|
int ql_nand_yaffs_sync(void);
|
|
int ql_nand_feof(File_Handle stream,char *file_name);
|
|
int ql_nand_frewind(File_Handle stream);
|
|
int ql_nand_get_total_size(void);
|
|
int ql_nand_get_used_size(void);
|
|
int ql_nand_fdsize(FILE_ID fd);
|
|
int ql_nand_get_fmountstatus(void);
|
|
|
|
int ql_yaffs_start_up(void);
|
|
int ql_yaffs_create_dev(struct ql_yaffs_dev *dev_config);
|
|
int ql_yaffs_mount(const char *path);
|
|
int ql_yaffs_unmount(const char *path);
|
|
int ql_yaffs_open(const char *filename, const char *mode);
|
|
int ql_yaffs_close(int fd);
|
|
int ql_yaffs_read(void *buff, size_t element_size, size_t count, int fd);
|
|
int ql_yaffs_write(const void *buff, size_t element_size, size_t count, int fd);
|
|
int ql_yaffs_lseek(int fd, long offset, int whence);
|
|
int ql_yaffs_unlink(const char *path);
|
|
int ql_yaffs_fsize(const char *path);
|
|
int ql_yaffs_rename(const char *name, const char *new_name);
|
|
int ql_yaffs_mkdir(const char *dir_name);
|
|
int ql_yaffs_opendir(const char *dir_name);
|
|
int ql_yaffs_closedir(int fd);
|
|
int ql_yaffs_rmdir(const char *dir_name);
|
|
int ql_yaffs_access(const char *path);
|
|
int ql_yaffs_freespace(const char *path);
|
|
int ql_yaffs_fsync(int fd);
|
|
int ql_yaffs_sync(const char *path);
|
|
int ql_yaffs_format(const char *path, int unmount_flag, int force_unmount_flag, int remount_flag);
|
|
int ql_yaffs_ftell(int fd);
|
|
int ql_yaffs_fgetc(int fd);
|
|
char *ql_yaffs_fgets(char *str, int n, int fd);
|
|
int ql_yaffs_feof(int fd, const char *file_name);
|
|
int ql_yaffs_frewind(int fd);
|
|
int ql_yaffs_readddir(int fd, NandFs_info *fileinfo_ptr);
|
|
int ql_yaffs_lstat(char *path, NandFs_info *fileinfo_ptr);
|
|
int ql_yaffsfs_getlasterror(void);
|
|
|
|
#endif
|
|
#endif
|
|
|