Piotr Krysik | ff5d81d | 2017-09-27 21:56:42 +0200 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- |
| 2 | ################################################## |
| 3 | # GNU Radio Python Flow Graph |
| 4 | # Title: GMSK Modulator for GSM |
| 5 | # Author: Piotr Krysik |
| 6 | # Description: GMSK Modulator for GSM |
| 7 | # Generated: Wed Sep 20 21:12:04 2017 |
| 8 | ################################################## |
| 9 | |
| 10 | from gnuradio import blocks |
| 11 | from gnuradio import digital |
| 12 | from gnuradio import gr |
| 13 | from gnuradio.analog import cpm |
| 14 | from gnuradio.filter import firdes |
| 15 | import grgsm |
| 16 | |
Vasil Velichkov | 46c90be | 2019-09-02 04:06:41 +0300 | [diff] [blame] | 17 | class gsm_gmsk_mod(gr.hier_block2): |
Piotr Krysik | ff5d81d | 2017-09-27 21:56:42 +0200 | [diff] [blame] | 18 | |
| 19 | def __init__(self, BT=4, pulse_duration=4, sps=4): |
| 20 | gr.hier_block2.__init__( |
| 21 | self, "GMSK Modulator for GSM", |
| 22 | gr.io_signature(1, 1, gr.sizeof_char*1), |
| 23 | gr.io_signature(1, 1, gr.sizeof_gr_complex*1), |
| 24 | ) |
| 25 | |
| 26 | ################################################## |
| 27 | # Parameters |
| 28 | ################################################## |
| 29 | self.BT = BT |
| 30 | self.pulse_duration = pulse_duration |
| 31 | self.sps = sps |
| 32 | |
| 33 | ################################################## |
| 34 | # Blocks |
| 35 | ################################################## |
| 36 | self.digital_gmskmod_bc_0 = digital.gmskmod_bc(sps, pulse_duration, BT) |
| 37 | self.digital_diff_decoder_bb_0 = digital.diff_decoder_bb(2) |
| 38 | self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bf(([1,-1]), 1) |
| 39 | self.blocks_tagged_stream_multiply_length_0 = blocks.tagged_stream_multiply_length(gr.sizeof_gr_complex*1, "packet_len", sps) |
| 40 | self.blocks_float_to_char_0 = blocks.float_to_char(1, 1) |
| 41 | |
| 42 | ################################################## |
| 43 | # Connections |
| 44 | ################################################## |
| 45 | self.connect((self.blocks_float_to_char_0, 0), (self.digital_gmskmod_bc_0, 0)) |
| 46 | self.connect((self.blocks_tagged_stream_multiply_length_0, 0), (self, 0)) |
| 47 | self.connect((self.digital_chunks_to_symbols_xx_0, 0), (self.blocks_float_to_char_0, 0)) |
| 48 | self.connect((self.digital_diff_decoder_bb_0, 0), (self.digital_chunks_to_symbols_xx_0, 0)) |
| 49 | self.connect((self.digital_gmskmod_bc_0, 0), (self.blocks_tagged_stream_multiply_length_0, 0)) |
| 50 | self.connect((self, 0), (self.digital_diff_decoder_bb_0, 0)) |
| 51 | |
| 52 | def get_BT(self): |
| 53 | return self.BT |
| 54 | |
| 55 | def set_BT(self, BT): |
| 56 | self.BT = BT |
| 57 | |
| 58 | def get_pulse_duration(self): |
| 59 | return self.pulse_duration |
| 60 | |
| 61 | def set_pulse_duration(self, pulse_duration): |
| 62 | self.pulse_duration = pulse_duration |
| 63 | |
| 64 | def get_sps(self): |
| 65 | return self.sps |
| 66 | |
| 67 | def set_sps(self, sps): |
| 68 | self.sps = sps |
| 69 | self.blocks_tagged_stream_multiply_length_0.set_scalar(self.sps) |