esp-idf-lib/components/apds9930/apds9930.c

changeset 12
bb72d448e282
parent 11
bdc123ae7b49
child 16
b3e96bbe4ce4
--- a/esp-idf-lib/components/apds9930/apds9930.c	Mon Apr 03 11:08:09 2023 +0200
+++ b/esp-idf-lib/components/apds9930/apds9930.c	Mon Apr 03 16:07:34 2023 +0200
@@ -117,7 +117,7 @@
 #define CHECK_LOGE(dev, x, msg, ...) do { \
         esp_err_t __; \
         if ((__ = x) != ESP_OK) { \
-            I2C_DEV_GIVE_MUTEX(dev); \
+            I2C_DEV_GIVE_MUTEX(&dev->i2c_dev); \
             ESP_LOGE(TAG, msg, ## __VA_ARGS__); \
             return __; \
         } \
@@ -130,45 +130,48 @@
 }
 
 
-esp_err_t apds9930_init_desc(i2c_dev_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)
+esp_err_t apds9930_init_desc(apds9930_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)
 {
     CHECK_ARG(dev);
-    CHECK_ARG(addr & 0x20);
+
+    if (addr != 0x39) {
+	ESP_LOGE(TAG, "Invalid I2C address");
+	return ESP_ERR_INVALID_ARG;
+    }
 
-    dev->port = port;
-    dev->addr = addr;
-    dev->cfg.sda_io_num = sda_gpio;
-    dev->cfg.scl_io_num = scl_gpio;
+    dev->i2c_dev.port = port;
+    dev->i2c_dev.addr = addr;
+    dev->i2c_dev.cfg.sda_io_num = sda_gpio;
+    dev->i2c_dev.cfg.scl_io_num = scl_gpio;
 #if HELPER_TARGET_IS_ESP32
-    dev->cfg.master.clk_speed = I2C_FREQ_HZ;
+    dev->i2c_dev.cfg.master.clk_speed = I2C_FREQ_HZ;
 #endif
 
-    return i2c_dev_create_mutex(dev);
+    return i2c_dev_create_mutex(&dev->i2c_dev);
 }
 
 
-esp_err_t apds9930_free_desc(i2c_dev_t *dev)
+esp_err_t apds9930_free_desc(apds9930_t *dev)
 {
     CHECK_ARG(dev);
 
-    return i2c_dev_delete_mutex(dev);
+    return i2c_dev_delete_mutex(&dev->i2c_dev);
 }
 
 
-esp_err_t apds9930_init(i2c_dev_t *dev)
+esp_err_t apds9930_init(apds9930_t *dev)
 {
     esp_err_t	err = ESP_OK;
-    uint8_t id;
 
     CHECK_ARG(dev);
-    I2C_DEV_TAKE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
 
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_ID, &id, 1), "Sensor not found");
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_ID, &dev->id, 1), "Sensor not found");
 
-    if (id != APDS9930_ID_1 && id != APDS9930_ID_2 && id != APDS9930_ID_3) {
+    if (dev->id != APDS9930_ID_1 && dev->id != APDS9930_ID_2 && dev->id != APDS9930_ID_3) {
 	CHECK_LOGE(dev, ESP_ERR_INVALID_VERSION,
 			"Invalid chip ID: expected: 0x%x or 0x%x or 0x%x got: 0x%x",
-			APDS9930_ID_1, APDS9930_ID_2, APDS9930_ID_3, id);
+			APDS9930_ID_1, APDS9930_ID_2, APDS9930_ID_3, dev->id);
     }
 
     /* Set ENABLE register to 0 (disable all features) */
@@ -178,11 +181,11 @@
     }
 
     /* Set default values for ambient light and proximity registers */
