mirror of
https://github.com/digistump/DigistumpArduino.git
synced 2025-09-18 01:42:26 -07:00
switch to setup for Arduino Boards Manager
This commit is contained in:
61
digistump-avr/cores/pro/TinySoftwareSerial.h
Normal file
61
digistump-avr/cores/pro/TinySoftwareSerial.h
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
#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
|
Reference in New Issue
Block a user