Added timeslot nr parameter to the demapper to enable it to work on other timeslots that 0.
diff --git a/apps/airprobe_file.py b/apps/airprobe_file.py
old mode 100755
new mode 100644
index 48d1959..c7bef7f
--- a/apps/airprobe_file.py
+++ b/apps/airprobe_file.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: Airprobe File
-# Generated: Sat Jan 3 00:02:07 2015
+# Generated: Sat Feb 7 19:30:42 2015
##################################################
from gnuradio import blocks
@@ -40,7 +40,7 @@
##################################################
# Blocks
##################################################
- 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_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(0, ([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(
@@ -57,18 +57,14 @@
##################################################
# Connections
##################################################
- 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))
-
- ##################################################
- # Message Connections
- ##################################################
- 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")
+ 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_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')
+ 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.connect((self.blocks_file_source_0, 0), (self.gsm_input_0, 0))
+ self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
def get_input_file_name(self):
diff --git a/apps/airprobe_rtlsdr.py b/apps/airprobe_rtlsdr.py
old mode 100755
new mode 100644
index 2f6080e..04d4768
--- a/apps/airprobe_rtlsdr.py
+++ b/apps/airprobe_rtlsdr.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: Airprobe Rtlsdr
-# Generated: Wed Jan 7 15:39:23 2015
+# Generated: Sat Feb 7 19:30:54 2015
##################################################
from PyQt4 import Qt
@@ -154,7 +154,7 @@
self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
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_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(0, ([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(pmt.intern(""))
self.gsm_input_0 = grgsm.gsm_input(
@@ -165,24 +165,20 @@
)
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.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))
-
- ##################################################
- # Message Connections
- ##################################################
- 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")
+ 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_control_channels_decoder_0, 'msgs', self.gsm_message_printer_1, 'msgs')
+ self.msg_connect(self.gsm_receiver_0, 'measurements', self.gsm_clock_offset_control_0, 'measurements')
+ 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.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))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "airprobe_rtlsdr")
@@ -307,7 +303,8 @@
parser.add_option("-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(2000000.052982),
help="Set samp_rate [default=%default]")
(options, args) = parser.parse_args()
- Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
+ 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_rtlsdr(ppm=options.ppm, fc=options.fc, gain=options.gain, samp_rate=options.samp_rate)
tb.start()
diff --git a/apps/airprobe_usrp.py b/apps/airprobe_usrp.py
old mode 100755
new mode 100644
index f87f8ee..50ea994
--- a/apps/airprobe_usrp.py
+++ b/apps/airprobe_usrp.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: Airprobe Usrp
-# Generated: Sat Jan 3 00:30:50 2015
+# Generated: Sat Feb 7 19:31:03 2015
##################################################
from PyQt4 import Qt
@@ -25,7 +25,7 @@
from distutils.version import StrictVersion
class airprobe_usrp(gr.top_block, Qt.QWidget):
- def __init__(self, samp_rate=2000000.052982, gain=30, fc=939.4e6):
+ def __init__(self, gain=30, fc=939.4e6, samp_rate=2000000.052982):
gr.top_block.__init__(self, "Airprobe Usrp")
Qt.QWidget.__init__(self)
self.setWindowTitle("Airprobe Usrp")
@@ -52,9 +52,9 @@
##################################################
# Parameters
##################################################
- self.samp_rate = samp_rate
self.gain = gain
self.fc = fc
+ self.samp_rate = samp_rate
##################################################
# Variables
@@ -159,7 +159,7 @@
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_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(0, ([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(
@@ -174,32 +174,19 @@
##################################################
# 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_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_0, 'msgs')
+ 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.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
+ self.connect((self.uhd_usrp_source_0, 0), (self.gsm_input_0, 0))
+ self.connect((self.uhd_usrp_source_0, 0), (self.qtgui_freq_sink_x_0, 0))
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_gain(self):
return self.gain
@@ -216,6 +203,15 @@
self.qtgui_freq_sink_x_0.set_frequency_range(self.fc, self.samp_rate)
self.set_fc_slider(self.fc)
+ 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_slider(self):
return self.g_slider
@@ -285,17 +281,17 @@
except:
print "Warning: failed to XInitThreads()"
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
- parser.add_option("-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(2000000.052982),
- help="Set samp_rate [default=%default]")
parser.add_option("-g", "--gain", dest="gain", type="eng_float", default=eng_notation.num_to_str(30),
help="Set gain [default=%default]")
parser.add_option("-f", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(939.4e6),
help="Set fc [default=%default]")
+ parser.add_option("-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(2000000.052982),
+ help="Set samp_rate [default=%default]")
(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(samp_rate=options.samp_rate, gain=options.gain, fc=options.fc)
+ tb = airprobe_usrp(gain=options.gain, fc=options.fc, samp_rate=options.samp_rate)
tb.start()
tb.show()
def quitting():
diff --git a/grc/demapping/gsm_universal_ctrl_chans_demapper.xml b/grc/demapping/gsm_universal_ctrl_chans_demapper.xml
index 52f12d6..88d2d9d 100644
--- a/grc/demapping/gsm_universal_ctrl_chans_demapper.xml
+++ b/grc/demapping/gsm_universal_ctrl_chans_demapper.xml
@@ -3,7 +3,15 @@
<name>Universal ctrl chans demapper</name>
<key>gsm_universal_ctrl_chans_demapper</key>
<import>import grgsm</import>
- <make>grgsm.universal_ctrl_chans_demapper($starts_fn_mod51, $channel_types)</make>
+ <make>grgsm.universal_ctrl_chans_demapper($timemeslot_nr, $starts_fn_mod51, $channel_types)</make>
+
+ <param>
+ <name>timemeslot_nr</name>
+ <key>timemeslot_nr</key>
+ <value>0</value>
+ <type>int</type>
+ <hide>part</hide>
+ </param>
<param>
<name>starts_fn_mod51</name>
diff --git a/include/grgsm/demapping/universal_ctrl_chans_demapper.h b/include/grgsm/demapping/universal_ctrl_chans_demapper.h
index 08814dd..07264d8 100644
--- a/include/grgsm/demapping/universal_ctrl_chans_demapper.h
+++ b/include/grgsm/demapping/universal_ctrl_chans_demapper.h
@@ -48,7 +48,7 @@
* class. gsm::universal_ctrl_chans_demapper::make is the public interface for
* creating new instances.
*/
- static sptr make(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types);
+ static sptr make(unsigned int timeslot_nr, const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types);
};
} // namespace gsm
diff --git a/lib/demapping/universal_ctrl_chans_demapper_impl.cc b/lib/demapping/universal_ctrl_chans_demapper_impl.cc
index c563f7d..a5617c0 100644
--- a/lib/demapping/universal_ctrl_chans_demapper_impl.cc
+++ b/lib/demapping/universal_ctrl_chans_demapper_impl.cc
@@ -33,22 +33,24 @@
namespace gsm {
universal_ctrl_chans_demapper::sptr
- universal_ctrl_chans_demapper::make(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types)
+ universal_ctrl_chans_demapper::make(unsigned int timeslot_nr, const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types)
{
return gnuradio::get_initial_sptr
- (new universal_ctrl_chans_demapper_impl(starts_fn_mod51, channel_types));
+ (new universal_ctrl_chans_demapper_impl(timeslot_nr, starts_fn_mod51, channel_types));
}
/*
* The private constructor
*/
- universal_ctrl_chans_demapper_impl::universal_ctrl_chans_demapper_impl(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types)
+ universal_ctrl_chans_demapper_impl::universal_ctrl_chans_demapper_impl(unsigned int timeslot_nr, const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types)
: gr::block("universal_ctrl_chans_demapper",
gr::io_signature::make(0, 0, 0),
- gr::io_signature::make(0, 0, 0))
+ gr::io_signature::make(0, 0, 0)),
+ d_timeslot(timeslot_nr)
+
{
- d_timeslot=0;
+
for(int ii=0; ii<51; ii++)
{
d_starts_fn_mod51[ii]=0;
diff --git a/lib/demapping/universal_ctrl_chans_demapper_impl.h b/lib/demapping/universal_ctrl_chans_demapper_impl.h
index 60cdc5d..aade90d 100644
--- a/lib/demapping/universal_ctrl_chans_demapper_impl.h
+++ b/lib/demapping/universal_ctrl_chans_demapper_impl.h
@@ -37,7 +37,7 @@
uint32_t d_frame_numbers[4];
pmt::pmt_t d_bursts[4];
public:
- universal_ctrl_chans_demapper_impl(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types);
+ universal_ctrl_chans_demapper_impl(unsigned int timeslot_nr, const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types);
~universal_ctrl_chans_demapper_impl();
void filter_ctrl_chans(pmt::pmt_t msg);