ESP32-P4 OBC Firmware
ESP-IDF firmware for Plant-B CubeSat OBC
 
Loading...
Searching...
No Matches
veml7700_sensor.c File Reference

I²C driver for the VEML7700 ambiant light sensor. More...

#include "veml7700_sensor.h"

Macros

#define VEML7700_COMMAND_CODE_ALS_CONF_0   (0)
 
#define VEML7700_COMMAND_CODE_ALS_WH   (1)
 
#define VEML7700_COMMAND_CODE_ALS_WL   (2)
 
#define VEML7700_COMMAND_CODE_POWER_SAVING   (3)
 
#define VEML7700_COMMAND_CODE_ALS   (4)
 
#define VEML7700_COMMAND_CODE_WHITE   (5)
 
#define VEML7700_COMMAND_CODE_ALS_INT   (6)
 
#define VEML7700_GAIN_MASK   (0x1800)
 
#define VEML7700_GAIN_SHIFT   (11)
 
#define VEML7700_INTEGRATION_TIME_MASK   (0x03C0)
 
#define VEML7700_INTEGRATION_TIME_SHIFT   (6)
 
#define VEML7700_PERSISTENCE_PROTECTION_MASK   (0x0030)
 
#define VEML7700_PERSISTENCE_PROTECTION_SHIFT   (4)
 
#define VEML7700_INTERRUPT_ENABLE_MASK   (0x0002)
 
#define VEML7700_INTERRUPT_ENABLE_SHIFT   (1)
 
#define VEML7700_SHUTDOWN_MASK   (0x0001)
 
#define VEML7700_SHUTDOWN_SHIFT   (0)
 
#define VEML7700_POWER_SAVING_MODE_MASK   (0x0060)
 
#define VEML7700_POWER_SAVING_MODE_SHIFT   (1)
 
#define VEML7700_POWER_SAVING_MODE_ENABLE_MASK   (0x0001)
 
#define VEML7700_POWER_SAVING_MODE_ENABLE_SHIFT   (0)
 
#define VEML7700_INTERRUPT_STATUS_LOW_MASK   (0x8000)
 
#define VEML7700_INTERRUPT_STATUS_LOW_SHIFT   (15)
 
#define VEML7700_INTERRUPT_STATUS_HIGH_MASK   (0x4000)
 
#define VEML7700_INTERRUPT_STATUS_HIGH_SHIFT   (14)
 
#define VEML7700_RESOLUTION_800MS_IT_GAIN_2   (36)
 
#define VEML7700_RESOLUTION_800MS_IT_GAIN_2_DIV   (10000)
 
#define CHECK(x)
 
#define CHECK_ARG(VAL)
 

Functions

static esp_err_t i2c_read_uint16 (veml7700_handle_t sensor, uint8_t cmd, uint16_t *data)
 
static esp_err_t i2c_write_uint16 (veml7700_handle_t sensor, uint8_t cmd, uint16_t value)
 
static uint32_t resolution (veml7700_config_t *cfg)
 
veml7700_handle_t veml7700_i2c_create (i2c_bus_handle_t bus, i2c_addr_t dev_addr)
 Create a VEML7700 device handle for I²C communication.
 
veml7700_handle_t veml7700_i2c_init (i2c_bus_handle_t bus, i2c_addr_t dev_addr)
 Initialize the VEML7700 sensor over I²C.
 
void veml7700_i2c_delete (veml7700_handle_t sensor)
 Deinitialize the VEML7700 sensor and free resources.
 
esp_err_t veml7700_i2c_probe (veml7700_handle_t sensor)
 Probe if the sensor exist on the I²C bus.
 
esp_err_t veml7700_i2c_write_config (veml7700_handle_t sensor, veml7700_config_t *cfg)
 Write the configuration to the sensor.
 
esp_err_t veml7700_i2c_read_config (veml7700_handle_t sensor, veml7700_config_t *cfg)
 Read the sensor configuration.
 
esp_err_t veml7700_i2c_read_ambient_light (veml7700_handle_t sensor, ill_lx_t *val)
 Read ambiant light value from the sensor.
 
esp_err_t veml7700_i2c_read_white_channel (veml7700_handle_t sensor, ill_lx_t *val)
 Read white channel value from the sensor.
 
esp_err_t veml7700_i2c_read_interrupt_status (veml7700_handle_t sensor, bool *low, bool *high)
 Read the interrupt status from the sensor.
 

Variables

static const char * TAG = "veml7700"
 

Detailed Description

I²C driver for the VEML7700 ambiant light sensor.

Author
Adrien Chevrier

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Version
0.1
Date
2026-02-04

Macro Definition Documentation

◆ CHECK

#define CHECK ( x)
Value:
do \
{ \
esp_err_t __; \
if ((__ = x) != ESP_OK) \
return __; \
} \
while (0)

