Update current library to accommodate small devices.
Diff: I2CEEPROM.cpp
- Revision:
- 4:5b7d065a1c78
- Parent:
- 3:16227c782723
- Child:
- 5:02908f98dca1
diff -r 16227c782723 -r 5b7d065a1c78 I2CEEPROM.cpp --- a/I2CEEPROM.cpp Sat Oct 15 19:28:18 2016 +0000 +++ b/I2CEEPROM.cpp Sun Oct 16 11:54:09 2016 +0000 @@ -38,8 +38,9 @@ } } else { - char values[] = { (address >> 8), (address & 0xFF) }; - if (m_i2c.write(m_i2cAddress, values, 2) == 0) { + char i2caddr = (m_i2cAddress | address >> 7) & 0xFF; + char values[] = { (address & 0xFF) }; + if (m_i2c.write(i2caddr, values, 1) == 0) { if (m_i2c.read(m_i2cAddress, &value, 1) == 0) { return 1; } @@ -63,9 +64,10 @@ } } else { - char values[] = { (address >> 8), (address & 0xFF) }; - if (m_i2c.write(m_i2cAddress, values, 2) == 0) { - if (m_i2c.read(m_i2cAddress, buffer, size) == 0) { + char i2caddr = (m_i2cAddress | address >> 7) & 0xFF; + char values[] = { (address & 0xFF) }; + if (m_i2c.write(i2caddr, values, 1) == 0) { + if (m_i2c.read(i2caddr, buffer, size) == 0) { return size; } } @@ -86,8 +88,9 @@ } } else { - char values[] = { (address >> 8), (address & 0xFF), value }; - if (m_i2c.write(m_i2cAddress, values, 3) != 0) { + char i2caddr = (m_i2cAddress | address >> 7) & 0xFF; + char values[] = { (address & 0xFF), value }; + if (m_i2c.write(i2caddr, values, 2) != 0) { return 0; } } @@ -142,8 +145,9 @@ else { for (int count = 0; count != toWrite; ++count) { int addr = address + count; - char values[] = { (addr >> 8), (addr & 0xFF) }; - if (m_i2c.write(m_i2cAddress, values, 2) != 0) { + char i2caddr = (m_i2cAddress | addr >> 7) & 0xFF; + char values[] = { (addr & 0xFF), *page }; + if (m_i2c.write(i2caddr, values, 2) != 0) { // Write failed to return bytes written so far. return size - left; } @@ -199,8 +203,9 @@ else { for (int count = 0; count != toWrite; ++count) { int addr = address + count; - char values[] = { (addr >> 8), (addr & 0xFF) }; - if (m_i2c.write(m_i2cAddress, values, 2) != 0) { + char i2caddr = (m_i2cAddress | addr >> 7) & 0xFF; + char values[] = { (addr & 0xFF), value }; + if (m_i2c.write(i2caddr, values, 2) != 0) { // Write failed to return bytes written so far. return size - left; }