pengfei wu
/
ESP8266Program
For test
ArduinoSerial.h@11:7bd1b2a67b1a, 2015-02-03 (annotated)
- Committer:
- shennongmin
- Date:
- Tue Feb 03 07:31:13 2015 +0000
- Revision:
- 11:7bd1b2a67b1a
- Parent:
- 10:9d4ec0359a5c
- Child:
- 12:4e4e72f18047
debug linked list
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 | 10:9d4ec0359a5c | 4 | #include "time.h" |
shennongmin | 10:9d4ec0359a5c | 5 | #include "Print.h" |
shennongmin | 10:9d4ec0359a5c | 6 | #include "WString.h" |
shennongmin | 10:9d4ec0359a5c | 7 | |
shennongmin | 11:7bd1b2a67b1a | 8 | typedef enum { |
shennongmin | 11:7bd1b2a67b1a | 9 | ARDUINOSERIAL_INSTANCE_MAX = 5, |
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 | 11:7bd1b2a67b1a | 28 | |
shennongmin | 10:9d4ec0359a5c | 29 | public: |
shennongmin | 10:9d4ec0359a5c | 30 | static void uart_irq_callback(void); |
shennongmin | 11:7bd1b2a67b1a | 31 | static LinkedListNode *init_list_head_node(LinkedListNode *head); |
shennongmin | 11:7bd1b2a67b1a | 32 | static LinkedListNode *add_node_to_tail(LinkedListNode *head, ArduinoSerial* data); |
shennongmin | 11:7bd1b2a67b1a | 33 | static LinkedListNode *del_node_by_data(LinkedListNode *head, ArduinoSerial* data); |
shennongmin | 11:7bd1b2a67b1a | 34 | static LinkedListNode *find_node_by_data(LinkedListNode *head, ArduinoSerial* data); |
shennongmin | 11:7bd1b2a67b1a | 35 | |
shennongmin | 10:9d4ec0359a5c | 36 | public: |
shennongmin | 10:9d4ec0359a5c | 37 | ArduinoSerial(PinName tx, PinName rx); |
shennongmin | 10:9d4ec0359a5c | 38 | |
shennongmin | 10:9d4ec0359a5c | 39 | virtual ~ArduinoSerial(void); |
shennongmin | 10:9d4ec0359a5c | 40 | |
shennongmin | 10:9d4ec0359a5c | 41 | void begin(int baud_rate); |
shennongmin | 10:9d4ec0359a5c | 42 | |
shennongmin | 10:9d4ec0359a5c | 43 | int available(void); |
shennongmin | 10:9d4ec0359a5c | 44 | |
shennongmin | 10:9d4ec0359a5c | 45 | /* 清空接收缓冲区的数据 */ |
shennongmin | 10:9d4ec0359a5c | 46 | void flush(void); |
shennongmin | 10:9d4ec0359a5c | 47 | |
shennongmin | 10:9d4ec0359a5c | 48 | char read_char(void); |
shennongmin | 10:9d4ec0359a5c | 49 | |
shennongmin | 10:9d4ec0359a5c | 50 | void setTimeout(unsigned long millisecond); |
shennongmin | 10:9d4ec0359a5c | 51 | |
shennongmin | 10:9d4ec0359a5c | 52 | bool find(const char *str); |
shennongmin | 10:9d4ec0359a5c | 53 | |
shennongmin | 10:9d4ec0359a5c | 54 | virtual size_t write(uint8_t data); |
shennongmin | 11:7bd1b2a67b1a | 55 | |
shennongmin | 10:9d4ec0359a5c | 56 | private: |
shennongmin | 10:9d4ec0359a5c | 57 | void write_char(unsigned char c); |
shennongmin | 10:9d4ec0359a5c | 58 | |
shennongmin | 10:9d4ec0359a5c | 59 | private: |
shennongmin | 11:7bd1b2a67b1a | 60 | static LinkedListNode list_head; |
shennongmin | 10:9d4ec0359a5c | 61 | static unsigned int instance_counter; |
shennongmin | 10:9d4ec0359a5c | 62 | |
shennongmin | 10:9d4ec0359a5c | 63 | RingBuffer rx_buffer; |
shennongmin | 10:9d4ec0359a5c | 64 | unsigned long find_timeout; |
shennongmin | 10:9d4ec0359a5c | 65 | }; |
shennongmin | 10:9d4ec0359a5c | 66 | |
shennongmin | 10:9d4ec0359a5c | 67 | #endif /* #ifndef __ARDUINOSERIAL_H__ */ |