12#if DETWS_ENABLE_VL53L0X
16 return (uint16_t)((hi << 8) | lo);
21 return (interrupt_status & 0x07) != 0;
26 return (uint8_t)((range_status_reg >> 3) & 0x0F);
50bool w8(uint8_t reg, uint8_t val)
52 Wire.beginTransmission(s_vl.addr);
55 return Wire.endTransmission() == 0;
58bool r8(uint8_t reg, uint8_t *val)
60 Wire.beginTransmission(s_vl.addr);
62 if (Wire.endTransmission(
false) != 0)
64 if (Wire.requestFrom((
int)s_vl.addr, 1) != 1)
66 *val = (uint8_t)Wire.read();
70bool rn(uint8_t reg, uint8_t *buf, uint8_t n)
72 Wire.beginTransmission(s_vl.addr);
74 if (Wire.endTransmission(
false) != 0)
76 if (Wire.requestFrom((
int)s_vl.addr, (
int)n) != n)
78 for (uint8_t i = 0; i < n; i++)
79 buf[i] = (uint8_t)Wire.read();
User-facing configuration for DeterministicESPAsyncWebServer.
The one owner of the shared I2C bus bring-up for the peripheral drivers.
void detws_i2c_begin()
Bring up the shared I2C bus on DETWS_I2C_SDA_PIN / DETWS_I2C_SCL_PIN (-1 = default).
ST VL53L0X / VL53L1X optical time-of-flight ranging codec (DETWS_ENABLE_VL53L0X).
#define VL53L0X_REG_SYSRANGE_START
bool vl53l0x_begin(uint8_t addr)
Verify the model id and start continuous back-to-back ranging at addr.
#define VL53L0X_MODEL_ID
IDENTIFICATION_MODEL_ID for the VL53L0X.
bool vl53l0x_data_ready(uint8_t interrupt_status)
True if a new measurement is ready (any of the low 3 interrupt-status bits set).
#define VL53L0X_REG_IDENTIFICATION_MODEL_ID
bool vl53l0x_range_valid(uint8_t range_status_reg)
True if the range-status field reports a valid measurement (== VL53L0X_RANGE_VALID).
bool vl53l0x_read_mm(uint16_t *mm)
If a measurement is ready, read the distance into mm and clear the interrupt.
#define VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR
uint8_t vl53l0x_range_status(uint8_t range_status_reg)
The DeviceRangeStatus field (bits 6:3) of the RESULT_RANGE_STATUS register.
#define VL53L0X_REG_RESULT_RANGE_STATUS
uint16_t vl53l0x_range_mm(uint8_t hi, uint8_t lo)
Combine the range high/low bytes (RESULT_RANGE_STATUS+10 / +11) into millimeters.
#define VL53L0X_RANGE_VALID
DeviceRangeStatus value that means a valid measurement.
#define VL53L0X_REG_RESULT_INTERRUPT_STATUS