Rahul Dahiya / Mbed OS STM32F7 Ethernet
Committer:
rahul_dahiya
Date:
Wed Jan 15 15:57:15 2020 +0530
Revision:
0:fb8047b156bb
STM32F7 LWIP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rahul_dahiya 0:fb8047b156bb 1 /* mbed Microcontroller Library
rahul_dahiya 0:fb8047b156bb 2 * Copyright (c) 2006-2013 ARM Limited
rahul_dahiya 0:fb8047b156bb 3 *
rahul_dahiya 0:fb8047b156bb 4 * Licensed under the Apache License, Version 2.0 (the "License");
rahul_dahiya 0:fb8047b156bb 5 * you may not use this file except in compliance with the License.
rahul_dahiya 0:fb8047b156bb 6 * You may obtain a copy of the License at
rahul_dahiya 0:fb8047b156bb 7 *
rahul_dahiya 0:fb8047b156bb 8 * http://www.apache.org/licenses/LICENSE-2.0
rahul_dahiya 0:fb8047b156bb 9 *
rahul_dahiya 0:fb8047b156bb 10 * Unless required by applicable law or agreed to in writing, software
rahul_dahiya 0:fb8047b156bb 11 * distributed under the License is distributed on an "AS IS" BASIS,
rahul_dahiya 0:fb8047b156bb 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rahul_dahiya 0:fb8047b156bb 13 * See the License for the specific language governing permissions and
rahul_dahiya 0:fb8047b156bb 14 * limitations under the License.
rahul_dahiya 0:fb8047b156bb 15 */
rahul_dahiya 0:fb8047b156bb 16
rahul_dahiya 0:fb8047b156bb 17 #include "mbed.h"
rahul_dahiya 0:fb8047b156bb 18 #include "filesystem/Dir.h"
rahul_dahiya 0:fb8047b156bb 19 #include "filesystem/File.h"
rahul_dahiya 0:fb8047b156bb 20 #include "filesystem/FileSystem.h"
rahul_dahiya 0:fb8047b156bb 21 #include <errno.h>
rahul_dahiya 0:fb8047b156bb 22
rahul_dahiya 0:fb8047b156bb 23
rahul_dahiya 0:fb8047b156bb 24 FileSystem::FileSystem(const char *name)
rahul_dahiya 0:fb8047b156bb 25 : FileSystemLike(name)
rahul_dahiya 0:fb8047b156bb 26 {
rahul_dahiya 0:fb8047b156bb 27 }
rahul_dahiya 0:fb8047b156bb 28
rahul_dahiya 0:fb8047b156bb 29 int FileSystem::reformat(BlockDevice *bd)
rahul_dahiya 0:fb8047b156bb 30 {
rahul_dahiya 0:fb8047b156bb 31 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 32 }
rahul_dahiya 0:fb8047b156bb 33
rahul_dahiya 0:fb8047b156bb 34 int FileSystem::remove(const char *path)
rahul_dahiya 0:fb8047b156bb 35 {
rahul_dahiya 0:fb8047b156bb 36 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 37 }
rahul_dahiya 0:fb8047b156bb 38
rahul_dahiya 0:fb8047b156bb 39 int FileSystem::rename(const char *path, const char *newpath)
rahul_dahiya 0:fb8047b156bb 40 {
rahul_dahiya 0:fb8047b156bb 41 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 42 }
rahul_dahiya 0:fb8047b156bb 43
rahul_dahiya 0:fb8047b156bb 44 int FileSystem::stat(const char *path, struct stat *st)
rahul_dahiya 0:fb8047b156bb 45 {
rahul_dahiya 0:fb8047b156bb 46 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 47 }
rahul_dahiya 0:fb8047b156bb 48
rahul_dahiya 0:fb8047b156bb 49 int FileSystem::mkdir(const char *path, mode_t mode)
rahul_dahiya 0:fb8047b156bb 50 {
rahul_dahiya 0:fb8047b156bb 51 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 52 }
rahul_dahiya 0:fb8047b156bb 53
rahul_dahiya 0:fb8047b156bb 54 int FileSystem::file_sync(fs_file_t file)
rahul_dahiya 0:fb8047b156bb 55 {
rahul_dahiya 0:fb8047b156bb 56 return 0;
rahul_dahiya 0:fb8047b156bb 57 }
rahul_dahiya 0:fb8047b156bb 58
rahul_dahiya 0:fb8047b156bb 59 int FileSystem::file_isatty(fs_file_t file)
rahul_dahiya 0:fb8047b156bb 60 {
rahul_dahiya 0:fb8047b156bb 61 return false;
rahul_dahiya 0:fb8047b156bb 62 }
rahul_dahiya 0:fb8047b156bb 63
rahul_dahiya 0:fb8047b156bb 64 off_t FileSystem::file_tell(fs_file_t file)
rahul_dahiya 0:fb8047b156bb 65 {
rahul_dahiya 0:fb8047b156bb 66 return file_seek(file, 0, SEEK_CUR);
rahul_dahiya 0:fb8047b156bb 67 }
rahul_dahiya 0:fb8047b156bb 68
rahul_dahiya 0:fb8047b156bb 69 void FileSystem::file_rewind(fs_file_t file)
rahul_dahiya 0:fb8047b156bb 70 {
rahul_dahiya 0:fb8047b156bb 71 file_seek(file, 0, SEEK_SET);
rahul_dahiya 0:fb8047b156bb 72 }
rahul_dahiya 0:fb8047b156bb 73
rahul_dahiya 0:fb8047b156bb 74 off_t FileSystem::file_size(fs_file_t file)
rahul_dahiya 0:fb8047b156bb 75 {
rahul_dahiya 0:fb8047b156bb 76 off_t off = file_tell(file);
rahul_dahiya 0:fb8047b156bb 77 off_t size = file_seek(file, 0, SEEK_END);
rahul_dahiya 0:fb8047b156bb 78 file_seek(file, off, SEEK_SET);
rahul_dahiya 0:fb8047b156bb 79 return size;
rahul_dahiya 0:fb8047b156bb 80 }
rahul_dahiya 0:fb8047b156bb 81
rahul_dahiya 0:fb8047b156bb 82 int FileSystem::dir_open(fs_dir_t *dir, const char *path)
rahul_dahiya 0:fb8047b156bb 83 {
rahul_dahiya 0:fb8047b156bb 84 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 85 }
rahul_dahiya 0:fb8047b156bb 86
rahul_dahiya 0:fb8047b156bb 87 int FileSystem::dir_close(fs_dir_t dir)
rahul_dahiya 0:fb8047b156bb 88 {
rahul_dahiya 0:fb8047b156bb 89 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 90 }
rahul_dahiya 0:fb8047b156bb 91
rahul_dahiya 0:fb8047b156bb 92 ssize_t FileSystem::dir_read(fs_dir_t dir, struct dirent *ent)
rahul_dahiya 0:fb8047b156bb 93 {
rahul_dahiya 0:fb8047b156bb 94 return -ENOSYS;
rahul_dahiya 0:fb8047b156bb 95 }
rahul_dahiya 0:fb8047b156bb 96
rahul_dahiya 0:fb8047b156bb 97 void FileSystem::dir_seek(fs_dir_t dir, off_t offset)
rahul_dahiya 0:fb8047b156bb 98 {
rahul_dahiya 0:fb8047b156bb 99 }
rahul_dahiya 0:fb8047b156bb 100
rahul_dahiya 0:fb8047b156bb 101 off_t FileSystem::dir_tell(fs_dir_t dir)
rahul_dahiya 0:fb8047b156bb 102 {
rahul_dahiya 0:fb8047b156bb 103 return 0;
rahul_dahiya 0:fb8047b156bb 104 }
rahul_dahiya 0:fb8047b156bb 105
rahul_dahiya 0:fb8047b156bb 106 void FileSystem::dir_rewind(fs_dir_t dir)
rahul_dahiya 0:fb8047b156bb 107 {
rahul_dahiya 0:fb8047b156bb 108 // Note, the may not satisfy rewind on all filesystems
rahul_dahiya 0:fb8047b156bb 109 dir_seek(dir, 0);
rahul_dahiya 0:fb8047b156bb 110 }
rahul_dahiya 0:fb8047b156bb 111
rahul_dahiya 0:fb8047b156bb 112 size_t FileSystem::dir_size(fs_dir_t dir)
rahul_dahiya 0:fb8047b156bb 113 {
rahul_dahiya 0:fb8047b156bb 114 off_t off = dir_tell(dir);
rahul_dahiya 0:fb8047b156bb 115 size_t size = 0;
rahul_dahiya 0:fb8047b156bb 116 struct dirent *ent = new struct dirent;
rahul_dahiya 0:fb8047b156bb 117
rahul_dahiya 0:fb8047b156bb 118 dir_rewind(dir);
rahul_dahiya 0:fb8047b156bb 119 while (true) {
rahul_dahiya 0:fb8047b156bb 120 int res = dir_read(dir, ent);
rahul_dahiya 0:fb8047b156bb 121 if (res <= 0) {
rahul_dahiya 0:fb8047b156bb 122 break;
rahul_dahiya 0:fb8047b156bb 123 }
rahul_dahiya 0:fb8047b156bb 124
rahul_dahiya 0:fb8047b156bb 125 size += 1;
rahul_dahiya 0:fb8047b156bb 126 }
rahul_dahiya 0:fb8047b156bb 127 dir_seek(dir, off);
rahul_dahiya 0:fb8047b156bb 128
rahul_dahiya 0:fb8047b156bb 129 delete ent;
rahul_dahiya 0:fb8047b156bb 130 return size;
rahul_dahiya 0:fb8047b156bb 131 }
rahul_dahiya 0:fb8047b156bb 132
rahul_dahiya 0:fb8047b156bb 133 // Internally used file wrapper that manages memory on close
rahul_dahiya 0:fb8047b156bb 134 template <typename F>
rahul_dahiya 0:fb8047b156bb 135 class Managed : public F {
rahul_dahiya 0:fb8047b156bb 136 public:
rahul_dahiya 0:fb8047b156bb 137 virtual int close() {
rahul_dahiya 0:fb8047b156bb 138 int err = F::close();
rahul_dahiya 0:fb8047b156bb 139 delete this;
rahul_dahiya 0:fb8047b156bb 140 return err;
rahul_dahiya 0:fb8047b156bb 141 }
rahul_dahiya 0:fb8047b156bb 142 };
rahul_dahiya 0:fb8047b156bb 143
rahul_dahiya 0:fb8047b156bb 144 int FileSystem::open(FileHandle **file, const char *path, int flags)
rahul_dahiya 0:fb8047b156bb 145 {
rahul_dahiya 0:fb8047b156bb 146 File *f = new Managed<File>;
rahul_dahiya 0:fb8047b156bb 147 int err = f->open(this, path, flags);
rahul_dahiya 0:fb8047b156bb 148 if (err) {
rahul_dahiya 0:fb8047b156bb 149 delete f;
rahul_dahiya 0:fb8047b156bb 150 return err;
rahul_dahiya 0:fb8047b156bb 151 }
rahul_dahiya 0:fb8047b156bb 152
rahul_dahiya 0:fb8047b156bb 153 *file = f;
rahul_dahiya 0:fb8047b156bb 154 return 0;
rahul_dahiya 0:fb8047b156bb 155 }
rahul_dahiya 0:fb8047b156bb 156
rahul_dahiya 0:fb8047b156bb 157 int FileSystem::open(DirHandle **dir, const char *path) {
rahul_dahiya 0:fb8047b156bb 158 Dir *d = new Managed<Dir>;
rahul_dahiya 0:fb8047b156bb 159 int err = d->open(this, path);
rahul_dahiya 0:fb8047b156bb 160 if (err) {
rahul_dahiya 0:fb8047b156bb 161 delete d;
rahul_dahiya 0:fb8047b156bb 162 return err;
rahul_dahiya 0:fb8047b156bb 163 }
rahul_dahiya 0:fb8047b156bb 164
rahul_dahiya 0:fb8047b156bb 165 *dir = d;
rahul_dahiya 0:fb8047b156bb 166 return 0;
rahul_dahiya 0:fb8047b156bb 167 }