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.