From 213c2dfade1213a0eba4640ed6a2c1e82c09e63f Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sun, 21 Nov 2021 14:58:16 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15122 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/vfs/include/vfs.h | 2 ++ os/vfs/include/vfssystem.h | 4 +++ os/vfs/src/vfssystem.c | 64 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/os/vfs/include/vfs.h b/os/vfs/include/vfs.h index fe0471722..43e3255cc 100644 --- a/os/vfs/include/vfs.h +++ b/os/vfs/include/vfs.h @@ -64,6 +64,8 @@ #define CH_VFS_PATCH 0 /** @} */ +#include + /* Dependencies.*/ #include "osal.h" #include "hal_objects.h" diff --git a/os/vfs/include/vfssystem.h b/os/vfs/include/vfssystem.h index 1eeed2faf..829d73db8 100644 --- a/os/vfs/include/vfssystem.h +++ b/os/vfs/include/vfssystem.h @@ -118,7 +118,11 @@ extern "C" { void vfsInit(void); vfserr_t vfsRegisterDriver(vfs_driver_t *vdp); vfserr_t vfsOpenDirectory(const char *name, vfs_directory_node_t **vdnpp); + void vfsCloseDirectory(vfs_directory_node_t *vdnp); vfserr_t vfsOpenFile(const char *name, vfs_file_node_t **vfnpp); + void vfsCloseFile(vfs_file_node_t *vfnp); + vfserr_t vfsReadFile(vfs_file_node_t *vfnp, char *buf, size_t n); + vfserr_t vfsWriteFile(vfs_file_node_t *vfnp, const char *buf, size_t n); #ifdef __cplusplus } #endif diff --git a/os/vfs/src/vfssystem.c b/os/vfs/src/vfssystem.c index 5c8faddff..f9710b9b9 100644 --- a/os/vfs/src/vfssystem.c +++ b/os/vfs/src/vfssystem.c @@ -196,6 +196,17 @@ vfserr_t vfsOpenDirectory(const char *path, vfs_directory_node_t **vdnpp) { return err; } +/** + * @brief Releases a @p vfs_directory_node_t object. + * + * @param[in] vdnp the pointer to the @p vfs_directory_node_t object + * to be released + */ +void vfsCloseDirectory(vfs_directory_node_t *vdnp) { + + vdnp->vmt->release((void *)vdnp); +} + /** * @brief Opens a VFS file. * @@ -219,4 +230,57 @@ vfserr_t vfsOpenFile(const char *path, vfs_file_node_t **vfnpp) { return err; } +/** + * @brief Releases a @p vfs_file_node_t object. + * + * @param[in] vfnp the pointer to the @p vfs_file_node_t object + * to be released + */ +void vfsCloseFile(vfs_file_node_t *vfnp) { + + vfnp->vmt->release((void *)vfnp); +} + +/** + * @brief File node read. + * @details The function reads data from a file node into a buffer. + * + * @param[in] vfnp the pointer to the @p vfs_file_node_t object + * @param[out] buf pointer to the data buffer + * @param[in] n the maximum amount of data to be transferred + * @return The transferred number of bytes or an error. + * + * @api + */ +vfserr_t vfsReadFile(vfs_file_node_t *vfnp, char *buf, size_t n) { + vfserr_t err = VFS_RET_SUCCESS; + + (void)vfnp; + (void)buf; + (void)n; + + return err; +} + +/** + * @brief File node write. + * @details The function writes data from a buffer to a file node. + * + * @param[in] vfnp the pointer to the @p vfs_file_node_t object + * @param[out] buf pointer to the data buffer + * @param[in] n the maximum amount of data to be transferred + * @return The transferred number of bytes or an error. + * + * @api + */ +vfserr_t vfsWriteFile(vfs_file_node_t *vfnp, const char *buf, size_t n) { + vfserr_t err = VFS_RET_SUCCESS; + + (void)vfnp; + (void)buf; + (void)n; + + return err; +} + /** @} */