use VL6180XA1 chip wothout X-NUCLEO-6180XA1 Board. Simple way to use the chip.

Dependents:   Check_VL6180XA1_ToF

Fork of X_NUCLEO_6180XA1 by ST

Files at this revision

API Documentation at this revision

Comitter:
gallonm
Date:
Fri Sep 11 14:39:00 2015 +0200
Parent:
2:7684e0b4e40e
Child:
4:a5abf7757947
Commit message:
init function, readID function
update sensors.h

Changed in this revision

Components/Interfaces/LightSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/RangeSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/VL6180X/vl6180x_class.cpp Show annotated file Show diff for this revision Revisions of this file
Components/VL6180X/vl6180x_class.h Show annotated file Show diff for this revision Revisions of this file
--- a/Components/Interfaces/LightSensor.h	Thu Sep 10 08:40:54 2015 +0000
+++ b/Components/Interfaces/LightSensor.h	Fri Sep 11 14:39:00 2015 +0200
@@ -44,14 +44,14 @@
 #include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
-/** An abstract class for Humidity sensors
+/** An abstract class for ambient light sensors
  */
 class LightSensor : public GenericSensor
 {
  public:
     /**
      * @brief       Get current light [lux]
-     * @param[out]  pfData Pointer to where to store light to
+     * @param[out]  piData Pointer to where to store light to
      * @return      0 in case of success, an error code otherwise
      */
     virtual int GetLight(int *piData) = 0;
--- a/Components/Interfaces/RangeSensor.h	Thu Sep 10 08:40:54 2015 +0000
+++ b/Components/Interfaces/RangeSensor.h	Fri Sep 11 14:39:00 2015 +0200
@@ -1,11 +1,11 @@
 /**
  ******************************************************************************
- * @file    HumiditySensor.h
+ * @file    RangeSensor.h
  * @author  AST / EST
  * @version V0.0.1
  * @date    13-April-2015
  * @brief   This file contains the abstract class describing in general
- *          the interfaces of an ambient light sensor (ALS)
+ *          the interfaces of a range sensor
  ******************************************************************************
  * @attention
  *
@@ -37,24 +37,24 @@
  */
 
 /* Define to prevent from recursive inclusion --------------------------------*/
-#ifndef __LIGHT_SENSOR_CLASS_H
-#define __LIGHT_SENSOR_CLASS_H
+#ifndef __RANGE_SENSOR_CLASS_H
+#define __RANGE_SENSOR_CLASS_H
 
 /* Includes ------------------------------------------------------------------*/
 #include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
-/** An abstract class for Humidity sensors
+/** An abstract class for range sensors
  */
-class LightSensor : public GenericSensor
+class RangeSensor : public GenericSensor
 {
  public:
     /**
-     * @brief       Get current light [lux]
-     * @param[out]  pfData Pointer to where to store light to
+     * @brief       Get current range [mm]
+     * @param[out]  piData Pointer to where to store range to
      * @return      0 in case of success, an error code otherwise
      */
-    virtual int GetLight(int *piData) = 0;
+    virtual int GetRange(int *piData) = 0;
 };
 
-#endif /* __LIGHT_SENSOR_CLASS_H */
\ No newline at end of file
+#endif /* __RANGE_SENSOR_CLASS_H */
\ No newline at end of file
--- a/Components/VL6180X/vl6180x_class.cpp	Thu Sep 10 08:40:54 2015 +0000
+++ b/Components/VL6180X/vl6180x_class.cpp	Fri Sep 11 14:39:00 2015 +0200
@@ -38,280 +38,208 @@
 /* Includes ------------------------------------------------------------------*/
 #include "vl6180x_class.h"
 
-
+#define Fix7_2_KCPs(x) ((((uint32_t)(x))*1000)>>7)
 
-/**
- * @brief  Set HTS221 Initialization
- * @param  HTS221_Init the configuration setting for the HTS221
- * @retval HUM_TEMP_OK in case of success, an error code otherwise
- */
-VL6180x_ErrCode_t VL6180X::VL6180X_Init(HUM_TEMP_InitTypeDef *HTS221_Init)
+int VL6180X::VL6180x_InitData(VL6180xDev_t dev)
 {
-  uint8_t tmp = 0x00;
-  
-  /* Configure the low level interface ---------------------------------------*/
-  if(HTS221_IO_Init() != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  if(HTS221_Power_On() != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  if(HTS221_Calibration() != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  if(HTS221_IO_Read(&tmp, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  /* Output Data Rate selection */
-  tmp &= ~(HTS221_ODR_MASK);
-  tmp |= HTS221_Init->OutputDataRate;
-  
-  if(HTS221_IO_Write(&tmp, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  HTS221_IO_ITConfig();
-  
-  return HUM_TEMP_OK;
-}
+    int status, dmax_status ;
+    int8_t offset;
+    uint8_t FreshOutReset;
+    uint32_t CalValue;
+    uint16_t u16;
+    uint32_t XTalkCompRate_KCps;
+
+    LOG_FUNCTION_START("");
+
+    VL6180xDevDataSet(dev, EceFactorM , DEF_ECE_FACTOR_M);
+    VL6180xDevDataSet(dev, EceFactorD , DEF_ECE_FACTOR_D);
+
+#ifdef VL6180x_HAVE_UPSCALE_DATA
+    VL6180xDevDataSet(dev, UpscaleFactor ,  DEF_UPSCALE);
+#endif
+
+#ifdef VL6180x_HAVE_ALS_DATA
+    VL6180xDevDataSet(dev, IntegrationPeriod, DEF_INT_PEFRIOD);
+    VL6180xDevDataSet(dev, AlsGainCode, DEF_ALS_GAIN);
+    VL6180xDevDataSet(dev, AlsScaler, DEF_ALS_SCALER);
+#endif
+
+#ifdef  VL6180x_HAVE_WRAP_AROUND_DATA
+    VL6180xDevDataSet(dev, WrapAroundFilterActive, (VL6180x_WRAP_AROUND_FILTER_SUPPORT >0));
+    VL6180xDevDataSet(dev, DMaxEnable, DEF_DMAX_ENABLE);
+#endif
+
+    _DMax_OneTimeInit(dev);
+    do{
+
+        /* backup offset initial value from nvm these must be done prior any over call that use offset */
+        status = VL6180x_RdByte(dev,SYSRANGE_PART_TO_PART_RANGE_OFFSET, (uint8_t*)&offset);
+        if( status ){
+            VL6180x_ErrLog("SYSRANGE_PART_TO_PART_RANGE_OFFSET rd fail");
+            break;
+        }
+        VL6180xDevDataSet(dev, Part2PartOffsetNVM, offset);
 
-/**
- * @brief  Read ID address of HTS221
- * @param  ht_id the pointer where the ID of the device is stored
- * @retval HUM_TEMP_OK in case of success, an error code otherwise
- */
-HUM_TEMP_StatusTypeDef HTS221::HTS221_ReadID(uint8_t *ht_id)
-{
-  if(!ht_id)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  return HTS221_IO_Read(ht_id, HTS221_WHO_AM_I_ADDR, 1);
-}
+        status=VL6180x_RdDWord( dev, SYSRANGE_RANGE_IGNORE_THRESHOLD, &CalValue);
+        if( status ){
+            VL6180x_ErrLog("Part2PartAmbNVM rd fail");
+            break;
+        }
+        if( (CalValue&0xFFFF0000) == 0 ){
+            CalValue=0x00CE03F8;
+        }
+        VL6180xDevDataSet(dev, Part2PartAmbNVM, CalValue);
+
+        status = VL6180x_RdWord(dev, SYSRANGE_CROSSTALK_COMPENSATION_RATE ,&u16);
+        if( status){
+            VL6180x_ErrLog("SYSRANGE_CROSSTALK_COMPENSATION_RATE rd fail ");
+            break;
+        }
+        XTalkCompRate_KCps = Fix7_2_KCPs(u16);
+        VL6180xDevDataSet(dev, XTalkCompRate_KCps , XTalkCompRate_KCps );
 
-/**
- * @brief  Reboot memory content of HTS221
- * @retval HUM_TEMP_OK in case of success, an error code otherwise
- */
-HUM_TEMP_StatusTypeDef HTS221::HTS221_RebootCmd(void)
-{
-  uint8_t tmpreg;
-  
-  /* Read CTRL_REG2 register */
-  if(HTS221_IO_Read(&tmpreg, HTS221_CTRL_REG2_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  /* Enable or Disable the reboot memory */
-  tmpreg |= HTS221_BOOT_REBOOTMEMORY;
-  
-  /* Write value to MEMS CTRL_REG2 regsister */
-  if(HTS221_IO_Write(&tmpreg, HTS221_CTRL_REG2_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  return HUM_TEMP_OK;
+        dmax_status = _DMax_InitData(dev);
+        if( dmax_status < 0 ){
+            VL6180x_ErrLog("DMax init failure");
+            break;
+        }
+
+        /* Read or wait for fresh out of reset  */
+        status = VL6180x_RdByte(dev,SYSTEM_FRESH_OUT_OF_RESET, &FreshOutReset);
+        if( status )  {
+            VL6180x_ErrLog("SYSTEM_FRESH_OUT_OF_RESET rd fail");
+            break;
+        }
+        if( FreshOutReset!= 1 || dmax_status )
+            status = CALIBRATION_WARNING;
+
+    }
+    while(0);
+
+    LOG_FUNCTION_END(status);
+    return status;
 }
 
 
-/**
- * @brief  Read HTS221 output register, and calculate the humidity
- * @param  pfData the pointer to data output
- * @retval HUM_TEMP_OK in case of success, an error code otherwise
- */
-HUM_TEMP_StatusTypeDef HTS221::HTS221_GetHumidity(float* pfData)
+int VL6180X::VL6180XReadID(uint8_t *rl_id)
 {
-  int16_t H_T_out, humidity_t;
-  uint8_t tempReg[2] = {0, 0};
-  uint8_t tmp = 0x00;
-  float H_rh;
-  
-  if(HTS221_IO_Read(&tmp, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  /* Output Data Rate selection */
-  tmp &= (HTS221_ODR_MASK);
-  
-  if(tmp == 0x00)
-  {
-    if(HTS221_IO_Read(&tmp, HTS221_CTRL_REG2_ADDR, 1) != HUM_TEMP_OK)
-    {
-      return HUM_TEMP_ERROR;
-    }
-    
-    /* Serial Interface Mode selection */
-    tmp &= ~(HTS221_ONE_SHOT_MASK);
-    tmp |= HTS221_ONE_SHOT_START;
-    
-    if(HTS221_IO_Write(&tmp, HTS221_CTRL_REG2_ADDR, 1) != HUM_TEMP_OK)
-    {
-      return HUM_TEMP_ERROR;
-    }
-    
-    do
-    {
-    
-      if(HTS221_IO_Read(&tmp, HTS221_STATUS_REG_ADDR, 1) != HUM_TEMP_OK)
-      {
-        return HUM_TEMP_ERROR;
-      }
-      
-    }
-    while(!(tmp & 0x02));
-  }
-  
-  
-  if(HTS221_IO_Read(&tempReg[0], (HTS221_HUMIDITY_OUT_L_ADDR | HTS221_I2C_MULTIPLEBYTE_CMD),
-                    2) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  H_T_out = ((((int16_t)tempReg[1]) << 8) + (int16_t)tempReg[0]);
-  
-  H_rh = ( float )(((( H_T_out - H0_T0_out ) * ( H1_rh - H0_rh )) / ( H1_T0_out - H0_T0_out )) + H0_rh );
-  
-  // Truncate to specific number of decimal digits
-  humidity_t = (uint16_t)(H_rh * pow(10.0f, HUM_DECIMAL_DIGITS));
-  *pfData = ((float)humidity_t) / pow(10.0f, HUM_DECIMAL_DIGITS);
-  
-  // Prevent data going below 0% and above 100% due to linear interpolation
-  if ( *pfData <   0.0f ) *pfData =   0.0f;
-  if ( *pfData > 100.0f ) *pfData = 100.0f;
-  
-  return HUM_TEMP_OK;
+	  if(!rl_id)
+	  {
+	  	 return API_ERROR;
+	  }
+	  return VL6180X_IO_Read(rl_id, IDENTIFICATION_MODEL_ID, 1);
 }
 
-/**
- * @brief  Read HTS221 output register, and calculate the temperature
- * @param  pfData the pointer to data output
- * @retval HUM_TEMP_OK in case of success, an error code otherwise
- */
-HUM_TEMP_StatusTypeDef HTS221::HTS221_GetTemperature(float* pfData)
+int VL6180X::VL6180X_IO_Read(uint8_t *pBuffer, uint8_t RegisterAddress, uint16 NumByteToRead)
 {
-  int16_t T_out, temperature_t;
-  uint8_t tempReg[2] = {0, 0};
-  uint8_t tmp = 0x00;
-  float T_degC;
-  
-  if(HTS221_IO_Read(&tmp, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  /* Output Data Rate selection */
-  tmp &= (HTS221_ODR_MASK);
-  
-  if(tmp == 0x00)
-  {
-    if(HTS221_IO_Read(&tmp, HTS221_CTRL_REG2_ADDR, 1) != HUM_TEMP_OK)
-    {
-      return HUM_TEMP_ERROR;
-    }
-    
-    /* Serial Interface Mode selection */
-    tmp &= ~(HTS221_ONE_SHOT_MASK);
-    tmp |= HTS221_ONE_SHOT_START;
+    int lecture
     
-    if(HTS221_IO_Write(&tmp, HTS221_CTRL_REG2_ADDR, 1) != HUM_TEMP_OK)
-    {
-      return HUM_TEMP_ERROR;
-    }
-    
-    do
+    lecture=dev_i2c.i2c_read(pBuffer, DevAddress, RegisterAddress, NumByteToRead);
+    if(lecture!=0)
     {
-    
-      if(HTS221_IO_Read(&tmp, HTS221_STATUS_REG_ADDR, 1) != HUM_TEMP_OK)
-      {
-        return HUM_TEMP_ERROR;
-      }
-      
+    	  return API_ERROR;
     }
-    while(!(tmp & 0x01));
-  }
-  
-  if(HTS221_IO_Read(&tempReg[0], (HTS221_TEMP_OUT_L_ADDR | HTS221_I2C_MULTIPLEBYTE_CMD),
-                    2) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  T_out = ((((int16_t)tempReg[1]) << 8) + (int16_t)tempReg[0]);
-  
-  T_degC = ((float)(T_out - T0_out)) / (T1_out - T0_out) * (T1_degC - T0_degC) + T0_degC;
-  
-  temperature_t = (int16_t)(T_degC * pow(10.0f, TEMP_DECIMAL_DIGITS));
-  
-  *pfData = ((float)temperature_t) / pow(10.0f, TEMP_DECIMAL_DIGITS);
-  
-  return HUM_TEMP_OK;
+    return API_NO_ERROR;
 }
 
 
-/**
- * @brief  Exit the shutdown mode for HTS221
- * @retval HUM_TEMP_OK in case of success, an error code otherwise
- */
-HUM_TEMP_StatusTypeDef HTS221::HTS221_Power_On(void)
-{
-  uint8_t tmpReg;
-  
-  /* Read the register content */
-  if(HTS221_IO_Read(&tmpReg, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  /* Set the power down bit */
-  tmpReg |= HTS221_MODE_ACTIVE;
-  
-  /* Write register */
-  if(HTS221_IO_Write(&tmpReg, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  return HUM_TEMP_OK;
+
+
+
+
+
+static int _DMax_InitData(VL6180xDev_t dev){
+    int status, warning;
+    uint8_t u8;
+    uint16_t u16;
+    uint32_t u32;
+    uint32_t Reg2A_KCps;
+    uint32_t RegB8;
+    uint8_t  MaxConvTime;
+    uint32_t XTalkCompRate_KCps;
+    uint32_t RangeIgnoreThreshold;
+    int32_t minSignalNeeded;
+    uint8_t SysRangeCheckEn;
+    uint8_t snrLimit;
+    warning=0;
+
+    static const int ROMABLE_DATA MaxConvTimeAdjust=-4;
+
+    LOG_FUNCTION_START("");
+    do{
+        status = VL6180x_RdByte(dev, 0x02A ,&u8);
+        if( status ){
+            VL6180x_ErrLog("Reg 0x02A rd fail");
+            break;
+        }
+
+        if( u8 == 0 ) {
+            warning = CALIBRATION_WARNING;
+            u8 = 40; /* use a default average value */
+        }
+        Reg2A_KCps = Fix7_2_KCPs(u8); /* convert to KCPs */
+
+        status = VL6180x_RdByte(dev, SYSRANGE_RANGE_CHECK_ENABLES, &SysRangeCheckEn);
+        if (status) {
+            VL6180x_ErrLog("SYSRANGE_RANGE_CHECK_ENABLES rd fail ");
+            break;
+        }
+
+        status = VL6180x_RdByte(dev, SYSRANGE_MAX_CONVERGENCE_TIME, &MaxConvTime);
+        if( status){
+            VL6180x_ErrLog("SYSRANGE_MAX_CONVERGENCE_TIME rd fail ");
+            break;
+        }
+
+        status = VL6180x_RdDWord(dev, 0x0B8, &RegB8);
+        if( status ){
+            VL6180x_ErrLog("reg 0x0B8 rd fail ");
+            break;
+        }
+
+        status = VL6180x_RdByte(dev, SYSRANGE_MAX_AMBIENT_LEVEL_MULT, &snrLimit);
+        if( status){
+            VL6180x_ErrLog("SYSRANGE_MAX_AMBIENT_LEVEL_MULT rd fail ");
+            break;
+        }
+        _DMaxData(snrLimit_K) = (int32_t)16*1000/snrLimit;
+        XTalkCompRate_KCps =   VL6180xDevDataGet(dev, XTalkCompRate_KCps );
+
+        if( Reg2A_KCps >= XTalkCompRate_KCps){
+            _DMaxData(retSignalAt400mm)=( Reg2A_KCps - XTalkCompRate_KCps);
+        }
+        else{
+            _DMaxData(retSignalAt400mm)=0;             /* Reg2A_K - XTalkCompRate_KCp <0 is invalid */
+        }
+
+        /* if xtalk range check is off omit it in snr clipping */
+        if( SysRangeCheckEn&RANGE_CHECK_RANGE_ENABLE_MASK ){
+            status = VL6180x_RdWord(dev, SYSRANGE_RANGE_IGNORE_THRESHOLD, &u16);
+            if( status){
+                VL6180x_ErrLog("SYSRANGE_RANGE_IGNORE_THRESHOLD rd fail ");
+                break;
+            }
+            RangeIgnoreThreshold = Fix7_2_KCPs(u16);
+        }
+        else{
+            RangeIgnoreThreshold  = 0;
+        }
+
+        minSignalNeeded = (RegB8*256)/((int32_t)MaxConvTime+(int32_t)MaxConvTimeAdjust); /* KCps 8+8 bit -(1 to 6 bit) => 15-10 bit */
+        /* minSignalNeeded = max ( minSignalNeeded,  RangeIgnoreThreshold - XTalkCompRate_KCps) */
+        if( minSignalNeeded  <= RangeIgnoreThreshold - XTalkCompRate_KCps )
+            minSignalNeeded  =  RangeIgnoreThreshold - XTalkCompRate_KCps;
+
+        u32 = (minSignalNeeded*(uint32_t)snrLimit)/16;
+        _DMaxData(ClipSnrLimit ) = _DMax_RawValueAtRateKCps(dev, u32 ); /* clip to dmax to min signal snr limit rate*/
+    }
+    while(0);
+    if( !status )
+        status = warning;
+    LOG_FUNCTION_END(status);
+    return status;
 }
 
-/**
- * @brief  Enter the shutdown mode for HTS221
- * @retval HUM_TEMP_OK in case of success, an error code otherwise
- */
-HUM_TEMP_StatusTypeDef HTS221::HTS221_Power_OFF(void)
-{
-  uint8_t tmpReg;
-  
-  /* Read the register content */
-  if(HTS221_IO_Read(&tmpReg, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  /* Reset the power down bit */
-  tmpReg &= ~(HTS221_MODE_ACTIVE);
-  
-  /* Write register */
-  if(HTS221_IO_Write(&tmpReg, HTS221_CTRL_REG1_ADDR, 1) != HUM_TEMP_OK)
-  {
-    return HUM_TEMP_ERROR;
-  }
-  
-  return HUM_TEMP_OK;
-}
+#undef Fix7_2_KCPs
 
 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/Components/VL6180X/vl6180x_class.h	Thu Sep 10 08:40:54 2015 +0000
+++ b/Components/VL6180X/vl6180x_class.h	Fri Sep 11 14:39:00 2015 +0200
@@ -65,60 +65,33 @@
     
     /*** Interface Methods ***/
     virtual int Init(void *init_struct) {
-        return VL6180X_Init();
-    }
-
-    virtual int ReadID(uint8_t *ht_id) {
-        return VL6180X_ReadID(ht_id);
+        return VL6180x_InitData(VL6180xDev_t dev);
     }
-
-    /**
-     * @brief       Reset sensor
-     * @return      0 in case of success, an error code otherwise
-     */
-    virtual int Reset(void) {
-        return VL6180X_RebootCmd();
+    
+    virtual int ReadID(uint8_t *rl_id) {
+        return VL6180X_ReadID(rl_id);
     }
-
-    virtual int GetRange(float *pfData) {
-        return VL6180X_GetRange(pfData);
-    }
-
-    virtual int GetLight(float *pfData) {
-        return VL6180X_GetLight(pfData);
+    /*
+    virtual int GetRange(int *piData) {
+        return VL6180X_GetRange(piData);
     }
 
- protected:
-    /*** Methods ***/
-    RANGE_LIGHT_StatusTypeDef VL6180X_Init(RANGE_LIGHT_InitTypeDef *VL6180X_Init);
-    RANGE_LIGHT_StatusTypeDef VL6180X_ReadID(uint8_t *ht_id);
-    RANGE_LIGHT_StatusTypeDef VL6180X_SetID(uint8_t *ht_id);
-    RANGE_LIGHT_StatusTypeDef VL6180X_RebootCmd(void);
-    RANGE_LIGHT_StatusTypeDef VL6180X_GetRange(float* pfData);
-    RANGE_LIGHT_StatusTypeDef VL6180X_GetLight(float* pfData);
+    virtual int GetLight(int *piData) {
+        return VL6180X_GetLight(piData);
+    }
+    */
 
-    /**
-     * @brief  Configures VL6180X interrupt lines for NUCLEO boards
-     */
-    void VL6180X_IO_ITConfig(void)
-    {
-        /* To be implemented */
-    }
-
-    /**
-     * @brief  Configures VL6180X I2C interface
-     * @return RANGE_LIGHT_OK in case of success, an error code otherwise
-     */
-    RANGE_LIGHT_StatusTypeDef VL6180X_IO_Init(void)
-    {
-        return RANGE_LIGHT_OK; /* done in constructor */
-    }
-
+private:
+    /*** Methods ***/
+    int VL6180X_IO_Read(uint8_t *pBuffer, uint8_t RegisterAddress, uint16 NumByteToRead);
+    
+    
     
     /*** Instance Variables ***/
     /* IO Device */
+    
     DevI2C &dev_i2c;
-
+    
     
 };