Vishay VEML6040 Color RGB sensor I2C driver library

Dependents:   test_VEML6040 testSensor

Revision:
4:f5b142e3fe79
Parent:
2:239c3561d21a
Child:
5:a4dcc19d057e
--- a/VEML6040.cpp	Fri May 19 04:24:33 2017 +0000
+++ b/VEML6040.cpp	Mon Jun 05 02:02:20 2017 +0000
@@ -96,32 +96,40 @@
 }
 
 
-void VEML6040::getRData(uint16_t *rdata)
+int VEML6040::getRData(uint16_t *rdata)
 {
     uint8_t data[2] ;
-    readRegs(REG_R_Data, data, 2) ;
+    int result ;
+    result = readRegs(REG_R_Data, data, 2) ;
     *rdata = (data[1]<<8) | data[0] ;
+    return( result ) ;
 }
 
-void VEML6040::getGData(uint16_t *gdata)
+int VEML6040::getGData(uint16_t *gdata)
 {
     uint8_t data[2] ;
-    readRegs(REG_G_Data, data, 2) ;
+    int result ;
+    result = readRegs(REG_G_Data, data, 2) ;
     *gdata = (data[1]<<8) | data[0] ;
+    return( result ) ;
 }
 
-void VEML6040::getBData(uint16_t *bdata)
+int VEML6040::getBData(uint16_t *bdata)
 {
     uint8_t data[2] ;
-    readRegs(REG_B_Data, data, 2) ;
+    int result ;
+    result = readRegs(REG_B_Data, data, 2) ;
     *bdata = (data[1]<<8) | data[0] ;
+    return( result ) ;
 }
 
-void VEML6040::getWData(uint16_t *wdata)
+int VEML6040::getWData(uint16_t *wdata)
 {
     uint8_t data[2] ;
-    readRegs(REG_W_Data, data, 2) ;
+    int result ;
+    result = readRegs(REG_W_Data, data, 2) ;
     *wdata = (data[1]<<8) | data[0] ;
+    return( result ) ;
 }
 
 // usage
@@ -252,12 +260,18 @@
     return( value ) ;
 }
 
-void VEML6040::readRegs(int addr, uint8_t * data, int len) {
+int VEML6040::readRegs(int addr, uint8_t * data, int len) {
     char t[1] = {addr};
-    m_i2c.write(m_addr, t, 1, true);
-    m_i2c.read(m_addr, (char *)data, len);
+    int result ;
+    result = m_i2c.write(m_addr, t, 1, true);
+    if (result == 0) { // wirte success
+        result = m_i2c.read(m_addr, (char *)data, len);
+    }
+    return(result) ;
 }
 
-void VEML6040::writeRegs(uint8_t * data, int len) {
-    m_i2c.write(m_addr, (char *)data, len);
+int VEML6040::writeRegs(uint8_t * data, int len) {
+    int result ;
+    result = m_i2c.write(m_addr, (char *)data, len);
+    return(result) ;
 }
\ No newline at end of file