diff --git a/gr-jay/python/peak_manager.py b/gr-jay/python/peak_manager.py index f393a64..5edf9d4 100644 --- a/gr-jay/python/peak_manager.py +++ b/gr-jay/python/peak_manager.py @@ -35,6 +35,8 @@ class peak_manager(gr.basic_block): self.numPeaksMax = numPeaksMax self.peak_dict = {} + self.ports_avail = [] + self.ports_used = [] print ("numPeaksMax : ", numPeaksMax) @@ -42,29 +44,32 @@ class peak_manager(gr.basic_block): self.message_port_register_in(pmt.intern("control")) self.message_port_register_out(pmt.intern("status")) - self.out_ports = [] if self.numPeaksMax < 2: - self.out_ports.append(pmt.intern("freq")) - + out_port_name = "freq" + self.ports_avail.append(out_port_name) + self.message_port_register_out(pmt.intern(out_port_name)) else: for n in range(0, self.numPeaksMax): - self.out_ports.append(pmt.intern("freq" + str(n))) - - for out_port in self.out_ports: - self.message_port_register_out(out_port) + out_port_name = "freq" + str(n) + self.ports_avail.append(out_port_name) + self.message_port_register_out(pmt.intern(out_port_name)) # Register in message handler self.set_msg_handler(pmt.intern("control"), self.msg_handler) def peak_add(self, key, peak): - if len(self.peak_dict) < self.numPeaksMax: + if len(self.ports_avail) > 0: + port_name = self.ports_avail.pop() + peak['port_name'] = port_name self.peak_dict[key] = peak - return True - return False + return peak + return None def peak_del(self, key): if key in self.peak_dict: + port_name = self.peak_dict[key]['port_name'] + self.ports_avail.append(port_name) self.peak_dict.pop(key, None) return True return False @@ -103,25 +108,27 @@ class peak_manager(gr.basic_block): id = peak['id'] freq_MHz = peak['freq_Hz']*1e-6 + peak_key = 'peak' + str(id) + peak0 = self.peak_get(peak_key) + if peak['state'] == 1: - print ("New peak #{} at {:0.2f} MHz".format(id, freq_MHz)) - peak_key = 'peak' + str(id) - - peak0 = self.peak_get(peak_key) - if peak0 is not None: pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peak['freq_Hz'])) - print("Update " + peak_key) - self.message_port_pub(pmt.intern("freq"), pair) - elif self.peak_add(peak_key, peak): + portname = peak0['port_name'] + print("Update " + peak_key + "(" + portname + ")") + self.message_port_pub(pmt.intern(portname), pair) + else: + print ("New peak #{} at {:0.2f} MHz".format(id, freq_MHz)) + peak0 = self.peak_add(peak_key, peak) pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peak['freq_Hz'])) - print("Added " + peak_key) - self.message_port_pub(pmt.intern("freq"), pair) + portname = peak0['port_name'] + print("Added " + peak_key + "(" + portname + ")") + self.message_port_pub(pmt.intern(portname), pair) else: print ("Lost peak #{} at {:0.2f} MHz".format(id, freq_MHz)) - peak_key = 'peak' + str(id) + portname = peak0['port_name'] if self.peak_del(peak_key): - print("Deleted " + peak_key) + print("Deleted " + peak_key + "(" + portname + ")") else: