Blame view

mbed/LocalFileSystem.h 3.12 KB
f7c9a8e1   jdenecha   Feat : Firt dump
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  /* mbed Microcontroller Library

   * Copyright (c) 2006-2013 ARM Limited

   *

   * Licensed under the Apache License, Version 2.0 (the "License");

   * you may not use this file except in compliance with the License.

   * You may obtain a copy of the License at

   *

   *     http://www.apache.org/licenses/LICENSE-2.0

   *

   * Unless required by applicable law or agreed to in writing, software

   * distributed under the License is distributed on an "AS IS" BASIS,

   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

   * See the License for the specific language governing permissions and

   * limitations under the License.

   */

  #ifndef MBED_LOCALFILESYSTEM_H

  #define MBED_LOCALFILESYSTEM_H

  

  #include "platform.h"

  

  #if DEVICE_LOCALFILESYSTEM

  

  #include "FileSystemLike.h"

  

  namespace mbed {

  

  FILEHANDLE local_file_open(const char* name, int flags);

  

  class LocalFileHandle : public FileHandle {

  

  public:

      LocalFileHandle(FILEHANDLE fh);

  

      virtual int close();

  

      virtual ssize_t write(const void *buffer, size_t length);

  

      virtual ssize_t read(void *buffer, size_t length);

  

      virtual int isatty();

  

      virtual off_t lseek(off_t position, int whence);

  

      virtual int fsync();

  

      virtual off_t flen();

  

  protected:

      FILEHANDLE _fh;

      int pos;

  };

  

  /** A filesystem for accessing the local mbed Microcontroller USB disk drive

   *

   *  This allows programs to read and write files on the same disk drive that is used to program the

   *  mbed Microcontroller. Once created, the standard C file access functions are used to open,

   *  read and write files.

   *

   * Example:

   * @code

   * #include "mbed.h"

   *

   * LocalFileSystem local("local");               // Create the local filesystem under the name "local"

   *

   * int main() {

   *     FILE *fp = fopen("/local/out.txt", "w");  // Open "out.txt" on the local file system for writing

   *     fprintf(fp, "Hello World!");

   *     fclose(fp);

   *     remove("/local/out.txt");                 // Removes the file "out.txt" from the local file system

   *

   *     DIR *d = opendir("/local");               // Opens the root directory of the local file system

   *     struct dirent *p;

   *     while((p = readdir(d)) != NULL) {         // Print the names of the files in the local file system

   *       printf("%s\n", p->d_name);              // to stdout.

   *     }

   *     closedir(d);

   * }

   * @endcode

   *

   * @note

   *  If the microcontroller program makes an access to the local drive, it will be marked as "removed"

   *  on the Host computer. This means it is no longer accessible from the Host Computer.

   *

   *  The drive will only re-appear when the microcontroller program exists. Note that if the program does

   *  not exit, you will need to hold down reset on the mbed Microcontroller to be able to see the drive again!

   */

  class LocalFileSystem : public FileSystemLike {

  

  public:

      LocalFileSystem(const char* n) : FileSystemLike(n) {

  

      }

  

      virtual FileHandle *open(const char* name, int flags);

      virtual int remove(const char *filename);

      virtual DirHandle *opendir(const char *name);

  };

  

  } // namespace mbed

  

  #endif

  

  #endif