test

Dependencies:   mbed Watchdog

Dependents:   STM32-MC_node

Committer:
ommpy
Date:
Mon Jul 06 17:18:59 2020 +0530
Revision:
0:d383e2dee0f7
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ommpy 0:d383e2dee0f7 1 /* mbed Microcontroller Library
ommpy 0:d383e2dee0f7 2 * Copyright (c) 2006-2013 ARM Limited
ommpy 0:d383e2dee0f7 3 * SPDX-License-Identifier: Apache-2.0
ommpy 0:d383e2dee0f7 4 *
ommpy 0:d383e2dee0f7 5 * Licensed under the Apache License, Version 2.0 (the "License");
ommpy 0:d383e2dee0f7 6 * you may not use this file except in compliance with the License.
ommpy 0:d383e2dee0f7 7 * You may obtain a copy of the License at
ommpy 0:d383e2dee0f7 8 *
ommpy 0:d383e2dee0f7 9 * http://www.apache.org/licenses/LICENSE-2.0
ommpy 0:d383e2dee0f7 10 *
ommpy 0:d383e2dee0f7 11 * Unless required by applicable law or agreed to in writing, software
ommpy 0:d383e2dee0f7 12 * distributed under the License is distributed on an "AS IS" BASIS,
ommpy 0:d383e2dee0f7 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ommpy 0:d383e2dee0f7 14 * See the License for the specific language governing permissions and
ommpy 0:d383e2dee0f7 15 * limitations under the License.
ommpy 0:d383e2dee0f7 16 */
ommpy 0:d383e2dee0f7 17 #ifndef MBED_LOCALFILESYSTEM_H
ommpy 0:d383e2dee0f7 18 #define MBED_LOCALFILESYSTEM_H
ommpy 0:d383e2dee0f7 19
ommpy 0:d383e2dee0f7 20 #include "platform/platform.h"
ommpy 0:d383e2dee0f7 21
ommpy 0:d383e2dee0f7 22 #if DEVICE_LOCALFILESYSTEM
ommpy 0:d383e2dee0f7 23
ommpy 0:d383e2dee0f7 24 #include "platform/FileSystemLike.h"
ommpy 0:d383e2dee0f7 25 #include "platform/PlatformMutex.h"
ommpy 0:d383e2dee0f7 26 #include "platform/NonCopyable.h"
ommpy 0:d383e2dee0f7 27
ommpy 0:d383e2dee0f7 28 namespace mbed {
ommpy 0:d383e2dee0f7 29 /** \addtogroup platform */
ommpy 0:d383e2dee0f7 30 /** @{*/
ommpy 0:d383e2dee0f7 31 /**
ommpy 0:d383e2dee0f7 32 * \defgroup platform_LocalFileSystem LocalFileSystem functions
ommpy 0:d383e2dee0f7 33 * @{
ommpy 0:d383e2dee0f7 34 */
ommpy 0:d383e2dee0f7 35
ommpy 0:d383e2dee0f7 36 FILEHANDLE local_file_open(const char *name, int flags);
ommpy 0:d383e2dee0f7 37
ommpy 0:d383e2dee0f7 38 /**
ommpy 0:d383e2dee0f7 39 * @class LocalFileHandle
ommpy 0:d383e2dee0f7 40 * @ingroup platform
ommpy 0:d383e2dee0f7 41 */
ommpy 0:d383e2dee0f7 42 class LocalFileHandle : public FileHandle, private NonCopyable<LocalFileHandle> {
ommpy 0:d383e2dee0f7 43
ommpy 0:d383e2dee0f7 44 public:
ommpy 0:d383e2dee0f7 45 LocalFileHandle(FILEHANDLE fh);
ommpy 0:d383e2dee0f7 46
ommpy 0:d383e2dee0f7 47 virtual int close();
ommpy 0:d383e2dee0f7 48
ommpy 0:d383e2dee0f7 49 virtual ssize_t write(const void *buffer, size_t length);
ommpy 0:d383e2dee0f7 50
ommpy 0:d383e2dee0f7 51 virtual ssize_t read(void *buffer, size_t length);
ommpy 0:d383e2dee0f7 52
ommpy 0:d383e2dee0f7 53 virtual int isatty();
ommpy 0:d383e2dee0f7 54
ommpy 0:d383e2dee0f7 55 virtual off_t seek(off_t position, int whence);
ommpy 0:d383e2dee0f7 56
ommpy 0:d383e2dee0f7 57 virtual int sync();
ommpy 0:d383e2dee0f7 58
ommpy 0:d383e2dee0f7 59 virtual off_t size();
ommpy 0:d383e2dee0f7 60
ommpy 0:d383e2dee0f7 61 protected:
ommpy 0:d383e2dee0f7 62 virtual void lock();
ommpy 0:d383e2dee0f7 63 virtual void unlock();
ommpy 0:d383e2dee0f7 64 FILEHANDLE _fh;
ommpy 0:d383e2dee0f7 65 int pos;
ommpy 0:d383e2dee0f7 66 PlatformMutex _mutex;
ommpy 0:d383e2dee0f7 67 };
ommpy 0:d383e2dee0f7 68
ommpy 0:d383e2dee0f7 69 /** A filesystem for accessing the local mbed Microcontroller USB disk drive
ommpy 0:d383e2dee0f7 70 *
ommpy 0:d383e2dee0f7 71 * This allows programs to read and write files on the same disk drive that is used to program the
ommpy 0:d383e2dee0f7 72 * mbed Microcontroller. Once created, the standard C file access functions are used to open,
ommpy 0:d383e2dee0f7 73 * read and write files.
ommpy 0:d383e2dee0f7 74 *
ommpy 0:d383e2dee0f7 75 * @note Synchronization level: Thread safe
ommpy 0:d383e2dee0f7 76 *
ommpy 0:d383e2dee0f7 77 * Example:
ommpy 0:d383e2dee0f7 78 * @code
ommpy 0:d383e2dee0f7 79 * #include "mbed.h"
ommpy 0:d383e2dee0f7 80 *
ommpy 0:d383e2dee0f7 81 * LocalFileSystem local("local"); // Create the local filesystem under the name "local"
ommpy 0:d383e2dee0f7 82 *
ommpy 0:d383e2dee0f7 83 * int main() {
ommpy 0:d383e2dee0f7 84 * FILE *fp = fopen("/local/out.txt", "w"); // Open "out.txt" on the local file system for writing
ommpy 0:d383e2dee0f7 85 * fprintf(fp, "Hello World!");
ommpy 0:d383e2dee0f7 86 * fclose(fp);
ommpy 0:d383e2dee0f7 87 * remove("/local/out.txt"); // Removes the file "out.txt" from the local file system
ommpy 0:d383e2dee0f7 88 *
ommpy 0:d383e2dee0f7 89 * DIR *d = opendir("/local"); // Opens the root directory of the local file system
ommpy 0:d383e2dee0f7 90 * struct dirent *p;
ommpy 0:d383e2dee0f7 91 * while((p = readdir(d)) != NULL) { // Print the names of the files in the local file system
ommpy 0:d383e2dee0f7 92 * printf("%s\n", p->d_name); // to stdout.
ommpy 0:d383e2dee0f7 93 * }
ommpy 0:d383e2dee0f7 94 * closedir(d);
ommpy 0:d383e2dee0f7 95 * }
ommpy 0:d383e2dee0f7 96 * @endcode
ommpy 0:d383e2dee0f7 97 *
ommpy 0:d383e2dee0f7 98 * @note
ommpy 0:d383e2dee0f7 99 * If the microcontroller program makes an access to the local drive, it will be marked as "removed"
ommpy 0:d383e2dee0f7 100 * on the Host computer. This means it is no longer accessible from the Host Computer.
ommpy 0:d383e2dee0f7 101 *
ommpy 0:d383e2dee0f7 102 * The drive will only re-appear when the microcontroller program exists. Note that if the program does
ommpy 0:d383e2dee0f7 103 * not exit, you will need to hold down reset on the mbed Microcontroller to be able to see the drive again!
ommpy 0:d383e2dee0f7 104 * @ingroup platform
ommpy 0:d383e2dee0f7 105 */
ommpy 0:d383e2dee0f7 106 class LocalFileSystem : public FileSystemLike, private NonCopyable<LocalFileSystem> {
ommpy 0:d383e2dee0f7 107 // No modifiable state
ommpy 0:d383e2dee0f7 108
ommpy 0:d383e2dee0f7 109 public:
ommpy 0:d383e2dee0f7 110 LocalFileSystem(const char *n) : FileSystemLike(n)
ommpy 0:d383e2dee0f7 111 {
ommpy 0:d383e2dee0f7 112
ommpy 0:d383e2dee0f7 113 }
ommpy 0:d383e2dee0f7 114
ommpy 0:d383e2dee0f7 115 virtual int open(FileHandle **file, const char *path, int flags);
ommpy 0:d383e2dee0f7 116 virtual int open(DirHandle **dir, const char *name);
ommpy 0:d383e2dee0f7 117 virtual int remove(const char *filename);
ommpy 0:d383e2dee0f7 118 };
ommpy 0:d383e2dee0f7 119
ommpy 0:d383e2dee0f7 120 /**@}*/
ommpy 0:d383e2dee0f7 121
ommpy 0:d383e2dee0f7 122 /**@}*/
ommpy 0:d383e2dee0f7 123
ommpy 0:d383e2dee0f7 124 } // namespace mbed
ommpy 0:d383e2dee0f7 125
ommpy 0:d383e2dee0f7 126 #endif
ommpy 0:d383e2dee0f7 127
ommpy 0:d383e2dee0f7 128 #endif
ommpy 0:d383e2dee0f7 129