Joel von Rotz / VL53L0X

Dependents:   BigBot_v1 PololuDistanceSensorTest Lidar Ares test ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers vl53l0x_api_strings.cpp Source File

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 }