BayEOS-Arduino  1.8.0_0.0.4
BaySerial.h
1 
18 #ifndef BaySerial_h
19 #define BaySerial_h
20 
21 #define START_BYTE 0x7e
22 #define ESCAPE 0x7d
23 #define XON 0x11
24 #define XOFF 0x13
25 
26 #define API_DATA 0x1
27 #define API_ACK 0x2
28 
29 #define TX_OK 0x1
30 #define TX_CHECKSUM_FAILED 0x2
31 #define TX_BREAK 0x3
32 
33 #include <inttypes.h>
34 #include <BayEOS.h>
35 #include <HardwareSerial.h>
36 #include <Arduino.h>
37 
38 class BaySerialInterface : public BayEOS {
39 public:
47  uint8_t sendPayload(void);
48 
53  void sendFrame(void);
54 
61  uint8_t readIntoPayload(int timeout=5000);
62 
63  void sendTXBreak(void){
64  sendAck(TX_BREAK);
65  }
66 
67  virtual int i_available(void)=0;
68  virtual void begin(long baud)=0;
69  virtual int read(void)=0;
70  virtual size_t write(uint8_t c)=0;
71  virtual void flush(void)=0;
72  virtual void end(void)=0;
73 
74 protected:
75  uint8_t readPacket(uint8_t type=API_DATA);
76  void sendByte(uint8_t b, bool escape);
77  uint8_t readByte(int timeout, bool escape);
78  void sendAck(uint8_t b);
79 
80  bool _escape;
81  bool _read_timeout;
82  int _timeout;
83  uint8_t _length;
84  uint8_t _checksumTotal;
85  uint8_t _api;
86  uint8_t _ack;
87  uint8_t _pos;
88  uint8_t _break;
89 
90 
91 };
92 
93 class BaySerial : public BaySerialInterface {
94 protected:
95  HardwareSerial* _serial; //Pointer to existing serial object!!
96 public:
100  BaySerial(HardwareSerial& serial,int timeout=1000);
101  //BaySerial(void);
102 
103  int available(void);
104  int i_available(void);
105  void begin(long baud);
106  void flush(void);
107  void end(void);
108  int read(void);
109  size_t write(uint8_t c);
110 
111 };
112 
113 
114 #endif
uint8_t readIntoPayload(int timeout=5000)
Definition: BaySerial.cpp:74
uint8_t sendPayload(void)
Definition: BaySerial.cpp:65
Definition: BayEOS.h:160
void sendFrame(void)
Definition: BaySerial.cpp:52
virtual int available(void)
Definition: BayEOS.h:184