From 0deff4750e9aa70a01c5c7db6aeb3f32024df352 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 9 May 2016 11:59:51 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9455 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ex/Micron/n25q128.h | 4 +- os/ex/subsystems/mfs/mfs.c | 104 +++++++++++++++++++++++++++++++++++++++++ os/ex/subsystems/mfs/mfs.h | 111 ++++++++++++++++++++++++++++++++++++++++++++ os/ex/subsystems/mfs/mfs.mk | 5 ++ 4 files changed, 222 insertions(+), 2 deletions(-) create mode 100644 os/ex/subsystems/mfs/mfs.c create mode 100644 os/ex/subsystems/mfs/mfs.h create mode 100644 os/ex/subsystems/mfs/mfs.mk (limited to 'os/ex') diff --git a/os/ex/Micron/n25q128.h b/os/ex/Micron/n25q128.h index bcd1ff97b..9ae12f1bd 100644 --- a/os/ex/Micron/n25q128.h +++ b/os/ex/Micron/n25q128.h @@ -137,11 +137,11 @@ */ typedef struct { /** - * @brief SPI driver associated to this L3GD20. + * @brief SPI driver associated to this L3GD20. */ SPIDriver *spip; /** - * @brief SPI configuration associated to this L3GD20. + * @brief SPI configuration associated to this L3GD20. */ const SPIConfig *spicfg; } N25Q128Config; diff --git a/os/ex/subsystems/mfs/mfs.c b/os/ex/subsystems/mfs/mfs.c new file mode 100644 index 000000000..7380c34a3 --- /dev/null +++ b/os/ex/subsystems/mfs/mfs.c @@ -0,0 +1,104 @@ +/* + Managed Flash Storage - Copyright (C) 2016 Giovanni Di Sirio + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file mfs.c + * @brief Managed Flash Storage module code. + * + * @addtogroup mfs + * @{ + */ + +#include "hal.h" + +#include "mfs.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local variables and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Initializes an instance. + * + * @param[out] devp pointer to the @p MFSDriver object + * + * @init + */ +void mfsObjectInit(MFSDriver *devp) { + + osalDbgCheck(devp != NULL); + + devp->state = MFS_STOP; + devp->config = NULL; +} + +/** + * @brief Configures and activates a MFS driver. + * + * @param[in] devp pointer to the @p MFSDriver object + * @param[in] config pointer to the configuration + * + * @api + */ +void mfsStart(MFSDriver *devp, const MFSConfig *config) { + + osalDbgCheck((devp != NULL) && (config != NULL)); + osalDbgAssert(devp->state != MFS_UNINIT, "invalid state"); + + if (devp->state == MFS_STOP) { + + devp->state = MFS_READY; + } +} + +/** + * @brief Deactivates a MFS driver. + * + * @param[in] devp pointer to the @p MFSDriver object + * + * @api + */ +void mfsStop(MFSDriver *devp) { + + osalDbgCheck(devp != NULL); + osalDbgAssert(devp->state != MFS_UNINIT, "invalid state"); + + if (devp->state != MFS_STOP) { + + devp->state = MFS_STOP; + } +} + +/** @} */ diff --git a/os/ex/subsystems/mfs/mfs.h b/os/ex/subsystems/mfs/mfs.h new file mode 100644 index 000000000..a47c25c47 --- /dev/null +++ b/os/ex/subsystems/mfs/mfs.h @@ -0,0 +1,111 @@ +/* + Managed Flash Storage - Copyright (C) 2016 Giovanni Di Sirio + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file mfs.h + * @brief Managed Flash Storage module header. + * + * @{ + */ + +#ifndef MFS_H +#define MFS_H + +#include "hal_flash.h" + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/** + * @name Configuration options + * @{ + */ +/** @} */ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief Driver state machine possible states. + */ +typedef enum { + MFS_UNINIT = 0, + MFS_STOP = 1, + MFS_READY = 2, + MFS_ACTIVE = 3 +} mfs_state_t; + +/** + * @brief Type of a MFS configuration structure. + */ +typedef struct { + /** + * @brief Flash driver associated to this MFS instance. + */ + BaseFlash *flashp; +} MFSConfig; + +/** + * @extends BaseFlash + * + * @brief Type of an MFS instance. + */ +typedef struct { + /** + * @brief Driver state. + */ + mfs_state_t state; + /** + * @brief Current configuration data. + */ + const MFSConfig *config; +} MFSDriver; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void mfsObjectInit(MFSDriver *devp); + void mfsStart(MFSDriver *devp, const MFSConfig *config); + void mfsStop(MFSDriver *devp); +#ifdef __cplusplus +} +#endif + +#endif /* MFS_H */ + +/** @} */ + diff --git a/os/ex/subsystems/mfs/mfs.mk b/os/ex/subsystems/mfs/mfs.mk new file mode 100644 index 000000000..488977e70 --- /dev/null +++ b/os/ex/subsystems/mfs/mfs.mk @@ -0,0 +1,5 @@ +# List of all the MFS subsystem files. +MFSSRC := $(CHIBIOS)/os/ex/subsystems/mfs/mfs.c + +# Required include directories +MFSINC := $(CHIBIOS)/os/ex/subsystems/mfs \ No newline at end of file -- cgit v1.2.3