| /* |
| * Copyright (c) 2016, Texas Instruments Incorporated |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * * Neither the name of Texas Instruments Incorporated nor the names of |
| * its contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
| * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| /** ============================================================================ |
| * @file SDFatFS.h |
| * |
| * @brief FATFS driver interface |
| * |
| * The SDFatFS header file should be included in an application as follows: |
| * @code |
| * #include <ti/drivers/SDFatFS.h> |
| * #include <ti/drivers/SD.h> |
| * @endcode |
| * |
| * # Operation # |
| * |
| * The SDFatFS driver is designed to hook into FatFs by implementing a |
| * set of functions that FatFs needs to call to perform basic block data |
| * transfers. This driver makes use of the SD driver for lower level disk IO |
| * operations. |
| * |
| * The only functions that should be called by the application are the |
| * standard driver framework functions (_open, _close, etc...). |
| * |
| * The application may use the FatFs APIs or the standard C |
| * runtime file I/O calls (fopen, fclose, etc...) given that SDFatFS_open has |
| * has been successfully called. After the SDFatFS_close API is called, |
| * ensure the application does NOT make any file I/O calls. |
| * |
| * ## Opening the driver # |
| * |
| * @code |
| * SDFatFS_Handle handle; |
| * |
| * handle = SDFatFS_open(index, driveNum, NULL); |
| * if (!handle) { |
| * System_printf("Error opening SDFatFS driver\n"); |
| * } |
| * @endcode |
| * |
| * # Implementation # |
| * |
| * The SDFatFS driver interface module is joined (at link time) to a NULL |
| * terminated array of SDFatFS_Config data structures named *SDFatFS_config*. |
| * *SDFatFS_config* is implemented in the application with each entry being an |
| * instance of the driver. Each entry in *SDFatFS_config* contains a: |
| * - (void *) data object that contains internal driver data structures |
| * |
| * # Instrumentation # |
| * |
| * The SDFatFS driver interface produces log statements if |
| * instrumentation is enabled. |
| * |
| * Diagnostics Mask | Log details | |
| * ---------------- | ----------- | |
| * Diags_USER1 | basic operations performed | |
| * Diags_USER2 | detailed operations performed | |
| * ============================================================================ |
| */ |
| |
| #ifndef ti_drivers_SDFatFS__include |
| #define ti_drivers_SDFatFS__include |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <stdint.h> |
| #include <ti/drivers/SD.h> |
| |
| #include <third_party/fatfs/ff.h> |
| #include <third_party/fatfs/diskio.h> |
| |
| /*! |
| * @brief SDFatFS Object |
| * The application must not access any member variables of this structure! |
| */ |
| typedef struct SDFatFS_Object_ { |
| uint_fast32_t driveNum; |
| DSTATUS diskState; |
| FATFS filesystem; /* FATFS data object */ |
| SD_Handle sdHandle; |
| } SDFatFS_Object; |
| |
| /*! |
| * @brief A handle that is returned from a SDFatFS_open() call. |
| */ |
| typedef struct SDFatFS_Config_ *SDFatFS_Handle; |
| |
| |
| /*! |
| * @brief SDFatFS Global configuration |
| * |
| * The SDFatFS_Config structure contains a single pointer used to characterize |
| * the SDFatFS driver implementation. |
| * |
| * This structure needs to be defined before calling SDFatFS_init() and it must |
| * not be changed thereafter. |
| * |
| * @sa SDFatFS_init() |
| */ |
| typedef struct SDFatFS_Config_ { |
| /*! Pointer to a SDFatFS object */ |
| void *object; |
| } SDFatFS_Config; |
| |
| /*! |
| * @brief Function to open a SDFatFS instance on the specified drive. |
| * |
| * Function to mount the FatFs filesystem and register the SDFatFS disk |
| * I/O functions with the FatFS module. |
| * |
| * @param idx Logical peripheral number indexed into the HWAttrs |
| * table. |
| * @param drive Drive Number |
| */ |
| extern SDFatFS_Handle SDFatFS_open(uint_least8_t idx, uint_least8_t drive); |
| |
| /*! |
| * @brief Function to close a SDFatFS instance specified by the SDFatFS |
| * handle. |
| * |
| * This function unmounts the file system mounted by SDFatFS_open and |
| * unregisters the SDFatFS driver from the FatFs module. |
| * |
| * @pre SDFatFS_open() had to be called first. |
| * |
| * @param handle A SDFatFS handle returned from SDFatFS_open |
| * |
| * @sa SDFatFS_open() |
| */ |
| extern void SDFatFS_close(SDFatFS_Handle handle); |
| |
| /*! |
| * Function to initialize a SDFatFS instance |
| */ |
| extern void SDFatFS_init(void); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* ti_drivers_SDFatFS__include */ |