def read_project_file_for_signal(self, signal: Signal): if self.project_file is None or len(signal.filename) == 0: return False tree = ET.parse(self.project_file) root = tree.getroot() for sig_tag in root.iter("signal"): if sig_tag.attrib["filename"] == os.path.relpath( signal.filename, self.project_path): signal.name = sig_tag.attrib["name"] signal.qad_center = float(sig_tag.get("qad_center", 0)) signal.tolerance = int(sig_tag.get("tolerance", 5)) signal.auto_detect_on_modulation_changed = False if \ sig_tag.attrib[ "auto_detect_on_modulation_changed"] == 'False' else True signal.noise_threshold = float( sig_tag.get("noise_threshold", 0.1)) signal.sample_rate = float(sig_tag.get("sample_rate", 1e6)) signal.bit_len = int(sig_tag.get("bit_length", 100)) signal.modulation_type = int(sig_tag.get("modulation_type", 0)) signal.pause_threshold = int(sig_tag.get("pause_threshold", 8)) signal.message_length_divisor = int( sig_tag.get("message_length_divisor", 1)) break return True
def demodulate(signal_data, mod_type: str, bit_length, center, noise, tolerance, decoding=None, pause_threshold=8): signal = Signal("", "") if isinstance(signal_data, IQArray): signal.iq_array = signal_data else: if signal_data.dtype == np.complex64: signal.iq_array = IQArray(signal_data.view(np.float32)) else: signal.iq_array = IQArray(signal_data) signal.modulation_type = mod_type signal.bit_len = bit_length signal.qad_center = center signal.noise_threshold = noise signal.pause_threshold = pause_threshold if tolerance is not None: signal.tolerance = tolerance pa = ProtocolAnalyzer(signal) if decoding is not None: pa.decoder = decoding pa.get_protocol_from_signal() return pa.decoded_hex_str
def read_project_file_for_signal(self, signal: Signal): if self.project_file is None or len(signal.filename) == 0: return False tree = ET.parse(self.project_file) root = tree.getroot() try: signal_filename = os.path.relpath(signal.filename, self.project_path) except ValueError: signal_filename = signal.filename for sig_tag in root.iter("signal"): if sig_tag.attrib["filename"] == signal_filename: signal.name = sig_tag.attrib["name"] signal.qad_center = float(sig_tag.get("qad_center", 0)) signal.tolerance = int(sig_tag.get("tolerance", 5)) signal.noise_threshold = float(sig_tag.get("noise_threshold", 0.1)) signal.sample_rate = float(sig_tag.get("sample_rate", 1e6)) signal.bit_len = int(sig_tag.get("bit_length", 100)) signal.modulation_type = int(sig_tag.get("modulation_type", 0)) signal.pause_threshold = int(sig_tag.get("pause_threshold", 8)) signal.message_length_divisor = int(sig_tag.get("message_length_divisor", 1)) break return True
def demodulate(signal_data, mod_type: str, bit_length, center, noise, tolerance, decoding=None, pause_threshold=8): signal = Signal("", "") signal._fulldata = signal_data signal.modulation_type = signal.MODULATION_TYPES.index(mod_type) signal.bit_len = bit_length signal.qad_center = center signal.noise_threshold = noise signal.pause_threshold = pause_threshold if tolerance is not None: signal.tolerance = tolerance pa = ProtocolAnalyzer(signal) if decoding is not None: pa.decoder = decoding pa.get_protocol_from_signal() return pa.decoded_hex_str
def read_project_file_for_signal(self, signal: Signal): if self.project_file is None or len(signal.filename) == 0: return False tree = ET.parse(self.project_file) root = tree.getroot() try: signal_filename = os.path.relpath(signal.filename, self.project_path) except ValueError: signal_filename = signal.filename for sig_tag in root.iter("signal"): if sig_tag.attrib["filename"] == signal_filename: signal.name = sig_tag.attrib["name"] center = sig_tag.get("qad_center", None) # legacy support signal.center = float(sig_tag.get( "center", 0)) if center is None else float(center) signal.center_spacing = float( sig_tag.get("center_spacing", 0.1)) signal.tolerance = int(sig_tag.get("tolerance", 5)) signal.bits_per_symbol = int(sig_tag.get("bits_per_symbol", 1)) signal.costas_loop_bandwidth = float( sig_tag.get("costas_loop_bandwidth", 0.1)) signal.noise_threshold = float( sig_tag.get("noise_threshold", 0.1)) signal.sample_rate = float(sig_tag.get("sample_rate", 1e6)) signal.samples_per_symbol = int(sig_tag.get( "bit_length", 0)) # Legacy for old project files if signal.samples_per_symbol == 0: signal.samples_per_symbol = int( sig_tag.get("samples_per_symbol", 100)) try: # Legacy support when modulation type was integer signal.modulation_type = Signal.MODULATION_TYPES[int( sig_tag.get("modulation_type", 0))] except (ValueError, IndexError): signal.modulation_type = sig_tag.get( "modulation_type", "ASK") signal.pause_threshold = int(sig_tag.get("pause_threshold", 8)) signal.message_length_divisor = int( sig_tag.get("message_length_divisor", 1)) break return True