mirror of
				https://github.com/digistump/DigistumpArduino.git
				synced 2025-11-03 21:14:46 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
 | 
						|
#if USE_SOFTWARE_SERIAL 
 | 
						|
#ifndef TinySoftwareSerial_h
 | 
						|
#define TinySoftwareSerial_h
 | 
						|
#include <inttypes.h>
 | 
						|
#include "Stream.h"
 | 
						|
 | 
						|
#if !defined(ACSR) && defined(ACSRA)
 | 
						|
#define ACSR ACSRA
 | 
						|
#endif
 | 
						|
 | 
						|
#if (RAMEND < 250)
 | 
						|
  #define SERIAL_BUFFER_SIZE 8
 | 
						|
#elif (RAMEND < 500)
 | 
						|
  #define SERIAL_BUFFER_SIZE 16
 | 
						|
#elif (RAMEND < 1000)
 | 
						|
  #define SERIAL_BUFFER_SIZE 32
 | 
						|
#else
 | 
						|
  #define SERIAL_BUFFER_SIZE 128
 | 
						|
#endif
 | 
						|
struct soft_ring_buffer
 | 
						|
{
 | 
						|
  unsigned char buffer[SERIAL_BUFFER_SIZE];
 | 
						|
  int head;
 | 
						|
  int tail;
 | 
						|
};
 | 
						|
 | 
						|
extern "C"{
 | 
						|
  void uartDelay() __attribute__ ((naked));
 | 
						|
  uint8_t getch();
 | 
						|
  void store_char(unsigned char c, soft_ring_buffer *buffer);
 | 
						|
}
 | 
						|
 | 
						|
class TinySoftwareSerial : public Stream
 | 
						|
{
 | 
						|
  public: //should be private but needed by extern "C" {} functions.
 | 
						|
	uint8_t _rxmask;
 | 
						|
	uint8_t _txmask;
 | 
						|
	uint8_t _txunmask;
 | 
						|
	soft_ring_buffer *_rx_buffer;
 | 
						|
	uint8_t _delayCount;
 | 
						|
  public:
 | 
						|
    TinySoftwareSerial(soft_ring_buffer *rx_buffer, uint8_t txBit, uint8_t rxBit);
 | 
						|
    void begin(long);
 | 
						|
    void end();
 | 
						|
    virtual int available(void);
 | 
						|
    virtual int peek(void);
 | 
						|
    virtual int read(void);
 | 
						|
    virtual void flush(void);
 | 
						|
    virtual size_t write(uint8_t);
 | 
						|
    using Print::write; // pull in write(str) and write(buf, size) from Print
 | 
						|
    operator bool();
 | 
						|
};
 | 
						|
 | 
						|
#if (!defined(UBRRH) && !defined(UBRR0H)) || USE_SOFTWARE_SERIAL
 | 
						|
  extern TinySoftwareSerial Serial;
 | 
						|
#endif
 | 
						|
 | 
						|
//extern void putch(uint8_t);
 | 
						|
#endif
 | 
						|
#endif
 |