コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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
コード例 #5
0
    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