Arduino Core API Library besed on mbed platform.
Dependents: WeeESP8266 ESP8266_moj
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__ */
Generated on Mon Jul 25 2022 12:21:32 by 1.7.2