#include #include "vl53l1_api.h" #include "vl53l1_platform_init.h" #define trace_print(level, ...) \ VL53L1_trace_print_module_function(VL53L1_TRACE_MODULE_CORE, \ level, VL53L1_TRACE_FUNCTION_NONE, ##__VA_ARGS__) void print_pal_error(VL53L1_Error Status){ char buf[VL53L1_MAX_STRING_LENGTH]; VL53L1_GetPalErrorString(Status, buf); printf("API Status: %i : %s\n", Status, buf); } void print_multiranging_data(int i, VL53L1_MultiRangingData_t *pMultiRangingData) { int j; printf("RangingMeasurementData[%d]\n",j); for(i=0; iNumberOfObjectsFound; i++) { printf("%d: Stream Count[%d]= %d\n", i, j, pMultiRangingData->StreamCount); printf("%d: DmaxMilliMeter[%d]= %d\n", i, j, pMultiRangingData->DmaxMilliMeter); printf("%d: SignalRateRtnMegaCps[%d]= %f\n", i, j, pMultiRangingData->RangeData[i].SignalRateRtnMegaCps/65536.0); printf("%d: AmbientRateRtnMegaCps[%d]= %f\n", i, j, pMultiRangingData->RangeData[i].AmbientRateRtnMegaCps/65536.0); printf("%d: EffectiveSpadRtnCount[%d]= %d\n", i, j, pMultiRangingData->EffectiveSpadRtnCount); printf("%d: SigmaMilliMeter[%d]= %f\n", i, j, pMultiRangingData->RangeData[i].SigmaMilliMeter/65536.0); printf("%d: RangeMilliMeter[%d]= %d\n", i, j, pMultiRangingData->RangeData[i].RangeMilliMeter); printf("%d: RangeMinMilliMeter[%d]= %d\n", i, j, pMultiRangingData->RangeData[i].RangeMinMilliMeter); printf("%d: RangeMaxMilliMeter[%d]= %d\n", i, j, pMultiRangingData->RangeData[i].RangeMaxMilliMeter); printf("%d: RangeStatus[%d]= %d\n", i, j, pMultiRangingData->RangeData[i].RangeStatus); } } int RunRangingLoop(VL53L1_DEV Dev, int no_of_measurements){ int Status = VL53L1_ERROR_NONE; int i,j,k; int no_of_object_found; VL53L1_RangingMeasurementData_t *pRangeData; VL53L1_MultiRangingData_t MultiRangingData; VL53L1_MultiRangingData_t *pMultiRangingData = &MultiRangingData; if (Status == VL53L1_ERROR_NONE) { printf("run VL53L1_StartMeasurement\n"); Status = VL53L1_StartMeasurement(Dev); } if( Status != VL53L1_ERROR_NONE){ printf("fail to StartMeasurement\n"); return -1; } for (i = 0 ; i < no_of_measurements ; i++) { /* Wait for range completion */ if (Status == VL53L1_ERROR_NONE) Status = VL53L1_WaitMeasurementDataReady(Dev); if(Status == VL53L1_ERROR_NONE) { Status = VL53L1_GetMultiRangingData(Dev, pMultiRangingData); if (Status == VL53L1_ERROR_NONE) VL53L1_ClearInterruptAndStartMeasurement(Dev); no_of_object_found = pMultiRangingData->NumberOfObjectsFound; printf("Number of measurements = %d\n",i); printf("Number of Objects Found = %d\n",no_of_object_found); printf("%d: RoiNumber= %d\n", i, pMultiRangingData->RoiNumber); printf("%d: RoiStatus= %d\n", i, pMultiRangingData->RoiStatus); if (no_of_object_found <=1) k = 1; else k = no_of_object_found; for(j=0;j