mbed-os

Fork of mbed-os by erkin yucel

Committer:
elessair
Date:
Sun Oct 23 15:10:02 2016 +0000
Revision:
0:f269e3021894
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:f269e3021894 1 /* mbed Microcontroller Library
elessair 0:f269e3021894 2 * Copyright (c) 2006-2013 ARM Limited
elessair 0:f269e3021894 3 *
elessair 0:f269e3021894 4 * Licensed under the Apache License, Version 2.0 (the "License");
elessair 0:f269e3021894 5 * you may not use this file except in compliance with the License.
elessair 0:f269e3021894 6 * You may obtain a copy of the License at
elessair 0:f269e3021894 7 *
elessair 0:f269e3021894 8 * http://www.apache.org/licenses/LICENSE-2.0
elessair 0:f269e3021894 9 *
elessair 0:f269e3021894 10 * Unless required by applicable law or agreed to in writing, software
elessair 0:f269e3021894 11 * distributed under the License is distributed on an "AS IS" BASIS,
elessair 0:f269e3021894 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
elessair 0:f269e3021894 13 * See the License for the specific language governing permissions and
elessair 0:f269e3021894 14 * limitations under the License.
elessair 0:f269e3021894 15 */
elessair 0:f269e3021894 16 #ifndef MBED_FILEBASE_H
elessair 0:f269e3021894 17 #define MBED_FILEBASE_H
elessair 0:f269e3021894 18
elessair 0:f269e3021894 19 typedef int FILEHANDLE;
elessair 0:f269e3021894 20
elessair 0:f269e3021894 21 #include <cstdio>
elessair 0:f269e3021894 22 #include <cstring>
elessair 0:f269e3021894 23
elessair 0:f269e3021894 24 #if defined(__ARMCC_VERSION) || defined(__ICCARM__)
elessair 0:f269e3021894 25 # define O_RDONLY 0
elessair 0:f269e3021894 26 # define O_WRONLY 1
elessair 0:f269e3021894 27 # define O_RDWR 2
elessair 0:f269e3021894 28 # define O_CREAT 0x0200
elessair 0:f269e3021894 29 # define O_TRUNC 0x0400
elessair 0:f269e3021894 30 # define O_APPEND 0x0008
elessair 0:f269e3021894 31
elessair 0:f269e3021894 32 # define NAME_MAX 255
elessair 0:f269e3021894 33
elessair 0:f269e3021894 34 typedef int mode_t;
elessair 0:f269e3021894 35 typedef int ssize_t;
elessair 0:f269e3021894 36 typedef long off_t;
elessair 0:f269e3021894 37
elessair 0:f269e3021894 38 #else
elessair 0:f269e3021894 39 # include <sys/fcntl.h>
elessair 0:f269e3021894 40 # include <sys/types.h>
elessair 0:f269e3021894 41 # include <sys/syslimits.h>
elessair 0:f269e3021894 42 #endif
elessair 0:f269e3021894 43
elessair 0:f269e3021894 44 #include "platform/platform.h"
elessair 0:f269e3021894 45 #include "platform/SingletonPtr.h"
elessair 0:f269e3021894 46 #include "platform/PlatformMutex.h"
elessair 0:f269e3021894 47
elessair 0:f269e3021894 48 namespace mbed {
elessair 0:f269e3021894 49 /** \addtogroup drivers */
elessair 0:f269e3021894 50 /** @{*/
elessair 0:f269e3021894 51
elessair 0:f269e3021894 52 typedef enum {
elessair 0:f269e3021894 53 FilePathType,
elessair 0:f269e3021894 54 FileSystemPathType
elessair 0:f269e3021894 55 } PathType;
elessair 0:f269e3021894 56
elessair 0:f269e3021894 57 class FileBase {
elessair 0:f269e3021894 58 public:
elessair 0:f269e3021894 59 FileBase(const char *name, PathType t);
elessair 0:f269e3021894 60
elessair 0:f269e3021894 61 virtual ~FileBase();
elessair 0:f269e3021894 62
elessair 0:f269e3021894 63 const char* getName(void);
elessair 0:f269e3021894 64 PathType getPathType(void);
elessair 0:f269e3021894 65
elessair 0:f269e3021894 66 static FileBase *lookup(const char *name, unsigned int len);
elessair 0:f269e3021894 67
elessair 0:f269e3021894 68 static FileBase *get(int n);
elessair 0:f269e3021894 69
elessair 0:f269e3021894 70 /* disallow copy constructor and assignment operators */
elessair 0:f269e3021894 71 private:
elessair 0:f269e3021894 72 static FileBase *_head;
elessair 0:f269e3021894 73 static SingletonPtr<PlatformMutex> _mutex;
elessair 0:f269e3021894 74
elessair 0:f269e3021894 75 FileBase *_next;
elessair 0:f269e3021894 76 const char * const _name;
elessair 0:f269e3021894 77 const PathType _path_type;
elessair 0:f269e3021894 78 FileBase(const FileBase&);
elessair 0:f269e3021894 79 FileBase & operator = (const FileBase&);
elessair 0:f269e3021894 80 };
elessair 0:f269e3021894 81
elessair 0:f269e3021894 82 } // namespace mbed
elessair 0:f269e3021894 83
elessair 0:f269e3021894 84 #endif
elessair 0:f269e3021894 85
elessair 0:f269e3021894 86 /** @}*/