Skip to content

Commit b120270

Browse files
authored
Add TwoWire::begin to Notecard::begin (#33)
* chore: add TwoWire::begin to Notecard::begin * chore: unit-test new behavior
1 parent 0dd6111 commit b120270

File tree

4 files changed

+82
-7
lines changed

4 files changed

+82
-7
lines changed

src/Notecard.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ int _readLengthAdjustment = 0;
8080
void Notecard::begin(uint32_t i2caddress, uint32_t i2cmax, TwoWire &wirePort) {
8181
NoteSetFnDefault(malloc, free, delay, millis);
8282
_i2cPort = &wirePort;
83+
_i2cPort->begin();
8384

8485
NoteSetFnI2C(i2caddress, i2cmax, Notecard::noteI2CReset,
8586
Notecard::noteI2CTransmit, Notecard::noteI2CReceive);
@@ -328,13 +329,14 @@ char Notecard::noteSerialReceive() {
328329

329330
/**************************************************************************/
330331
/*!
331-
@brief Resets the I2C port. Required by note-c, but not implemented as
332-
the developer should call `Wire.begin()` themselves before
333-
initializing the library.
332+
@brief Resets the I2C port. Required by note-c.
334333
@return `True`.
335334
*/
336335
/**************************************************************************/
337336
bool Notecard::noteI2CReset(uint16_t DevAddress) {
337+
#if WIRE_HAS_END
338+
_i2cPort->end();
339+
#endif
338340
_i2cPort->begin();
339341
return true;
340342
}

test/mock/mock-arduino.cpp

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#include "mock-arduino.hpp"
22

33
HardwareSerialBegin_Parameters hardwareSerialBegin_Parameters;
4+
TwoWireBegin_Parameters twoWireBegin_Parameters;
45

56
void
67
delay (
78
unsigned int millis
89
) {
9-
// Validate parameter(s)
1010

1111
}
1212

@@ -65,7 +65,8 @@ void
6565
TwoWire::begin (
6666
void
6767
) {
68-
68+
// Capture call
69+
twoWireBegin_Parameters.called = true;
6970
}
7071

7172
void
@@ -75,6 +76,13 @@ TwoWire::beginTransmission (
7576

7677
}
7778

79+
void
80+
TwoWire::end (
81+
void
82+
) {
83+
84+
}
85+
7886
int
7987
TwoWire::endTransmission (
8088
void

test/mock/mock-arduino.hpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#include <cstddef>
55

6+
#define WIRE_HAS_END 1
7+
68
void delay (unsigned int);
79
size_t millis (void);
810

@@ -30,16 +32,27 @@ struct Stream {
3032
struct TwoWire {
3133
void begin(void);
3234
void beginTransmission(int);
35+
void end(void);
3336
int endTransmission(void);
3437
unsigned char read(void);
3538
int requestFrom(int dev_addr, unsigned int read_len);
3639
void write(unsigned char c);
3740
long unsigned int write(unsigned char * msg, long unsigned int len);
3841
};
3942

43+
struct TwoWireBegin_Parameters {
44+
TwoWireBegin_Parameters(
45+
void
46+
) :
47+
called(false)
48+
{ }
49+
bool called;
50+
};
51+
4052
extern HardwareSerial Serial;
4153
extern HardwareSerialBegin_Parameters hardwareSerialBegin_Parameters;
42-
extern TwoWire Wire;
4354
extern Stream dbgserial;
55+
extern TwoWire Wire;
56+
extern TwoWireBegin_Parameters twoWireBegin_Parameters;
4457

4558
#endif

test/notecard-test.cpp

+53-1
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,55 @@ int test_notecard_responseError_does_not_modify_note_c_result_value_before_retur
940940
return result;
941941
}
942942

943+
int test_notecard_begin_i2c_default_parameter_for_wirePort_has_begin_method_called()
944+
{
945+
int result;
946+
Notecard notecard;
947+
948+
// Setup
949+
twoWireBegin_Parameters.called = false;
950+
951+
// Action
952+
notecard.begin();
953+
954+
// Evaluate Result
955+
if (true == twoWireBegin_Parameters.called)
956+
{
957+
result = 0;
958+
}
959+
else
960+
{
961+
result = 37;
962+
}
963+
964+
return result;
965+
}
966+
967+
int test_notecard_begin_i2c_parameter_for_wirePort_has_begin_method_called()
968+
{
969+
int result;
970+
Notecard notecard;
971+
TwoWire mockWire;
972+
973+
// Setup
974+
twoWireBegin_Parameters.called = false;
975+
976+
// Action
977+
notecard.begin(NOTE_I2C_ADDR_DEFAULT, NOTE_I2C_MAX_DEFAULT, mockWire);
978+
979+
// Evaluate Result
980+
if (true == twoWireBegin_Parameters.called)
981+
{
982+
result = 0;
983+
}
984+
else
985+
{
986+
result = 38;
987+
}
988+
989+
return result;
990+
}
991+
943992
struct TestFunction;
944993
typedef int (*test_fn)(void);
945994
int runTests(TestFunction *tests_, size_t cnt_);
@@ -1002,7 +1051,10 @@ int main(void)
10021051
{test_notecard_debugSyncStatus_does_not_modify_maxLevel_parameter_before_passing_to_note_c, "test_notecard_debugSyncStatus_does_not_modify_maxLevel_parameter_before_passing_to_note_c"},
10031052
{test_notecard_debugSyncStatus_does_not_modify_note_c_result_value_before_returning_to_caller, "test_notecard_debugSyncStatus_does_not_modify_note_c_result_value_before_returning_to_caller"},
10041053
{test_notecard_responseError_does_not_modify_j_object_parameter_value_before_passing_to_note_c, "test_notecard_responseError_does_not_modify_j_object_parameter_value_before_passing_to_note_c"},
1005-
{test_notecard_responseError_does_not_modify_note_c_result_value_before_returning_to_caller, "test_notecard_responseError_does_not_modify_note_c_result_value_before_returning_to_caller"}};
1054+
{test_notecard_responseError_does_not_modify_note_c_result_value_before_returning_to_caller, "test_notecard_responseError_does_not_modify_note_c_result_value_before_returning_to_caller"},
1055+
{test_notecard_begin_i2c_default_parameter_for_wirePort_has_begin_method_called, "test_notecard_begin_i2c_default_parameter_for_wirePort_has_begin_method_called"},
1056+
{test_notecard_begin_i2c_parameter_for_wirePort_has_begin_method_called, "test_notecard_begin_i2c_parameter_for_wirePort_has_begin_method_called"}
1057+
};
10061058

10071059
return runTests(tests, (sizeof(tests) / sizeof(TestFunction)));
10081060
}

0 commit comments

Comments
 (0)