Skip to content

Commit bc8f28d

Browse files
BootloaderTest: Read and check length from replies
1 parent 195777f commit bc8f28d

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

BootloaderTest/BootloaderTest.ino

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ bool write_command(uint8_t cmd, uint8_t *dataout, uint8_t len, uint8_t crc_xor =
8080

8181
bool read_status(uint8_t *status, uint8_t *datain, uint8_t okLen, uint8_t failLen, bool skip_start = false) {
8282
auto on_failure = []() { return false; };
83-
assertLessOrEqual(okLen + 2, MAX_MSG_LEN);
84-
assertLessOrEqual(failLen + 2, MAX_MSG_LEN);
83+
assertLessOrEqual(okLen + 3, MAX_MSG_LEN);
84+
assertLessOrEqual(failLen + 3, MAX_MSG_LEN);
8585
if (!skip_start) {
8686
assertAck(bus.startRead(cfg.curAddr));
8787
}
@@ -96,6 +96,10 @@ bool read_status(uint8_t *status, uint8_t *datain, uint8_t okLen, uint8_t failLe
9696
else // All other errors have no data
9797
expectedLen = 0;
9898

99+
uint8_t len;
100+
assertAck(bus.readThenAck(len));
101+
assertEqual(len, expectedLen);
102+
99103
for (uint8_t i = 0; i < expectedLen; ++i)
100104
assertAck(bus.readThenAck(datain[i]));
101105

@@ -105,7 +109,7 @@ bool read_status(uint8_t *status, uint8_t *datain, uint8_t okLen, uint8_t failLe
105109
else
106110
assertAck(bus.readThenNack(crc));
107111

108-
uint8_t expectedCrc = Crc().update(*status).update(datain, expectedLen).get();
112+
uint8_t expectedCrc = Crc().update(*status).update(len).update(datain, expectedLen).get();
109113
assertEqual(crc, expectedCrc);
110114
if (!cfg.repStartAfterRead)
111115
bus.stop();

0 commit comments

Comments
 (0)