Added new configurable block for demapping of control channels.

This commit is contained in:
ptrkrysik 2014-11-19 11:32:05 +01:00
parent 381253a1d2
commit 6dded65ede
12 changed files with 1354 additions and 515 deletions

View File

@ -1,55 +1,32 @@
<?xml version='1.0' encoding='ASCII'?>
<?grc format='1' created='3.7.6'?>
<flow_graph>
<timestamp>Thu Nov 6 14:42:26 2014</timestamp>
<timestamp>Wed Aug 13 19:03:06 2014</timestamp>
<block>
<key>options</key>
<key>parameter</key>
<param>
<key>id</key>
<value>gsm_receiver_file</value>
<value>input_file_name</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
<key>label</key>
<value>input_file_name</value>
</param>
<param>
<key>author</key>
<value></value>
<key>value</key>
<value>input.cfile</value>
</param>
<param>
<key>description</key>
<value></value>
<key>type</key>
<value>string</value>
</param>
<param>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>run</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
<key>short_id</key>
<value>i</value>
</param>
<param>
<key>alias</key>
@ -57,7 +34,196 @@
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
<value>(184, -5)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>AGCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>4</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(808, -5)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>PCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(872, -5)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>RACH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>3</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(744, -5)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>SDCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>6</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(936, -5)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>CCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>2</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(680, -5)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>BCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(616, -5)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>CHANNEL_UNKNOWN</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>0</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(480, -5)</value>
</param>
<param>
<key>_rotation</key>
@ -96,7 +262,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(311, 10)</value>
<value>(296, -5)</value>
</param>
<param>
<key>_rotation</key>
@ -135,7 +301,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(656, 8)</value>
<value>(376, -5)</value>
</param>
<param>
<key>_rotation</key>
@ -143,155 +309,62 @@
</param>
</block>
<block>
<key>gsm_message_printer</key>
<key>options</key>
<param>
<key>id</key>
<value>gsm_message_printer_0</value>
<value>gsm_receiver_file</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<key>title</key>
<value></value>
</param>
<param>
<key>affinity</key>
<key>author</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1130, 196)</value>
<key>description</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
<value>gsm_control_channels_decoder_0</value>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>_enabled</key>
<key>generate_options</key>
<value>no_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>run</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(908, 196)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_socket_pdu</key>
<param>
<key>id</key>
<value>blocks_socket_pdu_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>"UDP_CLIENT"</value>
</param>
<param>
<key>host</key>
<value>127.0.0.1</value>
</param>
<param>
<key>port</key>
<value>4729</value>
</param>
<param>
<key>mtu</key>
<value>10000</value>
</param>
<param>
<key>tcp_no_delay</key>
<value>False</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1138, 278)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_get_bcch_or_ccch_bursts</key>
<param>
<key>id</key>
<value>gsm_get_bcch_or_ccch_bursts_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>d_fn51_start</key>
<value>2</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(637, 192)</value>
<value>(0, -5)</value>
</param>
<param>
<key>_rotation</key>
@ -334,64 +407,13 @@
</param>
<param>
<key>_coordinate</key>
<value>(261, 307)</value>
<value>(240, 219)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<block>
<key>gsm_receiver</key>
<param>
<key>id</key>
<value>gsm_receiver_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>osr</key>
<value>4</value>
</param>
<param>
<key>cell_allocation</key>
<value>[0]</value>
</param>
<param>
<key>tseq_nums</key>
<value>[]</value>
</param>
<param>
<key>num_streams</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(414, 196)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_input</key>
<param>
@ -406,14 +428,14 @@
<key>ppm</key>
<value>0</value>
</param>
<param>
<key>fc</key>
<value>fc</value>
</param>
<param>
<key>osr</key>
<value>4</value>
</param>
<param>
<key>fc</key>
<value>fc</value>
</param>
<param>
<key>samp_rate_in</key>
<value>samp_rate</value>
@ -436,46 +458,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(226, 213)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>parameter</key>
<param>
<key>id</key>
<value>input_file_name</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value>input_file_name</value>
</param>
<param>
<key>value</key>
<value>input.cfile</value>
</param>
<param>
<key>type</key>
<value>string</value>
</param>
<param>
<key>short_id</key>
<value>i</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(193, 11)</value>
<value>(176, 128)</value>
</param>
<param>
<key>_rotation</key>
@ -526,7 +509,163 @@
</param>
<param>
<key>_coordinate</key>
<value>(15, 201)</value>
<value>(-8, 115)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_receiver</key>
<param>
<key>id</key>
<value>gsm_receiver_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>osr</key>
<value>4</value>
</param>
<param>
<key>cell_allocation</key>
<value>[0]</value>
</param>
<param>
<key>tseq_nums</key>
<value>[]</value>
</param>
<param>
<key>num_streams</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(352, 112)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_universal_ctrl_chans_demapper</key>
<param>
<key>id</key>
<value>gsm_universal_ctrl_chans_demapper_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>starts_fn_mod51</key>
<value>[2,6,12,16,22,26,32,36,42,46]</value>
</param>
<param>
<key>channel_types</key>
<value>[BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(536, 112)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
<value>gsm_control_channels_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(784, 112)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_message_printer</key>
<param>
<key>id</key>
<value>gsm_message_printer_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1000, 112)</value>
</param>
<param>
<key>_rotation</key>
@ -539,18 +678,6 @@
<source_key>measurements</source_key>
<sink_key>measurements</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_0</source_block_id>
<sink_block_id>gsm_get_bcch_or_ccch_bursts_0</sink_block_id>
<source_key>C0</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
<sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_control_channels_decoder_0</source_block_id>
<sink_block_id>gsm_message_printer_0</sink_block_id>
@ -558,17 +685,23 @@
<sink_key>msgs</sink_key>
</connection>
<connection>
<source_block_id>gsm_control_channels_decoder_0</source_block_id>
<sink_block_id>blocks_socket_pdu_0</sink_block_id>
<source_key>msgs</source_key>
<sink_key>pdus</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>gsm_input_0</sink_block_id>
<source_block_id>gsm_input_0</source_block_id>
<sink_block_id>gsm_receiver_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>gsm_universal_ctrl_chans_demapper_0</source_block_id>
<sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_0</source_block_id>
<sink_block_id>gsm_universal_ctrl_chans_demapper_0</sink_block_id>
<source_key>C0</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_clock_offset_control_0</source_block_id>
<sink_block_id>gsm_input_0</sink_block_id>
@ -576,8 +709,8 @@
<sink_key>ppm_in</sink_key>
</connection>
<connection>
<source_block_id>gsm_input_0</source_block_id>
<sink_block_id>gsm_receiver_0</sink_block_id>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>gsm_input_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>