-    CHECK_LOGE(dev, write_register8(dev, APDS9930_ATIME, APDS9930_DEFAULT_ATIME), "Default atime");
-    CHECK_LOGE(dev, write_register8(dev, APDS9930_WTIME, APDS9930_DEFAULT_WTIME), "Default wtime");
-    CHECK_LOGE(dev, write_register8(dev, APDS9930_PPULSE, APDS9930_DEFAULT_PPULSE), "Default ppulse");
-    CHECK_LOGE(dev, write_register8(dev, APDS9930_POFFSET, APDS9930_DEFAULT_POFFSET), "Default poffset");
-    CHECK_LOGE(dev, write_register8(dev, APDS9930_CONFIG, APDS9930_DEFAULT_CONFIG), "Default config");
+    CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_ATIME, APDS9930_DEFAULT_ATIME), "Default atime");
+    CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_WTIME, APDS9930_DEFAULT_WTIME), "Default wtime");
+    CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_PPULSE, APDS9930_DEFAULT_PPULSE), "Default ppulse");
+    CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_POFFSET, APDS9930_DEFAULT_POFFSET), "Default poffset");
+    CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_CONFIG, APDS9930_DEFAULT_CONFIG), "Default config");
     CHECK_LOGE(dev, apds9930_setLEDDrive(dev, APDS9930_DEFAULT_PDRIVE), "Default pdrive");
     CHECK_LOGE(dev, apds9930_setProximityGain(dev, APDS9930_DEFAULT_PGAIN), "Default pgain");
     CHECK_LOGE(dev, apds9930_setAmbientLightGain(dev, APDS9930_DEFAULT_AGAIN), "Default again");
@@ -191,9 +194,9 @@
     CHECK_LOGE(dev, apds9930_setProximityIntHighThreshold(dev, APDS9930_DEFAULT_PIHT), "Default PIHT");
     CHECK_LOGE(dev, apds9930_setLightIntLowThreshold(dev, APDS9930_DEFAULT_AILT), "Default ailt");
     CHECK_LOGE(dev, apds9930_setLightIntHighThreshold(dev, APDS9930_DEFAULT_AIHT), "Default aiht");
-    CHECK_LOGE(dev, write_register8(dev, APDS9930_PERS, APDS9930_DEFAULT_PERS), "Default pers");
+    CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_PERS, APDS9930_DEFAULT_PERS), "Default pers");
 
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
     return err;
 }
 
@@ -201,23 +204,23 @@
  * Public methods for controlling the APDS-9930
  ******************************************************************************/
 
-uint8_t apds9930_getMode(i2c_dev_t *dev)
+uint8_t apds9930_getMode(apds9930_t *dev)
 {
     uint8_t enable_value;
 
-    I2C_DEV_TAKE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
     /* Read current ENABLE register */
-    if (i2c_dev_read_reg(dev, APDS9930_ENABLE, &enable_value, 1) != ESP_OK) {
-	I2C_DEV_GIVE_MUTEX(dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_ENABLE, &enable_value, 1) != ESP_OK) {
+	I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;
     }
 
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
     return enable_value;
 }
 
 
