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.numPeaksMax = numPeaksMax
|
||||||
self.peak_dict = {}
|
self.peak_dict = {}
|
||||||
|
self.ports_avail = []
|
||||||
|
self.ports_used = []
|
||||||
|
|
||||||
print ("numPeaksMax : ", numPeaksMax)
|
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_in(pmt.intern("control"))
|
||||||
self.message_port_register_out(pmt.intern("status"))
|
self.message_port_register_out(pmt.intern("status"))
|
||||||
|
|
||||||
self.out_ports = []
|
|
||||||
if self.numPeaksMax < 2:
|
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:
|
else:
|
||||||
for n in range(0, self.numPeaksMax):
|
for n in range(0, self.numPeaksMax):
|
||||||
self.out_ports.append(pmt.intern("freq" + str(n)))
|
out_port_name = "freq" + str(n)
|
||||||
|
self.ports_avail.append(out_port_name)
|
||||||
for out_port in self.out_ports:
|
self.message_port_register_out(pmt.intern(out_port_name))
|
||||||
self.message_port_register_out(out_port)
|
|
||||||
|
|
||||||
# Register in message handler
|
# Register in message handler
|
||||||
self.set_msg_handler(pmt.intern("control"), self.msg_handler)
|
self.set_msg_handler(pmt.intern("control"), self.msg_handler)
|
||||||
|
|
||||||
|
|
||||||
def peak_add(self, key, peak):
|
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
|
self.peak_dict[key] = peak
|
||||||
return True
|
return peak
|
||||||
return False
|
return None
|
||||||
|
|
||||||
def peak_del(self, key):
|
def peak_del(self, key):
|
||||||
if key in self.peak_dict:
|
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)
|
self.peak_dict.pop(key, None)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
@@ -103,25 +108,27 @@ class peak_manager(gr.basic_block):
|
|||||||
id = peak['id']
|
id = peak['id']
|
||||||
freq_MHz = peak['freq_Hz']*1e-6
|
freq_MHz = peak['freq_Hz']*1e-6
|
||||||
|
|
||||||
if peak['state'] == 1:
|
|
||||||
print ("New peak #{} at {:0.2f} MHz".format(id, freq_MHz))
|
|
||||||
peak_key = 'peak' + str(id)
|
peak_key = 'peak' + str(id)
|
||||||
|
|
||||||
peak0 = self.peak_get(peak_key)
|
peak0 = self.peak_get(peak_key)
|
||||||
|
|
||||||
|
if peak['state'] == 1:
|
||||||
if peak0 is not None:
|
if peak0 is not None:
|
||||||
pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peak['freq_Hz']))
|
pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peak['freq_Hz']))
|
||||||
print("Update " + peak_key)
|
portname = peak0['port_name']
|
||||||
self.message_port_pub(pmt.intern("freq"), pair)
|
print("Update " + peak_key + "(" + portname + ")")
|
||||||
elif self.peak_add(peak_key, peak):
|
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']))
|
pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peak['freq_Hz']))
|
||||||
print("Added " + peak_key)
|
portname = peak0['port_name']
|
||||||
self.message_port_pub(pmt.intern("freq"), pair)
|
print("Added " + peak_key + "(" + portname + ")")
|
||||||
|
self.message_port_pub(pmt.intern(portname), pair)
|
||||||
else:
|
else:
|
||||||
print ("Lost peak #{} at {:0.2f} MHz".format(id, freq_MHz))
|
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):
|
if self.peak_del(peak_key):
|
||||||
print("Deleted " + peak_key)
|
print("Deleted " + peak_key + "(" + portname + ")")
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user