Now you can use NC as InterruptIn

Dependencies:   X_NUCLEO_COMMON

Fork of X_NUCLEO_6180XA1 by ST

Committer:
gallonm
Date:
Tue Oct 06 09:03:10 2015 +0200
Revision:
10:4954b09b72d8
Parent:
9:9cbc1736f148
Child:
11:88541229403e
Fitted all api files (reinserted original api files)
Modified file platform.h and removed vl6180x_appcfg.h from the include
Modified value of the define SINGLE_DEVICE_DRIVER
Updated file stmpe1600_class.h
Fitted the ReadID function and I2C functions (read and write)
Updated file vl6180x_class.cpp
Introduced functions InitSensor and StartMeasurement
Fitted the constructor and the destructor of x_nucleo_6180xa1
Added the instance to create a singleton object
Introduced InitBoard function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gallonm 1:1de1ea2994d9 1 /**
gallonm 1:1de1ea2994d9 2 ******************************************************************************
gallonm 1:1de1ea2994d9 3 * @file vl6180x_class.h
gallonm 1:1de1ea2994d9 4 * @author AST / EST
gallonm 1:1de1ea2994d9 5 * @version V0.0.1
gallonm 1:1de1ea2994d9 6 * @date 14-April-2015
gallonm 1:1de1ea2994d9 7 * @brief Header file for component VL6180X
gallonm 1:1de1ea2994d9 8 ******************************************************************************
gallonm 1:1de1ea2994d9 9 * @attention
gallonm 1:1de1ea2994d9 10 *
gallonm 1:1de1ea2994d9 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
gallonm 1:1de1ea2994d9 12 *
gallonm 1:1de1ea2994d9 13 * Redistribution and use in source and binary forms, with or without modification,
gallonm 1:1de1ea2994d9 14 * are permitted provided that the following conditions are met:
gallonm 1:1de1ea2994d9 15 * 1. Redistributions of source code must retain the above copyright notice,
gallonm 1:1de1ea2994d9 16 * this list of conditions and the following disclaimer.
gallonm 1:1de1ea2994d9 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
gallonm 1:1de1ea2994d9 18 * this list of conditions and the following disclaimer in the documentation
gallonm 1:1de1ea2994d9 19 * and/or other materials provided with the distribution.
gallonm 1:1de1ea2994d9 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
gallonm 1:1de1ea2994d9 21 * may be used to endorse or promote products derived from this software
gallonm 1:1de1ea2994d9 22 * without specific prior written permission.
gallonm 1:1de1ea2994d9 23 *
gallonm 1:1de1ea2994d9 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
gallonm 1:1de1ea2994d9 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
gallonm 1:1de1ea2994d9 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
gallonm 1:1de1ea2994d9 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
gallonm 1:1de1ea2994d9 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
gallonm 1:1de1ea2994d9 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
gallonm 1:1de1ea2994d9 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
gallonm 1:1de1ea2994d9 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
gallonm 1:1de1ea2994d9 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
gallonm 1:1de1ea2994d9 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gallonm 1:1de1ea2994d9 34 *
gallonm 1:1de1ea2994d9 35 ******************************************************************************
gallonm 1:1de1ea2994d9 36 */
gallonm 1:1de1ea2994d9 37
gallonm 1:1de1ea2994d9 38 #ifndef __VL6180X_CLASS_H
gallonm 1:1de1ea2994d9 39 #define __VL6180X_CLASS_H
gallonm 1:1de1ea2994d9 40
gallonm 1:1de1ea2994d9 41 /* Includes ------------------------------------------------------------------*/
gallonm 1:1de1ea2994d9 42 #include "RangeSensor.h"
gallonm 1:1de1ea2994d9 43 #include "LightSensor.h"
gallonm 10:4954b09b72d8 44 #include "DevI2C.h"
gallonm 10:4954b09b72d8 45 #include "vl6180x_api.h"
gallonm 10:4954b09b72d8 46 #include "vl6180x_cfg.h"
gallonm 10:4954b09b72d8 47 #include "vl6180x_def.h"
gallonm 10:4954b09b72d8 48 #include "vl6180x_types.h"
gallonm 1:1de1ea2994d9 49 #include "vl6180x_platform.h"
licio.mapelli@st.com 8:f943a1fca15f 50 //#include "vl6180x_appcfg.h"
gallonm 7:2dc81120c917 51 #include "STMPE1600_class.h"
gallonm 1:1de1ea2994d9 52
gallonm 4:a5abf7757947 53 /** default device address */
gallonm 4:a5abf7757947 54 #define DEFAULT_DEVICE_ADDRESS 0x29
gallonm 4:a5abf7757947 55
gallonm 1:1de1ea2994d9 56 /* Classes -------------------------------------------------------------------*/
gallonm 1:1de1ea2994d9 57 /** Class representing a VL6180X sensor component
gallonm 1:1de1ea2994d9 58 */
gallonm 10:4954b09b72d8 59 //FIXME verficare se impostare le funzioni come virtual come nel caso IKS
gallonm 7:2dc81120c917 60 class VL6180X : public RangeSensor, public LightSensor
gallonm 7:2dc81120c917 61 {
gallonm 1:1de1ea2994d9 62 public:
gallonm 1:1de1ea2994d9 63 /** Constructor
gallonm 1:1de1ea2994d9 64 * @param[in] i2c device I2C to be used for communication
gallonm 7:2dc81120c917 65 * @param[in] digital out pin/STMPE1600DigiOut pin to be used for GPIO expander communication
gallonm 4:a5abf7757947 66 * @param[in] device address, 0x29 by default
gallonm 7:2dc81120c917 67 * @param[in] device id, 0 by default
gallonm 1:1de1ea2994d9 68 */
gallonm 10:4954b09b72d8 69 VL6180X(DevI2C &i2c, DigitalOut &pin, /*PinName pin_gpio1,*/ uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c), gpio0(&pin)
gallonm 7:2dc81120c917 70 {
gallonm 10:4954b09b72d8 71 MyDevice.I2cAddr=DevAddr;
gallonm 10:4954b09b72d8 72 MyDevice.Present=0;
gallonm 10:4954b09b72d8 73 MyDevice.Ready=0;
gallonm 10:4954b09b72d8 74 Device=&MyDevice;;
gallonm 10:4954b09b72d8 75 expgpio0=NULL;
gallonm 10:4954b09b72d8 76 //free_fall=new InterruptIn(pin_gpio1);
gallonm 7:2dc81120c917 77 }
gallonm 10:4954b09b72d8 78
gallonm 10:4954b09b72d8 79 VL6180X(DevI2C &i2c, STMPE1600DigiOut &pin, /*PinName pin_gpio1,*/ uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c), expgpio0(&pin)
gallonm 7:2dc81120c917 80 {
gallonm 10:4954b09b72d8 81 MyDevice.I2cAddr=DevAddr;
gallonm 10:4954b09b72d8 82 MyDevice.Present=0;
gallonm 10:4954b09b72d8 83 MyDevice.Ready=0;
gallonm 10:4954b09b72d8 84 Device=&MyDevice;
gallonm 10:4954b09b72d8 85 gpio0=NULL;
gallonm 10:4954b09b72d8 86 //free_fall=new InterruptIn(pin_gpio1);
gallonm 7:2dc81120c917 87 }
gallonm 7:2dc81120c917 88
gallonm 4:a5abf7757947 89
gallonm 7:2dc81120c917 90 /** Destructor
gallonm 7:2dc81120c917 91 */
gallonm 7:2dc81120c917 92 //~VL6180X(){}
gallonm 7:2dc81120c917 93
gallonm 7:2dc81120c917 94
gallonm 7:2dc81120c917 95 void VL6180x_On(void) {
gallonm 7:2dc81120c917 96 if (gpio0) *gpio0=1;
gallonm 7:2dc81120c917 97 else if (expgpio0) *expgpio0=1;
gallonm 7:2dc81120c917 98 }
gallonm 7:2dc81120c917 99
gallonm 7:2dc81120c917 100 void VL6180x_Off(void) {
gallonm 7:2dc81120c917 101 if (gpio0) *gpio0=0;
gallonm 7:2dc81120c917 102 else if (expgpio0) *expgpio0=0;
gallonm 7:2dc81120c917 103 }
gallonm 10:4954b09b72d8 104
gallonm 10:4954b09b72d8 105 int InitSensor(uint8_t NewAddr)
gallonm 10:4954b09b72d8 106 {
gallonm 10:4954b09b72d8 107 int status;
gallonm 10:4954b09b72d8 108
gallonm 10:4954b09b72d8 109 VL6180x_Off();
gallonm 10:4954b09b72d8 110 VL6180x_On();
gallonm 10:4954b09b72d8 111 status=IsPresent();
gallonm 10:4954b09b72d8 112 if(!status)
gallonm 10:4954b09b72d8 113 {
gallonm 10:4954b09b72d8 114 Device->Present=1;
gallonm 10:4954b09b72d8 115 status=Init();
gallonm 10:4954b09b72d8 116 if(status)
gallonm 10:4954b09b72d8 117 error("Failed to init VL6180X sensor!\n");
gallonm 10:4954b09b72d8 118 status=Prepare();
gallonm 10:4954b09b72d8 119 if(status)
gallonm 10:4954b09b72d8 120 error("Failed to prepare VL6180X!\n");
gallonm 10:4954b09b72d8 121 status=SetI2CAddress(NewAddr);
gallonm 10:4954b09b72d8 122 if(status)
gallonm 10:4954b09b72d8 123 error("Failed to change I2C address!\n");
gallonm 10:4954b09b72d8 124 Device->Ready=1;
gallonm 10:4954b09b72d8 125 }
gallonm 10:4954b09b72d8 126 return status;
gallonm 10:4954b09b72d8 127 }
gallonm 10:4954b09b72d8 128
gallonm 10:4954b09b72d8 129 int Init()
gallonm 4:a5abf7757947 130 {
gallonm 10:4954b09b72d8 131 return VL6180x_InitData(Device); // ritorna 0 se corretto
gallonm 1:1de1ea2994d9 132 }
gallonm 10:4954b09b72d8 133
gallonm 10:4954b09b72d8 134 int IsPresent()
gallonm 10:4954b09b72d8 135 {
gallonm 10:4954b09b72d8 136 int status;
gallonm 10:4954b09b72d8 137
gallonm 10:4954b09b72d8 138 status=ReadID();
gallonm 10:4954b09b72d8 139 if(!status)
gallonm 10:4954b09b72d8 140 error("Failed to read ID device! Device not present!\n");
gallonm 10:4954b09b72d8 141 return status;
gallonm 10:4954b09b72d8 142 }
gallonm 10:4954b09b72d8 143
gallonm 7:2dc81120c917 144 void SetPresent()
gallonm 7:2dc81120c917 145 {
gallonm 10:4954b09b72d8 146 Device->Present=1;
gallonm 7:2dc81120c917 147 }
gallonm 7:2dc81120c917 148
gallonm 7:2dc81120c917 149 void SetReady()
gallonm 7:2dc81120c917 150 {
gallonm 10:4954b09b72d8 151 Device->Ready=1;
gallonm 10:4954b09b72d8 152 }
gallonm 10:4954b09b72d8 153
gallonm 10:4954b09b72d8 154 int Prepare()
gallonm 10:4954b09b72d8 155 {
gallonm 10:4954b09b72d8 156 return VL6180x_Prepare(Device);
gallonm 10:4954b09b72d8 157 }
gallonm 10:4954b09b72d8 158
gallonm 10:4954b09b72d8 159 int SetI2CAddress(int NewAddr)
gallonm 10:4954b09b72d8 160 {
gallonm 10:4954b09b72d8 161 int status;
gallonm 10:4954b09b72d8 162
gallonm 10:4954b09b72d8 163 status=VL6180x_SetI2CAddress(Device, NewAddr);
gallonm 10:4954b09b72d8 164 if(!status)
gallonm 10:4954b09b72d8 165 Device->I2cAddr;
gallonm 10:4954b09b72d8 166 return status;
gallonm 10:4954b09b72d8 167 }
gallonm 10:4954b09b72d8 168
gallonm 10:4954b09b72d8 169 int StartMeasurement(int operating_mode)
gallonm 10:4954b09b72d8 170 {
gallonm 10:4954b09b72d8 171 int status;
gallonm 10:4954b09b72d8 172
gallonm 10:4954b09b72d8 173 switch(operating_mode)
gallonm 10:4954b09b72d8 174 {
gallonm 10:4954b09b72d8 175 case(1):
gallonm 10:4954b09b72d8 176 return VL6180x_RangePollMeasurement(Device, &RangeData);
gallonm 10:4954b09b72d8 177 case(2):
gallonm 10:4954b09b72d8 178 return VL6180x_AlsPollMeasurement(Device, &AlsData);
gallonm 10:4954b09b72d8 179 case(3): break;
gallonm 10:4954b09b72d8 180 case(4): break;
gallonm 10:4954b09b72d8 181 case(5): break;
gallonm 10:4954b09b72d8 182 case(6): break;
gallonm 10:4954b09b72d8 183 case(7): break;
gallonm 10:4954b09b72d8 184 default:
gallonm 10:4954b09b72d8 185 return INVALID_PARAMS;
gallonm 10:4954b09b72d8 186 }
gallonm 10:4954b09b72d8 187 }
gallonm 10:4954b09b72d8 188 /*
gallonm 10:4954b09b72d8 189 int GetRange(int *piData) {
gallonm 10:4954b09b72d8 190 return VL6180X_RangeGetMeasurement(piData);
gallonm 1:1de1ea2994d9 191 }
gallonm 1:1de1ea2994d9 192
gallonm 10:4954b09b72d8 193 int GetLight(int *piData) {
gallonm 10:4954b09b72d8 194 return VL6180X_AlsGetMeasurement(piData);
gallonm 10:4954b09b72d8 195 }*/
gallonm 10:4954b09b72d8 196
gallonm 10:4954b09b72d8 197 int RangePollMeasurement()
gallonm 10:4954b09b72d8 198 {
gallonm 10:4954b09b72d8 199 return VL6180x_RangePollMeasurement(Device, &RangeData);
gallonm 10:4954b09b72d8 200 }
gallonm 10:4954b09b72d8 201
gallonm 10:4954b09b72d8 202 int AlsPollMeasurement()
gallonm 10:4954b09b72d8 203 {
gallonm 10:4954b09b72d8 204 return VL6180x_AlsPollMeasurement(Device, &AlsData);
gallonm 10:4954b09b72d8 205 }
gallonm 10:4954b09b72d8 206
gallonm 10:4954b09b72d8 207
gallonm 7:2dc81120c917 208 /* api.c functions */
gallonm 7:2dc81120c917 209 int VL6180x_WaitDeviceBooted(VL6180xDev_t dev);
gallonm 7:2dc81120c917 210 int VL6180x_InitData(VL6180xDev_t dev );
gallonm 7:2dc81120c917 211 int VL6180x_SetupGPIO1(VL6180xDev_t dev, uint8_t IntFunction, int ActiveHigh);
gallonm 7:2dc81120c917 212 int VL6180x_Prepare(VL6180xDev_t dev);
gallonm 7:2dc81120c917 213 int VL6180x_RangeStartContinuousMode(VL6180xDev_t dev);
gallonm 7:2dc81120c917 214 int VL6180x_RangeStartSingleShot(VL6180xDev_t dev);
gallonm 7:2dc81120c917 215 int VL6180x_RangeSetMaxConvergenceTime(VL6180xDev_t dev, uint8_t MaxConTime_msec);
gallonm 7:2dc81120c917 216 int VL6180x_RangePollMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 7:2dc81120c917 217 int VL6180x_RangeGetMeasurementIfReady(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 7:2dc81120c917 218 int VL6180x_RangeGetMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 7:2dc81120c917 219 int VL6180x_RangeGetResult(VL6180xDev_t dev, int32_t *pRange_mm);
gallonm 7:2dc81120c917 220 int VL6180x_RangeConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt);
gallonm 7:2dc81120c917 221 int VL6180x_RangeGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus);
gallonm 7:2dc81120c917 222 int VL6180x_AlsPollMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData);
gallonm 7:2dc81120c917 223 int VL6180x_AlsGetMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData);
gallonm 7:2dc81120c917 224 int VL6180x_AlsConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt);
gallonm 7:2dc81120c917 225 int VL6180x_AlsSetIntegrationPeriod(VL6180xDev_t dev, uint16_t period_ms);
gallonm 7:2dc81120c917 226 int VL6180x_AlsSetInterMeasurementPeriod(VL6180xDev_t dev, uint16_t intermeasurement_period_ms);
gallonm 7:2dc81120c917 227 int VL6180x_AlsSetAnalogueGain(VL6180xDev_t dev, uint8_t gain);
gallonm 7:2dc81120c917 228 int VL6180x_AlsSetThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high);
gallonm 7:2dc81120c917 229 int VL6180x_AlsGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus);
gallonm 7:2dc81120c917 230 int VL6180x_StaticInit(VL6180xDev_t dev);
gallonm 7:2dc81120c917 231 int VL6180x_RangeWaitDeviceReady(VL6180xDev_t dev, int MaxLoop );
gallonm 7:2dc81120c917 232 int VL6180x_RangeSetInterMeasPeriod(VL6180xDev_t dev, uint32_t InterMeasTime_msec);
gallonm 7:2dc81120c917 233 int VL6180x_UpscaleSetScaling(VL6180xDev_t dev, uint8_t scaling);
gallonm 7:2dc81120c917 234 int VL6180x_UpscaleGetScaling(VL6180xDev_t dev);
gallonm 7:2dc81120c917 235 uint16_t VL6180x_GetUpperLimit(VL6180xDev_t dev);
gallonm 7:2dc81120c917 236 int VL6180x_RangeSetThresholds(VL6180xDev_t dev, uint16_t low, uint16_t high, int SafeHold);
gallonm 7:2dc81120c917 237 int VL6180x_RangeGetThresholds(VL6180xDev_t dev, uint16_t *low, uint16_t *high);
gallonm 7:2dc81120c917 238 int VL6180x_RangeSetRawThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high);
gallonm 7:2dc81120c917 239 int VL6180x_RangeSetEceFactor(VL6180xDev_t dev, uint16_t FactorM, uint16_t FactorD);
gallonm 7:2dc81120c917 240 int VL6180x_RangeSetEceState(VL6180xDev_t dev, int enable );
gallonm 7:2dc81120c917 241 int VL6180x_FilterSetState(VL6180xDev_t dev, int state);
gallonm 7:2dc81120c917 242 int VL6180x_FilterGetState(VL6180xDev_t dev);
gallonm 7:2dc81120c917 243 int VL6180x_DMaxSetState(VL6180xDev_t dev, int state);
gallonm 7:2dc81120c917 244 int VL6180x_DMaxGetState(VL6180xDev_t dev);
gallonm 7:2dc81120c917 245 int VL6180x_RangeSetSystemMode(VL6180xDev_t dev, uint8_t mode);
gallonm 7:2dc81120c917 246 int8_t VL6180x_GetOffsetCalibrationData(VL6180xDev_t dev);
gallonm 7:2dc81120c917 247 void VL6180x_SetOffsetCalibrationData(VL6180xDev_t dev, int8_t offset);
gallonm 7:2dc81120c917 248 int VL6180x_SetXTalkCompensationRate(VL6180xDev_t dev, FixPoint97_t Rate);
gallonm 7:2dc81120c917 249 int VL6180x_AlsWaitDeviceReady(VL6180xDev_t dev, int MaxLoop );
gallonm 7:2dc81120c917 250 int VL6180x_AlsSetSystemMode(VL6180xDev_t dev, uint8_t mode);
gallonm 7:2dc81120c917 251 int VL6180x_SetGroupParamHold(VL6180xDev_t dev, int Hold);
gallonm 7:2dc81120c917 252 int VL6180x_SetI2CAddress(VL6180xDev_t dev, uint8_t NewAddr);
gallonm 7:2dc81120c917 253 int VL6180x_SetupGPIOx(VL6180xDev_t dev, int pin, uint8_t IntFunction, int ActiveHigh);
gallonm 7:2dc81120c917 254 int VL6180x_SetGPIOxPolarity(VL6180xDev_t dev, int pin, int active_high);
gallonm 7:2dc81120c917 255 int VL6180x_SetGPIOxFunctionality(VL6180xDev_t dev, int pin, uint8_t functionality);
gallonm 7:2dc81120c917 256 int VL6180x_DisableGPIOxOut(VL6180xDev_t dev, int pin);
gallonm 7:2dc81120c917 257 int VL6180x_GetInterruptStatus(VL6180xDev_t dev, uint8_t *status);
gallonm 7:2dc81120c917 258 int VL6180x_ClearInterrupt(VL6180xDev_t dev, uint8_t IntClear );
gallonm 7:2dc81120c917 259 int VL6180x_RangeStaticInit(VL6180xDev_t dev);
gallonm 7:2dc81120c917 260 int VL6180x_UpscaleRegInit(VL6180xDev_t dev);
gallonm 7:2dc81120c917 261 int VL6180x_UpscaleStaticInit(VL6180xDev_t dev);
gallonm 7:2dc81120c917 262 int VL6180x_AlsGetLux(VL6180xDev_t dev, lux_t *pLux);
gallonm 7:2dc81120c917 263 int _UpscaleInitPatch0(VL6180xDev_t dev);
gallonm 7:2dc81120c917 264 int VL6180x_RangeGetDeviceReady(VL6180xDev_t dev, int * Ready);
gallonm 7:2dc81120c917 265 int VL6180x_RangeSetEarlyConvergenceEestimateThreshold(VL6180xDev_t dev);
gallonm 7:2dc81120c917 266 int32_t _GetAveTotalTime(VL6180xDev_t dev);
gallonm 7:2dc81120c917 267 int32_t _filter_Start(VL6180xDev_t dev, uint16_t m_trueRange_mm, uint16_t m_rawRange_mm, uint32_t m_rtnSignalRate, uint32_t m_rtnAmbientRate, uint16_t errorCode);
gallonm 7:2dc81120c917 268 int _filter_GetResult(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 7:2dc81120c917 269 int _GetRateResult(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 7:2dc81120c917 270 int _DMax_InitData(VL6180xDev_t dev);
gallonm 7:2dc81120c917 271
gallonm 10:4954b09b72d8 272 /* Read function of the ID device */
gallonm 10:4954b09b72d8 273 int ReadID();
gallonm 4:a5abf7757947 274
gallonm 4:a5abf7757947 275 /* Write and read functions from I2C */
gallonm 4:a5abf7757947 276 int VL6180x_WrByte(VL6180xDev_t dev, uint16_t index, uint8_t data);
gallonm 4:a5abf7757947 277 int VL6180x_WrWord(VL6180xDev_t dev, uint16_t index, uint16_t data);
gallonm 4:a5abf7757947 278 int VL6180x_WrDWord(VL6180xDev_t dev, uint16_t index, uint32_t data);
gallonm 4:a5abf7757947 279 int VL6180x_RdByte(VL6180xDev_t dev, uint16_t index, uint8_t *data);
gallonm 4:a5abf7757947 280 int VL6180x_RdWord(VL6180xDev_t dev, uint16_t index, uint16_t *data);
gallonm 4:a5abf7757947 281 int VL6180x_RdDWord(VL6180xDev_t dev, uint16_t index, uint32_t *data);
gallonm 7:2dc81120c917 282 int VL6180x_UpdateByte(VL6180xDev_t dev, uint16_t index, uint8_t AndData, uint8_t OrData);
gallonm 4:a5abf7757947 283 int VL6180x_I2CWrite(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToWrite);
gallonm 4:a5abf7757947 284 int VL6180x_I2CRead(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToRead);
licio.mapelli@st.com 9:9cbc1736f148 285
gallonm 10:4954b09b72d8 286
gallonm 4:a5abf7757947 287
gallonm 3:454541a079f4 288 private:
gallonm 1:1de1ea2994d9 289 /* IO Device */
gallonm 7:2dc81120c917 290 DevI2C &dev_i2c;
gallonm 10:4954b09b72d8 291 /* Digital out pin */
gallonm 7:2dc81120c917 292 DigitalOut *gpio0;
gallonm 10:4954b09b72d8 293 /* GPIO expander */
gallonm 10:4954b09b72d8 294 STMPE1600DigiOut *expgpio0;
gallonm 10:4954b09b72d8 295 /* Input interrupt */
gallonm 10:4954b09b72d8 296 //InterruptIn *free_fall;
gallonm 10:4954b09b72d8 297 /* Device data */
gallonm 10:4954b09b72d8 298 MyVL6180Dev_t MyDevice;
gallonm 10:4954b09b72d8 299 VL6180xDev_t Device;
gallonm 10:4954b09b72d8 300 /* Device range data */
gallonm 10:4954b09b72d8 301 VL6180x_RangeData_t RangeData;
gallonm 10:4954b09b72d8 302 /* Device als data */
gallonm 10:4954b09b72d8 303 VL6180x_AlsData_t AlsData;
gallonm 1:1de1ea2994d9 304 };
gallonm 1:1de1ea2994d9 305
gallonm 4:a5abf7757947 306 #endif // __VL6180X_CLASS_H