INSAT Mini Project

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Fork of X_NUCLEO_6180XA1 by ST

Committer:
gallonm
Date:
Fri Sep 25 12:12:51 2015 +0200
Revision:
7:2dc81120c917
Parent:
1:1de1ea2994d9
Child:
8:f943a1fca15f
update files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gallonm 1:1de1ea2994d9 1 /*******************************************************************************
gallonm 1:1de1ea2994d9 2 Copyright © 2014, STMicroelectronics International N.V.
gallonm 1:1de1ea2994d9 3 All rights reserved.
gallonm 1:1de1ea2994d9 4
gallonm 1:1de1ea2994d9 5 Redistribution and use in source and binary forms, with or without
gallonm 1:1de1ea2994d9 6 modification, are permitted provided that the following conditions are met:
gallonm 1:1de1ea2994d9 7 * Redistributions of source code must retain the above copyright
gallonm 1:1de1ea2994d9 8 notice, this list of conditions and the following disclaimer.
gallonm 1:1de1ea2994d9 9 * Redistributions in binary form must reproduce the above copyright
gallonm 1:1de1ea2994d9 10 notice, this list of conditions and the following disclaimer in the
gallonm 1:1de1ea2994d9 11 documentation and/or other materials provided with the distribution.
gallonm 1:1de1ea2994d9 12 * Neither the name of STMicroelectronics nor the
gallonm 1:1de1ea2994d9 13 names of its contributors may be used to endorse or promote products
gallonm 1:1de1ea2994d9 14 derived from this software without specific prior written permission.
gallonm 1:1de1ea2994d9 15
gallonm 1:1de1ea2994d9 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
gallonm 1:1de1ea2994d9 17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
gallonm 1:1de1ea2994d9 18 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
gallonm 1:1de1ea2994d9 19 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
gallonm 1:1de1ea2994d9 20 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
gallonm 1:1de1ea2994d9 21 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
gallonm 1:1de1ea2994d9 22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
gallonm 1:1de1ea2994d9 23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
gallonm 1:1de1ea2994d9 24 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
gallonm 1:1de1ea2994d9 25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
gallonm 1:1de1ea2994d9 26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gallonm 1:1de1ea2994d9 27 ********************************************************************************/
gallonm 1:1de1ea2994d9 28 /*
gallonm 1:1de1ea2994d9 29 * @file VL6180x_api.h
gallonm 1:1de1ea2994d9 30 * $Date: 2015-03-24 14:15:14 +0100 (Tue, 24 Mar 2015) $
gallonm 1:1de1ea2994d9 31 * $Revision: 2213 $
gallonm 1:1de1ea2994d9 32 */
gallonm 1:1de1ea2994d9 33
gallonm 1:1de1ea2994d9 34
gallonm 1:1de1ea2994d9 35
gallonm 1:1de1ea2994d9 36 #ifndef VL6180x_API_H_
gallonm 1:1de1ea2994d9 37 #define VL6180x_API_H_
gallonm 1:1de1ea2994d9 38
gallonm 1:1de1ea2994d9 39 #include "vl6180x_def.h"
gallonm 1:1de1ea2994d9 40 #include "vl6180x_platform.h"
gallonm 1:1de1ea2994d9 41
gallonm 1:1de1ea2994d9 42 #ifdef __cplusplus
gallonm 1:1de1ea2994d9 43 extern "C" {
gallonm 1:1de1ea2994d9 44 #endif
gallonm 1:1de1ea2994d9 45
gallonm 1:1de1ea2994d9 46 /** @defgroup api_ll API Low Level Functions
gallonm 1:1de1ea2994d9 47 * @brief API Low level functions
gallonm 1:1de1ea2994d9 48 */
gallonm 1:1de1ea2994d9 49
gallonm 1:1de1ea2994d9 50 /** @defgroup api_hl API High Level Functions
gallonm 1:1de1ea2994d9 51 * @brief API High level functions
gallonm 1:1de1ea2994d9 52 */
gallonm 1:1de1ea2994d9 53
gallonm 1:1de1ea2994d9 54
gallonm 1:1de1ea2994d9 55 /*
gallonm 1:1de1ea2994d9 56 * Check and set default platform dependent configuration
gallonm 1:1de1ea2994d9 57 */
gallonm 1:1de1ea2994d9 58 #ifndef VL6180x_SINGLE_DEVICE_DRIVER
gallonm 1:1de1ea2994d9 59 #error "VL6180x_SINGLE_DEVICE_DRIVER not defined"
gallonm 1:1de1ea2994d9 60 /* TODO you may remove or comment these #error but it is best you update your vl6180x_platform.h file to define it*/
gallonm 1:1de1ea2994d9 61 #endif
gallonm 1:1de1ea2994d9 62
gallonm 1:1de1ea2994d9 63
gallonm 1:1de1ea2994d9 64 #ifndef VL6180x_RANGE_STATUS_ERRSTRING
gallonm 1:1de1ea2994d9 65 #warning "VL6180x_RANGE_STATUS_ERRSTRING not defined ?"
gallonm 1:1de1ea2994d9 66 /* TODO you may remove or comment these #warning and keep the default below to keep compatibility
gallonm 1:1de1ea2994d9 67 or update your vl6180x_platform.h file */
gallonm 1:1de1ea2994d9 68 /**
gallonm 1:1de1ea2994d9 69 * force VL6180x_RANGE_STATUS_ERRSTRING to not supported when not part of any cfg file
gallonm 1:1de1ea2994d9 70 */
gallonm 1:1de1ea2994d9 71 #define VL6180x_RANGE_STATUS_ERRSTRING 0
gallonm 1:1de1ea2994d9 72 #endif
gallonm 1:1de1ea2994d9 73
gallonm 1:1de1ea2994d9 74 #ifndef VL6180X_SAFE_POLLING_ENTER
gallonm 1:1de1ea2994d9 75 #warning "VL6180X_SAFE_POLLING_ENTER not defined, likely old vl6180x_cfg.h file ?"
gallonm 1:1de1ea2994d9 76 /* TODO you may remove or comment these #warning and keep the default below to keep compatibility
gallonm 1:1de1ea2994d9 77 or update your vl6180x_platform.h file */
gallonm 1:1de1ea2994d9 78 /**
gallonm 1:1de1ea2994d9 79 * force VL6180X_SAFE_POLLING_ENTER to off when not in cfg file
gallonm 1:1de1ea2994d9 80 */
gallonm 1:1de1ea2994d9 81 #define VL6180X_SAFE_POLLING_ENTER 0 /* off by default as in api 2.0 */
gallonm 1:1de1ea2994d9 82 #endif
gallonm 1:1de1ea2994d9 83
gallonm 1:1de1ea2994d9 84 #ifndef VL6180X_LOG_ENABLE
gallonm 1:1de1ea2994d9 85 /**
gallonm 1:1de1ea2994d9 86 * Force VL6180X_LOG_ENABLE to none as default
gallonm 1:1de1ea2994d9 87 */
gallonm 1:1de1ea2994d9 88 #define VL6180X_LOG_ENABLE 0
gallonm 1:1de1ea2994d9 89 #endif
gallonm 1:1de1ea2994d9 90
gallonm 1:1de1ea2994d9 91 #if VL6180x_RANGE_STATUS_ERRSTRING
gallonm 1:1de1ea2994d9 92 /**@def VL6180x_HAVE_RANGE_STATUS_ERRSTRING
gallonm 1:1de1ea2994d9 93 * @brief is defined when @a #VL6180x_RANGE_STATUS_ERRSTRING is enable
gallonm 1:1de1ea2994d9 94 */
gallonm 1:1de1ea2994d9 95 #define VL6180x_HAVE_RANGE_STATUS_ERRSTRING
gallonm 1:1de1ea2994d9 96 #endif
gallonm 1:1de1ea2994d9 97
gallonm 1:1de1ea2994d9 98
gallonm 1:1de1ea2994d9 99 /** @brief Get API version as "hex integer" 0xMMnnss
gallonm 1:1de1ea2994d9 100 */
gallonm 1:1de1ea2994d9 101 #define VL6180x_ApiRevInt ((VL6180x_API_REV_MAJOR<<24)+(VL6180x_API_REV_MINOR<<16)+VL6180x_API_REV_SUB)
gallonm 1:1de1ea2994d9 102
gallonm 1:1de1ea2994d9 103 /** Get API version as string for exe "2.1.12" "
gallonm 1:1de1ea2994d9 104 */
gallonm 1:1de1ea2994d9 105 #define VL6180x_ApiRevStr VL6180X_STR(VL6180x_API_REV_MAJOR) "." VL6180X_STR(VL6180x_API_REV_MINOR) "." VL6180X_STR(VL6180x_API_REV_SUB)
gallonm 1:1de1ea2994d9 106
gallonm 1:1de1ea2994d9 107 /** @defgroup api_init Init functions
gallonm 1:1de1ea2994d9 108 * @brief API init functions
gallonm 1:1de1ea2994d9 109 * @ingroup api_hl
gallonm 1:1de1ea2994d9 110 * @{
gallonm 1:1de1ea2994d9 111 */
gallonm 1:1de1ea2994d9 112 /**
gallonm 1:1de1ea2994d9 113 * @brief Wait for device booted after chip enable (hardware standby)
gallonm 1:1de1ea2994d9 114 * @par Function Description
gallonm 1:1de1ea2994d9 115 * After Chip enable Application you can also simply wait at least 1ms to ensure device is ready
gallonm 1:1de1ea2994d9 116 * @warning After device chip enable (gpio0) de-asserted user must wait gpio1 to get asserted (hardware standby).
gallonm 1:1de1ea2994d9 117 * or wait at least 400usec prior to do any low level access or api call .
gallonm 1:1de1ea2994d9 118 *
gallonm 1:1de1ea2994d9 119 * This function implements polling for standby but you must ensure 400usec from chip enable passed\n
gallonm 1:1de1ea2994d9 120 * @warning if device get prepared @a VL6180x_Prepare() re-using these function can hold indefinitely\n
gallonm 1:1de1ea2994d9 121 *
gallonm 1:1de1ea2994d9 122 * @param dev The device
gallonm 1:1de1ea2994d9 123 * @return 0 on success
gallonm 1:1de1ea2994d9 124 */
gallonm 1:1de1ea2994d9 125 int VL6180x_WaitDeviceBooted(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 126
gallonm 1:1de1ea2994d9 127 /**
gallonm 1:1de1ea2994d9 128 *
gallonm 1:1de1ea2994d9 129 * @brief One time device initialization
gallonm 1:1de1ea2994d9 130 *
gallonm 1:1de1ea2994d9 131 * To be called once and only once after device is brought out of reset (Chip enable) and booted see @a VL6180x_WaitDeviceBooted()
gallonm 1:1de1ea2994d9 132 *
gallonm 1:1de1ea2994d9 133 * @par Function Description
gallonm 1:1de1ea2994d9 134 * When not used after a fresh device "power up" or reset, it may return @a #CALIBRATION_WARNING
gallonm 1:1de1ea2994d9 135 * meaning wrong calibration data may have been fetched from device that can result in ranging offset error\n
gallonm 1:1de1ea2994d9 136 * If application cannot execute device reset or need to run VL6180x_InitData multiple time
gallonm 1:1de1ea2994d9 137 * then it must ensure proper offset calibration saving and restore on its own
gallonm 1:1de1ea2994d9 138 * by using @a VL6180x_GetOffsetCalibrationData() on first power up and then @a VL6180x_SetOffsetCalibrationData() all all subsequent init
gallonm 1:1de1ea2994d9 139 *
gallonm 1:1de1ea2994d9 140 * @param dev The device
gallonm 1:1de1ea2994d9 141 * @return 0 on success, @a #CALIBRATION_WARNING if failed
gallonm 1:1de1ea2994d9 142 */
gallonm 1:1de1ea2994d9 143 int VL6180x_InitData(VL6180xDev_t dev );
gallonm 1:1de1ea2994d9 144
gallonm 1:1de1ea2994d9 145 /**
gallonm 1:1de1ea2994d9 146 * @brief Configure GPIO1 function and set polarity.
gallonm 1:1de1ea2994d9 147 * @par Function Description
gallonm 1:1de1ea2994d9 148 * To be used prior to arm single shot measure or start continuous mode.
gallonm 1:1de1ea2994d9 149 *
gallonm 1:1de1ea2994d9 150 * The function uses @a VL6180x_SetupGPIOx() for setting gpio 1.
gallonm 1:1de1ea2994d9 151 * @warning changing polarity can generate a spurious interrupt on pins.
gallonm 1:1de1ea2994d9 152 * It sets an interrupt flags condition that must be cleared to avoid polling hangs. \n
gallonm 1:1de1ea2994d9 153 * It is safe to run VL6180x_ClearAllInterrupt() just after.
gallonm 1:1de1ea2994d9 154 *
gallonm 1:1de1ea2994d9 155 * @param dev The device
gallonm 1:1de1ea2994d9 156 * @param IntFunction The interrupt functionality to use one of :\n
gallonm 1:1de1ea2994d9 157 * @a #GPIOx_SELECT_OFF \n
gallonm 1:1de1ea2994d9 158 * @a #GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT
gallonm 1:1de1ea2994d9 159 * @param ActiveHigh The interrupt line polarity see ::IntrPol_e
gallonm 1:1de1ea2994d9 160 * use @a #INTR_POL_LOW (falling edge) or @a #INTR_POL_HIGH (rising edge)
gallonm 1:1de1ea2994d9 161 * @return 0 on success
gallonm 1:1de1ea2994d9 162 */
gallonm 1:1de1ea2994d9 163 int VL6180x_SetupGPIO1(VL6180xDev_t dev, uint8_t IntFunction, int ActiveHigh);
gallonm 1:1de1ea2994d9 164
gallonm 1:1de1ea2994d9 165 /**
gallonm 1:1de1ea2994d9 166 * @brief Prepare device for operation
gallonm 1:1de1ea2994d9 167 * @par Function Description
gallonm 1:1de1ea2994d9 168 * Does static initialization and reprogram common default settings \n
gallonm 1:1de1ea2994d9 169 * Device is prepared for new measure, ready single shot ranging or ALS typical polling operation\n
gallonm 1:1de1ea2994d9 170 * After prepare user can : \n
gallonm 1:1de1ea2994d9 171 * @li Call other API function to set other settings\n
gallonm 1:1de1ea2994d9 172 * @li Configure the interrupt pins, etc... \n
gallonm 1:1de1ea2994d9 173 * @li Then start ranging or ALS operations in single shot or continuous mode
gallonm 1:1de1ea2994d9 174 *
gallonm 1:1de1ea2994d9 175 * @param dev The device
gallonm 1:1de1ea2994d9 176 * @return 0 on success
gallonm 1:1de1ea2994d9 177 */
gallonm 7:2dc81120c917 178 int VL6180x_Prepare(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 179
gallonm 1:1de1ea2994d9 180 /** @} */
gallonm 1:1de1ea2994d9 181
gallonm 1:1de1ea2994d9 182
gallonm 1:1de1ea2994d9 183 /** @defgroup api_hl_range Ranging functions
gallonm 1:1de1ea2994d9 184 * @brief Ranging functions
gallonm 1:1de1ea2994d9 185 * @ingroup api_hl
gallonm 1:1de1ea2994d9 186 * @{
gallonm 1:1de1ea2994d9 187 */
gallonm 1:1de1ea2994d9 188
gallonm 1:1de1ea2994d9 189 /**
gallonm 1:1de1ea2994d9 190 * @brief Start continuous ranging mode
gallonm 1:1de1ea2994d9 191 *
gallonm 1:1de1ea2994d9 192 * @details End user should ensure device is in idle state and not already running
gallonm 1:1de1ea2994d9 193 */
gallonm 1:1de1ea2994d9 194 int VL6180x_RangeStartContinuousMode(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 195
gallonm 1:1de1ea2994d9 196 /**
gallonm 1:1de1ea2994d9 197 * @brief Start single shot ranging measure
gallonm 1:1de1ea2994d9 198 *
gallonm 1:1de1ea2994d9 199 * @details End user should ensure device is in idle state and not already running
gallonm 1:1de1ea2994d9 200 */
gallonm 1:1de1ea2994d9 201 int VL6180x_RangeStartSingleShot(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 202
gallonm 1:1de1ea2994d9 203 /**
gallonm 1:1de1ea2994d9 204 * @brief Set maximum convergence time
gallonm 1:1de1ea2994d9 205 *
gallonm 1:1de1ea2994d9 206 * @par Function Description
gallonm 1:1de1ea2994d9 207 * Setting a low convergence time can impact maximal detectable distance.
gallonm 1:1de1ea2994d9 208 * Refer to VL6180x Datasheet Table 7 : Typical range convergence time.
gallonm 1:1de1ea2994d9 209 * A typical value for up to x3 scaling is 50 ms
gallonm 1:1de1ea2994d9 210 *
gallonm 1:1de1ea2994d9 211 * @param dev
gallonm 1:1de1ea2994d9 212 * @param MaxConTime_msec
gallonm 1:1de1ea2994d9 213 * @return 0 on success. <0 on error. >0 for calibration warning status
gallonm 1:1de1ea2994d9 214 */
gallonm 1:1de1ea2994d9 215 int VL6180x_RangeSetMaxConvergenceTime(VL6180xDev_t dev, uint8_t MaxConTime_msec);
gallonm 1:1de1ea2994d9 216
gallonm 1:1de1ea2994d9 217 /**
gallonm 1:1de1ea2994d9 218 * @brief Single shot Range measurement in polling mode.
gallonm 1:1de1ea2994d9 219 *
gallonm 1:1de1ea2994d9 220 * @par Function Description
gallonm 1:1de1ea2994d9 221 * Kick off a new single shot range then wait for ready to retrieve it by polling interrupt status \n
gallonm 1:1de1ea2994d9 222 * Ranging must be prepared by a first call to @a VL6180x_Prepare() and it is safer to clear very first poll call \n
gallonm 1:1de1ea2994d9 223 * This function reference VL6180x_PollDelay(dev) porting macro/call on each polling loop,
gallonm 1:1de1ea2994d9 224 * but PollDelay(dev) may never be called if measure in ready on first poll loop \n
gallonm 1:1de1ea2994d9 225 * Should not be use in continuous mode operation as it will stop it and cause stop/start misbehaviour \n
gallonm 1:1de1ea2994d9 226 * \n This function clears Range Interrupt status , but not error one. For that uses @a VL6180x_ClearErrorInterrupt() \n
gallonm 1:1de1ea2994d9 227 * This range error is not related VL6180x_RangeData_t::errorStatus that refer measure status \n
gallonm 1:1de1ea2994d9 228 *
gallonm 1:1de1ea2994d9 229 * @param dev The device
gallonm 1:1de1ea2994d9 230 * @param pRangeData Will be populated with the result ranging data @a VL6180x_RangeData_t
gallonm 1:1de1ea2994d9 231 * @return 0 on success , @a #RANGE_ERROR if device reports an error case in it status (not cleared) use
gallonm 1:1de1ea2994d9 232 *
gallonm 1:1de1ea2994d9 233 * \sa ::VL6180x_RangeData_t
gallonm 1:1de1ea2994d9 234 */
gallonm 1:1de1ea2994d9 235 int VL6180x_RangePollMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 1:1de1ea2994d9 236
gallonm 1:1de1ea2994d9 237 /**
gallonm 1:1de1ea2994d9 238 * @brief Check for measure readiness and get it if ready
gallonm 1:1de1ea2994d9 239 *
gallonm 1:1de1ea2994d9 240 * @par Function Description
gallonm 1:1de1ea2994d9 241 * Using this function is an alternative to @a VL6180x_RangePollMeasurement() to avoid polling operation. This is suitable for applications
gallonm 1:1de1ea2994d9 242 * where host CPU is triggered on a interrupt (not from VL6180X) to perform ranging operation. In this scenario, we assume that the very first ranging
gallonm 1:1de1ea2994d9 243 * operation is triggered by a call to @a VL6180x_RangeStartSingleShot(). Then, host CPU regularly calls @a VL6180x_RangeGetMeasurementIfReady() to
gallonm 1:1de1ea2994d9 244 * get a distance measure if ready. In case the distance is not ready, host may get it at the next call.\n
gallonm 1:1de1ea2994d9 245 *
gallonm 1:1de1ea2994d9 246 * @warning
gallonm 1:1de1ea2994d9 247 * This function does not re-start a new measurement : this is up to the host CPU to do it.\n
gallonm 1:1de1ea2994d9 248 * This function clears Range Interrupt for measure ready , but not error interrupts. For that, uses @a VL6180x_ClearErrorInterrupt() \n
gallonm 1:1de1ea2994d9 249 *
gallonm 1:1de1ea2994d9 250 * @param dev The device
gallonm 1:1de1ea2994d9 251 * @param pRangeData Will be populated with the result ranging data if available
gallonm 1:1de1ea2994d9 252 * @return 0 when measure is ready pRange data is updated (untouched when not ready), >0 for warning and @a #NOT_READY if measurement not yet ready, <0 for error @a #RANGE_ERROR if device report an error,
gallonm 1:1de1ea2994d9 253 */
gallonm 1:1de1ea2994d9 254 int VL6180x_RangeGetMeasurementIfReady(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 1:1de1ea2994d9 255
gallonm 1:1de1ea2994d9 256 /**
gallonm 1:1de1ea2994d9 257 * @brief Retrieve range measurements set from device
gallonm 1:1de1ea2994d9 258 *
gallonm 1:1de1ea2994d9 259 * @par Function Description
gallonm 1:1de1ea2994d9 260 * The measurement is made of range_mm status and error code @a VL6180x_RangeData_t \n
gallonm 1:1de1ea2994d9 261 * Based on configuration selected extra measures are included.
gallonm 1:1de1ea2994d9 262 *
gallonm 1:1de1ea2994d9 263 * @warning should not be used in continuous if wrap around filter is active \n
gallonm 1:1de1ea2994d9 264 * Does not perform any wait nor check for result availability or validity.
gallonm 1:1de1ea2994d9 265 *\sa VL6180x_RangeGetResult for "range only" measurement
gallonm 1:1de1ea2994d9 266 *
gallonm 1:1de1ea2994d9 267 * @param dev The device
gallonm 1:1de1ea2994d9 268 * @param pRangeData Pointer to the data structure to fill up
gallonm 1:1de1ea2994d9 269 * @return 0 on success
gallonm 1:1de1ea2994d9 270 */
gallonm 1:1de1ea2994d9 271 int VL6180x_RangeGetMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData);
gallonm 1:1de1ea2994d9 272
gallonm 1:1de1ea2994d9 273 /**
gallonm 1:1de1ea2994d9 274 * @brief Get ranging result and only that
gallonm 1:1de1ea2994d9 275 *
gallonm 1:1de1ea2994d9 276 * @par Function Description
gallonm 1:1de1ea2994d9 277 * Unlike @a VL6180x_RangeGetMeasurement() this function only retrieves the range in millimeter \n
gallonm 1:1de1ea2994d9 278 * It does any required up-scale translation\n
gallonm 1:1de1ea2994d9 279 * It can be called after success status polling or in interrupt mode \n
gallonm 1:1de1ea2994d9 280 * @warning these function is not doing wrap around filtering \n
gallonm 1:1de1ea2994d9 281 * This function doesn't perform any data ready check!
gallonm 1:1de1ea2994d9 282 *
gallonm 1:1de1ea2994d9 283 * @param dev The device
gallonm 1:1de1ea2994d9 284 * @param pRange_mm Pointer to range distance
gallonm 1:1de1ea2994d9 285 * @return 0 on success
gallonm 1:1de1ea2994d9 286 */
gallonm 1:1de1ea2994d9 287 int VL6180x_RangeGetResult(VL6180xDev_t dev, int32_t *pRange_mm);
gallonm 1:1de1ea2994d9 288
gallonm 1:1de1ea2994d9 289 /**
gallonm 1:1de1ea2994d9 290 * @brief Configure ranging interrupt reported to application
gallonm 1:1de1ea2994d9 291 *
gallonm 1:1de1ea2994d9 292 * @param dev The device
gallonm 1:1de1ea2994d9 293 * @param ConfigGpioInt Select ranging report\n select one (and only one) of:\n
gallonm 1:1de1ea2994d9 294 * @a #CONFIG_GPIO_INTERRUPT_DISABLED \n
gallonm 1:1de1ea2994d9 295 * @a #CONFIG_GPIO_INTERRUPT_LEVEL_LOW \n
gallonm 1:1de1ea2994d9 296 * @a #CONFIG_GPIO_INTERRUPT_LEVEL_HIGH \n
gallonm 1:1de1ea2994d9 297 * @a #CONFIG_GPIO_INTERRUPT_OUT_OF_WINDOW \n
gallonm 1:1de1ea2994d9 298 * @a #CONFIG_GPIO_INTERRUPT_NEW_SAMPLE_READY
gallonm 1:1de1ea2994d9 299 * @return 0 on success
gallonm 1:1de1ea2994d9 300 */
gallonm 1:1de1ea2994d9 301 int VL6180x_RangeConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt);
gallonm 1:1de1ea2994d9 302
gallonm 1:1de1ea2994d9 303
gallonm 1:1de1ea2994d9 304 /**
gallonm 1:1de1ea2994d9 305 * @brief Clear range interrupt
gallonm 1:1de1ea2994d9 306 *
gallonm 1:1de1ea2994d9 307 * @param dev The device
gallonm 1:1de1ea2994d9 308 * @return 0 On success
gallonm 1:1de1ea2994d9 309 */
gallonm 1:1de1ea2994d9 310 #define VL6180x_RangeClearInterrupt(dev) VL6180x_ClearInterrupt(dev, INTERRUPT_CLEAR_RANGING)
gallonm 1:1de1ea2994d9 311
gallonm 1:1de1ea2994d9 312 /**
gallonm 1:1de1ea2994d9 313 * @brief Return ranging error interrupt status
gallonm 1:1de1ea2994d9 314 *
gallonm 1:1de1ea2994d9 315 * @par Function Description
gallonm 1:1de1ea2994d9 316 * Appropriate Interrupt report must have been selected first by @a VL6180x_RangeConfigInterrupt() or @a VL6180x_Prepare() \n
gallonm 1:1de1ea2994d9 317 *
gallonm 1:1de1ea2994d9 318 * Can be used in polling loop to wait for a given ranging event or in interrupt to read the trigger \n
gallonm 1:1de1ea2994d9 319 * Events triggers are : \n
gallonm 1:1de1ea2994d9 320 * @a #RES_INT_STAT_GPIO_LOW_LEVEL_THRESHOLD \n
gallonm 1:1de1ea2994d9 321 * @a #RES_INT_STAT_GPIO_HIGH_LEVEL_THRESHOLD \n
gallonm 1:1de1ea2994d9 322 * @a #RES_INT_STAT_GPIO_OUT_OF_WINDOW \n (RES_INT_STAT_GPIO_LOW_LEVEL_THRESHOLD|RES_INT_STAT_GPIO_HIGH_LEVEL_THRESHOLD)
gallonm 1:1de1ea2994d9 323 * @a #RES_INT_STAT_GPIO_NEW_SAMPLE_READY \n
gallonm 1:1de1ea2994d9 324 *
gallonm 1:1de1ea2994d9 325 * @sa IntrStatus_t
gallonm 1:1de1ea2994d9 326 * @param dev The device
gallonm 1:1de1ea2994d9 327 * @param pIntStatus Pointer to status variable to update
gallonm 1:1de1ea2994d9 328 * @return 0 on success
gallonm 1:1de1ea2994d9 329 */
gallonm 1:1de1ea2994d9 330 int VL6180x_RangeGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus);
gallonm 1:1de1ea2994d9 331
gallonm 1:1de1ea2994d9 332 #if VL6180x_RANGE_STATUS_ERRSTRING
gallonm 1:1de1ea2994d9 333
gallonm 1:1de1ea2994d9 334 extern const char * ROMABLE_DATA VL6180x_RangeStatusErrString[];
gallonm 1:1de1ea2994d9 335 /**
gallonm 1:1de1ea2994d9 336 * @brief Human readable error string for range error status
gallonm 1:1de1ea2994d9 337 *
gallonm 1:1de1ea2994d9 338 * @param RangeErrCode The error code as stored on @a VL6180x_RangeData_t::errorStatus
gallonm 1:1de1ea2994d9 339 * @return error string , NULL for invalid RangeErrCode
gallonm 1:1de1ea2994d9 340 * @sa ::RangeError_u
gallonm 1:1de1ea2994d9 341 */
gallonm 1:1de1ea2994d9 342 const char * VL6180x_RangeGetStatusErrString(uint8_t RangeErrCode);
gallonm 1:1de1ea2994d9 343 #else
gallonm 1:1de1ea2994d9 344 #define VL6180x_RangeGetStatusErrString(...) NULL
gallonm 1:1de1ea2994d9 345 #endif
gallonm 1:1de1ea2994d9 346
gallonm 1:1de1ea2994d9 347 /** @} */
gallonm 1:1de1ea2994d9 348
gallonm 1:1de1ea2994d9 349 #if VL6180x_ALS_SUPPORT
gallonm 1:1de1ea2994d9 350
gallonm 1:1de1ea2994d9 351 /** @defgroup api_hl_als ALS functions
gallonm 1:1de1ea2994d9 352 * @brief ALS functions
gallonm 1:1de1ea2994d9 353 * @ingroup api_hl
gallonm 1:1de1ea2994d9 354 * @{
gallonm 1:1de1ea2994d9 355 */
gallonm 1:1de1ea2994d9 356
gallonm 1:1de1ea2994d9 357 /**
gallonm 1:1de1ea2994d9 358 * @brief Run a single ALS measurement in single shot polling mode
gallonm 1:1de1ea2994d9 359 *
gallonm 1:1de1ea2994d9 360 * @par Function Description
gallonm 1:1de1ea2994d9 361 * Kick off a new single shot ALS then wait new measurement ready to retrieve it ( polling system interrupt status register for als) \n
gallonm 1:1de1ea2994d9 362 * ALS must be prepared by a first call to @a VL6180x_Prepare() \n
gallonm 1:1de1ea2994d9 363 * \n Should not be used in continuous or interrupt mode it will break it and create hazard in start/stop \n
gallonm 1:1de1ea2994d9 364 *
gallonm 1:1de1ea2994d9 365 * @param dev The device
gallonm 1:1de1ea2994d9 366 * @param pAlsData Als data structure to fill up @a VL6180x_AlsData_t
gallonm 1:1de1ea2994d9 367 * @return 0 on success
gallonm 1:1de1ea2994d9 368 */
gallonm 1:1de1ea2994d9 369 int VL6180x_AlsPollMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData);
gallonm 1:1de1ea2994d9 370
gallonm 1:1de1ea2994d9 371
gallonm 1:1de1ea2994d9 372 /**
gallonm 1:1de1ea2994d9 373 * @brief Get actual ALS measurement
gallonm 1:1de1ea2994d9 374 *
gallonm 1:1de1ea2994d9 375 * @par Function Description
gallonm 1:1de1ea2994d9 376 * Can be called after success status polling or in interrupt mode to retrieve ALS measurement from device \n
gallonm 1:1de1ea2994d9 377 * This function doesn't perform any data ready check !
gallonm 1:1de1ea2994d9 378 *
gallonm 1:1de1ea2994d9 379 * @param dev The device
gallonm 1:1de1ea2994d9 380 * @param pAlsData Pointer to measurement struct @a VL6180x_AlsData_t
gallonm 1:1de1ea2994d9 381 * @return 0 on success
gallonm 1:1de1ea2994d9 382 */
gallonm 1:1de1ea2994d9 383 int VL6180x_AlsGetMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData);
gallonm 1:1de1ea2994d9 384
gallonm 1:1de1ea2994d9 385 /**
gallonm 1:1de1ea2994d9 386 * @brief Configure ALS interrupts provide to application
gallonm 1:1de1ea2994d9 387 *
gallonm 1:1de1ea2994d9 388 * @param dev The Device
gallonm 1:1de1ea2994d9 389 * @param ConfigGpioInt Select one (and only one) of : \n
gallonm 1:1de1ea2994d9 390 * @a #CONFIG_GPIO_INTERRUPT_DISABLED \n
gallonm 1:1de1ea2994d9 391 * @a #CONFIG_GPIO_INTERRUPT_LEVEL_LOW \n
gallonm 1:1de1ea2994d9 392 * @a #CONFIG_GPIO_INTERRUPT_LEVEL_HIGH \n
gallonm 1:1de1ea2994d9 393 * @a #CONFIG_GPIO_INTERRUPT_OUT_OF_WINDOW \n
gallonm 1:1de1ea2994d9 394 * @a #CONFIG_GPIO_INTERRUPT_NEW_SAMPLE_READY
gallonm 1:1de1ea2994d9 395 * @return 0 on success may return #INVALID_PARAMS for invalid mode
gallonm 1:1de1ea2994d9 396 */
gallonm 1:1de1ea2994d9 397 int VL6180x_AlsConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt);
gallonm 1:1de1ea2994d9 398
gallonm 1:1de1ea2994d9 399
gallonm 1:1de1ea2994d9 400 /**
gallonm 1:1de1ea2994d9 401 * @brief Set ALS integration period
gallonm 1:1de1ea2994d9 402 *
gallonm 1:1de1ea2994d9 403 * @param dev The device
gallonm 1:1de1ea2994d9 404 * @param period_ms Integration period in msec. Value in between 50 to 100 msec is recommended\n
gallonm 1:1de1ea2994d9 405 * @return 0 on success
gallonm 1:1de1ea2994d9 406 */
gallonm 1:1de1ea2994d9 407 int VL6180x_AlsSetIntegrationPeriod(VL6180xDev_t dev, uint16_t period_ms);
gallonm 1:1de1ea2994d9 408
gallonm 1:1de1ea2994d9 409 /**
gallonm 1:1de1ea2994d9 410 * @brief Set ALS "inter-measurement period"
gallonm 1:1de1ea2994d9 411 *
gallonm 1:1de1ea2994d9 412 * @par Function Description
gallonm 1:1de1ea2994d9 413 * The so call data-sheet "inter measurement period" is actually an extra inter-measurement delay
gallonm 1:1de1ea2994d9 414 *
gallonm 1:1de1ea2994d9 415 * @param dev The device
gallonm 1:1de1ea2994d9 416 * @param intermeasurement_period_ms Inter measurement time in milli second\n
gallonm 1:1de1ea2994d9 417 * @warning applied value is clipped to 2550 ms\n
gallonm 1:1de1ea2994d9 418 * @return 0 on success if value is
gallonm 1:1de1ea2994d9 419 */
gallonm 1:1de1ea2994d9 420 int VL6180x_AlsSetInterMeasurementPeriod(VL6180xDev_t dev, uint16_t intermeasurement_period_ms);
gallonm 1:1de1ea2994d9 421
gallonm 1:1de1ea2994d9 422 /**
gallonm 1:1de1ea2994d9 423 * @brief Set ALS analog gain code
gallonm 1:1de1ea2994d9 424 *
gallonm 1:1de1ea2994d9 425 * @par Function Description
gallonm 1:1de1ea2994d9 426 * ALS gain code value programmed in @a SYSALS_ANALOGUE_GAIN .
gallonm 1:1de1ea2994d9 427 * @param dev The device
gallonm 1:1de1ea2994d9 428 * @param gain Gain code see datasheet or AlsGainLookUp for real value. Value is clipped to 7.
gallonm 1:1de1ea2994d9 429 * @return 0 on success
gallonm 1:1de1ea2994d9 430 */
gallonm 1:1de1ea2994d9 431
gallonm 1:1de1ea2994d9 432 int VL6180x_AlsSetAnalogueGain(VL6180xDev_t dev, uint8_t gain);
gallonm 1:1de1ea2994d9 433 /**
gallonm 1:1de1ea2994d9 434 * @brief Set thresholds for ALS continuous mode
gallonm 1:1de1ea2994d9 435 * @warning Threshold are raw device value not lux!
gallonm 1:1de1ea2994d9 436 *
gallonm 1:1de1ea2994d9 437 * @par Function Description
gallonm 1:1de1ea2994d9 438 * Basically value programmed in @a SYSALS_THRESH_LOW and @a SYSALS_THRESH_HIGH registers
gallonm 1:1de1ea2994d9 439 * @param dev The device
gallonm 1:1de1ea2994d9 440 * @param low ALS low raw threshold for @a SYSALS_THRESH_LOW
gallonm 1:1de1ea2994d9 441 * @param high ALS high raw threshold for @a SYSALS_THRESH_HIGH
gallonm 1:1de1ea2994d9 442 * @return 0 on success
gallonm 1:1de1ea2994d9 443 */
gallonm 1:1de1ea2994d9 444 int VL6180x_AlsSetThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high);
gallonm 1:1de1ea2994d9 445
gallonm 1:1de1ea2994d9 446 /**
gallonm 1:1de1ea2994d9 447 * @brief Clear ALS interrupt
gallonm 1:1de1ea2994d9 448 *
gallonm 1:1de1ea2994d9 449 * @param dev The device
gallonm 1:1de1ea2994d9 450 * @return 0 On success
gallonm 1:1de1ea2994d9 451 */
gallonm 1:1de1ea2994d9 452 #define VL6180x_AlsClearInterrupt(dev) VL6180x_ClearInterrupt(dev, INTERRUPT_CLEAR_ALS)
gallonm 1:1de1ea2994d9 453
gallonm 1:1de1ea2994d9 454 /**
gallonm 1:1de1ea2994d9 455 * Read ALS interrupt status
gallonm 1:1de1ea2994d9 456 * @param dev Device
gallonm 1:1de1ea2994d9 457 * @param pIntStatus Pointer to status
gallonm 1:1de1ea2994d9 458 * @return 0 on success
gallonm 1:1de1ea2994d9 459 */
gallonm 1:1de1ea2994d9 460 int VL6180x_AlsGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus);
gallonm 1:1de1ea2994d9 461
gallonm 1:1de1ea2994d9 462 /** @} */
gallonm 1:1de1ea2994d9 463 #endif
gallonm 1:1de1ea2994d9 464
gallonm 1:1de1ea2994d9 465 /** @defgroup api_ll_init Init functions
gallonm 1:1de1ea2994d9 466 * @brief Init functions
gallonm 1:1de1ea2994d9 467 * @ingroup api_ll
gallonm 1:1de1ea2994d9 468 * @{
gallonm 1:1de1ea2994d9 469 */
gallonm 1:1de1ea2994d9 470
gallonm 1:1de1ea2994d9 471 /**
gallonm 1:1de1ea2994d9 472 * @brief Low level ranging and ALS register static settings (you should call @a VL6180x_Prepare() function instead)
gallonm 1:1de1ea2994d9 473 *
gallonm 1:1de1ea2994d9 474 * @param dev
gallonm 1:1de1ea2994d9 475 * @return 0 on success
gallonm 1:1de1ea2994d9 476 */
gallonm 1:1de1ea2994d9 477 int VL6180x_StaticInit(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 478
gallonm 1:1de1ea2994d9 479 /** @} */
gallonm 1:1de1ea2994d9 480
gallonm 1:1de1ea2994d9 481 /** @defgroup api_ll_range Ranging functions
gallonm 1:1de1ea2994d9 482 * @brief Ranging Low Level functions
gallonm 1:1de1ea2994d9 483 * @ingroup api_ll
gallonm 1:1de1ea2994d9 484 * @{
gallonm 1:1de1ea2994d9 485 */
gallonm 1:1de1ea2994d9 486
gallonm 1:1de1ea2994d9 487 /**
gallonm 1:1de1ea2994d9 488 * @brief Wait for device to be ready (before a new ranging command can be issued by application)
gallonm 1:1de1ea2994d9 489 * @param dev The device
gallonm 1:1de1ea2994d9 490 * @param MaxLoop Max Number of i2c polling loop see @a #msec_2_i2cloop
gallonm 1:1de1ea2994d9 491 * @return 0 on success. <0 when fail \n
gallonm 1:1de1ea2994d9 492 * @ref VL6180x_ErrCode_t::TIME_OUT for time out \n
gallonm 1:1de1ea2994d9 493 * @ref VL6180x_ErrCode_t::INVALID_PARAMS if MaxLop<1
gallonm 1:1de1ea2994d9 494 */
gallonm 1:1de1ea2994d9 495 int VL6180x_RangeWaitDeviceReady(VL6180xDev_t dev, int MaxLoop );
gallonm 1:1de1ea2994d9 496
gallonm 1:1de1ea2994d9 497 /**
gallonm 1:1de1ea2994d9 498 * @brief Program Inter measurement period (used only in continuous mode)
gallonm 1:1de1ea2994d9 499 *
gallonm 1:1de1ea2994d9 500 * @par Function Description
gallonm 1:1de1ea2994d9 501 * When trying to set too long time, it returns #INVALID_PARAMS
gallonm 1:1de1ea2994d9 502 *
gallonm 1:1de1ea2994d9 503 * @param dev The device
gallonm 1:1de1ea2994d9 504 * @param InterMeasTime_msec Requires inter-measurement time in msec
gallonm 1:1de1ea2994d9 505 * @return 0 on success
gallonm 1:1de1ea2994d9 506 */
gallonm 1:1de1ea2994d9 507 int VL6180x_RangeSetInterMeasPeriod(VL6180xDev_t dev, uint32_t InterMeasTime_msec);
gallonm 1:1de1ea2994d9 508
gallonm 1:1de1ea2994d9 509
gallonm 1:1de1ea2994d9 510 /**
gallonm 1:1de1ea2994d9 511 * @brief Set device ranging scaling factor
gallonm 1:1de1ea2994d9 512 *
gallonm 1:1de1ea2994d9 513 * @par Function Description
gallonm 1:1de1ea2994d9 514 * The ranging scaling factor is applied on the raw distance measured by the device to increase operating ranging at the price of the precision.
gallonm 1:1de1ea2994d9 515 * Changing the scaling factor when device is not in f/w standby state (free running) is not safe.
gallonm 1:1de1ea2994d9 516 * It can be source of spurious interrupt, wrongly scaled range etc ...
gallonm 1:1de1ea2994d9 517 * @warning __This function doesns't update high/low threshold and other programmed settings linked to scaling factor__.
gallonm 1:1de1ea2994d9 518 * To ensure proper operation, threshold and scaling changes should be done following this procedure: \n
gallonm 1:1de1ea2994d9 519 * @li Set Group hold : @a VL6180x_SetGroupParamHold() \n
gallonm 1:1de1ea2994d9 520 * @li Get Threshold @a VL6180x_RangeGetThresholds() \n
gallonm 1:1de1ea2994d9 521 * @li Change scaling : @a VL6180x_UpscaleSetScaling() \n
gallonm 1:1de1ea2994d9 522 * @li Set Threshold : @a VL6180x_RangeSetThresholds() \n
gallonm 1:1de1ea2994d9 523 * @li Unset Group Hold : @a VL6180x_SetGroupParamHold()
gallonm 1:1de1ea2994d9 524 *
gallonm 1:1de1ea2994d9 525 * @param dev The device
gallonm 1:1de1ea2994d9 526 * @param scaling Scaling factor to apply (1,2 or 3)
gallonm 1:1de1ea2994d9 527 * @return 0 on success when up-scale support is not configured it fail for any
gallonm 1:1de1ea2994d9 528 * scaling than the one statically configured.
gallonm 1:1de1ea2994d9 529 */
gallonm 1:1de1ea2994d9 530 int VL6180x_UpscaleSetScaling(VL6180xDev_t dev, uint8_t scaling);
gallonm 1:1de1ea2994d9 531
gallonm 1:1de1ea2994d9 532 /**
gallonm 1:1de1ea2994d9 533 * @brief Get current ranging scaling factor
gallonm 1:1de1ea2994d9 534 *
gallonm 1:1de1ea2994d9 535 * @param dev The device
gallonm 1:1de1ea2994d9 536 * @return The current scaling factor
gallonm 1:1de1ea2994d9 537 */
gallonm 1:1de1ea2994d9 538 int VL6180x_UpscaleGetScaling(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 539
gallonm 1:1de1ea2994d9 540
gallonm 1:1de1ea2994d9 541 /**
gallonm 1:1de1ea2994d9 542 * @brief Give filtered state (wrap-around filter) of a range measurement
gallonm 1:1de1ea2994d9 543 * @param pRangeData Range measurement data
gallonm 1:1de1ea2994d9 544 * @return 0 means measure was not filtered, when not 0 range from device got filtered by filter post processing
gallonm 1:1de1ea2994d9 545 */
gallonm 1:1de1ea2994d9 546 #define VL6180x_RangeIsFilteredMeasurement(pRangeData) ((pRangeData)->errorStatus == RangingFiltered)
gallonm 1:1de1ea2994d9 547
gallonm 1:1de1ea2994d9 548 /**
gallonm 1:1de1ea2994d9 549 * @brief Get the maximal distance for actual scaling
gallonm 1:1de1ea2994d9 550 * @par Function Description
gallonm 1:1de1ea2994d9 551 * Do not use prior to @a VL6180x_Prepare() or at least @a VL6180x_InitData()
gallonm 1:1de1ea2994d9 552 *
gallonm 1:1de1ea2994d9 553 * Any range value more than the value returned by this function is to be considered as "no target detected"
gallonm 1:1de1ea2994d9 554 * or "no target in detectable range" \n
gallonm 1:1de1ea2994d9 555 * @warning The maximal distance depends on the scaling
gallonm 1:1de1ea2994d9 556 *
gallonm 1:1de1ea2994d9 557 * @param dev The device
gallonm 1:1de1ea2994d9 558 * @return The maximal range limit for actual mode and scaling
gallonm 1:1de1ea2994d9 559 */
gallonm 1:1de1ea2994d9 560 uint16_t VL6180x_GetUpperLimit(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 561
gallonm 1:1de1ea2994d9 562 /**
gallonm 1:1de1ea2994d9 563 * @brief Apply low and high ranging thresholds that are considered only in continuous mode
gallonm 1:1de1ea2994d9 564 *
gallonm 1:1de1ea2994d9 565 * @par Function Description
gallonm 1:1de1ea2994d9 566 * This function programs low and high ranging thresholds that are considered in continuous mode :
gallonm 1:1de1ea2994d9 567 * interrupt will be raised only when an object is detected at a distance inside this [low:high] range.
gallonm 1:1de1ea2994d9 568 * The function takes care of applying current scaling factor if any.\n
gallonm 1:1de1ea2994d9 569 * To be safe, in continuous operation, thresholds must be changed under "group parameter hold" cover.
gallonm 1:1de1ea2994d9 570 * Group hold can be activated/deactivated directly in the function or externally (then set 0)
gallonm 1:1de1ea2994d9 571 * using /a VL6180x_SetGroupParamHold() function.
gallonm 1:1de1ea2994d9 572 *
gallonm 1:1de1ea2994d9 573 * @param dev The device
gallonm 1:1de1ea2994d9 574 * @param low Low threshold in mm
gallonm 1:1de1ea2994d9 575 * @param high High threshold in mm
gallonm 1:1de1ea2994d9 576 * @param SafeHold Use of group parameters hold to surround threshold programming.
gallonm 1:1de1ea2994d9 577 * @return 0 On success
gallonm 1:1de1ea2994d9 578 */
gallonm 1:1de1ea2994d9 579 int VL6180x_RangeSetThresholds(VL6180xDev_t dev, uint16_t low, uint16_t high, int SafeHold);
gallonm 1:1de1ea2994d9 580
gallonm 1:1de1ea2994d9 581 /**
gallonm 1:1de1ea2994d9 582 * @brief Get scaled high and low threshold from device
gallonm 1:1de1ea2994d9 583 *
gallonm 1:1de1ea2994d9 584 * @par Function Description
gallonm 1:1de1ea2994d9 585 * Due to scaling factor, the returned value may be different from what has been programmed first (precision lost).
gallonm 1:1de1ea2994d9 586 * For instance VL6180x_RangeSetThresholds(dev,11,22) with scale 3
gallonm 1:1de1ea2994d9 587 * will read back 9 ((11/3)x3) and 21 ((22/3)x3).
gallonm 1:1de1ea2994d9 588
gallonm 1:1de1ea2994d9 589 * @param dev The device
gallonm 1:1de1ea2994d9 590 * @param low scaled low Threshold ptr can be NULL if not needed
gallonm 1:1de1ea2994d9 591 * @param high scaled High Threshold ptr can be NULL if not needed
gallonm 1:1de1ea2994d9 592 * @return 0 on success, return value is undefined if both low and high are NULL
gallonm 1:1de1ea2994d9 593 * @warning return value is undefined if both low and high are NULL
gallonm 1:1de1ea2994d9 594 */
gallonm 1:1de1ea2994d9 595 int VL6180x_RangeGetThresholds(VL6180xDev_t dev, uint16_t *low, uint16_t *high);
gallonm 1:1de1ea2994d9 596
gallonm 1:1de1ea2994d9 597 /**
gallonm 1:1de1ea2994d9 598 * @brief Set ranging raw thresholds (scaling not considered so not recommended to use it)
gallonm 1:1de1ea2994d9 599 *
gallonm 1:1de1ea2994d9 600 * @param dev The device
gallonm 1:1de1ea2994d9 601 * @param low raw low threshold set to raw register
gallonm 1:1de1ea2994d9 602 * @param high raw high threshold set to raw register
gallonm 1:1de1ea2994d9 603 * @return 0 on success
gallonm 1:1de1ea2994d9 604 */
gallonm 1:1de1ea2994d9 605 int VL6180x_RangeSetRawThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high);
gallonm 1:1de1ea2994d9 606
gallonm 1:1de1ea2994d9 607 /**
gallonm 1:1de1ea2994d9 608 * @brief Set Early Convergence Estimate ratio
gallonm 1:1de1ea2994d9 609 * @par Function Description
gallonm 1:1de1ea2994d9 610 * For more information on ECE check datasheet
gallonm 1:1de1ea2994d9 611 * @warning May return a calibration warning in some use cases
gallonm 1:1de1ea2994d9 612 *
gallonm 1:1de1ea2994d9 613 * @param dev The device
gallonm 1:1de1ea2994d9 614 * @param FactorM ECE factor M in M/D
gallonm 1:1de1ea2994d9 615 * @param FactorD ECE factor D in M/D
gallonm 1:1de1ea2994d9 616 * @return 0 on success. <0 on error. >0 on warning
gallonm 1:1de1ea2994d9 617 */
gallonm 1:1de1ea2994d9 618 int VL6180x_RangeSetEceFactor(VL6180xDev_t dev, uint16_t FactorM, uint16_t FactorD);
gallonm 1:1de1ea2994d9 619
gallonm 1:1de1ea2994d9 620 /**
gallonm 1:1de1ea2994d9 621 * @brief Set Early Convergence Estimate state (See #SYSRANGE_RANGE_CHECK_ENABLES register)
gallonm 1:1de1ea2994d9 622 * @param dev The device
gallonm 1:1de1ea2994d9 623 * @param enable State to be set 0=disabled, otherwise enabled
gallonm 1:1de1ea2994d9 624 * @return 0 on success
gallonm 1:1de1ea2994d9 625 */
gallonm 1:1de1ea2994d9 626 int VL6180x_RangeSetEceState(VL6180xDev_t dev, int enable );
gallonm 1:1de1ea2994d9 627
gallonm 1:1de1ea2994d9 628 /**
gallonm 1:1de1ea2994d9 629 * @brief Set activation state of the wrap around filter
gallonm 1:1de1ea2994d9 630 * @param dev The device
gallonm 1:1de1ea2994d9 631 * @param state New activation state (0=off, otherwise on)
gallonm 1:1de1ea2994d9 632 * @return 0 on success
gallonm 1:1de1ea2994d9 633 */
gallonm 1:1de1ea2994d9 634 int VL6180x_FilterSetState(VL6180xDev_t dev, int state);
gallonm 1:1de1ea2994d9 635
gallonm 1:1de1ea2994d9 636 /**
gallonm 1:1de1ea2994d9 637 * Get activation state of the wrap around filter
gallonm 1:1de1ea2994d9 638 * @param dev The device
gallonm 1:1de1ea2994d9 639 * @return Filter enabled or not, when filter is not supported it always returns 0S
gallonm 1:1de1ea2994d9 640 */
gallonm 1:1de1ea2994d9 641 int VL6180x_FilterGetState(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 642
gallonm 1:1de1ea2994d9 643
gallonm 1:1de1ea2994d9 644 /**
gallonm 1:1de1ea2994d9 645 * @brief Set activation state of DMax computation
gallonm 1:1de1ea2994d9 646 * @param dev The device
gallonm 1:1de1ea2994d9 647 * @param state New activation state (0=off, otherwise on)
gallonm 1:1de1ea2994d9 648 * @return 0 on success
gallonm 1:1de1ea2994d9 649 */
gallonm 1:1de1ea2994d9 650 int VL6180x_DMaxSetState(VL6180xDev_t dev, int state);
gallonm 1:1de1ea2994d9 651
gallonm 1:1de1ea2994d9 652 /**
gallonm 1:1de1ea2994d9 653 * Get activation state of DMax computation
gallonm 1:1de1ea2994d9 654 * @param dev The device
gallonm 1:1de1ea2994d9 655 * @return Filter enabled or not, when filter is not supported it always returns 0S
gallonm 1:1de1ea2994d9 656 */
gallonm 1:1de1ea2994d9 657 int VL6180x_DMaxGetState(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 658
gallonm 1:1de1ea2994d9 659
gallonm 1:1de1ea2994d9 660 /**
gallonm 1:1de1ea2994d9 661 * @brief Set ranging mode and start/stop measure (use high level functions instead : @a VL6180x_RangeStartSingleShot() or @a VL6180x_RangeStartContinuousMode())
gallonm 1:1de1ea2994d9 662 *
gallonm 1:1de1ea2994d9 663 * @par Function Description
gallonm 1:1de1ea2994d9 664 * When used outside scope of known polling single shot stopped state, \n
gallonm 1:1de1ea2994d9 665 * user must ensure the device state is "idle" before to issue a new command.
gallonm 1:1de1ea2994d9 666 *
gallonm 1:1de1ea2994d9 667 * @param dev The device
gallonm 1:1de1ea2994d9 668 * @param mode A combination of working mode (#MODE_SINGLESHOT or #MODE_CONTINUOUS) and start/stop condition (#MODE_START_STOP) \n
gallonm 1:1de1ea2994d9 669 * @return 0 on success
gallonm 1:1de1ea2994d9 670 */
gallonm 1:1de1ea2994d9 671 int VL6180x_RangeSetSystemMode(VL6180xDev_t dev, uint8_t mode);
gallonm 1:1de1ea2994d9 672
gallonm 1:1de1ea2994d9 673 /** @} */
gallonm 1:1de1ea2994d9 674
gallonm 1:1de1ea2994d9 675 /** @defgroup api_ll_range_calibration Ranging calibration functions
gallonm 1:1de1ea2994d9 676 * @brief Ranging calibration functions
gallonm 1:1de1ea2994d9 677 * @ingroup api_ll
gallonm 1:1de1ea2994d9 678 * @{
gallonm 1:1de1ea2994d9 679 */
gallonm 1:1de1ea2994d9 680 /**
gallonm 1:1de1ea2994d9 681 * @brief Get part to part calibration offset
gallonm 1:1de1ea2994d9 682 *
gallonm 1:1de1ea2994d9 683 * @par Function Description
gallonm 1:1de1ea2994d9 684 * Should only be used after a successful call to @a VL6180x_InitData to backup device nvm value
gallonm 1:1de1ea2994d9 685 *
gallonm 1:1de1ea2994d9 686 * @param dev The device
gallonm 1:1de1ea2994d9 687 * @return part to part calibration offset from device
gallonm 1:1de1ea2994d9 688 */
gallonm 1:1de1ea2994d9 689 int8_t VL6180x_GetOffsetCalibrationData(VL6180xDev_t dev);
gallonm 1:1de1ea2994d9 690
gallonm 1:1de1ea2994d9 691 /**
gallonm 1:1de1ea2994d9 692 * Set or over-write part to part calibration offset
gallonm 1:1de1ea2994d9 693 * \sa VL6180x_InitData(), VL6180x_GetOffsetCalibrationData()
gallonm 1:1de1ea2994d9 694 * @param dev The device
gallonm 1:1de1ea2994d9 695 * @param offset Offset
gallonm 1:1de1ea2994d9 696 */
gallonm 1:1de1ea2994d9 697 void VL6180x_SetOffsetCalibrationData(VL6180xDev_t dev, int8_t offset);
gallonm 1:1de1ea2994d9 698
gallonm 1:1de1ea2994d9 699 /**
gallonm 1:1de1ea2994d9 700 * @brief Set Cross talk compensation rate
gallonm 1:1de1ea2994d9 701 *
gallonm 1:1de1ea2994d9 702 * @par Function Description
gallonm 1:1de1ea2994d9 703 * It programs register @a #SYSRANGE_CROSSTALK_COMPENSATION_RATE
gallonm 1:1de1ea2994d9 704 *
gallonm 1:1de1ea2994d9 705 * @param dev The device
gallonm 1:1de1ea2994d9 706 * @param Rate Compensation rate (9.7 fix point) see datasheet for details
gallonm 1:1de1ea2994d9 707 * @return 0 on success
gallonm 1:1de1ea2994d9 708 */
gallonm 1:1de1ea2994d9 709 int VL6180x_SetXTalkCompensationRate(VL6180xDev_t dev, FixPoint97_t Rate);
gallonm 1:1de1ea2994d9 710
gallonm 1:1de1ea2994d9 711 /** @} */
gallonm 1:1de1ea2994d9 712
gallonm 1:1de1ea2994d9 713
gallonm 1:1de1ea2994d9 714
gallonm 1:1de1ea2994d9 715 #if VL6180x_ALS_SUPPORT
gallonm 1:1de1ea2994d9 716 /** @defgroup api_ll_als ALS functions
gallonm 1:1de1ea2994d9 717 * @brief ALS functions
gallonm 1:1de1ea2994d9 718 * @ingroup api_ll
gallonm 1:1de1ea2994d9 719 * @{
gallonm 1:1de1ea2994d9 720 */
gallonm 1:1de1ea2994d9 721
gallonm 1:1de1ea2994d9 722 /**
gallonm 1:1de1ea2994d9 723 * @brief Wait for device to be ready for new als operation or max pollign loop (time out)
gallonm 1:1de1ea2994d9 724 * @param dev The device
gallonm 1:1de1ea2994d9 725 * @param MaxLoop Max Number of i2c polling loop see @a #msec_2_i2cloop
gallonm 1:1de1ea2994d9 726 * @return 0 on success. <0 when @a VL6180x_ErrCode_t::TIME_OUT if timed out
gallonm 1:1de1ea2994d9 727 */
gallonm 1:1de1ea2994d9 728 int VL6180x_AlsWaitDeviceReady(VL6180xDev_t dev, int MaxLoop );
gallonm 1:1de1ea2994d9 729
gallonm 1:1de1ea2994d9 730 /**
gallonm 1:1de1ea2994d9 731 * @brief Set ALS system mode and start/stop measure
gallonm 1:1de1ea2994d9 732 *
gallonm 1:1de1ea2994d9 733 * @warning When used outside after single shot polling, \n
gallonm 1:1de1ea2994d9 734 * User must ensure the device state is ready before issuing a new command (using @a VL6180x_AlsWaitDeviceReady()). \n
gallonm 1:1de1ea2994d9 735 * Non respect of this, can cause loss of interrupt or device hanging.
gallonm 1:1de1ea2994d9 736 *
gallonm 1:1de1ea2994d9 737 * @param dev The device
gallonm 1:1de1ea2994d9 738 * @param mode A combination of working mode (#MODE_SINGLESHOT or #MODE_CONTINUOUS) and start condition (#MODE_START_STOP) \n
gallonm 1:1de1ea2994d9 739 * @return 0 on success
gallonm 1:1de1ea2994d9 740 */
gallonm 1:1de1ea2994d9 741 int VL6180x_AlsSetSystemMode(VL6180xDev_t dev, uint8_t mode);
gallonm 1:1de1ea2994d9 742
gallonm 1:1de1ea2994d9 743 /** @} */
gallonm 1:1de1ea2994d9 744 #endif
gallonm 1:1de1ea2994d9 745
gallonm 1:1de1ea2994d9 746 /** @defgroup api_ll_misc Misc functions
gallonm 1:1de1ea2994d9 747 * @brief Misc functions
gallonm 1:1de1ea2994d9 748 * @ingroup api_ll
gallonm 1:1de1ea2994d9 749 * @{
gallonm 1:1de1ea2994d9 750 */
gallonm 1:1de1ea2994d9 751
gallonm 1:1de1ea2994d9 752 /**
gallonm 1:1de1ea2994d9 753 * Set Group parameter Hold state
gallonm 1:1de1ea2994d9 754 *
gallonm 1:1de1ea2994d9 755 * @par Function Description
gallonm 1:1de1ea2994d9 756 * Group parameter holds @a #SYSTEM_GROUPED_PARAMETER_HOLD enable safe update (non atomic across multiple measure) by host
gallonm 1:1de1ea2994d9 757 * \n The critical register group is composed of: \n
gallonm 1:1de1ea2994d9 758 * #SYSTEM_INTERRUPT_CONFIG_GPIO \n
gallonm 1:1de1ea2994d9 759 * #SYSRANGE_THRESH_HIGH \n
gallonm 1:1de1ea2994d9 760 * #SYSRANGE_THRESH_LOW \n
gallonm 1:1de1ea2994d9 761 * #SYSALS_INTEGRATION_PERIOD \n
gallonm 1:1de1ea2994d9 762 * #SYSALS_ANALOGUE_GAIN \n
gallonm 1:1de1ea2994d9 763 * #SYSALS_THRESH_HIGH \n
gallonm 1:1de1ea2994d9 764 * #SYSALS_THRESH_LOW
gallonm 1:1de1ea2994d9 765 *
gallonm 1:1de1ea2994d9 766 *
gallonm 1:1de1ea2994d9 767 * @param dev The device
gallonm 1:1de1ea2994d9 768 * @param Hold Group parameter Hold state to be set (on/off)
gallonm 1:1de1ea2994d9 769 * @return 0 on success
gallonm 1:1de1ea2994d9 770 */
gallonm 1:1de1ea2994d9 771 int VL6180x_SetGroupParamHold(VL6180xDev_t dev, int Hold);
gallonm 1:1de1ea2994d9 772
gallonm 1:1de1ea2994d9 773 /**
gallonm 1:1de1ea2994d9 774 * @brief Set new device i2c address
gallonm 1:1de1ea2994d9 775 *
gallonm 1:1de1ea2994d9 776 * After completion the device will answer to the new address programmed.
gallonm 1:1de1ea2994d9 777 *
gallonm 1:1de1ea2994d9 778 * @sa AN4478: Using multiple VL6180X's in a single design
gallonm 1:1de1ea2994d9 779 * @param dev The device
gallonm 1:1de1ea2994d9 780 * @param NewAddr The new i2c address (7bit)
gallonm 1:1de1ea2994d9 781 * @return 0 on success
gallonm 1:1de1ea2994d9 782 */
gallonm 1:1de1ea2994d9 783 int VL6180x_SetI2CAddress(VL6180xDev_t dev, uint8_t NewAddr);
gallonm 1:1de1ea2994d9 784
gallonm 1:1de1ea2994d9 785 /**
gallonm 1:1de1ea2994d9 786 * @brief Fully configure gpio 0/1 pin : polarity and functionality
gallonm 1:1de1ea2994d9 787 *
gallonm 1:1de1ea2994d9 788 * @param dev The device
gallonm 1:1de1ea2994d9 789 * @param pin gpio pin 0 or 1
gallonm 1:1de1ea2994d9 790 * @param IntFunction Pin functionality : either #GPIOx_SELECT_OFF or #GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT (refer to #SYSTEM_MODE_GPIO1 register definition)
gallonm 1:1de1ea2994d9 791 * @param ActiveHigh Set active high polarity, or active low see @a ::IntrPol_e
gallonm 1:1de1ea2994d9 792 * @return 0 on success
gallonm 1:1de1ea2994d9 793 */
gallonm 1:1de1ea2994d9 794 int VL6180x_SetupGPIOx(VL6180xDev_t dev, int pin, uint8_t IntFunction, int ActiveHigh);
gallonm 1:1de1ea2994d9 795
gallonm 1:1de1ea2994d9 796
gallonm 1:1de1ea2994d9 797 /**
gallonm 1:1de1ea2994d9 798 * @brief Set interrupt pin polarity for the given GPIO
gallonm 1:1de1ea2994d9 799 *
gallonm 1:1de1ea2994d9 800 * @param dev The device
gallonm 1:1de1ea2994d9 801 * @param pin Pin 0 or 1
gallonm 1:1de1ea2994d9 802 * @param active_high select active high or low polarity using @ref IntrPol_e
gallonm 1:1de1ea2994d9 803 * @return 0 on success
gallonm 1:1de1ea2994d9 804 */
gallonm 1:1de1ea2994d9 805 int VL6180x_SetGPIOxPolarity(VL6180xDev_t dev, int pin, int active_high);
gallonm 1:1de1ea2994d9 806
gallonm 1:1de1ea2994d9 807 /**
gallonm 1:1de1ea2994d9 808 * Select interrupt functionality for the given GPIO
gallonm 1:1de1ea2994d9 809 *
gallonm 1:1de1ea2994d9 810 * @par Function Description
gallonm 1:1de1ea2994d9 811 * Functionality refer to @a SYSTEM_MODE_GPIO0
gallonm 1:1de1ea2994d9 812 *
gallonm 1:1de1ea2994d9 813 * @param dev The device
gallonm 1:1de1ea2994d9 814 * @param pin Pin to configure 0 or 1 (gpio0 or gpio1)\nNote that gpio0 is chip enable at power up !
gallonm 1:1de1ea2994d9 815 * @param functionality Pin functionality : either #GPIOx_SELECT_OFF or #GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT (refer to #SYSTEM_MODE_GPIO1 register definition)
gallonm 1:1de1ea2994d9 816 * @return 0 on success
gallonm 1:1de1ea2994d9 817 */
gallonm 1:1de1ea2994d9 818 int VL6180x_SetGPIOxFunctionality(VL6180xDev_t dev, int pin, uint8_t functionality);
gallonm 1:1de1ea2994d9 819
gallonm 1:1de1ea2994d9 820 /**
gallonm 1:1de1ea2994d9 821 * #brief Disable and turn to Hi-Z gpio output pin
gallonm 1:1de1ea2994d9 822 *
gallonm 1:1de1ea2994d9 823 * @param dev The device
gallonm 1:1de1ea2994d9 824 * @param pin The pin number to disable 0 or 1
gallonm 1:1de1ea2994d9 825 * @return 0 on success
gallonm 1:1de1ea2994d9 826 */
gallonm 1:1de1ea2994d9 827 int VL6180x_DisableGPIOxOut(VL6180xDev_t dev, int pin);
gallonm 1:1de1ea2994d9 828
gallonm 1:1de1ea2994d9 829 /**
gallonm 1:1de1ea2994d9 830 * @def msec_2_i2cloop
gallonm 1:1de1ea2994d9 831 * @brief Number of I2C polling loop (an 8 bit register) to run for maximal wait time.
gallonm 1:1de1ea2994d9 832 *
gallonm 1:1de1ea2994d9 833 * @par Function Description
gallonm 1:1de1ea2994d9 834 * When polling via I2C the overall time is mainly the I2C transaction time because it is a slow bus
gallonm 1:1de1ea2994d9 835 * one 8 bit register poll on I2C bus timing is shown below: \n
gallonm 1:1de1ea2994d9 836 * start + addr_w(a) + 2x8bit index(a) + stop + start + addr_rd(a) + 1x8bit data_rd(a) + stop \n
gallonm 1:1de1ea2994d9 837 * 1 8 1 2*(8+1) 1 1 8 1 8 1 1 \n
gallonm 1:1de1ea2994d9 838 * so 49 serial bits
gallonm 1:1de1ea2994d9 839 *
gallonm 1:1de1ea2994d9 840 * @param time_ms Time to wait in milli second 10
gallonm 1:1de1ea2994d9 841 * @param i2c_khz I2C bus frequencies in KHz for instance 400
gallonm 1:1de1ea2994d9 842 * @return The number of loops (at least 1)
gallonm 1:1de1ea2994d9 843 */
gallonm 1:1de1ea2994d9 844 #define msec_2_i2cloop( time_ms, i2c_khz ) (((time_ms)*(i2c_khz)/49)+1)
gallonm 1:1de1ea2994d9 845
gallonm 1:1de1ea2994d9 846 /** @} */
gallonm 1:1de1ea2994d9 847
gallonm 1:1de1ea2994d9 848
gallonm 1:1de1ea2994d9 849
gallonm 1:1de1ea2994d9 850 /**
gallonm 1:1de1ea2994d9 851 * polarity use in @a VL6180x_SetupGPIOx() , @a VL6180x_SetupGPIO1()
gallonm 1:1de1ea2994d9 852 */
gallonm 1:1de1ea2994d9 853 typedef enum {
gallonm 1:1de1ea2994d9 854 INTR_POL_LOW =0, /*!< set active low polarity best setup for falling edge */
gallonm 1:1de1ea2994d9 855 INTR_POL_HIGH =1, /*!< set active high polarity best setup for rising edge */
gallonm 1:1de1ea2994d9 856 }IntrPol_e;
gallonm 1:1de1ea2994d9 857
gallonm 1:1de1ea2994d9 858 /** @defgroup api_ll_intr Interrupts management functions
gallonm 1:1de1ea2994d9 859 * @brief Interrupts management functions
gallonm 1:1de1ea2994d9 860 * @ingroup api_ll
gallonm 1:1de1ea2994d9 861 * @{
gallonm 1:1de1ea2994d9 862 */
gallonm 1:1de1ea2994d9 863
gallonm 1:1de1ea2994d9 864 /**
gallonm 1:1de1ea2994d9 865 * @brief Get all interrupts cause
gallonm 1:1de1ea2994d9 866 *
gallonm 1:1de1ea2994d9 867 * @param dev The device
gallonm 1:1de1ea2994d9 868 * @param status Ptr to interrupt status. You can use @a IntrStatus_t::val
gallonm 1:1de1ea2994d9 869 * @return 0 on success
gallonm 1:1de1ea2994d9 870 */
gallonm 1:1de1ea2994d9 871 int VL6180x_GetInterruptStatus(VL6180xDev_t dev, uint8_t *status);
gallonm 1:1de1ea2994d9 872
gallonm 1:1de1ea2994d9 873 /**
gallonm 1:1de1ea2994d9 874 * @brief Clear given system interrupt condition
gallonm 1:1de1ea2994d9 875 *
gallonm 1:1de1ea2994d9 876 * @par Function Description
gallonm 1:1de1ea2994d9 877 * Clear given interrupt cause by writing into register #SYSTEM_INTERRUPT_CLEAR register.
gallonm 1:1de1ea2994d9 878 * @param dev The device
gallonm 1:1de1ea2994d9 879 * @param IntClear Which interrupt source to clear. Use any combinations of #INTERRUPT_CLEAR_RANGING , #INTERRUPT_CLEAR_ALS , #INTERRUPT_CLEAR_ERROR.
gallonm 1:1de1ea2994d9 880 * @return 0 On success
gallonm 1:1de1ea2994d9 881 */
gallonm 1:1de1ea2994d9 882 int VL6180x_ClearInterrupt(VL6180xDev_t dev, uint8_t IntClear );
gallonm 1:1de1ea2994d9 883
gallonm 1:1de1ea2994d9 884 /**
gallonm 1:1de1ea2994d9 885 * @brief Clear error interrupt
gallonm 1:1de1ea2994d9 886 *
gallonm 1:1de1ea2994d9 887 * @param dev The device
gallonm 1:1de1ea2994d9 888 * @return 0 On success
gallonm 1:1de1ea2994d9 889 */
gallonm 1:1de1ea2994d9 890 #define VL6180x_ClearErrorInterrupt(dev) VL6180x_ClearInterrupt(dev, INTERRUPT_CLEAR_ERROR)
gallonm 1:1de1ea2994d9 891
gallonm 1:1de1ea2994d9 892 /**
gallonm 1:1de1ea2994d9 893 * @brief Clear All interrupt causes (als+range+error)
gallonm 1:1de1ea2994d9 894 *
gallonm 1:1de1ea2994d9 895 * @param dev The device
gallonm 1:1de1ea2994d9 896 * @return 0 On success
gallonm 1:1de1ea2994d9 897 */
gallonm 1:1de1ea2994d9 898 #define VL6180x_ClearAllInterrupt(dev) VL6180x_ClearInterrupt(dev, INTERRUPT_CLEAR_ERROR|INTERRUPT_CLEAR_RANGING|INTERRUPT_CLEAR_ALS)
gallonm 1:1de1ea2994d9 899
gallonm 1:1de1ea2994d9 900 /** @} */
gallonm 1:1de1ea2994d9 901
gallonm 1:1de1ea2994d9 902
gallonm 1:1de1ea2994d9 903 /** @defgroup api_reg API Register access functions
gallonm 1:1de1ea2994d9 904 * @brief Registers access functions called by API core functions
gallonm 1:1de1ea2994d9 905 * @ingroup api_ll
gallonm 1:1de1ea2994d9 906 * @{
gallonm 1:1de1ea2994d9 907 */
gallonm 1:1de1ea2994d9 908
gallonm 1:1de1ea2994d9 909 /**
gallonm 1:1de1ea2994d9 910 * Write VL6180x single byte register
gallonm 1:1de1ea2994d9 911 * @param dev The device
gallonm 1:1de1ea2994d9 912 * @param index The register index
gallonm 1:1de1ea2994d9 913 * @param data 8 bit register data
gallonm 1:1de1ea2994d9 914 * @return success
gallonm 1:1de1ea2994d9 915 */
gallonm 1:1de1ea2994d9 916 int VL6180x_WrByte(VL6180xDev_t dev, uint16_t index, uint8_t data);
gallonm 1:1de1ea2994d9 917 /**
gallonm 1:1de1ea2994d9 918 * Thread safe VL6180x Update (rd/modify/write) single byte register
gallonm 1:1de1ea2994d9 919 *
gallonm 1:1de1ea2994d9 920 * Final_reg = (Initial_reg & and_data) |or_data
gallonm 1:1de1ea2994d9 921 *
gallonm 1:1de1ea2994d9 922 * @param dev The device
gallonm 1:1de1ea2994d9 923 * @param index The register index
gallonm 1:1de1ea2994d9 924 * @param AndData 8 bit and data
gallonm 1:1de1ea2994d9 925 * @param OrData 8 bit or data
gallonm 1:1de1ea2994d9 926 * @return 0 on success
gallonm 1:1de1ea2994d9 927 */
gallonm 1:1de1ea2994d9 928 int VL6180x_UpdateByte(VL6180xDev_t dev, uint16_t index, uint8_t AndData, uint8_t OrData);
gallonm 1:1de1ea2994d9 929 /**
gallonm 1:1de1ea2994d9 930 * Write VL6180x word register
gallonm 1:1de1ea2994d9 931 * @param dev The device
gallonm 1:1de1ea2994d9 932 * @param index The register index
gallonm 1:1de1ea2994d9 933 * @param data 16 bit register data
gallonm 1:1de1ea2994d9 934 * @return 0 on success
gallonm 1:1de1ea2994d9 935 */
gallonm 1:1de1ea2994d9 936 int VL6180x_WrWord(VL6180xDev_t dev, uint16_t index, uint16_t data);
gallonm 1:1de1ea2994d9 937 /**
gallonm 1:1de1ea2994d9 938 * Write VL6180x double word (4 byte) register
gallonm 1:1de1ea2994d9 939 * @param dev The device
gallonm 1:1de1ea2994d9 940 * @param index The register index
gallonm 1:1de1ea2994d9 941 * @param data 32 bit register data
gallonm 1:1de1ea2994d9 942 * @return 0 on success
gallonm 1:1de1ea2994d9 943 */
gallonm 1:1de1ea2994d9 944 int VL6180x_WrDWord(VL6180xDev_t dev, uint16_t index, uint32_t data);
gallonm 1:1de1ea2994d9 945
gallonm 1:1de1ea2994d9 946 /**
gallonm 1:1de1ea2994d9 947 * Read VL6180x single byte register
gallonm 1:1de1ea2994d9 948 * @param dev The device
gallonm 1:1de1ea2994d9 949 * @param index The register index
gallonm 1:1de1ea2994d9 950 * @param data pointer to 8 bit data
gallonm 1:1de1ea2994d9 951 * @return 0 on success
gallonm 1:1de1ea2994d9 952 */
gallonm 1:1de1ea2994d9 953 int VL6180x_RdByte(VL6180xDev_t dev, uint16_t index, uint8_t *data);
gallonm 1:1de1ea2994d9 954
gallonm 1:1de1ea2994d9 955 /**
gallonm 1:1de1ea2994d9 956 * Read VL6180x word (2byte) register
gallonm 1:1de1ea2994d9 957 * @param dev The device
gallonm 1:1de1ea2994d9 958 * @param index The register index
gallonm 1:1de1ea2994d9 959 * @param data pointer to 16 bit data
gallonm 1:1de1ea2994d9 960 * @return 0 on success
gallonm 1:1de1ea2994d9 961 */
gallonm 1:1de1ea2994d9 962 int VL6180x_RdWord(VL6180xDev_t dev, uint16_t index, uint16_t *data);
gallonm 1:1de1ea2994d9 963
gallonm 1:1de1ea2994d9 964 /**
gallonm 1:1de1ea2994d9 965 * Read VL6180x dword (4byte) register
gallonm 1:1de1ea2994d9 966 * @param dev The device
gallonm 1:1de1ea2994d9 967 * @param index The register index
gallonm 1:1de1ea2994d9 968 * @param data pointer to 32 bit data
gallonm 1:1de1ea2994d9 969 * @return 0 on success
gallonm 1:1de1ea2994d9 970 */
gallonm 1:1de1ea2994d9 971 int VL6180x_RdDWord(VL6180xDev_t dev, uint16_t index, uint32_t *data);
gallonm 1:1de1ea2994d9 972
gallonm 1:1de1ea2994d9 973 /** @} */
gallonm 1:1de1ea2994d9 974
gallonm 1:1de1ea2994d9 975
gallonm 1:1de1ea2994d9 976
gallonm 1:1de1ea2994d9 977
gallonm 1:1de1ea2994d9 978 #ifdef __cplusplus
gallonm 1:1de1ea2994d9 979 }
gallonm 1:1de1ea2994d9 980 #endif
gallonm 1:1de1ea2994d9 981
gallonm 1:1de1ea2994d9 982 #endif /* VL6180x_API_H_ */