pengfei wu
/
ESP8266Program
For test
ArduinoSerial.h@16:e184ebcd5896, 2015-02-04 (annotated)
- Committer:
- shennongmin
- Date:
- Wed Feb 04 02:47:28 2015 +0000
- Revision:
- 16:e184ebcd5896
- Parent:
- 15:f5682fb5b315
- Child:
- 18:37254b357abd
All is okay without style
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shennongmin | 10:9d4ec0359a5c | 1 | #ifndef __ARDUINOSERIAL_H__ |
shennongmin | 10:9d4ec0359a5c | 2 | #define __ARDUINOSERIAL_H__ |
shennongmin | 10:9d4ec0359a5c | 3 | |
shennongmin | 15:f5682fb5b315 | 4 | #include "log.h" |
shennongmin | 10:9d4ec0359a5c | 5 | #include "time.h" |
shennongmin | 10:9d4ec0359a5c | 6 | #include "Print.h" |
shennongmin | 10:9d4ec0359a5c | 7 | #include "WString.h" |
shennongmin | 10:9d4ec0359a5c | 8 | |
shennongmin | 11:7bd1b2a67b1a | 9 | typedef enum { |
shennongmin | 11:7bd1b2a67b1a | 10 | ARDUINOSERIAL_BUFFER_SIZE = 4096, |
shennongmin | 11:7bd1b2a67b1a | 11 | } ArduinoSerialConstant; |
shennongmin | 11:7bd1b2a67b1a | 12 | |
shennongmin | 11:7bd1b2a67b1a | 13 | typedef struct { |
shennongmin | 11:7bd1b2a67b1a | 14 | unsigned char buffer[ARDUINOSERIAL_BUFFER_SIZE]; |
shennongmin | 11:7bd1b2a67b1a | 15 | volatile unsigned int head; |
shennongmin | 11:7bd1b2a67b1a | 16 | volatile unsigned int tail; |
shennongmin | 11:7bd1b2a67b1a | 17 | } RingBuffer; |
shennongmin | 11:7bd1b2a67b1a | 18 | |
shennongmin | 11:7bd1b2a67b1a | 19 | class ArduinoSerial; |
shennongmin | 11:7bd1b2a67b1a | 20 | |
shennongmin | 11:7bd1b2a67b1a | 21 | typedef struct LinkedListNode{ |
shennongmin | 11:7bd1b2a67b1a | 22 | ArduinoSerial* data; |
shennongmin | 11:7bd1b2a67b1a | 23 | struct LinkedListNode *next; |
shennongmin | 11:7bd1b2a67b1a | 24 | } LinkedListNode; |
shennongmin | 10:9d4ec0359a5c | 25 | |
shennongmin | 10:9d4ec0359a5c | 26 | class ArduinoSerial: public Serial, public Print |
shennongmin | 10:9d4ec0359a5c | 27 | { |
shennongmin | 10:9d4ec0359a5c | 28 | public: |
shennongmin | 10:9d4ec0359a5c | 29 | static void uart_irq_callback(void); |
shennongmin | 11:7bd1b2a67b1a | 30 | |
shennongmin | 10:9d4ec0359a5c | 31 | ArduinoSerial(PinName tx, PinName rx); |
shennongmin | 10:9d4ec0359a5c | 32 | |
shennongmin | 10:9d4ec0359a5c | 33 | virtual ~ArduinoSerial(void); |
shennongmin | 10:9d4ec0359a5c | 34 | |
shennongmin | 10:9d4ec0359a5c | 35 | void begin(int baud_rate); |
shennongmin | 10:9d4ec0359a5c | 36 | |
shennongmin | 10:9d4ec0359a5c | 37 | int available(void); |
shennongmin | 10:9d4ec0359a5c | 38 | |
shennongmin | 10:9d4ec0359a5c | 39 | /* 清空接收缓冲区的数据 */ |
shennongmin | 10:9d4ec0359a5c | 40 | void flush(void); |
shennongmin | 10:9d4ec0359a5c | 41 | |
shennongmin | 10:9d4ec0359a5c | 42 | char read_char(void); |
shennongmin | 10:9d4ec0359a5c | 43 | |
shennongmin | 10:9d4ec0359a5c | 44 | void setTimeout(unsigned long millisecond); |
shennongmin | 10:9d4ec0359a5c | 45 | |
shennongmin | 10:9d4ec0359a5c | 46 | bool find(const char *str); |
shennongmin | 10:9d4ec0359a5c | 47 | |
shennongmin | 10:9d4ec0359a5c | 48 | virtual size_t write(uint8_t data); |
shennongmin | 11:7bd1b2a67b1a | 49 | |
shennongmin | 10:9d4ec0359a5c | 50 | private: |
shennongmin | 12:4e4e72f18047 | 51 | static LinkedListNode *init_list_head_node(LinkedListNode *head); |
shennongmin | 12:4e4e72f18047 | 52 | static LinkedListNode *add_node_to_tail(LinkedListNode *head, ArduinoSerial* data); |
shennongmin | 12:4e4e72f18047 | 53 | static LinkedListNode *del_node_by_data(LinkedListNode *head, ArduinoSerial* data); |
shennongmin | 12:4e4e72f18047 | 54 | static LinkedListNode *find_node_by_data(LinkedListNode *head, ArduinoSerial* data); |
shennongmin | 10:9d4ec0359a5c | 55 | |
shennongmin | 11:7bd1b2a67b1a | 56 | static LinkedListNode list_head; |
shennongmin | 10:9d4ec0359a5c | 57 | static unsigned int instance_counter; |
shennongmin | 10:9d4ec0359a5c | 58 | |
shennongmin | 14:40b1decf03f3 | 59 | void write_char(unsigned char c); |
shennongmin | 16:e184ebcd5896 | 60 | |
shennongmin | 10:9d4ec0359a5c | 61 | RingBuffer rx_buffer; |
shennongmin | 10:9d4ec0359a5c | 62 | unsigned long find_timeout; |
shennongmin | 10:9d4ec0359a5c | 63 | }; |
shennongmin | 10:9d4ec0359a5c | 64 | |
shennongmin | 10:9d4ec0359a5c | 65 | #endif /* #ifndef __ARDUINOSERIAL_H__ */ |