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 "Stream.h"
aravindsv 0:ba7650f404af 17
aravindsv 0:ba7650f404af 18 #include <cstdarg>
aravindsv 0:ba7650f404af 19
aravindsv 0:ba7650f404af 20 namespace mbed {
aravindsv 0:ba7650f404af 21
aravindsv 0:ba7650f404af 22 Stream::Stream(const char *name) : FileLike(name), _file(NULL) {
aravindsv 0:ba7650f404af 23 /* open ourselves */
aravindsv 0:ba7650f404af 24 char buf[12]; /* :0x12345678 + null byte */
aravindsv 0:ba7650f404af 25 std::sprintf(buf, ":%p", this);
aravindsv 0:ba7650f404af 26 _file = std::fopen(buf, "w+");
aravindsv 0:ba7650f404af 27 mbed_set_unbuffered_stream(_file);
aravindsv 0:ba7650f404af 28 }
aravindsv 0:ba7650f404af 29
aravindsv 0:ba7650f404af 30 Stream::~Stream() {
aravindsv 0:ba7650f404af 31 fclose(_file);
aravindsv 0:ba7650f404af 32 }
aravindsv 0:ba7650f404af 33
aravindsv 0:ba7650f404af 34 int Stream::putc(int c) {
aravindsv 0:ba7650f404af 35 fflush(_file);
aravindsv 0:ba7650f404af 36 return std::fputc(c, _file);
aravindsv 0:ba7650f404af 37 }
aravindsv 0:ba7650f404af 38 int Stream::puts(const char *s) {
aravindsv 0:ba7650f404af 39 fflush(_file);
aravindsv 0:ba7650f404af 40 return std::fputs(s, _file);
aravindsv 0:ba7650f404af 41 }
aravindsv 0:ba7650f404af 42 int Stream::getc() {
aravindsv 0:ba7650f404af 43 fflush(_file);
aravindsv 0:ba7650f404af 44 return mbed_getc(_file);
aravindsv 0:ba7650f404af 45 }
aravindsv 0:ba7650f404af 46 char* Stream::gets(char *s, int size) {
aravindsv 0:ba7650f404af 47 fflush(_file);
aravindsv 0:ba7650f404af 48 return mbed_gets(s,size,_file);
aravindsv 0:ba7650f404af 49 }
aravindsv 0:ba7650f404af 50
aravindsv 0:ba7650f404af 51 int Stream::close() {
aravindsv 0:ba7650f404af 52 return 0;
aravindsv 0:ba7650f404af 53 }
aravindsv 0:ba7650f404af 54
aravindsv 0:ba7650f404af 55 ssize_t Stream::write(const void* buffer, size_t length) {
aravindsv 0:ba7650f404af 56 const char* ptr = (const char*)buffer;
aravindsv 0:ba7650f404af 57 const char* end = ptr + length;
aravindsv 0:ba7650f404af 58 while (ptr != end) {
aravindsv 0:ba7650f404af 59 if (_putc(*ptr++) == EOF) {
aravindsv 0:ba7650f404af 60 break;
aravindsv 0:ba7650f404af 61 }
aravindsv 0:ba7650f404af 62 }
aravindsv 0:ba7650f404af 63 return ptr - (const char*)buffer;
aravindsv 0:ba7650f404af 64 }
aravindsv 0:ba7650f404af 65
aravindsv 0:ba7650f404af 66 ssize_t Stream::read(void* buffer, size_t length) {
aravindsv 0:ba7650f404af 67 char* ptr = (char*)buffer;
aravindsv 0:ba7650f404af 68 char* end = ptr + length;
aravindsv 0:ba7650f404af 69 while (ptr != end) {
aravindsv 0:ba7650f404af 70 int c = _getc();
aravindsv 0:ba7650f404af 71 if (c==EOF) break;
aravindsv 0:ba7650f404af 72 *ptr++ = c;
aravindsv 0:ba7650f404af 73 }
aravindsv 0:ba7650f404af 74 return ptr - (const char*)buffer;
aravindsv 0:ba7650f404af 75 }
aravindsv 0:ba7650f404af 76
aravindsv 0:ba7650f404af 77 off_t Stream::lseek(off_t offset, int whence) {
aravindsv 0:ba7650f404af 78 return 0;
aravindsv 0:ba7650f404af 79 }
aravindsv 0:ba7650f404af 80
aravindsv 0:ba7650f404af 81 int Stream::isatty() {
aravindsv 0:ba7650f404af 82 return 0;
aravindsv 0:ba7650f404af 83 }
aravindsv 0:ba7650f404af 84
aravindsv 0:ba7650f404af 85 int Stream::fsync() {
aravindsv 0:ba7650f404af 86 return 0;
aravindsv 0:ba7650f404af 87 }
aravindsv 0:ba7650f404af 88
aravindsv 0:ba7650f404af 89 off_t Stream::flen() {
aravindsv 0:ba7650f404af 90 return 0;
aravindsv 0:ba7650f404af 91 }
aravindsv 0:ba7650f404af 92
aravindsv 0:ba7650f404af 93 int Stream::printf(const char* format, ...) {
aravindsv 0:ba7650f404af 94 std::va_list arg;
aravindsv 0:ba7650f404af 95 va_start(arg, format);
aravindsv 0:ba7650f404af 96 fflush(_file);
aravindsv 0:ba7650f404af 97 int r = vfprintf(_file, format, arg);
aravindsv 0:ba7650f404af 98 va_end(arg);
aravindsv 0:ba7650f404af 99 return r;
aravindsv 0:ba7650f404af 100 }
aravindsv 0:ba7650f404af 101
aravindsv 0:ba7650f404af 102 int Stream::scanf(const char* format, ...) {
aravindsv 0:ba7650f404af 103 std::va_list arg;
aravindsv 0:ba7650f404af 104 va_start(arg, format);
aravindsv 0:ba7650f404af 105 fflush(_file);
aravindsv 0:ba7650f404af 106 int r = vfscanf(_file, format, arg);
aravindsv 0:ba7650f404af 107 va_end(arg);
aravindsv 0:ba7650f404af 108 return r;
aravindsv 0:ba7650f404af 109 }
aravindsv 0:ba7650f404af 110
aravindsv 0:ba7650f404af 111 } // namespace mbed