def check(self): alerts = super().check() if self.range_length < 1e-6: alerts.append( cb.Warning("range_interval", "Will only return a single point")) if self.downsampling_factor not in [1, 2, 4]: alerts.append(cb.Error("downsampling_factor", "Must be 1, 2, or 4")) if self.repetition_mode == __class__.RepetitionMode.SENSOR_DRIVEN: chunks = self.range_length / 0.06 chunks += 2 if self.mode == Mode.IQ else 0 points_per_chunk = 124 / self.downsampling_factor if points_per_chunk * chunks > 2048: alerts.append( cb.Error("range_interval", "Too large for buffer")) if self.power_save_mode == __class__.PowerSaveMode.HIBERNATE: alerts.append( cb.Error("power_save_mode", "Not supported for this service")) return alerts
def check(self): alerts = super().check() if self.range_start < (0.06 - 1e-6): alerts.append(cb.Error("range_interval", "Start must be >= 0.06 m")) if self.sampling_mode == __class__.SamplingMode.B: alerts.append( cb.Warning("sampling_mode", "IQ sampling mode B is deprecated")) return alerts
def check(self): alerts = [] if self.repetition_mode == __class__.RepetitionMode.SENSOR_DRIVEN: if self.update_rate is None: alerts.append(cb.Error("update_rate", "Must be set when sensor driven")) if self.gain > 0.9: alerts.append(cb.Warning("gain", "Too high gain causes degradation")) if self.range_start < self.profile.approx_direct_leakage_length: alerts.append(cb.Info("range_interval", "Direct leakage might be seen")) return alerts
def check_sensor_config(self, sensor_config): alerts = [] if sensor_config.update_rate is None: alerts.append(configbase.Error("update_rate", "Must be set")) if not sensor_config.noise_level_normalization: if self.threshold_type == self.ThresholdType.FIXED: alerts.append( configbase.Warning( "noise_level_normalization", ("Enabling noise level normalization is " "recommended with Fixed threshold"))) return alerts
def check(self): alerts = [] if self.repetition_mode == __class__.RepetitionMode.SENSOR_DRIVEN: msg = "Must be set when sensor driven" if self.update_rate is None: alerts.append(cb.Error("update_rate", msg)) if not self.asynchronous_measurement: alerts.append(cb.Error("asynchronous_measurement", msg)) if self.gain > 0.9: alerts.append( cb.Warning("gain", "Too high gain causes degradation")) if self.range_start < self.profile.approx_direct_leakage_length: alerts.append( cb.Info("range_interval", "Direct leakage might be seen")) if self.power_save_mode == __class__.PowerSaveMode.HIBERNATE: alerts.append( cb.Warning("power_save_mode", "Limited hardware support")) if self.repetition_mode == __class__.RepetitionMode.SENSOR_DRIVEN: alerts.append( cb.Error("power_save_mode", "Unavailable when sensor driven")) psms = [__class__.PowerSaveMode.HIBERNATE, __class__.PowerSaveMode.OFF] if self.power_save_mode in psms: if self.asynchronous_measurement: msg = "PSM hibernate/off is always synchronous" alerts.append(cb.Info("asynchronous_measurement", msg)) return alerts