...

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 8:00a04e5cd407 16 #ifndef MBED_DIRHANDLE_H
simon.ford@mbed.co.uk 8:00a04e5cd407 17 #define MBED_DIRHANDLE_H
simon.ford@mbed.co.uk 8:00a04e5cd407 18
emilmont 55:d722ed6a4237 19 #if defined(__ARMCC_VERSION) || defined(__ICCARM__)
emilmont 55:d722ed6a4237 20 # define NAME_MAX 255
simon.ford@mbed.co.uk 8:00a04e5cd407 21 typedef int mode_t;
emilmont 55:d722ed6a4237 22
simon.ford@mbed.co.uk 8:00a04e5cd407 23 #else
emilmont 55:d722ed6a4237 24 # include <sys/syslimits.h>
simon.ford@mbed.co.uk 8:00a04e5cd407 25 #endif
emilmont 55:d722ed6a4237 26
simon.ford@mbed.co.uk 8:00a04e5cd407 27 #include "FileHandle.h"
simon.ford@mbed.co.uk 8:00a04e5cd407 28
simon.ford@mbed.co.uk 8:00a04e5cd407 29 struct dirent {
simon.ford@mbed.co.uk 8:00a04e5cd407 30 char d_name[NAME_MAX+1];
simon.ford@mbed.co.uk 8:00a04e5cd407 31 };
simon.ford@mbed.co.uk 8:00a04e5cd407 32
simon.ford@mbed.co.uk 8:00a04e5cd407 33 namespace mbed {
simon.ford@mbed.co.uk 8:00a04e5cd407 34
emilmont 43:e2ed12d17f06 35 /** Represents a directory stream. Objects of this type are returned
simon.ford@mbed.co.uk 8:00a04e5cd407 36 * by a FileSystemLike's opendir method. Implementations must define
simon.ford@mbed.co.uk 8:00a04e5cd407 37 * at least closedir, readdir and rewinddir.
simon.ford@mbed.co.uk 8:00a04e5cd407 38 *
simon.ford@mbed.co.uk 8:00a04e5cd407 39 * If a FileSystemLike class defines the opendir method, then the
emilmont 55:d722ed6a4237 40 * directories of an object of that type can be accessed by
emilmont 44:24d45a770a51 41 * DIR *d = opendir("/example/directory") (or opendir("/example")
simon.ford@mbed.co.uk 8:00a04e5cd407 42 * to open the root of the filesystem), and then using readdir(d) etc.
simon.ford@mbed.co.uk 8:00a04e5cd407 43 *
simon.ford@mbed.co.uk 8:00a04e5cd407 44 * The root directory is considered to contain all FileLike and
simon.ford@mbed.co.uk 8:00a04e5cd407 45 * FileSystemLike objects, so the DIR* returned by opendir("/") will
simon.ford@mbed.co.uk 8:00a04e5cd407 46 * reflect this.
simon.ford@mbed.co.uk 8:00a04e5cd407 47 */
simon.ford@mbed.co.uk 8:00a04e5cd407 48 class DirHandle {
simon.ford@mbed.co.uk 8:00a04e5cd407 49
emilmont 44:24d45a770a51 50 public:
emilmont 43:e2ed12d17f06 51 /** Closes the directory.
simon.ford@mbed.co.uk 8:00a04e5cd407 52 *
emilmont 43:e2ed12d17f06 53 * @returns
emilmont 43:e2ed12d17f06 54 * 0 on success,
emilmont 43:e2ed12d17f06 55 * -1 on error.
simon.ford@mbed.co.uk 8:00a04e5cd407 56 */
simon.ford@mbed.co.uk 8:00a04e5cd407 57 virtual int closedir()=0;
emilmont 55:d722ed6a4237 58
emilmont 43:e2ed12d17f06 59 /** Return the directory entry at the current position, and
simon.ford@mbed.co.uk 8:00a04e5cd407 60 * advances the position to the next entry.
simon.ford@mbed.co.uk 8:00a04e5cd407 61 *
emilmont 43:e2ed12d17f06 62 * @returns
emilmont 44:24d45a770a51 63 * A pointer to a dirent structure representing the
emilmont 44:24d45a770a51 64 * directory entry at the current position, or NULL on reaching
emilmont 44:24d45a770a51 65 * end of directory or error.
simon.ford@mbed.co.uk 8:00a04e5cd407 66 */
simon.ford@mbed.co.uk 8:00a04e5cd407 67 virtual struct dirent *readdir()=0;
simon.ford@mbed.co.uk 8:00a04e5cd407 68
emilmont 43:e2ed12d17f06 69 /** Resets the position to the beginning of the directory.
simon.ford@mbed.co.uk 8:00a04e5cd407 70 */
simon.ford@mbed.co.uk 8:00a04e5cd407 71 virtual void rewinddir()=0;
simon.ford@mbed.co.uk 8:00a04e5cd407 72
emilmont 43:e2ed12d17f06 73 /** Returns the current position of the DirHandle.
simon.ford@mbed.co.uk 8:00a04e5cd407 74 *
emilmont 43:e2ed12d17f06 75 * @returns
emilmont 43:e2ed12d17f06 76 * the current position,
emilmont 43:e2ed12d17f06 77 * -1 on error.
simon.ford@mbed.co.uk 8:00a04e5cd407 78 */
simon.ford@mbed.co.uk 8:00a04e5cd407 79 virtual off_t telldir() { return -1; }
simon.ford@mbed.co.uk 8:00a04e5cd407 80
emilmont 43:e2ed12d17f06 81 /** Sets the position of the DirHandle.
simon.ford@mbed.co.uk 8:00a04e5cd407 82 *
emilmont 43:e2ed12d17f06 83 * @param location The location to seek to. Must be a value returned by telldir.
simon.ford@mbed.co.uk 8:00a04e5cd407 84 */
simon.ford@mbed.co.uk 8:00a04e5cd407 85 virtual void seekdir(off_t location) { }
emilmont 55:d722ed6a4237 86
emilmont 44:24d45a770a51 87 virtual ~DirHandle() {}
simon.ford@mbed.co.uk 8:00a04e5cd407 88 };
simon.ford@mbed.co.uk 8:00a04e5cd407 89
rolf.meyer@arm.com 11:1c1ebd0324fa 90 } // namespace mbed
simon.ford@mbed.co.uk 8:00a04e5cd407 91
simon.ford@mbed.co.uk 8:00a04e5cd407 92 typedef mbed::DirHandle DIR;
simon.ford@mbed.co.uk 8:00a04e5cd407 93
simon.ford@mbed.co.uk 8:00a04e5cd407 94 extern "C" {
simon.ford@mbed.co.uk 8:00a04e5cd407 95 DIR *opendir(const char*);
simon.ford@mbed.co.uk 8:00a04e5cd407 96 struct dirent *readdir(DIR *);
simon.ford@mbed.co.uk 8:00a04e5cd407 97 int closedir(DIR*);
simon.ford@mbed.co.uk 8:00a04e5cd407 98 void rewinddir(DIR*);
simon.ford@mbed.co.uk 8:00a04e5cd407 99 long telldir(DIR*);
simon.ford@mbed.co.uk 8:00a04e5cd407 100 void seekdir(DIR*, long);
simon.ford@mbed.co.uk 8:00a04e5cd407 101 int mkdir(const char *name, mode_t n);
simon.ford@mbed.co.uk 8:00a04e5cd407 102 };
simon.ford@mbed.co.uk 8:00a04e5cd407 103
simon.ford@mbed.co.uk 8:00a04e5cd407 104 #endif /* MBED_DIRHANDLE_H */