mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Sep 30 17:00:09 2015 +0100
Revision:
635:a11c0372f0ba
Parent:
321:39f2bc1d0627
Synchronized with git revision d29c98dae61be0946ddf3a3c641c7726056f9452

Full URL: https://github.com/mbedmicro/mbed/commit/d29c98dae61be0946ddf3a3c641c7726056f9452/

Added support for SAMW25

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 36:ab3ee77451e7 1 /* mbed Microcontroller Library
mbed_official 36:ab3ee77451e7 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 36:ab3ee77451e7 3 *
mbed_official 36:ab3ee77451e7 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 36:ab3ee77451e7 5 * you may not use this file except in compliance with the License.
mbed_official 36:ab3ee77451e7 6 * You may obtain a copy of the License at
mbed_official 36:ab3ee77451e7 7 *
mbed_official 36:ab3ee77451e7 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 36:ab3ee77451e7 9 *
mbed_official 36:ab3ee77451e7 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 36:ab3ee77451e7 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 36:ab3ee77451e7 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 36:ab3ee77451e7 13 * See the License for the specific language governing permissions and
mbed_official 36:ab3ee77451e7 14 * limitations under the License.
mbed_official 36:ab3ee77451e7 15 */
mbed_official 36:ab3ee77451e7 16 #include "RawSerial.h"
mbed_official 36:ab3ee77451e7 17 #include "wait_api.h"
mbed_official 64:7b352733b00a 18 #include <cstdarg>
mbed_official 36:ab3ee77451e7 19
mbed_official 36:ab3ee77451e7 20 #if DEVICE_SERIAL
mbed_official 36:ab3ee77451e7 21
mbed_official 64:7b352733b00a 22 #define STRING_STACK_LIMIT 120
mbed_official 64:7b352733b00a 23
mbed_official 36:ab3ee77451e7 24 namespace mbed {
mbed_official 36:ab3ee77451e7 25
mbed_official 36:ab3ee77451e7 26 RawSerial::RawSerial(PinName tx, PinName rx) : SerialBase(tx, rx) {
mbed_official 36:ab3ee77451e7 27 }
mbed_official 36:ab3ee77451e7 28
mbed_official 36:ab3ee77451e7 29 int RawSerial::getc() {
mbed_official 36:ab3ee77451e7 30 return _base_getc();
mbed_official 36:ab3ee77451e7 31 }
mbed_official 36:ab3ee77451e7 32
mbed_official 36:ab3ee77451e7 33 int RawSerial::putc(int c) {
mbed_official 36:ab3ee77451e7 34 return _base_putc(c);
mbed_official 36:ab3ee77451e7 35 }
mbed_official 36:ab3ee77451e7 36
mbed_official 64:7b352733b00a 37 int RawSerial::puts(const char *str) {
mbed_official 64:7b352733b00a 38 while (*str)
mbed_official 64:7b352733b00a 39 putc(*str ++);
mbed_official 64:7b352733b00a 40 return 0;
mbed_official 64:7b352733b00a 41 }
mbed_official 64:7b352733b00a 42
mbed_official 64:7b352733b00a 43 // Experimental support for printf in RawSerial. No Stream inheritance
mbed_official 64:7b352733b00a 44 // means we can't call printf() directly, so we use sprintf() instead.
mbed_official 64:7b352733b00a 45 // We only call malloc() for the sprintf() buffer if the buffer
mbed_official 64:7b352733b00a 46 // length is above a certain threshold, otherwise we use just the stack.
mbed_official 64:7b352733b00a 47 int RawSerial::printf(const char *format, ...) {
mbed_official 64:7b352733b00a 48 std::va_list arg;
mbed_official 64:7b352733b00a 49 va_start(arg, format);
mbed_official 64:7b352733b00a 50 int len = vsnprintf(NULL, 0, format, arg);
mbed_official 64:7b352733b00a 51 if (len < STRING_STACK_LIMIT) {
mbed_official 64:7b352733b00a 52 char temp[STRING_STACK_LIMIT];
mbed_official 64:7b352733b00a 53 vsprintf(temp, format, arg);
mbed_official 64:7b352733b00a 54 puts(temp);
mbed_official 64:7b352733b00a 55 } else {
mbed_official 64:7b352733b00a 56 char *temp = new char[len + 1];
mbed_official 64:7b352733b00a 57 vsprintf(temp, format, arg);
mbed_official 64:7b352733b00a 58 puts(temp);
mbed_official 64:7b352733b00a 59 delete[] temp;
mbed_official 64:7b352733b00a 60 }
mbed_official 64:7b352733b00a 61 va_end(arg);
mbed_official 64:7b352733b00a 62 return len;
mbed_official 64:7b352733b00a 63 }
mbed_official 64:7b352733b00a 64
mbed_official 36:ab3ee77451e7 65 } // namespace mbed
mbed_official 36:ab3ee77451e7 66
mbed_official 36:ab3ee77451e7 67 #endif