pengfei wu
/
ESP8266Program
For test
Embed:
(wiki syntax)
Show/hide line numbers
ArduinoSerial.h
00001 #ifndef __ARDUINOSERIAL_H__ 00002 #define __ARDUINOSERIAL_H__ 00003 00004 #include "Print.h" 00005 #include "WString.h" 00006 00007 typedef enum { 00008 ARDUINOSERIAL_BUFFER_SIZE = 4096, 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 void begin(int baud_rate); 00032 00033 int available(void); 00034 00035 void flush(void); 00036 00037 char readChr(void); 00038 00039 void setTimeout(unsigned long millisecond); 00040 00041 bool find(const char *str); 00042 00043 private: 00044 static void uartIrqCallback(void); 00045 static ArduinoSerialLinkedNode *initHeadNode(ArduinoSerialLinkedNode *head); 00046 static ArduinoSerialLinkedNode *addNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); 00047 static ArduinoSerialLinkedNode *delNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); 00048 static ArduinoSerialLinkedNode *findNode(ArduinoSerialLinkedNode *head, ArduinoSerial* data); 00049 00050 static ArduinoSerialLinkedNode ms_list_head; 00051 static unsigned int ms_instance_counter; 00052 00053 virtual size_t write(uint8_t data); 00054 void writeChr(unsigned char c); 00055 00056 ArduinoSerialRingBuffer m_rx_buffer; 00057 unsigned long m_find_timeout; 00058 }; 00059 00060 #endif /* #ifndef __ARDUINOSERIAL_H__ */
Generated on Tue Jul 12 2022 18:59:49 by 1.7.2