Fork, renaming of VL53L1CB-2
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
inc/VL53L1CB.h@13:3f1b341901dd, 2021-06-11 (annotated)
- Committer:
- Charles MacNeill
- Date:
- Fri Jun 11 17:08:27 2021 +0100
- Revision:
- 13:3f1b341901dd
changing case of vl53l1cb.* so it works in linux
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Charles MacNeill |
13:3f1b341901dd | 1 | /******************************************************************************* |
Charles MacNeill |
13:3f1b341901dd | 2 | * @file vl53l1x_class.h |
Charles MacNeill |
13:3f1b341901dd | 3 | * @author JS |
Charles MacNeill |
13:3f1b341901dd | 4 | * @version V0.0.1 |
Charles MacNeill |
13:3f1b341901dd | 5 | * @date 15-January-2019 |
Charles MacNeill |
13:3f1b341901dd | 6 | * @brief Header file for VL53L1 sensor component |
Charles MacNeill |
13:3f1b341901dd | 7 | ****************************************************************************** |
Charles MacNeill |
13:3f1b341901dd | 8 | Copyright © 2019, STMicroelectronics International N.V. |
Charles MacNeill |
13:3f1b341901dd | 9 | All rights reserved. |
Charles MacNeill |
13:3f1b341901dd | 10 | Redistribution and use in source and binary forms, with or without |
Charles MacNeill |
13:3f1b341901dd | 11 | modification, are permitted provided that the following conditions are met: |
Charles MacNeill |
13:3f1b341901dd | 12 | * Redistributions of source code must retain the above copyright |
Charles MacNeill |
13:3f1b341901dd | 13 | notice, this list of conditions and the following disclaimer. |
Charles MacNeill |
13:3f1b341901dd | 14 | * Redistributions in binary form must reproduce the above copyright |
Charles MacNeill |
13:3f1b341901dd | 15 | notice, this list of conditions and the following disclaimer in the |
Charles MacNeill |
13:3f1b341901dd | 16 | documentation and/or other materials provided with the distribution. |
Charles MacNeill |
13:3f1b341901dd | 17 | * Neither the name of STMicroelectronics nor the |
Charles MacNeill |
13:3f1b341901dd | 18 | names of its contributors may be used to endorse or promote products |
Charles MacNeill |
13:3f1b341901dd | 19 | derived from this software without specific prior written permission. |
Charles MacNeill |
13:3f1b341901dd | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
Charles MacNeill |
13:3f1b341901dd | 21 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
Charles MacNeill |
13:3f1b341901dd | 22 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND |
Charles MacNeill |
13:3f1b341901dd | 23 | NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED. |
Charles MacNeill |
13:3f1b341901dd | 24 | IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY |
Charles MacNeill |
13:3f1b341901dd | 25 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
Charles MacNeill |
13:3f1b341901dd | 26 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
Charles MacNeill |
13:3f1b341901dd | 27 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
Charles MacNeill |
13:3f1b341901dd | 28 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
Charles MacNeill |
13:3f1b341901dd | 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
Charles MacNeill |
13:3f1b341901dd | 30 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Charles MacNeill |
13:3f1b341901dd | 31 | *****************************************************************************/ |
Charles MacNeill |
13:3f1b341901dd | 32 | |
Charles MacNeill |
13:3f1b341901dd | 33 | #ifndef __VL53L1X_CLASS_H |
Charles MacNeill |
13:3f1b341901dd | 34 | #define __VL53L1X_CLASS_H |
Charles MacNeill |
13:3f1b341901dd | 35 | |
Charles MacNeill |
13:3f1b341901dd | 36 | |
Charles MacNeill |
13:3f1b341901dd | 37 | |
Charles MacNeill |
13:3f1b341901dd | 38 | /* Includes ------------------------------------------------------------------*/ |
Charles MacNeill |
13:3f1b341901dd | 39 | |
Charles MacNeill |
13:3f1b341901dd | 40 | #include "mbed.h" |
Charles MacNeill |
13:3f1b341901dd | 41 | #include "PinNames.h" |
Charles MacNeill |
13:3f1b341901dd | 42 | |
Charles MacNeill |
13:3f1b341901dd | 43 | #include "RangeSensor.h" |
Charles MacNeill |
13:3f1b341901dd | 44 | #include "Stmpe1600.h" |
Charles MacNeill |
13:3f1b341901dd | 45 | |
Charles MacNeill |
13:3f1b341901dd | 46 | #include "vl53l1_error_codes.h" |
Charles MacNeill |
13:3f1b341901dd | 47 | #include "vl53l1_platform_user_data.h" |
Charles MacNeill |
13:3f1b341901dd | 48 | |
Charles MacNeill |
13:3f1b341901dd | 49 | //#include "DevI2C.h" |
Charles MacNeill |
13:3f1b341901dd | 50 | #include "ToF_I2C.h" |
Charles MacNeill |
13:3f1b341901dd | 51 | /**********************************************************/ |
Charles MacNeill |
13:3f1b341901dd | 52 | #include "vl53l1_def.h" |
Charles MacNeill |
13:3f1b341901dd | 53 | /***********************************************************/ |
Charles MacNeill |
13:3f1b341901dd | 54 | |
Charles MacNeill |
13:3f1b341901dd | 55 | |
Charles MacNeill |
13:3f1b341901dd | 56 | #define VL53L1CB_IMPLEMENTATION_VER_MAJOR 1 |
Charles MacNeill |
13:3f1b341901dd | 57 | #define VL53L1CB_IMPLEMENTATION_VER_MINOR 0 |
Charles MacNeill |
13:3f1b341901dd | 58 | #define VL53L1CB_IMPLEMENTATION_VER_SUB 1 |
Charles MacNeill |
13:3f1b341901dd | 59 | #define VL53L1CB_IMPLEMENTATION_VER_REVISION 0000 |
Charles MacNeill |
13:3f1b341901dd | 60 | |
Charles MacNeill |
13:3f1b341901dd | 61 | typedef int8_t VL53L1CB_ERROR; |
Charles MacNeill |
13:3f1b341901dd | 62 | |
Charles MacNeill |
13:3f1b341901dd | 63 | //#define SOFT_RESET 0x0000 |
Charles MacNeill |
13:3f1b341901dd | 64 | #define VL53L1CB_I2C_SLAVE__DEVICE_ADDRESS 0x0001 |
Charles MacNeill |
13:3f1b341901dd | 65 | #define VL53L1CB_VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND 0x0008 |
Charles MacNeill |
13:3f1b341901dd | 66 | #define ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS 0x0016 |
Charles MacNeill |
13:3f1b341901dd | 67 | #define ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS 0x0018 |
Charles MacNeill |
13:3f1b341901dd | 68 | #define ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS 0x001A |
Charles MacNeill |
13:3f1b341901dd | 69 | #define ALGO__PART_TO_PART_RANGE_OFFSET_MM 0x001E |
Charles MacNeill |
13:3f1b341901dd | 70 | #define MM_CONFIG__INNER_OFFSET_MM 0x0020 |
Charles MacNeill |
13:3f1b341901dd | 71 | #define MM_CONFIG__OUTER_OFFSET_MM 0x0022 |
Charles MacNeill |
13:3f1b341901dd | 72 | #define GPIO_HV_MUX__CTRL 0x0030 |
Charles MacNeill |
13:3f1b341901dd | 73 | #define GPIO__TIO_HV_STATUS 0x0031 |
Charles MacNeill |
13:3f1b341901dd | 74 | #define SYSTEM__INTERRUPT_CONFIG_GPIO 0x0046 |
Charles MacNeill |
13:3f1b341901dd | 75 | #define PHASECAL_CONFIG__TIMEOUT_MACROP 0x004B |
Charles MacNeill |
13:3f1b341901dd | 76 | #define RANGE_CONFIG__TIMEOUT_MACROP_A_HI 0x005E |
Charles MacNeill |
13:3f1b341901dd | 77 | #define RANGE_CONFIG__VCSEL_PERIOD_A 0x0060 |
Charles MacNeill |
13:3f1b341901dd | 78 | #define RANGE_CONFIG__VCSEL_PERIOD_B 0x0063 |
Charles MacNeill |
13:3f1b341901dd | 79 | #define RANGE_CONFIG__TIMEOUT_MACROP_B_HI 0x0061 |
Charles MacNeill |
13:3f1b341901dd | 80 | #define RANGE_CONFIG__TIMEOUT_MACROP_B_LO 0x0062 |
Charles MacNeill |
13:3f1b341901dd | 81 | #define RANGE_CONFIG__SIGMA_THRESH 0x0064 |
Charles MacNeill |
13:3f1b341901dd | 82 | #define RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS 0x0066 |
Charles MacNeill |
13:3f1b341901dd | 83 | #define RANGE_CONFIG__VALID_PHASE_HIGH 0x0069 |
Charles MacNeill |
13:3f1b341901dd | 84 | #define SYSTEM__THRESH_HIGH 0x0072 |
Charles MacNeill |
13:3f1b341901dd | 85 | #define SYSTEM__THRESH_LOW 0x0074 |
Charles MacNeill |
13:3f1b341901dd | 86 | #define SD_CONFIG__WOI_SD0 0x0078 |
Charles MacNeill |
13:3f1b341901dd | 87 | #define SD_CONFIG__INITIAL_PHASE_SD0 0x007A |
Charles MacNeill |
13:3f1b341901dd | 88 | #define ROI_CONFIG__USER_ROI_CENTRE_SPAD 0x007F |
Charles MacNeill |
13:3f1b341901dd | 89 | #define ROI_CONFIG__USER_ROI_REQUESTED_GLOBAL_XY_SIZE 0x0080 |
Charles MacNeill |
13:3f1b341901dd | 90 | #define SYSTEM__SEQUENCE_CONFIG 0x0081 |
Charles MacNeill |
13:3f1b341901dd | 91 | #define SYSTEM__INTERRUPT_CLEAR 0x0086 |
Charles MacNeill |
13:3f1b341901dd | 92 | #define SYSTEM__MODE_START 0x0087 |
Charles MacNeill |
13:3f1b341901dd | 93 | #define RESULT__AMBIENT_COUNT_RATE_MCPS_SD 0x0090 |
Charles MacNeill |
13:3f1b341901dd | 94 | #define VL53L1CB_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0 0x0096 |
Charles MacNeill |
13:3f1b341901dd | 95 | #define VL53L1CB_FIRMWARE__SYSTEM_STATUS 0x00E5 |
Charles MacNeill |
13:3f1b341901dd | 96 | |
Charles MacNeill |
13:3f1b341901dd | 97 | |
Charles MacNeill |
13:3f1b341901dd | 98 | |
Charles MacNeill |
13:3f1b341901dd | 99 | #define VL53L1CB_DEFAULT_DEVICE_ADDRESS 0x52 |
Charles MacNeill |
13:3f1b341901dd | 100 | |
Charles MacNeill |
13:3f1b341901dd | 101 | #define VL53L1CB_REG_IDENTIFICATION_MODEL_ID 0x010F |
Charles MacNeill |
13:3f1b341901dd | 102 | |
Charles MacNeill |
13:3f1b341901dd | 103 | /**************************************** |
Charles MacNeill |
13:3f1b341901dd | 104 | * PRIVATE define do not edit |
Charles MacNeill |
13:3f1b341901dd | 105 | ****************************************/ |
Charles MacNeill |
13:3f1b341901dd | 106 | |
Charles MacNeill |
13:3f1b341901dd | 107 | /** |
Charles MacNeill |
13:3f1b341901dd | 108 | * @brief defines SW Version |
Charles MacNeill |
13:3f1b341901dd | 109 | */ |
Charles MacNeill |
13:3f1b341901dd | 110 | //typedef struct { |
Charles MacNeill |
13:3f1b341901dd | 111 | // uint8_t major; /*!< major number */ |
Charles MacNeill |
13:3f1b341901dd | 112 | // uint8_t minor; /*!< minor number */ |
Charles MacNeill |
13:3f1b341901dd | 113 | // uint8_t build; /*!< build number */ |
Charles MacNeill |
13:3f1b341901dd | 114 | // uint32_t revision; /*!< revision number */ |
Charles MacNeill |
13:3f1b341901dd | 115 | //} VL53L1X_Version_t; |
Charles MacNeill |
13:3f1b341901dd | 116 | |
Charles MacNeill |
13:3f1b341901dd | 117 | |
Charles MacNeill |
13:3f1b341901dd | 118 | /* Classes -------------------------------------------------------------------*/ |
Charles MacNeill |
13:3f1b341901dd | 119 | /** Class representing a VL53L1CB sensor component |
Charles MacNeill |
13:3f1b341901dd | 120 | */ |
Charles MacNeill |
13:3f1b341901dd | 121 | class VL53L1CB : public RangeSensor |
Charles MacNeill |
13:3f1b341901dd | 122 | { |
Charles MacNeill |
13:3f1b341901dd | 123 | |
Charles MacNeill |
13:3f1b341901dd | 124 | |
Charles MacNeill |
13:3f1b341901dd | 125 | |
Charles MacNeill |
13:3f1b341901dd | 126 | public: |
Charles MacNeill |
13:3f1b341901dd | 127 | |
Charles MacNeill |
13:3f1b341901dd | 128 | |
Charles MacNeill |
13:3f1b341901dd | 129 | #define VL53L1DevStructGetLLDriverHandle(Dev) (&Dev->Data.LLData) |
Charles MacNeill |
13:3f1b341901dd | 130 | /** Constructor |
Charles MacNeill |
13:3f1b341901dd | 131 | * @param[in] &i2c device I2C to be used for communication |
Charles MacNeill |
13:3f1b341901dd | 132 | * @param[in] &pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT |
Charles MacNeill |
13:3f1b341901dd | 133 | * @param[in] DevAddr device address, 0x52 by default |
Charles MacNeill |
13:3f1b341901dd | 134 | */ |
Charles MacNeill |
13:3f1b341901dd | 135 | /* |
Charles MacNeill |
13:3f1b341901dd | 136 | VL53L1CB(ToF_DevI2C *i2c, DigitalOut *pin, PinName pin_gpio1, uint8_t dev_addr = VL53L1CB_DEFAULT_DEVICE_ADDRESS) |
Charles MacNeill |
13:3f1b341901dd | 137 | : RangeSensor(), dev_i2c(i2c), _gpio0(pin) |
Charles MacNeill |
13:3f1b341901dd | 138 | { |
Charles MacNeill |
13:3f1b341901dd | 139 | MyDevice.i2c_slave_address=dev_addr; |
Charles MacNeill |
13:3f1b341901dd | 140 | Device = &MyDevice; |
Charles MacNeill |
13:3f1b341901dd | 141 | |
Charles MacNeill |
13:3f1b341901dd | 142 | _expgpio0 = NULL; |
Charles MacNeill |
13:3f1b341901dd | 143 | if (pin_gpio1 != NC) { |
Charles MacNeill |
13:3f1b341901dd | 144 | _gpio1Int = new InterruptIn(pin_gpio1); |
Charles MacNeill |
13:3f1b341901dd | 145 | } else { |
Charles MacNeill |
13:3f1b341901dd | 146 | _gpio1Int = NULL; |
Charles MacNeill |
13:3f1b341901dd | 147 | } |
Charles MacNeill |
13:3f1b341901dd | 148 | } |
Charles MacNeill |
13:3f1b341901dd | 149 | */ |
Charles MacNeill |
13:3f1b341901dd | 150 | |
Charles MacNeill |
13:3f1b341901dd | 151 | /** Constructor 2 (STMPE1600DigiOut) |
Charles MacNeill |
13:3f1b341901dd | 152 | * @param[in] i2c device I2C to be used for communication |
Charles MacNeill |
13:3f1b341901dd | 153 | * @param[in] &pin Gpio Expander STMPE1600DigiOut pin to be used as component GPIO_0 CE |
Charles MacNeill |
13:3f1b341901dd | 154 | * @param[in] pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT |
Charles MacNeill |
13:3f1b341901dd | 155 | * @param[in] device address, 0x29 by default |
Charles MacNeill |
13:3f1b341901dd | 156 | */ |
Charles MacNeill |
13:3f1b341901dd | 157 | VL53L1CB(ToF_DevI2C *i2c, Stmpe1600DigiOut *pin, PinName pin_gpio1, |
Charles MacNeill |
13:3f1b341901dd | 158 | uint8_t dev_addr = VL53L1CB_DEFAULT_DEVICE_ADDRESS) |
Charles MacNeill |
13:3f1b341901dd | 159 | : dev_i2c(i2c), _expgpio0(pin) |
Charles MacNeill |
13:3f1b341901dd | 160 | { |
Charles MacNeill |
13:3f1b341901dd | 161 | MyDevice.i2c_slave_address=dev_addr; |
Charles MacNeill |
13:3f1b341901dd | 162 | Device = &MyDevice; |
Charles MacNeill |
13:3f1b341901dd | 163 | |
Charles MacNeill |
13:3f1b341901dd | 164 | _gpio0 = NULL; |
Charles MacNeill |
13:3f1b341901dd | 165 | if (pin_gpio1 != NC) { |
Charles MacNeill |
13:3f1b341901dd | 166 | _gpio1Int = new InterruptIn(pin_gpio1); |
Charles MacNeill |
13:3f1b341901dd | 167 | } else { |
Charles MacNeill |
13:3f1b341901dd | 168 | _gpio1Int = NULL; |
Charles MacNeill |
13:3f1b341901dd | 169 | } |
Charles MacNeill |
13:3f1b341901dd | 170 | } |
Charles MacNeill |
13:3f1b341901dd | 171 | |
Charles MacNeill |
13:3f1b341901dd | 172 | /** Destructor |
Charles MacNeill |
13:3f1b341901dd | 173 | */ |
Charles MacNeill |
13:3f1b341901dd | 174 | virtual ~VL53L1CB() |
Charles MacNeill |
13:3f1b341901dd | 175 | { |
Charles MacNeill |
13:3f1b341901dd | 176 | if (_gpio1Int != NULL) { |
Charles MacNeill |
13:3f1b341901dd | 177 | delete _gpio1Int; |
Charles MacNeill |
13:3f1b341901dd | 178 | } |
Charles MacNeill |
13:3f1b341901dd | 179 | } |
Charles MacNeill |
13:3f1b341901dd | 180 | |
Charles MacNeill |
13:3f1b341901dd | 181 | |
Charles MacNeill |
13:3f1b341901dd | 182 | |
Charles MacNeill |
13:3f1b341901dd | 183 | VL53L1_DEV getDevicePtr() { return Device; } |
Charles MacNeill |
13:3f1b341901dd | 184 | |
Charles MacNeill |
13:3f1b341901dd | 185 | |
Charles MacNeill |
13:3f1b341901dd | 186 | /* warning: VL53L1CB class inherits from GenericSensor, RangeSensor and LightSensor, that haven`t a destructor. |
Charles MacNeill |
13:3f1b341901dd | 187 | The warning should request to introduce a virtual destructor to make sure to delete the object */ |
Charles MacNeill |
13:3f1b341901dd | 188 | |
Charles MacNeill |
13:3f1b341901dd | 189 | /*** Interface Methods ***/ |
Charles MacNeill |
13:3f1b341901dd | 190 | /*** High level API ***/ |
Charles MacNeill |
13:3f1b341901dd | 191 | /** |
Charles MacNeill |
13:3f1b341901dd | 192 | * @brief PowerOn the sensor |
Charles MacNeill |
13:3f1b341901dd | 193 | * @return void |
Charles MacNeill |
13:3f1b341901dd | 194 | */ |
Charles MacNeill |
13:3f1b341901dd | 195 | /* turns on the sensor */ |
Charles MacNeill |
13:3f1b341901dd | 196 | virtual void VL53L1CB_On(void) |
Charles MacNeill |
13:3f1b341901dd | 197 | { |
Charles MacNeill |
13:3f1b341901dd | 198 | printf("VL53L1CB_On\r\n"); |
Charles MacNeill |
13:3f1b341901dd | 199 | if (_gpio0) { |
Charles MacNeill |
13:3f1b341901dd | 200 | *_gpio0 = 1; |
Charles MacNeill |
13:3f1b341901dd | 201 | } else { |
Charles MacNeill |
13:3f1b341901dd | 202 | if (_expgpio0) { |
Charles MacNeill |
13:3f1b341901dd | 203 | *_expgpio0 = 1; |
Charles MacNeill |
13:3f1b341901dd | 204 | } |
Charles MacNeill |
13:3f1b341901dd | 205 | } |
Charles MacNeill |
13:3f1b341901dd | 206 | #if (MBED_VERSION > 60300) |
Charles MacNeill |
13:3f1b341901dd | 207 | thread_sleep_for(100); |
Charles MacNeill |
13:3f1b341901dd | 208 | #else |
Charles MacNeill |
13:3f1b341901dd | 209 | wait_ms(100); // NEEDS A DELAY BETWEEN SENSORS |
Charles MacNeill |
13:3f1b341901dd | 210 | #endif |
Charles MacNeill |
13:3f1b341901dd | 211 | } |
Charles MacNeill |
13:3f1b341901dd | 212 | |
Charles MacNeill |
13:3f1b341901dd | 213 | /** |
Charles MacNeill |
13:3f1b341901dd | 214 | * @brief PowerOff the sensor |
Charles MacNeill |
13:3f1b341901dd | 215 | * @return void |
Charles MacNeill |
13:3f1b341901dd | 216 | */ |
Charles MacNeill |
13:3f1b341901dd | 217 | /* turns off the sensor */ |
Charles MacNeill |
13:3f1b341901dd | 218 | virtual void VL53L1CB_Off(void) |
Charles MacNeill |
13:3f1b341901dd | 219 | { |
Charles MacNeill |
13:3f1b341901dd | 220 | printf("VL53L1_Off\r\n"); |
Charles MacNeill |
13:3f1b341901dd | 221 | if (_gpio0) { |
Charles MacNeill |
13:3f1b341901dd | 222 | *_gpio0 = 0; |
Charles MacNeill |
13:3f1b341901dd | 223 | } else { |
Charles MacNeill |
13:3f1b341901dd | 224 | if (_expgpio0) { |
Charles MacNeill |
13:3f1b341901dd | 225 | *_expgpio0 = 0; |
Charles MacNeill |
13:3f1b341901dd | 226 | } |
Charles MacNeill |
13:3f1b341901dd | 227 | } |
Charles MacNeill |
13:3f1b341901dd | 228 | #if (MBED_VERSION > 60300) |
Charles MacNeill |
13:3f1b341901dd | 229 | thread_sleep_for(100); |
Charles MacNeill |
13:3f1b341901dd | 230 | #else |
Charles MacNeill |
13:3f1b341901dd | 231 | wait_ms(100); // NEEDS A DELAY BETWEEN SENSORS |
Charles MacNeill |
13:3f1b341901dd | 232 | #endif |
Charles MacNeill |
13:3f1b341901dd | 233 | } |
Charles MacNeill |
13:3f1b341901dd | 234 | |
Charles MacNeill |
13:3f1b341901dd | 235 | int is_present() |
Charles MacNeill |
13:3f1b341901dd | 236 | { |
Charles MacNeill |
13:3f1b341901dd | 237 | int status; |
Charles MacNeill |
13:3f1b341901dd | 238 | uint8_t id = 0; |
Charles MacNeill |
13:3f1b341901dd | 239 | |
Charles MacNeill |
13:3f1b341901dd | 240 | status = read_id(&id); |
Charles MacNeill |
13:3f1b341901dd | 241 | if (status) { |
Charles MacNeill |
13:3f1b341901dd | 242 | printf("Failed to read ID device. Device not present!\n\r"); |
Charles MacNeill |
13:3f1b341901dd | 243 | } |
Charles MacNeill |
13:3f1b341901dd | 244 | return status; |
Charles MacNeill |
13:3f1b341901dd | 245 | } |
Charles MacNeill |
13:3f1b341901dd | 246 | |
Charles MacNeill |
13:3f1b341901dd | 247 | /** |
Charles MacNeill |
13:3f1b341901dd | 248 | * @brief Initialize the sensor with default values |
Charles MacNeill |
13:3f1b341901dd | 249 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 250 | */ |
Charles MacNeill |
13:3f1b341901dd | 251 | |
Charles MacNeill |
13:3f1b341901dd | 252 | VL53L1CB_ERROR InitSensor(uint8_t address){ |
Charles MacNeill |
13:3f1b341901dd | 253 | VL53L1CB_ERROR status = 0; |
Charles MacNeill |
13:3f1b341901dd | 254 | uint8_t sensorState = 0; |
Charles MacNeill |
13:3f1b341901dd | 255 | VL53L1CB_Off(); |
Charles MacNeill |
13:3f1b341901dd | 256 | VL53L1CB_On(); |
Charles MacNeill |
13:3f1b341901dd | 257 | status = VL53L1CB_SetI2CAddress(address); |
Charles MacNeill |
13:3f1b341901dd | 258 | if(!status){ |
Charles MacNeill |
13:3f1b341901dd | 259 | status = VL53L1CB_SensorInit(); |
Charles MacNeill |
13:3f1b341901dd | 260 | } |
Charles MacNeill |
13:3f1b341901dd | 261 | |
Charles MacNeill |
13:3f1b341901dd | 262 | while(!status && !sensorState) { |
Charles MacNeill |
13:3f1b341901dd | 263 | status = VL53L1CB_BootState(&sensorState); |
Charles MacNeill |
13:3f1b341901dd | 264 | |
Charles MacNeill |
13:3f1b341901dd | 265 | #if (MBED_VERSION > 60300) |
Charles MacNeill |
13:3f1b341901dd | 266 | thread_sleep_for(2); |
Charles MacNeill |
13:3f1b341901dd | 267 | #else |
Charles MacNeill |
13:3f1b341901dd | 268 | wait_ms(2); // NEEDS A DELAY BETWEEN SENSORS |
Charles MacNeill |
13:3f1b341901dd | 269 | #endif |
Charles MacNeill |
13:3f1b341901dd | 270 | } |
Charles MacNeill |
13:3f1b341901dd | 271 | return status; |
Charles MacNeill |
13:3f1b341901dd | 272 | } |
Charles MacNeill |
13:3f1b341901dd | 273 | |
Charles MacNeill |
13:3f1b341901dd | 274 | |
Charles MacNeill |
13:3f1b341901dd | 275 | |
Charles MacNeill |
13:3f1b341901dd | 276 | /** |
Charles MacNeill |
13:3f1b341901dd | 277 | * |
Charles MacNeill |
13:3f1b341901dd | 278 | * @brief One time device initialization |
Charles MacNeill |
13:3f1b341901dd | 279 | * @param void |
Charles MacNeill |
13:3f1b341901dd | 280 | * @return 0 on success, @a #CALIBRATION_WARNING if failed |
Charles MacNeill |
13:3f1b341901dd | 281 | */ |
Charles MacNeill |
13:3f1b341901dd | 282 | virtual int init(void *init) |
Charles MacNeill |
13:3f1b341901dd | 283 | { |
Charles MacNeill |
13:3f1b341901dd | 284 | return VL53L1CB_SensorInit(); |
Charles MacNeill |
13:3f1b341901dd | 285 | return 0; |
Charles MacNeill |
13:3f1b341901dd | 286 | } |
Charles MacNeill |
13:3f1b341901dd | 287 | |
Charles MacNeill |
13:3f1b341901dd | 288 | |
Charles MacNeill |
13:3f1b341901dd | 289 | /** |
Charles MacNeill |
13:3f1b341901dd | 290 | * @brief Initialize the sensor with default values |
Charles MacNeill |
13:3f1b341901dd | 291 | * @return "0" on success |
Charles MacNeill |
13:3f1b341901dd | 292 | */ |
Charles MacNeill |
13:3f1b341901dd | 293 | int init_sensor(uint8_t new_addr); |
Charles MacNeill |
13:3f1b341901dd | 294 | |
Charles MacNeill |
13:3f1b341901dd | 295 | /* Read function of the ID device */ |
Charles MacNeill |
13:3f1b341901dd | 296 | virtual int read_id(uint8_t *id){ |
Charles MacNeill |
13:3f1b341901dd | 297 | int status = 0; |
Charles MacNeill |
13:3f1b341901dd | 298 | uint16_t rl_id = 0; |
Charles MacNeill |
13:3f1b341901dd | 299 | |
Charles MacNeill |
13:3f1b341901dd | 300 | uint8_t ExpanderData[2]; |
Charles MacNeill |
13:3f1b341901dd | 301 | |
Charles MacNeill |
13:3f1b341901dd | 302 | ExpanderData[0] = 0; |
Charles MacNeill |
13:3f1b341901dd | 303 | ExpanderData[1] = 0; |
Charles MacNeill |
13:3f1b341901dd | 304 | rl_id = 0; |
Charles MacNeill |
13:3f1b341901dd | 305 | dev_i2c->ToF_i2c_read(&ExpanderData[0], Device->i2c_slave_address, VL53L1CB_REG_IDENTIFICATION_MODEL_ID, 2); |
Charles MacNeill |
13:3f1b341901dd | 306 | |
Charles MacNeill |
13:3f1b341901dd | 307 | rl_id = (ExpanderData[0] << 8) + ExpanderData[1]; |
Charles MacNeill |
13:3f1b341901dd | 308 | printf("Model ID is: %d (%X) \r\n",rl_id, rl_id); |
Charles MacNeill |
13:3f1b341901dd | 309 | |
Charles MacNeill |
13:3f1b341901dd | 310 | uint8_t tmp = 0; |
Charles MacNeill |
13:3f1b341901dd | 311 | ExpanderData[0] = VL53L1CB_FIRMWARE__SYSTEM_STATUS >> 8; |
Charles MacNeill |
13:3f1b341901dd | 312 | ExpanderData[1] = VL53L1CB_FIRMWARE__SYSTEM_STATUS & 0x0FF; |
Charles MacNeill |
13:3f1b341901dd | 313 | dev_i2c->ToF_i2c_read(&tmp, Device->i2c_slave_address, VL53L1CB_FIRMWARE__SYSTEM_STATUS, 1); |
Charles MacNeill |
13:3f1b341901dd | 314 | |
Charles MacNeill |
13:3f1b341901dd | 315 | printf("Firmware system is: %d\r\n",tmp); |
Charles MacNeill |
13:3f1b341901dd | 316 | |
Charles MacNeill |
13:3f1b341901dd | 317 | if (rl_id == 0xEACC) { |
Charles MacNeill |
13:3f1b341901dd | 318 | printf("Device is present %d:\r\n", rl_id); |
Charles MacNeill |
13:3f1b341901dd | 319 | return status; |
Charles MacNeill |
13:3f1b341901dd | 320 | } |
Charles MacNeill |
13:3f1b341901dd | 321 | return -1; |
Charles MacNeill |
13:3f1b341901dd | 322 | } |
Charles MacNeill |
13:3f1b341901dd | 323 | |
Charles MacNeill |
13:3f1b341901dd | 324 | |
Charles MacNeill |
13:3f1b341901dd | 325 | /** |
Charles MacNeill |
13:3f1b341901dd | 326 | * @brief Interrupt handling func to be called by user after an INT is occurred |
Charles MacNeill |
13:3f1b341901dd | 327 | * @param[out] Data pointer to the distance to read data in to |
Charles MacNeill |
13:3f1b341901dd | 328 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 329 | */ |
Charles MacNeill |
13:3f1b341901dd | 330 | int handle_irq(uint16_t *distance); |
Charles MacNeill |
13:3f1b341901dd | 331 | |
Charles MacNeill |
13:3f1b341901dd | 332 | /** |
Charles MacNeill |
13:3f1b341901dd | 333 | * @brief Start the measure indicated by operating mode |
Charles MacNeill |
13:3f1b341901dd | 334 | * @param[in] fptr specifies call back function must be !NULL in case of interrupt measure |
Charles MacNeill |
13:3f1b341901dd | 335 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 336 | */ |
Charles MacNeill |
13:3f1b341901dd | 337 | int start_measurement(void (*fptr)(void)); |
Charles MacNeill |
13:3f1b341901dd | 338 | /** |
Charles MacNeill |
13:3f1b341901dd | 339 | * @brief Stop the currently running measure indicate by operating_mode |
Charles MacNeill |
13:3f1b341901dd | 340 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 341 | */ |
Charles MacNeill |
13:3f1b341901dd | 342 | int stop_measurement(); |
Charles MacNeill |
13:3f1b341901dd | 343 | /** |
Charles MacNeill |
13:3f1b341901dd | 344 | * @brief Get results for the measure |
Charles MacNeill |
13:3f1b341901dd | 345 | * @param[out] Data pointer to the distance_data to read data in to |
Charles MacNeill |
13:3f1b341901dd | 346 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 347 | */ |
Charles MacNeill |
13:3f1b341901dd | 348 | int get_measurement(uint16_t *distance); |
Charles MacNeill |
13:3f1b341901dd | 349 | /** |
Charles MacNeill |
13:3f1b341901dd | 350 | * @brief Enable interrupt measure IRQ |
Charles MacNeill |
13:3f1b341901dd | 351 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 352 | */ |
Charles MacNeill |
13:3f1b341901dd | 353 | void enable_interrupt_measure_detection_irq(void) |
Charles MacNeill |
13:3f1b341901dd | 354 | { |
Charles MacNeill |
13:3f1b341901dd | 355 | if (_gpio1Int != NULL) |
Charles MacNeill |
13:3f1b341901dd | 356 | _gpio1Int->enable_irq(); |
Charles MacNeill |
13:3f1b341901dd | 357 | } |
Charles MacNeill |
13:3f1b341901dd | 358 | |
Charles MacNeill |
13:3f1b341901dd | 359 | /** |
Charles MacNeill |
13:3f1b341901dd | 360 | * @brief Disable interrupt measure IRQ |
Charles MacNeill |
13:3f1b341901dd | 361 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 362 | */ |
Charles MacNeill |
13:3f1b341901dd | 363 | void disable_interrupt_measure_detection_irq(void) |
Charles MacNeill |
13:3f1b341901dd | 364 | { |
Charles MacNeill |
13:3f1b341901dd | 365 | if (_gpio1Int != NULL) |
Charles MacNeill |
13:3f1b341901dd | 366 | _gpio1Int->disable_irq(); |
Charles MacNeill |
13:3f1b341901dd | 367 | } |
Charles MacNeill |
13:3f1b341901dd | 368 | /** |
Charles MacNeill |
13:3f1b341901dd | 369 | * @brief Attach a function to call when an interrupt is detected, i.e. measurement is ready |
Charles MacNeill |
13:3f1b341901dd | 370 | * @param[in] fptr pointer to call back function to be called whenever an interrupt occours |
Charles MacNeill |
13:3f1b341901dd | 371 | * @return 0 on Success |
Charles MacNeill |
13:3f1b341901dd | 372 | */ |
Charles MacNeill |
13:3f1b341901dd | 373 | void attach_interrupt_measure_detection_irq(void (*fptr)(void)) |
Charles MacNeill |
13:3f1b341901dd | 374 | { |
Charles MacNeill |
13:3f1b341901dd | 375 | if (_gpio1Int != NULL) |
Charles MacNeill |
13:3f1b341901dd | 376 | _gpio1Int->rise(fptr); |
Charles MacNeill |
13:3f1b341901dd | 377 | } |
Charles MacNeill |
13:3f1b341901dd | 378 | |
Charles MacNeill |
13:3f1b341901dd | 379 | /** |
Charles MacNeill |
13:3f1b341901dd | 380 | * @brief Get ranging result and only that |
Charles MacNeill |
13:3f1b341901dd | 381 | * @param pRange_mm Pointer to range distance |
Charles MacNeill |
13:3f1b341901dd | 382 | * @return 0 on success |
Charles MacNeill |
13:3f1b341901dd | 383 | */ |
Charles MacNeill |
13:3f1b341901dd | 384 | virtual int get_distance(uint32_t *piData) |
Charles MacNeill |
13:3f1b341901dd | 385 | { |
Charles MacNeill |
13:3f1b341901dd | 386 | int status; |
Charles MacNeill |
13:3f1b341901dd | 387 | uint16_t distance; |
Charles MacNeill |
13:3f1b341901dd | 388 | status = VL53L1CB_GetDistance(&distance); |
Charles MacNeill |
13:3f1b341901dd | 389 | *piData = (uint32_t) distance; |
Charles MacNeill |
13:3f1b341901dd | 390 | return status; |
Charles MacNeill |
13:3f1b341901dd | 391 | } |
Charles MacNeill |
13:3f1b341901dd | 392 | |
Charles MacNeill |
13:3f1b341901dd | 393 | |
Charles MacNeill |
13:3f1b341901dd | 394 | /* VL53L1X_api.h functions */ |
Charles MacNeill |
13:3f1b341901dd | 395 | |
Charles MacNeill |
13:3f1b341901dd | 396 | |
Charles MacNeill |
13:3f1b341901dd | 397 | |
Charles MacNeill |
13:3f1b341901dd | 398 | /** |
Charles MacNeill |
13:3f1b341901dd | 399 | * @brief This function returns the SW driver version |
Charles MacNeill |
13:3f1b341901dd | 400 | */ |
Charles MacNeill |
13:3f1b341901dd | 401 | VL53L1CB_ERROR VL53L1CB_GetSWVersion(VL53L1_Version_t *pVersion); |
Charles MacNeill |
13:3f1b341901dd | 402 | |
Charles MacNeill |
13:3f1b341901dd | 403 | /** |
Charles MacNeill |
13:3f1b341901dd | 404 | * @brief This function sets the sensor I2C address used in case multiple devices application, default address 0x52 |
Charles MacNeill |
13:3f1b341901dd | 405 | */ |
Charles MacNeill |
13:3f1b341901dd | 406 | VL53L1CB_ERROR VL53L1CB_SetI2CAddress(uint8_t new_address); |
Charles MacNeill |
13:3f1b341901dd | 407 | |
Charles MacNeill |
13:3f1b341901dd | 408 | /** |
Charles MacNeill |
13:3f1b341901dd | 409 | * @brief This function loads the 135 bytes default values to initialize the sensor. |
Charles MacNeill |
13:3f1b341901dd | 410 | * @param dev Device address |
Charles MacNeill |
13:3f1b341901dd | 411 | * @return 0:success, != 0:failed |
Charles MacNeill |
13:3f1b341901dd | 412 | */ |
Charles MacNeill |
13:3f1b341901dd | 413 | VL53L1CB_ERROR VL53L1CB_SensorInit(); |
Charles MacNeill |
13:3f1b341901dd | 414 | |
Charles MacNeill |
13:3f1b341901dd | 415 | /** |
Charles MacNeill |
13:3f1b341901dd | 416 | * @brief This function clears the interrupt, to be called after a ranging data reading |
Charles MacNeill |
13:3f1b341901dd | 417 | * to arm the interrupt for the next data ready event. |
Charles MacNeill |
13:3f1b341901dd | 418 | */ |
Charles MacNeill |
13:3f1b341901dd | 419 | VL53L1CB_ERROR VL53L1CB_ClearInterrupt(); |
Charles MacNeill |
13:3f1b341901dd | 420 | |
Charles MacNeill |
13:3f1b341901dd | 421 | |
Charles MacNeill |
13:3f1b341901dd | 422 | /** |
Charles MacNeill |
13:3f1b341901dd | 423 | * @brief This function returns the current interrupt polarity\n |
Charles MacNeill |
13:3f1b341901dd | 424 | * 1=active high (default), 0=active low |
Charles MacNeill |
13:3f1b341901dd | 425 | */ |
Charles MacNeill |
13:3f1b341901dd | 426 | VL53L1CB_ERROR VL53L1CB_GetInterruptPolarity(uint8_t *pIntPol); |
Charles MacNeill |
13:3f1b341901dd | 427 | |
Charles MacNeill |
13:3f1b341901dd | 428 | /** |
Charles MacNeill |
13:3f1b341901dd | 429 | * @brief This function starts the ranging distance operation\n |
Charles MacNeill |
13:3f1b341901dd | 430 | * The ranging operation is continuous. The clear interrupt has to be done after each get data to allow the interrupt to raise when the next data is ready\n |
Charles MacNeill |
13:3f1b341901dd | 431 | * 1=active high (default), 0=active low, use SetInterruptPolarity() to change the interrupt polarity if required. |
Charles MacNeill |
13:3f1b341901dd | 432 | */ |
Charles MacNeill |
13:3f1b341901dd | 433 | VL53L1CB_ERROR VL53L1CB_StartRanging(); |
Charles MacNeill |
13:3f1b341901dd | 434 | |
Charles MacNeill |
13:3f1b341901dd | 435 | /** |
Charles MacNeill |
13:3f1b341901dd | 436 | * @brief This function stops the ranging. |
Charles MacNeill |
13:3f1b341901dd | 437 | */ |
Charles MacNeill |
13:3f1b341901dd | 438 | VL53L1CB_ERROR VL53L1CB_StopRanging(); |
Charles MacNeill |
13:3f1b341901dd | 439 | |
Charles MacNeill |
13:3f1b341901dd | 440 | |
Charles MacNeill |
13:3f1b341901dd | 441 | |
Charles MacNeill |
13:3f1b341901dd | 442 | /** |
Charles MacNeill |
13:3f1b341901dd | 443 | * @brief This function returns the boot state of the device (1:booted, 0:not booted) |
Charles MacNeill |
13:3f1b341901dd | 444 | */ |
Charles MacNeill |
13:3f1b341901dd | 445 | VL53L1CB_ERROR VL53L1CB_BootState(uint8_t *state); |
Charles MacNeill |
13:3f1b341901dd | 446 | |
Charles MacNeill |
13:3f1b341901dd | 447 | /** |
Charles MacNeill |
13:3f1b341901dd | 448 | * @brief This function returns the sensor id, sensor Id must be 0xEEAC |
Charles MacNeill |
13:3f1b341901dd | 449 | */ |
Charles MacNeill |
13:3f1b341901dd | 450 | // VL53L1CB_ERROR VL53L1X_GetSensorId(uint16_t *id); |
Charles MacNeill |
13:3f1b341901dd | 451 | |
Charles MacNeill |
13:3f1b341901dd | 452 | /** |
Charles MacNeill |
13:3f1b341901dd | 453 | * @brief This function returns the distance measured by the sensor in mm |
Charles MacNeill |
13:3f1b341901dd | 454 | */ |
Charles MacNeill |
13:3f1b341901dd | 455 | VL53L1CB_ERROR VL53L1CB_GetDistance(uint16_t *distance); |
Charles MacNeill |
13:3f1b341901dd | 456 | |
Charles MacNeill |
13:3f1b341901dd | 457 | |
Charles MacNeill |
13:3f1b341901dd | 458 | |
Charles MacNeill |
13:3f1b341901dd | 459 | |
Charles MacNeill |
13:3f1b341901dd | 460 | /**************************************************************************/ |
Charles MacNeill |
13:3f1b341901dd | 461 | VL53L1CB_ERROR VL53L1CB_WaitDeviceBooted(VL53L1_DEV Dev); |
Charles MacNeill |
13:3f1b341901dd | 462 | |
Charles MacNeill |
13:3f1b341901dd | 463 | |
Charles MacNeill |
13:3f1b341901dd | 464 | VL53L1CB_ERROR VL53L1CB_GetCalibrationData(VL53L1_CalibrationData_t *pCalibrationData); |
Charles MacNeill |
13:3f1b341901dd | 465 | |
Charles MacNeill |
13:3f1b341901dd | 466 | |
Charles MacNeill |
13:3f1b341901dd | 467 | |
Charles MacNeill |
13:3f1b341901dd | 468 | VL53L1_GPIO_Interrupt_Mode ConvertModeToLLD(VL53L1CB_ERROR *pStatus, |
Charles MacNeill |
13:3f1b341901dd | 469 | VL53L1_ThresholdMode CrossMode); |
Charles MacNeill |
13:3f1b341901dd | 470 | |
Charles MacNeill |
13:3f1b341901dd | 471 | VL53L1CB_ERROR VL53L1CB_GetVersion(VL53L1_Version_t *pVersion); |
Charles MacNeill |
13:3f1b341901dd | 472 | |
Charles MacNeill |
13:3f1b341901dd | 473 | VL53L1CB_ERROR VL53L1CB_GetProductRevision( |
Charles MacNeill |
13:3f1b341901dd | 474 | uint8_t *pProductRevisionMajor, uint8_t *pProductRevisionMinor); |
Charles MacNeill |
13:3f1b341901dd | 475 | |
Charles MacNeill |
13:3f1b341901dd | 476 | |
Charles MacNeill |
13:3f1b341901dd | 477 | VL53L1CB_ERROR VL53L1CB_GetDeviceInfo( |
Charles MacNeill |
13:3f1b341901dd | 478 | VL53L1_DeviceInfo_t *pVL53L1_DeviceInfo); |
Charles MacNeill |
13:3f1b341901dd | 479 | |
Charles MacNeill |
13:3f1b341901dd | 480 | VL53L1CB_ERROR VL53L1CB_GetUID( uint64_t *pUid); |
Charles MacNeill |
13:3f1b341901dd | 481 | |
Charles MacNeill |
13:3f1b341901dd | 482 | VL53L1CB_ERROR VL53L1CB_GetRangeStatusString(uint8_t RangeStatus, |
Charles MacNeill |
13:3f1b341901dd | 483 | char *pRangeStatusString); |
Charles MacNeill |
13:3f1b341901dd | 484 | |
Charles MacNeill |
13:3f1b341901dd | 485 | |
Charles MacNeill |
13:3f1b341901dd | 486 | VL53L1CB_ERROR VL53L1CB_GetPalErrorString(VL53L1CB_ERROR PalErrorCode, |
Charles MacNeill |
13:3f1b341901dd | 487 | char *pPalErrorString); |
Charles MacNeill |
13:3f1b341901dd | 488 | |
Charles MacNeill |
13:3f1b341901dd | 489 | |
Charles MacNeill |
13:3f1b341901dd | 490 | VL53L1CB_ERROR VL53L1CB_GetPalStateString(VL53L1_State PalStateCode, |
Charles MacNeill |
13:3f1b341901dd | 491 | char *pPalStateString); |
Charles MacNeill |
13:3f1b341901dd | 492 | |
Charles MacNeill |
13:3f1b341901dd | 493 | |
Charles MacNeill |
13:3f1b341901dd | 494 | VL53L1CB_ERROR VL53L1CB_GetPalState(VL53L1_DEV Dev, VL53L1_State *pPalState); |
Charles MacNeill |
13:3f1b341901dd | 495 | |
Charles MacNeill |
13:3f1b341901dd | 496 | VL53L1CB_ERROR VL53L1CB_DataInit(); |
Charles MacNeill |
13:3f1b341901dd | 497 | |
Charles MacNeill |
13:3f1b341901dd | 498 | VL53L1CB_ERROR VL53L1CB_StaticInit(); |
Charles MacNeill |
13:3f1b341901dd | 499 | |
Charles MacNeill |
13:3f1b341901dd | 500 | VL53L1CB_ERROR VL53L1CB_ClearInterruptAndStartMeasurement(); |
Charles MacNeill |
13:3f1b341901dd | 501 | |
Charles MacNeill |
13:3f1b341901dd | 502 | VL53L1CB_ERROR VL53L1CB_GetRangingMeasurementData( |
Charles MacNeill |
13:3f1b341901dd | 503 | VL53L1_RangingMeasurementData_t *pRangingMeasurementData); |
Charles MacNeill |
13:3f1b341901dd | 504 | |
Charles MacNeill |
13:3f1b341901dd | 505 | VL53L1CB_ERROR VL53L1CB_GetMultiRangingData( |
Charles MacNeill |
13:3f1b341901dd | 506 | VL53L1_MultiRangingData_t *pMultiRangingData); |
Charles MacNeill |
13:3f1b341901dd | 507 | |
Charles MacNeill |
13:3f1b341901dd | 508 | VL53L1CB_ERROR VL53L1CB_GetAdditionalData( |
Charles MacNeill |
13:3f1b341901dd | 509 | VL53L1_AdditionalData_t *pAdditionalData); |
Charles MacNeill |
13:3f1b341901dd | 510 | |
Charles MacNeill |
13:3f1b341901dd | 511 | VL53L1CB_ERROR VL53L1CB_SetTuningParameter( |
Charles MacNeill |
13:3f1b341901dd | 512 | uint16_t TuningParameterId, int32_t TuningParameterValue); |
Charles MacNeill |
13:3f1b341901dd | 513 | |
Charles MacNeill |
13:3f1b341901dd | 514 | VL53L1CB_ERROR VL53L1CB_GetTuningParameter( |
Charles MacNeill |
13:3f1b341901dd | 515 | uint16_t TuningParameterId, int32_t *pTuningParameterValue); |
Charles MacNeill |
13:3f1b341901dd | 516 | |
Charles MacNeill |
13:3f1b341901dd | 517 | VL53L1CB_ERROR VL53L1CB_SetXTalkCompensationEnable( |
Charles MacNeill |
13:3f1b341901dd | 518 | uint8_t XTalkCompensationEnable); |
Charles MacNeill |
13:3f1b341901dd | 519 | |
Charles MacNeill |
13:3f1b341901dd | 520 | |
Charles MacNeill |
13:3f1b341901dd | 521 | VL53L1CB_ERROR VL53L1CB_GetXTalkCompensationEnable( |
Charles MacNeill |
13:3f1b341901dd | 522 | uint8_t *pXTalkCompensationEnable); |
Charles MacNeill |
13:3f1b341901dd | 523 | |
Charles MacNeill |
13:3f1b341901dd | 524 | VL53L1CB_ERROR VL53L1CB_PerformXTalkCalibration( |
Charles MacNeill |
13:3f1b341901dd | 525 | uint8_t CalibrationOption); |
Charles MacNeill |
13:3f1b341901dd | 526 | |
Charles MacNeill |
13:3f1b341901dd | 527 | VL53L1CB_ERROR VL53L1CB_SetOffsetCalibrationMode( |
Charles MacNeill |
13:3f1b341901dd | 528 | VL53L1_OffsetCalibrationModes OffsetCalibrationMode); |
Charles MacNeill |
13:3f1b341901dd | 529 | |
Charles MacNeill |
13:3f1b341901dd | 530 | |
Charles MacNeill |
13:3f1b341901dd | 531 | VL53L1CB_ERROR VL53L1CB_SetOffsetCorrectionMode( |
Charles MacNeill |
13:3f1b341901dd | 532 | VL53L1_OffsetCorrectionModes OffsetCorrectionMode); |
Charles MacNeill |
13:3f1b341901dd | 533 | |
Charles MacNeill |
13:3f1b341901dd | 534 | VL53L1CB_ERROR VL53L1CB_PerformOffsetCalibration( |
Charles MacNeill |
13:3f1b341901dd | 535 | int32_t CalDistanceMilliMeter, FixPoint1616_t CalReflectancePercent); |
Charles MacNeill |
13:3f1b341901dd | 536 | |
Charles MacNeill |
13:3f1b341901dd | 537 | VL53L1CB_ERROR VL53L1CB_PerformOffsetSimpleCalibration( |
Charles MacNeill |
13:3f1b341901dd | 538 | int32_t CalDistanceMilliMeter); |
Charles MacNeill |
13:3f1b341901dd | 539 | |
Charles MacNeill |
13:3f1b341901dd | 540 | VL53L1CB_ERROR VL53L1CB_PerformOffsetZeroDistanceCalibration(); |
Charles MacNeill |
13:3f1b341901dd | 541 | |
Charles MacNeill |
13:3f1b341901dd | 542 | VL53L1CB_ERROR VL53L1CB_SetCalibrationData( |
Charles MacNeill |
13:3f1b341901dd | 543 | VL53L1_CalibrationData_t *pCalibrationData); |
Charles MacNeill |
13:3f1b341901dd | 544 | |
Charles MacNeill |
13:3f1b341901dd | 545 | VL53L1CB_ERROR VL53L1CB_SetZoneCalibrationData( |
Charles MacNeill |
13:3f1b341901dd | 546 | VL53L1_ZoneCalibrationData_t *pZoneCalibrationData); |
Charles MacNeill |
13:3f1b341901dd | 547 | |
Charles MacNeill |
13:3f1b341901dd | 548 | VL53L1CB_ERROR VL53L1CB_GetZoneCalibrationData( |
Charles MacNeill |
13:3f1b341901dd | 549 | VL53L1_ZoneCalibrationData_t *pZoneCalibrationData); |
Charles MacNeill |
13:3f1b341901dd | 550 | |
Charles MacNeill |
13:3f1b341901dd | 551 | VL53L1CB_ERROR VL53L1CB_GetOpticalCenter( |
Charles MacNeill |
13:3f1b341901dd | 552 | FixPoint1616_t *pOpticalCenterX, |
Charles MacNeill |
13:3f1b341901dd | 553 | FixPoint1616_t *pOpticalCenterY); |
Charles MacNeill |
13:3f1b341901dd | 554 | |
Charles MacNeill |
13:3f1b341901dd | 555 | VL53L1CB_ERROR VL53L1CB_SetThresholdConfig(VL53L1_DetectionConfig_t *pConfig); |
Charles MacNeill |
13:3f1b341901dd | 556 | |
Charles MacNeill |
13:3f1b341901dd | 557 | |
Charles MacNeill |
13:3f1b341901dd | 558 | VL53L1CB_ERROR VL53L1CB_GetLimitCheckStatus( uint16_t LimitCheckId, |
Charles MacNeill |
13:3f1b341901dd | 559 | uint8_t *pLimitCheckStatus); |
Charles MacNeill |
13:3f1b341901dd | 560 | |
Charles MacNeill |
13:3f1b341901dd | 561 | |
Charles MacNeill |
13:3f1b341901dd | 562 | VL53L1CB_ERROR VL53L1CB_SetLimitCheckEnable( uint16_t LimitCheckId, |
Charles MacNeill |
13:3f1b341901dd | 563 | uint8_t LimitCheckEnable); |
Charles MacNeill |
13:3f1b341901dd | 564 | |
Charles MacNeill |
13:3f1b341901dd | 565 | VL53L1CB_ERROR VL53L1CB_GetLimitCheckEnable(uint16_t LimitCheckId, |
Charles MacNeill |
13:3f1b341901dd | 566 | uint8_t *pLimitCheckEnable); |
Charles MacNeill |
13:3f1b341901dd | 567 | |
Charles MacNeill |
13:3f1b341901dd | 568 | VL53L1CB_ERROR VL53L1CB_GetThresholdConfig(VL53L1_DetectionConfig_t *pConfig); |
Charles MacNeill |
13:3f1b341901dd | 569 | |
Charles MacNeill |
13:3f1b341901dd | 570 | |
Charles MacNeill |
13:3f1b341901dd | 571 | VL53L1CB_ERROR VL53L1CB_PerformOffsetPerVcselCalibration(int32_t CalDistanceMilliMeter); |
Charles MacNeill |
13:3f1b341901dd | 572 | |
Charles MacNeill |
13:3f1b341901dd | 573 | VL53L1CB_ERROR VL53L1CB_GetNumberOfLimitCheck(uint16_t *pNumberOfLimitCheck); |
Charles MacNeill |
13:3f1b341901dd | 574 | |
Charles MacNeill |
13:3f1b341901dd | 575 | VL53L1CB_ERROR VL53L1CB_GetLimitCheckInfo(uint16_t LimitCheckId, |
Charles MacNeill |
13:3f1b341901dd | 576 | char *pLimitCheckString); |
Charles MacNeill |
13:3f1b341901dd | 577 | |
Charles MacNeill |
13:3f1b341901dd | 578 | VL53L1CB_ERROR VL53L1CB_SetPresetMode(VL53L1_PresetModes PresetMode); |
Charles MacNeill |
13:3f1b341901dd | 579 | |
Charles MacNeill |
13:3f1b341901dd | 580 | VL53L1CB_ERROR VL53L1CB_GetPresetMode( VL53L1_PresetModes *pPresetMode); |
Charles MacNeill |
13:3f1b341901dd | 581 | |
Charles MacNeill |
13:3f1b341901dd | 582 | VL53L1CB_ERROR VL53L1CB_SetDistanceMode( VL53L1_DistanceModes DistanceMode); |
Charles MacNeill |
13:3f1b341901dd | 583 | |
Charles MacNeill |
13:3f1b341901dd | 584 | VL53L1CB_ERROR VL53L1CB_GetDistanceMode(VL53L1_DistanceModes *pDistanceMode); |
Charles MacNeill |
13:3f1b341901dd | 585 | |
Charles MacNeill |
13:3f1b341901dd | 586 | VL53L1CB_ERROR VL53L1CB_SetOutputMode(VL53L1_OutputModes OutputMode); |
Charles MacNeill |
13:3f1b341901dd | 587 | |
Charles MacNeill |
13:3f1b341901dd | 588 | VL53L1CB_ERROR VL53L1CB_GetOutputMode(VL53L1_OutputModes *pOutputMode); |
Charles MacNeill |
13:3f1b341901dd | 589 | |
Charles MacNeill |
13:3f1b341901dd | 590 | VL53L1CB_ERROR VL53L1CB_SetMeasurementTimingBudgetMicroSeconds(uint32_t MeasurementTimingBudgetMicroSeconds); |
Charles MacNeill |
13:3f1b341901dd | 591 | |
Charles MacNeill |
13:3f1b341901dd | 592 | VL53L1CB_ERROR VL53L1CB_SetInterMeasurementPeriodMilliSeconds(uint32_t InterMeasurementPeriodMilliSeconds); |
Charles MacNeill |
13:3f1b341901dd | 593 | |
Charles MacNeill |
13:3f1b341901dd | 594 | |
Charles MacNeill |
13:3f1b341901dd | 595 | VL53L1CB_ERROR VL53L1CB_GetInterMeasurementPeriodMilliSeconds( |
Charles MacNeill |
13:3f1b341901dd | 596 | uint32_t *pInterMeasurementPeriodMilliSeconds); |
Charles MacNeill |
13:3f1b341901dd | 597 | |
Charles MacNeill |
13:3f1b341901dd | 598 | |
Charles MacNeill |
13:3f1b341901dd | 599 | VL53L1CB_ERROR VL53L1CB_SetDmaxReflectance( FixPoint1616_t DmaxReflectance); |
Charles MacNeill |
13:3f1b341901dd | 600 | |
Charles MacNeill |
13:3f1b341901dd | 601 | VL53L1CB_ERROR VL53L1CB_GetDmaxReflectance(FixPoint1616_t *pDmaxReflectance); |
Charles MacNeill |
13:3f1b341901dd | 602 | |
Charles MacNeill |
13:3f1b341901dd | 603 | |
Charles MacNeill |
13:3f1b341901dd | 604 | VL53L1CB_ERROR VL53L1CB_GetDmaxMode( VL53L1_DeviceDmaxModes *pDmaxMode); |
Charles MacNeill |
13:3f1b341901dd | 605 | |
Charles MacNeill |
13:3f1b341901dd | 606 | VL53L1CB_ERROR VL53L1CB_GetMeasurementTimingBudgetMicroSeconds( |
Charles MacNeill |
13:3f1b341901dd | 607 | uint32_t *pMeasurementTimingBudgetMicroSeconds); |
Charles MacNeill |
13:3f1b341901dd | 608 | |
Charles MacNeill |
13:3f1b341901dd | 609 | VL53L1CB_ERROR VL53L1CB_SetDmaxMode(VL53L1_DeviceDmaxModes DmaxMode); |
Charles MacNeill |
13:3f1b341901dd | 610 | |
Charles MacNeill |
13:3f1b341901dd | 611 | VL53L1CB_ERROR VL53L1CB_SetLimitCheckValue( uint16_t LimitCheckId, |
Charles MacNeill |
13:3f1b341901dd | 612 | FixPoint1616_t LimitCheckValue); |
Charles MacNeill |
13:3f1b341901dd | 613 | |
Charles MacNeill |
13:3f1b341901dd | 614 | VL53L1CB_ERROR VL53L1CB_GetLimitCheckValue(uint16_t LimitCheckId, |
Charles MacNeill |
13:3f1b341901dd | 615 | FixPoint1616_t *pLimitCheckValue); |
Charles MacNeill |
13:3f1b341901dd | 616 | |
Charles MacNeill |
13:3f1b341901dd | 617 | VL53L1CB_ERROR VL53L1CB_GetLimitCheckCurrent( uint16_t LimitCheckId, |
Charles MacNeill |
13:3f1b341901dd | 618 | FixPoint1616_t *pLimitCheckCurrent); |
Charles MacNeill |
13:3f1b341901dd | 619 | |
Charles MacNeill |
13:3f1b341901dd | 620 | VL53L1CB_ERROR VL53L1CB_GetMaxNumberOfROI( uint8_t *pMaxNumberOfROI); |
Charles MacNeill |
13:3f1b341901dd | 621 | |
Charles MacNeill |
13:3f1b341901dd | 622 | VL53L1CB_ERROR VL53L1CB_SetROI(VL53L1_RoiConfig_t *pRoiConfig); |
Charles MacNeill |
13:3f1b341901dd | 623 | |
Charles MacNeill |
13:3f1b341901dd | 624 | VL53L1CB_ERROR VL53L1CB_GetROI(VL53L1_RoiConfig_t *pRoiConfig); |
Charles MacNeill |
13:3f1b341901dd | 625 | |
Charles MacNeill |
13:3f1b341901dd | 626 | VL53L1CB_ERROR VL53L1CB_GetNumberOfSequenceSteps(uint8_t *pNumberOfSequenceSteps); |
Charles MacNeill |
13:3f1b341901dd | 627 | |
Charles MacNeill |
13:3f1b341901dd | 628 | VL53L1CB_ERROR VL53L1CB_GetSequenceStepsInfo(VL53L1_SequenceStepId SequenceStepId, |
Charles MacNeill |
13:3f1b341901dd | 629 | char *pSequenceStepsString); |
Charles MacNeill |
13:3f1b341901dd | 630 | |
Charles MacNeill |
13:3f1b341901dd | 631 | |
Charles MacNeill |
13:3f1b341901dd | 632 | VL53L1CB_ERROR VL53L1CB_SetSequenceStepEnable(VL53L1_SequenceStepId SequenceStepId, uint8_t SequenceStepEnabled); |
Charles MacNeill |
13:3f1b341901dd | 633 | |
Charles MacNeill |
13:3f1b341901dd | 634 | |
Charles MacNeill |
13:3f1b341901dd | 635 | VL53L1CB_ERROR VL53L1CB_GetSequenceStepEnable(VL53L1_SequenceStepId SequenceStepId, uint8_t *pSequenceStepEnabled); |
Charles MacNeill |
13:3f1b341901dd | 636 | |
Charles MacNeill |
13:3f1b341901dd | 637 | |
Charles MacNeill |
13:3f1b341901dd | 638 | VL53L1CB_ERROR VL53L1CB_StartMeasurement(); |
Charles MacNeill |
13:3f1b341901dd | 639 | |
Charles MacNeill |
13:3f1b341901dd | 640 | VL53L1CB_ERROR VL53L1CB_StopMeasurement(); |
Charles MacNeill |
13:3f1b341901dd | 641 | |
Charles MacNeill |
13:3f1b341901dd | 642 | |
Charles MacNeill |
13:3f1b341901dd | 643 | VL53L1CB_ERROR VL53L1CB_GetMeasurementDataReady(uint8_t *pMeasurementDataReady); |
Charles MacNeill |
13:3f1b341901dd | 644 | |
Charles MacNeill |
13:3f1b341901dd | 645 | VL53L1CB_ERROR VL53L1CB_WaitMeasurementDataReady(); |
Charles MacNeill |
13:3f1b341901dd | 646 | |
Charles MacNeill |
13:3f1b341901dd | 647 | VL53L1CB_ERROR VL53L1CB_SmudgeCorrectionEnable(VL53L1_SmudgeCorrectionModes Mode); |
Charles MacNeill |
13:3f1b341901dd | 648 | /***************************************************************************/ |
Charles MacNeill |
13:3f1b341901dd | 649 | |
Charles MacNeill |
13:3f1b341901dd | 650 | |
Charles MacNeill |
13:3f1b341901dd | 651 | /* Write and read functions from I2C */ |
Charles MacNeill |
13:3f1b341901dd | 652 | |
Charles MacNeill |
13:3f1b341901dd | 653 | VL53L1CB_ERROR VL53L1CB_WrByte(VL53L1_DEV dev, uint16_t index, uint8_t data); |
Charles MacNeill |
13:3f1b341901dd | 654 | VL53L1CB_ERROR VL53L1CB_WrWord(VL53L1_DEV dev, uint16_t index, uint16_t data); |
Charles MacNeill |
13:3f1b341901dd | 655 | VL53L1CB_ERROR VL53L1CB_WrDWord(VL53L1_DEV dev, uint16_t index, uint32_t data); |
Charles MacNeill |
13:3f1b341901dd | 656 | VL53L1CB_ERROR VL53L1CB_RdByte(VL53L1_DEV dev, uint16_t index, uint8_t *data); |
Charles MacNeill |
13:3f1b341901dd | 657 | VL53L1CB_ERROR VL53L1CB_RdWord(VL53L1_DEV dev, uint16_t index, uint16_t *data); |
Charles MacNeill |
13:3f1b341901dd | 658 | VL53L1CB_ERROR VL53L1CB_RdDWord(VL53L1_DEV dev, uint16_t index, uint32_t *data); |
Charles MacNeill |
13:3f1b341901dd | 659 | VL53L1CB_ERROR VL53L1CB_UpdateByte(VL53L1_DEV dev, uint16_t index, uint8_t AndData, uint8_t OrData); |
Charles MacNeill |
13:3f1b341901dd | 660 | |
Charles MacNeill |
13:3f1b341901dd | 661 | VL53L1CB_ERROR VL53L1CB_WriteMulti(VL53L1_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count); |
Charles MacNeill |
13:3f1b341901dd | 662 | VL53L1CB_ERROR VL53L1CB_ReadMulti(VL53L1_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count); |
Charles MacNeill |
13:3f1b341901dd | 663 | |
Charles MacNeill |
13:3f1b341901dd | 664 | VL53L1CB_ERROR VL53L1CB_I2CWrite(uint8_t dev, uint16_t index, uint8_t *data, uint16_t number_of_bytes); |
Charles MacNeill |
13:3f1b341901dd | 665 | VL53L1CB_ERROR VL53L1CB_I2CRead(uint8_t dev, uint16_t index, uint8_t *data, uint16_t number_of_bytes); |
Charles MacNeill |
13:3f1b341901dd | 666 | VL53L1CB_ERROR VL53L1CB_GetTickCount(uint32_t *ptick_count_ms); |
Charles MacNeill |
13:3f1b341901dd | 667 | VL53L1CB_ERROR VL53L1CB_WaitUs(VL53L1_Dev_t *pdev, int32_t wait_us); |
Charles MacNeill |
13:3f1b341901dd | 668 | VL53L1CB_ERROR VL53L1CB_WaitMs(VL53L1_Dev_t *pdev, int32_t wait_ms); |
Charles MacNeill |
13:3f1b341901dd | 669 | |
Charles MacNeill |
13:3f1b341901dd | 670 | VL53L1CB_ERROR VL53L1CB_WaitValueMaskEx(VL53L1_Dev_t *pdev, uint32_t timeout_ms, uint16_t index, uint8_t value, uint8_t mask, uint32_t poll_delay_ms); |
Charles MacNeill |
13:3f1b341901dd | 671 | VL53L1CB_ERROR VL53L1CB_SetDeviceAddress(VL53L1_DEV Dev, uint8_t DeviceAddress); |
Charles MacNeill |
13:3f1b341901dd | 672 | |
Charles MacNeill |
13:3f1b341901dd | 673 | // from vl53l1_api_debug.c |
Charles MacNeill |
13:3f1b341901dd | 674 | |
Charles MacNeill |
13:3f1b341901dd | 675 | VL53L1CB_ERROR VL53L1CB_get_additional_data( |
Charles MacNeill |
13:3f1b341901dd | 676 | VL53L1_DEV Dev, |
Charles MacNeill |
13:3f1b341901dd | 677 | VL53L1_additional_data_t *pdata); |
Charles MacNeill |
13:3f1b341901dd | 678 | |
Charles MacNeill |
13:3f1b341901dd | 679 | |
Charles MacNeill |
13:3f1b341901dd | 680 | protected: |
Charles MacNeill |
13:3f1b341901dd | 681 | |
Charles MacNeill |
13:3f1b341901dd | 682 | /* IO Device */ |
Charles MacNeill |
13:3f1b341901dd | 683 | ToF_DevI2C *dev_i2c; |
Charles MacNeill |
13:3f1b341901dd | 684 | |
Charles MacNeill |
13:3f1b341901dd | 685 | /* Digital out pin */ |
Charles MacNeill |
13:3f1b341901dd | 686 | DigitalOut *_gpio0; |
Charles MacNeill |
13:3f1b341901dd | 687 | /* GPIO expander */ |
Charles MacNeill |
13:3f1b341901dd | 688 | Stmpe1600DigiOut *_expgpio0; |
Charles MacNeill |
13:3f1b341901dd | 689 | /* Measure detection IRQ */ |
Charles MacNeill |
13:3f1b341901dd | 690 | InterruptIn *_gpio1Int; |
Charles MacNeill |
13:3f1b341901dd | 691 | |
Charles MacNeill |
13:3f1b341901dd | 692 | ///* Digital out pin */ |
Charles MacNeill |
13:3f1b341901dd | 693 | /* Device data */ |
Charles MacNeill |
13:3f1b341901dd | 694 | VL53L1_Dev_t MyDevice; |
Charles MacNeill |
13:3f1b341901dd | 695 | VL53L1_DEV Device; |
Charles MacNeill |
13:3f1b341901dd | 696 | }; |
Charles MacNeill |
13:3f1b341901dd | 697 | |
Charles MacNeill |
13:3f1b341901dd | 698 | |
Charles MacNeill |
13:3f1b341901dd | 699 | #endif /* _VL53L1X_CLASS_H_ */ |