For test

Dependencies:   mbed

Committer:
shennongmin
Date:
Thu Feb 05 06:48:45 2015 +0000
Revision:
35:90be2bc2a492
Parent:
20:43451f36281e
compile okay and test okay

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 "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__ */