Greatly simplified Architecture, Identical Functions Removed: Platform Interfaces, STP6001 interface
Diff: VL53L0X.cpp
- Revision:
- 11:d8dbe3b87f9f
- Parent:
- 10:cd1758e186a4
- Child:
- 12:81f37e50f8f8
--- a/VL53L0X.cpp Thu Jun 27 12:51:34 2019 +0000 +++ b/VL53L0X.cpp Tue Jul 02 12:38:07 2019 +0000 @@ -35,7 +35,21 @@ ****************************************************************************** */ -/* Some example regular expressinos used to simplify the code: +/* +Simplifications versus the original library: + +Replace: + * "MicroSeconds" or "micro_seconds" by "us" or "_us" + * "MilliSeconds" or "milli_seconds" by "ms" or "_ms" + * "MegaCps" or "MCps" or "_mega_cps" by "MHz" or "_MHz" + * "MicroMeter" by "um" or "_um" + * "FIXEDPNT" by "FP" + +Everything related to histogram_mode seems completely not implemented, so all definitions removed. + +Everything related to x_talk_compensation seems also not implemented, all removed + +Some example regular expressinos used to simplify the code: b) Search for: \QRead_Byte(\E([A-Za-z_\d]+)[[:punct:]](\s*)\Q&\E([A-Za-z\d_]+)\Q);\E Replace by: \3 = Read_Byte\(\1\); to replace: Read_Byte(0x90,&module_id); @@ -112,14 +126,12 @@ /* by default the I2C is running at 1V8 if you want to change it you * need to include this define at compilation level. */ #ifdef USE_I2C_2V8 - Status = VL53L0X_UpdateByte(VL53L0X_REG_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV, - 0xFE,0x01); + Status = VL53L0X_UpdateByte(VL53L0X_REG_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV,0xFE,0x01); #endif /* Set I2C standard mode */ if (status == VL53L0X_ERROR_NONE) { - status = VL53L0X_write_byte( 0x88, 0x00); - } + status = VL53L0X_write_byte( 0x88, 0x00); } Data.ReadDataFromDeviceDone = 0; Data.ReadDataFromDeviceDone = 0; @@ -134,22 +146,21 @@ Data.LinearityCorrectiveGain = 1000; /* Dmax default Parameter */ - Data.DmaxCalRangeMilliMeter = 400; - Data.DmaxCalSignalRateRtnMegaCps = (FixPoint1616_t)((0x00016B85)); /* 1.42 No Cover Glass*/ + Data.DmaxCalRange_mm = 400; + Data.DmaxCalSignalRateRtn_MHz = (FixPoint1616_t)((0x00016B85)); /* 1.42 No Cover Glass*/ /* Set Default static parameters - *set first temporary values 9.44MHz * 65536 = 618660 */ - Data.OscFrequencyMHz = 618660; - - /* Set Default XTalkCompensationRateMegaCps to 0 */ - CurrentParameters.XTalkCompensationRateMegaCps = 0; + *set first temporary values 9.44_MHz * 65536 = 618660 */ + Data.OscFrequency_MHz = 618660; + + /* Set Default XTalkCompensationRate_MHz to 0 */ + CurrentParameters.XTalkCompensationRate_MHz = 0; /* Get default parameters */ status = VL53L0X_get_device_parameters( &CurrentParameters); if (status == VL53L0X_ERROR_NONE) { /* initialize PAL values */ CurrentParameters.DeviceMode = VL53L0X_DEVICEMODE_SINGLE_RANGING; - CurrentParameters.HistogramMode = VL53L0X_HISTOGRAMMODE_DISABLED; CurrentParameters = CurrentParameters; } @@ -157,7 +168,7 @@ Data.SigmaEstRefArray = 100; Data.SigmaEstEffPulseWidth = 900; Data.SigmaEstEffAmbWidth = 500; - Data.targetRefRate = 0x0A00; /* 20 MCPS in 9:7 format */ + Data.targetRefRate = 0x0A00; /* 20 MHz in 9:7 format */ /* Use internal default settings */ Data.UseInternalTuningSettings = 1; @@ -213,7 +224,6 @@ } if (status == VL53L0X_ERROR_NONE) { - Data.SequenceConfig = 0xFF; status = VL53L0X_write_byte( VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG,0xFF); @@ -236,19 +246,15 @@ uint8_t phase_cal; if (status == VL53L0X_ERROR_NONE) { - //printf("Call of VL53L0X_StaticInit\r\n"); status = VL53L0X_static_init(); // Device Initialization } if (status == VL53L0X_ERROR_NONE) { - //printf("Call of VL53L0X_PerformRefCalibration\r\n"); status = VL53L0X_perform_ref_calibration(&vhv_settings, &phase_cal); // Device Initialization } if (status == VL53L0X_ERROR_NONE) { - //printf("Call of VL53L0X_PerformRefSpadManagement\r\n"); status = VL53L0X_perform_ref_spad_management(&ref_spad_count, &is_aperture_spads); // Device Initialization -// printf ("refSpadCount = %d, isApertureSpads = %d\r\n", refSpadCount, isApertureSpads); } return status; @@ -356,7 +362,7 @@ Status = VL53L0X_set_limit_check_value(VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, sigmaLimit);} if (Status == VL53L0X_ERROR_NONE) { - Status = VL53L0X_set_measurement_timing_budget_micro_seconds( timingBudget);} + Status = VL53L0X_set_measurement_timing_budget_us( timingBudget);} if (Status == VL53L0X_ERROR_NONE) { Status = VL53L0X_set_vcsel_pulse_period(VL53L0X_VCSEL_PERIOD_PRE_RANGE, preRangeVcselPeriod);} @@ -443,9 +449,8 @@ if (!status) { status = get_measurement(range_single_shot_polling, &p_ranging_measurement_data); } - if (p_ranging_measurement_data.RangeStatus == 0) { - // we have a valid range. - *p_data = p_ranging_measurement_data.RangeMilliMeter; + if (p_ranging_measurement_data.RangeStatus == 0) { // we have a valid range. + *p_data = p_ranging_measurement_data.Range_mm; } else { *p_data = 0; status = VL53L0X_ERROR_RANGE_ERROR; @@ -475,7 +480,6 @@ if (loop_nb >= VL53L0X_DEFAULT_MAX_LOOP) { status = VL53L0X_ERROR_TIME_OUT; } - } return status; @@ -557,7 +561,6 @@ { VL53L0X_Error status = VL53L0X_ERROR_NONE; uint8_t strobe; uint32_t loop_nb; - status |= VL53L0X_write_byte( 0x83, 0x00); @@ -617,9 +620,8 @@ status |= VL53L0X_write_byte( 0x80, 0x01); status |= VL53L0X_write_byte( 0xFF, 0x01); status |= VL53L0X_write_byte( 0x00, 0x00); - status |= VL53L0X_write_byte( 0xFF, 0x06); - status |= VL53L0X_read_byte( 0x83, &byte); + status |= VL53L0X_read_byte ( 0x83, &byte); status |= VL53L0X_write_byte( 0x83, byte | 4); status |= VL53L0X_write_byte( 0xFF, 0x07); status |= VL53L0X_write_byte( 0x81, 0x01); @@ -641,22 +643,17 @@ status |= VL53L0X_device_read_strobe(); status |= VL53L0X_read_dword( 0x90, &tmp_dword); - nvm_ref_good_spad_map[0] = (uint8_t)((tmp_dword >> 24) - & 0xff); - nvm_ref_good_spad_map[1] = (uint8_t)((tmp_dword >> 16) - & 0xff); - nvm_ref_good_spad_map[2] = (uint8_t)((tmp_dword >> 8) - & 0xff); + nvm_ref_good_spad_map[0] = (uint8_t)((tmp_dword >> 24) & 0xff); + nvm_ref_good_spad_map[1] = (uint8_t)((tmp_dword >> 16) & 0xff); + nvm_ref_good_spad_map[2] = (uint8_t)((tmp_dword >> 8) & 0xff); nvm_ref_good_spad_map[3] = (uint8_t)(tmp_dword & 0xff); status |= VL53L0X_write_byte( 0x94, 0x25); status |= VL53L0X_device_read_strobe(); status |= VL53L0X_read_dword( 0x90, &tmp_dword); - nvm_ref_good_spad_map[4] = (uint8_t)((tmp_dword >> 24) - & 0xff); - nvm_ref_good_spad_map[5] = (uint8_t)((tmp_dword >> 16) - & 0xff); + nvm_ref_good_spad_map[4] = (uint8_t)((tmp_dword >> 24) & 0xff); + nvm_ref_good_spad_map[5] = (uint8_t)((tmp_dword >> 16) & 0xff); } if (((option & 2) == 2) && @@ -739,29 +736,25 @@ status |= VL53L0X_device_read_strobe(); status |= VL53L0X_read_dword( 0x90, &tmp_dword); - signal_rate_meas_fixed1104_400_mm = (tmp_dword & - 0x0000000ff) << 8; + signal_rate_meas_fixed1104_400_mm = (tmp_dword & 0x0000000ff) << 8; status |= VL53L0X_write_byte( 0x94, 0x74); status |= VL53L0X_device_read_strobe(); status |= VL53L0X_read_dword( 0x90, &tmp_dword); - signal_rate_meas_fixed1104_400_mm |= ((tmp_dword & - 0xff000000) >> 24); + signal_rate_meas_fixed1104_400_mm |= ((tmp_dword & 0xff000000) >> 24); status |= VL53L0X_write_byte( 0x94, 0x75); status |= VL53L0X_device_read_strobe(); status |= VL53L0X_read_dword( 0x90, &tmp_dword); - dist_meas_fixed1104_400_mm = (tmp_dword & 0x0000000ff) - << 8; + dist_meas_fixed1104_400_mm = (tmp_dword & 0x0000000ff) << 8; status |= VL53L0X_write_byte( 0x94, 0x76); status |= VL53L0X_device_read_strobe(); status |= VL53L0X_read_dword( 0x90, &tmp_dword); - dist_meas_fixed1104_400_mm |= ((tmp_dword & 0xff000000) - >> 24); + dist_meas_fixed1104_400_mm |= ((tmp_dword & 0xff000000) >> 24); } status |= VL53L0X_write_byte( 0x81, 0x00); @@ -781,11 +774,10 @@ if (((option & 1) == 1) && ((read_data_from_device_done & 1) == 0)) { Data.ReferenceSpadCount = reference_spad_count; - Data.ReferenceSpadType = reference_spad_type; for (i = 0; i < VL53L0X_REF_SPAD_BUFFER_SIZE; i++) { - Data.SpadData.RefGoodSpadMap[i] = + Data.RefGoodSpadMap[i] = nvm_ref_good_spad_map[i]; } } @@ -793,23 +785,17 @@ if (((option & 2) == 2) && ((read_data_from_device_done & 2) == 0)) { Data.ModuleId = module_id; - Data.Revision = revision; - product_id_tmp = Data.ProductId; VL53L0X_COPYSTRING(product_id_tmp, product_id); - } if (((option & 4) == 4) && ((read_data_from_device_done & 4) == 0)) { Data.PartUIDUpper = part_uid_upper; - Data.PartUIDLower = part_uid_lower; - signal_rate_meas_fixed400_mm_fix = - VL53L0X_FIXPOINT97TOFIXPOINT1616(signal_rate_meas_fixed1104_400_mm); - + VL53L0X_FP97TOFP1616(signal_rate_meas_fixed1104_400_mm); Data.SignalRateMeasFixed400mm = signal_rate_meas_fixed400_mm_fix; offset_micro_meters = 0; @@ -822,7 +808,7 @@ offset_micro_meters *= -1; } - Data.Part2PartOffsetAdjustmentNVMMicroMeter = offset_micro_meters; + Data.Part2PartOffsetAdjustNVM_um = offset_micro_meters; } byte = (uint8_t)(read_data_from_device_done | option); Data.ReadDataFromDeviceDone = byte; @@ -933,16 +919,16 @@ if (status == VL53L0X_ERROR_NONE) { /* Store initial device offset */ - Data.Part2PartOffsetNVMMicroMeter = current_offset_micro_meters; + Data.Part2PartOffsetNVM_um = current_offset_micro_meters; corrected_offset_micro_meters = current_offset_micro_meters + - (int32_t)Data.Part2PartOffsetAdjustmentNVMMicroMeter; + (int32_t)Data.Part2PartOffsetAdjustNVM_um; status = VL53L0X_set_offset_calibration_data_micro_meter(corrected_offset_micro_meters); /* store current, adjusted offset */ if (status == VL53L0X_ERROR_NONE) { - CurrentParameters.RangeOffsetMicroMeters = corrected_offset_micro_meters; + CurrentParameters.RangeOffset_um = corrected_offset_micro_meters; } } @@ -959,10 +945,10 @@ return status; } -VL53L0X_Error VL53L0X::VL53L0X_get_inter_measurement_period_milli_seconds(uint32_t *p_inter_measurement_period_milli_seconds) +VL53L0X_Error VL53L0X::VL53L0X_get_inter_measurement_period_ms(uint32_t *p_inter_measurement_period_ms) { VL53L0X_Error status = VL53L0X_ERROR_NONE; uint16_t osc_calibrate_val; - uint32_t im_period_milli_seconds; + uint32_t im_period_ms; @@ -971,39 +957,39 @@ if (status == VL53L0X_ERROR_NONE) { status = VL53L0X_read_dword(VL53L0X_REG_SYSTEM_INTERMEASUREMENT_PERIOD, - &im_period_milli_seconds); + &im_period_ms); } if (status == VL53L0X_ERROR_NONE) { if (osc_calibrate_val != 0) { - *p_inter_measurement_period_milli_seconds = - im_period_milli_seconds / osc_calibrate_val; + *p_inter_measurement_period_ms = + im_period_ms / osc_calibrate_val; } - CurrentParameters.InterMeasurementPeriodMilliSeconds = *p_inter_measurement_period_milli_seconds; + CurrentParameters.InterMeasurementPeriod_ms = *p_inter_measurement_period_ms; } return status; } -VL53L0X_Error VL53L0X::VL53L0X_get_x_talk_compensation_rate_mega_cps(FixPoint1616_t *p_xtalk_compensation_rate_mega_cps) +VL53L0X_Error VL53L0X::VL53L0X_get_x_talk_compensation_rate_MHz(FixPoint1616_t *p_xtalk_compensation_rate_MHz) { VL53L0X_Error status = VL53L0X_ERROR_NONE; uint16_t value; FixPoint1616_t temp_fix1616; - status = VL53L0X_read_word(VL53L0X_REG_CROSSTALK_COMPENSATION_PEAK_RATE_MCPS, (uint16_t *)&value); + status = VL53L0X_read_word(VL53L0X_REG_CROSSTALK_COMPENSATION_PEAK_RATE_MHz, (uint16_t *)&value); if (status == VL53L0X_ERROR_NONE) { if (value == 0) { /* the Xtalk is disabled return value from memory */ - temp_fix1616 = CurrentParameters.XTalkCompensationRateMegaCps ; - *p_xtalk_compensation_rate_mega_cps = temp_fix1616; + temp_fix1616 = CurrentParameters.XTalkCompensationRate_MHz ; + *p_xtalk_compensation_rate_MHz = temp_fix1616; CurrentParameters.XTalkCompensationEnable = 0; } else { - temp_fix1616 = VL53L0X_FIXPOINT313TOFIXPOINT1616(value); - *p_xtalk_compensation_rate_mega_cps = temp_fix1616; - CurrentParameters.XTalkCompensationRateMegaCps = temp_fix1616; + temp_fix1616 = VL53L0X_FP313TOFP1616(value); + *p_xtalk_compensation_rate_MHz = temp_fix1616; + CurrentParameters.XTalkCompensationRate_MHz = temp_fix1616; CurrentParameters.XTalkCompensationEnable = 1; } } @@ -1033,7 +1019,7 @@ status = VL53L0X_read_word(VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT, &temp16); if (status == VL53L0X_ERROR_NONE) { - temp_fix1616 = VL53L0X_FIXPOINT97TOFIXPOINT1616(temp16); + temp_fix1616 = VL53L0X_FP97TOFP1616(temp16); } enable_zero_value = 1; @@ -1056,7 +1042,7 @@ status = VL53L0X_read_word(VL53L0X_REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT, &temp16); if (status == VL53L0X_ERROR_NONE) { - temp_fix1616 = VL53L0X_FIXPOINT97TOFIXPOINT1616(temp16); + temp_fix1616 = VL53L0X_FP97TOFP1616(temp16); } enable_zero_value = 0; @@ -1229,10 +1215,10 @@ uint8_t max_pre_vcsel_period_pclk = 18; uint8_t min_final_vcsel_period_pclk = 8; uint8_t max_final_vcsel_period_pclk = 14; - uint32_t measurement_timing_budget_micro_seconds; - uint32_t final_range_timeout_micro_seconds; - uint32_t pre_range_timeout_micro_seconds; - uint32_t msrc_timeout_micro_seconds; + uint32_t measurement_timing_budget_us; + uint32_t final_range_timeout_us; + uint32_t pre_range_timeout_us; + uint32_t msrc_timeout_us; uint8_t phase_cal_int = 0; /* Check if valid clock period requested */ @@ -1289,31 +1275,25 @@ if (vcsel_pulse_period_pclk == 8) { - status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, - 0x10); - status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW, - 0x08); + status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH,0x10); + status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,0x08); status |= VL53L0X_write_byte(VL53L0X_REG_GLOBAL_CONFIG_VCSEL_WIDTH, 0x02); status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x0C); status |= VL53L0X_write_byte( 0xff, 0x01); - status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_LIM, - 0x30); + status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_LIM,0x30); status |= VL53L0X_write_byte( 0xff, 0x00); } else if (vcsel_pulse_period_pclk == 10) { - status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, - 0x28); - status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW, - 0x08); + status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH,0x28); + status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,0x08); status |= VL53L0X_write_byte(VL53L0X_REG_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03); status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x09); status |= VL53L0X_write_byte( 0xff, 0x01); - status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_LIM, - 0x20); + status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_LIM,0x20); status |= VL53L0X_write_byte( 0xff, 0x00); } else if (vcsel_pulse_period_pclk == 12) { @@ -1333,15 +1313,13 @@ status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH, 0x048); - status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW, - 0x08); + status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW,0x08); status |= VL53L0X_write_byte(VL53L0X_REG_GLOBAL_CONFIG_VCSEL_WIDTH, 0x03); status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_CONFIG_TIMEOUT, 0x07); status |= VL53L0X_write_byte( 0xff, 0x01); - status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_LIM, - 0x20); + status |= VL53L0X_write_byte(VL53L0X_REG_ALGO_PHASECAL_LIM,0x20); status |= VL53L0X_write_byte( 0xff, 0x00); } } @@ -1364,11 +1342,11 @@ switch (vcsel_period_type) { case VL53L0X_VCSEL_PERIOD_PRE_RANGE: status = get_sequence_step_timeout(VL53L0X_SEQUENCESTEP_PRE_RANGE, - &pre_range_timeout_micro_seconds); + &pre_range_timeout_us); if (status == VL53L0X_ERROR_NONE) status = get_sequence_step_timeout(VL53L0X_SEQUENCESTEP_MSRC, - &msrc_timeout_micro_seconds); + &msrc_timeout_us); if (status == VL53L0X_ERROR_NONE) status = VL53L0X_write_byte(VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD, @@ -1376,17 +1354,17 @@ if (status == VL53L0X_ERROR_NONE) status = set_sequence_step_timeout(VL53L0X_SEQUENCESTEP_PRE_RANGE, - pre_range_timeout_micro_seconds); + pre_range_timeout_us); if (status == VL53L0X_ERROR_NONE) status = set_sequence_step_timeout(VL53L0X_SEQUENCESTEP_MSRC, - msrc_timeout_micro_seconds); + msrc_timeout_us); Data.PreRangeVcselPulsePeriod = vcsel_pulse_period_pclk; break; case VL53L0X_VCSEL_PERIOD_FINAL_RANGE: status = get_sequence_step_timeout(VL53L0X_SEQUENCESTEP_FINAL_RANGE, - &final_range_timeout_micro_seconds); + &final_range_timeout_us); if (status == VL53L0X_ERROR_NONE) status = VL53L0X_write_byte(VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD, @@ -1394,7 +1372,7 @@ if (status == VL53L0X_ERROR_NONE) status = set_sequence_step_timeout(VL53L0X_SEQUENCESTEP_FINAL_RANGE, - final_range_timeout_micro_seconds); + final_range_timeout_us); Data.FinalRangeVcselPulsePeriod = vcsel_pulse_period_pclk; break; @@ -1405,9 +1383,9 @@ /* Finally, the timing budget must be re-applied */ if (status == VL53L0X_ERROR_NONE) { - measurement_timing_budget_micro_seconds = CurrentParameters.MeasurementTimingBudgetMicroSeconds ; - - status = VL53L0X_set_measurement_timing_budget_micro_seconds(measurement_timing_budget_micro_seconds); + measurement_timing_budget_us = CurrentParameters.MeasurementTimingBudget_us ; + + status = VL53L0X_set_measurement_timing_budget_us(measurement_timing_budget_us); } /* Perform the phase calibration. This is needed after changing on @@ -1518,7 +1496,7 @@ { VL53L0X_Error status = VL53L0X_ERROR_NONE; uint8_t current_vcsel_pulse_period_p_clk; uint8_t encoded_time_out_byte = 0; - uint32_t timeout_micro_seconds = 0; + uint32_t timeout_us = 0; uint16_t pre_range_encoded_time_out = 0; uint16_t msrc_time_out_m_clks; uint16_t pre_range_time_out_m_clks; @@ -1538,7 +1516,7 @@ } msrc_time_out_m_clks = VL53L0X_decode_timeout(encoded_time_out_byte); - timeout_micro_seconds = VL53L0X_calc_timeout_us(msrc_time_out_m_clks, + timeout_us = VL53L0X_calc_timeout_us(msrc_time_out_m_clks, current_vcsel_pulse_period_p_clk); } else if (sequence_step_id == VL53L0X_SEQUENCESTEP_PRE_RANGE) { /* Retrieve PRE-RANGE VCSEL Period */ @@ -1559,7 +1537,7 @@ pre_range_time_out_m_clks = VL53L0X_decode_timeout(pre_range_encoded_time_out); - timeout_micro_seconds = VL53L0X_calc_timeout_us(pre_range_time_out_m_clks, + timeout_us = VL53L0X_calc_timeout_us(pre_range_time_out_m_clks, current_vcsel_pulse_period_p_clk); } } else if (sequence_step_id == VL53L0X_SEQUENCESTEP_FINAL_RANGE) { @@ -1595,34 +1573,34 @@ } final_range_time_out_m_clks -= pre_range_time_out_m_clks; - timeout_micro_seconds = VL53L0X_calc_timeout_us(final_range_time_out_m_clks, + timeout_us = VL53L0X_calc_timeout_us(final_range_time_out_m_clks, current_vcsel_pulse_period_p_clk); } - *p_time_out_micro_secs = timeout_micro_seconds; + *p_time_out_micro_secs = timeout_us; return status; } -VL53L0X_Error VL53L0X::wrapped_VL53L0X_get_measurement_timing_budget_micro_seconds(uint32_t *p_measurement_timing_budget_micro_seconds) +VL53L0X_Error VL53L0X::wrapped_VL53L0X_get_measurement_timing_budget_us(uint32_t *p_measurement_timing_budget_us) { VL53L0X_Error status = VL53L0X_ERROR_NONE; VL53L0X_SchedulerSequenceSteps_t scheduler_sequence_steps; - uint32_t final_range_timeout_micro_seconds; - uint32_t msrc_dcc_tcc_timeout_micro_seconds = 2000; - uint32_t start_overhead_micro_seconds = 1910; - uint32_t end_overhead_micro_seconds = 960; - uint32_t msrc_overhead_micro_seconds = 660; - uint32_t tcc_overhead_micro_seconds = 590; - uint32_t dss_overhead_micro_seconds = 690; - uint32_t pre_range_overhead_micro_seconds = 660; - uint32_t final_range_overhead_micro_seconds = 550; - uint32_t pre_range_timeout_micro_seconds = 0; + uint32_t final_range_timeout_us; + uint32_t msrc_dcc_tcc_timeout_us = 2000; + uint32_t start_overhead_us = 1910; + uint32_t end_overhead_us = 960; + uint32_t msrc_overhead_us = 660; + uint32_t tcc_overhead_us = 590; + uint32_t dss_overhead_us = 690; + uint32_t pre_range_overhead_us = 660; + uint32_t final_range_overhead_us = 550; + uint32_t pre_range_timeout_us = 0; /* Start and end overhead times always present */ - *p_measurement_timing_budget_micro_seconds - = start_overhead_micro_seconds + end_overhead_micro_seconds; + *p_measurement_timing_budget_us + = start_overhead_us + end_overhead_us; status = VL53L0X_get_sequence_step_enables( &scheduler_sequence_steps); @@ -1636,23 +1614,23 @@ scheduler_sequence_steps.DssOn) { status = get_sequence_step_timeout(VL53L0X_SEQUENCESTEP_MSRC, - &msrc_dcc_tcc_timeout_micro_seconds); + &msrc_dcc_tcc_timeout_us); if (status == VL53L0X_ERROR_NONE) { if (scheduler_sequence_steps.TccOn) { - *p_measurement_timing_budget_micro_seconds += - msrc_dcc_tcc_timeout_micro_seconds + - tcc_overhead_micro_seconds; + *p_measurement_timing_budget_us += + msrc_dcc_tcc_timeout_us + + tcc_overhead_us; } if (scheduler_sequence_steps.DssOn) { - *p_measurement_timing_budget_micro_seconds += - 2 * (msrc_dcc_tcc_timeout_micro_seconds + - dss_overhead_micro_seconds); + *p_measurement_timing_budget_us += + 2 * (msrc_dcc_tcc_timeout_us + + dss_overhead_us); } else if (scheduler_sequence_steps.MsrcOn) { - *p_measurement_timing_budget_micro_seconds += - msrc_dcc_tcc_timeout_micro_seconds + - msrc_overhead_micro_seconds; + *p_measurement_timing_budget_us += + msrc_dcc_tcc_timeout_us + + msrc_overhead_us; } } } @@ -1660,36 +1638,36 @@ if (status == VL53L0X_ERROR_NONE) { if (scheduler_sequence_steps.PreRangeOn) { status = get_sequence_step_timeout(VL53L0X_SEQUENCESTEP_PRE_RANGE, - &pre_range_timeout_micro_seconds); - *p_measurement_timing_budget_micro_seconds += - pre_range_timeout_micro_seconds + - pre_range_overhead_micro_seconds; + &pre_range_timeout_us); + *p_measurement_timing_budget_us += + pre_range_timeout_us + + pre_range_overhead_us; } } if (status == VL53L0X_ERROR_NONE) { if (scheduler_sequence_steps.FinalRangeOn) { status = get_sequence_step_timeout(VL53L0X_SEQUENCESTEP_FINAL_RANGE, - &final_range_timeout_micro_seconds); - *p_measurement_timing_budget_micro_seconds += - (final_range_timeout_micro_seconds + - final_range_overhead_micro_seconds); + &final_range_timeout_us); + *p_measurement_timing_budget_us += + (final_range_timeout_us + + final_range_overhead_us); } } if (status == VL53L0X_ERROR_NONE) { - CurrentParameters.MeasurementTimingBudgetMicroSeconds = *p_measurement_timing_budget_micro_seconds; + CurrentParameters.MeasurementTimingBudget_us = *p_measurement_timing_budget_us; } return status; } -VL53L0X_Error VL53L0X::VL53L0X_get_measurement_timing_budget_micro_seconds(uint32_t *p_measurement_timing_budget_micro_seconds) +VL53L0X_Error VL53L0X::VL53L0X_get_measurement_timing_budget_us(uint32_t *p_measurement_timing_budget_us) { VL53L0X_Error status = VL53L0X_ERROR_NONE; - status = wrapped_VL53L0X_get_measurement_timing_budget_micro_seconds(p_measurement_timing_budget_micro_seconds); + status = wrapped_VL53L0X_get_measurement_timing_budget_us(p_measurement_timing_budget_us); return status; @@ -1704,17 +1682,17 @@ status = VL53L0X_get_device_mode( &(p_device_parameters->DeviceMode)); if (status == VL53L0X_ERROR_NONE) - status = VL53L0X_get_inter_measurement_period_milli_seconds(&(p_device_parameters->InterMeasurementPeriodMilliSeconds)); + status = VL53L0X_get_inter_measurement_period_ms(&(p_device_parameters->InterMeasurementPeriod_ms)); if (status == VL53L0X_ERROR_NONE) { p_device_parameters->XTalkCompensationEnable = 0; } if (status == VL53L0X_ERROR_NONE) - status = VL53L0X_get_x_talk_compensation_rate_mega_cps(&(p_device_parameters->XTalkCompensationRateMegaCps)); + status = VL53L0X_get_x_talk_compensation_rate_MHz(&(p_device_parameters->XTalkCompensationRate_MHz)); if (status == VL53L0X_ERROR_NONE) - status = VL53L0X_get_offset_calibration_data_micro_meter(&(p_device_parameters->RangeOffsetMicroMeters)); + status = VL53L0X_get_offset_calibration_data_micro_meter(&(p_device_parameters->RangeOffset_um)); if (status == VL53L0X_ERROR_NONE) { for (i = 0; i < VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS; i++) { @@ -1743,7 +1721,7 @@ /* Need to be done at the end as it uses VCSELPulsePeriod */ if (status == VL53L0X_ERROR_NONE) { - status = VL53L0X_get_measurement_timing_budget_micro_seconds(&(p_device_parameters->MeasurementTimingBudgetMicroSeconds)); + status = VL53L0X_get_measurement_timing_budget_us(&(p_device_parameters->MeasurementTimingBudget_us)); } @@ -1773,7 +1751,7 @@ case VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE: status = VL53L0X_write_word(VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT, - VL53L0X_FIXPOINT1616TOFIXPOINT97(limit_check_value)); + VL53L0X_FP1616TOFP97(limit_check_value)); break; @@ -1792,7 +1770,7 @@ case VL53L0X_CHECKENABLE_SIGNAL_RATE_MSRC: case VL53L0X_CHECKENABLE_SIGNAL_RATE_PRE_RANGE: status = VL53L0X_write_word(VL53L0X_REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT, - VL53L0X_FIXPOINT1616TOFIXPOINT97(limit_check_value)); + VL53L0X_FP1616TOFP97(limit_check_value)); break; default: @@ -2578,47 +2556,47 @@ } VL53L0X_Error VL53L0X::VL53L0X_get_total_xtalk_rate(VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data, - FixPoint1616_t *p_total_xtalk_rate_mcps) + FixPoint1616_t *p_total_xtalk_rate_MHz) { VL53L0X_Error status = VL53L0X_ERROR_NONE; uint8_t xtalk_comp_enable; - FixPoint1616_t total_xtalk_mega_cps; - FixPoint1616_t xtalk_per_spad_mega_cps; - - *p_total_xtalk_rate_mcps = 0; + FixPoint1616_t total_xtalk_MHz; + FixPoint1616_t xtalk_per_spad_MHz; + + *p_total_xtalk_rate_MHz = 0; status = VL53L0X_get_x_talk_compensation_enable( &xtalk_comp_enable); if (status == VL53L0X_ERROR_NONE) { if (xtalk_comp_enable) { - xtalk_per_spad_mega_cps = CurrentParameters.XTalkCompensationRateMegaCps ; + xtalk_per_spad_MHz = CurrentParameters.XTalkCompensationRate_MHz ; /* FixPoint1616 * FixPoint 8:8 = FixPoint0824 */ - total_xtalk_mega_cps = + total_xtalk_MHz = p_ranging_measurement_data->EffectiveSpadRtnCount * - xtalk_per_spad_mega_cps; + xtalk_per_spad_MHz; /* FixPoint0824 >> 8 = FixPoint1616 */ - *p_total_xtalk_rate_mcps = - (total_xtalk_mega_cps + 0x80) >> 8; + *p_total_xtalk_rate_MHz = + (total_xtalk_MHz + 0x80) >> 8; } } return status; } VL53L0X_Error VL53L0X::VL53L0X_get_total_signal_rate(VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data, - FixPoint1616_t *p_total_signal_rate_mcps) + FixPoint1616_t *p_total_signal_rate_MHz) { VL53L0X_Error status = VL53L0X_ERROR_NONE; - FixPoint1616_t total_xtalk_mega_cps; - - *p_total_signal_rate_mcps = - p_ranging_measurement_data->SignalRateRtnMegaCps; - - status = VL53L0X_get_total_xtalk_rate(p_ranging_measurement_data, &total_xtalk_mega_cps); + FixPoint1616_t total_xtalk_MHz; + + *p_total_signal_rate_MHz = + p_ranging_measurement_data->SignalRateRtn_MHz; + + status = VL53L0X_get_total_xtalk_rate(p_ranging_measurement_data, &total_xtalk_MHz); if (status == VL53L0X_ERROR_NONE) { - *p_total_signal_rate_mcps += total_xtalk_mega_cps; } + *p_total_signal_rate_MHz += total_xtalk_MHz; } return status; } @@ -2661,8 +2639,8 @@ return res; } -VL53L0X_Error VL53L0X::VL53L0X_calc_dmax(FixPoint1616_t total_signal_rate_mcps, - FixPoint1616_t total_corr_signal_rate_mcps, +VL53L0X_Error VL53L0X::VL53L0X_calc_dmax(FixPoint1616_t total_signal_rate_MHz, + FixPoint1616_t total_corr_signal_rate_MHz, FixPoint1616_t pw_mult, uint32_t sigma_estimate_p1, FixPoint1616_t sigma_estimate_p2, @@ -2674,7 +2652,7 @@ const uint32_t c_amb_eff_width_sigma_est_ns = 6; const uint32_t c_amb_eff_width_d_max_ns = 7; uint32_t dmax_cal_range_mm; - FixPoint1616_t dmax_cal_signal_rate_rtn_mcps; + FixPoint1616_t dmax_cal_signal_rate_rtn_MHz; FixPoint1616_t min_signal_needed; FixPoint1616_t min_signal_needed_p1; FixPoint1616_t min_signal_needed_p2; @@ -2688,33 +2666,33 @@ FixPoint1616_t dmax_ambient; FixPoint1616_t dmax_dark_tmp; FixPoint1616_t sigma_est_p2_tmp; - uint32_t signal_rate_temp_mcps; + uint32_t signal_rate_temp_MHz; VL53L0X_Error status = VL53L0X_ERROR_NONE; - dmax_cal_range_mm = Data.DmaxCalRangeMilliMeter; - - dmax_cal_signal_rate_rtn_mcps = Data.DmaxCalSignalRateRtnMegaCps; + dmax_cal_range_mm = Data.DmaxCalRange_mm; + + dmax_cal_signal_rate_rtn_MHz = Data.DmaxCalSignalRateRtn_MHz; /* uint32 * FixPoint1616 = FixPoint1616 */ - signal_at0_mm = dmax_cal_range_mm * dmax_cal_signal_rate_rtn_mcps; + signal_at0_mm = dmax_cal_range_mm * dmax_cal_signal_rate_rtn_MHz; /* FixPoint1616 >> 8 = FixPoint2408 */ signal_at0_mm = (signal_at0_mm + 0x80) >> 8; signal_at0_mm *= dmax_cal_range_mm; min_signal_needed_p1 = 0; - if (total_corr_signal_rate_mcps > 0) { + if (total_corr_signal_rate_MHz > 0) { /* Shift by 10 bits to increase resolution prior to the division */ - signal_rate_temp_mcps = total_signal_rate_mcps << 10; + signal_rate_temp_MHz = total_signal_rate_MHz << 10; /* Add rounding value prior to division */ - min_signal_needed_p1 = signal_rate_temp_mcps + - (total_corr_signal_rate_mcps / 2); + min_signal_needed_p1 = signal_rate_temp_MHz + + (total_corr_signal_rate_MHz / 2); /* FixPoint0626/FixPoint1616 = FixPoint2210 */ - min_signal_needed_p1 /= total_corr_signal_rate_mcps; + min_signal_needed_p1 /= total_corr_signal_rate_MHz; /* Apply a factored version of the speed of light. Correction to be applied at the end */ @@ -2865,18 +2843,18 @@ FixPoint1616_t x_talk_correction; FixPoint1616_t ambient_rate_kcps; FixPoint1616_t peak_signal_rate_kcps; - FixPoint1616_t x_talk_comp_rate_mcps; + FixPoint1616_t x_talk_comp_rate_MHz; uint32_t x_talk_comp_rate_kcps; VL53L0X_Error status = VL53L0X_ERROR_NONE; - FixPoint1616_t diff1_mcps; - FixPoint1616_t diff2_mcps; + FixPoint1616_t diff1_MHz; + FixPoint1616_t diff2_MHz; FixPoint1616_t sqr1; FixPoint1616_t sqr2; FixPoint1616_t sqr_sum; FixPoint1616_t sqrt_result_centi_ns; FixPoint1616_t sqrt_result; - FixPoint1616_t total_signal_rate_mcps; - FixPoint1616_t corrected_signal_rate_mcps; + FixPoint1616_t total_signal_rate_MHz; + FixPoint1616_t corrected_signal_rate_MHz; FixPoint1616_t sigma_est_ref; uint32_t vcsel_width; uint32_t final_range_macro_pclks; @@ -2890,29 +2868,29 @@ * Estimates the range sigma */ - x_talk_comp_rate_mcps = CurrentParameters.XTalkCompensationRateMegaCps ; + x_talk_comp_rate_MHz = CurrentParameters.XTalkCompensationRate_MHz ; /* - * We work in kcps rather than mcps as this helps keep within the + * We work in kcps rather than MHz as this helps keep within the * confines of the 32 Fix1616 type. */ ambient_rate_kcps = - (p_ranging_measurement_data->AmbientRateRtnMegaCps * 1000) >> 16; - - corrected_signal_rate_mcps = - p_ranging_measurement_data->SignalRateRtnMegaCps; - - status = VL53L0X_get_total_signal_rate(p_ranging_measurement_data, &total_signal_rate_mcps); - status = VL53L0X_get_total_xtalk_rate(p_ranging_measurement_data, &x_talk_comp_rate_mcps); + (p_ranging_measurement_data->AmbientRateRtn_MHz * 1000) >> 16; + + corrected_signal_rate_MHz = + p_ranging_measurement_data->SignalRateRtn_MHz; + + status = VL53L0X_get_total_signal_rate(p_ranging_measurement_data, &total_signal_rate_MHz); + status = VL53L0X_get_total_xtalk_rate(p_ranging_measurement_data, &x_talk_comp_rate_MHz); /* Signal rate measurement provided by device is the * peak signal rate, not average. */ - peak_signal_rate_kcps = (total_signal_rate_mcps * 1000); + peak_signal_rate_kcps = (total_signal_rate_MHz * 1000); peak_signal_rate_kcps = (peak_signal_rate_kcps + 0x8000) >> 16; - x_talk_comp_rate_kcps = x_talk_comp_rate_mcps * 1000; + x_talk_comp_rate_kcps = x_talk_comp_rate_MHz * 1000; if (x_talk_comp_rate_kcps > c_max_x_talk_kcps) { x_talk_comp_rate_kcps = c_max_x_talk_kcps; @@ -2921,12 +2899,12 @@ if (status == VL53L0X_ERROR_NONE) { /* Calculate final range macro periods */ - final_range_timeout_micro_secs = Data.FinalRangeTimeoutMicroSecs; + final_range_timeout_micro_secs = Data.FinalRangeTimeout_us; final_range_vcsel_pclks = Data.FinalRangeVcselPulsePeriod; final_range_macro_pclks = VL53L0X_calc_timeout_mclks( final_range_timeout_micro_secs, final_range_vcsel_pclks); /* Calculate pre-range macro periods */ - pre_range_timeout_micro_secs = Data.PreRangeTimeoutMicroSecs; + pre_range_timeout_micro_secs = Data.PreRangeTimeout_us; pre_range_vcsel_pclks = Data.PreRangeVcselPulsePeriod; pre_range_macro_pclks = VL53L0X_calc_timeout_mclks(pre_range_timeout_micro_secs, pre_range_vcsel_pclks); @@ -2943,17 +2921,17 @@ peak_vcsel_duration_us = (peak_vcsel_duration_us + 500) / 1000; /* Fix1616 >> 8 = Fix2408 */ - total_signal_rate_mcps = (total_signal_rate_mcps + 0x80) >> 8; + total_signal_rate_MHz = (total_signal_rate_MHz + 0x80) >> 8; /* Fix2408 * uint32 = Fix2408 */ - vcsel_total_events_rtn = total_signal_rate_mcps * + vcsel_total_events_rtn = total_signal_rate_MHz * peak_vcsel_duration_us; /* Fix2408 >> 8 = uint32 */ vcsel_total_events_rtn = (vcsel_total_events_rtn + 0x80) >> 8; /* Fix2408 << 8 = Fix1616 = */ - total_signal_rate_mcps <<= 8; + total_signal_rate_MHz <<= 8; } if (status != VL53L0X_ERROR_NONE) { @@ -2984,30 +2962,30 @@ sigma_estimate_p3 = 2 * VL53L0X_isqrt(vcsel_total_events_rtn * 12); /* uint32 * FixPoint1616 = FixPoint1616 */ - delta_t_ps = p_ranging_measurement_data->RangeMilliMeter * + delta_t_ps = p_ranging_measurement_data->Range_mm * c_tof_per_mm_ps; /* * vcselRate - xtalkCompRate * (uint32 << 16) - FixPoint1616 = FixPoint1616. - * Divide result by 1000 to convert to mcps. + * Divide result by 1000 to convert to MHz. * 500 is added to ensure rounding when integer division * truncates. */ - diff1_mcps = (((peak_signal_rate_kcps << 16) - + diff1_MHz = (((peak_signal_rate_kcps << 16) - 2 * x_talk_comp_rate_kcps) + 500) / 1000; /* vcselRate + xtalkCompRate */ - diff2_mcps = ((peak_signal_rate_kcps << 16) + 500) / 1000; + diff2_MHz = ((peak_signal_rate_kcps << 16) + 500) / 1000; /* Shift by 8 bits to increase resolution prior to the * division */ - diff1_mcps <<= 8; + diff1_MHz <<= 8; /* FixPoint0824/FixPoint1616 = FixPoint2408 */ -// xTalkCorrection = abs(diff1_mcps/diff2_mcps); +// xTalkCorrection = abs(diff1_MHz/diff2_MHz); // abs is causing compiler overloading isue in C++, but unsigned types. So, redundant call anyway! - x_talk_correction = diff1_mcps / diff2_mcps; + x_talk_correction = diff1_MHz / diff2_MHz; /* FixPoint2408 << 8 = FixPoint1616 */ x_talk_correction <<= 8; @@ -3125,8 +3103,8 @@ *p_sigma_estimate = (uint32_t)(sigma_estimate); Data.SigmaEstimate = *p_sigma_estimate; - status = VL53L0X_calc_dmax(total_signal_rate_mcps, - corrected_signal_rate_mcps, + status = VL53L0X_calc_dmax(total_signal_rate_MHz, + corrected_signal_rate_MHz, pw_mult, sigma_estimate_p1, sigma_estimate_p2, @@ -3160,7 +3138,7 @@ uint16_t tmp_word = 0; uint8_t temp8; uint32_t dmax_mm = 0; - FixPoint1616_t last_signal_ref_mcps; + FixPoint1616_t last_signal_ref_MHz; /* VL53L0X has a good ranging when the value of the * DeviceRangeStatus = 11. This function will replace the value 0 with @@ -3200,7 +3178,7 @@ &sigma_estimate, &dmax_mm); if (status == VL53L0X_ERROR_NONE) { - p_ranging_measurement_data->RangeDMaxMilliMeter = dmax_mm; + p_ranging_measurement_data->RangeDMax_mm = dmax_mm; } if (status == VL53L0X_ERROR_NONE) { @@ -3230,7 +3208,7 @@ status = VL53L0X_get_limit_check_value(VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP, &signal_ref_clip_value); - /* Read LastSignalRefMcps from device */ + /* Read LastSignalRef_MHz from device */ if (status == VL53L0X_ERROR_NONE) { status = VL53L0X_write_byte( 0xFF, 0x01); } @@ -3244,11 +3222,11 @@ status = VL53L0X_write_byte( 0xFF, 0x00); } - last_signal_ref_mcps = VL53L0X_FIXPOINT97TOFIXPOINT1616(tmp_word); - Data.LastSignalRefMcps = last_signal_ref_mcps; + last_signal_ref_MHz = VL53L0X_FP97TOFP1616(tmp_word); + Data.LastSignalRef_MHz = last_signal_ref_MHz; if ((signal_ref_clip_value > 0) && - (last_signal_ref_mcps > signal_ref_clip_value)) { + (last_signal_ref_MHz > signal_ref_clip_value)) { /* Limit Fail */ signal_ref_clipflag = 1; } @@ -3312,7 +3290,7 @@ /* DMAX only relevant during range error */ if (*p_pal_range_status == 0) { - p_ranging_measurement_data->RangeDMaxMilliMeter = 0; + p_ranging_measurement_data->RangeDMax_mm = 0; } /* fill the Limit Check Status */ @@ -3366,14 +3344,13 @@ uint8_t x_talk_compensation_enable; uint16_t ambient_rate; FixPoint1616_t signal_rate; - uint16_t x_talk_compensation_rate_mega_cps; + uint16_t x_talk_compensation_rate_MHz; uint16_t effective_spad_rtn_count; uint16_t tmpuint16; uint16_t xtalk_range_milli_meter; uint16_t linearity_corrective_gain; uint8_t localBuffer[12]; - VL53L0X_RangingMeasurementData_t last_range_data_buffer; - + /* use multi read even if some registers are not useful, result will * be more efficient start reading at 0x14 dec20 * end reading at 0x21 dec33 total 14 bytes to read */ @@ -3385,13 +3362,13 @@ /* cut1.1 if SYSTEM__RANGE_CONFIG if 1 range is 2bits fractional *(format 11.2) else no fractional */ - signal_rate = VL53L0X_FIXPOINT97TOFIXPOINT1616(VL53L0X_MAKEUINT16(localBuffer[7], localBuffer[6])); - /* peak_signal_count_rate_rtn_mcps */ - p_ranging_measurement_data->SignalRateRtnMegaCps = signal_rate; + signal_rate = VL53L0X_FP97TOFP1616(VL53L0X_MAKEUINT16(localBuffer[7], localBuffer[6])); + /* peak_signal_count_rate_rtn_MHz */ + p_ranging_measurement_data->SignalRateRtn_MHz = signal_rate; ambient_rate = VL53L0X_MAKEUINT16(localBuffer[9], localBuffer[8]); - p_ranging_measurement_data->AmbientRateRtnMegaCps = - VL53L0X_FIXPOINT97TOFIXPOINT1616(ambient_rate); + p_ranging_measurement_data->AmbientRateRtn_MHz = + VL53L0X_FP97TOFP1616(ambient_rate); effective_spad_rtn_count = VL53L0X_MAKEUINT16(localBuffer[3], localBuffer[2]); @@ -3412,13 +3389,13 @@ tmpuint16 = (uint16_t)((linearity_corrective_gain * tmpuint16 + 500) / 1000); /* Implement Xtalk */ - x_talk_compensation_rate_mega_cps = CurrentParameters.XTalkCompensationRateMegaCps ; + x_talk_compensation_rate_MHz = CurrentParameters.XTalkCompensationRate_MHz ; x_talk_compensation_enable = CurrentParameters.XTalkCompensationEnable ; if (x_talk_compensation_enable) { if ((signal_rate - - ((x_talk_compensation_rate_mega_cps + - ((x_talk_compensation_rate_MHz * effective_spad_rtn_count) >> 8)) <= 0) { if (range_fractional_enable) { @@ -3430,7 +3407,7 @@ xtalk_range_milli_meter = (tmpuint16 * signal_rate) / (signal_rate - - ((x_talk_compensation_rate_mega_cps + - ((x_talk_compensation_rate_MHz * effective_spad_rtn_count) >> 8)); } @@ -3439,12 +3416,12 @@ } if (range_fractional_enable) { - p_ranging_measurement_data->RangeMilliMeter = + p_ranging_measurement_data->Range_mm = (uint16_t)((tmpuint16) >> 2); p_ranging_measurement_data->RangeFractionalPart = (uint8_t)((tmpuint16 & 0x03) << 6); } else { - p_ranging_measurement_data->RangeMilliMeter = tmpuint16; + p_ranging_measurement_data->Range_mm = tmpuint16; p_ranging_measurement_data->RangeFractionalPart = 0; } @@ -3462,26 +3439,14 @@ } - if (status == VL53L0X_ERROR_NONE) { - /* Copy last read data into Device buffer */ - last_range_data_buffer = Data.LastRangeMeasure; - - last_range_data_buffer.RangeMilliMeter = - p_ranging_measurement_data->RangeMilliMeter; - last_range_data_buffer.RangeFractionalPart = - p_ranging_measurement_data->RangeFractionalPart; - last_range_data_buffer.RangeDMaxMilliMeter = - p_ranging_measurement_data->RangeDMaxMilliMeter; - last_range_data_buffer.SignalRateRtnMegaCps = - p_ranging_measurement_data->SignalRateRtnMegaCps; - last_range_data_buffer.AmbientRateRtnMegaCps = - p_ranging_measurement_data->AmbientRateRtnMegaCps; - last_range_data_buffer.EffectiveSpadRtnCount = - p_ranging_measurement_data->EffectiveSpadRtnCount; - last_range_data_buffer.RangeStatus = - p_ranging_measurement_data->RangeStatus; - - Data.LastRangeMeasure = last_range_data_buffer; + if (status == VL53L0X_ERROR_NONE) { /* Copy last read data into Device buffer */ + LastRangeMeasure.Range_mm = p_ranging_measurement_data->Range_mm; + LastRangeMeasure.RangeFractionalPart = p_ranging_measurement_data->RangeFractionalPart; + LastRangeMeasure.RangeDMax_mm = p_ranging_measurement_data->RangeDMax_mm; + LastRangeMeasure.SignalRateRtn_MHz = p_ranging_measurement_data->SignalRateRtn_MHz; + LastRangeMeasure.AmbientRateRtn_MHz = p_ranging_measurement_data->AmbientRateRtn_MHz; + LastRangeMeasure.EffectiveSpadRtnCount = p_ranging_measurement_data->EffectiveSpadRtnCount; + LastRangeMeasure.RangeStatus = p_ranging_measurement_data->RangeStatus; } return status; @@ -3556,7 +3521,7 @@ uint32_t current_spad_index = 0; uint32_t last_spad_index = 0; int32_t next_good_spad = 0; - uint16_t target_ref_rate = 0x0A00; /* 20 MCPS in 9:7 format */ + uint16_t target_ref_rate = 0x0A00; /* 20 MHz in 9:7 format */ uint16_t peak_signal_rate_ref; uint32_t need_apt_spads = 0; uint32_t index = 0; @@ -3601,7 +3566,7 @@ * represent spads. */ for (index = 0; index < spad_array_size; index++) { - Data.SpadData.RefSpadEnables[index] = 0; + Data.RefSpadEnables[index] = 0; } status = VL53L0X_write_byte( 0xFF, 0x01); @@ -3639,8 +3604,8 @@ last_spad_index = current_spad_index; need_apt_spads = 0; status = enable_ref_spads(need_apt_spads, - Data.SpadData.RefGoodSpadMap, - Data.SpadData.RefSpadEnables, + Data.RefGoodSpadMap, + Data.RefSpadEnables, spad_array_size, start_select, current_spad_index, @@ -3658,7 +3623,7 @@ * switch to APERTURE SPADs */ for (index = 0; index < spad_array_size; index++) { - Data.SpadData.RefSpadEnables[index] = 0; + Data.RefSpadEnables[index] = 0; } /* Increment to the first APERTURE spad */ @@ -3670,8 +3635,8 @@ need_apt_spads = 1; status = enable_ref_spads(need_apt_spads, - Data.SpadData.RefGoodSpadMap, - Data.SpadData.RefSpadEnables, + Data.RefGoodSpadMap, + Data.RefSpadEnables, spad_array_size, start_select, current_spad_index, @@ -3709,14 +3674,14 @@ is_aperture_spads_int = need_apt_spads; ref_spad_count_int = minimum_spad_count; - memcpy(last_spad_array, Data.SpadData.RefSpadEnables, + memcpy(last_spad_array, Data.RefSpadEnables, spad_array_size); last_signal_rate_diff = abs(peak_signal_rate_ref - target_ref_rate); complete = 0; while (!complete) { - get_next_good_spad(Data.SpadData.RefGoodSpadMap, + get_next_good_spad(Data.RefGoodSpadMap, spad_array_size, current_spad_index, &next_good_spad); @@ -3740,14 +3705,14 @@ (ref_spad_count_int)++; current_spad_index = next_good_spad; - status = enable_spad_bit(Data.SpadData.RefSpadEnables, + status = enable_spad_bit(Data.RefSpadEnables, spad_array_size, current_spad_index); if (status == VL53L0X_ERROR_NONE) { current_spad_index++; /* Proceed to apply the additional spad and * perform measurement. */ - status = set_ref_spad_map(Data.SpadData.RefSpadEnables); + status = set_ref_spad_map(Data.RefSpadEnables); } if (status != VL53L0X_ERROR_NONE) { @@ -3771,7 +3736,7 @@ /* Previous spad map produced a closer * measurement, so choose this. */ status = set_ref_spad_map(last_spad_array); - memcpy(Data.SpadData.RefSpadEnables, + memcpy(Data.RefSpadEnables, last_spad_array, spad_array_size); (ref_spad_count_int)--; } @@ -3780,7 +3745,7 @@ /* Continue to add spads */ last_signal_rate_diff = signal_rate_diff; memcpy(last_spad_array, - Data.SpadData.RefSpadEnables, + Data.RefSpadEnables, spad_array_size); } @@ -3834,7 +3799,7 @@ } for (index = 0; index < spad_array_size; index++) { - Data.SpadData.RefSpadEnables[index] = 0; + Data.RefSpadEnables[index] = 0; } if (is_aperture_spads) { @@ -3845,8 +3810,8 @@ } } status = enable_ref_spads(is_aperture_spads, - Data.SpadData.RefGoodSpadMap, - Data.SpadData.RefSpadEnables, + Data.RefGoodSpadMap, + Data.RefSpadEnables, spad_array_size, start_select, current_spad_index, @@ -3943,8 +3908,7 @@ data = 0x04; break; default: - status = - VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED; + status = VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED; } } @@ -4050,7 +4014,7 @@ } if (status == VL53L0X_ERROR_NONE) { - Data.PreRangeTimeoutMicroSecs = timeout_micro_secs; + Data.PreRangeTimeout_us = timeout_micro_secs; } } else if (sequence_step_id == VL53L0X_SEQUENCESTEP_FINAL_RANGE) { @@ -4097,7 +4061,7 @@ } if (status == VL53L0X_ERROR_NONE) { - Data.FinalRangeTimeoutMicroSecs = timeout_micro_secs; + Data.FinalRangeTimeout_us = timeout_micro_secs; } } } else { @@ -4107,30 +4071,30 @@ return status; } -VL53L0X_Error VL53L0X::wrapped_VL53L0X_set_measurement_timing_budget_micro_seconds(uint32_t measurement_timing_budget_micro_seconds) +VL53L0X_Error VL53L0X::wrapped_VL53L0X_set_measurement_timing_budget_us(uint32_t measurement_timing_budget_us) { VL53L0X_Error status = VL53L0X_ERROR_NONE; - uint32_t final_range_timing_budget_micro_seconds; + uint32_t final_range_timing_budget_us; VL53L0X_SchedulerSequenceSteps_t scheduler_sequence_steps; - uint32_t msrc_dcc_tcc_timeout_micro_seconds = 2000; - uint32_t start_overhead_micro_seconds = 1910; - uint32_t end_overhead_micro_seconds = 960; - uint32_t msrc_overhead_micro_seconds = 660; - uint32_t tcc_overhead_micro_seconds = 590; - uint32_t dss_overhead_micro_seconds = 690; - uint32_t pre_range_overhead_micro_seconds = 660; - uint32_t final_range_overhead_micro_seconds = 550; - uint32_t pre_range_timeout_micro_seconds = 0; - uint32_t c_min_timing_budget_micro_seconds = 20000; + uint32_t msrc_dcc_tcc_timeout_us = 2000; + uint32_t start_overhead_us = 1910; + uint32_t end_overhead_us = 960; + uint32_t msrc_overhead_us = 660; + uint32_t tcc_overhead_us = 590; + uint32_t dss_overhead_us = 690; + uint32_t pre_range_overhead_us = 660; + uint32_t final_range_overhead_us = 550; + uint32_t pre_range_timeout_us = 0; + uint32_t c_min_timing_budget_us = 20000; uint32_t sub_timeout = 0; - if (measurement_timing_budget_micro_seconds < c_min_timing_budget_micro_seconds) + if (measurement_timing_budget_us < c_min_timing_budget_us) { status = VL53L0X_ERROR_INVALID_PARAMS; return status; } - final_range_timing_budget_micro_seconds = - measurement_timing_budget_micro_seconds - - (start_overhead_micro_seconds + end_overhead_micro_seconds); + final_range_timing_budget_us = + measurement_timing_budget_us - + (start_overhead_us + end_overhead_us); status = VL53L0X_get_sequence_step_enables( &scheduler_sequence_steps); @@ -4141,7 +4105,7 @@ /* TCC, MSRC and DSS all share the same timeout */ status = get_sequence_step_timeout( VL53L0X_SEQUENCESTEP_MSRC, - &msrc_dcc_tcc_timeout_micro_seconds); + &msrc_dcc_tcc_timeout_us); /* Subtract the TCC, MSRC and DSS timeouts if they are * enabled. */ @@ -4153,12 +4117,12 @@ /* TCC */ if (scheduler_sequence_steps.TccOn) { - sub_timeout = msrc_dcc_tcc_timeout_micro_seconds - + tcc_overhead_micro_seconds; + sub_timeout = msrc_dcc_tcc_timeout_us + + tcc_overhead_us; if (sub_timeout < - final_range_timing_budget_micro_seconds) { - final_range_timing_budget_micro_seconds -= + final_range_timing_budget_us) { + final_range_timing_budget_us -= sub_timeout; } else { /* Requested timeout too big. */ @@ -4171,11 +4135,11 @@ /* DSS */ if (scheduler_sequence_steps.DssOn) { - sub_timeout = 2 * (msrc_dcc_tcc_timeout_micro_seconds + - dss_overhead_micro_seconds); - - if (sub_timeout < final_range_timing_budget_micro_seconds) { - final_range_timing_budget_micro_seconds + sub_timeout = 2 * (msrc_dcc_tcc_timeout_us + + dss_overhead_us); + + if (sub_timeout < final_range_timing_budget_us) { + final_range_timing_budget_us -= sub_timeout; } else { /* Requested timeout too big. */ @@ -4183,11 +4147,11 @@ } } else if (scheduler_sequence_steps.MsrcOn) { /* MSRC */ - sub_timeout = msrc_dcc_tcc_timeout_micro_seconds + - msrc_overhead_micro_seconds; - - if (sub_timeout < final_range_timing_budget_micro_seconds) { - final_range_timing_budget_micro_seconds + sub_timeout = msrc_dcc_tcc_timeout_us + + msrc_overhead_us; + + if (sub_timeout < final_range_timing_budget_us) { + final_range_timing_budget_us -= sub_timeout; } else { /* Requested timeout too big. */ @@ -4203,13 +4167,13 @@ /* Subtract the Pre-range timeout if enabled. */ status = get_sequence_step_timeout(VL53L0X_SEQUENCESTEP_PRE_RANGE, - &pre_range_timeout_micro_seconds); - - sub_timeout = pre_range_timeout_micro_seconds + - pre_range_overhead_micro_seconds; - - if (sub_timeout < final_range_timing_budget_micro_seconds) { - final_range_timing_budget_micro_seconds -= sub_timeout; + &pre_range_timeout_us); + + sub_timeout = pre_range_timeout_us + + pre_range_overhead_us; + + if (sub_timeout < final_range_timing_budget_us) { + final_range_timing_budget_us -= sub_timeout; } else { /* Requested timeout too big. */ status = VL53L0X_ERROR_INVALID_PARAMS; @@ -4219,8 +4183,8 @@ if (status == VL53L0X_ERROR_NONE && scheduler_sequence_steps.FinalRangeOn) { - final_range_timing_budget_micro_seconds -= - final_range_overhead_micro_seconds; + final_range_timing_budget_us -= + final_range_overhead_us; /* Final Range Timeout * Note that the final range timeout is determined by the timing @@ -4230,16 +4194,16 @@ * the final range. */ status = set_sequence_step_timeout(VL53L0X_SEQUENCESTEP_FINAL_RANGE, - final_range_timing_budget_micro_seconds); - CurrentParameters.MeasurementTimingBudgetMicroSeconds = measurement_timing_budget_micro_seconds; + final_range_timing_budget_us); + CurrentParameters.MeasurementTimingBudget_us = measurement_timing_budget_us; } return status; } -VL53L0X_Error VL53L0X::VL53L0X_set_measurement_timing_budget_micro_seconds(uint32_t measurement_timing_budget_micro_seconds) +VL53L0X_Error VL53L0X::VL53L0X_set_measurement_timing_budget_us(uint32_t measurement_timing_budget_us) { VL53L0X_Error status = VL53L0X_ERROR_NONE; - status = wrapped_VL53L0X_set_measurement_timing_budget_micro_seconds(measurement_timing_budget_micro_seconds); + status = wrapped_VL53L0X_set_measurement_timing_budget_us(measurement_timing_budget_us); return status; } @@ -4247,7 +4211,7 @@ { VL53L0X_Error status = VL53L0X_ERROR_NONE; uint8_t sequence_config = 0; uint8_t sequence_config_new = 0; - uint32_t measurement_timing_budget_micro_seconds; + uint32_t measurement_timing_budget_us; status = VL53L0X_read_byte( VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, &sequence_config); @@ -4311,8 +4275,8 @@ /* Recalculate timing budget */ if (status == VL53L0X_ERROR_NONE) { - measurement_timing_budget_micro_seconds = CurrentParameters.MeasurementTimingBudgetMicroSeconds ; - VL53L0X_set_measurement_timing_budget_micro_seconds(measurement_timing_budget_micro_seconds); + measurement_timing_budget_us = CurrentParameters.MeasurementTimingBudget_us ; + VL53L0X_set_measurement_timing_budget_us(measurement_timing_budget_us); } } @@ -4350,7 +4314,7 @@ case VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE: status = VL53L0X_write_word( VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT, - VL53L0X_FIXPOINT1616TOFIXPOINT97(temp_fix1616)); + VL53L0X_FP1616TOFP97(temp_fix1616)); break; case VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP:/* internal computation: */ @@ -4448,7 +4412,7 @@ } if (status == VL53L0X_ERROR_NONE) { - Data.OscFrequencyMHz = VL53L0X_FIXPOINT412TOFIXPOINT1616(tempword) ; + Data.OscFrequency_MHz = VL53L0X_FP412TOFP1616(tempword) ; } /* After static init, some device parameters may be changed, @@ -4515,7 +4479,7 @@ } if (status == VL53L0X_ERROR_NONE) { - Data.PreRangeTimeoutMicroSecs = seq_timeout_micro_secs; + Data.PreRangeTimeout_us = seq_timeout_micro_secs; } /* Store final-range timeout */ @@ -4524,7 +4488,7 @@ } if (status == VL53L0X_ERROR_NONE) { - Data.FinalRangeTimeoutMicroSecs = seq_timeout_micro_secs; + Data.FinalRangeTimeout_us = seq_timeout_micro_secs; } return status; } @@ -4534,7 +4498,6 @@ status = VL53L0X_write_byte( VL53L0X_REG_SYSRANGE_START, VL53L0X_REG_SYSRANGE_MODE_SINGLESHOT); - status = VL53L0X_write_byte( 0xFF, 0x01); status = VL53L0X_write_byte( 0x00, 0x00); status = VL53L0X_write_byte( 0x91, 0x00); @@ -4561,12 +4524,10 @@ status = VL53L0X_write_byte( 0xFF, 0x01); if (status == VL53L0X_ERROR_NONE) { - status = VL53L0X_read_byte( 0x04, &byte); - } + status = VL53L0X_read_byte( 0x04, &byte);} if (status == VL53L0X_ERROR_NONE) { - status = VL53L0X_write_byte( 0xFF, 0x0); - } + status = VL53L0X_write_byte( 0xFF, 0x0); } *p_stop_status = byte;