-esp_err_t apds9930_setMode(i2c_dev_t *dev, uint8_t mode, uint8_t enable)
+esp_err_t apds9930_setMode(apds9930_t *dev, uint8_t mode, uint8_t enable)
 {
     uint8_t reg_val;
 
@@ -245,15 +248,15 @@
     }
 
     /* Write value back to ENABLE register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, write_register8(dev, APDS9930_ENABLE, reg_val), "Enable register");
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_ENABLE, reg_val), "Enable register");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_enableLightSensor(i2c_dev_t *dev, bool interrupts)
+esp_err_t apds9930_enableLightSensor(apds9930_t *dev, bool interrupts)
 {
     CHECK_ARG(dev);
 
@@ -271,7 +274,7 @@
 }
 
 
-esp_err_t apds9930_disableLightSensor(i2c_dev_t *dev)
+esp_err_t apds9930_disableLightSensor(apds9930_t *dev)
 {
     CHECK_ARG(dev);
 
@@ -282,7 +285,7 @@
 }
 
 
-esp_err_t apds9930_enableProximitySensor(i2c_dev_t *dev, bool interrupts)
+esp_err_t apds9930_enableProximitySensor(apds9930_t *dev, bool interrupts)
 {
     CHECK_ARG(dev);
 
@@ -301,7 +304,7 @@
 }
 
 
-esp_err_t apds9930_disableProximitySensor(i2c_dev_t *dev)
+esp_err_t apds9930_disableProximitySensor(apds9930_t *dev)
 {
     CHECK_ARG(dev);
 
@@ -312,13 +315,13 @@
 }
 
 
-esp_err_t apds9930_enablePower(i2c_dev_t *dev)
+esp_err_t apds9930_enablePower(apds9930_t *dev)
 {
     return apds9930_setMode(dev, APDS9930_MODE_POWER, 1);
 }
 
 
-esp_err_t apds9930_disablePower(i2c_dev_t *dev)
+esp_err_t apds9930_disablePower(apds9930_t *dev)
 {
     return apds9930_setMode(dev, APDS9930_MODE_POWER, 0);
 }
@@ -328,7 +331,7 @@
  * Ambient light sensor controls
  ******************************************************************************/
 
-esp_err_t apds9930_readAmbientLightLux(i2c_dev_t *dev, float *val)
+esp_err_t apds9930_readAmbientLightLux(apds9930_t *dev, float *val)
 {
     uint16_t Ch0, Ch1;
 
@@ -341,7 +344,7 @@
 }
 
 
-esp_err_t apds9930_readulAmbientLightLux(i2c_dev_t *dev, unsigned long *val)
+esp_err_t apds9930_readulAmbientLightLux(apds9930_t *dev, unsigned long *val)
 {
     uint16_t Ch0, Ch1;
 
@@ -354,7 +357,7 @@
 }
 
 
-float apds9930_floatAmbientToLux(i2c_dev_t *dev, uint16_t Ch0, uint16_t Ch1)
+float apds9930_floatAmbientToLux(apds9930_t *dev, uint16_t Ch0, uint16_t Ch1)
 {
     uint8_t	x[4] = {1,8,16,120};
     float	iac;
@@ -372,7 +375,7 @@
 }
 
 
-unsigned long apds9930_ulongAmbientToLux(i2c_dev_t *dev, uint16_t Ch0, uint16_t Ch1)
+unsigned long apds9930_ulongAmbientToLux(apds9930_t *dev, uint16_t Ch0, uint16_t Ch1)
 {
     uint8_t	x[4] = {1,8,16,120};
     unsigned long	iac;
@@ -389,37 +392,37 @@
 }
 
 
-esp_err_t apds9930_readCh0Light(i2c_dev_t *dev, uint16_t *val)
+esp_err_t apds9930_readCh0Light(apds9930_t *dev, uint16_t *val)
 {
     uint8_t val_byte;
     *val = 0;
 
     CHECK_ARG(dev);
 
-    I2C_DEV_TAKE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
     /* Read value from channel 0 */
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_Ch0DATAL, &val_byte, 1), "Read ch0 low");
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_Ch0DATAL, &val_byte, 1), "Read ch0 low");
     *val = val_byte;
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_Ch0DATAH, &val_byte, 1), "Read ch0 high");
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_Ch0DATAH, &val_byte, 1), "Read ch0 high");
     *val += ((uint16_t)val_byte << 8);
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_readCh1Light(i2c_dev_t *dev, uint16_t *val)
+esp_err_t apds9930_readCh1Light(apds9930_t *dev, uint16_t *val)
 {
     uint8_t val_byte;
     *val = 0;
 
-    I2C_DEV_TAKE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
     /* Read value from channel 1 */
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_Ch1DATAL, &val_byte, 1), "Read ch1 low");
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_Ch1DATAL, &val_byte, 1), "Read ch1 low");
     *val = val_byte;
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_Ch1DATAH, &val_byte, 1), "Read ch1 high");
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_Ch1DATAH, &val_byte, 1), "Read ch1 high");
     *val += ((uint16_t)val_byte << 8);
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
@@ -428,18 +431,18 @@
  * Proximity sensor controls
  ******************************************************************************/
 
