Update current library to accommodate small devices.
Diff: I2CEEPROM.cpp
- Revision:
- 6:8dc89c3b4718
- Parent:
- 5:02908f98dca1
- Child:
- 7:3e1f751bcc81
diff -r 02908f98dca1 -r 8dc89c3b4718 I2CEEPROM.cpp --- a/I2CEEPROM.cpp Sun Oct 16 13:14:58 2016 +0000 +++ b/I2CEEPROM.cpp Sun Oct 16 14:33:09 2016 +0000 @@ -29,21 +29,12 @@ // Check the address and size fit onto the chip. if (!checkSpace(address, 1)) return 0; - if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF) }; - if (m_i2c.write(m_i2cAddress, values, 1) == 0) { - if (m_i2c.read(m_i2cAddress, &value, 1) == 0) { - return 1; - } - } - } - else { - 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; - } + + 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; } } @@ -55,21 +46,11 @@ if (!checkSpace(address, size)) return 0; - if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF) }; - if (m_i2c.write(m_i2cAddress, values, 1) == 0) { - if (m_i2c.read(m_i2cAddress, buffer, size) == 0) { - return size; - } - } - } - else { - 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; - } + 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; } } @@ -81,18 +62,10 @@ if (!checkSpace(address, 1)) return 0; - if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF), value }; - if (m_i2c.write(m_i2cAddress, values, 2) != 0) { - return 0; - } - } - else { - char i2caddr = (m_i2cAddress | address >> 7) & 0xFF; - char values[] = { (address & 0xFF), value }; - if (m_i2c.write(i2caddr, values, 2) != 0) { - return 0; - } + char i2caddr = (m_i2cAddress | address >> 7) & 0xFF; + char values[] = { (address & 0xFF), value }; + if (m_i2c.write(i2caddr, values, 2) != 0) { + return 0; } waitForWrite(); @@ -130,30 +103,16 @@ //pc.printf("Writing [%.*s] at %d size %d\n\r", toWrite, page, address, toWrite); // Start the page write with the address in one write call. - if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - for (int count = 0; count != toWrite; ++count) { - int addr = address + count; - char values[] = { (addr & 0xFF), *page }; - if (m_i2c.write(m_i2cAddress, values, 2) != 0) { - // Write failed to return bytes written so far. - return size - left; - } - ++page; - waitForWrite(); + for (int count = 0; count != toWrite; ++count) { + int addr = address + count; + 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; } - } - else { - for (int count = 0; count != toWrite; ++count) { - int addr = address + count; - 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; - } - ++page; - waitForWrite(); - } + ++page; + waitForWrite(); } // Update the counters with the amount we've just written @@ -189,28 +148,15 @@ //printf("Writing %d at %d size %d\n\r", value, address, toWrite); // Start the page write with the address in one write call. - if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - for (int count = 0; count != toWrite; ++count) { - int addr = address + count; - char values[] = { (addr & 0xFF), value }; - if (m_i2c.write(m_i2cAddress, values, 2) != 0) { - // Write failed to return bytes written so far. - return size - left; - } - waitForWrite(); + for (int count = 0; count != toWrite; ++count) { + int addr = address + count; + 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; } - } - else { - for (int count = 0; count != toWrite; ++count) { - int addr = address + count; - 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; - } - waitForWrite(); - } + waitForWrite(); } // Update the counters with the amount we've just written