View File

@ -1,4 +1,5 @@
<?xml version='1.0' encoding='ASCII'?>
<?grc format='1' created='3.7.6'?>
<flow_graph>
<timestamp>Thu Nov 6 14:43:22 2014</timestamp>
<block>
@ -64,6 +65,114 @@
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>AGCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>4</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(944, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>RACH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>3</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(880, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>SDCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>6</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1072, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>PCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1008, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
@ -91,6 +200,87 @@
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>CCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>2</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(816, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>CHANNEL_UNKNOWN</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>0</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(616, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>BCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(752, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_message_printer</key>
<param>
@ -118,80 +308,6 @@
<value>0</value>
</param>
</block>
<block>
<key>gsm_get_bcch_or_ccch_bursts</key>
<param>
<key>id</key>
<value>gsm_get_bcch_or_ccch_bursts_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>d_fn51_start</key>
<value>2</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(650, 226)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
<value>gsm_control_channels_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(910, 230)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_socket_pdu</key>
<param>
@ -697,6 +813,10 @@
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>freqhalf</key>
<value>True</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
@ -745,6 +865,22 @@
<key>showports</key>
<value>True</value>
</param>
<param>
<key>tr_mode</key>
<value>qtgui.TRIG_MODE_FREE</value>
</param>
<param>
<key>tr_level</key>
<value>0.0</value>
</param>
<param>
<key>tr_chan</key>
<value>0</value>
</param>
<param>
<key>tr_tag</key>
<value>""</value>
</param>
<param>
<key>label1</key>
<value></value>
@ -973,6 +1109,92 @@
<value>180</value>
</param>
</block>
<block>
<key>gsm_input</key>
<param>
<key>id</key>
<value>gsm_input_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>ppm</key>
<value>0</value>
</param>
<param>
<key>fc</key>
<value>fc</value>
</param>
<param>
<key>osr</key>
<value>4</value>
</param>
<param>
<key>samp_rate_in</key>
<value>samp_rate</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(268, 247)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
<value>gsm_control_channels_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(910, 230)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_receiver</key>
<param>
@ -1025,30 +1247,22 @@
</param>
</block>
<block>
<key>gsm_input</key>
<key>gsm_universal_ctrl_chans_demapper</key>
<param>
<key>id</key>
<value>gsm_input_0</value>
<value>gsm_universal_ctrl_chans_demapper_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>ppm</key>
<value>0</value>
<key>starts_fn_mod51</key>
<value>[2,6,12,16,22,26,32,36,42,46]</value>
</param>
<param>
<key>fc</key>
<value>fc</value>
</param>
<param>
<key>osr</key>
<value>4</value>
</param>
<param>
<key>samp_rate_in</key>
<value>samp_rate</value>
<key>channel_types</key>
<value>[BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]</value>
</param>
<param>
<key>alias</key>
@ -1068,7 +1282,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(268, 247)</value>
<value>(648, 232)</value>
</param>
<param>
<key>_rotation</key>
@ -1081,12 +1295,6 @@
<source_key>msgs</source_key>
<sink_key>msgs</sink_key>
</connection>
<connection>
<source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
<sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_control_channels_decoder_0</source_block_id>
<sink_block_id>blocks_socket_pdu_0</sink_block_id>
@ -1117,16 +1325,22 @@
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_0</source_block_id>
<sink_block_id>gsm_get_bcch_or_ccch_bursts_0</sink_block_id>
<source_key>C0</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_0</source_block_id>
<sink_block_id>gsm_clock_offset_control_0</sink_block_id>
<source_key>measurements</source_key>
<sink_key>measurements</sink_key>
</connection>
<connection>
<source_block_id>gsm_universal_ctrl_chans_demapper_0</source_block_id>
<sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_0</source_block_id>
<sink_block_id>gsm_universal_ctrl_chans_demapper_0</sink_block_id>
<source_key>C0</source_key>
<sink_key>bursts</sink_key>
</connection>
</flow_graph>

View File

@ -1,4 +1,5 @@
<?xml version='1.0' encoding='ASCII'?>
<?grc format='1' created='3.7.6'?>
<flow_graph>
<timestamp>Thu Nov 6 14:43:18 2014</timestamp>
<block>
@ -64,6 +65,195 @@
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>CHANNEL_UNKNOWN</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>0</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(600, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>CCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>2</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(800, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>AGCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>4</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(928, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>BCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(736, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>PCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(992, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>SDCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>6</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1056, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>RACH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>3</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(864, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
@ -268,45 +458,6 @@
<value>0</value>
</param>
</block>
<block>
<key>gsm_get_bcch_or_ccch_bursts</key>
<param>
<key>id</key>
<value>gsm_get_bcch_or_ccch_bursts_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>d_fn51_start</key>
<value>2</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(674, 268)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_message_printer</key>
<param>
@ -334,41 +485,6 @@
<value>0</value>
</param>
</block>
<block>
<key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
<value>gsm_control_channels_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(916, 272)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_socket_pdu</key>
<param>
@ -446,6 +562,10 @@
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>freqhalf</key>
<value>True</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
@ -494,6 +614,22 @@
<key>showports</key>
<value>True</value>
</param>
<param>
<key>tr_mode</key>
<value>qtgui.TRIG_MODE_FREE</value>
</param>
<param>
<key>tr_level</key>
<value>0.0</value>
</param>
<param>
<key>tr_chan</key>
<value>0</value>
</param>
<param>
<key>tr_tag</key>
<value>""</value>
</param>
<param>
<key>label1</key>
<value></value>
@ -1366,57 +1502,6 @@
<value>0</value>
</param>
</block>
<block>
<key>gsm_receiver</key>
<param>
<key>id</key>
<value>gsm_receiver_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>osr</key>
<value>4</value>
</param>
<param>
<key>cell_allocation</key>
<value>[0]</value>
</param>
<param>
<key>tseq_nums</key>
<value>[]</value>
</param>
<param>
<key>num_streams</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(434, 272)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_input</key>
<param>
@ -1468,18 +1553,141 @@
<value>0</value>
</param>
</block>
<block>
<key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
<value>gsm_control_channels_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(916, 272)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_universal_ctrl_chans_demapper</key>
<param>
<key>id</key>
<value>gsm_universal_ctrl_chans_demapper_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>starts_fn_mod51</key>
<value>[2,6,12,16,22,26,32,36,42,46]</value>
</param>
<param>
<key>channel_types</key>
<value>[BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(648, 272)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>gsm_receiver</key>
<param>
<key>id</key>
<value>gsm_receiver_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>osr</key>
<value>4</value>
</param>
<param>
<key>cell_allocation</key>
<value>[0]</value>
</param>
<param>
<key>tseq_nums</key>
<value>[]</value>
</param>
<param>
<key>num_streams</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(434, 272)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>uhd_usrp_source_0</source_block_id>
<sink_block_id>qtgui_freq_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
<sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_control_channels_decoder_0</source_block_id>
<sink_block_id>gsm_message_printer_0</sink_block_id>
@ -1492,12 +1700,6 @@
<source_key>msgs</source_key>
<sink_key>pdus</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_0</source_block_id>
<sink_block_id>gsm_get_bcch_or_ccch_bursts_0</sink_block_id>
<source_key>C0</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>uhd_usrp_source_0</source_block_id>
<sink_block_id>gsm_input_0</sink_block_id>
@ -1510,4 +1712,16 @@
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>gsm_universal_ctrl_chans_demapper_0</source_block_id>
<sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_0</source_block_id>
<sink_block_id>gsm_universal_ctrl_chans_demapper_0</sink_block_id>
<source_key>C0</source_key>
<sink_key>bursts</sink_key>
</connection>
</flow_graph>

View File

@ -25,6 +25,7 @@ install(FILES
receiver/gsm_sch_detector.xml
receiver/gsm_fcch_detector.xml
demapping/gsm_get_bcch_or_ccch_bursts.xml
demapping/gsm_universal_ctrl_chans_demapper.xml
decoding/gsm_control_channels_decoder.xml
misc_utils/gsm_extract_system_info.xml
misc_utils/gsm_controlled_rotator_cc.xml

View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<block>
<name>Universal ctrl chans demapper</name>
<key>gsm_universal_ctrl_chans_demapper</key>
<import>import gsm</import>
<make>gsm.universal_ctrl_chans_demapper($starts_fn_mod51, $channel_types)</make>
<param>
<name>starts_fn_mod51</name>
<key>starts_fn_mod51</key>
<value>[2,6,12,16,22,26,32,36,42,46]</value>
<type>int_vector</type>
<hide>part</hide>
</param>
<param>
<name>channel_types</name>
<key>channel_types</key>
<value>[1,2,2,2,2,2,2,2,2,2]</value>
<type>int_vector</type>
<hide>part</hide>
</param>
<sink>
<name>bursts</name>
<type>message</type>
</sink>
<source>
<name>bursts</name>
<type>message</type>
</source>
</block>

View File

@ -22,6 +22,7 @@
<cat>
<name>Logical channels demapping</name>
<block>gsm_get_bcch_or_ccch_bursts</block>
<block>gsm_universal_ctrl_chans_demapper</block>
</cat>
<cat>
<name>Decoding</name>

View File

@ -21,5 +21,6 @@
# Install public header files
########################################################################
install(FILES
universal_ctrl_chans_demapper.h
get_bcch_or_ccch_bursts.h DESTINATION include/gsm/demapping
)

View File

@ -0,0 +1,56 @@
/* -*- c++ -*- */
/*
* Copyright 2014 <+YOU OR YOUR COMPANY+>.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
#ifndef INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_H
#define INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_H
#include <gsm/api.h>
#include <gnuradio/block.h>
namespace gr {
namespace gsm {
/*!
* \brief <+description of block+>
* \ingroup gsm
*
*/
class GSM_API universal_ctrl_chans_demapper : virtual public gr::block
{
public:
typedef boost::shared_ptr<universal_ctrl_chans_demapper> sptr;
/*!
* \brief Return a shared_ptr to a new instance of gsm::universal_ctrl_chans_demapper.
*
* To avoid accidental use of raw pointers, gsm::universal_ctrl_chans_demapper's
* constructor is in a private implementation
* class. gsm::universal_ctrl_chans_demapper::make is the public interface for
* creating new instances.
*/
static sptr make(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types);
};
} // namespace gsm
} // namespace gr
#endif /* INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_H */

View File

@ -31,6 +31,7 @@ list(APPEND gsm_sources
receiver/sch.c
misc_utils/bursts_printer_impl.cc
misc_utils/extract_system_info_impl.cc
demapping/universal_ctrl_chans_demapper_impl.cc
demapping/get_bcch_or_ccch_bursts_impl.cc
decoding/control_channels_decoder_impl.cc
decoding/cch.c

View File

@ -0,0 +1,135 @@
/* -*- c++ -*- */
/*
* Copyright 2014 <+YOU OR YOUR COMPANY+>.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gnuradio/io_signature.h>
#include "universal_ctrl_chans_demapper_impl.h"
#include <gsm/gsmtap.h>
namespace gr {
namespace gsm {
universal_ctrl_chans_demapper::sptr
universal_ctrl_chans_demapper::make(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types)
{
return gnuradio::get_initial_sptr
(new universal_ctrl_chans_demapper_impl(starts_fn_mod51, channel_types));
}
/*
* The private constructor
*/
universal_ctrl_chans_demapper_impl::universal_ctrl_chans_demapper_impl(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types)
: gr::block("universal_ctrl_chans_demapper",
gr::io_signature::make(0, 0, 0),
gr::io_signature::make(0, 0, 0))
{
d_timeslot=0;
for(int ii=0; ii<51; ii++)
{
d_starts_fn_mod51[ii]=0;
d_channel_types[ii]=0;
}
std::vector<int>::const_iterator s;
std::vector<int>::const_iterator ch_type;
for(s=starts_fn_mod51.begin(), ch_type=channel_types.begin();s != starts_fn_mod51.end(); s++)
{
if((*s > 0) and (*s < (51-4)))
{
for(int ii=0; ii<4; ii++){
d_starts_fn_mod51[*s+ii] = *s;
if(ch_type!=channel_types.end())
{
d_channel_types[*s+ii] = *ch_type;
}
}
if(ch_type!=channel_types.end())
{
ch_type++;
}
}
}
message_port_register_in(pmt::mp("bursts"));
set_msg_handler(pmt::mp("bursts"), boost::bind(&universal_ctrl_chans_demapper_impl::filter_ctrl_chans, this, _1));
message_port_register_out(pmt::mp("bursts"));
}
/*
* Our virtual destructor.
*/
universal_ctrl_chans_demapper_impl::~universal_ctrl_chans_demapper_impl()
{
}
void universal_ctrl_chans_demapper_impl::filter_ctrl_chans(pmt::pmt_t msg)
{
pmt::pmt_t header_blob = pmt::car(msg);
pmt::pmt_t content = pmt::cdr(msg);
gsmtap_hdr * header = (gsmtap_hdr *)pmt::blob_data(header_blob);
uint32_t frame_nr = be32toh(header->frame_number);
uint32_t fn_mod51 = frame_nr % 51;
uint32_t fn51_start = d_starts_fn_mod51[fn_mod51];
uint32_t fn51_stop = fn51_start + 3;
uint32_t ch_type = d_channel_types[fn_mod51];
header->sub_type = ch_type;
if(header->timeslot==d_timeslot){
if(fn_mod51>=fn51_start && fn_mod51<=fn51_stop)
{
uint32_t ii = fn_mod51 - fn51_start;
d_frame_numbers[ii] = frame_nr;
d_bursts[ii] = msg;
}
if(fn_mod51==fn51_stop)
{
//check for a situation where some bursts were lost
//in this situation frame numbers won't be consecutive
bool frames_are_consecutive = true;
for(int jj=1; jj<4; jj++)
{
if((d_frame_numbers[jj]-d_frame_numbers[jj-1])!=1)
{
frames_are_consecutive = false;
}
}
if(frames_are_consecutive)
{
//send bursts to the output
for(int jj=0; jj<4; jj++)
{
message_port_pub(pmt::mp("bursts"), d_bursts[jj]);
}
}
}
}
}
} /* namespace gsm */
} /* namespace gr */

View File

@ -0,0 +1,48 @@
/* -*- c++ -*- */
/*
* Copyright 2014 <+YOU OR YOUR COMPANY+>.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
#ifndef INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_IMPL_H
#define INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_IMPL_H
#include <gsm/demapping/universal_ctrl_chans_demapper.h>
namespace gr {
namespace gsm {
class universal_ctrl_chans_demapper_impl : public universal_ctrl_chans_demapper
{
private:
unsigned int d_starts_fn_mod51[51];
unsigned int d_channel_types[51];
unsigned int d_timeslot;
uint32_t d_frame_numbers[4];
pmt::pmt_t d_bursts[4];
public:
universal_ctrl_chans_demapper_impl(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types);
~universal_ctrl_chans_demapper_impl();
void filter_ctrl_chans(pmt::pmt_t msg);
};
} // namespace gsm
} // namespace gr
#endif /* INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_IMPL_H */

View File

@ -10,6 +10,7 @@
%{
#include "gsm/receiver/receiver.h"
#include "gsm/demapping/get_bcch_or_ccch_bursts.h"
#include "gsm/demapping/universal_ctrl_chans_demapper.h"
#include "gsm/decoding/control_channels_decoder.h"
#include "gsm/misc_utils/bursts_printer.h"
#include "gsm/misc_utils/controlled_const_source_f.h"
@ -27,6 +28,8 @@ GR_SWIG_BLOCK_MAGIC2(gsm, control_channels_decoder);
%include "gsm/demapping/get_bcch_or_ccch_bursts.h"
GR_SWIG_BLOCK_MAGIC2(gsm, get_bcch_or_ccch_bursts);
%include "gsm/demapping/universal_ctrl_chans_demapper.h"
GR_SWIG_BLOCK_MAGIC2(gsm, universal_ctrl_chans_demapper);
%include "gsm/misc_utils/bursts_printer.h"
GR_SWIG_BLOCK_MAGIC2(gsm, bursts_printer);