modm API documentation
modm::Vl53l0< I2cMaster > Class Template Reference

#include <modm/driver/position/vl53l0.hpp>

Inheritance diagram for modm::Vl53l0< I2cMaster >:
modm::I2cDevice< I2cMaster >

Classes

struct  Data
 
struct  TimeOverhead
 

Public Typedefs

typedef modm::Configuration< RangeStatus_t, RangeErrorCode, 0x0F, 3 > RangeErrorCode_t
 
using Control_t = modm::FlagsGroup< Start_t, MeasurementSequenceStep_t, InterruptConfig_t, InterruptClear_t, GpioConfig_t, InterruptStatus_t, RangeStatus_t, MSRCConfig_t >
 

Public Types

enum  Register : uint8_t
 The addresses of the Configuration and Data Registers.
 
enum  Start : uint8_t
 SYSRANGE__START.
 
enum  MeasurementSequenceStep : uint8_t
 SYSTEM__SEQUENCE_CONFIG.
 
enum  InterruptConfig : uint8_t
 SYSTEM__INTERRUPT_CONFIG_GPIO.
 
enum  InterruptClear : uint8_t
 SYSTEM__INTERRUPT_CLEAR.
 
enum  GpioConfig : uint8_t
 
enum  InterruptStatus : uint8_t
 RESULT__INTERRUPT_STATUS_GPIO.
 
enum  RangeStatus : uint8_t
 RESULT__RANGE_STATUS.
 
enum  RangeErrorCode : uint8_t
 
enum  MSRCConfig : uint8_t
 

Public Member Functions

 MODM_FLAGS8 (Start)
 
 MODM_FLAGS8 (MeasurementSequenceStep)
 
 MODM_FLAGS8 (InterruptConfig)
 
 MODM_FLAGS8 (InterruptClear)
 
 MODM_FLAGS8 (GpioConfig)
 
 MODM_FLAGS8 (InterruptStatus)
 
 MODM_FLAGS8 (RangeStatus)
 
 MODM_FLAGS8 (MSRCConfig)
 
 Vl53l0 (Data &data, uint8_t address=0x29)
 Constructor, requires an vl53l0::Data object, sets address to default of 0x29.
 
bool ping ()
 
bool reset ()
 Soft reset of device.
 
bool initialize ()
 
bool setDeviceAddress (uint8_t address)
 
bool readDistance ()
 Reads the distance and buffers the result.
 
RangeErrorCode getRangeError ()
 
template<typename T >
bool updateRegister (Register reg, T setMask, T clearMask=T (0xff))
 
DatagetData ()
 the data object for this sensor.
 
bool setMaxMeasurementTime (uint32_t timeUs)
 
uint32_t getMaxMeasurementTime ()
 Get the configured maximum measurement time.
 
void attachConfigurationHandler (I2c::ConfigurationHandler handler)
 
bool read (uint8_t *buffer, std::size_t size)
 Starts a write transaction and waits until finished.
 
void setAddress (uint8_t address)
 
bool write (const uint8_t *buffer, std::size_t size)
 Starts a write transaction and waits until finished.
 
bool writeRead (const uint8_t *writeBuffer, std::size_t writeSize, uint8_t *readBuffer, std::size_t readSize)
 Starts a write-read transaction and waits until finished.
 

Static Public Attributes

static constexpr uint8_t ModelID [2] = { 0xEE, 0xAA }
 
static constexpr uint8_t RevisionID = 0x10
 
static constexpr uint32_t DefaultMeasurementTime = 30'000
 
static constexpr uint16_t DefaultSignalRateLimit = 32
 

Protected Member Functions

bool isTransactionRunning ()
 
bool runTransaction ()
 Starts our own transaction and waits until finished.
 
bool startTransaction ()
 Starts the transaction with our own transaction object.
 
bool startTransaction (modm::I2cTransaction *transaction)
 Starts the transaction with a separate transaction object.
 
bool wasTransactionSuccessful ()
 

Protected Attributes

I2cWriteReadTransaction transaction
 

Detailed Description

template<typename I2cMaster>
class modm::Vl53l0< I2cMaster >

The class is build for single-shot measurements.

Author
Christopher Durand

Member Enumeration Documentation

template<typename I2cMaster >
enum modm::Vl53l0::MSRCConfig : uint8_t
strong

MSRC__CONFIG_CONTROL MSRC = "minimum signal rate check"

Member Function Documentation

void modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::attachConfigurationHandler ( I2c::ConfigurationHandler  handler)
inheritedinline

Attaches a configuration handler, which is called before a transaction, whenever the configuration has to be changed.

bool modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::isTransactionRunning ( )
inheritedinlineprotected
Returns
true when transaction is busy.
template<typename I2cMaster >
bool modm::Vl53l0< I2cMaster >::ping ( )

Ping the I2C device. This overwrites the build-in ping method of I2cDevice with a read of the model number.

void modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::setAddress ( uint8_t  address)
inheritedinline

Sets a new address of the slave device.

Parameters
addressthe slave address not yet shifted left (address < 128).
template<typename I2cMaster >
bool modm::Vl53l0< I2cMaster >::setDeviceAddress ( uint8_t  address)

Set a new I2C address (< 128) for this device. The address is not permanent and must be set again after every device boot.

template<typename I2cMaster >
bool modm::Vl53l0< I2cMaster >::setMaxMeasurementTime ( uint32_t  timeUs)

Set the maximum measurement time.

Increasing this value will improve the accuracy. The default is ~30ms. ST recommends 2'000'000us = 200ms for high precision.

useful range of values: ~20'000us - 2'000'000us (20ms - 2s)

bool modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::wasTransactionSuccessful ( )
inheritedinlineprotected
Returns
true when transaction did not return an error.

The documentation for this class was generated from the following file: