Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

Committer:
Charles MacNeill
Date:
Wed Jul 14 12:45:49 2021 +0100
Revision:
5:89031b2f5316
The class files now just are wrappers for the files in the "MODULES" directory.The porting directory includes the mbed interface

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles MacNeill 5:89031b2f5316 1
Charles MacNeill 5:89031b2f5316 2 // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
Charles MacNeill 5:89031b2f5316 3 /******************************************************************************
Charles MacNeill 5:89031b2f5316 4 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
Charles MacNeill 5:89031b2f5316 5
Charles MacNeill 5:89031b2f5316 6 This file is part of VL53LX and is dual licensed,
Charles MacNeill 5:89031b2f5316 7 either GPL-2.0+
Charles MacNeill 5:89031b2f5316 8 or 'BSD 3-clause "New" or "Revised" License' , at your option.
Charles MacNeill 5:89031b2f5316 9 ******************************************************************************
Charles MacNeill 5:89031b2f5316 10 */
Charles MacNeill 5:89031b2f5316 11
Charles MacNeill 5:89031b2f5316 12
Charles MacNeill 5:89031b2f5316 13
Charles MacNeill 5:89031b2f5316 14
Charles MacNeill 5:89031b2f5316 15
Charles MacNeill 5:89031b2f5316 16 #ifdef _MSC_VER
Charles MacNeill 5:89031b2f5316 17 #define snprintf _snprintf
Charles MacNeill 5:89031b2f5316 18 #endif
Charles MacNeill 5:89031b2f5316 19
Charles MacNeill 5:89031b2f5316 20
Charles MacNeill 5:89031b2f5316 21
Charles MacNeill 5:89031b2f5316 22 #include "vl53lx_ll_def.h"
Charles MacNeill 5:89031b2f5316 23 #include "vl53lx_platform.h"
Charles MacNeill 5:89031b2f5316 24 #include <vl53lx_platform_log.h>
Charles MacNeill 5:89031b2f5316 25 #include "vl53lx_register_map.h"
Charles MacNeill 5:89031b2f5316 26 #include "vl53lx_core.h"
Charles MacNeill 5:89031b2f5316 27 #include "vl53lx_nvm_structs.h"
Charles MacNeill 5:89031b2f5316 28 #include "vl53lx_nvm_map.h"
Charles MacNeill 5:89031b2f5316 29 #include "vl53lx_nvm.h"
Charles MacNeill 5:89031b2f5316 30
Charles MacNeill 5:89031b2f5316 31
Charles MacNeill 5:89031b2f5316 32
Charles MacNeill 5:89031b2f5316 33 #define LOG_FUNCTION_START(fmt, ...) \
Charles MacNeill 5:89031b2f5316 34 _LOG_FUNCTION_START(VL53LX_TRACE_MODULE_NVM, fmt, ##__VA_ARGS__)
Charles MacNeill 5:89031b2f5316 35 #define LOG_FUNCTION_END(status, ...) \
Charles MacNeill 5:89031b2f5316 36 _LOG_FUNCTION_END(VL53LX_TRACE_MODULE_NVM, status, ##__VA_ARGS__)
Charles MacNeill 5:89031b2f5316 37 #define LOG_FUNCTION_END_FMT(status, fmt, ...) \
Charles MacNeill 5:89031b2f5316 38 _LOG_FUNCTION_END_FMT(VL53LX_TRACE_MODULE_NVM,\
Charles MacNeill 5:89031b2f5316 39 status, fmt, ##__VA_ARGS__)
Charles MacNeill 5:89031b2f5316 40
Charles MacNeill 5:89031b2f5316 41 #define trace_print(level, ...) \
Charles MacNeill 5:89031b2f5316 42 _LOG_TRACE_PRINT(VL53LX_TRACE_MODULE_NVM, \
Charles MacNeill 5:89031b2f5316 43 level, VL53LX_TRACE_FUNCTION_NONE, ##__VA_ARGS__)
Charles MacNeill 5:89031b2f5316 44
Charles MacNeill 5:89031b2f5316 45
Charles MacNeill 5:89031b2f5316 46 VL53LX_Error VL53LX_nvm_enable(
Charles MacNeill 5:89031b2f5316 47 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 48 uint16_t nvm_ctrl_pulse_width,
Charles MacNeill 5:89031b2f5316 49 int32_t nvm_power_up_delay_us)
Charles MacNeill 5:89031b2f5316 50 {
Charles MacNeill 5:89031b2f5316 51
Charles MacNeill 5:89031b2f5316 52
Charles MacNeill 5:89031b2f5316 53 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 54
Charles MacNeill 5:89031b2f5316 55 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 56
Charles MacNeill 5:89031b2f5316 57
Charles MacNeill 5:89031b2f5316 58
Charles MacNeill 5:89031b2f5316 59
Charles MacNeill 5:89031b2f5316 60 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 61 status = VL53LX_disable_firmware(Dev);
Charles MacNeill 5:89031b2f5316 62
Charles MacNeill 5:89031b2f5316 63
Charles MacNeill 5:89031b2f5316 64
Charles MacNeill 5:89031b2f5316 65
Charles MacNeill 5:89031b2f5316 66 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 67 status = VL53LX_enable_powerforce(Dev);
Charles MacNeill 5:89031b2f5316 68
Charles MacNeill 5:89031b2f5316 69
Charles MacNeill 5:89031b2f5316 70
Charles MacNeill 5:89031b2f5316 71 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 72 status = VL53LX_WaitUs(
Charles MacNeill 5:89031b2f5316 73 Dev,
Charles MacNeill 5:89031b2f5316 74 VL53LX_ENABLE_POWERFORCE_SETTLING_TIME_US);
Charles MacNeill 5:89031b2f5316 75
Charles MacNeill 5:89031b2f5316 76
Charles MacNeill 5:89031b2f5316 77
Charles MacNeill 5:89031b2f5316 78 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 79 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 80 Dev,
Charles MacNeill 5:89031b2f5316 81 VL53LX_RANGING_CORE__NVM_CTRL__PDN,
Charles MacNeill 5:89031b2f5316 82 0x01);
Charles MacNeill 5:89031b2f5316 83
Charles MacNeill 5:89031b2f5316 84
Charles MacNeill 5:89031b2f5316 85
Charles MacNeill 5:89031b2f5316 86 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 87 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 88 Dev,
Charles MacNeill 5:89031b2f5316 89 VL53LX_RANGING_CORE__CLK_CTRL1,
Charles MacNeill 5:89031b2f5316 90 0x05);
Charles MacNeill 5:89031b2f5316 91
Charles MacNeill 5:89031b2f5316 92
Charles MacNeill 5:89031b2f5316 93
Charles MacNeill 5:89031b2f5316 94 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 95 status = VL53LX_WaitUs(
Charles MacNeill 5:89031b2f5316 96 Dev,
Charles MacNeill 5:89031b2f5316 97 nvm_power_up_delay_us);
Charles MacNeill 5:89031b2f5316 98
Charles MacNeill 5:89031b2f5316 99
Charles MacNeill 5:89031b2f5316 100
Charles MacNeill 5:89031b2f5316 101 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 102 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 103 Dev,
Charles MacNeill 5:89031b2f5316 104 VL53LX_RANGING_CORE__NVM_CTRL__MODE,
Charles MacNeill 5:89031b2f5316 105 0x01);
Charles MacNeill 5:89031b2f5316 106
Charles MacNeill 5:89031b2f5316 107 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 108 status = VL53LX_WrWord(
Charles MacNeill 5:89031b2f5316 109 Dev,
Charles MacNeill 5:89031b2f5316 110 VL53LX_RANGING_CORE__NVM_CTRL__PULSE_WIDTH_MSB,
Charles MacNeill 5:89031b2f5316 111 nvm_ctrl_pulse_width);
Charles MacNeill 5:89031b2f5316 112
Charles MacNeill 5:89031b2f5316 113 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 114
Charles MacNeill 5:89031b2f5316 115 return status;
Charles MacNeill 5:89031b2f5316 116
Charles MacNeill 5:89031b2f5316 117 }
Charles MacNeill 5:89031b2f5316 118
Charles MacNeill 5:89031b2f5316 119
Charles MacNeill 5:89031b2f5316 120 VL53LX_Error VL53LX_nvm_read(
Charles MacNeill 5:89031b2f5316 121 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 122 uint8_t start_address,
Charles MacNeill 5:89031b2f5316 123 uint8_t count,
Charles MacNeill 5:89031b2f5316 124 uint8_t *pdata)
Charles MacNeill 5:89031b2f5316 125 {
Charles MacNeill 5:89031b2f5316 126
Charles MacNeill 5:89031b2f5316 127
Charles MacNeill 5:89031b2f5316 128 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 129 uint8_t nvm_addr = 0;
Charles MacNeill 5:89031b2f5316 130
Charles MacNeill 5:89031b2f5316 131 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 132
Charles MacNeill 5:89031b2f5316 133 trace_print(
Charles MacNeill 5:89031b2f5316 134 VL53LX_TRACE_LEVEL_INFO,
Charles MacNeill 5:89031b2f5316 135 "%-12s = 0x%02X (%3u)\n",
Charles MacNeill 5:89031b2f5316 136 "nvm_addr", nvm_addr, nvm_addr);
Charles MacNeill 5:89031b2f5316 137
Charles MacNeill 5:89031b2f5316 138 trace_print(
Charles MacNeill 5:89031b2f5316 139 VL53LX_TRACE_LEVEL_INFO,
Charles MacNeill 5:89031b2f5316 140 "%-12s = 0x%02X (%3u)\n",
Charles MacNeill 5:89031b2f5316 141 "count", count, count);
Charles MacNeill 5:89031b2f5316 142
Charles MacNeill 5:89031b2f5316 143 for (nvm_addr = start_address;
Charles MacNeill 5:89031b2f5316 144 nvm_addr < (start_address+count) ; nvm_addr++) {
Charles MacNeill 5:89031b2f5316 145
Charles MacNeill 5:89031b2f5316 146
Charles MacNeill 5:89031b2f5316 147
Charles MacNeill 5:89031b2f5316 148 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 149 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 150 Dev,
Charles MacNeill 5:89031b2f5316 151 VL53LX_RANGING_CORE__NVM_CTRL__ADDR,
Charles MacNeill 5:89031b2f5316 152 nvm_addr);
Charles MacNeill 5:89031b2f5316 153
Charles MacNeill 5:89031b2f5316 154
Charles MacNeill 5:89031b2f5316 155
Charles MacNeill 5:89031b2f5316 156 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 157 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 158 Dev,
Charles MacNeill 5:89031b2f5316 159 VL53LX_RANGING_CORE__NVM_CTRL__READN,
Charles MacNeill 5:89031b2f5316 160 0x00);
Charles MacNeill 5:89031b2f5316 161
Charles MacNeill 5:89031b2f5316 162
Charles MacNeill 5:89031b2f5316 163
Charles MacNeill 5:89031b2f5316 164 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 165 status = VL53LX_WaitUs(
Charles MacNeill 5:89031b2f5316 166 Dev,
Charles MacNeill 5:89031b2f5316 167 VL53LX_NVM_READ_TRIGGER_DELAY_US);
Charles MacNeill 5:89031b2f5316 168
Charles MacNeill 5:89031b2f5316 169 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 170 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 171 Dev,
Charles MacNeill 5:89031b2f5316 172 VL53LX_RANGING_CORE__NVM_CTRL__READN,
Charles MacNeill 5:89031b2f5316 173 0x01);
Charles MacNeill 5:89031b2f5316 174
Charles MacNeill 5:89031b2f5316 175
Charles MacNeill 5:89031b2f5316 176 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 177 status = VL53LX_ReadMulti(
Charles MacNeill 5:89031b2f5316 178 Dev,
Charles MacNeill 5:89031b2f5316 179 VL53LX_RANGING_CORE__NVM_CTRL__DATAOUT_MMM,
Charles MacNeill 5:89031b2f5316 180 pdata,
Charles MacNeill 5:89031b2f5316 181 4);
Charles MacNeill 5:89031b2f5316 182
Charles MacNeill 5:89031b2f5316 183 trace_print(
Charles MacNeill 5:89031b2f5316 184 VL53LX_TRACE_LEVEL_INFO,
Charles MacNeill 5:89031b2f5316 185 "NVM address : 0x%02X = 0x%02X%02X%02X%02X\n",
Charles MacNeill 5:89031b2f5316 186 nvm_addr, *pdata, *(pdata+1), *(pdata+2), *(pdata+3));
Charles MacNeill 5:89031b2f5316 187
Charles MacNeill 5:89031b2f5316 188
Charles MacNeill 5:89031b2f5316 189
Charles MacNeill 5:89031b2f5316 190 pdata = pdata + 4;
Charles MacNeill 5:89031b2f5316 191
Charles MacNeill 5:89031b2f5316 192
Charles MacNeill 5:89031b2f5316 193 }
Charles MacNeill 5:89031b2f5316 194
Charles MacNeill 5:89031b2f5316 195 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 196
Charles MacNeill 5:89031b2f5316 197 return status;
Charles MacNeill 5:89031b2f5316 198 }
Charles MacNeill 5:89031b2f5316 199
Charles MacNeill 5:89031b2f5316 200
Charles MacNeill 5:89031b2f5316 201 VL53LX_Error VL53LX_nvm_disable(
Charles MacNeill 5:89031b2f5316 202 VL53LX_DEV Dev)
Charles MacNeill 5:89031b2f5316 203 {
Charles MacNeill 5:89031b2f5316 204
Charles MacNeill 5:89031b2f5316 205
Charles MacNeill 5:89031b2f5316 206 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 207
Charles MacNeill 5:89031b2f5316 208 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 209
Charles MacNeill 5:89031b2f5316 210 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 211 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 212 Dev,
Charles MacNeill 5:89031b2f5316 213 VL53LX_RANGING_CORE__NVM_CTRL__READN,
Charles MacNeill 5:89031b2f5316 214 0x01);
Charles MacNeill 5:89031b2f5316 215
Charles MacNeill 5:89031b2f5316 216
Charles MacNeill 5:89031b2f5316 217
Charles MacNeill 5:89031b2f5316 218 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 219 status = VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 220 Dev,
Charles MacNeill 5:89031b2f5316 221 VL53LX_RANGING_CORE__NVM_CTRL__PDN,
Charles MacNeill 5:89031b2f5316 222 0x00);
Charles MacNeill 5:89031b2f5316 223
Charles MacNeill 5:89031b2f5316 224
Charles MacNeill 5:89031b2f5316 225
Charles MacNeill 5:89031b2f5316 226 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 227 status = VL53LX_disable_powerforce(Dev);
Charles MacNeill 5:89031b2f5316 228
Charles MacNeill 5:89031b2f5316 229
Charles MacNeill 5:89031b2f5316 230
Charles MacNeill 5:89031b2f5316 231 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 232 status = VL53LX_enable_firmware(Dev);
Charles MacNeill 5:89031b2f5316 233
Charles MacNeill 5:89031b2f5316 234 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 235
Charles MacNeill 5:89031b2f5316 236 return status;
Charles MacNeill 5:89031b2f5316 237
Charles MacNeill 5:89031b2f5316 238 }
Charles MacNeill 5:89031b2f5316 239
Charles MacNeill 5:89031b2f5316 240
Charles MacNeill 5:89031b2f5316 241 VL53LX_Error VL53LX_nvm_format_decode(
Charles MacNeill 5:89031b2f5316 242 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 243 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 244 VL53LX_decoded_nvm_data_t *pdata)
Charles MacNeill 5:89031b2f5316 245 {
Charles MacNeill 5:89031b2f5316 246
Charles MacNeill 5:89031b2f5316 247
Charles MacNeill 5:89031b2f5316 248
Charles MacNeill 5:89031b2f5316 249 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 250
Charles MacNeill 5:89031b2f5316 251 uint8_t i = 0;
Charles MacNeill 5:89031b2f5316 252 uint8_t *ptmp = NULL;
Charles MacNeill 5:89031b2f5316 253 int pptmp[VL53LX_NVM_MAX_FMT_RANGE_DATA];
Charles MacNeill 5:89031b2f5316 254
Charles MacNeill 5:89031b2f5316 255 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 256
Charles MacNeill 5:89031b2f5316 257 if (buf_size < VL53LX_NVM_SIZE_IN_BYTES)
Charles MacNeill 5:89031b2f5316 258 return VL53LX_ERROR_BUFFER_TOO_SMALL;
Charles MacNeill 5:89031b2f5316 259
Charles MacNeill 5:89031b2f5316 260 pdata->nvm__identification_model_id =
Charles MacNeill 5:89031b2f5316 261 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 262 1,
Charles MacNeill 5:89031b2f5316 263 pbuffer + VL53LX_NVM__IDENTIFICATION__MODEL_ID,
Charles MacNeill 5:89031b2f5316 264 0x000000FF,
Charles MacNeill 5:89031b2f5316 265 0,
Charles MacNeill 5:89031b2f5316 266 0);
Charles MacNeill 5:89031b2f5316 267 pdata->nvm__identification_module_type =
Charles MacNeill 5:89031b2f5316 268 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 269 1,
Charles MacNeill 5:89031b2f5316 270 pbuffer + VL53LX_NVM__IDENTIFICATION__MODULE_TYPE,
Charles MacNeill 5:89031b2f5316 271 0x000000FF,
Charles MacNeill 5:89031b2f5316 272 0,
Charles MacNeill 5:89031b2f5316 273 0);
Charles MacNeill 5:89031b2f5316 274 pdata->nvm__identification_revision_id =
Charles MacNeill 5:89031b2f5316 275 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 276 1,
Charles MacNeill 5:89031b2f5316 277 pbuffer + VL53LX_NVM__IDENTIFICATION__REVISION_ID,
Charles MacNeill 5:89031b2f5316 278 0x0000000F,
Charles MacNeill 5:89031b2f5316 279 0,
Charles MacNeill 5:89031b2f5316 280 0);
Charles MacNeill 5:89031b2f5316 281 pdata->nvm__identification_module_id =
Charles MacNeill 5:89031b2f5316 282 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 283 2,
Charles MacNeill 5:89031b2f5316 284 pbuffer + VL53LX_NVM__IDENTIFICATION__MODULE_ID,
Charles MacNeill 5:89031b2f5316 285 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 286 0,
Charles MacNeill 5:89031b2f5316 287 0);
Charles MacNeill 5:89031b2f5316 288 pdata->nvm__i2c_valid =
Charles MacNeill 5:89031b2f5316 289 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 290 1,
Charles MacNeill 5:89031b2f5316 291 pbuffer + VL53LX_NVM__I2C_VALID,
Charles MacNeill 5:89031b2f5316 292 0x000000FF,
Charles MacNeill 5:89031b2f5316 293 0,
Charles MacNeill 5:89031b2f5316 294 0);
Charles MacNeill 5:89031b2f5316 295 pdata->nvm__i2c_device_address_ews =
Charles MacNeill 5:89031b2f5316 296 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 297 1,
Charles MacNeill 5:89031b2f5316 298 pbuffer + VL53LX_NVM__I2C_SLAVE__DEVICE_ADDRESS,
Charles MacNeill 5:89031b2f5316 299 0x000000FF,
Charles MacNeill 5:89031b2f5316 300 0,
Charles MacNeill 5:89031b2f5316 301 0);
Charles MacNeill 5:89031b2f5316 302 pdata->nvm__ews__fast_osc_frequency =
Charles MacNeill 5:89031b2f5316 303 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 304 2,
Charles MacNeill 5:89031b2f5316 305 pbuffer +
Charles MacNeill 5:89031b2f5316 306 VL53LX_NVM__EWS__OSC_MEASURED__FAST_OSC_FREQUENCY,
Charles MacNeill 5:89031b2f5316 307 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 308 0,
Charles MacNeill 5:89031b2f5316 309 0);
Charles MacNeill 5:89031b2f5316 310 pdata->nvm__ews__fast_osc_trim_max =
Charles MacNeill 5:89031b2f5316 311 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 312 1,
Charles MacNeill 5:89031b2f5316 313 pbuffer + VL53LX_NVM__EWS__FAST_OSC_TRIM_MAX,
Charles MacNeill 5:89031b2f5316 314 0x0000007F,
Charles MacNeill 5:89031b2f5316 315 0,
Charles MacNeill 5:89031b2f5316 316 0);
Charles MacNeill 5:89031b2f5316 317 pdata->nvm__ews__fast_osc_freq_set =
Charles MacNeill 5:89031b2f5316 318 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 319 1,
Charles MacNeill 5:89031b2f5316 320 pbuffer + VL53LX_NVM__EWS__FAST_OSC_FREQ_SET,
Charles MacNeill 5:89031b2f5316 321 0x00000007,
Charles MacNeill 5:89031b2f5316 322 0,
Charles MacNeill 5:89031b2f5316 323 0);
Charles MacNeill 5:89031b2f5316 324 pdata->nvm__ews__slow_osc_calibration =
Charles MacNeill 5:89031b2f5316 325 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 326 2,
Charles MacNeill 5:89031b2f5316 327 pbuffer + VL53LX_NVM__EWS__SLOW_OSC_CALIBRATION,
Charles MacNeill 5:89031b2f5316 328 0x000003FF,
Charles MacNeill 5:89031b2f5316 329 0,
Charles MacNeill 5:89031b2f5316 330 0);
Charles MacNeill 5:89031b2f5316 331 pdata->nvm__fmt__fast_osc_frequency =
Charles MacNeill 5:89031b2f5316 332 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 333 2,
Charles MacNeill 5:89031b2f5316 334 pbuffer +
Charles MacNeill 5:89031b2f5316 335 VL53LX_NVM__FMT__OSC_MEASURED__FAST_OSC_FREQUENCY,
Charles MacNeill 5:89031b2f5316 336 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 337 0,
Charles MacNeill 5:89031b2f5316 338 0);
Charles MacNeill 5:89031b2f5316 339 pdata->nvm__fmt__fast_osc_trim_max =
Charles MacNeill 5:89031b2f5316 340 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 341 1,
Charles MacNeill 5:89031b2f5316 342 pbuffer + VL53LX_NVM__FMT__FAST_OSC_TRIM_MAX,
Charles MacNeill 5:89031b2f5316 343 0x0000007F,
Charles MacNeill 5:89031b2f5316 344 0,
Charles MacNeill 5:89031b2f5316 345 0);
Charles MacNeill 5:89031b2f5316 346 pdata->nvm__fmt__fast_osc_freq_set =
Charles MacNeill 5:89031b2f5316 347 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 348 1,
Charles MacNeill 5:89031b2f5316 349 pbuffer + VL53LX_NVM__FMT__FAST_OSC_FREQ_SET,
Charles MacNeill 5:89031b2f5316 350 0x00000007,
Charles MacNeill 5:89031b2f5316 351 0,
Charles MacNeill 5:89031b2f5316 352 0);
Charles MacNeill 5:89031b2f5316 353 pdata->nvm__fmt__slow_osc_calibration =
Charles MacNeill 5:89031b2f5316 354 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 355 2,
Charles MacNeill 5:89031b2f5316 356 pbuffer + VL53LX_NVM__FMT__SLOW_OSC_CALIBRATION,
Charles MacNeill 5:89031b2f5316 357 0x000003FF,
Charles MacNeill 5:89031b2f5316 358 0,
Charles MacNeill 5:89031b2f5316 359 0);
Charles MacNeill 5:89031b2f5316 360 pdata->nvm__vhv_config_unlock =
Charles MacNeill 5:89031b2f5316 361 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 362 1,
Charles MacNeill 5:89031b2f5316 363 pbuffer + VL53LX_NVM__VHV_CONFIG_UNLOCK,
Charles MacNeill 5:89031b2f5316 364 0x000000FF,
Charles MacNeill 5:89031b2f5316 365 0,
Charles MacNeill 5:89031b2f5316 366 0);
Charles MacNeill 5:89031b2f5316 367 pdata->nvm__ref_selvddpix =
Charles MacNeill 5:89031b2f5316 368 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 369 1,
Charles MacNeill 5:89031b2f5316 370 pbuffer + VL53LX_NVM__REF_SELVDDPIX,
Charles MacNeill 5:89031b2f5316 371 0x0000000F,
Charles MacNeill 5:89031b2f5316 372 0,
Charles MacNeill 5:89031b2f5316 373 0);
Charles MacNeill 5:89031b2f5316 374 pdata->nvm__ref_selvquench =
Charles MacNeill 5:89031b2f5316 375 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 376 1,
Charles MacNeill 5:89031b2f5316 377 pbuffer + VL53LX_NVM__REF_SELVQUENCH,
Charles MacNeill 5:89031b2f5316 378 0x00000078,
Charles MacNeill 5:89031b2f5316 379 3,
Charles MacNeill 5:89031b2f5316 380 0);
Charles MacNeill 5:89031b2f5316 381 pdata->nvm__regavdd1v2_sel =
Charles MacNeill 5:89031b2f5316 382 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 383 1,
Charles MacNeill 5:89031b2f5316 384 pbuffer + VL53LX_NVM__REGAVDD1V2_SEL_REGDVDD1V2_SEL,
Charles MacNeill 5:89031b2f5316 385 0x0000000C,
Charles MacNeill 5:89031b2f5316 386 2,
Charles MacNeill 5:89031b2f5316 387 0);
Charles MacNeill 5:89031b2f5316 388 pdata->nvm__regdvdd1v2_sel =
Charles MacNeill 5:89031b2f5316 389 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 390 1,
Charles MacNeill 5:89031b2f5316 391 pbuffer + VL53LX_NVM__REGAVDD1V2_SEL_REGDVDD1V2_SEL,
Charles MacNeill 5:89031b2f5316 392 0x00000003,
Charles MacNeill 5:89031b2f5316 393 0,
Charles MacNeill 5:89031b2f5316 394 0);
Charles MacNeill 5:89031b2f5316 395 pdata->nvm__vhv_timeout__macrop =
Charles MacNeill 5:89031b2f5316 396 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 397 1,
Charles MacNeill 5:89031b2f5316 398 pbuffer +
Charles MacNeill 5:89031b2f5316 399 VL53LX_NVM__VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND,
Charles MacNeill 5:89031b2f5316 400 0x00000003,
Charles MacNeill 5:89031b2f5316 401 0,
Charles MacNeill 5:89031b2f5316 402 0);
Charles MacNeill 5:89031b2f5316 403 pdata->nvm__vhv_loop_bound =
Charles MacNeill 5:89031b2f5316 404 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 405 1,
Charles MacNeill 5:89031b2f5316 406 pbuffer +
Charles MacNeill 5:89031b2f5316 407 VL53LX_NVM__VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND,
Charles MacNeill 5:89031b2f5316 408 0x000000FC,
Charles MacNeill 5:89031b2f5316 409 2,
Charles MacNeill 5:89031b2f5316 410 0);
Charles MacNeill 5:89031b2f5316 411 pdata->nvm__vhv_count_threshold =
Charles MacNeill 5:89031b2f5316 412 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 413 1,
Charles MacNeill 5:89031b2f5316 414 pbuffer + VL53LX_NVM__VHV_CONFIG__COUNT_THRESH,
Charles MacNeill 5:89031b2f5316 415 0x000000FF,
Charles MacNeill 5:89031b2f5316 416 0,
Charles MacNeill 5:89031b2f5316 417 0);
Charles MacNeill 5:89031b2f5316 418 pdata->nvm__vhv_offset =
Charles MacNeill 5:89031b2f5316 419 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 420 1,
Charles MacNeill 5:89031b2f5316 421 pbuffer + VL53LX_NVM__VHV_CONFIG__OFFSET,
Charles MacNeill 5:89031b2f5316 422 0x0000003F,
Charles MacNeill 5:89031b2f5316 423 0,
Charles MacNeill 5:89031b2f5316 424 0);
Charles MacNeill 5:89031b2f5316 425 pdata->nvm__vhv_init_enable =
Charles MacNeill 5:89031b2f5316 426 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 427 1,
Charles MacNeill 5:89031b2f5316 428 pbuffer + VL53LX_NVM__VHV_CONFIG__INIT,
Charles MacNeill 5:89031b2f5316 429 0x00000080,
Charles MacNeill 5:89031b2f5316 430 7,
Charles MacNeill 5:89031b2f5316 431 0);
Charles MacNeill 5:89031b2f5316 432 pdata->nvm__vhv_init_value =
Charles MacNeill 5:89031b2f5316 433 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 434 1,
Charles MacNeill 5:89031b2f5316 435 pbuffer + VL53LX_NVM__VHV_CONFIG__INIT,
Charles MacNeill 5:89031b2f5316 436 0x0000003F,
Charles MacNeill 5:89031b2f5316 437 0,
Charles MacNeill 5:89031b2f5316 438 0);
Charles MacNeill 5:89031b2f5316 439 pdata->nvm__laser_safety_vcsel_trim_ll =
Charles MacNeill 5:89031b2f5316 440 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 441 1,
Charles MacNeill 5:89031b2f5316 442 pbuffer + VL53LX_NVM__LASER_SAFETY__VCSEL_TRIM_LL,
Charles MacNeill 5:89031b2f5316 443 0x00000007,
Charles MacNeill 5:89031b2f5316 444 0,
Charles MacNeill 5:89031b2f5316 445 0);
Charles MacNeill 5:89031b2f5316 446 pdata->nvm__laser_safety_vcsel_selion_ll =
Charles MacNeill 5:89031b2f5316 447 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 448 1,
Charles MacNeill 5:89031b2f5316 449 pbuffer + VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_LL,
Charles MacNeill 5:89031b2f5316 450 0x0000003F,
Charles MacNeill 5:89031b2f5316 451 0,
Charles MacNeill 5:89031b2f5316 452 0);
Charles MacNeill 5:89031b2f5316 453 pdata->nvm__laser_safety_vcsel_selion_max_ll =
Charles MacNeill 5:89031b2f5316 454 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 455 1,
Charles MacNeill 5:89031b2f5316 456 pbuffer + VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_MAX_LL,
Charles MacNeill 5:89031b2f5316 457 0x0000003F,
Charles MacNeill 5:89031b2f5316 458 0,
Charles MacNeill 5:89031b2f5316 459 0);
Charles MacNeill 5:89031b2f5316 460 pdata->nvm__laser_safety_mult_ll =
Charles MacNeill 5:89031b2f5316 461 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 462 1,
Charles MacNeill 5:89031b2f5316 463 pbuffer + VL53LX_NVM__LASER_SAFETY__MULT_LL,
Charles MacNeill 5:89031b2f5316 464 0x0000003F,
Charles MacNeill 5:89031b2f5316 465 0,
Charles MacNeill 5:89031b2f5316 466 0);
Charles MacNeill 5:89031b2f5316 467 pdata->nvm__laser_safety_clip_ll =
Charles MacNeill 5:89031b2f5316 468 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 469 1,
Charles MacNeill 5:89031b2f5316 470 pbuffer + VL53LX_NVM__LASER_SAFETY__CLIP_LL,
Charles MacNeill 5:89031b2f5316 471 0x0000003F,
Charles MacNeill 5:89031b2f5316 472 0,
Charles MacNeill 5:89031b2f5316 473 0);
Charles MacNeill 5:89031b2f5316 474 pdata->nvm__laser_safety_vcsel_trim_ld =
Charles MacNeill 5:89031b2f5316 475 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 476 1,
Charles MacNeill 5:89031b2f5316 477 pbuffer + VL53LX_NVM__LASER_SAFETY__VCSEL_TRIM_LD,
Charles MacNeill 5:89031b2f5316 478 0x00000007,
Charles MacNeill 5:89031b2f5316 479 0,
Charles MacNeill 5:89031b2f5316 480 0);
Charles MacNeill 5:89031b2f5316 481 pdata->nvm__laser_safety_vcsel_selion_ld =
Charles MacNeill 5:89031b2f5316 482 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 483 1,
Charles MacNeill 5:89031b2f5316 484 pbuffer + VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_LD,
Charles MacNeill 5:89031b2f5316 485 0x0000003F,
Charles MacNeill 5:89031b2f5316 486 0,
Charles MacNeill 5:89031b2f5316 487 0);
Charles MacNeill 5:89031b2f5316 488 pdata->nvm__laser_safety_vcsel_selion_max_ld =
Charles MacNeill 5:89031b2f5316 489 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 490 1,
Charles MacNeill 5:89031b2f5316 491 pbuffer + VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_MAX_LD,
Charles MacNeill 5:89031b2f5316 492 0x0000003F,
Charles MacNeill 5:89031b2f5316 493 0,
Charles MacNeill 5:89031b2f5316 494 0);
Charles MacNeill 5:89031b2f5316 495 pdata->nvm__laser_safety_mult_ld =
Charles MacNeill 5:89031b2f5316 496 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 497 1,
Charles MacNeill 5:89031b2f5316 498 pbuffer + VL53LX_NVM__LASER_SAFETY__MULT_LD,
Charles MacNeill 5:89031b2f5316 499 0x0000003F,
Charles MacNeill 5:89031b2f5316 500 0,
Charles MacNeill 5:89031b2f5316 501 0);
Charles MacNeill 5:89031b2f5316 502 pdata->nvm__laser_safety_clip_ld =
Charles MacNeill 5:89031b2f5316 503 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 504 1,
Charles MacNeill 5:89031b2f5316 505 pbuffer + VL53LX_NVM__LASER_SAFETY__CLIP_LD,
Charles MacNeill 5:89031b2f5316 506 0x0000003F,
Charles MacNeill 5:89031b2f5316 507 0,
Charles MacNeill 5:89031b2f5316 508 0);
Charles MacNeill 5:89031b2f5316 509 pdata->nvm__laser_safety_lock_byte =
Charles MacNeill 5:89031b2f5316 510 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 511 1,
Charles MacNeill 5:89031b2f5316 512 pbuffer + VL53LX_NVM__LASER_SAFETY_LOCK_BYTE,
Charles MacNeill 5:89031b2f5316 513 0x000000FF,
Charles MacNeill 5:89031b2f5316 514 0,
Charles MacNeill 5:89031b2f5316 515 0);
Charles MacNeill 5:89031b2f5316 516 pdata->nvm__laser_safety_unlock_byte =
Charles MacNeill 5:89031b2f5316 517 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 518 1,
Charles MacNeill 5:89031b2f5316 519 pbuffer + VL53LX_NVM__LASER_SAFETY_UNLOCK_BYTE,
Charles MacNeill 5:89031b2f5316 520 0x000000FF,
Charles MacNeill 5:89031b2f5316 521 0,
Charles MacNeill 5:89031b2f5316 522 0);
Charles MacNeill 5:89031b2f5316 523
Charles MacNeill 5:89031b2f5316 524
Charles MacNeill 5:89031b2f5316 525
Charles MacNeill 5:89031b2f5316 526 ptmp = pbuffer + VL53LX_NVM__EWS__SPAD_ENABLES_RTN_0_;
Charles MacNeill 5:89031b2f5316 527 for (i = 0 ; i < VL53LX_RTN_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 528 pdata->nvm__ews__spad_enables_rtn[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 529
Charles MacNeill 5:89031b2f5316 530 ptmp = pbuffer + VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC1_0_;
Charles MacNeill 5:89031b2f5316 531 for (i = 0 ; i < VL53LX_REF_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 532 pdata->nvm__ews__spad_enables_ref__loc1[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 533
Charles MacNeill 5:89031b2f5316 534 ptmp = pbuffer + VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC2_0_;
Charles MacNeill 5:89031b2f5316 535 for (i = 0 ; i < VL53LX_REF_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 536 pdata->nvm__ews__spad_enables_ref__loc2[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 537
Charles MacNeill 5:89031b2f5316 538 ptmp = pbuffer + VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC3_0_;
Charles MacNeill 5:89031b2f5316 539 for (i = 0 ; i < VL53LX_REF_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 540 pdata->nvm__ews__spad_enables_ref__loc3[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 541
Charles MacNeill 5:89031b2f5316 542
Charles MacNeill 5:89031b2f5316 543
Charles MacNeill 5:89031b2f5316 544 ptmp = pbuffer + VL53LX_NVM__FMT__SPAD_ENABLES_RTN_0_;
Charles MacNeill 5:89031b2f5316 545 for (i = 0 ; i < VL53LX_RTN_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 546 pdata->nvm__fmt__spad_enables_rtn[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 547
Charles MacNeill 5:89031b2f5316 548 ptmp = pbuffer + VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC1_0_;
Charles MacNeill 5:89031b2f5316 549 for (i = 0 ; i < VL53LX_REF_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 550 pdata->nvm__fmt__spad_enables_ref__loc1[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 551
Charles MacNeill 5:89031b2f5316 552 ptmp = pbuffer + VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC2_0_;
Charles MacNeill 5:89031b2f5316 553 for (i = 0 ; i < VL53LX_REF_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 554 pdata->nvm__fmt__spad_enables_ref__loc2[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 555
Charles MacNeill 5:89031b2f5316 556 ptmp = pbuffer + VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC3_0_;
Charles MacNeill 5:89031b2f5316 557 for (i = 0 ; i < VL53LX_REF_SPAD_BUFFER_SIZE ; i++)
Charles MacNeill 5:89031b2f5316 558 pdata->nvm__fmt__spad_enables_ref__loc3[i] = *ptmp++;
Charles MacNeill 5:89031b2f5316 559
Charles MacNeill 5:89031b2f5316 560
Charles MacNeill 5:89031b2f5316 561 pdata->nvm__fmt__roi_config__mode_roi_centre_spad =
Charles MacNeill 5:89031b2f5316 562 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 563 1,
Charles MacNeill 5:89031b2f5316 564 pbuffer +
Charles MacNeill 5:89031b2f5316 565 VL53LX_NVM__FMT__ROI_CONFIG__MODE_ROI_CENTRE_SPAD,
Charles MacNeill 5:89031b2f5316 566 0x000000FF,
Charles MacNeill 5:89031b2f5316 567 0,
Charles MacNeill 5:89031b2f5316 568 0);
Charles MacNeill 5:89031b2f5316 569 pdata->nvm__fmt__roi_config__mode_roi_x_size =
Charles MacNeill 5:89031b2f5316 570 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 571 1,
Charles MacNeill 5:89031b2f5316 572 pbuffer +
Charles MacNeill 5:89031b2f5316 573 VL53LX_NVM__FMT__ROI_CONFIG__MODE_ROI_XY_SIZE,
Charles MacNeill 5:89031b2f5316 574 0x000000F0,
Charles MacNeill 5:89031b2f5316 575 4,
Charles MacNeill 5:89031b2f5316 576 0);
Charles MacNeill 5:89031b2f5316 577 pdata->nvm__fmt__roi_config__mode_roi_y_size =
Charles MacNeill 5:89031b2f5316 578 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 579 1,
Charles MacNeill 5:89031b2f5316 580 pbuffer + VL53LX_NVM__FMT__ROI_CONFIG__MODE_ROI_XY_SIZE,
Charles MacNeill 5:89031b2f5316 581 0x0000000F,
Charles MacNeill 5:89031b2f5316 582 0,
Charles MacNeill 5:89031b2f5316 583 0);
Charles MacNeill 5:89031b2f5316 584 pdata->nvm__fmt__ref_spad_apply__num_requested_ref_spad =
Charles MacNeill 5:89031b2f5316 585 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 586 1,
Charles MacNeill 5:89031b2f5316 587 pbuffer +
Charles MacNeill 5:89031b2f5316 588 VL53LX_NVM__FMT__REF_SPAD_APPLY__NUM_REQUESTED_REF_SPAD,
Charles MacNeill 5:89031b2f5316 589 0x000000FF,
Charles MacNeill 5:89031b2f5316 590 0,
Charles MacNeill 5:89031b2f5316 591 0);
Charles MacNeill 5:89031b2f5316 592 pdata->nvm__fmt__ref_spad_man__ref_location =
Charles MacNeill 5:89031b2f5316 593 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 594 1,
Charles MacNeill 5:89031b2f5316 595 pbuffer + VL53LX_NVM__FMT__REF_SPAD_MAN__REF_LOCATION,
Charles MacNeill 5:89031b2f5316 596 0x00000003,
Charles MacNeill 5:89031b2f5316 597 0,
Charles MacNeill 5:89031b2f5316 598 0);
Charles MacNeill 5:89031b2f5316 599 pdata->nvm__fmt__mm_config__inner_offset_mm =
Charles MacNeill 5:89031b2f5316 600 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 601 2,
Charles MacNeill 5:89031b2f5316 602 pbuffer + VL53LX_NVM__FMT__MM_CONFIG__INNER_OFFSET_MM,
Charles MacNeill 5:89031b2f5316 603 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 604 0,
Charles MacNeill 5:89031b2f5316 605 0);
Charles MacNeill 5:89031b2f5316 606 pdata->nvm__fmt__mm_config__outer_offset_mm =
Charles MacNeill 5:89031b2f5316 607 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 608 2,
Charles MacNeill 5:89031b2f5316 609 pbuffer + VL53LX_NVM__FMT__MM_CONFIG__OUTER_OFFSET_MM,
Charles MacNeill 5:89031b2f5316 610 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 611 0,
Charles MacNeill 5:89031b2f5316 612 0);
Charles MacNeill 5:89031b2f5316 613 pdata->nvm__fmt__algo_part_to_part_range_offset_mm =
Charles MacNeill 5:89031b2f5316 614 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 615 2,
Charles MacNeill 5:89031b2f5316 616 pbuffer +
Charles MacNeill 5:89031b2f5316 617 VL53LX_NVM__FMT__ALGO__PART_TO_PART_RANGE_OFFSET_MM,
Charles MacNeill 5:89031b2f5316 618 0x00000FFF,
Charles MacNeill 5:89031b2f5316 619 0,
Charles MacNeill 5:89031b2f5316 620 0);
Charles MacNeill 5:89031b2f5316 621 pdata->nvm__fmt__algo__crosstalk_compensation_plane_offset_kcps =
Charles MacNeill 5:89031b2f5316 622 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 623 2,
Charles MacNeill 5:89031b2f5316 624 pbuffer +
Charles MacNeill 5:89031b2f5316 625 VL53LX_NVM__FMT__ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS,
Charles MacNeill 5:89031b2f5316 626 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 627 0,
Charles MacNeill 5:89031b2f5316 628 0);
Charles MacNeill 5:89031b2f5316 629 pdata->nvm__fmt__algo__crosstalk_compensation_x_plane_gradient_kcps =
Charles MacNeill 5:89031b2f5316 630 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 631 2,
Charles MacNeill 5:89031b2f5316 632 pbuffer +
Charles MacNeill 5:89031b2f5316 633 VL53LX_NVM__FMT__ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS,
Charles MacNeill 5:89031b2f5316 634 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 635 0,
Charles MacNeill 5:89031b2f5316 636 0);
Charles MacNeill 5:89031b2f5316 637 pdata->nvm__fmt__algo__crosstalk_compensation_y_plane_gradient_kcps =
Charles MacNeill 5:89031b2f5316 638 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 639 2,
Charles MacNeill 5:89031b2f5316 640 pbuffer +
Charles MacNeill 5:89031b2f5316 641 VL53LX_NVM__FMT__ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS,
Charles MacNeill 5:89031b2f5316 642 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 643 0,
Charles MacNeill 5:89031b2f5316 644 0);
Charles MacNeill 5:89031b2f5316 645 pdata->nvm__fmt__spare__host_config__nvm_config_spare_0 =
Charles MacNeill 5:89031b2f5316 646 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 647 1,
Charles MacNeill 5:89031b2f5316 648 pbuffer +
Charles MacNeill 5:89031b2f5316 649 VL53LX_NVM__FMT__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_0,
Charles MacNeill 5:89031b2f5316 650 0x000000FF,
Charles MacNeill 5:89031b2f5316 651 0,
Charles MacNeill 5:89031b2f5316 652 0);
Charles MacNeill 5:89031b2f5316 653 pdata->nvm__fmt__spare__host_config__nvm_config_spare_1 =
Charles MacNeill 5:89031b2f5316 654 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 655 1,
Charles MacNeill 5:89031b2f5316 656 pbuffer +
Charles MacNeill 5:89031b2f5316 657 VL53LX_NVM__FMT__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_1,
Charles MacNeill 5:89031b2f5316 658 0x000000FF,
Charles MacNeill 5:89031b2f5316 659 0,
Charles MacNeill 5:89031b2f5316 660 0);
Charles MacNeill 5:89031b2f5316 661 pdata->nvm__customer_space_programmed =
Charles MacNeill 5:89031b2f5316 662 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 663 1,
Charles MacNeill 5:89031b2f5316 664 pbuffer + VL53LX_NVM__CUSTOMER_NVM_SPACE_PROGRAMMED,
Charles MacNeill 5:89031b2f5316 665 0x000000FF,
Charles MacNeill 5:89031b2f5316 666 0,
Charles MacNeill 5:89031b2f5316 667 0);
Charles MacNeill 5:89031b2f5316 668 pdata->nvm__cust__i2c_device_address =
Charles MacNeill 5:89031b2f5316 669 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 670 1,
Charles MacNeill 5:89031b2f5316 671 pbuffer + VL53LX_NVM__CUST__I2C_SLAVE__DEVICE_ADDRESS,
Charles MacNeill 5:89031b2f5316 672 0x000000FF,
Charles MacNeill 5:89031b2f5316 673 0,
Charles MacNeill 5:89031b2f5316 674 0);
Charles MacNeill 5:89031b2f5316 675 pdata->nvm__cust__ref_spad_apply__num_requested_ref_spad =
Charles MacNeill 5:89031b2f5316 676 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 677 1,
Charles MacNeill 5:89031b2f5316 678 pbuffer +
Charles MacNeill 5:89031b2f5316 679 VL53LX_NVM__CUST__REF_SPAD_APPLY__NUM_REQUESTED_REF_SPAD,
Charles MacNeill 5:89031b2f5316 680 0x000000FF,
Charles MacNeill 5:89031b2f5316 681 0,
Charles MacNeill 5:89031b2f5316 682 0);
Charles MacNeill 5:89031b2f5316 683 pdata->nvm__cust__ref_spad_man__ref_location =
Charles MacNeill 5:89031b2f5316 684 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 685 1,
Charles MacNeill 5:89031b2f5316 686 pbuffer + VL53LX_NVM__CUST__REF_SPAD_MAN__REF_LOCATION,
Charles MacNeill 5:89031b2f5316 687 0x00000003,
Charles MacNeill 5:89031b2f5316 688 0,
Charles MacNeill 5:89031b2f5316 689 0);
Charles MacNeill 5:89031b2f5316 690 pdata->nvm__cust__mm_config__inner_offset_mm =
Charles MacNeill 5:89031b2f5316 691 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 692 2,
Charles MacNeill 5:89031b2f5316 693 pbuffer + VL53LX_NVM__CUST__MM_CONFIG__INNER_OFFSET_MM,
Charles MacNeill 5:89031b2f5316 694 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 695 0,
Charles MacNeill 5:89031b2f5316 696 0);
Charles MacNeill 5:89031b2f5316 697 pdata->nvm__cust__mm_config__outer_offset_mm =
Charles MacNeill 5:89031b2f5316 698 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 699 2,
Charles MacNeill 5:89031b2f5316 700 pbuffer + VL53LX_NVM__CUST__MM_CONFIG__OUTER_OFFSET_MM,
Charles MacNeill 5:89031b2f5316 701 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 702 0,
Charles MacNeill 5:89031b2f5316 703 0);
Charles MacNeill 5:89031b2f5316 704 pdata->nvm__cust__algo_part_to_part_range_offset_mm =
Charles MacNeill 5:89031b2f5316 705 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 706 2,
Charles MacNeill 5:89031b2f5316 707 pbuffer +
Charles MacNeill 5:89031b2f5316 708 VL53LX_NVM__CUST__ALGO__PART_TO_PART_RANGE_OFFSET_MM,
Charles MacNeill 5:89031b2f5316 709 0x00000FFF,
Charles MacNeill 5:89031b2f5316 710 0,
Charles MacNeill 5:89031b2f5316 711 0);
Charles MacNeill 5:89031b2f5316 712 pdata->nvm__cust__algo__crosstalk_compensation_plane_offset_kcps =
Charles MacNeill 5:89031b2f5316 713 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 714 2,
Charles MacNeill 5:89031b2f5316 715 pbuffer +
Charles MacNeill 5:89031b2f5316 716 VL53LX_NVM__CUST__ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS,
Charles MacNeill 5:89031b2f5316 717 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 718 0,
Charles MacNeill 5:89031b2f5316 719 0);
Charles MacNeill 5:89031b2f5316 720 pdata->nvm__cust__algo__crosstalk_compensation_x_plane_gradient_kcps =
Charles MacNeill 5:89031b2f5316 721 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 722 2,
Charles MacNeill 5:89031b2f5316 723 pbuffer +
Charles MacNeill 5:89031b2f5316 724 VL53LX_NVM__CUST__ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS,
Charles MacNeill 5:89031b2f5316 725 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 726 0,
Charles MacNeill 5:89031b2f5316 727 0);
Charles MacNeill 5:89031b2f5316 728 pdata->nvm__cust__algo__crosstalk_compensation_y_plane_gradient_kcps =
Charles MacNeill 5:89031b2f5316 729 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 730 2,
Charles MacNeill 5:89031b2f5316 731 pbuffer +
Charles MacNeill 5:89031b2f5316 732 VL53LX_NVM__CUST__ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS,
Charles MacNeill 5:89031b2f5316 733 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 734 0,
Charles MacNeill 5:89031b2f5316 735 0);
Charles MacNeill 5:89031b2f5316 736 pdata->nvm__cust__spare__host_config__nvm_config_spare_0 =
Charles MacNeill 5:89031b2f5316 737 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 738 1,
Charles MacNeill 5:89031b2f5316 739 pbuffer + VL53LX_NVM__CUST__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_0,
Charles MacNeill 5:89031b2f5316 740 0x000000FF,
Charles MacNeill 5:89031b2f5316 741 0,
Charles MacNeill 5:89031b2f5316 742 0);
Charles MacNeill 5:89031b2f5316 743 pdata->nvm__cust__spare__host_config__nvm_config_spare_1 =
Charles MacNeill 5:89031b2f5316 744 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 745 1,
Charles MacNeill 5:89031b2f5316 746 pbuffer +
Charles MacNeill 5:89031b2f5316 747 VL53LX_NVM__CUST__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_1,
Charles MacNeill 5:89031b2f5316 748 0x000000FF,
Charles MacNeill 5:89031b2f5316 749 0,
Charles MacNeill 5:89031b2f5316 750 0);
Charles MacNeill 5:89031b2f5316 751
Charles MacNeill 5:89031b2f5316 752
Charles MacNeill 5:89031b2f5316 753
Charles MacNeill 5:89031b2f5316 754 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 755 status =
Charles MacNeill 5:89031b2f5316 756 VL53LX_nvm_decode_optical_centre(
Charles MacNeill 5:89031b2f5316 757 buf_size,
Charles MacNeill 5:89031b2f5316 758 pbuffer + VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_INDEX,
Charles MacNeill 5:89031b2f5316 759 &(pdata->fmt_optical_centre));
Charles MacNeill 5:89031b2f5316 760
Charles MacNeill 5:89031b2f5316 761
Charles MacNeill 5:89031b2f5316 762
Charles MacNeill 5:89031b2f5316 763 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 764 status =
Charles MacNeill 5:89031b2f5316 765 VL53LX_nvm_decode_cal_peak_rate_map(
Charles MacNeill 5:89031b2f5316 766 buf_size,
Charles MacNeill 5:89031b2f5316 767 pbuffer + VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_INDEX,
Charles MacNeill 5:89031b2f5316 768 &(pdata->fmt_peak_rate_map));
Charles MacNeill 5:89031b2f5316 769
Charles MacNeill 5:89031b2f5316 770
Charles MacNeill 5:89031b2f5316 771
Charles MacNeill 5:89031b2f5316 772 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 773 status =
Charles MacNeill 5:89031b2f5316 774 VL53LX_nvm_decode_additional_offset_cal_data(
Charles MacNeill 5:89031b2f5316 775 buf_size,
Charles MacNeill 5:89031b2f5316 776 pbuffer +
Charles MacNeill 5:89031b2f5316 777 VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_INDEX,
Charles MacNeill 5:89031b2f5316 778 &(pdata->fmt_add_offset_data));
Charles MacNeill 5:89031b2f5316 779
Charles MacNeill 5:89031b2f5316 780
Charles MacNeill 5:89031b2f5316 781
Charles MacNeill 5:89031b2f5316 782 pptmp[0] = VL53LX_NVM__FMT__RANGE_RESULTS__140MM_MM_PRE_RANGE;
Charles MacNeill 5:89031b2f5316 783 pptmp[1] = VL53LX_NVM__FMT__RANGE_RESULTS__140MM_DARK;
Charles MacNeill 5:89031b2f5316 784 pptmp[2] = VL53LX_NVM__FMT__RANGE_RESULTS__400MM_DARK;
Charles MacNeill 5:89031b2f5316 785 pptmp[3] = VL53LX_NVM__FMT__RANGE_RESULTS__400MM_AMBIENT;
Charles MacNeill 5:89031b2f5316 786
Charles MacNeill 5:89031b2f5316 787 for (i = 0 ; i < VL53LX_NVM_MAX_FMT_RANGE_DATA ; i++) {
Charles MacNeill 5:89031b2f5316 788 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 789 status =
Charles MacNeill 5:89031b2f5316 790 VL53LX_nvm_decode_fmt_range_results_data(
Charles MacNeill 5:89031b2f5316 791 buf_size,
Charles MacNeill 5:89031b2f5316 792 pbuffer + pptmp[i],
Charles MacNeill 5:89031b2f5316 793 &(pdata->fmt_range_data[i]));
Charles MacNeill 5:89031b2f5316 794 }
Charles MacNeill 5:89031b2f5316 795
Charles MacNeill 5:89031b2f5316 796
Charles MacNeill 5:89031b2f5316 797 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 798 status =
Charles MacNeill 5:89031b2f5316 799 VL53LX_nvm_decode_fmt_info(
Charles MacNeill 5:89031b2f5316 800 buf_size,
Charles MacNeill 5:89031b2f5316 801 pbuffer,
Charles MacNeill 5:89031b2f5316 802 &(pdata->fmt_info));
Charles MacNeill 5:89031b2f5316 803
Charles MacNeill 5:89031b2f5316 804 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 805 status =
Charles MacNeill 5:89031b2f5316 806 VL53LX_nvm_decode_ews_info(
Charles MacNeill 5:89031b2f5316 807 buf_size,
Charles MacNeill 5:89031b2f5316 808 pbuffer,
Charles MacNeill 5:89031b2f5316 809 &(pdata->ews_info));
Charles MacNeill 5:89031b2f5316 810
Charles MacNeill 5:89031b2f5316 811 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 812
Charles MacNeill 5:89031b2f5316 813 return status;
Charles MacNeill 5:89031b2f5316 814
Charles MacNeill 5:89031b2f5316 815 }
Charles MacNeill 5:89031b2f5316 816
Charles MacNeill 5:89031b2f5316 817
Charles MacNeill 5:89031b2f5316 818 VL53LX_Error VL53LX_nvm_decode_optical_centre(
Charles MacNeill 5:89031b2f5316 819 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 820 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 821 VL53LX_optical_centre_t *pdata)
Charles MacNeill 5:89031b2f5316 822 {
Charles MacNeill 5:89031b2f5316 823
Charles MacNeill 5:89031b2f5316 824 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 825
Charles MacNeill 5:89031b2f5316 826 uint16_t tmp = 0;
Charles MacNeill 5:89031b2f5316 827
Charles MacNeill 5:89031b2f5316 828 if (buf_size < VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_SIZE)
Charles MacNeill 5:89031b2f5316 829 return VL53LX_ERROR_BUFFER_TOO_SMALL;
Charles MacNeill 5:89031b2f5316 830
Charles MacNeill 5:89031b2f5316 831
Charles MacNeill 5:89031b2f5316 832 tmp = 0x0100;
Charles MacNeill 5:89031b2f5316 833 tmp -= (uint16_t)*(pbuffer + 2);
Charles MacNeill 5:89031b2f5316 834 if (tmp > 0x0FF)
Charles MacNeill 5:89031b2f5316 835 tmp = 0;
Charles MacNeill 5:89031b2f5316 836
Charles MacNeill 5:89031b2f5316 837 pdata->x_centre = (uint8_t)tmp;
Charles MacNeill 5:89031b2f5316 838 pdata->y_centre = *(pbuffer + 3);
Charles MacNeill 5:89031b2f5316 839
Charles MacNeill 5:89031b2f5316 840 return status;
Charles MacNeill 5:89031b2f5316 841 }
Charles MacNeill 5:89031b2f5316 842
Charles MacNeill 5:89031b2f5316 843
Charles MacNeill 5:89031b2f5316 844 VL53LX_Error VL53LX_nvm_decode_cal_peak_rate_map(
Charles MacNeill 5:89031b2f5316 845 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 846 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 847 VL53LX_cal_peak_rate_map_t *pdata)
Charles MacNeill 5:89031b2f5316 848 {
Charles MacNeill 5:89031b2f5316 849
Charles MacNeill 5:89031b2f5316 850 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 851
Charles MacNeill 5:89031b2f5316 852 uint8_t *ptmp = NULL;
Charles MacNeill 5:89031b2f5316 853 uint8_t i = 0;
Charles MacNeill 5:89031b2f5316 854
Charles MacNeill 5:89031b2f5316 855 if (buf_size < VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_SIZE)
Charles MacNeill 5:89031b2f5316 856 return VL53LX_ERROR_BUFFER_TOO_SMALL;
Charles MacNeill 5:89031b2f5316 857
Charles MacNeill 5:89031b2f5316 858 pdata->cal_distance_mm =
Charles MacNeill 5:89031b2f5316 859 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer);
Charles MacNeill 5:89031b2f5316 860
Charles MacNeill 5:89031b2f5316 861 pdata->cal_reflectance_pc =
Charles MacNeill 5:89031b2f5316 862 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 2);
Charles MacNeill 5:89031b2f5316 863 pdata->cal_reflectance_pc =
Charles MacNeill 5:89031b2f5316 864 pdata->cal_reflectance_pc >> 6;
Charles MacNeill 5:89031b2f5316 865
Charles MacNeill 5:89031b2f5316 866 pdata->max_samples = VL53LX_NVM_PEAK_RATE_MAP_SAMPLES;
Charles MacNeill 5:89031b2f5316 867 pdata->width = VL53LX_NVM_PEAK_RATE_MAP_WIDTH;
Charles MacNeill 5:89031b2f5316 868 pdata->height = VL53LX_NVM_PEAK_RATE_MAP_HEIGHT;
Charles MacNeill 5:89031b2f5316 869
Charles MacNeill 5:89031b2f5316 870 ptmp = pbuffer + 4;
Charles MacNeill 5:89031b2f5316 871 for (i = 0 ; i < VL53LX_NVM_PEAK_RATE_MAP_SAMPLES ; i++) {
Charles MacNeill 5:89031b2f5316 872 pdata->peak_rate_mcps[i] =
Charles MacNeill 5:89031b2f5316 873 (uint16_t)VL53LX_i2c_decode_uint16_t(2, ptmp);
Charles MacNeill 5:89031b2f5316 874 ptmp += 2;
Charles MacNeill 5:89031b2f5316 875 }
Charles MacNeill 5:89031b2f5316 876
Charles MacNeill 5:89031b2f5316 877 return status;
Charles MacNeill 5:89031b2f5316 878 }
Charles MacNeill 5:89031b2f5316 879
Charles MacNeill 5:89031b2f5316 880
Charles MacNeill 5:89031b2f5316 881 VL53LX_Error VL53LX_nvm_decode_additional_offset_cal_data(
Charles MacNeill 5:89031b2f5316 882 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 883 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 884 VL53LX_additional_offset_cal_data_t *pdata)
Charles MacNeill 5:89031b2f5316 885 {
Charles MacNeill 5:89031b2f5316 886
Charles MacNeill 5:89031b2f5316 887 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 888
Charles MacNeill 5:89031b2f5316 889 if (buf_size < VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_SIZE)
Charles MacNeill 5:89031b2f5316 890 return VL53LX_ERROR_BUFFER_TOO_SMALL;
Charles MacNeill 5:89031b2f5316 891
Charles MacNeill 5:89031b2f5316 892 pdata->result__mm_inner_actual_effective_spads =
Charles MacNeill 5:89031b2f5316 893 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer);
Charles MacNeill 5:89031b2f5316 894
Charles MacNeill 5:89031b2f5316 895 pdata->result__mm_outer_actual_effective_spads =
Charles MacNeill 5:89031b2f5316 896 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 2);
Charles MacNeill 5:89031b2f5316 897
Charles MacNeill 5:89031b2f5316 898 pdata->result__mm_inner_peak_signal_count_rtn_mcps =
Charles MacNeill 5:89031b2f5316 899 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 4);
Charles MacNeill 5:89031b2f5316 900
Charles MacNeill 5:89031b2f5316 901 pdata->result__mm_outer_peak_signal_count_rtn_mcps =
Charles MacNeill 5:89031b2f5316 902 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 6);
Charles MacNeill 5:89031b2f5316 903
Charles MacNeill 5:89031b2f5316 904 return status;
Charles MacNeill 5:89031b2f5316 905 }
Charles MacNeill 5:89031b2f5316 906
Charles MacNeill 5:89031b2f5316 907
Charles MacNeill 5:89031b2f5316 908 VL53LX_Error VL53LX_nvm_decode_fmt_range_results_data(
Charles MacNeill 5:89031b2f5316 909 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 910 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 911 VL53LX_decoded_nvm_fmt_range_data_t *pdata)
Charles MacNeill 5:89031b2f5316 912 {
Charles MacNeill 5:89031b2f5316 913
Charles MacNeill 5:89031b2f5316 914 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 915
Charles MacNeill 5:89031b2f5316 916 if (buf_size < VL53LX_NVM__FMT__RANGE_RESULTS__SIZE_BYTES)
Charles MacNeill 5:89031b2f5316 917 return VL53LX_ERROR_BUFFER_TOO_SMALL;
Charles MacNeill 5:89031b2f5316 918
Charles MacNeill 5:89031b2f5316 919 pdata->result__actual_effective_rtn_spads =
Charles MacNeill 5:89031b2f5316 920 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer);
Charles MacNeill 5:89031b2f5316 921
Charles MacNeill 5:89031b2f5316 922 pdata->ref_spad_array__num_requested_ref_spads =
Charles MacNeill 5:89031b2f5316 923 *(pbuffer+2);
Charles MacNeill 5:89031b2f5316 924
Charles MacNeill 5:89031b2f5316 925 pdata->ref_spad_array__ref_location =
Charles MacNeill 5:89031b2f5316 926 *(pbuffer+3);
Charles MacNeill 5:89031b2f5316 927
Charles MacNeill 5:89031b2f5316 928 pdata->result__peak_signal_count_rate_rtn_mcps =
Charles MacNeill 5:89031b2f5316 929 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 4);
Charles MacNeill 5:89031b2f5316 930
Charles MacNeill 5:89031b2f5316 931 pdata->result__ambient_count_rate_rtn_mcps =
Charles MacNeill 5:89031b2f5316 932 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 6);
Charles MacNeill 5:89031b2f5316 933
Charles MacNeill 5:89031b2f5316 934 pdata->result__peak_signal_count_rate_ref_mcps =
Charles MacNeill 5:89031b2f5316 935 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 8);
Charles MacNeill 5:89031b2f5316 936
Charles MacNeill 5:89031b2f5316 937 pdata->result__ambient_count_rate_ref_mcps =
Charles MacNeill 5:89031b2f5316 938 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 10);
Charles MacNeill 5:89031b2f5316 939
Charles MacNeill 5:89031b2f5316 940 pdata->measured_distance_mm =
Charles MacNeill 5:89031b2f5316 941 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 12);
Charles MacNeill 5:89031b2f5316 942
Charles MacNeill 5:89031b2f5316 943 pdata->measured_distance_stdev_mm =
Charles MacNeill 5:89031b2f5316 944 (uint16_t)VL53LX_i2c_decode_uint16_t(2, pbuffer + 14);
Charles MacNeill 5:89031b2f5316 945
Charles MacNeill 5:89031b2f5316 946 return status;
Charles MacNeill 5:89031b2f5316 947 }
Charles MacNeill 5:89031b2f5316 948
Charles MacNeill 5:89031b2f5316 949
Charles MacNeill 5:89031b2f5316 950 VL53LX_Error VL53LX_nvm_decode_fmt_info(
Charles MacNeill 5:89031b2f5316 951 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 952 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 953 VL53LX_decoded_nvm_fmt_info_t *pdata)
Charles MacNeill 5:89031b2f5316 954 {
Charles MacNeill 5:89031b2f5316 955
Charles MacNeill 5:89031b2f5316 956 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 957
Charles MacNeill 5:89031b2f5316 958 if (buf_size < VL53LX_NVM_SIZE_IN_BYTES)
Charles MacNeill 5:89031b2f5316 959 return VL53LX_ERROR_BUFFER_TOO_SMALL;
Charles MacNeill 5:89031b2f5316 960
Charles MacNeill 5:89031b2f5316 961 pdata->nvm__fmt__fgc[0] =
Charles MacNeill 5:89031b2f5316 962 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 963 1,
Charles MacNeill 5:89031b2f5316 964 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_0,
Charles MacNeill 5:89031b2f5316 965 0x000000FE,
Charles MacNeill 5:89031b2f5316 966 1,
Charles MacNeill 5:89031b2f5316 967 0);
Charles MacNeill 5:89031b2f5316 968 pdata->nvm__fmt__fgc[1] =
Charles MacNeill 5:89031b2f5316 969 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 970 1,
Charles MacNeill 5:89031b2f5316 971 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_1,
Charles MacNeill 5:89031b2f5316 972 0x000001FC,
Charles MacNeill 5:89031b2f5316 973 2,
Charles MacNeill 5:89031b2f5316 974 0);
Charles MacNeill 5:89031b2f5316 975 pdata->nvm__fmt__fgc[2] =
Charles MacNeill 5:89031b2f5316 976 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 977 1,
Charles MacNeill 5:89031b2f5316 978 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_2 - 1,
Charles MacNeill 5:89031b2f5316 979 0x000003F8,
Charles MacNeill 5:89031b2f5316 980 3,
Charles MacNeill 5:89031b2f5316 981 0);
Charles MacNeill 5:89031b2f5316 982 pdata->nvm__fmt__fgc[3] =
Charles MacNeill 5:89031b2f5316 983 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 984 1,
Charles MacNeill 5:89031b2f5316 985 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_3 - 1,
Charles MacNeill 5:89031b2f5316 986 0x000007F0,
Charles MacNeill 5:89031b2f5316 987 4,
Charles MacNeill 5:89031b2f5316 988 0);
Charles MacNeill 5:89031b2f5316 989 pdata->nvm__fmt__fgc[4] =
Charles MacNeill 5:89031b2f5316 990 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 991 1,
Charles MacNeill 5:89031b2f5316 992 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_4 - 1,
Charles MacNeill 5:89031b2f5316 993 0x00000FE0,
Charles MacNeill 5:89031b2f5316 994 5,
Charles MacNeill 5:89031b2f5316 995 0);
Charles MacNeill 5:89031b2f5316 996 pdata->nvm__fmt__fgc[5] =
Charles MacNeill 5:89031b2f5316 997 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 998 1,
Charles MacNeill 5:89031b2f5316 999 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_5 - 1,
Charles MacNeill 5:89031b2f5316 1000 0x00001FC0,
Charles MacNeill 5:89031b2f5316 1001 6,
Charles MacNeill 5:89031b2f5316 1002 0);
Charles MacNeill 5:89031b2f5316 1003 pdata->nvm__fmt__fgc[6] =
Charles MacNeill 5:89031b2f5316 1004 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1005 1,
Charles MacNeill 5:89031b2f5316 1006 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_6 - 1,
Charles MacNeill 5:89031b2f5316 1007 0x00003F80,
Charles MacNeill 5:89031b2f5316 1008 7,
Charles MacNeill 5:89031b2f5316 1009 0);
Charles MacNeill 5:89031b2f5316 1010 pdata->nvm__fmt__fgc[7] =
Charles MacNeill 5:89031b2f5316 1011 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1012 1,
Charles MacNeill 5:89031b2f5316 1013 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_6,
Charles MacNeill 5:89031b2f5316 1014 0x0000007F,
Charles MacNeill 5:89031b2f5316 1015 0,
Charles MacNeill 5:89031b2f5316 1016 0);
Charles MacNeill 5:89031b2f5316 1017 pdata->nvm__fmt__fgc[8] =
Charles MacNeill 5:89031b2f5316 1018 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1019 1,
Charles MacNeill 5:89031b2f5316 1020 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_7,
Charles MacNeill 5:89031b2f5316 1021 0x000000FE,
Charles MacNeill 5:89031b2f5316 1022 1,
Charles MacNeill 5:89031b2f5316 1023 0);
Charles MacNeill 5:89031b2f5316 1024 pdata->nvm__fmt__fgc[9] =
Charles MacNeill 5:89031b2f5316 1025 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1026 1,
Charles MacNeill 5:89031b2f5316 1027 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_8,
Charles MacNeill 5:89031b2f5316 1028 0x000001FC,
Charles MacNeill 5:89031b2f5316 1029 2,
Charles MacNeill 5:89031b2f5316 1030 0);
Charles MacNeill 5:89031b2f5316 1031 pdata->nvm__fmt__fgc[10] =
Charles MacNeill 5:89031b2f5316 1032 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1033 1,
Charles MacNeill 5:89031b2f5316 1034 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_9 - 1,
Charles MacNeill 5:89031b2f5316 1035 0x000003F8,
Charles MacNeill 5:89031b2f5316 1036 3,
Charles MacNeill 5:89031b2f5316 1037 0);
Charles MacNeill 5:89031b2f5316 1038 pdata->nvm__fmt__fgc[11] =
Charles MacNeill 5:89031b2f5316 1039 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1040 1,
Charles MacNeill 5:89031b2f5316 1041 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_10 - 1,
Charles MacNeill 5:89031b2f5316 1042 0x000007F0,
Charles MacNeill 5:89031b2f5316 1043 4,
Charles MacNeill 5:89031b2f5316 1044 0);
Charles MacNeill 5:89031b2f5316 1045 pdata->nvm__fmt__fgc[12] =
Charles MacNeill 5:89031b2f5316 1046 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1047 1,
Charles MacNeill 5:89031b2f5316 1048 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_11 - 1,
Charles MacNeill 5:89031b2f5316 1049 0x00000FE0,
Charles MacNeill 5:89031b2f5316 1050 5,
Charles MacNeill 5:89031b2f5316 1051 0);
Charles MacNeill 5:89031b2f5316 1052 pdata->nvm__fmt__fgc[13] =
Charles MacNeill 5:89031b2f5316 1053 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1054 1,
Charles MacNeill 5:89031b2f5316 1055 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_12 - 1,
Charles MacNeill 5:89031b2f5316 1056 0x00001FC0,
Charles MacNeill 5:89031b2f5316 1057 6,
Charles MacNeill 5:89031b2f5316 1058 0);
Charles MacNeill 5:89031b2f5316 1059 pdata->nvm__fmt__fgc[14] =
Charles MacNeill 5:89031b2f5316 1060 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1061 1,
Charles MacNeill 5:89031b2f5316 1062 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_13 - 1,
Charles MacNeill 5:89031b2f5316 1063 0x00003F80,
Charles MacNeill 5:89031b2f5316 1064 7,
Charles MacNeill 5:89031b2f5316 1065 0);
Charles MacNeill 5:89031b2f5316 1066 pdata->nvm__fmt__fgc[15] =
Charles MacNeill 5:89031b2f5316 1067 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1068 1,
Charles MacNeill 5:89031b2f5316 1069 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_13,
Charles MacNeill 5:89031b2f5316 1070 0x0000007F,
Charles MacNeill 5:89031b2f5316 1071 0,
Charles MacNeill 5:89031b2f5316 1072 0);
Charles MacNeill 5:89031b2f5316 1073 pdata->nvm__fmt__fgc[16] =
Charles MacNeill 5:89031b2f5316 1074 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1075 1,
Charles MacNeill 5:89031b2f5316 1076 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_14,
Charles MacNeill 5:89031b2f5316 1077 0x000000FE,
Charles MacNeill 5:89031b2f5316 1078 1,
Charles MacNeill 5:89031b2f5316 1079 0);
Charles MacNeill 5:89031b2f5316 1080 pdata->nvm__fmt__fgc[17] =
Charles MacNeill 5:89031b2f5316 1081 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1082 1,
Charles MacNeill 5:89031b2f5316 1083 pbuffer + VL53LX_NVM__FMT__FGC__BYTE_15,
Charles MacNeill 5:89031b2f5316 1084 0x000001FC,
Charles MacNeill 5:89031b2f5316 1085 2,
Charles MacNeill 5:89031b2f5316 1086 0);
Charles MacNeill 5:89031b2f5316 1087 pdata->nvm__fmt__fgc[18] = 0x00;
Charles MacNeill 5:89031b2f5316 1088
Charles MacNeill 5:89031b2f5316 1089 pdata->nvm__fmt__test_program_major =
Charles MacNeill 5:89031b2f5316 1090 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1091 1,
Charles MacNeill 5:89031b2f5316 1092 pbuffer + VL53LX_NVM__FMT__TEST_PROGRAM_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1093 0x000000E0,
Charles MacNeill 5:89031b2f5316 1094 5,
Charles MacNeill 5:89031b2f5316 1095 0);
Charles MacNeill 5:89031b2f5316 1096 pdata->nvm__fmt__test_program_minor =
Charles MacNeill 5:89031b2f5316 1097 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1098 1,
Charles MacNeill 5:89031b2f5316 1099 pbuffer + VL53LX_NVM__FMT__TEST_PROGRAM_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1100 0x0000001F,
Charles MacNeill 5:89031b2f5316 1101 0,
Charles MacNeill 5:89031b2f5316 1102 0);
Charles MacNeill 5:89031b2f5316 1103 pdata->nvm__fmt__map_major =
Charles MacNeill 5:89031b2f5316 1104 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1105 1,
Charles MacNeill 5:89031b2f5316 1106 pbuffer + VL53LX_NVM__FMT__MAP_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1107 0x000000E0,
Charles MacNeill 5:89031b2f5316 1108 5,
Charles MacNeill 5:89031b2f5316 1109 0);
Charles MacNeill 5:89031b2f5316 1110 pdata->nvm__fmt__map_minor =
Charles MacNeill 5:89031b2f5316 1111 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1112 1,
Charles MacNeill 5:89031b2f5316 1113 pbuffer + VL53LX_NVM__FMT__MAP_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1114 0x0000001F,
Charles MacNeill 5:89031b2f5316 1115 0,
Charles MacNeill 5:89031b2f5316 1116 0);
Charles MacNeill 5:89031b2f5316 1117 pdata->nvm__fmt__year =
Charles MacNeill 5:89031b2f5316 1118 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1119 1,
Charles MacNeill 5:89031b2f5316 1120 pbuffer + VL53LX_NVM__FMT__YEAR_MONTH,
Charles MacNeill 5:89031b2f5316 1121 0x000000F0,
Charles MacNeill 5:89031b2f5316 1122 4,
Charles MacNeill 5:89031b2f5316 1123 0);
Charles MacNeill 5:89031b2f5316 1124 pdata->nvm__fmt__month =
Charles MacNeill 5:89031b2f5316 1125 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1126 1,
Charles MacNeill 5:89031b2f5316 1127 pbuffer + VL53LX_NVM__FMT__YEAR_MONTH,
Charles MacNeill 5:89031b2f5316 1128 0x0000000F,
Charles MacNeill 5:89031b2f5316 1129 0,
Charles MacNeill 5:89031b2f5316 1130 0);
Charles MacNeill 5:89031b2f5316 1131 pdata->nvm__fmt__day =
Charles MacNeill 5:89031b2f5316 1132 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1133 1,
Charles MacNeill 5:89031b2f5316 1134 pbuffer + VL53LX_NVM__FMT__DAY_MODULE_DATE_PHASE,
Charles MacNeill 5:89031b2f5316 1135 0x000000F8,
Charles MacNeill 5:89031b2f5316 1136 3,
Charles MacNeill 5:89031b2f5316 1137 0);
Charles MacNeill 5:89031b2f5316 1138 pdata->nvm__fmt__module_date_phase =
Charles MacNeill 5:89031b2f5316 1139 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1140 1,
Charles MacNeill 5:89031b2f5316 1141 pbuffer + VL53LX_NVM__FMT__DAY_MODULE_DATE_PHASE,
Charles MacNeill 5:89031b2f5316 1142 0x00000007,
Charles MacNeill 5:89031b2f5316 1143 0,
Charles MacNeill 5:89031b2f5316 1144 0);
Charles MacNeill 5:89031b2f5316 1145 pdata->nvm__fmt__time =
Charles MacNeill 5:89031b2f5316 1146 (uint16_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1147 2,
Charles MacNeill 5:89031b2f5316 1148 pbuffer + VL53LX_NVM__FMT__TIME,
Charles MacNeill 5:89031b2f5316 1149 0x0000FFFF,
Charles MacNeill 5:89031b2f5316 1150 0,
Charles MacNeill 5:89031b2f5316 1151 0);
Charles MacNeill 5:89031b2f5316 1152 pdata->nvm__fmt__tester_id =
Charles MacNeill 5:89031b2f5316 1153 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1154 1,
Charles MacNeill 5:89031b2f5316 1155 pbuffer + VL53LX_NVM__FMT__TESTER_ID,
Charles MacNeill 5:89031b2f5316 1156 0x000000FF,
Charles MacNeill 5:89031b2f5316 1157 0,
Charles MacNeill 5:89031b2f5316 1158 0);
Charles MacNeill 5:89031b2f5316 1159 pdata->nvm__fmt__site_id =
Charles MacNeill 5:89031b2f5316 1160 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1161 1,
Charles MacNeill 5:89031b2f5316 1162 pbuffer + VL53LX_NVM__FMT__SITE_ID,
Charles MacNeill 5:89031b2f5316 1163 0x000000FF,
Charles MacNeill 5:89031b2f5316 1164 0,
Charles MacNeill 5:89031b2f5316 1165 0);
Charles MacNeill 5:89031b2f5316 1166
Charles MacNeill 5:89031b2f5316 1167 return status;
Charles MacNeill 5:89031b2f5316 1168 }
Charles MacNeill 5:89031b2f5316 1169
Charles MacNeill 5:89031b2f5316 1170
Charles MacNeill 5:89031b2f5316 1171 VL53LX_Error VL53LX_nvm_decode_ews_info(
Charles MacNeill 5:89031b2f5316 1172 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1173 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1174 VL53LX_decoded_nvm_ews_info_t *pdata)
Charles MacNeill 5:89031b2f5316 1175 {
Charles MacNeill 5:89031b2f5316 1176
Charles MacNeill 5:89031b2f5316 1177 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 1178
Charles MacNeill 5:89031b2f5316 1179 if (buf_size < VL53LX_NVM_SIZE_IN_BYTES)
Charles MacNeill 5:89031b2f5316 1180 return VL53LX_ERROR_BUFFER_TOO_SMALL;
Charles MacNeill 5:89031b2f5316 1181
Charles MacNeill 5:89031b2f5316 1182 pdata->nvm__ews__test_program_major =
Charles MacNeill 5:89031b2f5316 1183 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1184 1,
Charles MacNeill 5:89031b2f5316 1185 pbuffer + VL53LX_NVM__EWS__TEST_PROGRAM_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1186 0x000000E0,
Charles MacNeill 5:89031b2f5316 1187 5,
Charles MacNeill 5:89031b2f5316 1188 0);
Charles MacNeill 5:89031b2f5316 1189 pdata->nvm__ews__test_program_minor =
Charles MacNeill 5:89031b2f5316 1190 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1191 1,
Charles MacNeill 5:89031b2f5316 1192 pbuffer + VL53LX_NVM__EWS__TEST_PROGRAM_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1193 0x0000001F,
Charles MacNeill 5:89031b2f5316 1194 0,
Charles MacNeill 5:89031b2f5316 1195 0);
Charles MacNeill 5:89031b2f5316 1196 pdata->nvm__ews__probe_card_major =
Charles MacNeill 5:89031b2f5316 1197 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1198 1,
Charles MacNeill 5:89031b2f5316 1199 pbuffer + VL53LX_NVM__EWS__PROBE_CARD_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1200 0x000000F0,
Charles MacNeill 5:89031b2f5316 1201 4,
Charles MacNeill 5:89031b2f5316 1202 0);
Charles MacNeill 5:89031b2f5316 1203 pdata->nvm__ews__probe_card_minor =
Charles MacNeill 5:89031b2f5316 1204 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1205 1,
Charles MacNeill 5:89031b2f5316 1206 pbuffer + VL53LX_NVM__EWS__PROBE_CARD_MAJOR_MINOR,
Charles MacNeill 5:89031b2f5316 1207 0x0000000F,
Charles MacNeill 5:89031b2f5316 1208 0,
Charles MacNeill 5:89031b2f5316 1209 0);
Charles MacNeill 5:89031b2f5316 1210 pdata->nvm__ews__tester_id =
Charles MacNeill 5:89031b2f5316 1211 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1212 1,
Charles MacNeill 5:89031b2f5316 1213 pbuffer + VL53LX_NVM__EWS__TESTER_ID,
Charles MacNeill 5:89031b2f5316 1214 0x000000FF,
Charles MacNeill 5:89031b2f5316 1215 0,
Charles MacNeill 5:89031b2f5316 1216 0);
Charles MacNeill 5:89031b2f5316 1217 pdata->nvm__ews__lot[0] =
Charles MacNeill 5:89031b2f5316 1218 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1219 1,
Charles MacNeill 5:89031b2f5316 1220 pbuffer + VL53LX_NVM__EWS__LOT__BYTE_0,
Charles MacNeill 5:89031b2f5316 1221 0x000000FC,
Charles MacNeill 5:89031b2f5316 1222 2,
Charles MacNeill 5:89031b2f5316 1223 32);
Charles MacNeill 5:89031b2f5316 1224 pdata->nvm__ews__lot[1] =
Charles MacNeill 5:89031b2f5316 1225 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1226 2,
Charles MacNeill 5:89031b2f5316 1227 pbuffer + VL53LX_NVM__EWS__LOT__BYTE_1 - 1,
Charles MacNeill 5:89031b2f5316 1228 0x000003F0,
Charles MacNeill 5:89031b2f5316 1229 4,
Charles MacNeill 5:89031b2f5316 1230 32);
Charles MacNeill 5:89031b2f5316 1231 pdata->nvm__ews__lot[2] =
Charles MacNeill 5:89031b2f5316 1232 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1233 2,
Charles MacNeill 5:89031b2f5316 1234 pbuffer + VL53LX_NVM__EWS__LOT__BYTE_2 - 1,
Charles MacNeill 5:89031b2f5316 1235 0x00000FC0,
Charles MacNeill 5:89031b2f5316 1236 6,
Charles MacNeill 5:89031b2f5316 1237 32);
Charles MacNeill 5:89031b2f5316 1238 pdata->nvm__ews__lot[3] =
Charles MacNeill 5:89031b2f5316 1239 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1240 1,
Charles MacNeill 5:89031b2f5316 1241 pbuffer + VL53LX_NVM__EWS__LOT__BYTE_2,
Charles MacNeill 5:89031b2f5316 1242 0x0000003F,
Charles MacNeill 5:89031b2f5316 1243 0,
Charles MacNeill 5:89031b2f5316 1244 32);
Charles MacNeill 5:89031b2f5316 1245 pdata->nvm__ews__lot[4] =
Charles MacNeill 5:89031b2f5316 1246 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1247 1,
Charles MacNeill 5:89031b2f5316 1248 pbuffer + VL53LX_NVM__EWS__LOT__BYTE_3,
Charles MacNeill 5:89031b2f5316 1249 0x000000FC,
Charles MacNeill 5:89031b2f5316 1250 2,
Charles MacNeill 5:89031b2f5316 1251 32);
Charles MacNeill 5:89031b2f5316 1252 pdata->nvm__ews__lot[5] =
Charles MacNeill 5:89031b2f5316 1253 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1254 2,
Charles MacNeill 5:89031b2f5316 1255 pbuffer + VL53LX_NVM__EWS__LOT__BYTE_4 - 1,
Charles MacNeill 5:89031b2f5316 1256 0x000003F0,
Charles MacNeill 5:89031b2f5316 1257 4,
Charles MacNeill 5:89031b2f5316 1258 32);
Charles MacNeill 5:89031b2f5316 1259 pdata->nvm__ews__lot[6] =
Charles MacNeill 5:89031b2f5316 1260 (char)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1261 2,
Charles MacNeill 5:89031b2f5316 1262 pbuffer + VL53LX_NVM__EWS__LOT__BYTE_5 - 1,
Charles MacNeill 5:89031b2f5316 1263 0x00000FC0,
Charles MacNeill 5:89031b2f5316 1264 6,
Charles MacNeill 5:89031b2f5316 1265 32);
Charles MacNeill 5:89031b2f5316 1266
Charles MacNeill 5:89031b2f5316 1267 pdata->nvm__ews__lot[7] = 0x00;
Charles MacNeill 5:89031b2f5316 1268
Charles MacNeill 5:89031b2f5316 1269 pdata->nvm__ews__wafer =
Charles MacNeill 5:89031b2f5316 1270 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1271 1,
Charles MacNeill 5:89031b2f5316 1272 pbuffer + VL53LX_NVM__EWS__WAFER,
Charles MacNeill 5:89031b2f5316 1273 0x0000001F,
Charles MacNeill 5:89031b2f5316 1274 0,
Charles MacNeill 5:89031b2f5316 1275 0);
Charles MacNeill 5:89031b2f5316 1276 pdata->nvm__ews__xcoord =
Charles MacNeill 5:89031b2f5316 1277 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1278 1,
Charles MacNeill 5:89031b2f5316 1279 pbuffer + VL53LX_NVM__EWS__XCOORD,
Charles MacNeill 5:89031b2f5316 1280 0x000000FF,
Charles MacNeill 5:89031b2f5316 1281 0,
Charles MacNeill 5:89031b2f5316 1282 0);
Charles MacNeill 5:89031b2f5316 1283 pdata->nvm__ews__ycoord =
Charles MacNeill 5:89031b2f5316 1284 (uint8_t)VL53LX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 1285 1,
Charles MacNeill 5:89031b2f5316 1286 pbuffer + VL53LX_NVM__EWS__YCOORD,
Charles MacNeill 5:89031b2f5316 1287 0x000000FF,
Charles MacNeill 5:89031b2f5316 1288 0,
Charles MacNeill 5:89031b2f5316 1289 0);
Charles MacNeill 5:89031b2f5316 1290
Charles MacNeill 5:89031b2f5316 1291 return status;
Charles MacNeill 5:89031b2f5316 1292
Charles MacNeill 5:89031b2f5316 1293 }
Charles MacNeill 5:89031b2f5316 1294
Charles MacNeill 5:89031b2f5316 1295
Charles MacNeill 5:89031b2f5316 1296 void VL53LX_nvm_format_encode(
Charles MacNeill 5:89031b2f5316 1297 VL53LX_decoded_nvm_data_t *pnvm_info,
Charles MacNeill 5:89031b2f5316 1298 uint8_t *pnvm_data)
Charles MacNeill 5:89031b2f5316 1299 {
Charles MacNeill 5:89031b2f5316 1300 SUPPRESS_UNUSED_WARNING(pnvm_info);
Charles MacNeill 5:89031b2f5316 1301 SUPPRESS_UNUSED_WARNING(pnvm_data);
Charles MacNeill 5:89031b2f5316 1302 }
Charles MacNeill 5:89031b2f5316 1303
Charles MacNeill 5:89031b2f5316 1304
Charles MacNeill 5:89031b2f5316 1305 VL53LX_Error VL53LX_read_nvm_raw_data(
Charles MacNeill 5:89031b2f5316 1306 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 1307 uint8_t start_address,
Charles MacNeill 5:89031b2f5316 1308 uint8_t count,
Charles MacNeill 5:89031b2f5316 1309 uint8_t *pnvm_raw_data)
Charles MacNeill 5:89031b2f5316 1310 {
Charles MacNeill 5:89031b2f5316 1311
Charles MacNeill 5:89031b2f5316 1312
Charles MacNeill 5:89031b2f5316 1313
Charles MacNeill 5:89031b2f5316 1314 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 1315
Charles MacNeill 5:89031b2f5316 1316 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 1317
Charles MacNeill 5:89031b2f5316 1318
Charles MacNeill 5:89031b2f5316 1319
Charles MacNeill 5:89031b2f5316 1320 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1321 status = VL53LX_nvm_enable(
Charles MacNeill 5:89031b2f5316 1322 Dev,
Charles MacNeill 5:89031b2f5316 1323 0x0004,
Charles MacNeill 5:89031b2f5316 1324 VL53LX_NVM_POWER_UP_DELAY_US);
Charles MacNeill 5:89031b2f5316 1325
Charles MacNeill 5:89031b2f5316 1326
Charles MacNeill 5:89031b2f5316 1327
Charles MacNeill 5:89031b2f5316 1328 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1329 status = VL53LX_nvm_read(
Charles MacNeill 5:89031b2f5316 1330 Dev,
Charles MacNeill 5:89031b2f5316 1331 start_address,
Charles MacNeill 5:89031b2f5316 1332 count,
Charles MacNeill 5:89031b2f5316 1333 pnvm_raw_data);
Charles MacNeill 5:89031b2f5316 1334
Charles MacNeill 5:89031b2f5316 1335
Charles MacNeill 5:89031b2f5316 1336
Charles MacNeill 5:89031b2f5316 1337 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1338 status = VL53LX_nvm_disable(Dev);
Charles MacNeill 5:89031b2f5316 1339
Charles MacNeill 5:89031b2f5316 1340 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 1341
Charles MacNeill 5:89031b2f5316 1342 return status;
Charles MacNeill 5:89031b2f5316 1343
Charles MacNeill 5:89031b2f5316 1344 }
Charles MacNeill 5:89031b2f5316 1345
Charles MacNeill 5:89031b2f5316 1346
Charles MacNeill 5:89031b2f5316 1347 VL53LX_Error VL53LX_read_nvm(
Charles MacNeill 5:89031b2f5316 1348 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 1349 uint8_t nvm_format,
Charles MacNeill 5:89031b2f5316 1350 VL53LX_decoded_nvm_data_t *pnvm_info)
Charles MacNeill 5:89031b2f5316 1351 {
Charles MacNeill 5:89031b2f5316 1352
Charles MacNeill 5:89031b2f5316 1353
Charles MacNeill 5:89031b2f5316 1354
Charles MacNeill 5:89031b2f5316 1355 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 1356
Charles MacNeill 5:89031b2f5316 1357 uint8_t nvm_data[VL53LX_NVM_SIZE_IN_BYTES];
Charles MacNeill 5:89031b2f5316 1358
Charles MacNeill 5:89031b2f5316 1359 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 1360
Charles MacNeill 5:89031b2f5316 1361 SUPPRESS_UNUSED_WARNING(nvm_format);
Charles MacNeill 5:89031b2f5316 1362
Charles MacNeill 5:89031b2f5316 1363
Charles MacNeill 5:89031b2f5316 1364
Charles MacNeill 5:89031b2f5316 1365 status = VL53LX_read_nvm_raw_data(
Charles MacNeill 5:89031b2f5316 1366 Dev,
Charles MacNeill 5:89031b2f5316 1367 0,
Charles MacNeill 5:89031b2f5316 1368 VL53LX_NVM_SIZE_IN_BYTES >> 2,
Charles MacNeill 5:89031b2f5316 1369 nvm_data);
Charles MacNeill 5:89031b2f5316 1370
Charles MacNeill 5:89031b2f5316 1371
Charles MacNeill 5:89031b2f5316 1372
Charles MacNeill 5:89031b2f5316 1373
Charles MacNeill 5:89031b2f5316 1374
Charles MacNeill 5:89031b2f5316 1375 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1376 status = VL53LX_nvm_format_decode(
Charles MacNeill 5:89031b2f5316 1377 VL53LX_NVM_SIZE_IN_BYTES,
Charles MacNeill 5:89031b2f5316 1378 nvm_data,
Charles MacNeill 5:89031b2f5316 1379 pnvm_info);
Charles MacNeill 5:89031b2f5316 1380
Charles MacNeill 5:89031b2f5316 1381 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 1382
Charles MacNeill 5:89031b2f5316 1383 return status;
Charles MacNeill 5:89031b2f5316 1384
Charles MacNeill 5:89031b2f5316 1385 }
Charles MacNeill 5:89031b2f5316 1386
Charles MacNeill 5:89031b2f5316 1387
Charles MacNeill 5:89031b2f5316 1388 VL53LX_Error VL53LX_read_nvm_optical_centre(
Charles MacNeill 5:89031b2f5316 1389 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 1390 VL53LX_optical_centre_t *pcentre)
Charles MacNeill 5:89031b2f5316 1391 {
Charles MacNeill 5:89031b2f5316 1392
Charles MacNeill 5:89031b2f5316 1393
Charles MacNeill 5:89031b2f5316 1394 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 1395
Charles MacNeill 5:89031b2f5316 1396 uint8_t nvm_data[VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_SIZE];
Charles MacNeill 5:89031b2f5316 1397
Charles MacNeill 5:89031b2f5316 1398 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 1399
Charles MacNeill 5:89031b2f5316 1400
Charles MacNeill 5:89031b2f5316 1401
Charles MacNeill 5:89031b2f5316 1402 status =
Charles MacNeill 5:89031b2f5316 1403 VL53LX_read_nvm_raw_data(
Charles MacNeill 5:89031b2f5316 1404 Dev,
Charles MacNeill 5:89031b2f5316 1405 (uint8_t)(VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_INDEX
Charles MacNeill 5:89031b2f5316 1406 >> 2),
Charles MacNeill 5:89031b2f5316 1407 (uint8_t)(VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_SIZE
Charles MacNeill 5:89031b2f5316 1408 >> 2),
Charles MacNeill 5:89031b2f5316 1409 nvm_data);
Charles MacNeill 5:89031b2f5316 1410
Charles MacNeill 5:89031b2f5316 1411
Charles MacNeill 5:89031b2f5316 1412
Charles MacNeill 5:89031b2f5316 1413 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1414 status =
Charles MacNeill 5:89031b2f5316 1415 VL53LX_nvm_decode_optical_centre(
Charles MacNeill 5:89031b2f5316 1416 VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_SIZE,
Charles MacNeill 5:89031b2f5316 1417 nvm_data,
Charles MacNeill 5:89031b2f5316 1418 pcentre);
Charles MacNeill 5:89031b2f5316 1419
Charles MacNeill 5:89031b2f5316 1420 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 1421
Charles MacNeill 5:89031b2f5316 1422 return status;
Charles MacNeill 5:89031b2f5316 1423 }
Charles MacNeill 5:89031b2f5316 1424
Charles MacNeill 5:89031b2f5316 1425
Charles MacNeill 5:89031b2f5316 1426 VL53LX_Error VL53LX_read_nvm_cal_peak_rate_map(
Charles MacNeill 5:89031b2f5316 1427 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 1428 VL53LX_cal_peak_rate_map_t *pcal_data)
Charles MacNeill 5:89031b2f5316 1429 {
Charles MacNeill 5:89031b2f5316 1430
Charles MacNeill 5:89031b2f5316 1431
Charles MacNeill 5:89031b2f5316 1432 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 1433
Charles MacNeill 5:89031b2f5316 1434 uint8_t nvm_data[VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_SIZE];
Charles MacNeill 5:89031b2f5316 1435
Charles MacNeill 5:89031b2f5316 1436 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 1437
Charles MacNeill 5:89031b2f5316 1438
Charles MacNeill 5:89031b2f5316 1439
Charles MacNeill 5:89031b2f5316 1440 status =
Charles MacNeill 5:89031b2f5316 1441 VL53LX_read_nvm_raw_data(
Charles MacNeill 5:89031b2f5316 1442 Dev,
Charles MacNeill 5:89031b2f5316 1443 (uint8_t)(VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_INDEX
Charles MacNeill 5:89031b2f5316 1444 >> 2),
Charles MacNeill 5:89031b2f5316 1445 (uint8_t)(VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_SIZE
Charles MacNeill 5:89031b2f5316 1446 >> 2),
Charles MacNeill 5:89031b2f5316 1447 nvm_data);
Charles MacNeill 5:89031b2f5316 1448
Charles MacNeill 5:89031b2f5316 1449
Charles MacNeill 5:89031b2f5316 1450
Charles MacNeill 5:89031b2f5316 1451 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1452 status =
Charles MacNeill 5:89031b2f5316 1453 VL53LX_nvm_decode_cal_peak_rate_map(
Charles MacNeill 5:89031b2f5316 1454 VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_SIZE,
Charles MacNeill 5:89031b2f5316 1455 nvm_data,
Charles MacNeill 5:89031b2f5316 1456 pcal_data);
Charles MacNeill 5:89031b2f5316 1457
Charles MacNeill 5:89031b2f5316 1458 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 1459
Charles MacNeill 5:89031b2f5316 1460 return status;
Charles MacNeill 5:89031b2f5316 1461 }
Charles MacNeill 5:89031b2f5316 1462
Charles MacNeill 5:89031b2f5316 1463
Charles MacNeill 5:89031b2f5316 1464 VL53LX_Error VL53LX_read_nvm_additional_offset_cal_data(
Charles MacNeill 5:89031b2f5316 1465 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 1466 VL53LX_additional_offset_cal_data_t *pcal_data)
Charles MacNeill 5:89031b2f5316 1467 {
Charles MacNeill 5:89031b2f5316 1468
Charles MacNeill 5:89031b2f5316 1469
Charles MacNeill 5:89031b2f5316 1470
Charles MacNeill 5:89031b2f5316 1471 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 1472
Charles MacNeill 5:89031b2f5316 1473 uint8_t nvm_data[VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_SIZE];
Charles MacNeill 5:89031b2f5316 1474
Charles MacNeill 5:89031b2f5316 1475 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 1476
Charles MacNeill 5:89031b2f5316 1477
Charles MacNeill 5:89031b2f5316 1478
Charles MacNeill 5:89031b2f5316 1479 status =
Charles MacNeill 5:89031b2f5316 1480 VL53LX_read_nvm_raw_data(
Charles MacNeill 5:89031b2f5316 1481 Dev,
Charles MacNeill 5:89031b2f5316 1482 (uint8_t)(
Charles MacNeill 5:89031b2f5316 1483 VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_INDEX >> 2),
Charles MacNeill 5:89031b2f5316 1484 (uint8_t)(
Charles MacNeill 5:89031b2f5316 1485 VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_SIZE >> 2),
Charles MacNeill 5:89031b2f5316 1486 nvm_data);
Charles MacNeill 5:89031b2f5316 1487
Charles MacNeill 5:89031b2f5316 1488
Charles MacNeill 5:89031b2f5316 1489
Charles MacNeill 5:89031b2f5316 1490 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1491 status = VL53LX_nvm_decode_additional_offset_cal_data(
Charles MacNeill 5:89031b2f5316 1492 VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_SIZE,
Charles MacNeill 5:89031b2f5316 1493 nvm_data,
Charles MacNeill 5:89031b2f5316 1494 pcal_data);
Charles MacNeill 5:89031b2f5316 1495
Charles MacNeill 5:89031b2f5316 1496 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 1497
Charles MacNeill 5:89031b2f5316 1498 return status;
Charles MacNeill 5:89031b2f5316 1499
Charles MacNeill 5:89031b2f5316 1500 }
Charles MacNeill 5:89031b2f5316 1501
Charles MacNeill 5:89031b2f5316 1502
Charles MacNeill 5:89031b2f5316 1503 VL53LX_Error VL53LX_read_nvm_fmt_range_results_data(
Charles MacNeill 5:89031b2f5316 1504 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 1505 uint16_t range_results_select,
Charles MacNeill 5:89031b2f5316 1506 VL53LX_decoded_nvm_fmt_range_data_t *prange_data)
Charles MacNeill 5:89031b2f5316 1507 {
Charles MacNeill 5:89031b2f5316 1508
Charles MacNeill 5:89031b2f5316 1509
Charles MacNeill 5:89031b2f5316 1510
Charles MacNeill 5:89031b2f5316 1511 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 1512
Charles MacNeill 5:89031b2f5316 1513 uint8_t nvm_data[VL53LX_NVM__FMT__RANGE_RESULTS__SIZE_BYTES];
Charles MacNeill 5:89031b2f5316 1514
Charles MacNeill 5:89031b2f5316 1515 LOG_FUNCTION_START("");
Charles MacNeill 5:89031b2f5316 1516
Charles MacNeill 5:89031b2f5316 1517
Charles MacNeill 5:89031b2f5316 1518
Charles MacNeill 5:89031b2f5316 1519 status = VL53LX_read_nvm_raw_data(
Charles MacNeill 5:89031b2f5316 1520 Dev,
Charles MacNeill 5:89031b2f5316 1521 (uint8_t)(range_results_select >> 2),
Charles MacNeill 5:89031b2f5316 1522 (uint8_t)(VL53LX_NVM__FMT__RANGE_RESULTS__SIZE_BYTES >> 2),
Charles MacNeill 5:89031b2f5316 1523 nvm_data);
Charles MacNeill 5:89031b2f5316 1524
Charles MacNeill 5:89031b2f5316 1525
Charles MacNeill 5:89031b2f5316 1526
Charles MacNeill 5:89031b2f5316 1527 if (status == VL53LX_ERROR_NONE)
Charles MacNeill 5:89031b2f5316 1528 status =
Charles MacNeill 5:89031b2f5316 1529 VL53LX_nvm_decode_fmt_range_results_data(
Charles MacNeill 5:89031b2f5316 1530 VL53LX_NVM__FMT__RANGE_RESULTS__SIZE_BYTES,
Charles MacNeill 5:89031b2f5316 1531 nvm_data,
Charles MacNeill 5:89031b2f5316 1532 prange_data);
Charles MacNeill 5:89031b2f5316 1533
Charles MacNeill 5:89031b2f5316 1534 LOG_FUNCTION_END(status);
Charles MacNeill 5:89031b2f5316 1535
Charles MacNeill 5:89031b2f5316 1536 return status;
Charles MacNeill 5:89031b2f5316 1537
Charles MacNeill 5:89031b2f5316 1538 }
Charles MacNeill 5:89031b2f5316 1539
Charles MacNeill 5:89031b2f5316 1540