summaryrefslogtreecommitdiff
path: root/gr-digital/python/digital
diff options
context:
space:
mode:
authorSolomon Tan <solomonbstoner@yahoo.com.au>2021-07-21 07:18:52 +0800
committermormj <34754695+mormj@users.noreply.github.com>2021-07-21 09:49:55 -0400
commit9c388da6571ca7605b78f519c23778b0d604abfc (patch)
treecb006a6b40a35a7eaa032f4fb3a1fbf5e93395e8 /gr-digital/python/digital
parent52b05f80176eb108c62a517e27e4ae6471d5e2b8 (diff)
gfsk: Make packed_to_unpacked optional
Provide the option to not use the packed_to_unpacked block in the gfsk mod hier block so that the latter can be used to modulate non-byte-aligned bit stream. The option enables packed_to_unpacked by default for backward compatibility. Signed-off-by: Solomon Tan <solomonbstoner@yahoo.com.au>
Diffstat (limited to 'gr-digital/python/digital')
-rw-r--r--gr-digital/python/digital/gfsk.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/gr-digital/python/digital/gfsk.py b/gr-digital/python/digital/gfsk.py
index 516c80375d..befc550717 100644
--- a/gr-digital/python/digital/gfsk.py
+++ b/gr-digital/python/digital/gfsk.py
@@ -28,6 +28,7 @@ _def_sensitivity = 1
_def_bt = 0.35
_def_verbose = False
_def_log = False
+_def_do_unpack = True
_def_gain_mu = None
_def_mu = 0.5
@@ -50,7 +51,8 @@ class gfsk_mod(gr.hier_block2):
sensitivity=_def_sensitivity,
bt=_def_bt,
verbose=_def_verbose,
- log=_def_log):
+ log=_def_log,
+ do_unpack=_def_do_unpack):
"""
Hierarchical block for Gaussian Frequency Shift Key (GFSK)
modulation.
@@ -63,6 +65,7 @@ class gfsk_mod(gr.hier_block2):
bt: Gaussian filter bandwidth * symbol time (float)
verbose: Print information about modulator? (bool)
debug: Print modualtion data to files? (bool)
+ unpack: Unpack input byte stream? (bool)
"""
gr.hier_block2.__init__(self, "gfsk_mod",
@@ -80,9 +83,10 @@ class gfsk_mod(gr.hier_block2):
ntaps = 4 * samples_per_symbol # up to 3 bits in filter at once
#sensitivity = (pi / 2) / samples_per_symbol # phase change per bit = pi / 2
+
+
# Turn it into NRZ data.
#self.nrz = digital.bytes_to_syms()
- self.unpack = blocks.packed_to_unpacked_bb(1, gr.GR_MSB_FIRST)
self.nrz = digital.chunks_to_symbols_bf([-1, 1])
# Form Gaussian filter
@@ -111,7 +115,11 @@ class gfsk_mod(gr.hier_block2):
self._setup_logging()
# Connect & Initialize base class
- self.connect(self, self.unpack, self.nrz, self.gaussian_filter, self.fmmod, self.amp, self)
+ if do_unpack:
+ self.unpack = blocks.packed_to_unpacked_bb(1, gr.GR_MSB_FIRST)
+ self.connect(self, self.unpack, self.nrz, self.gaussian_filter, self.fmmod, self.amp, self)
+ else:
+ self.connect(self, self.nrz, self.gaussian_filter, self.fmmod, self.amp, self)
def samples_per_symbol(self):
return self._samples_per_symbol