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:
emilmont
Date:
Mon Jun 10 16:03:00 2013 +0100
Revision:
9:0ce32e54c9a7
Parent:
cpp/Serial.cpp@2:143cac498751
Child:
10:3bc89ef62ce7
Refactoring of the mbed SDK:
- Provide a well defined HAL and API
- Keep separated the HAL implementations for the different targets

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 2:143cac498751 1 /* mbed Microcontroller Library
emilmont 2:143cac498751 2 * Copyright (c) 2006-2013 ARM Limited
emilmont 2:143cac498751 3 *
emilmont 2:143cac498751 4 * Licensed under the Apache License, Version 2.0 (the "License");
emilmont 2:143cac498751 5 * you may not use this file except in compliance with the License.
emilmont 2:143cac498751 6 * You may obtain a copy of the License at
emilmont 2:143cac498751 7 *
emilmont 2:143cac498751 8 * http://www.apache.org/licenses/LICENSE-2.0
emilmont 2:143cac498751 9 *
emilmont 2:143cac498751 10 * Unless required by applicable law or agreed to in writing, software
emilmont 2:143cac498751 11 * distributed under the License is distributed on an "AS IS" BASIS,
emilmont 2:143cac498751 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
emilmont 2:143cac498751 13 * See the License for the specific language governing permissions and
emilmont 2:143cac498751 14 * limitations under the License.
emilmont 2:143cac498751 15 */
emilmont 2:143cac498751 16 #include "Serial.h"
emilmont 2:143cac498751 17
emilmont 2:143cac498751 18 #if DEVICE_SERIAL
emilmont 2:143cac498751 19
emilmont 2:143cac498751 20 namespace mbed {
emilmont 2:143cac498751 21
emilmont 2:143cac498751 22 Serial::Serial(PinName tx, PinName rx, const char *name) : Stream(name) {
emilmont 2:143cac498751 23 serial_init(&_serial, tx, rx);
emilmont 2:143cac498751 24 serial_irq_handler(&_serial, Serial::_irq_handler, (uint32_t)this);
emilmont 2:143cac498751 25 }
emilmont 2:143cac498751 26
emilmont 2:143cac498751 27 void Serial::baud(int baudrate) {
emilmont 2:143cac498751 28 serial_baud(&_serial, baudrate);
emilmont 2:143cac498751 29 }
emilmont 2:143cac498751 30
emilmont 2:143cac498751 31 void Serial::format(int bits, Parity parity, int stop_bits) {
emilmont 2:143cac498751 32 serial_format(&_serial, bits, (SerialParity)parity, stop_bits);
emilmont 2:143cac498751 33 }
emilmont 2:143cac498751 34
emilmont 2:143cac498751 35 int Serial::readable() {
emilmont 2:143cac498751 36 return serial_readable(&_serial);
emilmont 2:143cac498751 37 }
emilmont 2:143cac498751 38
emilmont 2:143cac498751 39
emilmont 2:143cac498751 40 int Serial::writeable() {
emilmont 2:143cac498751 41 return serial_writable(&_serial);
emilmont 2:143cac498751 42 }
emilmont 2:143cac498751 43
emilmont 2:143cac498751 44 void Serial::attach(void (*fptr)(void), IrqType type) {
emilmont 2:143cac498751 45 if (fptr) {
emilmont 2:143cac498751 46 _irq[type].attach(fptr);
emilmont 2:143cac498751 47 serial_irq_set(&_serial, (SerialIrq)type, 1);
emilmont 2:143cac498751 48 } else {
emilmont 2:143cac498751 49 serial_irq_set(&_serial, (SerialIrq)type, 0);
emilmont 2:143cac498751 50 }
emilmont 2:143cac498751 51 }
emilmont 2:143cac498751 52
emilmont 2:143cac498751 53
emilmont 2:143cac498751 54 void Serial::_irq_handler(uint32_t id, SerialIrq irq_type) {
emilmont 2:143cac498751 55 Serial *handler = (Serial*)id;
emilmont 2:143cac498751 56 handler->_irq[irq_type].call();
emilmont 2:143cac498751 57 }
emilmont 2:143cac498751 58
emilmont 2:143cac498751 59 int Serial::_getc() {
emilmont 2:143cac498751 60 return serial_getc(&_serial);
emilmont 2:143cac498751 61 }
emilmont 2:143cac498751 62
emilmont 2:143cac498751 63 int Serial::_putc(int c) {
emilmont 2:143cac498751 64 serial_putc(&_serial, c);
emilmont 2:143cac498751 65 return c;
emilmont 2:143cac498751 66 }
emilmont 2:143cac498751 67
emilmont 2:143cac498751 68 } // namespace mbed
emilmont 2:143cac498751 69
emilmont 2:143cac498751 70 #endif