Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MemFileSystem.h
00001 /* mbed Microcontroller Library - MemFileSystem 00002 * Copyright (c) 2008, sford 00003 */ 00004 00005 00006 #ifndef MBED_MEMFILESYSTEM_H 00007 #define MBED_MEMFILESYSTEM_H 00008 00009 #include "FATFileSystem.h" 00010 00011 namespace mbed { 00012 00013 class MemFileSystem : public FATFileSystem { 00014 public: 00015 00016 // 2000 sectors, each 512 bytes (malloced as required) 00017 char *sectors[2000]; 00018 00019 MemFileSystem(const char* name) : FATFileSystem(name) { 00020 memset(sectors, 0, 2000); 00021 } 00022 00023 virtual ~MemFileSystem() { 00024 for(int i = 0; i < 2000; i++) { 00025 if(sectors[i]) { 00026 free(sectors[i]); 00027 } 00028 } 00029 } 00030 00031 // read a sector in to the buffer, return 0 if ok 00032 virtual int disk_read(char *buffer, int sector) { 00033 if(sectors[sector] == 0) { 00034 // nothing allocated means sector is empty 00035 memset(buffer, 0, 512); 00036 } else { 00037 memcpy(buffer, sectors[sector], 512); 00038 } 00039 return 0; 00040 } 00041 00042 // write a sector from the buffer, return 0 if ok 00043 virtual int disk_write(const char *buffer, int sector) { 00044 // if buffer is zero deallocate sector 00045 char zero[512]; 00046 memset(zero, 0, 512); 00047 if(memcmp(zero, buffer, 512)==0) { 00048 if(sectors[sector] != 0) { 00049 free(sectors[sector]); 00050 sectors[sector] = 0; 00051 } 00052 return 0; 00053 } 00054 // else allocate a sector if needed, and write 00055 if(sectors[sector] == 0) { 00056 char *sec = (char*)malloc(512); 00057 if(sec==0) { 00058 return 1; // out of memory 00059 } 00060 sectors[sector] = sec; 00061 } 00062 memcpy(sectors[sector], buffer, 512); 00063 return 0; 00064 } 00065 00066 // return the number of sectors 00067 virtual int disk_sectors() { 00068 return 2000; 00069 } 00070 00071 }; 00072 00073 } 00074 00075 #endif
Generated on Tue Jul 12 2022 17:50:56 by
