Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: BigBot_v1 PololuDistanceSensorTest Lidar Ares test ... more
vl53l0x_api_strings.cpp
00001 /******************************************************************************* 00002 Copyright � 2016, STMicroelectronics International N.V. 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without 00006 modification, are permitted provided that the following conditions are met: 00007 * Redistributions of source code must retain the above copyright 00008 notice, this list of conditions and the following disclaimer. 00009 * Redistributions in binary form must reproduce the above copyright 00010 notice, this list of conditions and the following disclaimer in the 00011 documentation and/or other materials provided with the distribution. 00012 * Neither the name of STMicroelectronics nor the 00013 names of its contributors may be used to endorse or promote products 00014 derived from this software without specific prior written permission. 00015 00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00017 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00018 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND 00019 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED. 00020 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY 00021 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00022 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00023 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00024 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00025 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00026 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00027 ******************************************************************************/ 00028 00029 #include "vl53l0x_api.h" 00030 #include "vl53l0x_api_core.h" 00031 #include "vl53l0x_api_strings.h" 00032 00033 #ifndef __KERNEL__ 00034 #include <stdlib.h> 00035 #endif 00036 00037 #ifndef VL53L0X_COPYSTRING 00038 #define VL53L0X_COPYSTRING(str, ...) strcpy(str, ##__VA_ARGS__) 00039 #endif 00040 00041 VL53L0X_Error VL53L0X_check_part_used(VL53L0X_DEV Dev, 00042 uint8_t *Revision, 00043 VL53L0X_DeviceInfo_t *pVL53L0X_DeviceInfo) 00044 { 00045 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00046 uint8_t ModuleIdInt; 00047 char *ProductId_tmp; 00048 00049 00050 Status = VL53L0X_get_info_from_device(Dev, 2); 00051 00052 if (Status == VL53L0X_ERROR_NONE) { 00053 ModuleIdInt = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, ModuleId); 00054 00055 if (ModuleIdInt == 0) { 00056 *Revision = 0; 00057 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->ProductId , ""); 00058 } else { 00059 *Revision = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, Revision); 00060 ProductId_tmp = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, 00061 ProductId); 00062 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->ProductId , ProductId_tmp); 00063 } 00064 } 00065 00066 return Status; 00067 } 00068 00069 00070 VL53L0X_Error VL53L0X_get_device_info(VL53L0X_DEV Dev, 00071 VL53L0X_DeviceInfo_t *pVL53L0X_DeviceInfo) 00072 { 00073 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00074 uint8_t revision_id; 00075 uint8_t Revision; 00076 00077 Status = VL53L0X_check_part_used(Dev, &Revision, pVL53L0X_DeviceInfo); 00078 00079 if (Status == VL53L0X_ERROR_NONE) { 00080 if (Revision == 0) { 00081 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00082 VL53L0X_STRING_DEVICE_INFO_NAME_TS0); 00083 } else if ((Revision <= 34) && (Revision != 32)) { 00084 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00085 VL53L0X_STRING_DEVICE_INFO_NAME_TS1); 00086 } else if (Revision < 39) { 00087 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00088 VL53L0X_STRING_DEVICE_INFO_NAME_TS2); 00089 } else { 00090 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00091 VL53L0X_STRING_DEVICE_INFO_NAME_ES1); 00092 } 00093 00094 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Type , 00095 VL53L0X_STRING_DEVICE_INFO_TYPE); 00096 00097 } 00098 00099 if (Status == VL53L0X_ERROR_NONE) { 00100 Status = VL53L0X_RdByte(Dev, VL53L0X_REG_IDENTIFICATION_MODEL_ID, 00101 &pVL53L0X_DeviceInfo->ProductType ); 00102 } 00103 00104 if (Status == VL53L0X_ERROR_NONE) { 00105 Status = VL53L0X_RdByte(Dev, 00106 VL53L0X_REG_IDENTIFICATION_REVISION_ID, 00107 &revision_id); 00108 pVL53L0X_DeviceInfo->ProductRevisionMajor = 1; 00109 pVL53L0X_DeviceInfo->ProductRevisionMinor = 00110 (revision_id & 0xF0) >> 4; 00111 } 00112 00113 return Status; 00114 } 00115 00116 00117 VL53L0X_Error VL53L0X_get_device_error_string(VL53L0X_DeviceError ErrorCode, 00118 char *pDeviceErrorString) 00119 { 00120 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00121 00122 00123 switch (ErrorCode) { 00124 case VL53L0X_DEVICEERROR_NONE: 00125 VL53L0X_COPYSTRING(pDeviceErrorString, 00126 VL53L0X_STRING_DEVICEERROR_NONE); 00127 break; 00128 case VL53L0X_DEVICEERROR_VCSELCONTINUITYTESTFAILURE: 00129 VL53L0X_COPYSTRING(pDeviceErrorString, 00130 VL53L0X_STRING_DEVICEERROR_VCSELCONTINUITYTESTFAILURE); 00131 break; 00132 case VL53L0X_DEVICEERROR_VCSELWATCHDOGTESTFAILURE: 00133 VL53L0X_COPYSTRING(pDeviceErrorString, 00134 VL53L0X_STRING_DEVICEERROR_VCSELWATCHDOGTESTFAILURE); 00135 break; 00136 case VL53L0X_DEVICEERROR_NOVHVVALUEFOUND: 00137 VL53L0X_COPYSTRING(pDeviceErrorString, 00138 VL53L0X_STRING_DEVICEERROR_NOVHVVALUEFOUND); 00139 break; 00140 case VL53L0X_DEVICEERROR_MSRCNOTARGET: 00141 VL53L0X_COPYSTRING(pDeviceErrorString, 00142 VL53L0X_STRING_DEVICEERROR_MSRCNOTARGET); 00143 break; 00144 case VL53L0X_DEVICEERROR_SNRCHECK: 00145 VL53L0X_COPYSTRING(pDeviceErrorString, 00146 VL53L0X_STRING_DEVICEERROR_SNRCHECK); 00147 break; 00148 case VL53L0X_DEVICEERROR_RANGEPHASECHECK: 00149 VL53L0X_COPYSTRING(pDeviceErrorString, 00150 VL53L0X_STRING_DEVICEERROR_RANGEPHASECHECK); 00151 break; 00152 case VL53L0X_DEVICEERROR_SIGMATHRESHOLDCHECK: 00153 VL53L0X_COPYSTRING(pDeviceErrorString, 00154 VL53L0X_STRING_DEVICEERROR_SIGMATHRESHOLDCHECK); 00155 break; 00156 case VL53L0X_DEVICEERROR_TCC: 00157 VL53L0X_COPYSTRING(pDeviceErrorString, 00158 VL53L0X_STRING_DEVICEERROR_TCC); 00159 break; 00160 case VL53L0X_DEVICEERROR_PHASECONSISTENCY: 00161 VL53L0X_COPYSTRING(pDeviceErrorString, 00162 VL53L0X_STRING_DEVICEERROR_PHASECONSISTENCY); 00163 break; 00164 case VL53L0X_DEVICEERROR_MINCLIP: 00165 VL53L0X_COPYSTRING(pDeviceErrorString, 00166 VL53L0X_STRING_DEVICEERROR_MINCLIP); 00167 break; 00168 case VL53L0X_DEVICEERROR_RANGECOMPLETE: 00169 VL53L0X_COPYSTRING(pDeviceErrorString, 00170 VL53L0X_STRING_DEVICEERROR_RANGECOMPLETE); 00171 break; 00172 case VL53L0X_DEVICEERROR_ALGOUNDERFLOW: 00173 VL53L0X_COPYSTRING(pDeviceErrorString, 00174 VL53L0X_STRING_DEVICEERROR_ALGOUNDERFLOW); 00175 break; 00176 case VL53L0X_DEVICEERROR_ALGOOVERFLOW: 00177 VL53L0X_COPYSTRING(pDeviceErrorString, 00178 VL53L0X_STRING_DEVICEERROR_ALGOOVERFLOW); 00179 break; 00180 case VL53L0X_DEVICEERROR_RANGEIGNORETHRESHOLD: 00181 VL53L0X_COPYSTRING(pDeviceErrorString, 00182 VL53L0X_STRING_DEVICEERROR_RANGEIGNORETHRESHOLD); 00183 break; 00184 00185 default: 00186 VL53L0X_COPYSTRING(pDeviceErrorString, 00187 VL53L0X_STRING_UNKNOW_ERROR_CODE); 00188 00189 } 00190 00191 return Status; 00192 } 00193 00194 VL53L0X_Error VL53L0X_get_range_status_string(uint8_t RangeStatus, 00195 char *pRangeStatusString) 00196 { 00197 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00198 00199 00200 switch (RangeStatus) { 00201 case 0: 00202 VL53L0X_COPYSTRING(pRangeStatusString, 00203 VL53L0X_STRING_RANGESTATUS_RANGEVALID); 00204 break; 00205 case 1: 00206 VL53L0X_COPYSTRING(pRangeStatusString, 00207 VL53L0X_STRING_RANGESTATUS_SIGMA); 00208 break; 00209 case 2: 00210 VL53L0X_COPYSTRING(pRangeStatusString, 00211 VL53L0X_STRING_RANGESTATUS_SIGNAL); 00212 break; 00213 case 3: 00214 VL53L0X_COPYSTRING(pRangeStatusString, 00215 VL53L0X_STRING_RANGESTATUS_MINRANGE); 00216 break; 00217 case 4: 00218 VL53L0X_COPYSTRING(pRangeStatusString, 00219 VL53L0X_STRING_RANGESTATUS_PHASE); 00220 break; 00221 case 5: 00222 VL53L0X_COPYSTRING(pRangeStatusString, 00223 VL53L0X_STRING_RANGESTATUS_HW); 00224 break; 00225 00226 default: /**/ 00227 VL53L0X_COPYSTRING(pRangeStatusString, 00228 VL53L0X_STRING_RANGESTATUS_NONE); 00229 } 00230 00231 return Status; 00232 } 00233 00234 VL53L0X_Error VL53L0X_get_pal_error_string(VL53L0X_Error PalErrorCode, 00235 char *pPalErrorString) 00236 { 00237 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00238 00239 00240 switch (PalErrorCode) { 00241 case VL53L0X_ERROR_NONE: 00242 VL53L0X_COPYSTRING(pPalErrorString, 00243 VL53L0X_STRING_ERROR_NONE); 00244 break; 00245 case VL53L0X_ERROR_CALIBRATION_WARNING: 00246 VL53L0X_COPYSTRING(pPalErrorString, 00247 VL53L0X_STRING_ERROR_CALIBRATION_WARNING); 00248 break; 00249 case VL53L0X_ERROR_MIN_CLIPPED: 00250 VL53L0X_COPYSTRING(pPalErrorString, 00251 VL53L0X_STRING_ERROR_MIN_CLIPPED); 00252 break; 00253 case VL53L0X_ERROR_UNDEFINED: 00254 VL53L0X_COPYSTRING(pPalErrorString, 00255 VL53L0X_STRING_ERROR_UNDEFINED); 00256 break; 00257 case VL53L0X_ERROR_INVALID_PARAMS: 00258 VL53L0X_COPYSTRING(pPalErrorString, 00259 VL53L0X_STRING_ERROR_INVALID_PARAMS); 00260 break; 00261 case VL53L0X_ERROR_NOT_SUPPORTED: 00262 VL53L0X_COPYSTRING(pPalErrorString, 00263 VL53L0X_STRING_ERROR_NOT_SUPPORTED); 00264 break; 00265 case VL53L0X_ERROR_INTERRUPT_NOT_CLEARED: 00266 VL53L0X_COPYSTRING(pPalErrorString, 00267 VL53L0X_STRING_ERROR_INTERRUPT_NOT_CLEARED); 00268 break; 00269 case VL53L0X_ERROR_RANGE_ERROR: 00270 VL53L0X_COPYSTRING(pPalErrorString, 00271 VL53L0X_STRING_ERROR_RANGE_ERROR); 00272 break; 00273 case VL53L0X_ERROR_TIME_OUT: 00274 VL53L0X_COPYSTRING(pPalErrorString, 00275 VL53L0X_STRING_ERROR_TIME_OUT); 00276 break; 00277 case VL53L0X_ERROR_MODE_NOT_SUPPORTED: 00278 VL53L0X_COPYSTRING(pPalErrorString, 00279 VL53L0X_STRING_ERROR_MODE_NOT_SUPPORTED); 00280 break; 00281 case VL53L0X_ERROR_BUFFER_TOO_SMALL: 00282 VL53L0X_COPYSTRING(pPalErrorString, 00283 VL53L0X_STRING_ERROR_BUFFER_TOO_SMALL); 00284 break; 00285 case VL53L0X_ERROR_GPIO_NOT_EXISTING: 00286 VL53L0X_COPYSTRING(pPalErrorString, 00287 VL53L0X_STRING_ERROR_GPIO_NOT_EXISTING); 00288 break; 00289 case VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED: 00290 VL53L0X_COPYSTRING(pPalErrorString, 00291 VL53L0X_STRING_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED); 00292 break; 00293 case VL53L0X_ERROR_CONTROL_INTERFACE: 00294 VL53L0X_COPYSTRING(pPalErrorString, 00295 VL53L0X_STRING_ERROR_CONTROL_INTERFACE); 00296 break; 00297 case VL53L0X_ERROR_INVALID_COMMAND: 00298 VL53L0X_COPYSTRING(pPalErrorString, 00299 VL53L0X_STRING_ERROR_INVALID_COMMAND); 00300 break; 00301 case VL53L0X_ERROR_DIVISION_BY_ZERO: 00302 VL53L0X_COPYSTRING(pPalErrorString, 00303 VL53L0X_STRING_ERROR_DIVISION_BY_ZERO); 00304 break; 00305 case VL53L0X_ERROR_REF_SPAD_INIT: 00306 VL53L0X_COPYSTRING(pPalErrorString, 00307 VL53L0X_STRING_ERROR_REF_SPAD_INIT); 00308 break; 00309 case VL53L0X_ERROR_NOT_IMPLEMENTED: 00310 VL53L0X_COPYSTRING(pPalErrorString, 00311 VL53L0X_STRING_ERROR_NOT_IMPLEMENTED); 00312 break; 00313 00314 default: 00315 VL53L0X_COPYSTRING(pPalErrorString, 00316 VL53L0X_STRING_UNKNOW_ERROR_CODE); 00317 } 00318 00319 return Status; 00320 } 00321 00322 VL53L0X_Error VL53L0X_get_pal_state_string(VL53L0X_State PalStateCode, 00323 char *pPalStateString) 00324 { 00325 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00326 00327 00328 switch (PalStateCode) { 00329 case VL53L0X_STATE_POWERDOWN: 00330 VL53L0X_COPYSTRING(pPalStateString, 00331 VL53L0X_STRING_STATE_POWERDOWN); 00332 break; 00333 case VL53L0X_STATE_WAIT_STATICINIT: 00334 VL53L0X_COPYSTRING(pPalStateString, 00335 VL53L0X_STRING_STATE_WAIT_STATICINIT); 00336 break; 00337 case VL53L0X_STATE_STANDBY: 00338 VL53L0X_COPYSTRING(pPalStateString, 00339 VL53L0X_STRING_STATE_STANDBY); 00340 break; 00341 case VL53L0X_STATE_IDLE: 00342 VL53L0X_COPYSTRING(pPalStateString, 00343 VL53L0X_STRING_STATE_IDLE); 00344 break; 00345 case VL53L0X_STATE_RUNNING: 00346 VL53L0X_COPYSTRING(pPalStateString, 00347 VL53L0X_STRING_STATE_RUNNING); 00348 break; 00349 case VL53L0X_STATE_UNKNOWN: 00350 VL53L0X_COPYSTRING(pPalStateString, 00351 VL53L0X_STRING_STATE_UNKNOWN); 00352 break; 00353 case VL53L0X_STATE_ERROR: 00354 VL53L0X_COPYSTRING(pPalStateString, 00355 VL53L0X_STRING_STATE_ERROR); 00356 break; 00357 00358 default: 00359 VL53L0X_COPYSTRING(pPalStateString, 00360 VL53L0X_STRING_STATE_UNKNOWN); 00361 } 00362 00363 return Status; 00364 } 00365 00366 VL53L0X_Error VL53L0X_get_sequence_steps_info( 00367 VL53L0X_SequenceStepId SequenceStepId, 00368 char *pSequenceStepsString) 00369 { 00370 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00371 00372 switch (SequenceStepId) { 00373 case VL53L0X_SEQUENCESTEP_TCC: 00374 VL53L0X_COPYSTRING(pSequenceStepsString, 00375 VL53L0X_STRING_SEQUENCESTEP_TCC); 00376 break; 00377 case VL53L0X_SEQUENCESTEP_DSS: 00378 VL53L0X_COPYSTRING(pSequenceStepsString, 00379 VL53L0X_STRING_SEQUENCESTEP_DSS); 00380 break; 00381 case VL53L0X_SEQUENCESTEP_MSRC: 00382 VL53L0X_COPYSTRING(pSequenceStepsString, 00383 VL53L0X_STRING_SEQUENCESTEP_MSRC); 00384 break; 00385 case VL53L0X_SEQUENCESTEP_PRE_RANGE: 00386 VL53L0X_COPYSTRING(pSequenceStepsString, 00387 VL53L0X_STRING_SEQUENCESTEP_PRE_RANGE); 00388 break; 00389 case VL53L0X_SEQUENCESTEP_FINAL_RANGE: 00390 VL53L0X_COPYSTRING(pSequenceStepsString, 00391 VL53L0X_STRING_SEQUENCESTEP_FINAL_RANGE); 00392 break; 00393 00394 default: 00395 Status = VL53L0X_ERROR_INVALID_PARAMS; 00396 } 00397 00398 00399 return Status; 00400 } 00401 00402 00403 VL53L0X_Error VL53L0X_get_limit_check_info(VL53L0X_DEV Dev, uint16_t LimitCheckId, 00404 char *pLimitCheckString) 00405 { 00406 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00407 00408 00409 switch (LimitCheckId) { 00410 case VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE: 00411 VL53L0X_COPYSTRING(pLimitCheckString, 00412 VL53L0X_STRING_CHECKENABLE_SIGMA_FINAL_RANGE); 00413 break; 00414 case VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE: 00415 VL53L0X_COPYSTRING(pLimitCheckString, 00416 VL53L0X_STRING_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE); 00417 break; 00418 case VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP: 00419 VL53L0X_COPYSTRING(pLimitCheckString, 00420 VL53L0X_STRING_CHECKENABLE_SIGNAL_REF_CLIP); 00421 break; 00422 case VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD: 00423 VL53L0X_COPYSTRING(pLimitCheckString, 00424 VL53L0X_STRING_CHECKENABLE_RANGE_IGNORE_THRESHOLD); 00425 break; 00426 00427 case VL53L0X_CHECKENABLE_SIGNAL_RATE_MSRC: 00428 VL53L0X_COPYSTRING(pLimitCheckString, 00429 VL53L0X_STRING_CHECKENABLE_SIGNAL_RATE_MSRC); 00430 break; 00431 00432 case VL53L0X_CHECKENABLE_SIGNAL_RATE_PRE_RANGE: 00433 VL53L0X_COPYSTRING(pLimitCheckString, 00434 VL53L0X_STRING_CHECKENABLE_SIGNAL_RATE_PRE_RANGE); 00435 break; 00436 00437 default: 00438 VL53L0X_COPYSTRING(pLimitCheckString, 00439 VL53L0X_STRING_UNKNOW_ERROR_CODE); 00440 00441 } 00442 00443 return Status; 00444 }
Generated on Wed Jul 13 2022 23:40:16 by
1.7.2