Skip to content

Commit

Permalink
🔨 Prevent SlowSoftWire + Wire name conflict (MarlinFirmware#25707)
Browse files Browse the repository at this point in the history
  • Loading branch information
ansonl authored Apr 25, 2023
1 parent c034819 commit 650e6fc
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 11 deletions.
21 changes: 11 additions & 10 deletions Marlin/src/HAL/shared/eeprom_if_i2c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,14 @@

#if ENABLED(SOFT_I2C_EEPROM)
#include <SlowSoftWire.h>
SlowSoftWire Wire = SlowSoftWire(I2C_SDA_PIN, I2C_SCL_PIN, true);
SlowSoftWire eWire = SlowSoftWire(I2C_SDA_PIN, I2C_SCL_PIN, true);
#else
#include <Wire.h>
#define eWire Wire
#endif

void eeprom_init() {
Wire.begin(
eWire.begin(
#if PINS_EXIST(I2C_SCL, I2C_SDA) && DISABLED(SOFT_I2C_EEPROM)
uint8_t(I2C_SDA_PIN), uint8_t(I2C_SCL_PIN)
#endif
Expand Down Expand Up @@ -75,16 +76,16 @@ static uint8_t _eeprom_calc_device_address(uint8_t * const pos) {

static void _eeprom_begin(uint8_t * const pos) {
const unsigned eeprom_address = (unsigned)pos;
Wire.beginTransmission(_eeprom_calc_device_address(pos));
eWire.beginTransmission(_eeprom_calc_device_address(pos));
if (!SMALL_EEPROM)
Wire.write(uint8_t((eeprom_address >> 8) & 0xFF)); // Address High, if needed
Wire.write(uint8_t(eeprom_address & 0xFF)); // Address Low
eWire.write(uint8_t((eeprom_address >> 8) & 0xFF)); // Address High, if needed
eWire.write(uint8_t(eeprom_address & 0xFF)); // Address Low
}

void eeprom_write_byte(uint8_t *pos, uint8_t value) {
_eeprom_begin(pos);
Wire.write(value);
Wire.endTransmission();
eWire.write(value);
eWire.endTransmission();

// wait for write cycle to complete
// this could be done more efficiently with "acknowledge polling"
Expand All @@ -93,9 +94,9 @@ void eeprom_write_byte(uint8_t *pos, uint8_t value) {

uint8_t eeprom_read_byte(uint8_t *pos) {
_eeprom_begin(pos);
Wire.endTransmission();
Wire.requestFrom(_eeprom_calc_device_address(pos), (byte)1);
return Wire.available() ? Wire.read() : 0xFF;
eWire.endTransmission();
eWire.requestFrom(_eeprom_calc_device_address(pos), (byte)1);
return eWire.available() ? eWire.read() : 0xFF;
}

#endif // USE_SHARED_EEPROM
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/lcd/marlinui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
#endif

#if HAS_U8GLIB_I2C_OLED && PINS_EXIST(I2C_SCL, I2C_SDA) && DISABLED(SOFT_I2C_EEPROM)
#include "Wire.h"
#include <Wire.h>
#endif

// Encoder Handling
Expand Down

0 comments on commit 650e6fc

Please sign in to comment.