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; +} + /** @} */