pengfei wu
/
ESP8266Program
For test
ArduinoSerial.h@19:6c8b29734511, 2015-02-04 (annotated)
- Committer:
- shennongmin
- Date:
- Wed Feb 04 09:28:28 2015 +0000
- Revision:
- 19:6c8b29734511
- Parent:
- 18:37254b357abd
- Child:
- 20:43451f36281e
compile okay
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_BUFFER_SIZE = 4096, |
shennongmin | 11:7bd1b2a67b1a | 10 | } ArduinoSerialConstant; |
shennongmin | 11:7bd1b2a67b1a | 11 | |
shennongmin | 11:7bd1b2a67b1a | 12 | typedef struct { |
shennongmin | 11:7bd1b2a67b1a | 13 | unsigned char buffer[ARDUINOSERIAL_BUFFER_SIZE]; |
shennongmin | 11:7bd1b2a67b1a | 14 | volatile unsigned int head; |
shennongmin | 11:7bd1b2a67b1a | 15 | volatile unsigned int tail; |
shennongmin | 18:37254b357abd | 16 | } ArduinoSerialRingBuffer; |
shennongmin | 11:7bd1b2a67b1a | 17 | |
shennongmin | 11:7bd1b2a67b1a | 18 | class ArduinoSerial; |
shennongmin | 11:7bd1b2a67b1a | 19 | |
shennongmin | 19:6c8b29734511 | 20 | typedef struct ArduinoSerialLinkedNode{ |
shennongmin | 11:7bd1b2a67b1a | 21 | ArduinoSerial* data; |
shennongmin | 19:6c8b29734511 | 22 | struct ArduinoSerialLinkedNode *next; |
shennongmin | 19:6c8b29734511 | 23 | } ArduinoSerialLinkedNode; |
shennongmin | 10:9d4ec0359a5c | 24 | |
shennongmin | 10:9d4ec0359a5c | 25 | class ArduinoSerial: public Serial, public Print |
shennongmin | 10:9d4ec0359a5c | 26 | { |
shennongmin | 10:9d4ec0359a5c | 27 | public: |
shennongmin | 10:9d4ec0359a5c | 28 | ArduinoSerial(PinName tx, PinName rx); |
shennongmin | 10:9d4ec0359a5c | 29 | |
shennongmin | 10:9d4ec0359a5c | 30 | virtual ~ArduinoSerial(void); |
shennongmin | 10:9d4ec0359a5c | 31 | |
shennongmin | 10:9d4ec0359a5c | 32 | void begin(int baud_rate); |
shennongmin | 10:9d4ec0359a5c | 33 | |
shennongmin | 10:9d4ec0359a5c | 34 | int available(void); |
shennongmin | 10:9d4ec0359a5c | 35 | |
shennongmin | 10:9d4ec0359a5c | 36 | /* 清空接收缓冲区的数据 */ |
shennongmin | 10:9d4ec0359a5c | 37 | void flush(void); |
shennongmin | 10:9d4ec0359a5c | 38 | |
shennongmin | 10:9d4ec0359a5c | 39 | char read_char(void); |
shennongmin | 10:9d4ec0359a5c | 40 | |
shennongmin | 10:9d4ec0359a5c | 41 | void setTimeout(unsigned long millisecond); |
shennongmin | 10:9d4ec0359a5c | 42 | |
shennongmin | 10:9d4ec0359a5c | 43 | bool find(const char *str); |
shennongmin | 10:9d4ec0359a5c | 44 | |
shennongmin | 10:9d4ec0359a5c | 45 | virtual size_t write(uint8_t data); |
shennongmin | 11:7bd1b2a67b1a | 46 | |
shennongmin | 10:9d4ec0359a5c | 47 | private: |
shennongmin | 18:37254b357abd | 48 | static void uartIrqCallback(void); |
shennongmin | 19:6c8b29734511 | 49 | static ArduinoSerialLinkedNode *initHeadNode(ArduinoSerialLinkedNode *head); |
shennongmin | 19:6c8b29734511 | 50 | static ArduinoSerialLinkedNode *addNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); |
shennongmin | 19:6c8b29734511 | 51 | static ArduinoSerialLinkedNode *delNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); |
shennongmin | 19:6c8b29734511 | 52 | static ArduinoSerialLinkedNode *findNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); |
shennongmin | 10:9d4ec0359a5c | 53 | |
shennongmin | 19:6c8b29734511 | 54 | static ArduinoSerialLinkedNode ms_list_head; |
shennongmin | 19:6c8b29734511 | 55 | static unsigned int ms_instance_counter; |
shennongmin | 10:9d4ec0359a5c | 56 | |
shennongmin | 14:40b1decf03f3 | 57 | void write_char(unsigned char c); |
shennongmin | 16:e184ebcd5896 | 58 | |
shennongmin | 19:6c8b29734511 | 59 | ArduinoSerialRingBuffer m_rx_buffer; |
shennongmin | 19:6c8b29734511 | 60 | unsigned long m_find_timeout; |
shennongmin | 10:9d4ec0359a5c | 61 | }; |
shennongmin | 10:9d4ec0359a5c | 62 | |
shennongmin | 10:9d4ec0359a5c | 63 | #endif /* #ifndef __ARDUINOSERIAL_H__ */ |