Peak Manager

- renamed ports to status[0..N]
- emiut gain messages 

PekaDetect
- emit peak messages also on peak height changes

git-svn-id: http://moon:8086/svn/software/trunk/projects/GnuRadio@499 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-05-29 09:58:23 +00:00
parent b665890f9e
commit a50f613991
4 changed files with 123 additions and 60 deletions
+30 -22
View File
@@ -45,12 +45,12 @@ class peak_manager(gr.basic_block):
self.message_port_register_out(pmt.intern("status"))
if self.numPeaksMax < 2:
out_port_name = "freq"
out_port_name = "status"
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):
out_port_name = "freq" + str(n)
out_port_name = "status" + str(n)
self.ports_avail.append(out_port_name)
self.message_port_register_out(pmt.intern(out_port_name))
@@ -84,7 +84,7 @@ class peak_manager(gr.basic_block):
if pmt.is_dict(msg):
items = pmt.dict_items(msg)
peak = {}
peakMsg = {}
for n in range(0, pmt.length(items)):
pair = pmt.nth(n, items)
key = pmt.car(pair)
@@ -94,41 +94,49 @@ class peak_manager(gr.basic_block):
if pmt.is_integer(val):
value = pmt.to_long(val)
peak[key_str] = value
peakMsg[key_str] = value
# print("{}={}".format(key_str, value))
elif pmt.is_real(val):
value = pmt.to_float(val)
peak[key_str] = value
peakMsg[key_str] = value
# print("{}={}".format(key_str, value))
elif pmt.is_bool(val):
value = pmt.to_bool(val)
peak[key_str] = value
peakMsg[key_str] = value
# print("{}={}".format(key_str, value))
id = peak['id']
freq_MHz = peak['freq_Hz']*1e-6
id = peakMsg['id']
freq_MHz = peakMsg['freq_Hz']*1e-6
peak_key = 'peak' + str(id)
peak0 = self.peak_get(peak_key)
peakEntry = self.peak_get(peak_key)
if peak['state'] == 1:
if peak0 is not None:
pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peak['freq_Hz']))
portname = peak0['port_name']
if peakMsg['state'] == 1:
if peakEntry is not None:
portname = peakEntry['port_name']
print("Update " + peak_key + "(" + portname + ")")
pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peakMsg['freq_Hz']))
self.message_port_pub(pmt.intern(portname), pair)
pair = pmt.cons(pmt.intern("gain"), pmt.from_float(-peakMsg['height']))
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']))
portname = peak0['port_name']
print("Added " + peak_key + "(" + portname + ")")
self.message_port_pub(pmt.intern(portname), pair)
peakEntry = self.peak_add(peak_key, peakMsg)
if peakEntry is not None:
portname = peakEntry['port_name']
print("Added " + peak_key + "(" + portname + ")")
pair = pmt.cons(pmt.intern("freq"), pmt.from_float(peakMsg['freq_Hz']))
self.message_port_pub(pmt.intern(portname), pair)
pair = pmt.cons(pmt.intern("gain"), pmt.from_float(-peakMsg['height']))
self.message_port_pub(pmt.intern(portname), pair)
else:
print ("Lost peak #{} at {:0.2f} MHz".format(id, freq_MHz))
portname = peak0['port_name']
if self.peak_del(peak_key):
print("Deleted " + peak_key + "(" + portname + ")")
if peakEntry is not None:
print ("Lost peak #{} at {:0.2f} MHz".format(id, freq_MHz))
portname = peakEntry['port_name']
pair = pmt.cons(pmt.intern("gain"), pmt.from_float(-120.0))
self.message_port_pub(pmt.intern(portname), pair)
if self.peak_del(peak_key):
print("Deleted " + peak_key + "(" + portname + ")")
else: