diff -r bdc123ae7b49 -r bb72d448e282 esp-idf-lib/components/apds9930/apds9930.c --- 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; }