ftdi_ft4222.c: Implemented previously stubbed out i2c functions.
authorHenry Bruce <henry.bruce@intel.com>
Thu, 8 Oct 2015 20:18:06 +0000 (13:18 -0700)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Mon, 26 Oct 2015 15:46:54 +0000 (15:46 +0000)
Signed-off-by: Henry Bruce <henry.bruce@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
src/usb/ftdi_ft4222.c

index 4d92407..e3f3ce2 100644 (file)
@@ -293,20 +293,33 @@ mraa_ftdi_ft4222_i2c_read(mraa_i2c_context dev, uint8_t* data, int length)
 static uint8_t
 mraa_ftdi_ft4222_i2c_read_byte(mraa_i2c_context dev)
 {
-    return 0;
+    uint8_t data;
+    if (mraa_ftdi_ft4222_i2c_read_internal(dev->handle, dev->addr, &data, 1) == 1)
+        return data;
+    else
+        return 0;
 }
 
 
 static uint16_t
 mraa_ftdi_ft4222_i2c_read_word_data(mraa_i2c_context dev, uint8_t command)
 {
-    return 0;
+    uint8_t buf[2];
+    uint16_t data;
+    if (mraa_ftdi_ft4222_i2c_write_internal(dev->handle, dev->addr, &command, 1) != 1)
+        return 0;
+    if (mraa_ftdi_ft4222_i2c_read_internal(dev->handle, dev->addr, buf, 2) != 2)
+        return 0;
+    data = *(uint16_t*)buf;
+    return data;
 }
 
 static int
 mraa_ftdi_ft4222_i2c_read_bytes_data(mraa_i2c_context dev, uint8_t command, uint8_t* data, int length)
 {
-    return -1;
+    if (mraa_ftdi_ft4222_i2c_write_internal(dev->handle, dev->addr, &command, 1) != 1)
+        return 0;
+    return mraa_ftdi_ft4222_i2c_read_internal(dev->handle, dev->addr, data, length);
 }