Added template files for a file system.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15232 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2021-12-10 14:26:09 +00:00
parent 3827b5dc01
commit f07afd688d
2 changed files with 45 additions and 37 deletions

View File

@ -172,19 +172,20 @@ static msg_t drv_open_file(void *instance,
} }
static void node_dir_release(void *instance) { static void node_dir_release(void *instance) {
vfs_sfs_dir_node_c *sfdnp = (vfs_sfs_dir_node_c *)instance; vfs_sfs_dir_node_c *dnp = (vfs_sfs_dir_node_c *)instance;
__referenced_object_release_impl(instance); __referenced_object_release_impl(instance);
if (__referenced_object_getref_impl(instance) == 0U) { if (__referenced_object_getref_impl(instance) == 0U) {
chPoolFree(&vfs_sfs_driver_static.dir_nodes_pool, (void *)sfdnp); chPoolFree(&vfs_sfs_driver_static.dir_nodes_pool, (void *)dnp);
} }
} }
static msg_t node_dir_first(void *instance, vfs_node_info_t *nip) { static msg_t node_dir_first(void *instance, vfs_node_info_t *nip) {
vfs_sfs_dir_node_c *sfdnp = (vfs_sfs_dir_node_c *)instance; vfs_sfs_dir_node_c *dnp = (vfs_sfs_dir_node_c *)instance;
msg_t err; msg_t err = VFS_RET_SUCCESS;;
FRESULT res;
(void)dnp;
/* TODO rewind */ /* TODO rewind */
err = node_dir_next(instance, nip); err = node_dir_next(instance, nip);
@ -196,9 +197,9 @@ static msg_t node_dir_next(void *instance, vfs_node_info_t *nip) {
msg_t err = VFS_RET_SUCCESS; msg_t err = VFS_RET_SUCCESS;
do { do {
vfs_sfs_dir_node_c *sfdnp = (vfs_sfs_dir_node_c *)instance; vfs_sfs_dir_node_c *dnp = (vfs_sfs_dir_node_c *)instance;
(void)sfdnp; (void)dnp;
(void)nip; (void)nip;
} }
while (false); while (false);
@ -207,25 +208,25 @@ static msg_t node_dir_next(void *instance, vfs_node_info_t *nip) {
} }
static void node_file_release(void *instance) { static void node_file_release(void *instance) {
vfs_sfs_file_node_c *sffnp = (vfs_sfs_file_node_c *)instance; vfs_sfs_file_node_c *fnp = (vfs_sfs_file_node_c *)instance;
__referenced_object_release_impl(instance); __referenced_object_release_impl(instance);
if (__referenced_object_getref_impl(instance) == 0U) { if (__referenced_object_getref_impl(instance) == 0U) {
chPoolFree(&vfs_sfs_driver_static.file_nodes_pool, (void *)sffnp); chPoolFree(&vfs_sfs_driver_static.file_nodes_pool, (void *)fnp);
} }
} }
static BaseSequentialStream *node_file_get_stream(void *instance) { static BaseSequentialStream *node_file_get_stream(void *instance) {
vfs_sfs_file_node_c *sffnp = (vfs_sfs_file_node_c *)instance; vfs_sfs_file_node_c *fnp = (vfs_sfs_file_node_c *)instance;
return &sffnp->stream; return &fnp->stream;
} }
static ssize_t node_file_read(void *instance, uint8_t *buf, size_t n) { static ssize_t node_file_read(void *instance, uint8_t *buf, size_t n) {
vfs_sfs_file_node_c *sffnp = (vfs_sfs_file_node_c *)instance; vfs_sfs_file_node_c *fnp = (vfs_sfs_file_node_c *)instance;
(void)sffnp; (void)fnp;
(void)buf; (void)buf;
(void)n; (void)n;
@ -233,9 +234,9 @@ static ssize_t node_file_read(void *instance, uint8_t *buf, size_t n) {
} }
static ssize_t node_file_write(void *instance, const uint8_t *buf, size_t n) { static ssize_t node_file_write(void *instance, const uint8_t *buf, size_t n) {
vfs_sfs_file_node_c *sffnp = (vfs_sfs_file_node_c *)instance; vfs_sfs_file_node_c *fnp = (vfs_sfs_file_node_c *)instance;
(void)sffnp; (void)fnp;
(void)buf; (void)buf;
(void)n; (void)n;
@ -243,29 +244,36 @@ static ssize_t node_file_write(void *instance, const uint8_t *buf, size_t n) {
} }
static msg_t node_file_setpos(void *instance, vfs_offset_t offset) { static msg_t node_file_setpos(void *instance, vfs_offset_t offset) {
vfs_sfs_file_node_c *sffnp = (vfs_sfs_file_node_c *)instance; vfs_sfs_file_node_c *fnp = (vfs_sfs_file_node_c *)instance;
(void)fnp;
(void)offset;
return VFS_RET_SUCCESS; return VFS_RET_SUCCESS;
} }
static vfs_offset_t node_file_getpos(void *instance) { static vfs_offset_t node_file_getpos(void *instance) {
vfs_sfs_file_node_c *sffnp = (vfs_sfs_file_node_c *)instance; vfs_sfs_file_node_c *fnp = (vfs_sfs_file_node_c *)instance;
(void)fnp;
return (vfs_offset_t)0; return (vfs_offset_t)0;
} }
static vfs_offset_t node_file_getsize(void *instance) { static vfs_offset_t node_file_getsize(void *instance) {
vfs_sfs_file_node_c *sffnp = (vfs_sfs_file_node_c *)instance; vfs_sfs_file_node_c *fnp = (vfs_sfs_file_node_c *)instance;
(void)fnp;
return (vfs_offset_t)0; return (vfs_offset_t)0;
} }
static size_t file_stream_write(void *instance, const uint8_t *bp, size_t n) { static size_t file_stream_write(void *instance, const uint8_t *bp, size_t n) {
vfs_sfs_file_node_c *sffnp = objGetInstance(vfs_sfs_file_node_c *, vfs_sfs_file_node_c *fnp = objGetInstance(vfs_sfs_file_node_c *,
(BaseSequentialStream *)instance); (BaseSequentialStream *)instance);
msg_t msg; msg_t msg;
msg = sffnp->vmt->file_write((void *)sffnp, bp, n); msg = fnp->vmt->file_write((void *)fnp, bp, n);
if (msg < VFS_RET_SUCCESS) { if (msg < VFS_RET_SUCCESS) {
return (size_t)0; return (size_t)0;
@ -275,11 +283,11 @@ static size_t file_stream_write(void *instance, const uint8_t *bp, size_t n) {
} }
static size_t file_stream_read(void *instance, uint8_t *bp, size_t n) { static size_t file_stream_read(void *instance, uint8_t *bp, size_t n) {
vfs_sfs_file_node_c *sffnp = objGetInstance(vfs_sfs_file_node_c *, vfs_sfs_file_node_c *fnp = objGetInstance(vfs_sfs_file_node_c *,
(BaseSequentialStream *)instance); (BaseSequentialStream *)instance);
msg_t msg; msg_t msg;
msg = sffnp->vmt->file_read((void *)sffnp, bp, n); msg = fnp->vmt->file_read((void *)fnp, bp, n);
if (msg < VFS_RET_SUCCESS) { if (msg < VFS_RET_SUCCESS) {
return (size_t)0; return (size_t)0;
@ -289,11 +297,11 @@ static size_t file_stream_read(void *instance, uint8_t *bp, size_t n) {
} }
static msg_t file_stream_put(void *instance, uint8_t b) { static msg_t file_stream_put(void *instance, uint8_t b) {
vfs_sfs_file_node_c *sffnp = objGetInstance(vfs_sfs_file_node_c *, vfs_sfs_file_node_c *fnp = objGetInstance(vfs_sfs_file_node_c *,
(BaseSequentialStream *)instance); (BaseSequentialStream *)instance);
msg_t msg; msg_t msg;
msg = sffnp->vmt->file_write((void *)sffnp, &b, (size_t)1); msg = fnp->vmt->file_write((void *)fnp, &b, (size_t)1);
if (msg < VFS_RET_SUCCESS) { if (msg < VFS_RET_SUCCESS) {
return STM_TIMEOUT; return STM_TIMEOUT;
@ -303,12 +311,12 @@ static msg_t file_stream_put(void *instance, uint8_t b) {
} }
static msg_t file_stream_get(void *instance) { static msg_t file_stream_get(void *instance) {
vfs_sfs_file_node_c *sffnp = objGetInstance(vfs_sfs_file_node_c *, vfs_sfs_file_node_c *fnp = objGetInstance(vfs_sfs_file_node_c *,
(BaseSequentialStream *)instance); (BaseSequentialStream *)instance);
msg_t msg; msg_t msg;
uint8_t b; uint8_t b;
msg = sffnp->vmt->file_read((void *)sffnp, &b, (size_t)1); msg = fnp->vmt->file_read((void *)fnp, &b, (size_t)1);
if (msg < VFS_RET_SUCCESS) { if (msg < VFS_RET_SUCCESS) {
return STM_TIMEOUT; return STM_TIMEOUT;
@ -348,19 +356,19 @@ void __drv_sfs_init(void) {
/** /**
* @brief VFS FatFS object initialization. * @brief VFS FatFS object initialization.
* *
* @param[out] vsfdp pointer to a @p vfs_sfs_driver_c structure * @param[out] drvp pointer to a @p vfs_sfs_driver_c structure
* @param[in] rootname name to be attributed to this object * @param[in] rootname name to be attributed to this object
* @return A pointer to this initialized object. * @return A pointer to this initialized object.
* *
* @api * @api
*/ */
vfs_driver_c *drvFatFSObjectInit(vfs_sfs_driver_c *vsfdp, vfs_driver_c *drvSFSObjectInit(vfs_sfs_driver_c *drvp,
const char *rootname) { const char *rootname) {
__base_object_objinit_impl(vsfdp, &driver_vmt); __base_object_objinit_impl(drvp, &driver_vmt);
vsfdp->rootname = rootname; drvp->rootname = rootname;
return (vfs_driver_c *)vsfdp; return (vfs_driver_c *)drvp;
} }
#endif /* VFS_CFG_ENABLE_DRV_SFS == TRUE */ #endif /* VFS_CFG_ENABLE_DRV_SFS == TRUE */

View File

@ -166,7 +166,7 @@ typedef struct vfs_sfs_driver {
extern "C" { extern "C" {
#endif #endif
void __drv_sfs_init(void); void __drv_sfs_init(void);
vfs_driver_c *drvSFSObjectInit(vfs_sfs_driver_c *vsfdp, vfs_driver_c *drvSFSObjectInit(vfs_sfs_driver_c *drvp,
const char *rootname); const char *rootname);
#ifdef __cplusplus #ifdef __cplusplus
} }