Update current library to accommodate small devices.

Revision:
4:5b7d065a1c78
Parent:
3:16227c782723
Child:
5:02908f98dca1
--- 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;
                 }