Nora Vazbyte / vl53l0x_api
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers vl53l0x_api_strings.c Source File

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 }