Files
MarklinController/serial.h
2022-03-15 22:40:07 +01:00

49 lines
1.1 KiB
C++

#ifndef SERIAL_H
#define SERIAL_H
#define BAUD 38400
#define SERIAL_RX_BUFFER_SIZE 384
#define SERIAL_TX_BUFFER_SIZE 128
#include <util/setbaud.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <string.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "ringbuffer.h"
const bool serialFlowControl = false;
class Serial
{
private:
char _terminator = '\n';
Serial();
public:
volatile RingBuffer<SERIAL_RX_BUFFER_SIZE, volatile uint8_t> rxBuffer;
volatile RingBuffer<SERIAL_TX_BUFFER_SIZE, volatile uint8_t> txBuffer;
bool stopped = false;
volatile bool transmitting = false;
static Serial* getInstance();
void putChar(const char c);
void write(const char* in, const unsigned int length);
void write(const char in[]);
void write_p(const char in[]); //for flash space strigns
void write(const int32_t in);
unsigned int read( char* buffer, const unsigned int length );
bool dataIsWaiting();
char getChar();
unsigned int getString(char* buffer, const int bufferLength);
void flush();
void setTerminator(const char terminator);
};
#endif