Software buffers and interrupt driven tx and rx for Serial. More...
#include <BufferedSerial.h>
Public Member Functions | |
BufferedSerial (PinName tx, PinName rx, uint32_t buf_size=256, uint32_t tx_multiple=4, const char *name=NULL) | |
virtual int | getc (void) |
virtual int | printf (const char *format,...) |
virtual int | putc (int c) |
virtual int | puts (const char *s) |
virtual int | readable (void) |
virtual ssize_t | write (const void *s, std::size_t length) |
virtual int | writeable (void) |
virtual | ~BufferedSerial (void) |
Private Member Functions | |
void | prime (void) |
void | rxIrq (void) |
void | txIrq (void) |
Private Attributes | |
uint32_t | _buf_size |
Buffer< char > | _rxbuf |
uint32_t | _tx_multiple |
Buffer< char > | _txbuf |
Software buffers and interrupt driven tx and rx for Serial.
A serial port (UART) for communication with other serial devices
Can be used for Full Duplex communication, or Simplex by specifying one pin as NC (Not Connected)
Example:
#include "mbed.h" #include "BufferedSerial.h" BufferedSerial pc(USBTX, USBRX); int main() { while(1) { Timer s; s.start(); pc.printf("Hello World - buffered\n"); int buffered_time = s.read_us(); wait(0.1f); // give time for the buffer to empty s.reset(); printf("Hello World - blocking\n"); int polled_time = s.read_us(); s.stop(); wait(0.1f); // give time for the buffer to empty pc.printf("printf buffered took %d us\n", buffered_time); pc.printf("printf blocking took %d us\n", polled_time); wait(0.5f); } }
Definition at line 71 of file BufferedSerial.h.
BufferedSerial::BufferedSerial | ( | PinName | tx, |
PinName | rx, | ||
uint32_t | buf_size = 256 , |
||
uint32_t | tx_multiple = 4 , |
||
const char * | name = NULL |
||
) |
Create a BufferedSerial port, connected to the specified transmit and receive pins
tx | Transmit pin |
rx | Receive pin |
buf_size | printf() buffer size |
tx_multiple | amount of max printf() present in the internal ring buffer at one time |
name | optional name |
Definition at line 26 of file BufferedSerial.cpp.
BufferedSerial::~BufferedSerial | ( | void | ) | [virtual] |
Destroy a BufferedSerial port
Definition at line 35 of file BufferedSerial.cpp.
int BufferedSerial::getc | ( | void | ) | [virtual] |
Get a single byte from the BufferedSerial Port. Should check readable() before calling this.
Definition at line 53 of file BufferedSerial.cpp.
void BufferedSerial::prime | ( | void | ) | [private] |
Definition at line 146 of file BufferedSerial.cpp.
int BufferedSerial::printf | ( | const char * | format, |
... | |||
) | [virtual] |
Write a formatted string to the BufferedSerial Port.
format | The string + format specifiers to write to the Serial Port |
Definition at line 82 of file BufferedSerial.cpp.
int BufferedSerial::putc | ( | int | c | ) | [virtual] |
Write a single byte to the BufferedSerial Port.
c | The byte to write to the Serial Port |
Definition at line 58 of file BufferedSerial.cpp.
int BufferedSerial::puts | ( | const char * | s | ) | [virtual] |
Write a string to the BufferedSerial Port. Must be NULL terminated
s | The string to write to the Serial Port |
Definition at line 66 of file BufferedSerial.cpp.
int BufferedSerial::readable | ( | void | ) | [virtual] |
Check on how many bytes are in the rx buffer
Definition at line 43 of file BufferedSerial.cpp.
void BufferedSerial::rxIrq | ( | void | ) | [private] |
Definition at line 120 of file BufferedSerial.cpp.
void BufferedSerial::txIrq | ( | void | ) | [private] |
Definition at line 130 of file BufferedSerial.cpp.
ssize_t BufferedSerial::write | ( | const void * | s, |
std::size_t | length | ||
) | [virtual] |
Write data to the Buffered Serial Port
s | A pointer to data to send |
length | The amount of data being pointed to |
Definition at line 103 of file BufferedSerial.cpp.
int BufferedSerial::writeable | ( | void | ) | [virtual] |
Check to see if the tx buffer has room
Definition at line 48 of file BufferedSerial.cpp.
uint32_t BufferedSerial::_buf_size [private] |
Definition at line 76 of file BufferedSerial.h.
Buffer<char> BufferedSerial::_rxbuf [private] |
Definition at line 74 of file BufferedSerial.h.
uint32_t BufferedSerial::_tx_multiple [private] |
Definition at line 77 of file BufferedSerial.h.
Buffer<char> BufferedSerial::_txbuf [private] |
Definition at line 75 of file BufferedSerial.h.