Vishay VEML6040 Color RGB sensor I2C driver library
Dependents: test_VEML6040 testSensor
VEML6040.cpp@5:a4dcc19d057e, 2017-11-06 (annotated)
- Committer:
- Rhyme
- Date:
- Mon Nov 06 01:18:56 2017 +0000
- Revision:
- 5:a4dcc19d057e
- Parent:
- 4:f5b142e3fe79
get and set Integration Time (IT) were added
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shockey | 0:e6e6107c659e | 1 | /* |
shockey | 0:e6e6107c659e | 2 | * File description here |
shockey | 0:e6e6107c659e | 3 | */ |
shockey | 0:e6e6107c659e | 4 | #include "VEML6040.h" |
shockey | 0:e6e6107c659e | 5 | |
shockey | 0:e6e6107c659e | 6 | /* VEML6075 SLAVE ADDRESS AND FUNCTION DESCRIPTION */ |
shockey | 0:e6e6107c659e | 7 | #define REG_COLOR_CONF 0x00 |
shockey | 0:e6e6107c659e | 8 | #define REG_Reserved1 0x01 |
shockey | 0:e6e6107c659e | 9 | #define REG_Reserved2 0x02 |
shockey | 0:e6e6107c659e | 10 | #define REG_Reserved3 0x03 |
shockey | 0:e6e6107c659e | 11 | #define REG_Reserved4 0x04 |
shockey | 0:e6e6107c659e | 12 | #define REG_Reserved5 0x05 |
shockey | 0:e6e6107c659e | 13 | #define REG_Reserved6 0x06 |
shockey | 0:e6e6107c659e | 14 | #define REG_Reserved7 0x07 |
shockey | 0:e6e6107c659e | 15 | #define REG_R_Data 0x08 |
shockey | 0:e6e6107c659e | 16 | #define REG_G_Data 0x09 |
shockey | 0:e6e6107c659e | 17 | #define REG_B_Data 0x0A |
shockey | 0:e6e6107c659e | 18 | #define REG_W_Data 0x0B |
shockey | 0:e6e6107c659e | 19 | |
shockey | 0:e6e6107c659e | 20 | // Following magic numbers are from |
shockey | 1:5540b216acfc | 21 | // VISHAY veml6040 Application Note 84331 |
shockey | 1:5540b216acfc | 22 | // Page 4 |
shockey | 0:e6e6107c659e | 23 | #define LUX_RESOLUTION_0 (0.25168) |
shockey | 0:e6e6107c659e | 24 | #define LUX_RESOLUTION_1 (0.12584) |
shockey | 0:e6e6107c659e | 25 | #define LUX_RESOLUTION_2 (0.06292) |
shockey | 0:e6e6107c659e | 26 | #define LUX_RESOLUTION_3 (0.03146) |
shockey | 0:e6e6107c659e | 27 | #define LUX_RESOLUTION_4 (0.01573) |
shockey | 0:e6e6107c659e | 28 | #define LUX_RESOLUTION_5 (0.007865) |
shockey | 0:e6e6107c659e | 29 | |
shockey | 1:5540b216acfc | 30 | // Following magic numbers are from |
shockey | 1:5540b216acfc | 31 | // VISHAY veml6040 Application Note 84331 |
shockey | 1:5540b216acfc | 32 | // Page 9 |
shockey | 1:5540b216acfc | 33 | #define CORR_COEFF_M0 (0.048403) |
shockey | 1:5540b216acfc | 34 | #define CORR_COEFF_M1 (0.183633) |
shockey | 1:5540b216acfc | 35 | #define CORR_COEFF_M2 (-0.253589) |
shockey | 1:5540b216acfc | 36 | #define CORR_COEFF_M3 (0.022916) |
shockey | 1:5540b216acfc | 37 | #define CORR_COEFF_M4 (0.176388) |
shockey | 1:5540b216acfc | 38 | #define CORR_COEFF_M5 (-0.183205) |
shockey | 1:5540b216acfc | 39 | #define CORR_COEFF_M6 (-0.077436) |
shockey | 1:5540b216acfc | 40 | #define CORR_COEFF_M7 (0.124541) |
shockey | 1:5540b216acfc | 41 | #define CORR_COEFF_M8 (0.032081) |
shockey | 1:5540b216acfc | 42 | |
shockey | 1:5540b216acfc | 43 | // Following magic numbers are from |
shockey | 1:5540b216acfc | 44 | // VISHAY veml6040 Application Note 84331 |
shockey | 1:5540b216acfc | 45 | // Page 10 |
shockey | 1:5540b216acfc | 46 | #define CCT_CONST (4278.6) |
shockey | 1:5540b216acfc | 47 | #define OFFSET_OPEN_AIR (0.5) |
shockey | 1:5540b216acfc | 48 | |
Rhyme | 5:a4dcc19d057e | 49 | /* integration time depending on the IT |
Rhyme | 5:a4dcc19d057e | 50 | * field in the REG_COLOR_CONF[6:4] |
Rhyme | 5:a4dcc19d057e | 51 | * According to Vishay error could be up to 20% |
Rhyme | 5:a4dcc19d057e | 52 | */ |
Rhyme | 5:a4dcc19d057e | 53 | int IT_TIME[] = { |
Rhyme | 5:a4dcc19d057e | 54 | 50, /* 000: 40ms */ |
Rhyme | 5:a4dcc19d057e | 55 | 100, /* 001: 80ms */ |
Rhyme | 5:a4dcc19d057e | 56 | 200, /* 010: 160ms */ |
Rhyme | 5:a4dcc19d057e | 57 | 400, /* 011: 320ms */ |
Rhyme | 5:a4dcc19d057e | 58 | 800, /* 100: 640ms */ |
Rhyme | 5:a4dcc19d057e | 59 | 1600, /* 101: 1280ms */ |
Rhyme | 5:a4dcc19d057e | 60 | 1600, /* 110: 1280ms <- place holder */ |
Rhyme | 5:a4dcc19d057e | 61 | 1600 /* 111: 1280ms <- place holder */ |
Rhyme | 5:a4dcc19d057e | 62 | } ; |
Rhyme | 5:a4dcc19d057e | 63 | |
shockey | 0:e6e6107c659e | 64 | VEML6040::VEML6040(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr<<1) { |
shockey | 0:e6e6107c659e | 65 | // activate the peripheral |
shockey | 0:e6e6107c659e | 66 | } |
shockey | 0:e6e6107c659e | 67 | |
shockey | 0:e6e6107c659e | 68 | VEML6040::~VEML6040() { } |
shockey | 0:e6e6107c659e | 69 | |
shockey | 0:e6e6107c659e | 70 | #if 0 |
shockey | 0:e6e6107c659e | 71 | // |
shockey | 0:e6e6107c659e | 72 | // numdata is supposed to be 2 |
shockey | 0:e6e6107c659e | 73 | // |
shockey | 0:e6e6107c659e | 74 | void VEML6040::cmdWrite(uint8_t cmd, uint8_t *data, uint8_t numdata) |
shockey | 0:e6e6107c659e | 75 | { |
shockey | 0:e6e6107c659e | 76 | uint8_t buf[3] ; |
shockey | 0:e6e6107c659e | 77 | |
shockey | 0:e6e6107c659e | 78 | buf[0] = cmd ; |
shockey | 0:e6e6107c659e | 79 | buf[1] = data[0] ; |
shockey | 0:e6e6107c659e | 80 | buf[2] = data[1] ; |
Rhyme | 2:239c3561d21a | 81 | writeRegs(buf, 3) ; |
shockey | 0:e6e6107c659e | 82 | } |
shockey | 0:e6e6107c659e | 83 | |
shockey | 0:e6e6107c659e | 84 | // |
shockey | 0:e6e6107c659e | 85 | // numdata is supposed to be 2 |
shockey | 0:e6e6107c659e | 86 | // |
shockey | 0:e6e6107c659e | 87 | |
shockey | 0:e6e6107c659e | 88 | void VEML6040::cmdRead(uint8_t cmd, uint8_t *data, uint8_t numdata) |
shockey | 0:e6e6107c659e | 89 | { |
shockey | 0:e6e6107c659e | 90 | uint8_t buf[1] ; |
shockey | 0:e6e6107c659e | 91 | buf[0] = cmd ; |
shockey | 0:e6e6107c659e | 92 | m_i2c.write(m_addr, buf, 1, true) ; // writing command |
shockey | 0:e6e6107c659e | 93 | m_i2c.read(m_addr, (char*)data, numdata) ; |
shockey | 0:e6e6107c659e | 94 | } |
shockey | 0:e6e6107c659e | 95 | #endif |
shockey | 0:e6e6107c659e | 96 | |
shockey | 0:e6e6107c659e | 97 | void VEML6040::getCOLORConf(uint8_t *colorconf) |
shockey | 0:e6e6107c659e | 98 | { |
shockey | 0:e6e6107c659e | 99 | uint8_t data[2] ; |
shockey | 0:e6e6107c659e | 100 | readRegs(REG_COLOR_CONF, data, 2) ; |
Rhyme | 2:239c3561d21a | 101 | *colorconf = data[0] ; |
shockey | 0:e6e6107c659e | 102 | } |
shockey | 0:e6e6107c659e | 103 | |
shockey | 0:e6e6107c659e | 104 | void VEML6040::setCOLORConf(uint8_t colorconf) |
shockey | 0:e6e6107c659e | 105 | { |
shockey | 0:e6e6107c659e | 106 | uint8_t data[3] ; |
shockey | 0:e6e6107c659e | 107 | data[0] = REG_COLOR_CONF ; |
shockey | 0:e6e6107c659e | 108 | data[1] = colorconf ; |
shockey | 0:e6e6107c659e | 109 | data[2] = 0 ; |
shockey | 0:e6e6107c659e | 110 | writeRegs(data, 3) ; |
shockey | 0:e6e6107c659e | 111 | } |
shockey | 0:e6e6107c659e | 112 | |
Rhyme | 5:a4dcc19d057e | 113 | int VEML6040::getIT(void) |
Rhyme | 5:a4dcc19d057e | 114 | { |
Rhyme | 5:a4dcc19d057e | 115 | uint8_t colorconf ; |
Rhyme | 5:a4dcc19d057e | 116 | int IntegrationTime ; |
Rhyme | 5:a4dcc19d057e | 117 | getCOLORConf(&colorconf) ; |
Rhyme | 5:a4dcc19d057e | 118 | IntegrationTime = (colorconf >> 4) & 0x07 ; |
Rhyme | 5:a4dcc19d057e | 119 | return( IntegrationTime ) ; |
Rhyme | 5:a4dcc19d057e | 120 | } |
Rhyme | 5:a4dcc19d057e | 121 | |
Rhyme | 5:a4dcc19d057e | 122 | /* |
Rhyme | 5:a4dcc19d057e | 123 | #define IT_40MS 0x00 |
Rhyme | 5:a4dcc19d057e | 124 | #define IT_80MS 0x10 |
Rhyme | 5:a4dcc19d057e | 125 | #define IT_160MS 0x20 |
Rhyme | 5:a4dcc19d057e | 126 | #define IT_320MS 0x30 |
Rhyme | 5:a4dcc19d057e | 127 | #define IT_640MS 0x40 |
Rhyme | 5:a4dcc19d057e | 128 | #define IT_1280MS 0x50 |
Rhyme | 5:a4dcc19d057e | 129 | */ |
Rhyme | 5:a4dcc19d057e | 130 | void VEML6040::setIT(uint8_t it_value) |
Rhyme | 5:a4dcc19d057e | 131 | { |
Rhyme | 5:a4dcc19d057e | 132 | uint8_t colorconf ; |
Rhyme | 5:a4dcc19d057e | 133 | getCOLORConf(&colorconf) ; |
Rhyme | 5:a4dcc19d057e | 134 | colorconf = it_value | (colorconf & 0x0F) ; |
Rhyme | 5:a4dcc19d057e | 135 | setCOLORConf(colorconf) ; |
Rhyme | 5:a4dcc19d057e | 136 | } |
shockey | 0:e6e6107c659e | 137 | |
Rhyme | 4:f5b142e3fe79 | 138 | int VEML6040::getRData(uint16_t *rdata) |
shockey | 0:e6e6107c659e | 139 | { |
shockey | 0:e6e6107c659e | 140 | uint8_t data[2] ; |
Rhyme | 4:f5b142e3fe79 | 141 | int result ; |
Rhyme | 4:f5b142e3fe79 | 142 | result = readRegs(REG_R_Data, data, 2) ; |
shockey | 0:e6e6107c659e | 143 | *rdata = (data[1]<<8) | data[0] ; |
Rhyme | 4:f5b142e3fe79 | 144 | return( result ) ; |
shockey | 0:e6e6107c659e | 145 | } |
shockey | 0:e6e6107c659e | 146 | |
Rhyme | 4:f5b142e3fe79 | 147 | int VEML6040::getGData(uint16_t *gdata) |
shockey | 0:e6e6107c659e | 148 | { |
shockey | 0:e6e6107c659e | 149 | uint8_t data[2] ; |
Rhyme | 4:f5b142e3fe79 | 150 | int result ; |
Rhyme | 4:f5b142e3fe79 | 151 | result = readRegs(REG_G_Data, data, 2) ; |
shockey | 0:e6e6107c659e | 152 | *gdata = (data[1]<<8) | data[0] ; |
Rhyme | 4:f5b142e3fe79 | 153 | return( result ) ; |
shockey | 0:e6e6107c659e | 154 | } |
shockey | 0:e6e6107c659e | 155 | |
Rhyme | 4:f5b142e3fe79 | 156 | int VEML6040::getBData(uint16_t *bdata) |
shockey | 0:e6e6107c659e | 157 | { |
shockey | 0:e6e6107c659e | 158 | uint8_t data[2] ; |
Rhyme | 4:f5b142e3fe79 | 159 | int result ; |
Rhyme | 4:f5b142e3fe79 | 160 | result = readRegs(REG_B_Data, data, 2) ; |
shockey | 0:e6e6107c659e | 161 | *bdata = (data[1]<<8) | data[0] ; |
Rhyme | 4:f5b142e3fe79 | 162 | return( result ) ; |
shockey | 0:e6e6107c659e | 163 | } |
shockey | 0:e6e6107c659e | 164 | |
Rhyme | 4:f5b142e3fe79 | 165 | int VEML6040::getWData(uint16_t *wdata) |
shockey | 0:e6e6107c659e | 166 | { |
shockey | 0:e6e6107c659e | 167 | uint8_t data[2] ; |
Rhyme | 4:f5b142e3fe79 | 168 | int result ; |
Rhyme | 4:f5b142e3fe79 | 169 | result = readRegs(REG_W_Data, data, 2) ; |
shockey | 0:e6e6107c659e | 170 | *wdata = (data[1]<<8) | data[0] ; |
Rhyme | 4:f5b142e3fe79 | 171 | return( result ) ; |
shockey | 0:e6e6107c659e | 172 | } |
shockey | 0:e6e6107c659e | 173 | |
shockey | 0:e6e6107c659e | 174 | // usage |
shockey | 0:e6e6107c659e | 175 | // fvalue = veml->getUVA() ; |
shockey | 0:e6e6107c659e | 176 | // printf("%f", fvalue) ; |
shockey | 0:e6e6107c659e | 177 | float VEML6040::getR(void) |
shockey | 0:e6e6107c659e | 178 | { |
shockey | 0:e6e6107c659e | 179 | uint16_t data ; |
shockey | 0:e6e6107c659e | 180 | float value ; |
shockey | 0:e6e6107c659e | 181 | getRData(&data) ; |
shockey | 0:e6e6107c659e | 182 | value = (float)LUX_RESOLUTION_0 * (float)data ; |
shockey | 0:e6e6107c659e | 183 | return( value ) ; |
shockey | 0:e6e6107c659e | 184 | } |
shockey | 0:e6e6107c659e | 185 | |
shockey | 0:e6e6107c659e | 186 | float VEML6040::getG(void) |
shockey | 0:e6e6107c659e | 187 | { |
shockey | 0:e6e6107c659e | 188 | uint16_t data ; |
shockey | 0:e6e6107c659e | 189 | float value ; |
shockey | 0:e6e6107c659e | 190 | getGData(&data) ; |
shockey | 0:e6e6107c659e | 191 | value = (float)LUX_RESOLUTION_0 * (float)data ; |
shockey | 0:e6e6107c659e | 192 | return( value ) ; |
shockey | 0:e6e6107c659e | 193 | } |
shockey | 0:e6e6107c659e | 194 | |
shockey | 0:e6e6107c659e | 195 | float VEML6040::getB(void) |
shockey | 0:e6e6107c659e | 196 | { |
shockey | 0:e6e6107c659e | 197 | uint16_t data ; |
shockey | 0:e6e6107c659e | 198 | float value ; |
shockey | 0:e6e6107c659e | 199 | getBData(&data) ; |
shockey | 0:e6e6107c659e | 200 | value = (float)LUX_RESOLUTION_0 * (float)data ; |
shockey | 0:e6e6107c659e | 201 | return( value ) ; |
shockey | 0:e6e6107c659e | 202 | } |
shockey | 0:e6e6107c659e | 203 | |
shockey | 0:e6e6107c659e | 204 | float VEML6040::getW(void) |
shockey | 0:e6e6107c659e | 205 | { |
shockey | 0:e6e6107c659e | 206 | uint16_t data ; |
shockey | 0:e6e6107c659e | 207 | float value ; |
shockey | 0:e6e6107c659e | 208 | getWData(&data) ; |
shockey | 0:e6e6107c659e | 209 | value = (float)LUX_RESOLUTION_0 * (float)data ; |
shockey | 0:e6e6107c659e | 210 | return( value ) ; |
shockey | 0:e6e6107c659e | 211 | } |
shockey | 0:e6e6107c659e | 212 | |
shockey | 1:5540b216acfc | 213 | float VEML6040::getX(void) |
shockey | 1:5540b216acfc | 214 | { |
shockey | 1:5540b216acfc | 215 | uint16_t R ; |
shockey | 1:5540b216acfc | 216 | uint16_t G ; |
shockey | 1:5540b216acfc | 217 | uint16_t B ; |
shockey | 1:5540b216acfc | 218 | float value ; |
shockey | 1:5540b216acfc | 219 | getRData(&R) ; |
shockey | 1:5540b216acfc | 220 | getGData(&G) ; |
shockey | 1:5540b216acfc | 221 | getBData(&B) ; |
shockey | 1:5540b216acfc | 222 | value = (float)CORR_COEFF_M0 * (float)R + (float)CORR_COEFF_M1 * (float)G + (float)CORR_COEFF_M2 * (float)B ; |
shockey | 1:5540b216acfc | 223 | return( value ) ; |
shockey | 1:5540b216acfc | 224 | } |
shockey | 1:5540b216acfc | 225 | |
shockey | 1:5540b216acfc | 226 | float VEML6040::getY(void) |
shockey | 1:5540b216acfc | 227 | { |
shockey | 1:5540b216acfc | 228 | uint16_t R ; |
shockey | 1:5540b216acfc | 229 | uint16_t G ; |
shockey | 1:5540b216acfc | 230 | uint16_t B ; |
shockey | 1:5540b216acfc | 231 | float value ; |
shockey | 1:5540b216acfc | 232 | getRData(&R) ; |
shockey | 1:5540b216acfc | 233 | getGData(&G) ; |
shockey | 1:5540b216acfc | 234 | getBData(&B) ; |
shockey | 1:5540b216acfc | 235 | value = (float)CORR_COEFF_M3 * (float)R + (float)CORR_COEFF_M4 * (float)G + (float)CORR_COEFF_M5 * (float)B ; |
shockey | 1:5540b216acfc | 236 | return( value ) ; |
shockey | 1:5540b216acfc | 237 | } |
shockey | 1:5540b216acfc | 238 | |
shockey | 1:5540b216acfc | 239 | float VEML6040::getZ(void) |
shockey | 1:5540b216acfc | 240 | { |
shockey | 1:5540b216acfc | 241 | uint16_t R ; |
shockey | 1:5540b216acfc | 242 | uint16_t G ; |
shockey | 1:5540b216acfc | 243 | uint16_t B ; |
shockey | 1:5540b216acfc | 244 | float value ; |
shockey | 1:5540b216acfc | 245 | getRData(&R) ; |
shockey | 1:5540b216acfc | 246 | getGData(&G) ; |
shockey | 1:5540b216acfc | 247 | getBData(&B) ; |
shockey | 1:5540b216acfc | 248 | value = (float)CORR_COEFF_M6 * (float)R + (float)CORR_COEFF_M7 * (float)G + (float)CORR_COEFF_M8 * (float)B ; |
shockey | 1:5540b216acfc | 249 | return( value ) ; |
shockey | 1:5540b216acfc | 250 | } |
shockey | 1:5540b216acfc | 251 | |
shockey | 1:5540b216acfc | 252 | float VEML6040::getCCTiData(void) |
shockey | 1:5540b216acfc | 253 | { |
shockey | 1:5540b216acfc | 254 | uint16_t rdata ; |
shockey | 1:5540b216acfc | 255 | uint16_t gdata ; |
shockey | 1:5540b216acfc | 256 | uint16_t bdata ; |
shockey | 1:5540b216acfc | 257 | float value ; |
shockey | 1:5540b216acfc | 258 | getRData(&rdata) ; |
shockey | 1:5540b216acfc | 259 | getGData(&gdata) ; |
shockey | 1:5540b216acfc | 260 | getBData(&bdata) ; |
shockey | 1:5540b216acfc | 261 | value = ((float)rdata - (float)bdata) / (float)gdata + (float)OFFSET_OPEN_AIR ; |
shockey | 1:5540b216acfc | 262 | return( value ) ; |
shockey | 1:5540b216acfc | 263 | } |
shockey | 1:5540b216acfc | 264 | |
shockey | 1:5540b216acfc | 265 | float VEML6040::getCCTData(void) |
shockey | 1:5540b216acfc | 266 | { |
shockey | 1:5540b216acfc | 267 | // uint16_t cctidata ; |
shockey | 1:5540b216acfc | 268 | float cctidata ; |
shockey | 1:5540b216acfc | 269 | float value ; |
shockey | 1:5540b216acfc | 270 | cctidata = getCCTiData() ; |
shockey | 1:5540b216acfc | 271 | // getCCTiData(&cctidata) ; |
shockey | 1:5540b216acfc | 272 | value = (float)CCT_CONST * powf( cctidata, -1.2455 ) ; |
shockey | 1:5540b216acfc | 273 | return( value ) ; |
shockey | 1:5540b216acfc | 274 | } |
shockey | 1:5540b216acfc | 275 | |
shockey | 1:5540b216acfc | 276 | float VEML6040::getCIEX(void) |
shockey | 1:5540b216acfc | 277 | { |
shockey | 1:5540b216acfc | 278 | float X ; |
shockey | 1:5540b216acfc | 279 | float Y ; |
shockey | 1:5540b216acfc | 280 | float Z ; |
shockey | 1:5540b216acfc | 281 | float value ; |
shockey | 1:5540b216acfc | 282 | X = getX() ; |
shockey | 1:5540b216acfc | 283 | Y = getY() ; |
shockey | 1:5540b216acfc | 284 | Z = getZ() ; |
shockey | 1:5540b216acfc | 285 | value = (float)X / ((float)X + (float)Y + (float)Z) ; |
shockey | 1:5540b216acfc | 286 | return( value ) ; |
shockey | 1:5540b216acfc | 287 | } |
shockey | 1:5540b216acfc | 288 | |
shockey | 1:5540b216acfc | 289 | float VEML6040::getCIEY(void) |
shockey | 1:5540b216acfc | 290 | { |
shockey | 1:5540b216acfc | 291 | float X ; |
shockey | 1:5540b216acfc | 292 | float Y ; |
shockey | 1:5540b216acfc | 293 | float Z ; |
shockey | 1:5540b216acfc | 294 | float value ; |
shockey | 1:5540b216acfc | 295 | X = getX() ; |
shockey | 1:5540b216acfc | 296 | Y = getY() ; |
shockey | 1:5540b216acfc | 297 | Z = getZ() ; |
shockey | 1:5540b216acfc | 298 | value = (float)Y / ((float)X + (float)Y + (float)Z) ; |
shockey | 1:5540b216acfc | 299 | return( value ) ; |
shockey | 1:5540b216acfc | 300 | } |
shockey | 1:5540b216acfc | 301 | |
Rhyme | 4:f5b142e3fe79 | 302 | int VEML6040::readRegs(int addr, uint8_t * data, int len) { |
shockey | 0:e6e6107c659e | 303 | char t[1] = {addr}; |
Rhyme | 4:f5b142e3fe79 | 304 | int result ; |
Rhyme | 4:f5b142e3fe79 | 305 | result = m_i2c.write(m_addr, t, 1, true); |
Rhyme | 4:f5b142e3fe79 | 306 | if (result == 0) { // wirte success |
Rhyme | 4:f5b142e3fe79 | 307 | result = m_i2c.read(m_addr, (char *)data, len); |
Rhyme | 4:f5b142e3fe79 | 308 | } |
Rhyme | 4:f5b142e3fe79 | 309 | return(result) ; |
shockey | 0:e6e6107c659e | 310 | } |
shockey | 0:e6e6107c659e | 311 | |
Rhyme | 4:f5b142e3fe79 | 312 | int VEML6040::writeRegs(uint8_t * data, int len) { |
Rhyme | 4:f5b142e3fe79 | 313 | int result ; |
Rhyme | 4:f5b142e3fe79 | 314 | result = m_i2c.write(m_addr, (char *)data, len); |
Rhyme | 4:f5b142e3fe79 | 315 | return(result) ; |
shockey | 0:e6e6107c659e | 316 | } |