-esp_err_t apds9930_readProximity(i2c_dev_t *dev, uint16_t *val)
+esp_err_t apds9930_readProximity(apds9930_t *dev, uint16_t *val)
 {
     *val = 0;
     uint8_t val_byte;
 
-    I2C_DEV_TAKE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
     /* Read value from proximity data register */
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_PDATAL, &val_byte, 1), "Read proximity low");
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_PDATAL, &val_byte, 1), "Read proximity low");
     *val = val_byte;
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_PDATAH, &val_byte, 1), "Read proximity high");
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_PDATAH, &val_byte, 1), "Read proximity high");
     *val += ((uint16_t)val_byte << 8);
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
@@ -448,91 +451,91 @@
  * Getters and setters for register values
  ******************************************************************************/
 
-uint16_t apds9930_getProximityIntLowThreshold(i2c_dev_t *dev)
+uint16_t apds9930_getProximityIntLowThreshold(apds9930_t *dev)
 {
     uint16_t val;
     uint8_t val_byte;
 
     /* Read value from PILT register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_PILTL, &val_byte, 1) != ESP_OK) {
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_PILTL, &val_byte, 1) != ESP_OK) {
         val = 0;
     }
     val = val_byte;
-    if (i2c_dev_read_reg(dev, APDS9930_PILTH, &val_byte, 1) != ESP_OK) {
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_PILTH, &val_byte, 1) != ESP_OK) {
         val = 0;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
     val |= ((uint16_t)val_byte << 8);
 
     return val;
 }
 
 
-esp_err_t apdsi9930_setProximityIntLowThreshold(i2c_dev_t *dev, uint16_t threshold)
+esp_err_t apds9930_setProximityIntLowThreshold(apds9930_t *dev, uint16_t threshold)
 {
     uint8_t lo;
     uint8_t hi;
     hi = threshold >> 8;
     lo = threshold & 0x00FF;
 
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_PILTL, &lo, 1), "Write PILTL");
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_PILTH, &hi, 1), "Write PILTH");
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_PILTL, &lo, 1), "Write PILTL");
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_PILTH, &hi, 1), "Write PILTH");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-uint16_t apds9930_getProximityIntHighThreshold(i2c_dev_t *dev)
+uint16_t apds9930_getProximityIntHighThreshold(apds9930_t *dev)
 {
     uint16_t val;
     uint8_t val_byte;
 
     /* Read value from PIHT register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_PIHTL, &val_byte, 1) != ESP_OK) {
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_PIHTL, &val_byte, 1) != ESP_OK) {
         val = 0;
     }
     val = val_byte;
-    if (i2c_dev_read_reg(dev, APDS9930_PIHTH, &val_byte, 1) != ESP_OK) {
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_PIHTH, &val_byte, 1) != ESP_OK) {
         val = 0;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
     val |= ((uint16_t)val_byte << 8);
 
     return val;
 }
 
 
-esp_err_t apds9930_setProximityIntHighThreshold(i2c_dev_t *dev, uint16_t threshold)
+esp_err_t apds9930_setProximityIntHighThreshold(apds9930_t *dev, uint16_t threshold)
 {
     uint8_t lo;
     uint8_t hi;
     hi = threshold >> 8;
     lo = threshold & 0x00FF;
 
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_PIHTL, &lo, 1), "Write PIHTL");
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_PIHTH, &hi, 1), "Write PIHTH");
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_PIHTL, &lo, 1), "Write PIHTL");
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_PIHTH, &hi, 1), "Write PIHTH");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-uint8_t apds9930_getLEDDrive(i2c_dev_t *dev)
+uint8_t apds9930_getLEDDrive(apds9930_t *dev)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
-	I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
+	I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     /* Shift and mask out LED drive bits */
     val = (val >> 6) & 0b00000011;
@@ -541,13 +544,13 @@
 }
 
 
