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.
vl53l0x_api_strings.c
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 #define LOG_FUNCTION_START(fmt, ...) \ 00038 _LOG_FUNCTION_START(TRACE_MODULE_API, fmt, ##__VA_ARGS__) 00039 #define LOG_FUNCTION_END(status, ...) \ 00040 _LOG_FUNCTION_END(TRACE_MODULE_API, status, ##__VA_ARGS__) 00041 #define LOG_FUNCTION_END_FMT(status, fmt, ...) \ 00042 _LOG_FUNCTION_END_FMT(TRACE_MODULE_API, status, fmt, ##__VA_ARGS__) 00043 00044 00045 VL53L0X_Error VL53L0X_check_part_used(VL53L0X_DEV Dev, 00046 uint8_t *Revision, 00047 VL53L0X_DeviceInfo_t *pVL53L0X_DeviceInfo) 00048 { 00049 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00050 uint8_t ModuleIdInt; 00051 char *ProductId_tmp; 00052 00053 LOG_FUNCTION_START(""); 00054 00055 Status = VL53L0X_get_info_from_device(Dev, 2); 00056 00057 if (Status == VL53L0X_ERROR_NONE) { 00058 ModuleIdInt = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, ModuleId); 00059 00060 if (ModuleIdInt == 0) { 00061 *Revision = 0; 00062 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->ProductId , ""); 00063 } else { 00064 *Revision = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, Revision); 00065 ProductId_tmp = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, 00066 ProductId); 00067 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->ProductId , ProductId_tmp); 00068 } 00069 } 00070 00071 LOG_FUNCTION_END(Status); 00072 return Status; 00073 } 00074 00075 00076 VL53L0X_Error VL53L0X_get_device_info(VL53L0X_DEV Dev, 00077 VL53L0X_DeviceInfo_t *pVL53L0X_DeviceInfo) 00078 { 00079 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00080 uint8_t revision_id; 00081 uint8_t Revision; 00082 00083 Status = VL53L0X_check_part_used(Dev, &Revision, pVL53L0X_DeviceInfo); 00084 00085 if (Status == VL53L0X_ERROR_NONE) { 00086 if (Revision == 0) { 00087 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00088 VL53L0X_STRING_DEVICE_INFO_NAME_TS0); 00089 } else if ((Revision <= 34) && (Revision != 32)) { 00090 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00091 VL53L0X_STRING_DEVICE_INFO_NAME_TS1); 00092 } else if (Revision < 39) { 00093 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00094 VL53L0X_STRING_DEVICE_INFO_NAME_TS2); 00095 } else { 00096 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Name , 00097 VL53L0X_STRING_DEVICE_INFO_NAME_ES1); 00098 } 00099 00100 VL53L0X_COPYSTRING(pVL53L0X_DeviceInfo->Type , 00101 VL53L0X_STRING_DEVICE_INFO_TYPE); 00102 00103 } 00104 00105 if (Status == VL53L0X_ERROR_NONE) { 00106 Status = VL53L0X_RdByte(Dev, VL53L0X_REG_IDENTIFICATION_MODEL_ID, 00107 &pVL53L0X_DeviceInfo->ProductType ); 00108 } 00109 00110 if (Status == VL53L0X_ERROR_NONE) { 00111 Status = VL53L0X_RdByte(Dev, 00112 VL53L0X_REG_IDENTIFICATION_REVISION_ID, 00113 &revision_id); 00114 pVL53L0X_DeviceInfo->ProductRevisionMajor = 1; 00115 pVL53L0X_DeviceInfo->ProductRevisionMinor = 00116 (revision_id & 0xF0) >> 4; 00117 } 00118 00119 return Status; 00120 } 00121 00122 00123 VL53L0X_Error VL53L0X_get_device_error_string(VL53L0X_DeviceError ErrorCode, 00124 char *pDeviceErrorString) 00125 { 00126 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00127 00128 LOG_FUNCTION_START(""); 00129 00130 switch (ErrorCode) { 00131 case VL53L0X_DEVICEERROR_NONE: 00132 VL53L0X_COPYSTRING(pDeviceErrorString, 00133 VL53L0X_STRING_DEVICEERROR_NONE); 00134 break; 00135 case VL53L0X_DEVICEERROR_VCSELCONTINUITYTESTFAILURE: 00136 VL53L0X_COPYSTRING(pDeviceErrorString, 00137 VL53L0X_STRING_DEVICEERROR_VCSELCONTINUITYTESTFAILURE); 00138 break; 00139 case VL53L0X_DEVICEERROR_VCSELWATCHDOGTESTFAILURE: 00140 VL53L0X_COPYSTRING(pDeviceErrorString, 00141 VL53L0X_STRING_DEVICEERROR_VCSELWATCHDOGTESTFAILURE); 00142 break; 00143 case VL53L0X_DEVICEERROR_NOVHVVALUEFOUND: 00144 VL53L0X_COPYSTRING(pDeviceErrorString, 00145 VL53L0X_STRING_DEVICEERROR_NOVHVVALUEFOUND); 00146 break; 00147 case VL53L0X_DEVICEERROR_MSRCNOTARGET: 00148 VL53L0X_COPYSTRING(pDeviceErrorString, 00149 VL53L0X_STRING_DEVICEERROR_MSRCNOTARGET); 00150 break; 00151 case VL53L0X_DEVICEERROR_SNRCHECK: 00152 VL53L0X_COPYSTRING(pDeviceErrorString, 00153 VL53L0X_STRING_DEVICEERROR_SNRCHECK); 00154 break; 00155 case VL53L0X_DEVICEERROR_RANGEPHASECHECK: 00156 VL53L0X_COPYSTRING(pDeviceErrorString, 00157 VL53L0X_STRING_DEVICEERROR_RANGEPHASECHECK); 00158 break; 00159 case VL53L0X_DEVICEERROR_SIGMATHRESHOLDCHECK: 00160 VL53L0X_COPYSTRING(pDeviceErrorString, 00161 VL53L0X_STRING_DEVICEERROR_SIGMATHRESHOLDCHECK); 00162 break; 00163 case VL53L0X_DEVICEERROR_TCC: 00164 VL53L0X_COPYSTRING(pDeviceErrorString, 00165 VL53L0X_STRING_DEVICEERROR_TCC); 00166 break; 00167 case VL53L0X_DEVICEERROR_PHASECONSISTENCY: 00168 VL53L0X_COPYSTRING(pDeviceErrorString, 00169 VL53L0X_STRING_DEVICEERROR_PHASECONSISTENCY); 00170 break; 00171 case VL53L0X_DEVICEERROR_MINCLIP: 00172 VL53L0X_COPYSTRING(pDeviceErrorString, 00173 VL53L0X_STRING_DEVICEERROR_MINCLIP); 00174 break; 00175 case VL53L0X_DEVICEERROR_RANGECOMPLETE: 00176 VL53L0X_COPYSTRING(pDeviceErrorString, 00177 VL53L0X_STRING_DEVICEERROR_RANGECOMPLETE); 00178 break; 00179 case VL53L0X_DEVICEERROR_ALGOUNDERFLOW: 00180 VL53L0X_COPYSTRING(pDeviceErrorString, 00181 VL53L0X_STRING_DEVICEERROR_ALGOUNDERFLOW); 00182 break; 00183 case VL53L0X_DEVICEERROR_ALGOOVERFLOW: 00184 VL53L0X_COPYSTRING(pDeviceErrorString, 00185 VL53L0X_STRING_DEVICEERROR_ALGOOVERFLOW); 00186 break; 00187 case VL53L0X_DEVICEERROR_RANGEIGNORETHRESHOLD: 00188 VL53L0X_COPYSTRING(pDeviceErrorString, 00189 VL53L0X_STRING_DEVICEERROR_RANGEIGNORETHRESHOLD); 00190 break; 00191 00192 default: 00193 VL53L0X_COPYSTRING(pDeviceErrorString, 00194 VL53L0X_STRING_UNKNOW_ERROR_CODE); 00195 00196 } 00197 00198 LOG_FUNCTION_END(Status); 00199 return Status; 00200 } 00201 00202 VL53L0X_Error VL53L0X_get_range_status_string(uint8_t RangeStatus, 00203 char *pRangeStatusString) 00204 { 00205 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00206 00207 LOG_FUNCTION_START(""); 00208 00209 switch (RangeStatus) { 00210 case 0: 00211 VL53L0X_COPYSTRING(pRangeStatusString, 00212 VL53L0X_STRING_RANGESTATUS_RANGEVALID); 00213 break; 00214 case 1: 00215 VL53L0X_COPYSTRING(pRangeStatusString, 00216 VL53L0X_STRING_RANGESTATUS_SIGMA); 00217 break; 00218 case 2: 00219 VL53L0X_COPYSTRING(pRangeStatusString, 00220 VL53L0X_STRING_RANGESTATUS_SIGNAL); 00221 break; 00222 case 3: 00223 VL53L0X_COPYSTRING(pRangeStatusString, 00224 VL53L0X_STRING_RANGESTATUS_MINRANGE); 00225 break; 00226 case 4: 00227 VL53L0X_COPYSTRING(pRangeStatusString, 00228 VL53L0X_STRING_RANGESTATUS_PHASE); 00229 break; 00230 case 5: 00231 VL53L0X_COPYSTRING(pRangeStatusString, 00232 VL53L0X_STRING_RANGESTATUS_HW); 00233 break; 00234 00235 default: /**/ 00236 VL53L0X_COPYSTRING(pRangeStatusString, 00237 VL53L0X_STRING_RANGESTATUS_NONE); 00238 } 00239 00240 LOG_FUNCTION_END(Status); 00241 return Status; 00242 } 00243 00244 VL53L0X_Error VL53L0X_get_pal_error_string(VL53L0X_Error PalErrorCode, 00245 char *pPalErrorString) 00246 { 00247 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00248 00249 LOG_FUNCTION_START(""); 00250 00251 switch (PalErrorCode) { 00252 case VL53L0X_ERROR_NONE: 00253 VL53L0X_COPYSTRING(pPalErrorString, 00254 VL53L0X_STRING_ERROR_NONE); 00255 break; 00256 case VL53L0X_ERROR_CALIBRATION_WARNING: 00257 VL53L0X_COPYSTRING(pPalErrorString, 00258 VL53L0X_STRING_ERROR_CALIBRATION_WARNING); 00259 break; 00260 case VL53L0X_ERROR_MIN_CLIPPED: 00261 VL53L0X_COPYSTRING(pPalErrorString, 00262 VL53L0X_STRING_ERROR_MIN_CLIPPED); 00263 break; 00264 case VL53L0X_ERROR_UNDEFINED: 00265 VL53L0X_COPYSTRING(pPalErrorString, 00266 VL53L0X_STRING_ERROR_UNDEFINED); 00267 break; 00268 case VL53L0X_ERROR_INVALID_PARAMS: 00269 VL53L0X_COPYSTRING(pPalErrorString, 00270 VL53L0X_STRING_ERROR_INVALID_PARAMS); 00271 break; 00272 case VL53L0X_ERROR_NOT_SUPPORTED: 00273 VL53L0X_COPYSTRING(pPalErrorString, 00274 VL53L0X_STRING_ERROR_NOT_SUPPORTED); 00275 break; 00276 case VL53L0X_ERROR_INTERRUPT_NOT_CLEARED: 00277 VL53L0X_COPYSTRING(pPalErrorString, 00278 VL53L0X_STRING_ERROR_INTERRUPT_NOT_CLEARED); 00279 break; 00280 case VL53L0X_ERROR_RANGE_ERROR: 00281 VL53L0X_COPYSTRING(pPalErrorString, 00282 VL53L0X_STRING_ERROR_RANGE_ERROR); 00283 break; 00284 case VL53L0X_ERROR_TIME_OUT: 00285 VL53L0X_COPYSTRING(pPalErrorString, 00286 VL53L0X_STRING_ERROR_TIME_OUT); 00287 break; 00288 case VL53L0X_ERROR_MODE_NOT_SUPPORTED: 00289 VL53L0X_COPYSTRING(pPalErrorString, 00290 VL53L0X_STRING_ERROR_MODE_NOT_SUPPORTED); 00291 break; 00292 case VL53L0X_ERROR_BUFFER_TOO_SMALL: 00293 VL53L0X_COPYSTRING(pPalErrorString, 00294 VL53L0X_STRING_ERROR_BUFFER_TOO_SMALL); 00295 break; 00296 case VL53L0X_ERROR_GPIO_NOT_EXISTING: 00297 VL53L0X_COPYSTRING(pPalErrorString, 00298 VL53L0X_STRING_ERROR_GPIO_NOT_EXISTING); 00299 break; 00300 case VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED: 00301 VL53L0X_COPYSTRING(pPalErrorString, 00302 VL53L0X_STRING_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED); 00303 break; 00304 case VL53L0X_ERROR_CONTROL_INTERFACE: 00305 VL53L0X_COPYSTRING(pPalErrorString, 00306 VL53L0X_STRING_ERROR_CONTROL_INTERFACE); 00307 break; 00308 case VL53L0X_ERROR_INVALID_COMMAND: 00309 VL53L0X_COPYSTRING(pPalErrorString, 00310 VL53L0X_STRING_ERROR_INVALID_COMMAND); 00311 break; 00312 case VL53L0X_ERROR_DIVISION_BY_ZERO: 00313 VL53L0X_COPYSTRING(pPalErrorString, 00314 VL53L0X_STRING_ERROR_DIVISION_BY_ZERO); 00315 break; 00316 case VL53L0X_ERROR_REF_SPAD_INIT: 00317 VL53L0X_COPYSTRING(pPalErrorString, 00318 VL53L0X_STRING_ERROR_REF_SPAD_INIT); 00319 break; 00320 case VL53L0X_ERROR_NOT_IMPLEMENTED: 00321 VL53L0X_COPYSTRING(pPalErrorString, 00322 VL53L0X_STRING_ERROR_NOT_IMPLEMENTED); 00323 break; 00324 00325 default: 00326 VL53L0X_COPYSTRING(pPalErrorString, 00327 VL53L0X_STRING_UNKNOW_ERROR_CODE); 00328 } 00329 00330 LOG_FUNCTION_END(Status); 00331 return Status; 00332 } 00333 00334 VL53L0X_Error VL53L0X_get_pal_state_string(VL53L0X_State PalStateCode, 00335 char *pPalStateString) 00336 { 00337 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00338 00339 LOG_FUNCTION_START(""); 00340 00341 switch (PalStateCode) { 00342 case VL53L0X_STATE_POWERDOWN: 00343 VL53L0X_COPYSTRING(pPalStateString, 00344 VL53L0X_STRING_STATE_POWERDOWN); 00345 break; 00346 case VL53L0X_STATE_WAIT_STATICINIT: 00347 VL53L0X_COPYSTRING(pPalStateString, 00348 VL53L0X_STRING_STATE_WAIT_STATICINIT); 00349 break; 00350 case VL53L0X_STATE_STANDBY: 00351 VL53L0X_COPYSTRING(pPalStateString, 00352 VL53L0X_STRING_STATE_STANDBY); 00353 break; 00354 case VL53L0X_STATE_IDLE: 00355 VL53L0X_COPYSTRING(pPalStateString, 00356 VL53L0X_STRING_STATE_IDLE); 00357 break; 00358 case VL53L0X_STATE_RUNNING: 00359 VL53L0X_COPYSTRING(pPalStateString, 00360 VL53L0X_STRING_STATE_RUNNING); 00361 break; 00362 case VL53L0X_STATE_UNKNOWN: 00363 VL53L0X_COPYSTRING(pPalStateString, 00364 VL53L0X_STRING_STATE_UNKNOWN); 00365 break; 00366 case VL53L0X_STATE_ERROR: 00367 VL53L0X_COPYSTRING(pPalStateString, 00368 VL53L0X_STRING_STATE_ERROR); 00369 break; 00370 00371 default: 00372 VL53L0X_COPYSTRING(pPalStateString, 00373 VL53L0X_STRING_STATE_UNKNOWN); 00374 } 00375 00376 LOG_FUNCTION_END(Status); 00377 return Status; 00378 } 00379 00380 VL53L0X_Error VL53L0X_get_sequence_steps_info( 00381 VL53L0X_SequenceStepId SequenceStepId, 00382 char *pSequenceStepsString) 00383 { 00384 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00385 LOG_FUNCTION_START(""); 00386 00387 switch (SequenceStepId) { 00388 case VL53L0X_SEQUENCESTEP_TCC: 00389 VL53L0X_COPYSTRING(pSequenceStepsString, 00390 VL53L0X_STRING_SEQUENCESTEP_TCC); 00391 break; 00392 case VL53L0X_SEQUENCESTEP_DSS: 00393 VL53L0X_COPYSTRING(pSequenceStepsString, 00394 VL53L0X_STRING_SEQUENCESTEP_DSS); 00395 break; 00396 case VL53L0X_SEQUENCESTEP_MSRC: 00397 VL53L0X_COPYSTRING(pSequenceStepsString, 00398 VL53L0X_STRING_SEQUENCESTEP_MSRC); 00399 break; 00400 case VL53L0X_SEQUENCESTEP_PRE_RANGE: 00401 VL53L0X_COPYSTRING(pSequenceStepsString, 00402 VL53L0X_STRING_SEQUENCESTEP_PRE_RANGE); 00403 break; 00404 case VL53L0X_SEQUENCESTEP_FINAL_RANGE: 00405 VL53L0X_COPYSTRING(pSequenceStepsString, 00406 VL53L0X_STRING_SEQUENCESTEP_FINAL_RANGE); 00407 break; 00408 00409 default: 00410 Status = VL53L0X_ERROR_INVALID_PARAMS; 00411 } 00412 00413 LOG_FUNCTION_END(Status); 00414 00415 return Status; 00416 } 00417 00418 00419 VL53L0X_Error VL53L0X_get_limit_check_info(VL53L0X_DEV Dev, uint16_t LimitCheckId, 00420 char *pLimitCheckString) 00421 { 00422 VL53L0X_Error Status = VL53L0X_ERROR_NONE; 00423 00424 LOG_FUNCTION_START(""); 00425 00426 switch (LimitCheckId) { 00427 case VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE: 00428 VL53L0X_COPYSTRING(pLimitCheckString, 00429 VL53L0X_STRING_CHECKENABLE_SIGMA_FINAL_RANGE); 00430 break; 00431 case VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE: 00432 VL53L0X_COPYSTRING(pLimitCheckString, 00433 VL53L0X_STRING_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE); 00434 break; 00435 case VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP: 00436 VL53L0X_COPYSTRING(pLimitCheckString, 00437 VL53L0X_STRING_CHECKENABLE_SIGNAL_REF_CLIP); 00438 break; 00439 case VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD: 00440 VL53L0X_COPYSTRING(pLimitCheckString, 00441 VL53L0X_STRING_CHECKENABLE_RANGE_IGNORE_THRESHOLD); 00442 break; 00443 00444 case VL53L0X_CHECKENABLE_SIGNAL_RATE_MSRC: 00445 VL53L0X_COPYSTRING(pLimitCheckString, 00446 VL53L0X_STRING_CHECKENABLE_SIGNAL_RATE_MSRC); 00447 break; 00448 00449 case VL53L0X_CHECKENABLE_SIGNAL_RATE_PRE_RANGE: 00450 VL53L0X_COPYSTRING(pLimitCheckString, 00451 VL53L0X_STRING_CHECKENABLE_SIGNAL_RATE_PRE_RANGE); 00452 break; 00453 00454 default: 00455 VL53L0X_COPYSTRING(pLimitCheckString, 00456 VL53L0X_STRING_UNKNOW_ERROR_CODE); 00457 00458 } 00459 00460 LOG_FUNCTION_END(Status); 00461 return Status; 00462 }
Generated on Sun Jul 17 2022 00:57:39 by
1.7.2