4G_module/include/cmiot/cm_sd.h

358 lines
11 KiB
C
Raw Permalink Normal View History

2024-09-02 17:54:29 +08:00
/**
* @file cm_sd.h
* @brief SDCARD
* @copyright Copyright © 2022 China Mobile IOT. All rights reserved.
* @author By WangPeng
* @date 2022/12/16
*
* @defgroup SDCARD SDCARD
* @ingroup SDCARD
* @{
*/
#ifndef __CM_SDCARD_H__
#define __CM_SDCARD_H__
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdint.h>
#include <stdbool.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define CM_SD_SEEK_SET (0) /*!< SEEK_SET */
#define CM_SD_SEEK_CUR (1) /*!< SEEK_CUR */
#define CM_SD_SEEK_END (2) /*!< SEEK_END */
#define CM_SD_MAX_PATH (256)
/****************************************************************************
* Public Types
****************************************************************************/
typedef struct
{
long long free_size; /*!< 当前可用文件系统大小 */
long long total_size; /*!< 文件系统总大小 */
} cm_sd_system_info_t;
/****************************************************************************
* Public Data
****************************************************************************/
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
***********************SD卡使用注意事项*************************************
* 1SD卡不会单独供电SD卡硬件上下
* SD功能是在开发板上电时SD卡
* SD卡初始化操作
* 21SD卡控制引脚会发出一段脉冲用
* SD卡OpenCPU SDK的入口函数执行
* 3使SD卡功能的用户2使
* PIN脚配置为UART用于控制挂载芯片PIN脚发
* SDK提供给用户禁用SD卡
* 4
* 4SD功能发出脉冲时
* 1"0""sd.cfg"
* SD卡控制引脚发出脉冲
* "sd.cfg""0"SD
*
* int32_t fd = cm_fs_open("sd.cfg", CM_FS_WB);
* int32_t f_len = cm_fs_write(fd, "0", 1);
* int32_t ret = cm_fs_close(fd);
* 2cm_sd_set_flag(0)cm_sd_set_flag()
* 5SD卡控制引脚和复用关系见
***************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/**
* @brief SD标志位
*
*
* @return SD标志位
* 0:使SD功能
* 1:使SD功能
*
* @details 使SD功能
*/
int32_t cm_sd_get_flag(void);
/**
* @brief SD标志位
*
* @param [in] flag 0使SD功能1使SD功能
*
* @return
* = 0 - \n
* = -1 -
*
* @details
*/
int32_t cm_sd_set_flag(int32_t flag);
/**
* @brief SD卡
*
* @param [in] vol
*
* @return
* TRUE - SD卡已格式化 \n
* FALSE - SD卡未格式化
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
bool cm_sd_is_formatted(char *vol);
/**
* @brief SD卡
*
* @param [in] vol
*
* @return
* = 0 - \n
* < 0 - ,
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能 \n
* cm_sd_format()SD文件操作前调用SD文件系统的关键数据后格式化SD卡SD文件系统操作并重启模组后格式化SD卡
*/
int32_t cm_sd_format(char *vol);
/**
* @brief
*
* @param [in] filename
* @param [in] mode r w c a +
*
* @return
* >= 0 - \n
* < 0 - ,
*
* @details r: read \n
* w: write \n
* c: create \n
* a: append and write \n
* +: read and write \n
* SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_fopen(const char *filename, const char *mode);
/**
* @brief
*
* @param [in] fd
*
* @return
* = 0 - \n
* < 0 - ,
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_fclose(int32_t fd);
/**
* @brief
*
* @param [in] fd
* @param [out] buf
* @param [in] size
*
* @return
* >= 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_fread(int32_t fd, void *buf, uint32_t size);
/**
* @brief
*
* @param [in] fd
* @param [in] buf
* @param [in] size
*
* @return
* >= 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_fwrite(int32_t fd, const void *buf, uint32_t size);
/**
* @brief
*
* @param [in] fd
* @param [in] offset
* @param [in] base CM_SD_SEEK_SET CM_SD_SEEK_CUR CM_SD_SEEK_END
*
* @return
* = 0 - \n
* < 0 -
*
* @details offset不支持为负数 \n
* SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_fseek(int32_t fd, int32_t offset, int32_t base);
/**
* @brief
*
* @param [in] file_name
*
* @return
* >= 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_fdelete(const char *file_name);
/**
* @brief
*
* @param [in] src
* @param [in] dest
*
* @return
* = 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_fmove(const char *src, const char *dest);
/**
* @brief
*
* @param [in] file_name
*
* @return
* = 1 - \n
* = 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_exist(const char *file_name);
/**
* @brief
*
* @param [in] file_name
*
* @return
* >= 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_filesize(const char *file_name);
/**
* @brief
*
* @param [in] path
*
* @return
* = 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_mkdir(char *path);
/**
* @brief
*
* @param [in] path
* @return
* = 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_rmdir(char *path);
/**
* @brief
*
* @param [in] path
*
* @return
* = 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_set_currentdir(char *path);
/**
* @brief
*
* @param [out] path buffer
* @param [in] max_len buffer的长度
*
* @return
* = 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_get_currentdir(char *path, uint32_t max_len);
/**
* @brief
*
* @param [in] vol
* @param [out] info
*
* @return
* = 0 - \n
* < 0 -
*
* @details SD卡功能与ML307A uart0和ML302A uart1互斥使 \n
* ML307A-DSLN/ML307A-GSLN/ML302A-DSLM/ML302A-GSLM模组支持SD功能
*/
int32_t cm_sd_getinfo(char *vol, cm_sd_system_info_t *info);
#undef EXTERN
#ifdef __cplusplus
}
#endif
/** @}*/
/** @}*/
#endif /* __CM_SDCARD_H__ */