Peak Manager
- added multi peak capability git-svn-id: http://moon:8086/svn/software/trunk/projects/GnuRadio@498 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user