21 return (uint16_t)((hi << 8) | lo);
26 return (interrupt_status & 0x07) != 0;
31 return (uint8_t)((range_status_reg >> 3) & 0x0F);
51bool w8(uint8_t reg, uint8_t val)
53 Wire.beginTransmission(s_vl.addr);
56 return Wire.endTransmission() == 0;
59bool r8(uint8_t reg, uint8_t *val)
61 Wire.beginTransmission(s_vl.addr);
63 if (Wire.endTransmission(
false) != 0)
67 if (Wire.requestFrom((
int)s_vl.addr, 1) != 1)
71 *val = (uint8_t)Wire.read();
75bool rn(uint8_t reg, uint8_t *buf, uint8_t n)
77 Wire.beginTransmission(s_vl.addr);
79 if (Wire.endTransmission(
false) != 0)
83 if (Wire.requestFrom((
int)s_vl.addr, (
int)n) != n)
87 for (uint8_t i = 0; i < n; i++)
89 buf[i] = (uint8_t)Wire.read();
The one owner of the shared I2C bus bring-up for the peripheral drivers.
void pc_i2c_begin()
Bring up the shared I2C bus on PC_I2C_SDA_PIN / PC_I2C_SCL_PIN (-1 = default).
User-facing configuration for ProtoCore.
ST VL53L0X / VL53L1X optical time-of-flight ranging codec (PC_ENABLE_VL53L0X).
bool pc_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_SYSRANGE_START
uint16_t pc_vl53l0x_range_mm(uint8_t hi, uint8_t lo)
Combine the range high/low bytes (RESULT_RANGE_STATUS+10 / +11) into millimeters.
#define VL53L0X_MODEL_ID
IDENTIFICATION_MODEL_ID for the VL53L0X.
#define VL53L0X_REG_IDENTIFICATION_MODEL_ID
bool pc_vl53l0x_range_valid(uint8_t range_status_reg)
True if the range-status field reports a valid measurement (== VL53L0X_RANGE_VALID).
bool pc_vl53l0x_read_mm(uint16_t *mm)
If a measurement is ready, read the distance into mm and clear the interrupt.
uint8_t pc_vl53l0x_range_status(uint8_t range_status_reg)
The DeviceRangeStatus field (bits 6:3) of the RESULT_RANGE_STATUS register.
#define VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR
bool pc_vl53l0x_begin(uint8_t addr)
Verify the model id and start continuous back-to-back ranging at addr.
#define VL53L0X_REG_RESULT_RANGE_STATUS
#define VL53L0X_RANGE_VALID
DeviceRangeStatus value that means a valid measurement.
#define VL53L0X_REG_RESULT_INTERRUPT_STATUS