For test

Dependencies:   mbed

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?

UserRevisionLine numberNew 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__ */