From bcf44690b9f9bce5cfaefcf383620f709521ad24 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 19 Mar 2012 15:09:48 -0400 Subject: digital: in narrowband examples, added the ability to change the channel bandwidth. When the frequency factor is off significantly, the signal can be outside the range of the channel filter. This allows a user to open up the filter to acquire these signals. --- gr-digital/examples/narrowband/receive_path.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'gr-digital') diff --git a/gr-digital/examples/narrowband/receive_path.py b/gr-digital/examples/narrowband/receive_path.py index 1c5e58963..1f9310506 100644 --- a/gr-digital/examples/narrowband/receive_path.py +++ b/gr-digital/examples/narrowband/receive_path.py @@ -45,17 +45,25 @@ class receive_path(gr.hier_block2): self._rx_callback = rx_callback # this callback is fired when a packet arrives self._demod_class = demod_class # the demodulator_class we're using + self._chbw_factor = options.chbw_factor # channel filter bandwidth factor + # Get demod_kwargs demod_kwargs = self._demod_class.extract_kwargs_from_options(options) # Build the demodulator self.demodulator = self._demod_class(**demod_kwargs) + + # Make sure the channel BW factor is between 1 and sps/2 + # or the filter won't work. + if(self._chbw_factor < 1.0 or self._chbw_factor > self.samples_per_symbol()/2): + sys.stderr.write("Channel bandwidth factor ({0}) must be within the range [1.0, {1}].\n".format(self._chbw_factor, self.samples_per_symbol()/2)) + sys.exit(1) # Design filter to get actual channel we want sw_decim = 1 chan_coeffs = gr.firdes.low_pass (1.0, # gain sw_decim * self.samples_per_symbol(), # sampling rate - 1.0, # midpoint of trans. band + self._chbw_factor, # midpoint of trans. band 0.5, # width of trans. band gr.firdes.WIN_HANN) # filter type self.channel_filter = gr.fft_filter_ccc(sw_decim, chan_coeffs) @@ -129,6 +137,8 @@ class receive_path(gr.hier_block2): help="set samples/symbol [default=%default]") expert.add_option("", "--log", action="store_true", default=False, help="Log all parts of flow graph to files (CAUTION: lots of data)") + expert.add_option("", "--chbw-factor", type="float", default=1.0, + help="Channel bandwidth = chbw_factor x signal bandwidth [defaut=%default]") # Make a static method to call before instantiation add_options = staticmethod(add_options) -- cgit