uint8_t read() { if(!fp) return 0xff; //file not open if(file_mode == mode::write) return 0xff; //reads not permitted if(file_offset >= file_size) return 0xff; //cannot read past end of file buffer_sync(); return buffer[(file_offset++) & buffer_mask]; }
void write(uint8_t data) { if(!fp) return; //file not open if(file_mode == mode::read) return; //writes not permitted buffer_sync(); buffer[(file_offset++) & buffer_mask] = data; buffer_dirty = true; if(file_offset > file_size) file_size = file_offset; }
Error fs_file_close(FileIndex file) { CheckB(file < FS_MAX_OPEN_DIRS); CheckB(_file[file].initialized); buffer_sync(); _file[file].initialized = false; return success; }
Error fs_dir_close(DirIndex dir) { CheckB(dir < FS_MAX_OPEN_DIRS); CheckB(_directory[dir].initialized); buffer_sync(); _directory[dir].initialized = false; return success; }
Error fs_file_sync(FileIndex file) { buffer_sync(); return success; }