Update current library to accommodate small devices.
Diff: I2CEEPROM.cpp
- Revision:
- 10:839cd28531dd
- Parent:
- 8:e92faf840345
diff -r 26b4bcc5d3b5 -r 839cd28531dd I2CEEPROM.cpp --- a/I2CEEPROM.cpp Thu Jun 22 13:11:09 2017 +0000 +++ b/I2CEEPROM.cpp Wed Feb 27 22:22:16 2019 +0000 @@ -30,7 +30,7 @@ if (!checkSpace(address, 1)) return 0; if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF) }; + char values[] = { (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 1) == 0) { if (m_i2c.read(m_i2cAddress, &value, 1) == 0) { return 1; @@ -38,7 +38,7 @@ } } else { - char values[] = { (address >> 8), (address & 0xFF) }; + char values[] = { (char)(address >> 8), (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 2) == 0) { if (m_i2c.read(m_i2cAddress, &value, 1) == 0) { return 1; @@ -55,7 +55,7 @@ return 0; if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF) }; + char values[] = { (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 1) == 0) { if (m_i2c.read(m_i2cAddress, buffer, size) == 0) { return size; @@ -63,7 +63,7 @@ } } else { - char values[] = { (address >> 8), (address & 0xFF) }; + char values[] = { (char)(address >> 8), (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 2) == 0) { if (m_i2c.read(m_i2cAddress, buffer, size) == 0) { return size; @@ -80,13 +80,13 @@ return 0; if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF), value }; + char values[] = { (char)(address & 0xFF), value }; if (m_i2c.write(m_i2cAddress, values, 2) != 0) { return 0; } } else { - char values[] = { (address >> 8), (address & 0xFF), value }; + char values[] = { (char)(address >> 8), (char)(address & 0xFF), value }; if (m_i2c.write(m_i2cAddress, values, 3) != 0) { return 0; } @@ -127,14 +127,14 @@ //printf("Writing [%.*s] at %d size %d\n\r", toWrite, page, address, toWrite); // Start the page write with the addres ine one write call. if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF) }; + char values[] = { (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 1, true) != 0) { // Write failed to return bytes written so far. return size - left; } } else { - char values[] = { (address >> 8), (address & 0xFF) }; + char values[] = { (char)(address >> 8), (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 2, true) != 0) { // Write failed to return bytes written so far. return size - left; @@ -142,8 +142,8 @@ } // Write the bytes out one at a time to avoid having to copy them to - // another buffer. - for (int count = 0; count != toWrite; ++count) { + // another buffer. + for (size_t count = 0; count != (size_t)toWrite; ++count) { if (m_i2c.write(*page) == 0) { // Write failed to return bytes written so far. return size - left; @@ -156,12 +156,12 @@ m_i2c.stop(); waitForWrite(); - + // Update the counters with the amount we've just written left -= toWrite; address += toWrite; } - + return size; } @@ -171,7 +171,7 @@ return 0; size_t left = size; - + while (left != 0) { size_t toWrite; if ((address % m_pageSize) != 0) { @@ -189,27 +189,27 @@ //printf("Writing %d at %d size %d\n\r", value, address, toWrite); if(m_chipSize == 256 || m_chipSize == 128 || m_chipSize == 16) { - char values[] = { (address & 0xFF) }; + char values[] = { (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 1, true) != 0) { return size - left; } } else { - char values[] = { (address >> 8), (address & 0xFF) }; + char values[] = { (char)(address >> 8), (char)(address & 0xFF) }; if (m_i2c.write(m_i2cAddress, values, 2, true) != 0) { return size - left; } } - - for (int count = 0; count != toWrite; ++count) { + + for (size_t count = 0; count != (size_t)toWrite; ++count) { if (m_i2c.write(value) == 0) return size - left; } m_i2c.stop(); - + waitForWrite(); - + left -= toWrite; address += toWrite; }