-esp_err_t apds9930_setLEDDrive(i2c_dev_t *dev, uint8_t drive)
+esp_err_t apds9930_setLEDDrive(apds9930_t *dev, uint8_t drive)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1), "Read control");
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Read control");
 
     /* Set bits in register to given value */
     drive &= 0b00000011;
@@ -556,24 +559,24 @@
     val |= drive;
 
     /* Write register value back into CONTROL register */
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_CONTROL, &val, 1), "Write control");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Write control");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-uint8_t apds9930_getProximityGain(i2c_dev_t *dev)
+uint8_t apds9930_getProximityGain(apds9930_t *dev)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
-        I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
+        I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     /* Shift and mask out PDRIVE bits */
     val = (val >> 2) & 0b00000011;
@@ -582,13 +585,13 @@
 }
 
 
-esp_err_t apds9930_setProximityGain(i2c_dev_t *dev, uint8_t drive)
+esp_err_t apds9930_setProximityGain(apds9930_t *dev, uint8_t drive)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1), "Read control");
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Read control");
 
     /* Set bits in register to given value */
     drive &= 0b00000011;
@@ -597,24 +600,24 @@
     val |= drive;
 
     /* Write register value back into CONTROL register */
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_CONTROL, &val, 1), "Write control");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Write control");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-uint8_t apds9930_getProximityDiode(i2c_dev_t *dev)
+uint8_t apds9930_getProximityDiode(apds9930_t *dev)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
-        I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
+        I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     /* Shift and mask out PDRIVE bits */
     val = (val >> 4) & 0b00000011;
@@ -623,13 +626,13 @@
 }
 
 
-esp_err_t apds9930_setProximityDiode(i2c_dev_t *dev, uint8_t drive)
+esp_err_t apds9930_setProximityDiode(apds9930_t *dev, uint8_t drive)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1), "Read control");
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Read control");
 
     /* Set bits in register to given value */
     drive &= 0b00000011;
@@ -638,24 +641,24 @@
     val |= drive;
 
     /* Write register value back into CONTROL register */
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_CONTROL, &val, 1), "Write control");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Write control");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-uint8_t apds9930_getAmbientLightGain(i2c_dev_t *dev)
+uint8_t apds9930_getAmbientLightGain(apds9930_t *dev)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
-        I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
+        I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     /* Shift and mask out ADRIVE bits */
     val &= 0b00000011;
@@ -664,13 +667,13 @@
 }
 
 
-esp_err_t apds9930_setAmbientLightGain(i2c_dev_t *dev, uint8_t drive)
+esp_err_t apds9930_setAmbientLightGain(apds9930_t *dev, uint8_t drive)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1), "Read control");
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Read control");
 
     /* Set bits in register to given value */
     drive &= 0b00000011;
@@ -678,24 +681,24 @@
     val |= drive;
 
     /* Write register value back into CONTROL register */
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_CONTROL, &val, 1), "Write control");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Write control");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return true;
 }
 
 
-uint8_t apds9930_getAmbientGainLevel(i2c_dev_t *dev)
+uint8_t apds9930_getAmbientGainLevel(apds9930_t *dev)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
-        I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1) != ESP_OK) {
+        I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     /* Shift and mask out AGL bit */
     val = (val >> 2) & 0b00000001;
@@ -704,13 +707,13 @@
 }
 
 
