VL53L0X World smallest Time-of-Flight (ToF) ranging sensor

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   HelloWorld_ST_Sensors mbed-os-mqtt-client Multi_VL53L0X DISCO-IOT01_HomeEnv ... more

Fork of VL53L0X by Nicola Capovilla

Revision:
6:8ac15bf6d635
Parent:
5:f16727052990
--- a/vl53l1x_class.h	Mon Jan 28 10:14:03 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,640 +0,0 @@
-/*******************************************************************************
- * @file    vl53l1x_class.h
- * @author  JS
- * @version V0.0.1
- * @date    15-January-2019
- * @brief   Header file for VL53L1 sensor component
- ******************************************************************************
- Copyright © 2019, STMicroelectronics International N.V.
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of STMicroelectronics nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
- NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
- IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#ifndef __VL53L1X_CLASS_H
-#define __VL53L1X_CLASS_H
-
-
-#ifdef _MSC_VER
-#   ifdef VL53L1X_API_EXPORTS
-#       define VL53L1X_API  __declspec(dllexport)
-#   else
-#       define VL53L1X_API
-#   endif
-#else
-#   define VL53L1X_API
-#endif
-
-
-/* Includes ------------------------------------------------------------------*/
-#include "mbed.h"
-#include "PinNames.h"
-#include "RangeSensor.h"
-#include "vl53l1x_error_codes.h"
-//#include "DevI2C.h"
-#include "vl53L1x_I2c.h"
-#include "Stmpe1600.h"
-
-
-#define VL53L1X_IMPLEMENTATION_VER_MAJOR       1
-#define VL53L1X_IMPLEMENTATION_VER_MINOR       0
-#define VL53L1X_IMPLEMENTATION_VER_SUB         1
-#define VL53L1X_IMPLEMENTATION_VER_REVISION  0000
-
-typedef int8_t VL53L1X_ERROR;
-
-//#define SOFT_RESET                                          0x0000
-#define VL53L1_I2C_SLAVE__DEVICE_ADDRESS                    0x0001
-#define VL53L1_VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND        0x0008
-#define ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS      0x0016
-#define ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS  0x0018
-#define ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS  0x001A
-#define ALGO__PART_TO_PART_RANGE_OFFSET_MM                  0x001E
-#define MM_CONFIG__INNER_OFFSET_MM                          0x0020
-#define MM_CONFIG__OUTER_OFFSET_MM                          0x0022
-#define GPIO_HV_MUX__CTRL                                   0x0030
-#define GPIO__TIO_HV_STATUS                                 0x0031
-#define SYSTEM__INTERRUPT_CONFIG_GPIO                       0x0046
-#define PHASECAL_CONFIG__TIMEOUT_MACROP                     0x004B
-#define RANGE_CONFIG__TIMEOUT_MACROP_A_HI                   0x005E
-#define RANGE_CONFIG__VCSEL_PERIOD_A                        0x0060
-#define RANGE_CONFIG__VCSEL_PERIOD_B                        0x0063
-#define RANGE_CONFIG__TIMEOUT_MACROP_B_HI                   0x0061
-#define RANGE_CONFIG__TIMEOUT_MACROP_B_LO                   0x0062
-#define RANGE_CONFIG__SIGMA_THRESH                          0x0064
-#define RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS         0x0066
-#define RANGE_CONFIG__VALID_PHASE_HIGH                      0x0069
-#define VL53L1_SYSTEM__INTERMEASUREMENT_PERIOD              0x006C
-#define SYSTEM__THRESH_HIGH                                 0x0072
-#define SYSTEM__THRESH_LOW                                  0x0074
-#define SD_CONFIG__WOI_SD0                                  0x0078
-#define SD_CONFIG__INITIAL_PHASE_SD0                        0x007A
-#define ROI_CONFIG__USER_ROI_CENTRE_SPAD                    0x007F
-#define ROI_CONFIG__USER_ROI_REQUESTED_GLOBAL_XY_SIZE       0x0080
-#define SYSTEM__SEQUENCE_CONFIG                             0x0081
-#define VL53L1_SYSTEM__GROUPED_PARAMETER_HOLD               0x0082
-#define SYSTEM__INTERRUPT_CLEAR                             0x0086
-#define SYSTEM__MODE_START                                  0x0087
-#define VL53L1_RESULT__RANGE_STATUS                         0x0089
-#define VL53L1_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0       0x008C
-#define RESULT__AMBIENT_COUNT_RATE_MCPS_SD                  0x0090
-#define VL53L1_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0               0x0096
-#define VL53L1_RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0  0x0098
-#define VL53L1_RESULT__OSC_CALIBRATE_VAL                    0x00DE
-#define VL53L1_FIRMWARE__SYSTEM_STATUS                      0x00E5
-#define VL53L1_IDENTIFICATION__MODEL_ID                     0x010F
-#define VL53L1_ROI_CONFIG__MODE_ROI_CENTRE_SPAD             0x013E
-
-
-#define VL53L1X_DEFAULT_DEVICE_ADDRESS                      0x52
-
-#define VL53L1X_REG_IDENTIFICATION_MODEL_ID                 0x010F
-/****************************************
- * PRIVATE define do not edit
- ****************************************/
-
-/**
- *  @brief defines SW Version
- */
-typedef struct {
-    uint8_t      major;    /*!< major number */
-    uint8_t      minor;    /*!< minor number */
-    uint8_t      build;    /*!< build number */
-    uint32_t     revision; /*!< revision number */
-} VL53L1X_Version_t;
-
-
-typedef struct {
-
-    uint8_t   I2cDevAddr;
-
-} VL53L1_Dev_t;
-
-typedef VL53L1_Dev_t *VL53L1_DEV;
-
-
-/* Classes -------------------------------------------------------------------*/
-/** Class representing a VL53L1 sensor component
- */
-class VL53L1X : public RangeSensor
-{
- public:
-    /** Constructor
-     * @param[in] &i2c device I2C to be used for communication
-     * @param[in] &pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT
-     * @param[in] DevAddr device address, 0x52 by default
-     */
-    VL53L1X(vl53L1X_DevI2C *i2c, DigitalOut *pin, PinName pin_gpio1, uint8_t dev_addr = VL53L1X_DEFAULT_DEVICE_ADDRESS) 
-    : RangeSensor(), dev_i2c(i2c), _gpio0(pin)
-    {
-        MyDevice.I2cDevAddr=dev_addr;
-        Device = &MyDevice;
-               
-        _expgpio0 = NULL;
-        if (pin_gpio1 != NC) {
-            _gpio1Int = new InterruptIn(pin_gpio1);
-        } else {
-            _gpio1Int = NULL;
-        }
-    }
-    
-    /** Constructor 2 (STMPE1600DigiOut)
-     * @param[in] i2c device I2C to be used for communication
-     * @param[in] &pin Gpio Expander STMPE1600DigiOut pin to be used as component GPIO_0 CE
-     * @param[in] pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT
-     * @param[in] device address, 0x29 by default
-     */
-    VL53L1X(vl53L1X_DevI2C *i2c, Stmpe1600DigiOut *pin, PinName pin_gpio1,
-            uint8_t dev_addr = VL53L1X_DEFAULT_DEVICE_ADDRESS) 
-            : dev_i2c(i2c), _expgpio0(pin)
-    {
-        MyDevice.I2cDevAddr=dev_addr;
-        Device = &MyDevice;
-               
-        _gpio0 = NULL;
-        if (pin_gpio1 != NC) {
-            _gpio1Int = new InterruptIn(pin_gpio1);
-        } else {
-            _gpio1Int = NULL;
-        }
-    }    
-    
-   /** Destructor
-    */
-    virtual ~VL53L1X()
-    {        
-        if (_gpio1Int != NULL) {
-            delete _gpio1Int;
-        }
-    }
-    
-        
-    
-    VL53L1_DEV getDevicePtr() { return Device; }
-
-    
-    /* warning: VL53L1 class inherits from GenericSensor, RangeSensor and LightSensor, that haven`t a destructor.
-       The warning should request to introduce a virtual destructor to make sure to delete the object */
-
-    /*** Interface Methods ***/
-    /*** High level API ***/
-    /**
-     * @brief       PowerOn the sensor
-     * @return      void
-     */
-    /* turns on the sensor */
-    virtual void VL53L1_On(void)
-    {
-        printf("VL53L1_On\r\n");
-        if (_gpio0) {
-            *_gpio0 = 1;
-        } else {
-            if (_expgpio0) {
-                *_expgpio0 = 1;
-            }
-        }
-        wait_ms(10);
-    }
-
-    /**
-     * @brief       PowerOff the sensor
-     * @return      void
-     */
-    /* turns off the sensor */
-    virtual void VL53L1_Off(void)
-    {
-        printf("VL53L1_Off\r\n");
-        if (_gpio0) {
-            *_gpio0 = 0;
-        } else {
-            if (_expgpio0) {
-                *_expgpio0 = 0;
-            }
-        }
-        wait_ms(10);
-    }
-    
-    int is_present()
-    {
-        int status;
-        uint8_t id = 0;
-
-        status = read_id(&id);
-        if (status) {
-            printf("Failed to read ID device. Device not present!\n\r");
-        }
-        return status;
-    }
-
-    /**
-     * @brief       Initialize the sensor with default values
-     * @return      0 on Success
-     */
-     
-     VL53L1X_ERROR InitSensor(uint8_t address){
-        VL53L1X_ERROR status = 0;
-        uint8_t sensorState = 0;
-        VL53L1_Off();
-        VL53L1_On();
-        status = VL53L1X_SetI2CAddress(address);
-        
-        if(!status){
-            status = VL53L1X_SensorInit();
-        }      
-        
-        while(!status && !sensorState) {
-            status = VL53L1X_BootState(&sensorState);
-            wait_ms(2);
-        }
-        
-        return status;
-     }
-
-
-
-/**
- *
- * @brief One time device initialization
- * @param void
- * @return     0 on success,  @a #CALIBRATION_WARNING if failed
- */
-    virtual int init(void *init)
-    {
-       return VL53L1X_SensorInit();
-    }
-
-
-    /**
-     * @brief       Initialize the sensor with default values
-     * @return      "0" on success
-     */
-    int init_sensor(uint8_t new_addr);
-
-    /* Read function of the ID device */
-    virtual int read_id(uint8_t *id){
-        int status = 0;
-        uint16_t rl_id = 0;
-    
-        uint8_t ExpanderData[2];
-    
-        ExpanderData[0] = 0;
-        ExpanderData[1] = 0;
-        rl_id = 0;
-        dev_i2c->v53l1x_i2c_read(&ExpanderData[0], Device->I2cDevAddr, VL53L1X_REG_IDENTIFICATION_MODEL_ID, 2);
-    
-        rl_id = (ExpanderData[0] << 8) + ExpanderData[1];
-        printf("Model ID is: %d (%X)  \r\n",rl_id, rl_id);
-    
-        uint8_t tmp = 0;
-        ExpanderData[0] = VL53L1_FIRMWARE__SYSTEM_STATUS >> 8;
-        ExpanderData[1] = VL53L1_FIRMWARE__SYSTEM_STATUS & 0x0FF;
-        dev_i2c->v53l1x_i2c_read(&tmp, Device->I2cDevAddr, VL53L1_FIRMWARE__SYSTEM_STATUS, 1);
-
-        printf("Firmware system is: %d\r\n",tmp);
-    
-        if (rl_id == 0xEACC) {
-            printf("Device is present %d:\r\n", rl_id);
-            return status;
-        }
-        return -1;
-    }
-
-
-
-/**
- * @brief Get ranging result and only that
- * @param pRange_mm  Pointer to range distance
- * @return           0 on success
- */
-    virtual int get_distance(uint32_t *piData)
-    {
-    int status;
-    uint16_t distance;
-    status = VL53L1X_GetDistance(&distance);
-    *piData = (uint32_t) distance;
-    return status;
-    }
-
-
-/* VL53L1X_api.h functions */
-
-
-
-    /**
-     * @brief This function returns the SW driver version
-     */
-    VL53L1X_ERROR VL53L1X_GetSWVersion(VL53L1X_Version_t *pVersion);
-
-    /**
-     * @brief This function sets the sensor I2C address used in case multiple devices application, default address 0x52
-     */
-    VL53L1X_ERROR VL53L1X_SetI2CAddress(uint8_t new_address);
-
-    /**
-     * @brief This function loads the 135 bytes default values to initialize the sensor.
-     * @param dev Device address
-     * @return 0:success, != 0:failed
-     */
-    VL53L1X_ERROR VL53L1X_SensorInit();
-
-    /**
-     * @brief This function clears the interrupt, to be called after a ranging data reading
-     * to arm the interrupt for the next data ready event.
-     */
-    VL53L1X_ERROR VL53L1X_ClearInterrupt();
-
-    /**
-     * @brief This function programs the interrupt polarity\n
-     * 1=active high (default), 0=active low
-     */
-    VL53L1X_ERROR VL53L1X_SetInterruptPolarity(uint8_t IntPol);
-
-    /**
-     * @brief This function returns the current interrupt polarity\n
-     * 1=active high (default), 0=active low
-     */
-    VL53L1X_ERROR VL53L1X_GetInterruptPolarity(uint8_t *pIntPol);
-
-    /**
-     * @brief This function starts the ranging distance operation\n
-     * The ranging operation is continuous. The clear interrupt has to be done after each get data to allow the interrupt to raise when the next data is ready\n
-     * 1=active high (default), 0=active low, use SetInterruptPolarity() to change the interrupt polarity if required.
-     */
-    VL53L1X_ERROR VL53L1X_StartRanging();
-
-    /**
-     * @brief This function stops the ranging.
-     */
-    VL53L1X_ERROR VL53L1X_StopRanging();
-
-    /**
-     * @brief This function checks if the new ranging data is available by polling the dedicated register.
-     * @param : isDataReady==0 -> not ready; isDataReady==1 -> ready
-     */
-    VL53L1X_ERROR VL53L1X_CheckForDataReady(uint8_t *isDataReady);
-    
-    /**
-     * @brief This function programs the timing budget in ms.
-     * Predefined values = 15, 20, 33, 50, 100(default), 200, 500.
-     */
-    VL53L1X_ERROR VL53L1X_SetTimingBudgetInMs(uint16_t TimingBudgetInMs);
-
-    /**
-     * @brief This function returns the current timing budget in ms.
-     */
-    VL53L1X_ERROR VL53L1X_GetTimingBudgetInMs(uint16_t *pTimingBudgetInMs);
-
-    /**
-     * @brief This function programs the distance mode (1=short, 2=long(default)).
-     * Short mode max distance is limited to 1.3 m but better ambient immunity.\n
-     * Long mode can range up to 4 m in the dark with 200 ms timing budget.
-     */
-    VL53L1X_ERROR VL53L1X_SetDistanceMode(uint16_t DistanceMode);
-
-    /**
-     * @brief This function returns the current distance mode (1=short, 2=long).
-     */
-    VL53L1X_ERROR VL53L1X_GetDistanceMode(uint16_t *pDistanceMode);
-
-    /**
-     * @brief This function programs the Intermeasurement period in ms\n
-     * Intermeasurement period must be >/= timing budget. This condition is not checked by the API,
-     * the customer has the duty to check the condition. Default = 100 ms
-     */
-    VL53L1X_ERROR VL53L1X_SetInterMeasurementInMs(uint16_t InterMeasurementInMs);
-
-    /**
-     * @brief This function returns the Intermeasurement period in ms.
-     */
-    VL53L1X_ERROR VL53L1X_GetInterMeasurementInMs(uint16_t * pIM);
-
-    /**
-     * @brief This function returns the boot state of the device (1:booted, 0:not booted)
-     */
-    VL53L1X_ERROR VL53L1X_BootState(uint8_t *state);
-
-    /**
-     * @brief This function returns the sensor id, sensor Id must be 0xEEAC
-     */
-    VL53L1X_ERROR VL53L1X_GetSensorId(uint16_t *id);
-
-    /**
-     * @brief This function returns the distance measured by the sensor in mm
-     */
-    VL53L1X_ERROR VL53L1X_GetDistance(uint16_t *distance);
-
-    /**
-     * @brief This function returns the returned signal per SPAD in kcps/SPAD.
-     * With kcps stands for Kilo Count Per Second
-     */
-    VL53L1X_ERROR VL53L1X_GetSignalPerSpad(uint16_t *signalPerSp);
-
-    /**
-     * @brief This function returns the ambient per SPAD in kcps/SPAD
-     */
-    VL53L1X_ERROR VL53L1X_GetAmbientPerSpad(uint16_t *amb);
-
-    /**
-     * @brief This function returns the returned signal in kcps.
-     */
-    VL53L1X_ERROR VL53L1X_GetSignalRate(uint16_t *signalRate);
-
-    /**
-     * @brief This function returns the current number of enabled SPADs
-     */
-    VL53L1X_ERROR VL53L1X_GetSpadNb(uint16_t *spNb);
-
-    /**
-     * @brief This function returns the ambient rate in kcps
-     */
-    VL53L1X_ERROR VL53L1X_GetAmbientRate(uint16_t *ambRate);
-
-    /**
-     * @brief This function returns the ranging status error \n
-     * (0:no error, 1:sigma failed, 2:signal failed, ..., 7:wrap-around)
-     */
-    VL53L1X_ERROR VL53L1X_GetRangeStatus(uint8_t *rangeStatus);
-
-    /**
-     * @brief This function programs the offset correction in mm
-     * @param OffsetValue:the offset correction value to program in mm
-     */
-    VL53L1X_ERROR VL53L1X_SetOffset(int16_t OffsetValue);
-
-    /**
-     * @brief This function returns the programmed offset correction value in mm
-     */
-    VL53L1X_ERROR VL53L1X_GetOffset(int16_t *Offset);
-
-    /**
-     * @brief This function programs the xtalk correction value in cps (Count Per Second).\n
-     * This is the number of photons reflected back from the cover glass in cps.
-     */
-    VL53L1X_ERROR VL53L1X_SetXtalk(uint16_t XtalkValue);
-
-    /**
-     * @brief This function returns the current programmed xtalk correction value in cps
-     */
-    VL53L1X_ERROR VL53L1X_GetXtalk(uint16_t *Xtalk);
-
-    /**
-     * @brief This function programs the threshold detection mode\n
-     * Example:\n
-     * VL53L1X_SetDistanceThreshold(dev,100,300,0,1): Below 100 \n
-     * VL53L1X_SetDistanceThreshold(dev,100,300,1,1): Above 300 \n
-     * VL53L1X_SetDistanceThreshold(dev,100,300,2,1): Out of window \n
-     * VL53L1X_SetDistanceThreshold(dev,100,300,3,1): In window \n
-     * @param   dev : device address
-     * @param   ThreshLow(in mm) : the threshold under which one the device raises an interrupt if Window = 0
-     * @param   ThreshHigh(in mm) :  the threshold above which one the device raises an interrupt if Window = 1
-     * @param   Window detection mode : 0=below, 1=above, 2=out, 3=in
-     * @param   IntOnNoTarget = 1 (No longer used - just use 1)
-     */
-    VL53L1X_ERROR VL53L1X_SetDistanceThreshold(uint16_t ThreshLow,
-                      uint16_t ThreshHigh, uint8_t Window,
-                      uint8_t IntOnNoTarget);
-
-    /**
-     * @brief This function returns the window detection mode (0=below; 1=above; 2=out; 3=in)
-     */
-    VL53L1X_ERROR VL53L1X_GetDistanceThresholdWindow(uint16_t *window);
-
-    /**
-     * @brief This function returns the low threshold in mm
-     */
-    VL53L1X_ERROR VL53L1X_GetDistanceThresholdLow(uint16_t *low);
-
-    /**
-     * @brief This function returns the high threshold in mm
-     */
-    VL53L1X_ERROR VL53L1X_GetDistanceThresholdHigh(uint16_t *high);
-
-    /**
-     * @brief This function programs the ROI (Region of Interest)\n
-     * The ROI position is centered, only the ROI size can be reprogrammed.\n
-     * The smallest acceptable ROI size = 4\n
-     * @param X:ROI Width; Y=ROI Height
-     */
-    VL53L1X_ERROR VL53L1X_SetROI(uint16_t X, uint16_t Y);
-
-    /**
-     *@brief This function returns width X and height Y
-     */
-    VL53L1X_ERROR VL53L1X_GetROI_XY(uint16_t *ROI_X, uint16_t *ROI_Y);
-
-    /**
-     * @brief This function programs a new signal threshold in kcps (default=1024 kcps\n
-     */
-    VL53L1X_ERROR VL53L1X_SetSignalThreshold(uint16_t signal);
-
-    /**
-     * @brief This function returns the current signal threshold in kcps
-     */
-    VL53L1X_ERROR VL53L1X_GetSignalThreshold(uint16_t *signal);
-
-    /**
-     * @brief This function programs a new sigma threshold in mm (default=15 mm)
-     */
-    VL53L1X_ERROR VL53L1X_SetSigmaThreshold(uint16_t sigma);
-
-    /**
-     * @brief This function returns the current sigma threshold in mm
-     */
-    VL53L1X_ERROR VL53L1X_GetSigmaThreshold(uint16_t *signal);
-
-    /**
-     * @brief This function performs the temperature calibration.
-     * It is recommended to call this function any time the temperature might have changed by more than 8 deg C
-     * without sensor ranging activity for an extended period.
-     */
-    VL53L1X_ERROR VL53L1X_StartTemperatureUpdate();
-
-
-    /* VL53L1X_calibration.h functions */
-    
-        /**
-     * @brief This function performs the offset calibration.\n
-     * The function returns the offset value found and programs the offset compensation into the device.
-     * @param TargetDistInMm target distance in mm, ST recommended 100 mm
-     * Target reflectance = grey17%
-     * @return 0:success, !=0: failed
-     * @return offset pointer contains the offset found in mm
-     */
-    int8_t VL53L1X_CalibrateOffset(uint16_t TargetDistInMm, int16_t *offset);
-
-    /**
-     * @brief This function performs the xtalk calibration.\n
-     * The function returns the xtalk value found and programs the xtalk compensation to the device
-     * @param TargetDistInMm target distance in mm\n
-     * The target distance : the distance where the sensor start to "under range"\n
-     * due to the influence of the photons reflected back from the cover glass becoming strong\n
-     * It's also called inflection point\n
-     * Target reflectance = grey 17%
-     * @return 0: success, !=0: failed
-     * @return xtalk pointer contains the xtalk value found in cps (number of photons in count per second)
-     */
-    int8_t VL53L1X_CalibrateXtalk(uint16_t TargetDistInMm, uint16_t *xtalk);
-    
-
-    /* Write and read functions from I2C */
-
-    VL53L1X_ERROR VL53L1_WrByte(VL53L1_DEV dev, uint16_t index, uint8_t data);
-    VL53L1X_ERROR VL53L1_WrWord(VL53L1_DEV dev, uint16_t index, uint16_t data);
-    VL53L1X_ERROR VL53L1_WrDWord(VL53L1_DEV dev, uint16_t index, uint32_t data);
-    VL53L1X_ERROR VL53L1_RdByte(VL53L1_DEV dev, uint16_t index, uint8_t *data);
-    VL53L1X_ERROR VL53L1_RdWord(VL53L1_DEV dev, uint16_t index, uint16_t *data);
-    VL53L1X_ERROR VL53L1_RdDWord(VL53L1_DEV dev, uint16_t index, uint32_t *data);
-    VL53L1X_ERROR VL53L1_UpdateByte(VL53L1_DEV dev, uint16_t index, uint8_t AndData, uint8_t OrData);
-
-    VL53L1X_ERROR VL53L1_WriteMulti(VL53L1_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count);
-    VL53L1X_ERROR VL53L1_ReadMulti(VL53L1_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count);
-
-    VL53L1X_ERROR VL53L1_I2CWrite(uint8_t dev, uint16_t index, uint8_t *data, uint16_t number_of_bytes);
-    VL53L1X_ERROR VL53L1_I2CRead(uint8_t dev, uint16_t index, uint8_t *data, uint16_t number_of_bytes);
-    VL53L1X_ERROR VL53L1_GetTickCount(uint32_t *ptick_count_ms);
-    VL53L1X_ERROR VL53L1_WaitUs(VL53L1_Dev_t *pdev, int32_t wait_us);
-    VL53L1X_ERROR VL53L1_WaitMs(VL53L1_Dev_t *pdev, int32_t wait_ms);
-    
-    VL53L1X_ERROR VL53L1_WaitValueMaskEx(VL53L1_Dev_t *pdev, uint32_t timeout_ms, uint16_t index, uint8_t value, uint8_t mask, uint32_t poll_delay_ms);
-
- protected:
-
-    /* IO Device */
-    vl53L1X_DevI2C *dev_i2c;
-    
-    /* Digital out pin */
-    DigitalOut *_gpio0;
-    /* GPIO expander */
-    Stmpe1600DigiOut *_expgpio0;
-    /* Measure detection IRQ */
-    InterruptIn *_gpio1Int;
- 
-    ///* Digital out pin */
-    //int gpio0;
-    //int gpio1Int;
-    /* Device data */
-    VL53L1_Dev_t MyDevice;
-    VL53L1_DEV Device;
-};
-
-
-#endif /* _VL53L1X_CLASS_H_ */
\ No newline at end of file