Skip to content

Commit 75b1aae

Browse files
committed
Use traditional Wire lib API's
1 parent c6103d0 commit 75b1aae

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/utility/ECC508.cpp

+9-4
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,8 @@ int ECC508Class::sendCommand(uint8_t opcode, uint8_t param1, uint16_t param2, co
491491
uint16_t crc = crc16(&command[1], 8 - 3 + dataLength);
492492
memcpy(&command[6 + dataLength], &crc, sizeof(crc));
493493

494-
// begin transmission with external buffer which is pre-populated with data
495-
_wire->beginTransmission(_address, command, commandLength, commandLength);
496-
494+
_wire->beginTransmission(_address);
495+
_wire->write(command, commandLength);
497496
if (_wire->endTransmission() != 0) {
498497
return 0;
499498
}
@@ -507,13 +506,19 @@ int ECC508Class::receiveResponse(void* response, size_t length)
507506
int responseSize = length + 3; // 1 for length header, 2 for CRC
508507
byte responseBuffer[responseSize];
509508

510-
while (_wire->requestFrom(_address, responseBuffer, responseSize) != responseSize && retries--);
509+
while (_wire->requestFrom(_address, responseSize) != responseSize && retries--);
510+
511+
responseBuffer[0] = _wire->read();
511512

512513
// make sure length matches
513514
if (responseBuffer[0] != responseSize) {
514515
return 0;
515516
}
516517

518+
for (size_t i = 1; _wire->available(); i++) {
519+
responseBuffer[i] = _wire->read();
520+
}
521+
517522
// verify CRC
518523
uint16_t responseCrc = responseBuffer[length + 1] | (responseBuffer[length + 2] << 8);
519524
if (responseCrc != crc16(responseBuffer, responseSize - 2)) {

0 commit comments

Comments
 (0)