1 #ifndef HardwareSerialPlus_h 2 #define HardwareSerialPlus_h 7 #define SERIAL_5N1 0x00 8 #define SERIAL_6N1 0x02 9 #define SERIAL_7N1 0x04 10 #define SERIAL_8N1 0x06 11 #define SERIAL_5N2 0x08 12 #define SERIAL_6N2 0x0A 13 #define SERIAL_7N2 0x0C 14 #define SERIAL_8N2 0x0E 15 #define SERIAL_5E1 0x20 16 #define SERIAL_6E1 0x22 17 #define SERIAL_7E1 0x24 18 #define SERIAL_8E1 0x26 19 #define SERIAL_5E2 0x28 20 #define SERIAL_6E2 0x2A 21 #define SERIAL_7E2 0x2C 22 #define SERIAL_8E2 0x2E 23 #define SERIAL_5O1 0x30 24 #define SERIAL_6O1 0x32 25 #define SERIAL_7O1 0x34 26 #define SERIAL_8O1 0x36 27 #define SERIAL_5O2 0x38 28 #define SERIAL_6O2 0x3A 29 #define SERIAL_7O2 0x3C 30 #define SERIAL_8O2 0x3E 35 volatile uint8_t *
const _ubrrh;
36 volatile uint8_t *
const _ubrrl;
37 volatile uint8_t *
const _ucsra;
38 volatile uint8_t *
const _ucsrb;
39 volatile uint8_t *
const _ucsrc;
40 volatile uint8_t *
const _udr;
44 volatile uint16_t _rx_buffer_head;
45 volatile uint16_t _rx_buffer_tail;
46 volatile uint16_t _tx_buffer_head;
47 volatile uint16_t _tx_buffer_tail;
49 uint16_t _rx_buffer_size;
50 uint16_t _tx_buffer_size;
51 unsigned char* _rx_buffer;
52 unsigned char* _tx_buffer;
55 volatile uint8_t *ubrrh,
volatile uint8_t *ubrrl,
56 volatile uint8_t *ucsra,
volatile uint8_t *ucsrb,
57 volatile uint8_t *ucsrc,
volatile uint8_t *udr,
58 unsigned char *rxbuffer, uint16_t rxsize,
unsigned char *txbuffer, uint16_t txsize);
59 void setRxBuffer(
unsigned char *buffer, uint16_t size);
60 void setTxBuffer(
unsigned char *buffer, uint16_t size);
61 void begin(
unsigned long baud) { begin(baud, SERIAL_8N1); }
62 void begin(
unsigned long, uint8_t);
68 int availableForWrite(
void);
69 size_t write(uint8_t);
70 inline size_t write(
unsigned long n) {
return write((uint8_t)n); }
71 inline size_t write(
long n) {
return write((uint8_t)n); }
72 inline size_t write(
unsigned int n) {
return write((uint8_t)n); }
73 inline size_t write(
int n) {
return write((uint8_t)n); }
75 operator bool() {
return true; }
76 inline void _rx_complete_irq(
void);
77 void _tx_udr_empty_irq(
void);
80 #if defined(UBRRH) || defined(UBRR0H) 82 #define HAVE_HWSERIAL0P 86 #define HAVE_HWSERIAL1P 90 #define HAVE_HWSERIAL2P 94 #define HAVE_HWSERIAL3P 97 extern void serialPlusEventRun(
void) __attribute__((weak));