2
2
#define BlinkerSerial_H
3
3
4
4
#include < SoftwareSerial.h>
5
+ #include " HardwareSerial.h"
5
6
#include < Blinker/BlinkerProtocol.h>
6
7
7
- SoftwareSerial *SerialBLE;
8
+ SoftwareSerial *SSerialBLE;
9
+ // HardwareSerial *HSerialBLE;
8
10
9
11
class BlinkerTransportStream
10
12
{
@@ -15,9 +17,11 @@ class BlinkerTransportStream
15
17
16
18
bool available ()
17
19
{
18
- if (!SerialBLE->isListening ()) {
19
- SerialBLE->listen ();
20
- ::delay (100 );
20
+ if (!isHWS) {
21
+ if (!SSerialBLE->isListening ()) {
22
+ SSerialBLE->listen ();
23
+ ::delay (100 );
24
+ }
21
25
}
22
26
23
27
if (stream->available ()) {
@@ -32,10 +36,11 @@ class BlinkerTransportStream
32
36
}
33
37
}
34
38
35
- void begin (Stream& s)
39
+ void begin (Stream& s, bool state )
36
40
{
37
41
stream = &s;
38
42
stream->setTimeout (BLINKER_STREAM_TIMEOUT);
43
+ isHWS = state;
39
44
}
40
45
41
46
String lastRead () { return STRING_format (streamData); }
@@ -72,6 +77,7 @@ class BlinkerTransportStream
72
77
Stream* stream;
73
78
char streamData[BLINKER_MAX_READ_SIZE];
74
79
bool isConnect;
80
+ bool isHWS = false ;
75
81
};
76
82
77
83
class BlinkerSerail
@@ -88,11 +94,58 @@ class BlinkerSerail
88
94
uint8_t ss_tx_pin = 3 ,
89
95
uint32_t ss_baud = 9600 )
90
96
{
91
- Base::begin ();
92
- SerialBLE = new SoftwareSerial (ss_rx_pin, ss_tx_pin);
93
- SerialBLE->begin (ss_baud);
94
- this ->conn .begin (*SerialBLE);
95
- BLINKER_LOG1 (" SerialBLE Initialled..." );
97
+ #if defined (__AVR__)
98
+ if (ss_rx_pin == 0 && ss_tx_pin == 1 ){
99
+ Base::begin ();
100
+ #if defined (__AVR_ATmega32U4__)
101
+ Serial1.begin (ss_baud);
102
+ this ->conn .begin (Serial1, true );
103
+ #else
104
+ Serial.begin (ss_baud);
105
+ this ->conn .begin (Serial, true );
106
+ #endif
107
+ BLINKER_LOG1 (" SerialBLE Initialled..." );
108
+ return ;
109
+ }
110
+ #if defined (__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__SAM3X8E__)
111
+ else if (ss_rx_pin == 19 && ss_tx_pin == 18 ){
112
+ Base::begin ();
113
+ Serial1.begin (ss_baud);
114
+ this ->conn .begin (Serial1, true );
115
+ BLINKER_LOG1 (" SerialBLE Initialled..." );
116
+ return ;
117
+ }
118
+ else if (ss_rx_pin == 17 && ss_tx_pin == 16 ){
119
+ Base::begin ();
120
+ Serial2.begin (ss_baud);
121
+ this ->conn .begin (Serial2, true );
122
+ BLINKER_LOG1 (" SerialBLE Initialled..." );
123
+ return ;
124
+ }
125
+ else if (ss_rx_pin == 15 && ss_tx_pin == 14 ){
126
+ Base::begin ();
127
+ Serial3.begin (ss_baud);
128
+ this ->conn .begin (Serial3, true );
129
+ BLINKER_LOG1 (" SerialBLE Initialled..." );
130
+ return ;
131
+ }
132
+ #endif
133
+ else {
134
+ Base::begin ();
135
+ SSerialBLE = new SoftwareSerial (ss_rx_pin, ss_tx_pin);
136
+ SSerialBLE->begin (ss_baud);
137
+ this ->conn .begin (*SSerialBLE, false );
138
+ BLINKER_LOG1 (" SerialBLE Initialled..." );
139
+ }
140
+ #else
141
+ else {
142
+ Base::begin ();
143
+ SSerialBLE = new SoftwareSerial (ss_rx_pin, ss_tx_pin);
144
+ SSerialBLE->begin (ss_baud);
145
+ this ->conn .begin (*SSerialBLE, false );
146
+ BLINKER_LOG1 (" SerialBLE Initialled..." );
147
+ }
148
+ #endif
96
149
}
97
150
};
98
151
0 commit comments