Subdirectory provided by Embedded Artists
Dependencies: DM_FATFileSystem DM_HttpServer DM_USBHost EthernetInterface USBDevice mbed-rpc mbed-rtos mbed-src
Dependents: lpc4088_displaymodule_hello_world_Sept_2018
Fork of DMSupport by
Diff: FileSystems/RAMFileSystem.cpp
- Revision:
- 0:6b68dac0d986
- Child:
- 9:a33326afd686
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FileSystems/RAMFileSystem.cpp Fri Nov 21 11:42:51 2014 +0000 @@ -0,0 +1,56 @@ +#include "RAMFileSystem.h" +#include "mbed_debug.h" + +#define RAMFS_DBG 0 + +#define SECTOR_SIZE 512 + +RAMFileSystem::RAMFileSystem(uint32_t addr, uint32_t size, const char* name) : + FATFileSystem(name) { + memStart = addr; + memSize = size - (size % SECTOR_SIZE); + status = 1; //1: disk not initialized +} + +int RAMFileSystem::disk_initialize() { + debug_if(RAMFS_DBG, "init RAM fs\n"); + status = 0; //OK + return status; +} + +int RAMFileSystem::disk_write(const uint8_t *buffer, uint64_t sector, uint8_t count) { + debug_if(RAMFS_DBG, "write to sector(s) %llu..%llu\n", sector, sector+count); + if ((sector+count-1) >= disk_sectors()) { + return 1; + } + + memcpy((uint8_t*)(memStart + SECTOR_SIZE*((uint32_t)sector)), buffer, SECTOR_SIZE*count); + return 0; +} + +int RAMFileSystem::disk_read(uint8_t *buffer, uint64_t sector, uint8_t count) { + debug_if(RAMFS_DBG, "read from sector(s) %llu..%llu\n", sector, sector+count); + if ((sector+count-1) >= disk_sectors()) { + return 1; + } + + memcpy(buffer, (uint8_t*)(memStart + SECTOR_SIZE*((uint32_t)sector)), SECTOR_SIZE*count); + return 0; +} + +int RAMFileSystem::disk_status() { + debug_if(RAMFS_DBG, "disk status %d\n", status); + return status; +} +int RAMFileSystem::disk_sync() { + return 0; +} +uint64_t RAMFileSystem::disk_sectors() { + debug_if(RAMFS_DBG, "returning fs has %u sectors\n", memSize/SECTOR_SIZE); + return memSize/SECTOR_SIZE; +} + +uint64_t RAMFileSystem::disk_size() { + return memSize; +} +