Arduino Core API Library besed on mbed platform.

Dependents:   WeeESP8266 ESP8266_moj

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ArduinoSerial.h Source File

ArduinoSerial.h

00001 #ifndef __ARDUINOAPI_ARDUINOSERIAL_H__
00002 #define __ARDUINOAPI_ARDUINOSERIAL_H__
00003 
00004 #include "Print.h"
00005 #include "WString.h"
00006 
00007 typedef enum {
00008     ARDUINOSERIAL_BUFFER_SIZE = 512,
00009 } ArduinoSerialConstant;
00010 
00011 typedef struct {
00012     unsigned char buffer[ARDUINOSERIAL_BUFFER_SIZE];
00013     volatile unsigned int head;
00014     volatile unsigned int tail;
00015 } ArduinoSerialRingBuffer;
00016 
00017 class ArduinoSerial;
00018 
00019 typedef struct ArduinoSerialLinkedNode{
00020     ArduinoSerial* data;
00021     struct ArduinoSerialLinkedNode *next;
00022 } ArduinoSerialLinkedNode;
00023 
00024 class ArduinoSerial: public Serial, public Print
00025 {
00026 public:
00027     ArduinoSerial(PinName tx, PinName rx);
00028     
00029     virtual ~ArduinoSerial(void);
00030     
00031     virtual size_t write(uint8_t data);
00032     
00033     void begin(int baud_rate);
00034     
00035     int available(void);
00036 
00037     void flush(void);
00038     
00039     char readChr(void);
00040     
00041     void setTimeout(unsigned long millisecond);
00042     
00043     bool find(const char *str);
00044     
00045 private:
00046     static void uartIrqCallback(void);
00047     static ArduinoSerialLinkedNode *initHeadNode(ArduinoSerialLinkedNode *head);
00048     static ArduinoSerialLinkedNode *addNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data);
00049     static ArduinoSerialLinkedNode *delNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data);
00050     static ArduinoSerialLinkedNode *findNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data);
00051     
00052     static ArduinoSerialLinkedNode ms_list_head;
00053     static unsigned int ms_instance_counter;
00054     
00055     void writeChr(unsigned char c);
00056  
00057     ArduinoSerialRingBuffer m_rx_buffer;
00058     unsigned long m_find_timeout;
00059 };
00060 
00061 #endif /* #ifndef __ARDUINOAPI_ARDUINOSERIAL_H__ */