customized mbed library sources for nrf51822

Dependents:   Grove_Node Potentiometer BLE_Beacon I2C_Scanner

Committer:
yihui
Date:
Tue Nov 04 07:38:53 2014 +0000
Revision:
0:700cadd8b708
customized mbed-src library for nrf51822

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yihui 0:700cadd8b708 1 /* mbed Microcontroller Library
yihui 0:700cadd8b708 2 * Copyright (c) 2006-2013 ARM Limited
yihui 0:700cadd8b708 3 *
yihui 0:700cadd8b708 4 * Licensed under the Apache License, Version 2.0 (the "License");
yihui 0:700cadd8b708 5 * you may not use this file except in compliance with the License.
yihui 0:700cadd8b708 6 * You may obtain a copy of the License at
yihui 0:700cadd8b708 7 *
yihui 0:700cadd8b708 8 * http://www.apache.org/licenses/LICENSE-2.0
yihui 0:700cadd8b708 9 *
yihui 0:700cadd8b708 10 * Unless required by applicable law or agreed to in writing, software
yihui 0:700cadd8b708 11 * distributed under the License is distributed on an "AS IS" BASIS,
yihui 0:700cadd8b708 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
yihui 0:700cadd8b708 13 * See the License for the specific language governing permissions and
yihui 0:700cadd8b708 14 * limitations under the License.
yihui 0:700cadd8b708 15 */
yihui 0:700cadd8b708 16 #include "Stream.h"
yihui 0:700cadd8b708 17
yihui 0:700cadd8b708 18 #include <cstdarg>
yihui 0:700cadd8b708 19
yihui 0:700cadd8b708 20 namespace mbed {
yihui 0:700cadd8b708 21
yihui 0:700cadd8b708 22 Stream::Stream(const char *name) : FileLike(name), _file(NULL) {
yihui 0:700cadd8b708 23 /* open ourselves */
yihui 0:700cadd8b708 24 char buf[12]; /* :0x12345678 + null byte */
yihui 0:700cadd8b708 25 std::sprintf(buf, ":%p", this);
yihui 0:700cadd8b708 26 _file = std::fopen(buf, "w+");
yihui 0:700cadd8b708 27 setbuf(_file, NULL);
yihui 0:700cadd8b708 28 }
yihui 0:700cadd8b708 29
yihui 0:700cadd8b708 30 Stream::~Stream() {
yihui 0:700cadd8b708 31 fclose(_file);
yihui 0:700cadd8b708 32 }
yihui 0:700cadd8b708 33
yihui 0:700cadd8b708 34 int Stream::putc(int c) {
yihui 0:700cadd8b708 35 fflush(_file);
yihui 0:700cadd8b708 36 return std::fputc(c, _file);
yihui 0:700cadd8b708 37 }
yihui 0:700cadd8b708 38 int Stream::puts(const char *s) {
yihui 0:700cadd8b708 39 fflush(_file);
yihui 0:700cadd8b708 40 return std::fputs(s, _file);
yihui 0:700cadd8b708 41 }
yihui 0:700cadd8b708 42 int Stream::getc() {
yihui 0:700cadd8b708 43 fflush(_file);
yihui 0:700cadd8b708 44 return std::fgetc(_file);
yihui 0:700cadd8b708 45 }
yihui 0:700cadd8b708 46 char* Stream::gets(char *s, int size) {
yihui 0:700cadd8b708 47 fflush(_file);
yihui 0:700cadd8b708 48 return std::fgets(s,size,_file);
yihui 0:700cadd8b708 49 }
yihui 0:700cadd8b708 50
yihui 0:700cadd8b708 51 int Stream::close() {
yihui 0:700cadd8b708 52 return 0;
yihui 0:700cadd8b708 53 }
yihui 0:700cadd8b708 54
yihui 0:700cadd8b708 55 ssize_t Stream::write(const void* buffer, size_t length) {
yihui 0:700cadd8b708 56 const char* ptr = (const char*)buffer;
yihui 0:700cadd8b708 57 const char* end = ptr + length;
yihui 0:700cadd8b708 58 while (ptr != end) {
yihui 0:700cadd8b708 59 if (_putc(*ptr++) == EOF) {
yihui 0:700cadd8b708 60 break;
yihui 0:700cadd8b708 61 }
yihui 0:700cadd8b708 62 }
yihui 0:700cadd8b708 63 return ptr - (const char*)buffer;
yihui 0:700cadd8b708 64 }
yihui 0:700cadd8b708 65
yihui 0:700cadd8b708 66 ssize_t Stream::read(void* buffer, size_t length) {
yihui 0:700cadd8b708 67 char* ptr = (char*)buffer;
yihui 0:700cadd8b708 68 char* end = ptr + length;
yihui 0:700cadd8b708 69 while (ptr != end) {
yihui 0:700cadd8b708 70 int c = _getc();
yihui 0:700cadd8b708 71 if (c==EOF) break;
yihui 0:700cadd8b708 72 *ptr++ = c;
yihui 0:700cadd8b708 73 }
yihui 0:700cadd8b708 74 return ptr - (const char*)buffer;
yihui 0:700cadd8b708 75 }
yihui 0:700cadd8b708 76
yihui 0:700cadd8b708 77 off_t Stream::lseek(off_t offset, int whence) {
yihui 0:700cadd8b708 78 return 0;
yihui 0:700cadd8b708 79 }
yihui 0:700cadd8b708 80
yihui 0:700cadd8b708 81 int Stream::isatty() {
yihui 0:700cadd8b708 82 return 0;
yihui 0:700cadd8b708 83 }
yihui 0:700cadd8b708 84
yihui 0:700cadd8b708 85 int Stream::fsync() {
yihui 0:700cadd8b708 86 return 0;
yihui 0:700cadd8b708 87 }
yihui 0:700cadd8b708 88
yihui 0:700cadd8b708 89 off_t Stream::flen() {
yihui 0:700cadd8b708 90 return 0;
yihui 0:700cadd8b708 91 }
yihui 0:700cadd8b708 92
yihui 0:700cadd8b708 93 int Stream::printf(const char* format, ...) {
yihui 0:700cadd8b708 94 std::va_list arg;
yihui 0:700cadd8b708 95 va_start(arg, format);
yihui 0:700cadd8b708 96 fflush(_file);
yihui 0:700cadd8b708 97 int r = vfprintf(_file, format, arg);
yihui 0:700cadd8b708 98 va_end(arg);
yihui 0:700cadd8b708 99 return r;
yihui 0:700cadd8b708 100 }
yihui 0:700cadd8b708 101
yihui 0:700cadd8b708 102 int Stream::scanf(const char* format, ...) {
yihui 0:700cadd8b708 103 std::va_list arg;
yihui 0:700cadd8b708 104 va_start(arg, format);
yihui 0:700cadd8b708 105 fflush(_file);
yihui 0:700cadd8b708 106 int r = vfscanf(_file, format, arg);
yihui 0:700cadd8b708 107 va_end(arg);
yihui 0:700cadd8b708 108 return r;
yihui 0:700cadd8b708 109 }
yihui 0:700cadd8b708 110
yihui 0:700cadd8b708 111 } // namespace mbed