mbed.h library with any bug fixes AV finds.

Dependents:   micromouse4_encoder_testing PID_Test Lab1_Test WorkingPID ... more

Committer:
aravindsv
Date:
Mon Nov 02 03:07:12 2015 +0000
Revision:
1:ebce2ad32f95
Parent:
0:ba7650f404af
Changed the RCC timeout value to 500 ms, so total code startup time before program starts running is ~1s. Hopefully no side-effects from lower startup timeouts

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aravindsv 0:ba7650f404af 1 /* mbed Microcontroller Library
aravindsv 0:ba7650f404af 2 * Copyright (c) 2006-2013 ARM Limited
aravindsv 0:ba7650f404af 3 *
aravindsv 0:ba7650f404af 4 * Licensed under the Apache License, Version 2.0 (the "License");
aravindsv 0:ba7650f404af 5 * you may not use this file except in compliance with the License.
aravindsv 0:ba7650f404af 6 * You may obtain a copy of the License at
aravindsv 0:ba7650f404af 7 *
aravindsv 0:ba7650f404af 8 * http://www.apache.org/licenses/LICENSE-2.0
aravindsv 0:ba7650f404af 9 *
aravindsv 0:ba7650f404af 10 * Unless required by applicable law or agreed to in writing, software
aravindsv 0:ba7650f404af 11 * distributed under the License is distributed on an "AS IS" BASIS,
aravindsv 0:ba7650f404af 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
aravindsv 0:ba7650f404af 13 * See the License for the specific language governing permissions and
aravindsv 0:ba7650f404af 14 * limitations under the License.
aravindsv 0:ba7650f404af 15 */
aravindsv 0:ba7650f404af 16 #include "FileSystemLike.h"
aravindsv 0:ba7650f404af 17
aravindsv 0:ba7650f404af 18 namespace mbed {
aravindsv 0:ba7650f404af 19
aravindsv 0:ba7650f404af 20 class BaseDirHandle : public DirHandle {
aravindsv 0:ba7650f404af 21 public:
aravindsv 0:ba7650f404af 22 /*
aravindsv 0:ba7650f404af 23 We keep track of our current location as the n'th object in the
aravindsv 0:ba7650f404af 24 FileSystemLike list. Using a Base* instead would cause problems if that
aravindsv 0:ba7650f404af 25 object were to be destroyed between readdirs.
aravindsv 0:ba7650f404af 26 Using this method does mean though that destroying/creating objects can
aravindsv 0:ba7650f404af 27 give unusual results from readdir.
aravindsv 0:ba7650f404af 28 */
aravindsv 0:ba7650f404af 29 off_t n;
aravindsv 0:ba7650f404af 30 struct dirent cur_entry;
aravindsv 0:ba7650f404af 31
aravindsv 0:ba7650f404af 32 BaseDirHandle() : n(0), cur_entry() {
aravindsv 0:ba7650f404af 33 }
aravindsv 0:ba7650f404af 34
aravindsv 0:ba7650f404af 35 virtual int closedir() {
aravindsv 0:ba7650f404af 36 delete this;
aravindsv 0:ba7650f404af 37 return 0;
aravindsv 0:ba7650f404af 38 }
aravindsv 0:ba7650f404af 39
aravindsv 0:ba7650f404af 40 virtual struct dirent *readdir() {
aravindsv 0:ba7650f404af 41 FileBase *ptr = FileBase::get(n);
aravindsv 0:ba7650f404af 42 if (ptr == NULL) return NULL;
aravindsv 0:ba7650f404af 43
aravindsv 0:ba7650f404af 44 /* Increment n, so next readdir gets the next item */
aravindsv 0:ba7650f404af 45 n++;
aravindsv 0:ba7650f404af 46
aravindsv 0:ba7650f404af 47 /* Setup cur entry and return a pointer to it */
aravindsv 0:ba7650f404af 48 std::strncpy(cur_entry.d_name, ptr->getName(), NAME_MAX);
aravindsv 0:ba7650f404af 49 return &cur_entry;
aravindsv 0:ba7650f404af 50 }
aravindsv 0:ba7650f404af 51
aravindsv 0:ba7650f404af 52 virtual off_t telldir() {
aravindsv 0:ba7650f404af 53 return n;
aravindsv 0:ba7650f404af 54 }
aravindsv 0:ba7650f404af 55
aravindsv 0:ba7650f404af 56 virtual void seekdir(off_t offset) {
aravindsv 0:ba7650f404af 57 n = offset;
aravindsv 0:ba7650f404af 58 }
aravindsv 0:ba7650f404af 59
aravindsv 0:ba7650f404af 60 virtual void rewinddir() {
aravindsv 0:ba7650f404af 61 n = 0;
aravindsv 0:ba7650f404af 62 }
aravindsv 0:ba7650f404af 63 };
aravindsv 0:ba7650f404af 64
aravindsv 0:ba7650f404af 65 FileSystemLike::FileSystemLike(const char *name) : FileBase(name, FileSystemPathType) {
aravindsv 0:ba7650f404af 66
aravindsv 0:ba7650f404af 67 }
aravindsv 0:ba7650f404af 68
aravindsv 0:ba7650f404af 69 FileSystemLike::~FileSystemLike() {
aravindsv 0:ba7650f404af 70
aravindsv 0:ba7650f404af 71 }
aravindsv 0:ba7650f404af 72
aravindsv 0:ba7650f404af 73 DirHandle *FileSystemLike::opendir() {
aravindsv 0:ba7650f404af 74 return new BaseDirHandle();
aravindsv 0:ba7650f404af 75 }
aravindsv 0:ba7650f404af 76
aravindsv 0:ba7650f404af 77 } // namespace mbed