Skip to content

Commit f7b7cc9

Browse files
authored
chore: Wait for serial to be ready (#143)
1 parent 40acff3 commit f7b7cc9

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

src/NoteSerial_Arduino.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include "mock/mock-arduino.hpp"
1111
#endif
1212

13+
#define NOTE_C_SERIAL_TIMEOUT_MS 3500
14+
1315
// Template Meta-Programming (TMP) to extract the nested template type
1416
template <typename nested_type>
1517
struct ExtractNestedTemplateType {
@@ -64,6 +66,9 @@ NoteSerial_Arduino<T>::NoteSerial_Arduino
6466
_notecardSerialSpeed(baud_rate_)
6567
{
6668
_notecardSerial.begin(_notecardSerialSpeed);
69+
70+
// Wait for the serial port to be ready
71+
for (const size_t startMs = ::millis() ; !_notecardSerial && ((::millis() - startMs) < NOTE_C_SERIAL_TIMEOUT_MS) ;);
6772
}
6873

6974
template <typename T>

test/mock/mock-arduino.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ HardwareSerialAvailable_Parameters hardwareSerialAvailable_Parameters;
1010
HardwareSerialBegin_Parameters hardwareSerialBegin_Parameters;
1111
HardwareSerialEnd_Parameters hardwareSerialEnd_Parameters;
1212
HardwareSerialFlush_Parameters hardwareSerialFlush_Parameters;
13+
HardwareSerialOperatorBool_Parameters hardwareSerialOperatorBool_Parameters;
1314
HardwareSerialRead_Parameters hardwareSerialRead_Parameters;
1415
HardwareSerialWrite_Parameters hardwareSerialWrite_Parameters;
1516

1617
SoftwareSerialAvailable_Parameters softwareSerialAvailable_Parameters;
1718
SoftwareSerialBegin_Parameters softwareSerialBegin_Parameters;
1819
SoftwareSerialEnd_Parameters softwareSerialEnd_Parameters;
1920
SoftwareSerialFlush_Parameters softwareSerialFlush_Parameters;
21+
SoftwareSerialOperatorBool_Parameters softwareSerialOperatorBool_Parameters;
2022
SoftwareSerialRead_Parameters softwareSerialRead_Parameters;
2123
SoftwareSerialWrite_Parameters softwareSerialWrite_Parameters;
2224

@@ -109,6 +111,16 @@ pinMode (
109111
pinMode_Parameters.pin_mode[pin].push_back(mode);
110112
}
111113

114+
HardwareSerial::operator bool (
115+
void
116+
) {
117+
// Record invocation(s)
118+
++hardwareSerialOperatorBool_Parameters.invoked;
119+
120+
// Return user-supplied result
121+
return hardwareSerialOperatorBool_Parameters.result;
122+
}
123+
112124
unsigned int
113125
HardwareSerial::available (
114126
void
@@ -175,6 +187,16 @@ HardwareSerial::write (
175187
return hardwareSerialWrite_Parameters.result;
176188
}
177189

190+
SoftwareSerial::operator bool (
191+
void
192+
) {
193+
// Record invocation(s)
194+
++softwareSerialOperatorBool_Parameters.invoked;
195+
196+
// Return user-supplied result
197+
return softwareSerialOperatorBool_Parameters.result;
198+
}
199+
178200
unsigned int
179201
SoftwareSerial::available (
180202
void

test/mock/mock-arduino.hpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ struct StreamPrint_Parameters {
156156
};
157157

158158
struct HardwareSerial : public Stream {
159+
operator bool();
159160
unsigned int available (void);
160161
void begin(unsigned int baud);
161162
void end(void);
@@ -230,6 +231,23 @@ struct HardwareSerialFlush_Parameters {
230231
size_t invoked;
231232
};
232233

234+
struct HardwareSerialOperatorBool_Parameters {
235+
HardwareSerialOperatorBool_Parameters(
236+
void
237+
) :
238+
invoked(0),
239+
result(true)
240+
{ }
241+
void
242+
reset (
243+
void
244+
) {
245+
invoked = 0;
246+
result = true;
247+
}
248+
size_t invoked;
249+
bool result;
250+
};
233251

234252
struct HardwareSerialRead_Parameters {
235253
HardwareSerialRead_Parameters(
@@ -276,6 +294,7 @@ struct HardwareSerialWrite_Parameters {
276294
};
277295

278296
struct SoftwareSerial : public Stream {
297+
operator bool();
279298
unsigned int available (void);
280299
void begin(unsigned int baud);
281300
void end(void);
@@ -350,6 +369,23 @@ struct SoftwareSerialFlush_Parameters {
350369
size_t invoked;
351370
};
352371

372+
struct SoftwareSerialOperatorBool_Parameters {
373+
SoftwareSerialOperatorBool_Parameters(
374+
void
375+
) :
376+
invoked(0),
377+
result(true)
378+
{ }
379+
void
380+
reset (
381+
void
382+
) {
383+
invoked = 0;
384+
result = true;
385+
}
386+
size_t invoked;
387+
bool result;
388+
};
353389

354390
struct SoftwareSerialRead_Parameters {
355391
SoftwareSerialRead_Parameters(
@@ -564,6 +600,7 @@ extern HardwareSerialAvailable_Parameters hardwareSerialAvailable_Parameters;
564600
extern HardwareSerialBegin_Parameters hardwareSerialBegin_Parameters;
565601
extern HardwareSerialEnd_Parameters hardwareSerialEnd_Parameters;
566602
extern HardwareSerialFlush_Parameters hardwareSerialFlush_Parameters;
603+
extern HardwareSerialOperatorBool_Parameters hardwareSerialOperatorBool_Parameters;
567604
extern HardwareSerialRead_Parameters hardwareSerialRead_Parameters;
568605
extern HardwareSerialWrite_Parameters hardwareSerialWrite_Parameters;
569606

@@ -572,6 +609,7 @@ extern SoftwareSerialAvailable_Parameters softwareSerialAvailable_Parameters;
572609
extern SoftwareSerialBegin_Parameters softwareSerialBegin_Parameters;
573610
extern SoftwareSerialEnd_Parameters softwareSerialEnd_Parameters;
574611
extern SoftwareSerialFlush_Parameters softwareSerialFlush_Parameters;
612+
extern SoftwareSerialOperatorBool_Parameters softwareSerialOperatorBool_Parameters;
575613
extern SoftwareSerialRead_Parameters softwareSerialRead_Parameters;
576614
extern SoftwareSerialWrite_Parameters softwareSerialWrite_Parameters;
577615

0 commit comments

Comments
 (0)