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