pengfei wu
/
ESP8266Program
For test
ArduinoSerial.h
- Committer:
- shennongmin
- Date:
- 2015-02-03
- Revision:
- 15:f5682fb5b315
- Parent:
- 14:40b1decf03f3
- Child:
- 16:e184ebcd5896
File content as of revision 15:f5682fb5b315:
#ifndef __ARDUINOSERIAL_H__ #define __ARDUINOSERIAL_H__ #include "log.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; } RingBuffer; class ArduinoSerial; typedef struct LinkedListNode{ ArduinoSerial* data; struct LinkedListNode *next; } LinkedListNode; class ArduinoSerial: public Serial, public Print { public: static void uart_irq_callback(void); 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 LinkedListNode *init_list_head_node(LinkedListNode *head); static LinkedListNode *add_node_to_tail(LinkedListNode *head, ArduinoSerial* data); static LinkedListNode *del_node_by_data(LinkedListNode *head, ArduinoSerial* data); static LinkedListNode *find_node_by_data(LinkedListNode *head, ArduinoSerial* data); static LinkedListNode list_head; static unsigned int instance_counter; void write_char(unsigned char c); RingBuffer rx_buffer; unsigned long find_timeout; }; #endif /* #ifndef __ARDUINOSERIAL_H__ */