◆ CHECK_ARG

#define CHECK_ARG ( VAL)
Value:
do \
{ \
if (!(VAL)) \
return ESP_ERR_INVALID_ARG; \
} \
while (0)

◆ VEML7700_COMMAND_CODE_ALS

#define VEML7700_COMMAND_CODE_ALS   (4)

◆ VEML7700_COMMAND_CODE_ALS_CONF_0

#define VEML7700_COMMAND_CODE_ALS_CONF_0   (0)

◆ VEML7700_COMMAND_CODE_ALS_INT

#define VEML7700_COMMAND_CODE_ALS_INT   (6)

◆ VEML7700_COMMAND_CODE_ALS_WH

#define VEML7700_COMMAND_CODE_ALS_WH   (1)

◆ VEML7700_COMMAND_CODE_ALS_WL

#define VEML7700_COMMAND_CODE_ALS_WL   (2)

◆ VEML7700_COMMAND_CODE_POWER_SAVING

#define VEML7700_COMMAND_CODE_POWER_SAVING   (3)

◆ VEML7700_COMMAND_CODE_WHITE

#define VEML7700_COMMAND_CODE_WHITE   (5)

◆ VEML7700_GAIN_MASK

#define VEML7700_GAIN_MASK   (0x1800)

◆ VEML7700_GAIN_SHIFT

#define VEML7700_GAIN_SHIFT   (11)

◆ VEML7700_INTEGRATION_TIME_MASK

#define VEML7700_INTEGRATION_TIME_MASK   (0x03C0)

◆ VEML7700_INTEGRATION_TIME_SHIFT

#define VEML7700_INTEGRATION_TIME_SHIFT   (6)

◆ VEML7700_INTERRUPT_ENABLE_MASK

#define VEML7700_INTERRUPT_ENABLE_MASK   (0x0002)

◆ VEML7700_INTERRUPT_ENABLE_SHIFT

#define VEML7700_INTERRUPT_ENABLE_SHIFT   (1)

◆ VEML7700_INTERRUPT_STATUS_HIGH_MASK

#define VEML7700_INTERRUPT_STATUS_HIGH_MASK   (0x4000)

◆ VEML7700_INTERRUPT_STATUS_HIGH_SHIFT

#define VEML7700_INTERRUPT_STATUS_HIGH_SHIFT   (14)

◆ VEML7700_INTERRUPT_STATUS_LOW_MASK

#define VEML7700_INTERRUPT_STATUS_LOW_MASK   (0x8000)

◆ VEML7700_INTERRUPT_STATUS_LOW_SHIFT

#define VEML7700_INTERRUPT_STATUS_LOW_SHIFT   (15)

◆ VEML7700_PERSISTENCE_PROTECTION_MASK

#define VEML7700_PERSISTENCE_PROTECTION_MASK   (0x0030)

◆ VEML7700_PERSISTENCE_PROTECTION_SHIFT

#define VEML7700_PERSISTENCE_PROTECTION_SHIFT   (4)

◆ VEML7700_POWER_SAVING_MODE_ENABLE_MASK

#define VEML7700_POWER_SAVING_MODE_ENABLE_MASK   (0x0001)

◆ VEML7700_POWER_SAVING_MODE_ENABLE_SHIFT

#define VEML7700_POWER_SAVING_MODE_ENABLE_SHIFT   (0)

◆ VEML7700_POWER_SAVING_MODE_MASK

#define VEML7700_POWER_SAVING_MODE_MASK   (0x0060)

◆ VEML7700_POWER_SAVING_MODE_SHIFT

#define VEML7700_POWER_SAVING_MODE_SHIFT   (1)

◆ VEML7700_RESOLUTION_800MS_IT_GAIN_2

#define VEML7700_RESOLUTION_800MS_IT_GAIN_2   (36)

◆ VEML7700_RESOLUTION_800MS_IT_GAIN_2_DIV

#define VEML7700_RESOLUTION_800MS_IT_GAIN_2_DIV   (10000)

◆ VEML7700_SHUTDOWN_MASK

#define VEML7700_SHUTDOWN_MASK   (0x0001)

◆ VEML7700_SHUTDOWN_SHIFT

#define VEML7700_SHUTDOWN_SHIFT   (0)

Function Documentation

◆ i2c_read_uint16()

static esp_err_t i2c_read_uint16 ( veml7700_handle_t sensor,
uint8_t cmd,
uint16_t * data )
static

◆ i2c_write_uint16()

static esp_err_t i2c_write_uint16 ( veml7700_handle_t sensor,
uint8_t cmd,
uint16_t value )
static

◆ resolution()

static uint32_t resolution ( veml7700_config_t * cfg)
static

Variable Documentation

◆ TAG

const char* TAG = "veml7700"
static