From 8c7071f1681472fba8c7833431b807879275dc1f Mon Sep 17 00:00:00 2001 From: David <6957239+delta-G@users.noreply.github.com> Date: Sun, 26 Nov 2023 21:41:59 -0600 Subject: [PATCH 1/4] fixing millis rollover bug x2 --- libraries/Wire/Wire.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 1b98ebc96..fba129c30 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -477,8 +477,8 @@ uint8_t TwoWire::read_from(uint8_t address, uint8_t* data, uint8_t length, unsig err = m_read(&m_i2c_ctrl,data,length,!sendStop); } } - timeout_ms = millis() + timeout_ms; - while(millis() < timeout_ms && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { + uint32_t startMillis = millis(); + while(((millis() - startMillis) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { } } @@ -505,8 +505,8 @@ uint8_t TwoWire::write_to(uint8_t address, uint8_t* data, uint8_t length, unsign err = m_write(&m_i2c_ctrl,data,length,!sendStop); } } - timeout_ms = millis() + timeout_ms; - while(millis() < timeout_ms && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { + uint32_t startMillis = millis(); + while(((millis() - startMillis) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { } From d118e9cefa87b5470441ca993a8ac61ecaf560ff Mon Sep 17 00:00:00 2001 From: David <6957239+delta-G@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:24:23 -0600 Subject: [PATCH 2/4] Update libraries/Wire/Wire.cpp const correct Co-authored-by: Alexander Entinger --- libraries/Wire/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index fba129c30..bd809c796 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -477,7 +477,7 @@ uint8_t TwoWire::read_from(uint8_t address, uint8_t* data, uint8_t length, unsig err = m_read(&m_i2c_ctrl,data,length,!sendStop); } } - uint32_t startMillis = millis(); + uint32_t const start = millis(); while(((millis() - startMillis) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { } From 8944a6489b0081057ba1e91396d5933c59cb6272 Mon Sep 17 00:00:00 2001 From: David <6957239+delta-G@users.noreply.github.com> Date: Tue, 28 Nov 2023 15:36:41 -0600 Subject: [PATCH 3/4] Fixes https://github.com/arduino/ArduinoCore-renesas/issues/195 Fixes https://github.com/arduino/ArduinoCore-renesas/issues/195 Includes review from @aentinger --- libraries/Wire/Wire.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index bd809c796..d5e184420 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -478,7 +478,7 @@ uint8_t TwoWire::read_from(uint8_t address, uint8_t* data, uint8_t length, unsig } } uint32_t const start = millis(); - while(((millis() - startMillis) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { + while(((millis() - start) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { } } @@ -505,8 +505,8 @@ uint8_t TwoWire::write_to(uint8_t address, uint8_t* data, uint8_t length, unsign err = m_write(&m_i2c_ctrl,data,length,!sendStop); } } - uint32_t startMillis = millis(); - while(((millis() - startMillis) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { + uint32_t start = millis(); + while(((millis() - start) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { } From d7e4606a7b4cd94b7ebca52f36f29f8b270f4e67 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 29 Nov 2023 06:08:27 +0100 Subject: [PATCH 4/4] Fix: use const-correctness everywhere. --- libraries/Wire/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index d5e184420..00233ab4d 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -505,7 +505,7 @@ uint8_t TwoWire::write_to(uint8_t address, uint8_t* data, uint8_t length, unsign err = m_write(&m_i2c_ctrl,data,length,!sendStop); } } - uint32_t start = millis(); + uint32_t const start = millis(); while(((millis() - start) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { }