lauren cloutier / SDFileSystem

Dependents:   cloutier_a8_gps_log

Committer:
laurencloutier
Date:
Tue Nov 17 22:06:26 2020 +0000
Revision:
0:a01a54336813
sd file system;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
laurencloutier 0:a01a54336813 1 /* mbed Microcontroller Library
laurencloutier 0:a01a54336813 2 * Copyright (c) 2006-2012 ARM Limited
laurencloutier 0:a01a54336813 3 *
laurencloutier 0:a01a54336813 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
laurencloutier 0:a01a54336813 5 * of this software and associated documentation files (the "Software"), to deal
laurencloutier 0:a01a54336813 6 * in the Software without restriction, including without limitation the rights
laurencloutier 0:a01a54336813 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
laurencloutier 0:a01a54336813 8 * copies of the Software, and to permit persons to whom the Software is
laurencloutier 0:a01a54336813 9 * furnished to do so, subject to the following conditions:
laurencloutier 0:a01a54336813 10 *
laurencloutier 0:a01a54336813 11 * The above copyright notice and this permission notice shall be included in
laurencloutier 0:a01a54336813 12 * all copies or substantial portions of the Software.
laurencloutier 0:a01a54336813 13 *
laurencloutier 0:a01a54336813 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
laurencloutier 0:a01a54336813 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
laurencloutier 0:a01a54336813 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
laurencloutier 0:a01a54336813 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
laurencloutier 0:a01a54336813 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
laurencloutier 0:a01a54336813 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
laurencloutier 0:a01a54336813 20 * SOFTWARE.
laurencloutier 0:a01a54336813 21 */
laurencloutier 0:a01a54336813 22 #ifndef MBED_FATFILESYSTEM_H
laurencloutier 0:a01a54336813 23 #define MBED_FATFILESYSTEM_H
laurencloutier 0:a01a54336813 24
laurencloutier 0:a01a54336813 25 #include "FileSystemLike.h"
laurencloutier 0:a01a54336813 26 #include "FileHandle.h"
laurencloutier 0:a01a54336813 27 #include "ff.h"
laurencloutier 0:a01a54336813 28 #include <stdint.h>
laurencloutier 0:a01a54336813 29
laurencloutier 0:a01a54336813 30 using namespace mbed;
laurencloutier 0:a01a54336813 31
laurencloutier 0:a01a54336813 32 /**
laurencloutier 0:a01a54336813 33 * FATFileSystem based on ChaN's Fat Filesystem library v0.8
laurencloutier 0:a01a54336813 34 */
laurencloutier 0:a01a54336813 35 class FATFileSystem : public FileSystemLike {
laurencloutier 0:a01a54336813 36 public:
laurencloutier 0:a01a54336813 37
laurencloutier 0:a01a54336813 38 FATFileSystem(const char* n);
laurencloutier 0:a01a54336813 39 virtual ~FATFileSystem();
laurencloutier 0:a01a54336813 40
laurencloutier 0:a01a54336813 41 static FATFileSystem * _ffs[_VOLUMES]; // FATFileSystem objects, as parallel to FatFs drives array
laurencloutier 0:a01a54336813 42 FATFS _fs; // Work area (file system object) for logical drive
laurencloutier 0:a01a54336813 43 char _fsid[2];
laurencloutier 0:a01a54336813 44
laurencloutier 0:a01a54336813 45 /**
laurencloutier 0:a01a54336813 46 * Opens a file on the filesystem
laurencloutier 0:a01a54336813 47 */
laurencloutier 0:a01a54336813 48 virtual FileHandle *open(const char* name, int flags);
laurencloutier 0:a01a54336813 49 virtual int open(FileHandle **file, const char *name, int flags);
laurencloutier 0:a01a54336813 50
laurencloutier 0:a01a54336813 51 /**
laurencloutier 0:a01a54336813 52 * Removes a file path
laurencloutier 0:a01a54336813 53 */
laurencloutier 0:a01a54336813 54 virtual int remove(const char *filename);
laurencloutier 0:a01a54336813 55
laurencloutier 0:a01a54336813 56 /**
laurencloutier 0:a01a54336813 57 * Renames a file
laurencloutier 0:a01a54336813 58 */
laurencloutier 0:a01a54336813 59 virtual int rename(const char *oldname, const char *newname);
laurencloutier 0:a01a54336813 60
laurencloutier 0:a01a54336813 61 /**
laurencloutier 0:a01a54336813 62 * Formats a logical drive, FDISK artitioning rule, 512 bytes per cluster
laurencloutier 0:a01a54336813 63 */
laurencloutier 0:a01a54336813 64 virtual int format();
laurencloutier 0:a01a54336813 65
laurencloutier 0:a01a54336813 66 /**
laurencloutier 0:a01a54336813 67 * Opens a directory on the filesystem
laurencloutier 0:a01a54336813 68 */
laurencloutier 0:a01a54336813 69 virtual DirHandle *opendir(const char *name);
laurencloutier 0:a01a54336813 70 virtual int open(DirHandle **dir, const char *name);
laurencloutier 0:a01a54336813 71
laurencloutier 0:a01a54336813 72 /**
laurencloutier 0:a01a54336813 73 * Creates a directory path
laurencloutier 0:a01a54336813 74 */
laurencloutier 0:a01a54336813 75 virtual int mkdir(const char *name, mode_t mode);
laurencloutier 0:a01a54336813 76
laurencloutier 0:a01a54336813 77 /**
laurencloutier 0:a01a54336813 78 * Mounts the filesystem
laurencloutier 0:a01a54336813 79 */
laurencloutier 0:a01a54336813 80 virtual int mount();
laurencloutier 0:a01a54336813 81
laurencloutier 0:a01a54336813 82 /**
laurencloutier 0:a01a54336813 83 * Unmounts the filesystem
laurencloutier 0:a01a54336813 84 */
laurencloutier 0:a01a54336813 85 virtual int unmount();
laurencloutier 0:a01a54336813 86
laurencloutier 0:a01a54336813 87 virtual int disk_initialize() { return 0; }
laurencloutier 0:a01a54336813 88 virtual int disk_status() { return 0; }
laurencloutier 0:a01a54336813 89 virtual int disk_read(uint8_t *buffer, uint32_t sector, uint32_t count) = 0;
laurencloutier 0:a01a54336813 90 virtual int disk_write(const uint8_t *buffer, uint32_t sector, uint32_t count) = 0;
laurencloutier 0:a01a54336813 91 virtual int disk_sync() { return 0; }
laurencloutier 0:a01a54336813 92 virtual uint32_t disk_sectors() = 0;
laurencloutier 0:a01a54336813 93
laurencloutier 0:a01a54336813 94 };
laurencloutier 0:a01a54336813 95
laurencloutier 0:a01a54336813 96 #endif