Browse Source

pilot quality: added update period parameter

master
Clemens Richter 9 years ago
parent
commit
65d0e92289
  1. 2
      .gitignore
  2. 2
      apps/fft-multi-decoder_fixed_rtlsdr.grc
  3. 6
      apps/ifft-RDS-decoder_hier-block.grc
  4. 10
      grc/multirds_pilot_quality.xml
  5. 5
      python/pilot_quality.py
  6. 9
      python/rds_parser_table_qt.py

2
.gitignore vendored

@ -1,2 +1,4 @@
build build
python/cache python/cache
apps/*.py
apps/*.pyc

2
apps/fft-multi-decoder_fixed_rtlsdr.grc

@ -6296,7 +6296,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
</param> </param>
<param> <param>
<key>_coordinate</key> <key>_coordinate</key>
<value>(80, 356)</value> <value>(8, 388)</value>
</param> </param>
<param> <param>
<key>_rotation</key> <key>_rotation</key>

6
apps/ifft-RDS-decoder_hier-block.grc

@ -2135,7 +2135,7 @@
</param> </param>
<param> <param>
<key>debug</key> <key>debug</key>
<value>True</value> <value>False</value>
</param> </param>
<param> <param>
<key>_enabled</key> <key>_enabled</key>
@ -2181,6 +2181,10 @@
<key>samp_rate</key> <key>samp_rate</key>
<value>baseband_rate</value> <value>baseband_rate</value>
</param> </param>
<param>
<key>update_period</key>
<value>0.4</value>
</param>
</block> </block>
<block> <block>
<key>multirds_rds_decoder</key> <key>multirds_rds_decoder</key>

10
grc/multirds_pilot_quality.xml

@ -4,7 +4,7 @@
<key>multirds_pilot_quality</key> <key>multirds_pilot_quality</key>
<category>[multirds]</category> <category>[multirds]</category>
<import>import multirds</import> <import>import multirds</import>
<make>multirds.pilot_quality($debug, $samp_rate, $fft_len, $carrier_freq,$gap_width, $msg_adr)</make> <make>multirds.pilot_quality($debug, $samp_rate, $fft_len, $carrier_freq,$gap_width, $msg_adr,$update_period)</make>
<!-- Make one 'param' node for every Parameter you want settable from the GUI. <!-- Make one 'param' node for every Parameter you want settable from the GUI.
Sub-nodes: Sub-nodes:
* name * name
@ -35,7 +35,13 @@
<key>gap_width</key> <key>gap_width</key>
<value>4e3</value> <value>4e3</value>
<type>float</type> <type>float</type>
</param> </param>
<param>
<name>update_period</name>
<key>update_period</key>
<value>0.2</value>
<type>float</type>
</param>
<param> <param>
<name>samp_rate</name> <name>samp_rate</name>
<key>samp_rate</key> <key>samp_rate</key>

5
python/pilot_quality.py

@ -28,7 +28,7 @@ class pilot_quality(gr.sync_block):
""" """
docstring for block pilot_quality docstring for block pilot_quality
""" """
def __init__(self, debug,samp_rate,fft_len,carrier_freq,gap_width,msg_adr): def __init__(self, debug,samp_rate,fft_len,carrier_freq,gap_width,msg_adr,update_period):
gr.sync_block.__init__(self, gr.sync_block.__init__(self,
name="pilot_quality", name="pilot_quality",
in_sig=[(np.float32,fft_len)], in_sig=[(np.float32,fft_len)],
@ -36,6 +36,7 @@ class pilot_quality(gr.sync_block):
#self.carrier_width=1 #self.carrier_width=1
self.debug=debug self.debug=debug
self.msg_adr=msg_adr self.msg_adr=msg_adr
self.update_period=update_period
self.message_port_register_out(pmt.intern('out')) self.message_port_register_out(pmt.intern('out'))
self.carrier_index=int(carrier_freq*fft_len/float(samp_rate)) self.carrier_index=int(carrier_freq*fft_len/float(samp_rate))
self.lowbound_index=int((carrier_freq-gap_width)*fft_len/float(samp_rate)) self.lowbound_index=int((carrier_freq-gap_width)*fft_len/float(samp_rate))
@ -53,7 +54,7 @@ class pilot_quality(gr.sync_block):
self.strength_list.append(strength) self.strength_list.append(strength)
#if self.debug: #if self.debug:
# print("i:%i,strength: %f,carrier: %f, around:%f"%(i,strength,carrier,surrounding)) # print("i:%i,strength: %f,carrier: %f, around:%f"%(i,strength,carrier,surrounding))
if time.time()-self.send_timer>0.1:#10 times per second if time.time()-self.send_timer>self.update_period:
self.send_timer=time.time() self.send_timer=time.time()
strength_mean=int(np.mean(self.strength_list)) strength_mean=int(np.mean(self.strength_list))
self.strength_list=[] self.strength_list=[]

9
python/rds_parser_table_qt.py

@ -89,7 +89,7 @@ class rds_parser_table_qt(gr.sync_block):#START
self.decoder_frequencies={} self.decoder_frequencies={}
self.decoders=[] self.decoders=[]
for i in range(nPorts): for i in range(nPorts):
self.decoders.append({'synced':False,'freq':None,'PI':""}) self.decoders.append({'synced':False,'freq':None,'PI':"",'pilot_strength':0})
#self.decoder_synced={} #self.decoder_synced={}
#self.colorder=['ID','freq','name','PTY','AF','time','text','quality','buttons'] #self.colorder=['ID','freq','name','PTY','AF','time','text','quality','buttons']
self.colorder=['ID','freq','name','buttons','PTY','AF','time','text','quality','pilot_strength','RT+'] self.colorder=['ID','freq','name','buttons','PTY','AF','time','text','quality','pilot_strength','RT+']
@ -183,12 +183,13 @@ class rds_parser_table_qt(gr.sync_block):#START
message_string="decoder frequencies:" message_string="decoder frequencies:"
for num in self.decoder_frequencies: for num in self.decoder_frequencies:
freq=self.decoder_frequencies[num] freq=self.decoder_frequencies[num]
pilot_strength=self.decoders[num]['pilot_strength']
if self.decoders[num]['synced']: if self.decoders[num]['synced']:
message_string+="<span style='color:green'>&emsp; %i:%0.1fM</span>"% (num,freq/1e6) message_string+="<span style='color:green'>&emsp; %i:%0.1fM (%i dB)</span>"% (num,freq/1e6,pilot_strength)
#print("'color:green'>%i:%0.1fM</span>"% (num,freq/1e6)) #print("'color:green'>%i:%0.1fM</span>"% (num,freq/1e6))
else:#elif self.decoders[num]['synced']==False: else:#elif self.decoders[num]['synced']==False:
#print("'color:red'>%i:%0.1fM</span>"% (num,freq/1e6)) #print("'color:red'>%i:%0.1fM</span>"% (num,freq/1e6))
message_string+="<span style='color:red'>&emsp; %i:%0.1fM</span>"% (num,freq/1e6) message_string+="<span style='color:red'>&emsp; %i:%0.1fM (%i dB)</span>"% (num,freq/1e6,pilot_strength)
message_string+="&emsp; tuned frequency:%0.1fM"%(self.tuning_frequency/1e6) message_string+="&emsp; tuned frequency:%0.1fM"%(self.tuning_frequency/1e6)
self.signals.DataUpdateEvent.emit({'decoder_frequencies':message_string}) self.signals.DataUpdateEvent.emit({'decoder_frequencies':message_string})
#print(message_string) #print(message_string)
@ -262,6 +263,8 @@ class rds_parser_table_qt(gr.sync_block):#START
self.signals.DataUpdateEvent.emit({'PI':PI,'wrong_block_ratio':wrong_block_ratio,'dots':dots}) self.signals.DataUpdateEvent.emit({'PI':PI,'wrong_block_ratio':wrong_block_ratio,'dots':dots})
elif pmt.to_long(pmt.car(msg))==3L: #carrier quality message elif pmt.to_long(pmt.car(msg))==3L: #carrier quality message
pilot_strength=pmt.to_long(pmt.cdr(msg)) pilot_strength=pmt.to_long(pmt.cdr(msg))
self.decoders[port]['pilot_strength']=pilot_strength
self.update_freq()
PI=self.decoders[port]['PI'] PI=self.decoders[port]['PI']
if self.RDS_data.has_key(PI): if self.RDS_data.has_key(PI):
self.signals.DataUpdateEvent.emit({'PI':PI,'pilot_strength':pilot_strength}) self.signals.DataUpdateEvent.emit({'PI':PI,'pilot_strength':pilot_strength})

Loading…
Cancel
Save