pengfei wu
/
ESP8266Program
For test
ArduinoSerial.h@10:9d4ec0359a5c, 2015-02-02 (annotated)
- Committer:
- shennongmin
- Date:
- Mon Feb 02 09:46:16 2015 +0000
- Revision:
- 10:9d4ec0359a5c
- Child:
- 11:7bd1b2a67b1a
Style remained
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 | 10:9d4ec0359a5c | 8 | |
shennongmin | 10:9d4ec0359a5c | 9 | class ArduinoSerial: public Serial, public Print |
shennongmin | 10:9d4ec0359a5c | 10 | { |
shennongmin | 10:9d4ec0359a5c | 11 | public: |
shennongmin | 10:9d4ec0359a5c | 12 | typedef enum { |
shennongmin | 10:9d4ec0359a5c | 13 | ARDUINOSERIAL_INSTANCE_MAX = 5, |
shennongmin | 10:9d4ec0359a5c | 14 | ARDUINOSERIAL_BUFFER_SIZE = 4096, |
shennongmin | 10:9d4ec0359a5c | 15 | } Constant; |
shennongmin | 10:9d4ec0359a5c | 16 | |
shennongmin | 10:9d4ec0359a5c | 17 | typedef struct { |
shennongmin | 10:9d4ec0359a5c | 18 | unsigned char buffer[ARDUINOSERIAL_BUFFER_SIZE]; |
shennongmin | 10:9d4ec0359a5c | 19 | volatile unsigned int head; |
shennongmin | 10:9d4ec0359a5c | 20 | volatile unsigned int tail; |
shennongmin | 10:9d4ec0359a5c | 21 | } RingBuffer; |
shennongmin | 10:9d4ec0359a5c | 22 | |
shennongmin | 10:9d4ec0359a5c | 23 | public: |
shennongmin | 10:9d4ec0359a5c | 24 | static void uart_irq_callback(void); |
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 | /* 清空接收缓冲区的数据 */ |
shennongmin | 10:9d4ec0359a5c | 36 | void flush(void); |
shennongmin | 10:9d4ec0359a5c | 37 | |
shennongmin | 10:9d4ec0359a5c | 38 | char read_char(void); |
shennongmin | 10:9d4ec0359a5c | 39 | |
shennongmin | 10:9d4ec0359a5c | 40 | void setTimeout(unsigned long millisecond); |
shennongmin | 10:9d4ec0359a5c | 41 | |
shennongmin | 10:9d4ec0359a5c | 42 | bool find(const char *str); |
shennongmin | 10:9d4ec0359a5c | 43 | |
shennongmin | 10:9d4ec0359a5c | 44 | virtual size_t write(uint8_t data); |
shennongmin | 10:9d4ec0359a5c | 45 | |
shennongmin | 10:9d4ec0359a5c | 46 | private: |
shennongmin | 10:9d4ec0359a5c | 47 | void write_char(unsigned char c); |
shennongmin | 10:9d4ec0359a5c | 48 | |
shennongmin | 10:9d4ec0359a5c | 49 | private: |
shennongmin | 10:9d4ec0359a5c | 50 | static unsigned int instance_counter; |
shennongmin | 10:9d4ec0359a5c | 51 | static ArduinoSerial *instance_reference[ARDUINOSERIAL_INSTANCE_MAX]; |
shennongmin | 10:9d4ec0359a5c | 52 | |
shennongmin | 10:9d4ec0359a5c | 53 | RingBuffer rx_buffer; |
shennongmin | 10:9d4ec0359a5c | 54 | unsigned long find_timeout; |
shennongmin | 10:9d4ec0359a5c | 55 | }; |
shennongmin | 10:9d4ec0359a5c | 56 | |
shennongmin | 10:9d4ec0359a5c | 57 | #endif /* #ifndef __ARDUINOSERIAL_H__ */ |