52 uint8_t _receiveBitMask;
53 volatile uint8_t *_receivePortRegister;
54 uint8_t _transmitBitMask;
55 volatile uint8_t *_transmitPortRegister;
56 volatile uint8_t *_pcint_maskreg;
57 uint8_t _pcint_maskvalue;
60 uint16_t _rx_delay_centering;
61 uint16_t _rx_delay_intrabit;
62 uint16_t _rx_delay_stopbit;
65 uint16_t _buffer_overflow:1;
66 uint16_t _inverse_logic:1;
69 static char _receive_buffer[_SS_MAX_RX_BUFF];
70 static volatile uint8_t _receive_buffer_tail;
71 static volatile uint8_t _receive_buffer_head;
75 inline void recv() __attribute__((__always_inline__));
76 uint8_t rx_pin_read();
77 void setTX(uint8_t transmitPin);
78 void setRX(uint8_t receivePin);
79 inline void setRxIntMsk(
bool enable) __attribute__((__always_inline__));
82 static uint16_t subtract_cap(uint16_t num, uint16_t sub);
85 static inline void tunedDelay(uint16_t delay);
89 SoftwareSerial(uint8_t receivePin, uint8_t transmitPin,
bool inverse_logic =
false);
91 void begin(
long speed);
94 bool isListening() {
return this == active_object; }
96 bool overflow() {
bool ret = _buffer_overflow;
if (ret) _buffer_overflow =
false;
return ret; }
99 virtual size_t write(uint8_t
byte);
101 virtual int available();
102 virtual void flush();
103 operator bool() {
return true; }
108 static inline void handle_interrupt() __attribute__((__always_inline__));