...

Dependents:   2doejemplo Labo_TRSE_Drone

Fork of mbed by mbed official

Committer:
emilmont
Date:
Mon Feb 18 11:12:58 2013 +0000
Revision:
59:0883845fe643
Parent:
55:d722ed6a4237
Child:
65:5798e58a58b1
Add pinmap NC terminators for LPC1768 CAN.
Update the license from MIT to Apache v2.
Make the semihost code target independent using opportune defines for the UID and MAC.

Who changed what in which revision?

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