- added Delay to Serial flush method

Dependents:   WeeESP8266

Fork of ArduinoAPI by ITEAD STUDIO

Committer:
JojoS
Date:
Mon Apr 24 16:23:14 2017 +0000
Revision:
7:c62910a9e405
Parent:
5:8072d40c7f3c
support routiines for ESP;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
itead 0:5ebc917ebd09 1 #ifndef __ARDUINOAPI_ARDUINOSERIAL_H__
itead 0:5ebc917ebd09 2 #define __ARDUINOAPI_ARDUINOSERIAL_H__
itead 0:5ebc917ebd09 3
itead 0:5ebc917ebd09 4 #include "Print.h"
itead 0:5ebc917ebd09 5 #include "WString.h"
itead 0:5ebc917ebd09 6
JojoS 5:8072d40c7f3c 7
itead 0:5ebc917ebd09 8 typedef enum {
itead 4:1fec2e4c60e5 9 ARDUINOSERIAL_BUFFER_SIZE = 512,
itead 0:5ebc917ebd09 10 } ArduinoSerialConstant;
itead 0:5ebc917ebd09 11
itead 0:5ebc917ebd09 12 typedef struct {
itead 0:5ebc917ebd09 13 unsigned char buffer[ARDUINOSERIAL_BUFFER_SIZE];
itead 0:5ebc917ebd09 14 volatile unsigned int head;
itead 0:5ebc917ebd09 15 volatile unsigned int tail;
itead 0:5ebc917ebd09 16 } ArduinoSerialRingBuffer;
itead 0:5ebc917ebd09 17
itead 0:5ebc917ebd09 18 class ArduinoSerial;
itead 0:5ebc917ebd09 19
itead 0:5ebc917ebd09 20 typedef struct ArduinoSerialLinkedNode{
itead 0:5ebc917ebd09 21 ArduinoSerial* data;
itead 0:5ebc917ebd09 22 struct ArduinoSerialLinkedNode *next;
itead 0:5ebc917ebd09 23 } ArduinoSerialLinkedNode;
itead 0:5ebc917ebd09 24
itead 0:5ebc917ebd09 25 class ArduinoSerial: public Serial, public Print
itead 0:5ebc917ebd09 26 {
itead 0:5ebc917ebd09 27 public:
itead 0:5ebc917ebd09 28 ArduinoSerial(PinName tx, PinName rx);
itead 0:5ebc917ebd09 29
itead 0:5ebc917ebd09 30 virtual ~ArduinoSerial(void);
JojoS 7:c62910a9e405 31 using Serial::write;
itead 1:2179048af332 32 virtual size_t write(uint8_t data);
itead 1:2179048af332 33
itead 0:5ebc917ebd09 34 void begin(int baud_rate);
itead 0:5ebc917ebd09 35
itead 0:5ebc917ebd09 36 int available(void);
itead 0:5ebc917ebd09 37
itead 0:5ebc917ebd09 38 void flush(void);
itead 0:5ebc917ebd09 39
itead 0:5ebc917ebd09 40 char readChr(void);
itead 0:5ebc917ebd09 41
itead 0:5ebc917ebd09 42 void setTimeout(unsigned long millisecond);
itead 0:5ebc917ebd09 43
itead 0:5ebc917ebd09 44 bool find(const char *str);
itead 0:5ebc917ebd09 45
itead 0:5ebc917ebd09 46 private:
itead 0:5ebc917ebd09 47 static void uartIrqCallback(void);
itead 0:5ebc917ebd09 48 static ArduinoSerialLinkedNode *initHeadNode(ArduinoSerialLinkedNode *head);
itead 0:5ebc917ebd09 49 static ArduinoSerialLinkedNode *addNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data);
itead 0:5ebc917ebd09 50 static ArduinoSerialLinkedNode *delNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data);
itead 0:5ebc917ebd09 51 static ArduinoSerialLinkedNode *findNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data);
itead 0:5ebc917ebd09 52
itead 0:5ebc917ebd09 53 static ArduinoSerialLinkedNode ms_list_head;
itead 0:5ebc917ebd09 54 static unsigned int ms_instance_counter;
itead 0:5ebc917ebd09 55
itead 0:5ebc917ebd09 56 void writeChr(unsigned char c);
itead 0:5ebc917ebd09 57
itead 0:5ebc917ebd09 58 ArduinoSerialRingBuffer m_rx_buffer;
itead 0:5ebc917ebd09 59 unsigned long m_find_timeout;
itead 0:5ebc917ebd09 60 };
itead 0:5ebc917ebd09 61
itead 0:5ebc917ebd09 62 #endif /* #ifndef __ARDUINOAPI_ARDUINOSERIAL_H__ */