-esp_err_t apds9930_setAmbientGainLevel(i2c_dev_t *dev, uint8_t enable)
+esp_err_t apds9930_setAmbientGainLevel(apds9930_t *dev, uint8_t enable)
 {
     uint8_t val;
 
     /* Read value from CONTROL register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_CONTROL, &val, 1), "Read control");
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Read control");
 
     /* Set bits in register to given value */
     enable &= 0b00000001;
@@ -719,35 +722,35 @@
     val |= enable;
 
     /* Write register value back into CONTROL register */
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_CONTROL, &val, 1), "Write control");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_CONTROL, &val, 1), "Write control");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_getLightIntLowThreshold(i2c_dev_t *dev, uint16_t *threshold)
+esp_err_t apds9930_getLightIntLowThreshold(apds9930_t *dev, uint16_t *threshold)
 {
     uint8_t val_byte;
     *threshold = 0;
 
     /* Read value from ambient light low threshold, low byte register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_AILTL, &val_byte, 1) != ESP_OK) {
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_AILTL, &val_byte, 1) != ESP_OK) {
         *threshold = 0;
     }
     *threshold = val_byte;
-    if (i2c_dev_read_reg(dev, APDS9930_AILTH, &val_byte, 1) != ESP_OK) {
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_AILTH, &val_byte, 1) != ESP_OK) {
         *threshold = 0;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
     *threshold = *threshold + ((uint16_t)val_byte << 8);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_setLightIntLowThreshold(i2c_dev_t *dev, uint16_t threshold)
+esp_err_t apds9930_setLightIntLowThreshold(apds9930_t *dev, uint16_t threshold)
 {
     uint8_t val_low;
     uint8_t val_high;
@@ -756,37 +759,37 @@
     val_low = threshold & 0x00FF;
     val_high = (threshold & 0xFF00) >> 8;
 
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_AILTL, &val_low, 1), "Write AILTL");
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_AILTH, &val_high, 1), "Write AILTH");
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_AILTL, &val_low, 1), "Write AILTL");
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_AILTH, &val_high, 1), "Write AILTH");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_getLightIntHighThreshold(i2c_dev_t *dev, uint16_t *threshold)
+esp_err_t apds9930_getLightIntHighThreshold(apds9930_t *dev, uint16_t *threshold)
 {
     uint8_t val_byte;
     *threshold = 0;
 
     /* Read value from ambient light high threshold, low byte register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_AIHTL, &val_byte, 1) != ESP_OK) {
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_AIHTL, &val_byte, 1) != ESP_OK) {
         *threshold = 0;
     }
     *threshold = val_byte;
-    if (i2c_dev_read_reg(dev, APDS9930_AIHTH, &val_byte, 1) != ESP_OK) {
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_AIHTH, &val_byte, 1) != ESP_OK) {
         *threshold = 0;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
     *threshold = *threshold + ((uint16_t)val_byte << 8);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_setLightIntHighThreshold(i2c_dev_t *dev, uint16_t threshold)
+esp_err_t apds9930_setLightIntHighThreshold(apds9930_t *dev, uint16_t threshold)
 {
     uint8_t val_low;
     uint8_t val_high;
@@ -795,26 +798,26 @@
     val_low = threshold & 0x00FF;
     val_high = (threshold & 0xFF00) >> 8;
 
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_AIHTL, &val_low, 1), "Write AIHTL");
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_AIHTH, &val_high, 1), "Write AIHTH");
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_AIHTL, &val_low, 1), "Write AIHTL");
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_AIHTH, &val_high, 1), "Write AIHTH");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-uint8_t apds9930_getAmbientLightIntEnable(i2c_dev_t *dev)
+uint8_t apds9930_getAmbientLightIntEnable(apds9930_t *dev)
 {
     uint8_t val;
 
     /* Read value from ENABLE register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_ENABLE, &val, 1) != ESP_OK) {
-        I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_ENABLE, &val, 1) != ESP_OK) {
+        I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     /* Shift and mask out AIEN bit */
     val = (val >> 4) & 0b00000001;
@@ -823,13 +826,13 @@
 }
 
 
