pengfei wu
/
ESP8266Program
For test
ArduinoSerial.h
- Committer:
- shennongmin
- Date:
- 2015-02-04
- Revision:
- 19:6c8b29734511
- Parent:
- 18:37254b357abd
- Child:
- 20:43451f36281e
File content as of revision 19:6c8b29734511:
#ifndef __ARDUINOSERIAL_H__ #define __ARDUINOSERIAL_H__ #include "time.h" #include "Print.h" #include "WString.h" typedef enum { ARDUINOSERIAL_BUFFER_SIZE = 4096, } ArduinoSerialConstant; typedef struct { unsigned char buffer[ARDUINOSERIAL_BUFFER_SIZE]; volatile unsigned int head; volatile unsigned int tail; } ArduinoSerialRingBuffer; class ArduinoSerial; typedef struct ArduinoSerialLinkedNode{ ArduinoSerial* data; struct ArduinoSerialLinkedNode *next; } ArduinoSerialLinkedNode; class ArduinoSerial: public Serial, public Print { public: ArduinoSerial(PinName tx, PinName rx); virtual ~ArduinoSerial(void); void begin(int baud_rate); int available(void); /* 清空接收缓冲区的数据 */ void flush(void); char read_char(void); void setTimeout(unsigned long millisecond); bool find(const char *str); virtual size_t write(uint8_t data); private: static void uartIrqCallback(void); static ArduinoSerialLinkedNode *initHeadNode(ArduinoSerialLinkedNode *head); static ArduinoSerialLinkedNode *addNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); static ArduinoSerialLinkedNode *delNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); static ArduinoSerialLinkedNode *findNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); static ArduinoSerialLinkedNode ms_list_head; static unsigned int ms_instance_counter; void write_char(unsigned char c); ArduinoSerialRingBuffer m_rx_buffer; unsigned long m_find_timeout; }; #endif /* #ifndef __ARDUINOSERIAL_H__ */