aboutsummaryrefslogtreecommitdiffstats
path: root/python/transmitter
diff options
context:
space:
mode:
authorPiotr Krysik <ptrkrysik@gmail.com>2017-09-27 21:56:42 +0200
committerPiotr Krysik <ptrkrysik@gmail.com>2017-09-27 21:56:42 +0200
commitff5d81de50c167b1c5f71c13a779b2988326cf67 (patch)
tree14884ac2bfc66ad8895914cb3ad8c07c8b41c62c /python/transmitter
parentebf888070946ee9ac5f1fce8abc1cc989fccc6b0 (diff)
Added gmsk modulator block for gsm
Diffstat (limited to 'python/transmitter')
-rw-r--r--python/transmitter/gsm_gmsk_mod.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/python/transmitter/gsm_gmsk_mod.py b/python/transmitter/gsm_gmsk_mod.py
new file mode 100644
index 0000000..e8ecc7a
--- /dev/null
+++ b/python/transmitter/gsm_gmsk_mod.py
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+##################################################
+# GNU Radio Python Flow Graph
+# Title: GMSK Modulator for GSM
+# Author: Piotr Krysik
+# Description: GMSK Modulator for GSM
+# Generated: Wed Sep 20 21:12:04 2017
+##################################################
+
+from gnuradio import blocks
+from gnuradio import digital
+from gnuradio import gr
+from gnuradio.analog import cpm
+from gnuradio.filter import firdes
+import grgsm
+
+class gsm_gmsk_mod(grgsm.hier_block):
+
+ def __init__(self, BT=4, pulse_duration=4, sps=4):
+ gr.hier_block2.__init__(
+ self, "GMSK Modulator for GSM",
+ gr.io_signature(1, 1, gr.sizeof_char*1),
+ gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
+ )
+
+ ##################################################
+ # Parameters
+ ##################################################
+ self.BT = BT
+ self.pulse_duration = pulse_duration
+ self.sps = sps
+
+ ##################################################
+ # Blocks
+ ##################################################
+ self.digital_gmskmod_bc_0 = digital.gmskmod_bc(sps, pulse_duration, BT)
+ self.digital_diff_decoder_bb_0 = digital.diff_decoder_bb(2)
+ self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bf(([1,-1]), 1)
+ self.blocks_tagged_stream_multiply_length_0 = blocks.tagged_stream_multiply_length(gr.sizeof_gr_complex*1, "packet_len", sps)
+ self.blocks_float_to_char_0 = blocks.float_to_char(1, 1)
+
+ ##################################################
+ # Connections
+ ##################################################
+ self.connect((self.blocks_float_to_char_0, 0), (self.digital_gmskmod_bc_0, 0))
+ self.connect((self.blocks_tagged_stream_multiply_length_0, 0), (self, 0))
+ self.connect((self.digital_chunks_to_symbols_xx_0, 0), (self.blocks_float_to_char_0, 0))
+ self.connect((self.digital_diff_decoder_bb_0, 0), (self.digital_chunks_to_symbols_xx_0, 0))
+ self.connect((self.digital_gmskmod_bc_0, 0), (self.blocks_tagged_stream_multiply_length_0, 0))
+ self.connect((self, 0), (self.digital_diff_decoder_bb_0, 0))
+
+ def get_BT(self):
+ return self.BT
+
+ def set_BT(self, BT):
+ self.BT = BT
+
+ def get_pulse_duration(self):
+ return self.pulse_duration
+
+ def set_pulse_duration(self, pulse_duration):
+ self.pulse_duration = pulse_duration
+
+ def get_sps(self):
+ return self.sps
+
+ def set_sps(self, sps):
+ self.sps = sps
+ self.blocks_tagged_stream_multiply_length_0.set_scalar(self.sps)