// Get sequence step enables // based on VL53L0X_GetSequenceStepEnables() private void getSequenceStepEnables(out SequenceStepEnables enables) { var sequence_config = ReadByte((byte)Register.SYSTEM_SEQUENCE_CONFIG); enables.tcc = Convert.ToBoolean((sequence_config >> 4) & 0x1); enables.dss = Convert.ToBoolean((sequence_config >> 3) & 0x1); enables.msrc = Convert.ToBoolean((sequence_config >> 2) & 0x1); enables.pre_range = Convert.ToBoolean((sequence_config >> 6) & 0x1); enables.final_range = Convert.ToBoolean((sequence_config >> 7) & 0x1); }
// Get sequence step timeouts // based on get_sequence_step_timeout(), // but gets all timeouts instead of just the requested one, and also stores // intermediate values private void getSequenceStepTimeouts(ref SequenceStepEnables enables, out SequenceStepTimeouts timeouts) { timeouts.pre_range_vcsel_period_pclks = this.getVcselPulsePeriod(VcselPeriodType.VcselPeriodPreRange); timeouts.msrc_dss_tcc_mclks = Convert.ToUInt16(this.ReadRegister8Bits((byte)Register.MSRC_CONFIG_TIMEOUT_MACROP) + 1); timeouts.msrc_dss_tcc_us = this.timeoutMclksToMicroseconds(timeouts.msrc_dss_tcc_mclks, Convert.ToByte(timeouts.pre_range_vcsel_period_pclks)); timeouts.pre_range_mclks = this.decodeTimeout(this.ReadRegister16Bits((byte)Register.PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI)); timeouts.pre_range_us = this.timeoutMclksToMicroseconds(timeouts.pre_range_mclks, Convert.ToByte(timeouts.pre_range_vcsel_period_pclks)); timeouts.final_range_vcsel_period_pclks = this.getVcselPulsePeriod(VcselPeriodType.VcselPeriodFinalRange); timeouts.final_range_mclks = this.decodeTimeout(this.ReadRegister16Bits((byte)Register.FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI)); if (enables.pre_range) { timeouts.final_range_mclks -= timeouts.pre_range_mclks; } timeouts.final_range_us = this.timeoutMclksToMicroseconds(timeouts.final_range_mclks, Convert.ToByte(timeouts.final_range_vcsel_period_pclks)); }