Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 31 06:02:27 2019 +0000
Revision:
1:9db0e321a9f4
Parent:
0:5b88d5760320
updated based on mbed-os5.15.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /* mbed Microcontroller Library
kenjiArai 1:9db0e321a9f4 2 * Copyright (c) 2006-2019 ARM Limited
kenjiArai 0:5b88d5760320 3 * SPDX-License-Identifier: Apache-2.0
kenjiArai 0:5b88d5760320 4 *
kenjiArai 0:5b88d5760320 5 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 6 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 7 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 8 *
kenjiArai 0:5b88d5760320 9 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 10 *
kenjiArai 0:5b88d5760320 11 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 12 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 14 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 15 * limitations under the License.
kenjiArai 0:5b88d5760320 16 */
kenjiArai 0:5b88d5760320 17
kenjiArai 0:5b88d5760320 18 #ifndef MBED_UARTSERIAL_H
kenjiArai 0:5b88d5760320 19 #define MBED_UARTSERIAL_H
kenjiArai 0:5b88d5760320 20
kenjiArai 0:5b88d5760320 21 #include "platform/platform.h"
kenjiArai 0:5b88d5760320 22
kenjiArai 0:5b88d5760320 23 #if (DEVICE_SERIAL && DEVICE_INTERRUPTIN) || defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 24
kenjiArai 0:5b88d5760320 25 #include "platform/FileHandle.h"
kenjiArai 1:9db0e321a9f4 26 #include "drivers/SerialBase.h"
kenjiArai 1:9db0e321a9f4 27 #include "drivers/InterruptIn.h"
kenjiArai 0:5b88d5760320 28 #include "platform/PlatformMutex.h"
kenjiArai 0:5b88d5760320 29 #include "platform/CircularBuffer.h"
kenjiArai 0:5b88d5760320 30 #include "platform/NonCopyable.h"
kenjiArai 0:5b88d5760320 31
kenjiArai 0:5b88d5760320 32 #ifndef MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE
kenjiArai 0:5b88d5760320 33 #define MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE 256
kenjiArai 0:5b88d5760320 34 #endif
kenjiArai 0:5b88d5760320 35
kenjiArai 0:5b88d5760320 36 #ifndef MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE
kenjiArai 0:5b88d5760320 37 #define MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE 256
kenjiArai 0:5b88d5760320 38 #endif
kenjiArai 0:5b88d5760320 39
kenjiArai 0:5b88d5760320 40 namespace mbed {
kenjiArai 1:9db0e321a9f4 41 /**
kenjiArai 1:9db0e321a9f4 42 * \defgroup drivers_UARTSerial UARTSerial class
kenjiArai 1:9db0e321a9f4 43 * \ingroup drivers-public-api-uart
kenjiArai 1:9db0e321a9f4 44 * @{
kenjiArai 1:9db0e321a9f4 45 */
kenjiArai 0:5b88d5760320 46
kenjiArai 0:5b88d5760320 47 /** Class providing buffered UART communication functionality using separate circular buffer for send and receive channels
kenjiArai 0:5b88d5760320 48 *
kenjiArai 0:5b88d5760320 49 */
kenjiArai 0:5b88d5760320 50
kenjiArai 0:5b88d5760320 51 class UARTSerial : private SerialBase, public FileHandle, private NonCopyable<UARTSerial> {
kenjiArai 0:5b88d5760320 52
kenjiArai 0:5b88d5760320 53 public:
kenjiArai 0:5b88d5760320 54
kenjiArai 0:5b88d5760320 55 /** Create a UARTSerial port, connected to the specified transmit and receive pins, with a particular baud rate.
kenjiArai 0:5b88d5760320 56 * @param tx Transmit pin
kenjiArai 0:5b88d5760320 57 * @param rx Receive pin
kenjiArai 0:5b88d5760320 58 * @param baud The baud rate of the serial port (optional, defaults to MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE)
kenjiArai 0:5b88d5760320 59 */
kenjiArai 0:5b88d5760320 60 UARTSerial(PinName tx, PinName rx, int baud = MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE);
kenjiArai 1:9db0e321a9f4 61
kenjiArai 1:9db0e321a9f4 62 /** Create a UARTSerial port, connected to the specified transmit and receive pins, with a particular baud rate.
kenjiArai 1:9db0e321a9f4 63 * @param static_pinmap reference to structure which holds static pinmap
kenjiArai 1:9db0e321a9f4 64 * @param baud The baud rate of the serial port (optional, defaults to MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE)
kenjiArai 1:9db0e321a9f4 65 */
kenjiArai 1:9db0e321a9f4 66 UARTSerial(const serial_pinmap_t &static_pinmap, int baud = MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE);
kenjiArai 1:9db0e321a9f4 67
kenjiArai 0:5b88d5760320 68 virtual ~UARTSerial();
kenjiArai 0:5b88d5760320 69
kenjiArai 0:5b88d5760320 70 /** Equivalent to POSIX poll(). Derived from FileHandle.
kenjiArai 0:5b88d5760320 71 * Provides a mechanism to multiplex input/output over a set of file handles.
kenjiArai 0:5b88d5760320 72 */
kenjiArai 0:5b88d5760320 73 virtual short poll(short events) const;
kenjiArai 0:5b88d5760320 74
kenjiArai 0:5b88d5760320 75 /* Resolve ambiguities versus our private SerialBase
kenjiArai 0:5b88d5760320 76 * (for writable, spelling differs, but just in case)
kenjiArai 0:5b88d5760320 77 */
kenjiArai 0:5b88d5760320 78 using FileHandle::readable;
kenjiArai 0:5b88d5760320 79 using FileHandle::writable;
kenjiArai 0:5b88d5760320 80
kenjiArai 0:5b88d5760320 81 /** Write the contents of a buffer to a file
kenjiArai 0:5b88d5760320 82 *
kenjiArai 0:5b88d5760320 83 * Follows POSIX semantics:
kenjiArai 0:5b88d5760320 84 *
kenjiArai 0:5b88d5760320 85 * * if blocking, block until all data is written
kenjiArai 0:5b88d5760320 86 * * if no data can be written, and non-blocking set, return -EAGAIN
kenjiArai 0:5b88d5760320 87 * * if some data can be written, and non-blocking set, write partial
kenjiArai 0:5b88d5760320 88 *
kenjiArai 0:5b88d5760320 89 * @param buffer The buffer to write from
kenjiArai 0:5b88d5760320 90 * @param length The number of bytes to write
kenjiArai 0:5b88d5760320 91 * @return The number of bytes written, negative error on failure
kenjiArai 0:5b88d5760320 92 */
kenjiArai 0:5b88d5760320 93 virtual ssize_t write(const void *buffer, size_t length);
kenjiArai 0:5b88d5760320 94
kenjiArai 0:5b88d5760320 95 /** Read the contents of a file into a buffer
kenjiArai 0:5b88d5760320 96 *
kenjiArai 0:5b88d5760320 97 * Follows POSIX semantics:
kenjiArai 0:5b88d5760320 98 *
kenjiArai 0:5b88d5760320 99 * * if no data is available, and non-blocking set return -EAGAIN
kenjiArai 0:5b88d5760320 100 * * if no data is available, and blocking set, wait until data is available
kenjiArai 0:5b88d5760320 101 * * If any data is available, call returns immediately
kenjiArai 0:5b88d5760320 102 *
kenjiArai 0:5b88d5760320 103 * @param buffer The buffer to read in to
kenjiArai 0:5b88d5760320 104 * @param length The number of bytes to read
kenjiArai 0:5b88d5760320 105 * @return The number of bytes read, 0 at end of file, negative error on failure
kenjiArai 0:5b88d5760320 106 */
kenjiArai 0:5b88d5760320 107 virtual ssize_t read(void *buffer, size_t length);
kenjiArai 0:5b88d5760320 108
kenjiArai 0:5b88d5760320 109 /** Close a file
kenjiArai 0:5b88d5760320 110 *
kenjiArai 0:5b88d5760320 111 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 112 */
kenjiArai 0:5b88d5760320 113 virtual int close();
kenjiArai 0:5b88d5760320 114
kenjiArai 0:5b88d5760320 115 /** Check if the file in an interactive terminal device
kenjiArai 0:5b88d5760320 116 *
kenjiArai 0:5b88d5760320 117 * @return True if the file is a terminal
kenjiArai 0:5b88d5760320 118 * @return False if the file is not a terminal
kenjiArai 0:5b88d5760320 119 * @return Negative error code on failure
kenjiArai 0:5b88d5760320 120 */
kenjiArai 0:5b88d5760320 121 virtual int isatty();
kenjiArai 0:5b88d5760320 122
kenjiArai 0:5b88d5760320 123 /** Move the file position to a given offset from from a given location
kenjiArai 0:5b88d5760320 124 *
kenjiArai 0:5b88d5760320 125 * Not valid for a device type FileHandle like UARTSerial.
kenjiArai 0:5b88d5760320 126 * In case of UARTSerial, returns ESPIPE
kenjiArai 0:5b88d5760320 127 *
kenjiArai 0:5b88d5760320 128 * @param offset The offset from whence to move to
kenjiArai 0:5b88d5760320 129 * @param whence The start of where to seek
kenjiArai 0:5b88d5760320 130 * SEEK_SET to start from beginning of file,
kenjiArai 0:5b88d5760320 131 * SEEK_CUR to start from current position in file,
kenjiArai 0:5b88d5760320 132 * SEEK_END to start from end of file
kenjiArai 0:5b88d5760320 133 * @return The new offset of the file, negative error code on failure
kenjiArai 0:5b88d5760320 134 */
kenjiArai 0:5b88d5760320 135 virtual off_t seek(off_t offset, int whence);
kenjiArai 0:5b88d5760320 136
kenjiArai 0:5b88d5760320 137 /** Flush any buffers associated with the file
kenjiArai 0:5b88d5760320 138 *
kenjiArai 0:5b88d5760320 139 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 140 */
kenjiArai 0:5b88d5760320 141 virtual int sync();
kenjiArai 0:5b88d5760320 142
kenjiArai 0:5b88d5760320 143 /** Set blocking or non-blocking mode
kenjiArai 0:5b88d5760320 144 * The default is blocking.
kenjiArai 0:5b88d5760320 145 *
kenjiArai 0:5b88d5760320 146 * @param blocking true for blocking mode, false for non-blocking mode.
kenjiArai 0:5b88d5760320 147 */
kenjiArai 0:5b88d5760320 148 virtual int set_blocking(bool blocking)
kenjiArai 0:5b88d5760320 149 {
kenjiArai 0:5b88d5760320 150 _blocking = blocking;
kenjiArai 0:5b88d5760320 151 return 0;
kenjiArai 0:5b88d5760320 152 }
kenjiArai 0:5b88d5760320 153
kenjiArai 0:5b88d5760320 154 /** Check current blocking or non-blocking mode for file operations.
kenjiArai 0:5b88d5760320 155 *
kenjiArai 0:5b88d5760320 156 * @return true for blocking mode, false for non-blocking mode.
kenjiArai 0:5b88d5760320 157 */
kenjiArai 0:5b88d5760320 158 virtual bool is_blocking() const
kenjiArai 0:5b88d5760320 159 {
kenjiArai 0:5b88d5760320 160 return _blocking;
kenjiArai 0:5b88d5760320 161 }
kenjiArai 0:5b88d5760320 162
kenjiArai 0:5b88d5760320 163 /** Enable or disable input
kenjiArai 0:5b88d5760320 164 *
kenjiArai 0:5b88d5760320 165 * Control enabling of device for input. This is primarily intended
kenjiArai 0:5b88d5760320 166 * for temporary power-saving; the overall ability of the device to operate for
kenjiArai 0:5b88d5760320 167 * input and/or output may be fixed at creation time, but this call can
kenjiArai 0:5b88d5760320 168 * allow input to be temporarily disabled to permit power saving without
kenjiArai 0:5b88d5760320 169 * losing device state.
kenjiArai 0:5b88d5760320 170 *
kenjiArai 0:5b88d5760320 171 * @param enabled true to enable input, false to disable.
kenjiArai 0:5b88d5760320 172 *
kenjiArai 0:5b88d5760320 173 * @return 0 on success
kenjiArai 0:5b88d5760320 174 * @return Negative error code on failure
kenjiArai 0:5b88d5760320 175 */
kenjiArai 0:5b88d5760320 176 virtual int enable_input(bool enabled);
kenjiArai 0:5b88d5760320 177
kenjiArai 0:5b88d5760320 178 /** Enable or disable output
kenjiArai 0:5b88d5760320 179 *
kenjiArai 0:5b88d5760320 180 * Control enabling of device for output. This is primarily intended
kenjiArai 0:5b88d5760320 181 * for temporary power-saving; the overall ability of the device to operate for
kenjiArai 0:5b88d5760320 182 * input and/or output may be fixed at creation time, but this call can
kenjiArai 0:5b88d5760320 183 * allow output to be temporarily disabled to permit power saving without
kenjiArai 0:5b88d5760320 184 * losing device state.
kenjiArai 0:5b88d5760320 185 *
kenjiArai 0:5b88d5760320 186 * @param enabled true to enable output, false to disable.
kenjiArai 0:5b88d5760320 187 *
kenjiArai 0:5b88d5760320 188 * @return 0 on success
kenjiArai 0:5b88d5760320 189 * @return Negative error code on failure
kenjiArai 0:5b88d5760320 190 */
kenjiArai 0:5b88d5760320 191 virtual int enable_output(bool enabled);
kenjiArai 0:5b88d5760320 192
kenjiArai 0:5b88d5760320 193 /** Register a callback on state change of the file.
kenjiArai 0:5b88d5760320 194 *
kenjiArai 0:5b88d5760320 195 * The specified callback will be called on state changes such as when
kenjiArai 0:5b88d5760320 196 * the file can be written to or read from.
kenjiArai 0:5b88d5760320 197 *
kenjiArai 0:5b88d5760320 198 * The callback may be called in an interrupt context and should not
kenjiArai 0:5b88d5760320 199 * perform expensive operations.
kenjiArai 0:5b88d5760320 200 *
kenjiArai 0:5b88d5760320 201 * Note! This is not intended as an attach-like asynchronous api, but rather
kenjiArai 0:5b88d5760320 202 * as a building block for constructing such functionality.
kenjiArai 0:5b88d5760320 203 *
kenjiArai 0:5b88d5760320 204 * The exact timing of when the registered function
kenjiArai 0:5b88d5760320 205 * is called is not guaranteed and susceptible to change. It should be used
kenjiArai 0:5b88d5760320 206 * as a cue to make read/write/poll calls to find the current state.
kenjiArai 0:5b88d5760320 207 *
kenjiArai 0:5b88d5760320 208 * @param func Function to call on state change
kenjiArai 0:5b88d5760320 209 */
kenjiArai 0:5b88d5760320 210 virtual void sigio(Callback<void()> func);
kenjiArai 0:5b88d5760320 211
kenjiArai 0:5b88d5760320 212 /** Setup interrupt handler for DCD line
kenjiArai 0:5b88d5760320 213 *
kenjiArai 0:5b88d5760320 214 * If DCD line is connected, an IRQ handler will be setup.
kenjiArai 0:5b88d5760320 215 * Does nothing if DCD is NC, i.e., not connected.
kenjiArai 0:5b88d5760320 216 *
kenjiArai 0:5b88d5760320 217 * @param dcd_pin Pin-name for DCD
kenjiArai 0:5b88d5760320 218 * @param active_high a boolean set to true if DCD polarity is active low
kenjiArai 0:5b88d5760320 219 */
kenjiArai 0:5b88d5760320 220 void set_data_carrier_detect(PinName dcd_pin, bool active_high = false);
kenjiArai 0:5b88d5760320 221
kenjiArai 0:5b88d5760320 222 /** Set the baud rate
kenjiArai 0:5b88d5760320 223 *
kenjiArai 0:5b88d5760320 224 * @param baud The baud rate
kenjiArai 0:5b88d5760320 225 */
kenjiArai 0:5b88d5760320 226 void set_baud(int baud);
kenjiArai 0:5b88d5760320 227
kenjiArai 0:5b88d5760320 228 // Expose private SerialBase::Parity as UARTSerial::Parity
kenjiArai 0:5b88d5760320 229 using SerialBase::Parity;
kenjiArai 0:5b88d5760320 230 // In C++11, we wouldn't need to also have using directives for each value
kenjiArai 0:5b88d5760320 231 using SerialBase::None;
kenjiArai 0:5b88d5760320 232 using SerialBase::Odd;
kenjiArai 0:5b88d5760320 233 using SerialBase::Even;
kenjiArai 0:5b88d5760320 234 using SerialBase::Forced1;
kenjiArai 0:5b88d5760320 235 using SerialBase::Forced0;
kenjiArai 0:5b88d5760320 236
kenjiArai 0:5b88d5760320 237 /** Set the transmission format used by the serial port
kenjiArai 0:5b88d5760320 238 *
kenjiArai 0:5b88d5760320 239 * @param bits The number of bits in a word (5-8; default = 8)
kenjiArai 0:5b88d5760320 240 * @param parity The parity used (None, Odd, Even, Forced1, Forced0; default = None)
kenjiArai 0:5b88d5760320 241 * @param stop_bits The number of stop bits (1 or 2; default = 1)
kenjiArai 0:5b88d5760320 242 */
kenjiArai 0:5b88d5760320 243 void set_format(int bits = 8, Parity parity = UARTSerial::None, int stop_bits = 1);
kenjiArai 0:5b88d5760320 244
kenjiArai 0:5b88d5760320 245 #if DEVICE_SERIAL_FC
kenjiArai 0:5b88d5760320 246 // For now use the base enum - but in future we may have extra options
kenjiArai 0:5b88d5760320 247 // such as XON/XOFF or manual GPIO RTSCTS.
kenjiArai 0:5b88d5760320 248 using SerialBase::Flow;
kenjiArai 0:5b88d5760320 249 // In C++11, we wouldn't need to also have using directives for each value
kenjiArai 0:5b88d5760320 250 using SerialBase::Disabled;
kenjiArai 0:5b88d5760320 251 using SerialBase::RTS;
kenjiArai 0:5b88d5760320 252 using SerialBase::CTS;
kenjiArai 0:5b88d5760320 253 using SerialBase::RTSCTS;
kenjiArai 0:5b88d5760320 254
kenjiArai 0:5b88d5760320 255 /** Set the flow control type on the serial port
kenjiArai 0:5b88d5760320 256 *
kenjiArai 0:5b88d5760320 257 * @param type the flow control type (Disabled, RTS, CTS, RTSCTS)
kenjiArai 0:5b88d5760320 258 * @param flow1 the first flow control pin (RTS for RTS or RTSCTS, CTS for CTS)
kenjiArai 0:5b88d5760320 259 * @param flow2 the second flow control pin (CTS for RTSCTS)
kenjiArai 0:5b88d5760320 260 */
kenjiArai 0:5b88d5760320 261 void set_flow_control(Flow type, PinName flow1 = NC, PinName flow2 = NC);
kenjiArai 0:5b88d5760320 262 #endif
kenjiArai 0:5b88d5760320 263
kenjiArai 0:5b88d5760320 264 private:
kenjiArai 0:5b88d5760320 265
kenjiArai 0:5b88d5760320 266 /** SerialBase lock override */
kenjiArai 0:5b88d5760320 267 virtual void lock(void);
kenjiArai 0:5b88d5760320 268
kenjiArai 0:5b88d5760320 269 /** SerialBase unlock override */
kenjiArai 0:5b88d5760320 270 virtual void unlock(void);
kenjiArai 0:5b88d5760320 271
kenjiArai 0:5b88d5760320 272 /** Acquire mutex */
kenjiArai 0:5b88d5760320 273 virtual void api_lock(void);
kenjiArai 0:5b88d5760320 274
kenjiArai 0:5b88d5760320 275 /** Release mutex */
kenjiArai 0:5b88d5760320 276 virtual void api_unlock(void);
kenjiArai 0:5b88d5760320 277
kenjiArai 0:5b88d5760320 278 /** Unbuffered write - invoked when write called from critical section */
kenjiArai 0:5b88d5760320 279 ssize_t write_unbuffered(const char *buf_ptr, size_t length);
kenjiArai 0:5b88d5760320 280
kenjiArai 0:5b88d5760320 281 void enable_rx_irq();
kenjiArai 0:5b88d5760320 282 void disable_rx_irq();
kenjiArai 0:5b88d5760320 283 void enable_tx_irq();
kenjiArai 0:5b88d5760320 284 void disable_tx_irq();
kenjiArai 0:5b88d5760320 285
kenjiArai 0:5b88d5760320 286 /** Software serial buffers
kenjiArai 0:5b88d5760320 287 * By default buffer size is 256 for TX and 256 for RX. Configurable through mbed_app.json
kenjiArai 0:5b88d5760320 288 */
kenjiArai 0:5b88d5760320 289 CircularBuffer<char, MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE> _rxbuf;
kenjiArai 0:5b88d5760320 290 CircularBuffer<char, MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE> _txbuf;
kenjiArai 0:5b88d5760320 291
kenjiArai 0:5b88d5760320 292 PlatformMutex _mutex;
kenjiArai 0:5b88d5760320 293
kenjiArai 0:5b88d5760320 294 Callback<void()> _sigio_cb;
kenjiArai 0:5b88d5760320 295
kenjiArai 0:5b88d5760320 296 bool _blocking;
kenjiArai 0:5b88d5760320 297 bool _tx_irq_enabled;
kenjiArai 0:5b88d5760320 298 bool _rx_irq_enabled;
kenjiArai 0:5b88d5760320 299 bool _tx_enabled;
kenjiArai 0:5b88d5760320 300 bool _rx_enabled;
kenjiArai 0:5b88d5760320 301 InterruptIn *_dcd_irq;
kenjiArai 0:5b88d5760320 302
kenjiArai 0:5b88d5760320 303 /** Device Hanged up
kenjiArai 0:5b88d5760320 304 * Determines if the device hanged up on us.
kenjiArai 0:5b88d5760320 305 *
kenjiArai 0:5b88d5760320 306 * @return True, if hanged up
kenjiArai 0:5b88d5760320 307 */
kenjiArai 0:5b88d5760320 308 bool hup() const;
kenjiArai 0:5b88d5760320 309
kenjiArai 0:5b88d5760320 310 /** ISRs for serial
kenjiArai 0:5b88d5760320 311 * Routines to handle interrupts on serial pins.
kenjiArai 0:5b88d5760320 312 * Copies data into Circular Buffer.
kenjiArai 0:5b88d5760320 313 * Reports the state change to File handle.
kenjiArai 0:5b88d5760320 314 */
kenjiArai 0:5b88d5760320 315 void tx_irq(void);
kenjiArai 0:5b88d5760320 316 void rx_irq(void);
kenjiArai 0:5b88d5760320 317
kenjiArai 0:5b88d5760320 318 void wake(void);
kenjiArai 0:5b88d5760320 319
kenjiArai 0:5b88d5760320 320 void dcd_irq(void);
kenjiArai 0:5b88d5760320 321
kenjiArai 0:5b88d5760320 322 };
kenjiArai 1:9db0e321a9f4 323
kenjiArai 1:9db0e321a9f4 324 /** @}*/
kenjiArai 1:9db0e321a9f4 325
kenjiArai 0:5b88d5760320 326 } //namespace mbed
kenjiArai 0:5b88d5760320 327
kenjiArai 0:5b88d5760320 328 #endif //(DEVICE_SERIAL && DEVICE_INTERRUPTIN) || defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 329 #endif //MBED_UARTSERIAL_H