--- a/esp-idf-lib/components/apds9930/apds9930.c Thu Apr 06 22:01:08 2023 +0200 +++ b/esp-idf-lib/components/apds9930/apds9930.c Fri Apr 07 14:31:17 2023 +0200 @@ -118,17 +118,6 @@ return i2c_dev_write_reg(&dev->i2c_dev, reg, &data, 1); } -static esp_err_t read_reg_8(apds9930_t *dev, uint8_t reg, uint8_t *data) -{ - I2C_DEV_TAKE_MUTEX(&dev->i2c_dev); - I2C_DEV_CHECK(&dev->i2c_dev, read_reg_8_nolock(dev, reg, data)); - I2C_DEV_GIVE_MUTEX(&dev->i2c_dev); - - return ESP_OK; -} - - - inline static esp_err_t write_register8(i2c_dev_t *dev, uint8_t addr, uint8_t value) { @@ -235,13 +224,9 @@ { uint8_t reg_val; -// CHECK_ARG(dev); + CHECK_ARG(dev); /* Read current ENABLE register */ - I2C_DEV_TAKE_MUTEX(&dev->i2c_dev); - I2C_DEV_CHECK(&dev->i2c_dev, read_reg_8_nolock(dev, APDS9930_ENABLE | APDS9930_AUTO_INCREMENT, ®_val)); -// i2c_dev_read_reg(&dev->i2c_dev, (uint8_t)APDS9930_ENABLE, ®_val, 1); - I2C_DEV_GIVE_MUTEX(&dev->i2c_dev); - ESP_LOGI(TAG, "apds9930_setMode(%d, %d) get=%02x", mode, enable, reg_val); + reg_val = apds9930_getMode(dev); /* Change bit(s) in ENABLE register */ enable = enable & 0x01; @@ -259,15 +244,11 @@ } } - ESP_LOGI(TAG, "apds9930_setMode write %02x", reg_val); /* Write value back to ENABLE register */ I2C_DEV_TAKE_MUTEX(&dev->i2c_dev); I2C_DEV_CHECK(&dev->i2c_dev, write_reg_8_nolock(dev, APDS9930_ENABLE | APDS9930_AUTO_INCREMENT, reg_val)); -// CHECK_LOGE(dev, write_register8(&dev->i2c_dev, APDS9930_ENABLE, reg_val), "Enable register"); -// CHECK_LOGE(dev, i2c_dev_write_reg(&dev->i2c_dev, (uint8_t)APDS9930_ENABLE, ®_val, 1), "Enable register"); I2C_DEV_GIVE_MUTEX(&dev->i2c_dev); -//vTaskDelay(12 / portTICK_PERIOD_MS); return ESP_OK; } @@ -410,7 +391,6 @@ esp_err_t apds9930_readCh0Light(apds9930_t *dev, uint16_t *val) { - uint8_t val_byte; uint16_t val_word; *val = 0; @@ -418,17 +398,9 @@ I2C_DEV_TAKE_MUTEX(&dev->i2c_dev); /* Read value from channel 0 */ - CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, (uint8_t)APDS9930_Ch0DATAL | APDS9930_AUTO_INCREMENT, &val_byte, 1), "Read ch0 low"); - ESP_LOGI(TAG, "l %02x", val_byte); - *val = val_byte; - CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, (uint8_t)APDS9930_Ch0DATAH | APDS9930_AUTO_INCREMENT, &val_byte, 1), "Read ch0 high"); - ESP_LOGI(TAG, "h %02x", val_byte); - *val += ((uint16_t)val_byte << 8); + CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, (uint8_t)APDS9930_Ch0DATAL | APDS9930_AUTO_INCREMENT, &val_word, 2), "Read ch0"); I2C_DEV_GIVE_MUTEX(&dev->i2c_dev); - ESP_LOGI(TAG, "val %04x", *val); - - CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, (uint8_t)APDS9930_Ch0DATAL | APDS9930_AUTO_INCREMENT, &val_word, 2), "Read ch0 16"); - ESP_LOGI(TAG, "16 %04x", val_word); + *val = val_word; return ESP_OK; } @@ -436,16 +408,14 @@ esp_err_t apds9930_readCh1Light(apds9930_t *dev, uint16_t *val) { - uint8_t val_byte; + uint16_t val_word; *val = 0; I2C_DEV_TAKE_MUTEX(&dev->i2c_dev); /* Read value from channel 1 */ - CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_Ch1DATAL | APDS9930_AUTO_INCREMENT, &val_byte, 1), "Read ch1 low"); - *val = val_byte; - CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, APDS9930_Ch1DATAH | APDS9930_AUTO_INCREMENT, &val_byte, 1), "Read ch1 high"); - *val += ((uint16_t)val_byte << 8); + CHECK_LOGE(dev, i2c_dev_read_reg(&dev->i2c_dev, (uint8_t)APDS9930_Ch1DATAL | APDS9930_AUTO_INCREMENT, &val_word, 2), "Read ch1"); I2C_DEV_GIVE_MUTEX(&dev->i2c_dev); + *val = val_word; return ESP_OK; }