Merge branch 'master' of https://github.com/mrjacobagilbert/gr-gsm into mrjaco-master
Added appropriate changes to grc files, corrected CMakeLists files
diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
index 766a037..83eb260 100644
--- a/apps/CMakeLists.txt
+++ b/apps/CMakeLists.txt
@@ -26,5 +26,7 @@
# ${PYFILES}
airprobe_file.py
airprobe_rtlsdr.py
+ airprobe_usrp.py
+
DESTINATION bin
)
diff --git a/apps/airprobe_file.grc b/apps/airprobe_file.grc
index d8e2b31..e21b8f2 100644
--- a/apps/airprobe_file.grc
+++ b/apps/airprobe_file.grc
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='ASCII'?>
<?grc format='1' created='3.7.6'?>
<flow_graph>
- <timestamp>Wed Aug 13 19:03:06 2014</timestamp>
+ <timestamp>Sat Dec 13 10:46:37 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -58,88 +58,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(0, -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>
- <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>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>
+ <value>(16, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -166,7 +85,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(936, -5)</value>
+ <value>(1080, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -177,7 +96,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>RACH</value>
+ <value>CHANNEL_UNKNOWN</value>
</param>
<param>
<key>_enabled</key>
@@ -185,7 +104,7 @@
</param>
<param>
<key>value</key>
- <value>3</value>
+ <value>0</value>
</param>
<param>
<key>alias</key>
@@ -193,7 +112,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(744, -5)</value>
+ <value>(576, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -220,7 +139,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(872, -5)</value>
+ <value>(1008, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -247,7 +166,88 @@
</param>
<param>
<key>_coordinate</key>
- <value>(808, -5)</value>
+ <value>(936, 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>(792, 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>
+ <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>(720, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -286,7 +286,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(184, -5)</value>
+ <value>(208, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -325,7 +325,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(296, -5)</value>
+ <value>(328, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -364,101 +364,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(376, -5)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_clock_offset_control</key>
- <param>
- <key>id</key>
- <value>gsm_clock_offset_control_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>fc</key>
- <value>fc</value>
- </param>
- <param>
- <key>samp_rate</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>(240, 219)</value>
- </param>
- <param>
- <key>_rotation</key>
- <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>osr</key>
- <value>4</value>
- </param>
- <param>
- <key>fc</key>
- <value>fc</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>(176, 128)</value>
+ <value>(416, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -509,7 +415,58 @@
</param>
<param>
<key>_coordinate</key>
- <value>(-8, 115)</value>
+ <value>(16, 195)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</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>osr</key>
+ <value>4</value>
+ </param>
+ <param>
+ <key>fc</key>
+ <value>fc</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>(200, 208)</value>
</param>
<param>
<key>_rotation</key>
@@ -560,7 +517,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(352, 112)</value>
+ <value>(384, 192)</value>
</param>
<param>
<key>_rotation</key>
@@ -568,6 +525,45 @@
</param>
</block>
<block>
+ <key>gsm_clock_offset_control</key>
+ <param>
+ <key>id</key>
+ <value>gsm_clock_offset_control_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fc</key>
+ <value>fc</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>(272, 315)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>180</value>
+ </param>
+ </block>
+ <block>
<key>gsm_universal_ctrl_chans_demapper</key>
<param>
<key>id</key>
@@ -603,34 +599,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(536, 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>
+ <value>(576, 192)</value>
</param>
<param>
<key>_rotation</key>
@@ -665,7 +634,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(784, 112)</value>
+ <value>(840, 192)</value>
</param>
<param>
<key>_rotation</key>
@@ -720,7 +689,38 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1016, 179)</value>
+ <value>(1088, 243)</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>prepend_string</key>
+ <value>""</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1088, 192)</value>
</param>
<param>
<key>_rotation</key>
@@ -728,40 +728,10 @@
</param>
</block>
<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_control_channels_decoder_0</source_block_id>
- <sink_block_id>gsm_message_printer_0</sink_block_id>
+ <sink_block_id>blocks_socket_pdu_0</sink_block_id>
<source_key>msgs</source_key>
- <sink_key>msgs</sink_key>
- </connection>
- <connection>
- <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>
- <source_key>ppm</source_key>
- <sink_key>ppm_in</sink_key>
+ <sink_key>pdus</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
@@ -770,9 +740,39 @@
<sink_key>0</sink_key>
</connection>
<connection>
+ <source_block_id>gsm_clock_offset_control_0</source_block_id>
+ <sink_block_id>gsm_input_0</sink_block_id>
+ <source_key>ppm</source_key>
+ <sink_key>ppm_in</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_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_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_control_channels_decoder_0</source_block_id>
- <sink_block_id>blocks_socket_pdu_0</sink_block_id>
+ <sink_block_id>gsm_message_printer_0</sink_block_id>
<source_key>msgs</source_key>
- <sink_key>pdus</sink_key>
+ <sink_key>msgs</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>
</flow_graph>
diff --git a/apps/airprobe_file.py b/apps/airprobe_file.py
index 2a88a27..48d1959 100755
--- a/apps/airprobe_file.py
+++ b/apps/airprobe_file.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: Airprobe File
-# Generated: Sat Dec 13 09:44:41 2014
+# Generated: Sat Jan 3 00:02:07 2015
##################################################
from gnuradio import blocks
@@ -12,6 +12,7 @@
from gnuradio.filter import firdes
from optparse import OptionParser
import grgsm
+import pmt
class airprobe_file(gr.top_block):
@@ -41,33 +42,33 @@
##################################################
self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(([2,6,12,16,22,26,32,36,42,46]), ([BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]))
self.gsm_receiver_0 = grgsm.receiver(4, ([0]), ([]))
- self.gsm_message_printer_0 = grgsm.message_printer()
+ self.gsm_message_printer_0 = grgsm.message_printer(pmt.intern(""))
self.gsm_input_0 = grgsm.gsm_input(
ppm=0,
osr=4,
fc=fc,
samp_rate_in=samp_rate,
)
- self.gsm_control_channels_decoder_0 = gsm.control_channels_decoder()
- self.gsm_clock_offset_control_0 = gsm.clock_offset_control(fc)
- self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000)
+ self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
+ self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc)
+ self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000, False)
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, input_file_name, False)
##################################################
# Connections
##################################################
- self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
self.connect((self.blocks_file_source_0, 0), (self.gsm_input_0, 0))
+ self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
##################################################
- # Asynch Message Connections
+ # Message Connections
##################################################
- self.msg_connect(self.gsm_receiver_0, "measurements", self.gsm_clock_offset_control_0, "measurements")
- self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.gsm_message_printer_0, "msgs")
- self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, "bursts", self.gsm_control_channels_decoder_0, "bursts")
- self.msg_connect(self.gsm_receiver_0, "C0", self.gsm_universal_ctrl_chans_demapper_0, "bursts")
- self.msg_connect(self.gsm_clock_offset_control_0, "ppm", self.gsm_input_0, "ppm_in")
self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.blocks_socket_pdu_0, "pdus")
+ self.msg_connect(self.gsm_clock_offset_control_0, "ppm", self.gsm_input_0, "ppm_in")
+ self.msg_connect(self.gsm_receiver_0, "C0", self.gsm_universal_ctrl_chans_demapper_0, "bursts")
+ self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, "bursts", self.gsm_control_channels_decoder_0, "bursts")
+ self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.gsm_message_printer_0, "msgs")
+ self.msg_connect(self.gsm_receiver_0, "measurements", self.gsm_clock_offset_control_0, "measurements")
def get_input_file_name(self):
diff --git a/apps/airprobe_rtlsdr.grc b/apps/airprobe_rtlsdr.grc
index aa263fa..56fbfed 100644
--- a/apps/airprobe_rtlsdr.grc
+++ b/apps/airprobe_rtlsdr.grc
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='ASCII'?>
<?grc format='1' created='3.7.6'?>
<flow_graph>
- <timestamp>Thu Nov 6 14:43:22 2014</timestamp>
+ <timestamp>Sat Dec 13 10:49:59 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -58,196 +58,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(13, 9)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>samp_rate</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>2000000.052982</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(13, 86)</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>(1104, 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>(976, 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>(912, 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>(848, 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>(648, 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>(784, 11)</value>
+ <value>(16, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -274,7 +85,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1040, 11)</value>
+ <value>(1128, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -282,50 +93,18 @@
</param>
</block>
<block>
- <key>variable_qtgui_range</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>fc</value>
+ <value>AGCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>center_frequency</value>
- </param>
- <param>
<key>value</key>
- <value>939.4e6</value>
- </param>
- <param>
- <key>start</key>
- <value>925e6</value>
- </param>
- <param>
- <key>stop</key>
- <value>960e6</value>
- </param>
- <param>
- <key>step</key>
- <value>2e5</value>
- </param>
- <param>
- <key>widget</key>
- <value>counter_slider</value>
- </param>
- <param>
- <key>orient</key>
- <value>Qt.Horizontal</value>
- </param>
- <param>
- <key>min_len</key>
- <value>100</value>
- </param>
- <param>
- <key>gui_hint</key>
- <value></value>
+ <value>4</value>
</param>
<param>
<key>alias</key>
@@ -333,7 +112,169 @@
</param>
<param>
<key>_coordinate</key>
- <value>(330, 9)</value>
+ <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>(984, 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>(912, 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>(840, 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>(696, 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>(1200, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>2000000.052982</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(16, 83)</value>
</param>
<param>
<key>_rotation</key>
@@ -352,7 +293,7 @@
</param>
<param>
<key>label</key>
- <value>gain</value>
+ <value>Gain</value>
</param>
<param>
<key>value</key>
@@ -392,7 +333,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(218, 10)</value>
+ <value>(192, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -400,270 +341,32 @@
</param>
</block>
<block>
- <key>gsm_receiver</key>
+ <key>gsm_input</key>
<param>
<key>id</key>
- <value>gsm_receiver_0</value>
+ <value>gsm_input_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>ppm</key>
+ <value>0</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>(448, 232)</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_1</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>(1112, 232)</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>(1136, 307)</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>(896, 232)</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>(632, 232)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>parameter</key>
- <param>
- <key>id</key>
- <value>ppm_param</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>ppm</value>
- </param>
- <param>
- <key>value</key>
- <value>0</value>
- </param>
- <param>
- <key>type</key>
- <value>intx</value>
- </param>
- <param>
- <key>short_id</key>
- <value>p</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(648, 75)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_clock_offset_control</key>
- <param>
- <key>id</key>
- <value>gsm_clock_offset_control_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
<key>fc</key>
<value>fc</value>
</param>
<param>
+ <key>samp_rate_in</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
<key>alias</key>
<value></value>
</param>
@@ -681,66 +384,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(336, 347)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>180</value>
- </param>
- </block>
- <block>
- <key>variable_qtgui_range</key>
- <param>
- <key>id</key>
- <value>ppm</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>clock_correction [ppm]</value>
- </param>
- <param>
- <key>value</key>
- <value>ppm_param</value>
- </param>
- <param>
- <key>start</key>
- <value>-150</value>
- </param>
- <param>
- <key>stop</key>
- <value>150</value>
- </param>
- <param>
- <key>step</key>
- <value>1</value>
- </param>
- <param>
- <key>widget</key>
- <value>counter</value>
- </param>
- <param>
- <key>orient</key>
- <value>Qt.Horizontal</value>
- </param>
- <param>
- <key>min_len</key>
- <value>100</value>
- </param>
- <param>
- <key>gui_hint</key>
- <value></value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(473, 10)</value>
+ <value>(280, 304)</value>
</param>
<param>
<key>_rotation</key>
@@ -766,6 +410,78 @@
<value></value>
</param>
<param>
+ <key>sync</key>
+ <value></value>
+ </param>
+ <param>
+ <key>num_mboards</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>clock_source0</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source0</key>
+ <value></value>
+ </param>
+ <param>
+ <key>clock_source1</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source1</key>
+ <value></value>
+ </param>
+ <param>
+ <key>clock_source2</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source2</key>
+ <value></value>
+ </param>
+ <param>
+ <key>clock_source3</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source3</key>
+ <value></value>
+ </param>
+ <param>
+ <key>clock_source4</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source4</key>
+ <value></value>
+ </param>
+ <param>
+ <key>clock_source5</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source5</key>
+ <value></value>
+ </param>
+ <param>
+ <key>clock_source6</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source6</key>
+ <value></value>
+ </param>
+ <param>
+ <key>clock_source7</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source7</key>
+ <value></value>
+ </param>
+ <param>
<key>nchan</key>
<value>1</value>
</param>
@@ -974,55 +690,1084 @@
<value>0</value>
</param>
<param>
- <key>alias</key>
+ <key>freq5</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr5</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode5</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode5</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode5</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain5</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain5</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain5</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant5</key>
<value></value>
</param>
<param>
- <key>affinity</key>
+ <key>bw5</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq6</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr6</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode6</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode6</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode6</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain6</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain6</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain6</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant6</key>
<value></value>
</param>
<param>
- <key>minoutbuf</key>
+ <key>bw6</key>
<value>0</value>
</param>
<param>
- <key>maxoutbuf</key>
+ <key>freq7</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr7</key>
<value>0</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(0, 171)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</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>
+ <key>dc_offset_mode7</key>
<value>0</value>
</param>
<param>
- <key>osr</key>
- <value>4</value>
+ <key>iq_balance_mode7</key>
+ <value>0</value>
</param>
<param>
- <key>fc</key>
- <value>fc</value>
+ <key>gain_mode7</key>
+ <value>False</value>
</param>
<param>
- <key>samp_rate_in</key>
- <value>samp_rate</value>
+ <key>gain7</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain7</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain7</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant7</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw7</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq8</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr8</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode8</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode8</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode8</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain8</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain8</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain8</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant8</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw8</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq9</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr9</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode9</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode9</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode9</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain9</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain9</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain9</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant9</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw9</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq10</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr10</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode10</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode10</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode10</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain10</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain10</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain10</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant10</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw10</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq11</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr11</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode11</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode11</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode11</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain11</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain11</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain11</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant11</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw11</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq12</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr12</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode12</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode12</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode12</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain12</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain12</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain12</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant12</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw12</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq13</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr13</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode13</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode13</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode13</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain13</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain13</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain13</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant13</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw13</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq14</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr14</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode14</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode14</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode14</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain14</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain14</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain14</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant14</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw14</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq15</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr15</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode15</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode15</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode15</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain15</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain15</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain15</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant15</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw15</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq16</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr16</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode16</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode16</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode16</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain16</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain16</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain16</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant16</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw16</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq17</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr17</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode17</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode17</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode17</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain17</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain17</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain17</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant17</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw17</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq18</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr18</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode18</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode18</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode18</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain18</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain18</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain18</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant18</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw18</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq19</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr19</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode19</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode19</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode19</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain19</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain19</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain19</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant19</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw19</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq20</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr20</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode20</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode20</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode20</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain20</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain20</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain20</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant20</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw20</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq21</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr21</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode21</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode21</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode21</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain21</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain21</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain21</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant21</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw21</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq22</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr22</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode22</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode22</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode22</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain22</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain22</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain22</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant22</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw22</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq23</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr23</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode23</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode23</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode23</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain23</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain23</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain23</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant23</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw23</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq24</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr24</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode24</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode24</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode24</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain24</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain24</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain24</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant24</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw24</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq25</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr25</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode25</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode25</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode25</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain25</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain25</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain25</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant25</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw25</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq26</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr26</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode26</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode26</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode26</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain26</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain26</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain26</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant26</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw26</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq27</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr27</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode27</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode27</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode27</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain27</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain27</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain27</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant27</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw27</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq28</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr28</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode28</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode28</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode28</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain28</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain28</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain28</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant28</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw28</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq29</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr29</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode29</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode29</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode29</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain29</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain29</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain29</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant29</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw29</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq30</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr30</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode30</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode30</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode30</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain30</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain30</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain30</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant30</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw30</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>freq31</key>
+ <value>100e6</value>
+ </param>
+ <param>
+ <key>corr31</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>dc_offset_mode31</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>iq_balance_mode31</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>gain_mode31</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain31</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>if_gain31</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>bb_gain31</key>
+ <value>20</value>
+ </param>
+ <param>
+ <key>ant31</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw31</key>
+ <value>0</value>
</param>
<param>
<key>alias</key>
@@ -1042,7 +1787,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(272, 248)</value>
+ <value>(16, 227)</value>
</param>
<param>
<key>_rotation</key>
@@ -1317,7 +2062,418 @@
</param>
<param>
<key>_coordinate</key>
- <value>(264, 451)</value>
+ <value>(280, 187)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_clock_offset_control</key>
+ <param>
+ <key>id</key>
+ <value>gsm_clock_offset_control_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>fc</key>
+ <value>fc</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>(344, 411)</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>(464, 288)</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>(656, 288)</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>(912, 288)</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>(1152, 363)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_qtgui_range</key>
+ <param>
+ <key>id</key>
+ <value>fc</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Frequency</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>939.4e6</value>
+ </param>
+ <param>
+ <key>start</key>
+ <value>925e6</value>
+ </param>
+ <param>
+ <key>stop</key>
+ <value>960e6</value>
+ </param>
+ <param>
+ <key>step</key>
+ <value>2e5</value>
+ </param>
+ <param>
+ <key>widget</key>
+ <value>counter_slider</value>
+ </param>
+ <param>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
+ </param>
+ <param>
+ <key>min_len</key>
+ <value>100</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value></value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(304, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_qtgui_range</key>
+ <param>
+ <key>id</key>
+ <value>ppm</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>PPM Offset</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>ppm_param</value>
+ </param>
+ <param>
+ <key>start</key>
+ <value>-150</value>
+ </param>
+ <param>
+ <key>stop</key>
+ <value>150</value>
+ </param>
+ <param>
+ <key>step</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>widget</key>
+ <value>counter</value>
+ </param>
+ <param>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
+ </param>
+ <param>
+ <key>min_len</key>
+ <value>100</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value></value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(440, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>id</key>
+ <value>ppm_param</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>ppm</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>intx</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value>p</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(552, 27)</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_1</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>prepend_string</key>
+ <value>""</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1152, 288)</value>
</param>
<param>
<key>_rotation</key>
@@ -1325,8 +2481,44 @@
</param>
</block>
<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_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>gsm_control_channels_decoder_0</source_block_id>
+ <sink_block_id>gsm_message_printer_1</sink_block_id>
+ <source_key>msgs</source_key>
+ <sink_key>msgs</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_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>rtlsdr_source_0</source_block_id>
- <sink_block_id>qtgui_freq_sink_x_0</sink_block_id>
+ <sink_block_id>gsm_input_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
@@ -1338,44 +2530,8 @@
</connection>
<connection>
<source_block_id>rtlsdr_source_0</source_block_id>
- <sink_block_id>gsm_input_0</sink_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_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_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_control_channels_decoder_0</source_block_id>
- <sink_block_id>gsm_message_printer_1</sink_block_id>
- <source_key>msgs</source_key>
- <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>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_clock_offset_control_0</sink_block_id>
- <source_key>measurements</source_key>
- <sink_key>measurements</sink_key>
- </connection>
</flow_graph>
diff --git a/apps/airprobe_rtlsdr.py b/apps/airprobe_rtlsdr.py
index 29134c3..c1f816d 100755
--- a/apps/airprobe_rtlsdr.py
+++ b/apps/airprobe_rtlsdr.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: Airprobe Rtlsdr
-# Generated: Sat Dec 13 09:54:44 2014
+# Generated: Sat Jan 3 00:02:56 2015
##################################################
from PyQt4 import Qt
@@ -17,6 +17,7 @@
import PyQt4.Qwt5 as Qwt
import grgsm
import osmosdr
+import pmt
import sip
import sys
import time
@@ -72,7 +73,7 @@
# Blocks
##################################################
self._ppm_layout = Qt.QHBoxLayout()
- self._ppm_layout.addWidget(Qt.QLabel("clock_correction [ppm]"+": "))
+ self._ppm_layout.addWidget(Qt.QLabel("PPM Offset"+": "))
class qwt_counter_pyslot(Qwt.QwtCounter):
def __init__(self, parent=None):
Qwt.QwtCounter.__init__(self, parent)
@@ -88,7 +89,7 @@
self._ppm_counter.valueChanged.connect(self.set_ppm)
self.top_layout.addLayout(self._ppm_layout)
self._g_layout = Qt.QHBoxLayout()
- self._g_layout.addWidget(Qt.QLabel("gain"+": "))
+ self._g_layout.addWidget(Qt.QLabel("Gain"+": "))
class qwt_counter_pyslot(Qwt.QwtCounter):
def __init__(self, parent=None):
Qwt.QwtCounter.__init__(self, parent)
@@ -106,7 +107,7 @@
self._fc_layout = Qt.QVBoxLayout()
self._fc_tool_bar = Qt.QToolBar(self)
self._fc_layout.addWidget(self._fc_tool_bar)
- self._fc_tool_bar.addWidget(Qt.QLabel("center_frequency"+": "))
+ self._fc_tool_bar.addWidget(Qt.QLabel("Frequency"+": "))
class qwt_counter_pyslot(Qwt.QwtCounter):
def __init__(self, parent=None):
Qwt.QwtCounter.__init__(self, parent)
@@ -149,11 +150,36 @@
)
self.qtgui_freq_sink_x_0.set_update_time(0.10)
self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
+ self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
+ self.qtgui_freq_sink_x_0.enable_autoscale(False)
+ self.qtgui_freq_sink_x_0.enable_grid(False)
+ self.qtgui_freq_sink_x_0.set_fft_average(1.0)
+
+ if complex == type(float()):
+ self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)
+
+ labels = ["", "", "", "", "",
+ "", "", "", "", ""]
+ widths = [1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1]
+ colors = ["blue", "red", "green", "black", "cyan",
+ "magenta", "yellow", "dark red", "dark green", "dark blue"]
+ alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 1.0, 1.0, 1.0]
+ for i in xrange(1):
+ if len(labels[i]) == 0:
+ self.qtgui_freq_sink_x_0.set_line_label(i, "Data {0}".format(i))
+ else:
+ self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
+ self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
+ self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
+ self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])
+
self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win)
self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(([2,6,12,16,22,26,32,36,42,46]), ([BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]))
self.gsm_receiver_0 = grgsm.receiver(4, ([0]), ([]))
- self.gsm_message_printer_1 = grgsm.message_printer()
+ self.gsm_message_printer_1 = grgsm.message_printer(pmt.intern(""))
self.gsm_input_0 = grgsm.gsm_input(
ppm=0,
osr=4,
@@ -162,24 +188,24 @@
)
self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc)
- self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000)
+ self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000, False)
##################################################
# Connections
##################################################
- self.connect((self.rtlsdr_source_0, 0), (self.qtgui_freq_sink_x_0, 0))
- self.connect((self.rtlsdr_source_0, 0), (self.gsm_input_0, 0))
self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
+ self.connect((self.rtlsdr_source_0, 0), (self.gsm_input_0, 0))
+ self.connect((self.rtlsdr_source_0, 0), (self.qtgui_freq_sink_x_0, 0))
##################################################
- # Asynch Message Connections
+ # Message Connections
##################################################
- self.msg_connect(self.gsm_clock_offset_control_0, "ppm", self.gsm_input_0, "ppm_in")
- self.msg_connect(self.gsm_receiver_0, "C0", self.gsm_universal_ctrl_chans_demapper_0, "bursts")
- self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.gsm_message_printer_1, "msgs")
- self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.blocks_socket_pdu_0, "pdus")
- self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, "bursts", self.gsm_control_channels_decoder_0, "bursts")
self.msg_connect(self.gsm_receiver_0, "measurements", self.gsm_clock_offset_control_0, "measurements")
+ self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, "bursts", self.gsm_control_channels_decoder_0, "bursts")
+ self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.blocks_socket_pdu_0, "pdus")
+ self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.gsm_message_printer_1, "msgs")
+ self.msg_connect(self.gsm_receiver_0, "C0", self.gsm_universal_ctrl_chans_demapper_0, "bursts")
+ self.msg_connect(self.gsm_clock_offset_control_0, "ppm", self.gsm_input_0, "ppm_in")
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "airprobe_rtlsdr")
@@ -198,8 +224,8 @@
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
- self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
self.gsm_input_0.set_samp_rate_in(self.samp_rate)
+ self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
self.qtgui_freq_sink_x_0.set_frequency_range(self.fc, self.samp_rate)
def get_ppm(self):
@@ -207,8 +233,8 @@
def set_ppm(self, ppm):
self.ppm = ppm
- Qt.QMetaObject.invokeMethod(self._ppm_counter, "setValue", Qt.Q_ARG("double", self.ppm))
self.rtlsdr_source_0.set_freq_corr(self.ppm, 0)
+ Qt.QMetaObject.invokeMethod(self._ppm_counter, "setValue", Qt.Q_ARG("double", self.ppm))
def get_g(self):
return self.g
@@ -223,11 +249,11 @@
def set_fc(self, fc):
self.fc = fc
+ self.gsm_input_0.set_fc(self.fc)
+ self.rtlsdr_source_0.set_center_freq(self.fc, 0)
+ self.qtgui_freq_sink_x_0.set_frequency_range(self.fc, self.samp_rate)
Qt.QMetaObject.invokeMethod(self._fc_counter, "setValue", Qt.Q_ARG("double", self.fc))
Qt.QMetaObject.invokeMethod(self._fc_slider, "setValue", Qt.Q_ARG("double", self.fc))
- self.rtlsdr_source_0.set_center_freq(self.fc, 0)
- self.gsm_input_0.set_fc(self.fc)
- self.qtgui_freq_sink_x_0.set_frequency_range(self.fc, self.samp_rate)
def get_SDCCH(self):
return self.SDCCH
diff --git a/apps/airprobe_usrp.grc b/apps/airprobe_usrp.grc
index 68ea3d1..826c18d 100644
--- a/apps/airprobe_usrp.grc
+++ b/apps/airprobe_usrp.grc
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='ASCII'?>
<?grc format='1' created='3.7.6'?>
<flow_graph>
- <timestamp>Thu Nov 6 14:43:18 2014</timestamp>
+ <timestamp>Sat Dec 13 10:50:28 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -58,196 +58,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(0, -1)</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>(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>
+ <value>(16, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -274,7 +85,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(-1, 160)</value>
+ <value>(16, 99)</value>
</param>
<param>
<key>_rotation</key>
@@ -282,50 +93,18 @@
</param>
</block>
<block>
- <key>variable_qtgui_range</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>fc</value>
+ <value>CHANNEL_UNKNOWN</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>center_frequency</value>
- </param>
- <param>
<key>value</key>
- <value>939.4e6</value>
- </param>
- <param>
- <key>start</key>
- <value>925e6</value>
- </param>
- <param>
- <key>stop</key>
- <value>960e6</value>
- </param>
- <param>
- <key>step</key>
- <value>2e5</value>
- </param>
- <param>
- <key>widget</key>
- <value>counter_slider</value>
- </param>
- <param>
- <key>orient</key>
- <value>Qt.Horizontal</value>
- </param>
- <param>
- <key>min_len</key>
- <value>100</value>
- </param>
- <param>
- <key>gui_hint</key>
- <value></value>
+ <value>0</value>
</param>
<param>
<key>alias</key>
@@ -333,7 +112,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(319, 11)</value>
+ <value>(608, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -341,50 +120,18 @@
</param>
</block>
<block>
- <key>variable_qtgui_range</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>g</value>
+ <value>BCCH</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>gain</value>
- </param>
- <param>
<key>value</key>
- <value>30</value>
- </param>
- <param>
- <key>start</key>
- <value>0</value>
- </param>
- <param>
- <key>stop</key>
- <value>50</value>
- </param>
- <param>
- <key>step</key>
- <value>0.5</value>
- </param>
- <param>
- <key>widget</key>
- <value>counter</value>
- </param>
- <param>
- <key>orient</key>
- <value>Qt.Horizontal</value>
- </param>
- <param>
- <key>min_len</key>
- <value>100</value>
- </param>
- <param>
- <key>gui_hint</key>
- <value></value>
+ <value>1</value>
</param>
<param>
<key>alias</key>
@@ -392,7 +139,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(207, 12)</value>
+ <value>(752, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -400,26 +147,134 @@
</param>
</block>
<block>
- <key>gsm_message_printer</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>gsm_message_printer_0</value>
+ <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>affinity</key>
+ <key>_coordinate</key>
+ <value>(824, 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>(1160, 272)</value>
+ <value>(1112, 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>(968, 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>(896, 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>(1040, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -482,6 +337,253 @@
</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>variable_qtgui_range</key>
+ <param>
+ <key>id</key>
+ <value>g</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Gain</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>30</value>
+ </param>
+ <param>
+ <key>start</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>stop</key>
+ <value>50</value>
+ </param>
+ <param>
+ <key>step</key>
+ <value>0.5</value>
+ </param>
+ <param>
+ <key>widget</key>
+ <value>counter</value>
+ </param>
+ <param>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
+ </param>
+ <param>
+ <key>min_len</key>
+ <value>100</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value></value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(192, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_qtgui_range</key>
+ <param>
+ <key>id</key>
+ <value>ppm</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>PPM Offset</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>84</value>
+ </param>
+ <param>
+ <key>start</key>
+ <value>-100</value>
+ </param>
+ <param>
+ <key>stop</key>
+ <value>100</value>
+ </param>
+ <param>
+ <key>step</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>widget</key>
+ <value>counter</value>
+ </param>
+ <param>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
+ </param>
+ <param>
+ <key>min_len</key>
+ <value>100</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value></value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(440, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</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>osr</key>
+ <value>4</value>
+ </param>
+ <param>
+ <key>fc</key>
+ <value>fc</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>(264, 288)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
<key>qtgui_freq_sink_x</key>
<param>
<key>id</key>
@@ -749,7 +851,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(282, 433)</value>
+ <value>(264, 179)</value>
</param>
<param>
<key>_rotation</key>
@@ -757,10 +859,10 @@
</param>
</block>
<block>
- <key>gsm_control_channels_decoder</key>
+ <key>gsm_message_printer</key>
<param>
<key>id</key>
- <value>gsm_control_channels_decoder_0</value>
+ <value>gsm_message_printer_0</value>
</param>
<param>
<key>_enabled</key>
@@ -775,118 +877,8 @@
<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>variable_qtgui_range</key>
- <param>
- <key>id</key>
- <value>ppm</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>False</value>
- </param>
- <param>
- <key>label</key>
- <value>clock_correction [ppm]</value>
- </param>
- <param>
- <key>value</key>
- <value>84</value>
- </param>
- <param>
- <key>start</key>
- <value>-100</value>
- </param>
- <param>
- <key>stop</key>
- <value>100</value>
- </param>
- <param>
- <key>step</key>
- <value>1</value>
- </param>
- <param>
- <key>widget</key>
- <value>counter</value>
- </param>
- <param>
- <key>orient</key>
- <value>Qt.Horizontal</value>
- </param>
- <param>
- <key>min_len</key>
- <value>100</value>
- </param>
- <param>
- <key>gui_hint</key>
- <value></value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(462, 12)</value>
+ <value>(1144, 272)</value>
</param>
<param>
<key>_rotation</key>
@@ -937,58 +929,7 @@
</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>
- <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>osr</key>
- <value>4</value>
- </param>
- <param>
- <key>fc</key>
- <value>fc</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>(256, 288)</value>
+ <value>(448, 272)</value>
</param>
<param>
<key>_rotation</key>
@@ -1023,7 +964,7 @@
</param>
<param>
<key>dev_addr</key>
- <value>addr=192.168.9.2</value>
+ <value>addr=192.168.10.2</value>
</param>
<param>
<key>dev_args</key>
@@ -1043,7 +984,7 @@
</param>
<param>
<key>clock_source0</key>
- <value></value>
+ <value>internal</value>
</param>
<param>
<key>time_source0</key>
@@ -1675,7 +1616,93 @@
</param>
<param>
<key>_coordinate</key>
- <value>(8, 259)</value>
+ <value>(24, 259)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>blocks_message_debug</key>
+ <param>
+ <key>id</key>
+ <value>blocks_message_debug_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>(672, 400)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_qtgui_range</key>
+ <param>
+ <key>id</key>
+ <value>fc</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Frequency</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>1869e6</value>
+ </param>
+ <param>
+ <key>start</key>
+ <value>1800e6</value>
+ </param>
+ <param>
+ <key>stop</key>
+ <value>1900e6</value>
+ </param>
+ <param>
+ <key>step</key>
+ <value>2e5</value>
+ </param>
+ <param>
+ <key>widget</key>
+ <value>counter_slider</value>
+ </param>
+ <param>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
+ </param>
+ <param>
+ <key>min_len</key>
+ <value>100</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value></value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(304, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -1724,4 +1751,10 @@
<source_key>C0</source_key>
<sink_key>bursts</sink_key>
</connection>
+ <connection>
+ <source_block_id>gsm_receiver_0</source_block_id>
+ <sink_block_id>blocks_message_debug_0</sink_block_id>
+ <source_key>measurements</source_key>
+ <sink_key>print</sink_key>
+ </connection>
</flow_graph>
diff --git a/apps/airprobe_usrp.py b/apps/airprobe_usrp.py
new file mode 100755
index 0000000..63426a3
--- /dev/null
+++ b/apps/airprobe_usrp.py
@@ -0,0 +1,282 @@
+#!/usr/bin/env python
+##################################################
+# Gnuradio Python Flow Graph
+# Title: Airprobe Usrp
+# Generated: Sat Jan 3 00:02:32 2015
+##################################################
+
+from PyQt4 import Qt
+from PyQt4.QtCore import QObject, pyqtSlot
+from gnuradio import blocks
+from gnuradio import eng_notation
+from gnuradio import gr
+from gnuradio import qtgui
+from gnuradio import uhd
+from gnuradio.eng_option import eng_option
+from gnuradio.filter import firdes
+from optparse import OptionParser
+import PyQt4.Qwt5 as Qwt
+import grgsm
+import pmt
+import sip
+import sys
+import time
+
+from distutils.version import StrictVersion
+class airprobe_usrp(gr.top_block, Qt.QWidget):
+
+ def __init__(self):
+ gr.top_block.__init__(self, "Airprobe Usrp")
+ Qt.QWidget.__init__(self)
+ self.setWindowTitle("Airprobe Usrp")
+ try:
+ self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
+ except:
+ pass
+ self.top_scroll_layout = Qt.QVBoxLayout()
+ self.setLayout(self.top_scroll_layout)
+ self.top_scroll = Qt.QScrollArea()
+ self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
+ self.top_scroll_layout.addWidget(self.top_scroll)
+ self.top_scroll.setWidgetResizable(True)
+ self.top_widget = Qt.QWidget()
+ self.top_scroll.setWidget(self.top_widget)
+ self.top_layout = Qt.QVBoxLayout(self.top_widget)
+ self.top_grid_layout = Qt.QGridLayout()
+ self.top_layout.addLayout(self.top_grid_layout)
+
+ self.settings = Qt.QSettings("GNU Radio", "airprobe_usrp")
+ self.restoreGeometry(self.settings.value("geometry").toByteArray())
+
+
+ ##################################################
+ # Variables
+ ##################################################
+ self.samp_rate = samp_rate = 100e6/100
+ self.g = g = 30
+ self.fc = fc = 1869e6
+ self.SDCCH = SDCCH = 6
+ self.RACH = RACH = 3
+ self.PCH = PCH = 5
+ self.CHANNEL_UNKNOWN = CHANNEL_UNKNOWN = 0
+ self.CCCH = CCCH = 2
+ self.BCCH = BCCH = 1
+ self.AGCH = AGCH = 4
+
+ ##################################################
+ # Blocks
+ ##################################################
+ self._g_layout = Qt.QHBoxLayout()
+ self._g_layout.addWidget(Qt.QLabel("Gain"+": "))
+ class qwt_counter_pyslot(Qwt.QwtCounter):
+ def __init__(self, parent=None):
+ Qwt.QwtCounter.__init__(self, parent)
+ @pyqtSlot('double')
+ def setValue(self, value):
+ super(Qwt.QwtCounter, self).setValue(value)
+ self._g_counter = qwt_counter_pyslot()
+ self._g_counter.setRange(0, 50, 0.5)
+ self._g_counter.setNumButtons(2)
+ self._g_counter.setMinimumWidth(100)
+ self._g_counter.setValue(self.g)
+ self._g_layout.addWidget(self._g_counter)
+ self._g_counter.valueChanged.connect(self.set_g)
+ self.top_layout.addLayout(self._g_layout)
+ self._fc_layout = Qt.QVBoxLayout()
+ self._fc_tool_bar = Qt.QToolBar(self)
+ self._fc_layout.addWidget(self._fc_tool_bar)
+ self._fc_tool_bar.addWidget(Qt.QLabel("Frequency"+": "))
+ class qwt_counter_pyslot(Qwt.QwtCounter):
+ def __init__(self, parent=None):
+ Qwt.QwtCounter.__init__(self, parent)
+ @pyqtSlot('double')
+ def setValue(self, value):
+ super(Qwt.QwtCounter, self).setValue(value)
+ self._fc_counter = qwt_counter_pyslot()
+ self._fc_counter.setRange(1800e6, 1900e6, 2e5)
+ self._fc_counter.setNumButtons(2)
+ self._fc_counter.setValue(self.fc)
+ self._fc_tool_bar.addWidget(self._fc_counter)
+ self._fc_counter.valueChanged.connect(self.set_fc)
+ self._fc_slider = Qwt.QwtSlider(None, Qt.Qt.Horizontal, Qwt.QwtSlider.BottomScale, Qwt.QwtSlider.BgSlot)
+ self._fc_slider.setRange(1800e6, 1900e6, 2e5)
+ self._fc_slider.setValue(self.fc)
+ self._fc_slider.setMinimumWidth(100)
+ self._fc_slider.valueChanged.connect(self.set_fc)
+ self._fc_layout.addWidget(self._fc_slider)
+ self.top_layout.addLayout(self._fc_layout)
+ self.uhd_usrp_source_0 = uhd.usrp_source(
+ ",".join(("addr=192.168.10.2", "")),
+ uhd.stream_args(
+ cpu_format="fc32",
+ channels=range(1),
+ ),
+ )
+ self.uhd_usrp_source_0.set_clock_source("internal", 0)
+ self.uhd_usrp_source_0.set_samp_rate(samp_rate)
+ self.uhd_usrp_source_0.set_center_freq(fc, 0)
+ self.uhd_usrp_source_0.set_gain(g, 0)
+ self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
+ 1024, #size
+ firdes.WIN_BLACKMAN_hARRIS, #wintype
+ fc, #fc
+ samp_rate, #bw
+ "", #name
+ 1 #number of inputs
+ )
+ self.qtgui_freq_sink_x_0.set_update_time(0.10)
+ self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
+ self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
+ self.qtgui_freq_sink_x_0.enable_autoscale(False)
+ self.qtgui_freq_sink_x_0.enable_grid(False)
+ self.qtgui_freq_sink_x_0.set_fft_average(1.0)
+
+ if complex == type(float()):
+ self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)
+
+ labels = ["", "", "", "", "",
+ "", "", "", "", ""]
+ widths = [1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1]
+ colors = ["blue", "red", "green", "black", "cyan",
+ "magenta", "yellow", "dark red", "dark green", "dark blue"]
+ alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 1.0, 1.0, 1.0]
+ for i in xrange(1):
+ if len(labels[i]) == 0:
+ self.qtgui_freq_sink_x_0.set_line_label(i, "Data {0}".format(i))
+ else:
+ self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
+ self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
+ self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
+ self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])
+
+ self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
+ self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win)
+ self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(([2,6,12,16,22,26,32,36,42,46]), ([BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]))
+ self.gsm_receiver_0 = grgsm.receiver(4, ([0]), ([]))
+ self.gsm_message_printer_0 = grgsm.message_printer(pmt.intern(""))
+ self.gsm_input_0 = grgsm.gsm_input(
+ ppm=0,
+ osr=4,
+ fc=fc,
+ samp_rate_in=samp_rate,
+ )
+ self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
+ self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000, False)
+ self.blocks_message_debug_0 = blocks.message_debug()
+
+ ##################################################
+ # Connections
+ ##################################################
+ self.connect((self.uhd_usrp_source_0, 0), (self.qtgui_freq_sink_x_0, 0))
+ self.connect((self.uhd_usrp_source_0, 0), (self.gsm_input_0, 0))
+ self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
+
+ ##################################################
+ # Message Connections
+ ##################################################
+ self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.gsm_message_printer_0, "msgs")
+ self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.blocks_socket_pdu_0, "pdus")
+ self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, "bursts", self.gsm_control_channels_decoder_0, "bursts")
+ self.msg_connect(self.gsm_receiver_0, "C0", self.gsm_universal_ctrl_chans_demapper_0, "bursts")
+ self.msg_connect(self.gsm_receiver_0, "measurements", self.blocks_message_debug_0, "print")
+
+ def closeEvent(self, event):
+ self.settings = Qt.QSettings("GNU Radio", "airprobe_usrp")
+ self.settings.setValue("geometry", self.saveGeometry())
+ event.accept()
+
+ def get_samp_rate(self):
+ return self.samp_rate
+
+ def set_samp_rate(self, samp_rate):
+ self.samp_rate = samp_rate
+ self.gsm_input_0.set_samp_rate_in(self.samp_rate)
+ self.qtgui_freq_sink_x_0.set_frequency_range(self.fc, self.samp_rate)
+ self.uhd_usrp_source_0.set_samp_rate(self.samp_rate)
+
+ def get_g(self):
+ return self.g
+
+ def set_g(self, g):
+ self.g = g
+ Qt.QMetaObject.invokeMethod(self._g_counter, "setValue", Qt.Q_ARG("double", self.g))
+ self.uhd_usrp_source_0.set_gain(self.g, 0)
+
+ def get_fc(self):
+ return self.fc
+
+ def set_fc(self, fc):
+ self.fc = fc
+ self.gsm_input_0.set_fc(self.fc)
+ self.qtgui_freq_sink_x_0.set_frequency_range(self.fc, self.samp_rate)
+ self.uhd_usrp_source_0.set_center_freq(self.fc, 0)
+ Qt.QMetaObject.invokeMethod(self._fc_counter, "setValue", Qt.Q_ARG("double", self.fc))
+ Qt.QMetaObject.invokeMethod(self._fc_slider, "setValue", Qt.Q_ARG("double", self.fc))
+
+ def get_SDCCH(self):
+ return self.SDCCH
+
+ def set_SDCCH(self, SDCCH):
+ self.SDCCH = SDCCH
+
+ def get_RACH(self):
+ return self.RACH
+
+ def set_RACH(self, RACH):
+ self.RACH = RACH
+
+ def get_PCH(self):
+ return self.PCH
+
+ def set_PCH(self, PCH):
+ self.PCH = PCH
+
+ def get_CHANNEL_UNKNOWN(self):
+ return self.CHANNEL_UNKNOWN
+
+ def set_CHANNEL_UNKNOWN(self, CHANNEL_UNKNOWN):
+ self.CHANNEL_UNKNOWN = CHANNEL_UNKNOWN
+
+ def get_CCCH(self):
+ return self.CCCH
+
+ def set_CCCH(self, CCCH):
+ self.CCCH = CCCH
+
+ def get_BCCH(self):
+ return self.BCCH
+
+ def set_BCCH(self, BCCH):
+ self.BCCH = BCCH
+
+ def get_AGCH(self):
+ return self.AGCH
+
+ def set_AGCH(self, AGCH):
+ self.AGCH = AGCH
+
+if __name__ == '__main__':
+ import ctypes
+ import sys
+ if sys.platform.startswith('linux'):
+ try:
+ x11 = ctypes.cdll.LoadLibrary('libX11.so')
+ x11.XInitThreads()
+ except:
+ print "Warning: failed to XInitThreads()"
+ parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+ (options, args) = parser.parse_args()
+ if(StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0")):
+ Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
+ qapp = Qt.QApplication(sys.argv)
+ tb = airprobe_usrp()
+ tb.start()
+ tb.show()
+ def quitting():
+ tb.stop()
+ tb.wait()
+ qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
+ qapp.exec_()
+ tb = None #to clean up Qt widgets