-esp_err_t apds9930_setAmbientLightIntEnable(i2c_dev_t *dev, uint8_t enable)
+esp_err_t apds9930_setAmbientLightIntEnable(apds9930_t *dev, uint8_t enable)
 {
     uint8_t val;
 
     /* Read value from ENABLE register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_ENABLE, &val, 1), "Read enable");
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_ENABLE, &val, 1), "Read enable");
 
     /* Set bits in register to given value */
     enable &= 0b00000001;
@@ -838,24 +841,24 @@
     val |= enable;
 
     /* Write register value back into ENABLE register */
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_ENABLE, &val, 1), "Write enable");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_ENABLE, &val, 1), "Write enable");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-uint8_t apds9930_getProximityIntEnable(i2c_dev_t *dev)
+uint8_t apds9930_getProximityIntEnable(apds9930_t *dev)
 {
     uint8_t val;
 
     /* Read value from ENABLE register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    if (i2c_dev_read_reg(dev, APDS9930_ENABLE, &val, 1) != ESP_OK) {
-        I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    if (i2c_dev_read_reg(&dev->i2c_dev, APDS9930_ENABLE, &val, 1) != ESP_OK) {
+        I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
         return APDS9930_ERROR;;
     }
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     /* Shift and mask out PIEN bit */
     val = (val >> 5) & 0b00000001;
@@ -864,13 +867,13 @@
 }
 
 
-esp_err_t apds9930_setProximityIntEnable(i2c_dev_t *dev, uint8_t enable)
+esp_err_t apds9930_setProximityIntEnable(apds9930_t *dev, uint8_t enable)
 {
     uint8_t val;
 
     /* Read value from ENABLE register */
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_read_reg(dev, APDS9930_ENABLE, &val, 1), "Read enable");
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_ENABLE, &val, 1), "Read enable");
 
     /* Set bits in register to given value */
     enable &= 0b00000001;
@@ -879,21 +882,21 @@
     val |= enable;
 
     /* Write register value back into ENABLE register */
-    CHECK_LOGE(dev, i2c_dev_write_reg(dev, APDS9930_ENABLE, &val, 1), "Write enable");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, APDS9930_ENABLE, &val, 1), "Write enable");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_clearAmbientLightInt(i2c_dev_t *dev)
+esp_err_t apds9930_clearAmbientLightInt(apds9930_t *dev)
 {
     uint8_t	val = APDS9930_CLEAR_ALS_INT;
 
-    I2C_DEV_TAKE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
     /* This should write to the chip without register address */
-    CHECK_LOGE(dev, i2c_dev_write(dev, NULL, 0, &val, 1), "Clear ALS_INT");
-    I2C_DEV_GIVE_MUTEX(dev);
+    CHECK_LOGE(dev, i2c_dev_write(&dev->i2c_dev, NULL, 0, &val, 1), "Clear ALS_INT");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
 //    if( !wireWriteByte(CLEAR_ALS_INT) ) {
 //      return false;
@@ -903,25 +906,25 @@
 }
 
 
-esp_err_t apds9930_clearProximityInt(i2c_dev_t *dev)
+esp_err_t apds9930_clearProximityInt(apds9930_t *dev)
 {
     uint8_t	val = APDS9930_CLEAR_PROX_INT;
 
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_write(dev, NULL, 0, &val, 1), "Clear PROX_INT");
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_write(&dev->i2c_dev, NULL, 0, &val, 1), "Clear PROX_INT");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }
 
 
-esp_err_t apds9930_clearAllInts(i2c_dev_t *dev)
+esp_err_t apds9930_clearAllInts(apds9930_t *dev)
 {
     uint8_t	val = APDS9930_CLEAR_ALL_INTS;
 
-    I2C_DEV_TAKE_MUTEX(dev);
-    CHECK_LOGE(dev, i2c_dev_write(dev, NULL, 0, &val, 1), "Clear ALL_INTS");
-    I2C_DEV_GIVE_MUTEX(dev);
+    I2C_DEV_TAKE_MUTEX(&dev->i2c_dev);
+    CHECK_LOGE(dev, i2c_dev_write(&dev->i2c_dev, NULL, 0, &val, 1), "Clear ALL_INTS");
+    I2C_DEV_GIVE_MUTEX(&dev->i2c_dev);
 
     return ESP_OK;
 }

mercurial