def __init__(self, filename: str, name="Signal", modulation: str = None, sample_rate: float = 1e6, parent=None): super().__init__(parent) self.__name = name self.__tolerance = 5 self.__samples_per_symbol = 100 self.__pause_threshold = 8 self.__message_length_divisor = 1 self.__costas_loop_bandwidth = 0.1 self._qad = None self.__center = 0 self._noise_threshold = 0 self.__sample_rate = sample_rate self.noise_min_plot = 0 self.noise_max_plot = 0 self.block_protocol_update = False self.iq_array = IQArray(None, np.int8, 1) self.wav_mode = filename.endswith(".wav") self.__changed = False if modulation is None: modulation = "FSK" self.__modulation_type = modulation self.__bits_per_symbol = 1 self.__center_spacing = 1 # required for higher order modulations self.__parameter_cache = { mod: { "center": None, "samples_per_symbol": None } for mod in self.MODULATION_TYPES } self.__already_demodulated = False if len(filename) > 0: if self.wav_mode: self.__load_wav_file(filename) elif filename.endswith(".coco"): self.__load_compressed_complex(filename) else: self.__load_complex_file(filename) self.filename = filename self.noise_threshold = AutoInterpretation.detect_noise_level( self.iq_array.magnitudes) else: self.filename = ""
def __init__(self, filename: str, name="Signal", modulation: str = None, sample_rate: float = 1e6, parent=None): super().__init__(parent) self.__name = name self.__tolerance = 5 self.__bit_len = 100 self.__pause_threshold = 8 self.__message_length_divisor = 1 self._qad = None self.__qad_center = 0 self._noise_threshold = 0 self.__sample_rate = sample_rate self.noise_min_plot = 0 self.noise_max_plot = 0 self.block_protocol_update = False self.wav_mode = filename.endswith(".wav") self.__changed = False if modulation is None: modulation = "FSK" self.__modulation_type = self.MODULATION_TYPES.index(modulation) self.__modulation_order = 2 self.__parameter_cache = { mod: { "qad_center": None, "bit_len": None } for mod in self.MODULATION_TYPES } if len(filename) > 0: if self.wav_mode: self.__load_wav_file(filename) elif filename.endswith(".coco"): self.__load_compressed_complex(filename) else: self.__load_complex_file(filename) self.filename = filename self.noise_threshold = AutoInterpretation.detect_noise_level( self.iq_array.magnitudes) else: self.filename = ""
def __init__(self, filename: str, name: str, modulation: str = None, sample_rate: float = 1e6, parent=None): super().__init__(parent) self.__name = name self.__tolerance = 5 self.__bit_len = 100 self.__pause_threshold = 8 self.__message_length_divisor = 1 self._qad = None self.__qad_center = 0 self._noise_threshold = 0 self.__sample_rate = sample_rate self.noise_min_plot = 0 self.noise_max_plot = 0 self.block_protocol_update = False self.wav_mode = filename.endswith(".wav") self.__changed = False if modulation is None: modulation = "FSK" self.__modulation_type = self.MODULATION_TYPES.index(modulation) self.__modulation_order = 2 self.__parameter_cache = {mod: {"qad_center": None, "bit_len": None} for mod in self.MODULATION_TYPES} if len(filename) > 0: if self.wav_mode: self.__load_wav_file(filename) elif filename.endswith(".coco"): self.__load_compressed_complex(filename) else: self.__load_complex_file(filename) self.filename = filename self.noise_threshold = AutoInterpretation.detect_noise_level(np.abs(self.data)) else: self.filename = ""