Merge branch 'grgsm_on_win' of https://github.com/ptrkrysik/gr-gsm into grgsm_on_win
diff --git a/.travis.yml b/.travis.yml
index 6c1b51b..034ede2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,10 +3,11 @@
language: ruby
env:
- #- DOCKERFILE=tests/dockerfiles/Debian_Jessie.docker IMGNAME=debjess-grgsm
- #- DOCKERFILE=tests/dockerfiles/Ubuntu_15_04.docker IMGNAME=ubu15.04-grgsm
- #- DOCKERFILE=tests/dockerfiles/Debian_testing.docker IMGNAME=debtest-grgsm
+ - DOCKERFILE=tests/dockerfiles/Debian_testing.docker IMGNAME=debtest-grgsm
+ - DOCKERFILE=tests/dockerfiles/Debian_testing_package.docker IMGNAME=debtest-grgsm-package
- DOCKERFILE=tests/dockerfiles/Ubuntu_16_04.docker IMGNAME=ubu16.04-grgsm
+ - DOCKERFILE=tests/dockerfiles/Kali.docker IMGNAME=kali-grgsm
+
services:
- docker
@@ -15,5 +16,5 @@
- cat $DOCKERFILE > Dockerfile ; docker build -t $IMGNAME .
script:
- - docker run -it --rm $IMGNAME sh -c 'cd /src/build;make test'
+# - docker run -it --rm $IMGNAME sh -c 'cd /src/build;make test'
- docker run -it --rm $IMGNAME /src/tests/scripts/decode.sh
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e56092..811cd93 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -61,7 +61,7 @@
# Set the version information here
set(VERSION_INFO_MAJOR_VERSION 0)
set(VERSION_INFO_API_COMPAT 41)
-set(VERSION_INFO_MINOR_VERSION 2)
+set(VERSION_INFO_MINOR_VERSION 3)
set(VERSION_INFO_MAINT_VERSION 0)
include(GrVersion) #setup version info
diff --git a/apps/grgsm_livemon b/apps/grgsm_livemon
index 1ec5ecb..3e818c5 100755
--- a/apps/grgsm_livemon
+++ b/apps/grgsm_livemon
@@ -25,7 +25,7 @@
# Title: Gr-gsm Livemon
# Author: Piotr Krysik
# Description: Interactive monitor of a single C0 channel with analysis performed by Wireshark (command to run wireshark: sudo wireshark -k -f udp -Y gsmtap -i lo)
-# Generated: Sun Aug 27 08:34:42 2017
+# Generated: Tue Jan 23 14:59:18 2018
##################################################
if __name__ == '__main__':
@@ -54,14 +54,16 @@
import sip
import sys
import time
+from gnuradio import qtgui
class grgsm_livemon(gr.top_block, Qt.QWidget):
- def __init__(self, args="", collector="localhost", collectorport="4729", fc=941.8e6, gain=30, osr=4, ppm=0, samp_rate=2000000.052982, serverport="4729", shiftoff=400e3):
+ def __init__(self, args="", collector='localhost', collectorport='4729', fc=941.8e6, gain=30, osr=4, ppm=0, samp_rate=2000000.052982, serverport='4729', shiftoff=400e3):
gr.top_block.__init__(self, "Gr-gsm Livemon")
Qt.QWidget.__init__(self)
self.setWindowTitle("Gr-gsm Livemon")
+ qtgui.util.check_set_qss()
try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except:
@@ -81,6 +83,7 @@
self.settings = Qt.QSettings("GNU Radio", "grgsm_livemon")
self.restoreGeometry(self.settings.value("geometry").toByteArray())
+
##################################################
# Parameters
##################################################
@@ -99,20 +102,20 @@
# Variables
##################################################
self.ppm_slider = ppm_slider = ppm
- self.g_slider = g_slider = gain
+ self.gain_slider = gain_slider = gain
self.fc_slider = fc_slider = fc
##################################################
# Blocks
##################################################
self._ppm_slider_range = Range(-150, 150, 0.1, ppm, 100)
- self._ppm_slider_win = RangeWidget(self._ppm_slider_range, self.set_ppm_slider, "PPM Offset", "counter", float)
+ self._ppm_slider_win = RangeWidget(self._ppm_slider_range, self.set_ppm_slider, 'PPM Offset', "counter", float)
self.top_layout.addWidget(self._ppm_slider_win)
- self._g_slider_range = Range(0, 50, 0.5, gain, 100)
- self._g_slider_win = RangeWidget(self._g_slider_range, self.set_g_slider, "Gain", "counter", float)
- self.top_layout.addWidget(self._g_slider_win)
+ self._gain_slider_range = Range(0, 100, 0.5, gain, 100)
+ self._gain_slider_win = RangeWidget(self._gain_slider_range, self.set_gain_slider, 'Gain', "counter", float)
+ self.top_layout.addWidget(self._gain_slider_win)
self._fc_slider_range = Range(800e6, 1990e6, 2e5, fc, 100)
- self._fc_slider_win = RangeWidget(self._fc_slider_range, self.set_fc_slider, "Frequency", "counter_slider", float)
+ self._fc_slider_win = RangeWidget(self._fc_slider_range, self.set_fc_slider, 'Frequency', "counter_slider", float)
self.top_layout.addWidget(self._fc_slider_win)
self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + args )
self.rtlsdr_source_0.set_sample_rate(samp_rate)
@@ -121,12 +124,12 @@
self.rtlsdr_source_0.set_dc_offset_mode(2, 0)
self.rtlsdr_source_0.set_iq_balance_mode(2, 0)
self.rtlsdr_source_0.set_gain_mode(False, 0)
- self.rtlsdr_source_0.set_gain(g_slider, 0)
+ self.rtlsdr_source_0.set_gain(gain_slider, 0)
self.rtlsdr_source_0.set_if_gain(20, 0)
self.rtlsdr_source_0.set_bb_gain(20, 0)
- self.rtlsdr_source_0.set_antenna("", 0)
+ self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(250e3+abs(shiftoff), 0)
-
+
self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
1024, #size
firdes.WIN_BLACKMAN_hARRIS, #wintype
@@ -137,20 +140,22 @@
)
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_y_label('Relative Gain', 'dB')
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)
+ self.qtgui_freq_sink_x_0.enable_axis_labels(True)
self.qtgui_freq_sink_x_0.enable_control_panel(False)
-
+
if not True:
self.qtgui_freq_sink_x_0.disable_legend()
-
+
if "complex" == "float" or "complex" == "msg_float":
self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)
-
- labels = ["", "", "", "", "",
- "", "", "", "", ""]
+
+ labels = ['', '', '', '', '',
+ '', '', '', '', '']
widths = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
colors = ["blue", "red", "green", "black", "cyan",
@@ -165,7 +170,7 @@
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_sdcch8_demapper_0 = grgsm.gsm_sdcch8_demapper(
@@ -177,44 +182,45 @@
self.gsm_input_0 = grgsm.gsm_input(
ppm=ppm-int(ppm),
osr=4,
- fc=fc,
+ fc=fc_slider-shiftoff,
samp_rate_in=samp_rate,
)
self.gsm_decryption_0 = grgsm.decryption(([]), 1)
self.gsm_control_channels_decoder_0_0 = grgsm.control_channels_decoder()
self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
- self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc-shiftoff, samp_rate, osr)
+ self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc_slider-shiftoff, samp_rate, osr)
self.gsm_bcch_ccch_demapper_0 = grgsm.gsm_bcch_ccch_demapper(
timeslot_nr=0,
)
self.blocks_socket_pdu_0_1 = blocks.socket_pdu("UDP_CLIENT", collector, collectorport, 1500, False)
- self.blocks_socket_pdu_0_0 = blocks.socket_pdu("UDP_SERVER", "127.0.0.1", serverport, 10000, False)
+ self.blocks_socket_pdu_0_0 = blocks.socket_pdu("UDP_SERVER", '127.0.0.1', serverport, 10000, False)
self.blocks_rotator_cc_0 = blocks.rotator_cc(-2*pi*shiftoff/samp_rate)
+
+
##################################################
# Connections
##################################################
- self.msg_connect((self.blocks_socket_pdu_0_0, 'pdus'), (self.gsm_message_printer_1, 'msgs'))
- self.msg_connect((self.gsm_bcch_ccch_demapper_0, 'bursts'), (self.gsm_control_channels_decoder_0, 'bursts'))
- self.msg_connect((self.gsm_clock_offset_control_0, 'ctrl'), (self.gsm_input_0, 'ctrl_in'))
- self.msg_connect((self.gsm_control_channels_decoder_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))
- self.msg_connect((self.gsm_control_channels_decoder_0_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))
- self.msg_connect((self.gsm_decryption_0, 'bursts'), (self.gsm_control_channels_decoder_0_0, 'bursts'))
- self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_bcch_ccch_demapper_0, 'bursts'))
- 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_sdcch8_demapper_0, 'bursts'))
- self.msg_connect((self.gsm_sdcch8_demapper_0, 'bursts'), (self.gsm_decryption_0, 'bursts'))
- self.connect((self.blocks_rotator_cc_0, 0), (self.gsm_input_0, 0))
- self.connect((self.blocks_rotator_cc_0, 0), (self.qtgui_freq_sink_x_0, 0))
- self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
- self.connect((self.rtlsdr_source_0, 0), (self.blocks_rotator_cc_0, 0))
+ self.msg_connect((self.blocks_socket_pdu_0_0, 'pdus'), (self.gsm_message_printer_1, 'msgs'))
+ self.msg_connect((self.gsm_bcch_ccch_demapper_0, 'bursts'), (self.gsm_control_channels_decoder_0, 'bursts'))
+ self.msg_connect((self.gsm_clock_offset_control_0, 'ctrl'), (self.gsm_input_0, 'ctrl_in'))
+ self.msg_connect((self.gsm_control_channels_decoder_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))
+ self.msg_connect((self.gsm_control_channels_decoder_0_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))
+ self.msg_connect((self.gsm_decryption_0, 'bursts'), (self.gsm_control_channels_decoder_0_0, 'bursts'))
+ self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_bcch_ccch_demapper_0, 'bursts'))
+ 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_sdcch8_demapper_0, 'bursts'))
+ self.msg_connect((self.gsm_sdcch8_demapper_0, 'bursts'), (self.gsm_decryption_0, 'bursts'))
+ self.connect((self.blocks_rotator_cc_0, 0), (self.gsm_input_0, 0))
+ self.connect((self.blocks_rotator_cc_0, 0), (self.qtgui_freq_sink_x_0, 0))
+ self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
+ self.connect((self.rtlsdr_source_0, 0), (self.blocks_rotator_cc_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "grgsm_livemon")
self.settings.setValue("geometry", self.saveGeometry())
event.accept()
-
def get_args(self):
return self.args
@@ -239,14 +245,13 @@
def set_fc(self, fc):
self.fc = fc
self.set_fc_slider(self.fc)
- self.gsm_input_0.set_fc(self.fc)
def get_gain(self):
return self.gain
def set_gain(self, gain):
self.gain = gain
- self.set_g_slider(self.gain)
+ self.set_gain_slider(self.gain)
def get_osr(self):
return self.osr
@@ -267,10 +272,10 @@
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
- self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
- self.gsm_input_0.set_samp_rate_in(self.samp_rate)
- self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
+ self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
+ self.gsm_input_0.set_samp_rate_in(self.samp_rate)
+ self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
def get_serverport(self):
return self.serverport
@@ -283,9 +288,11 @@
def set_shiftoff(self, shiftoff):
self.shiftoff = shiftoff
- self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
self.rtlsdr_source_0.set_center_freq(self.fc_slider-self.shiftoff, 0)
self.rtlsdr_source_0.set_bandwidth(250e3+abs(self.shiftoff), 0)
+ self.gsm_input_0.set_fc(self.fc_slider-self.shiftoff)
+ self.gsm_clock_offset_control_0.set_fc(self.fc_slider-self.shiftoff)
+ self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
def get_ppm_slider(self):
return self.ppm_slider
@@ -294,32 +301,35 @@
self.ppm_slider = ppm_slider
self.rtlsdr_source_0.set_freq_corr(self.ppm_slider, 0)
- def get_g_slider(self):
- return self.g_slider
+ def get_gain_slider(self):
+ return self.gain_slider
- def set_g_slider(self, g_slider):
- self.g_slider = g_slider
- self.rtlsdr_source_0.set_gain(self.g_slider, 0)
+ def set_gain_slider(self, gain_slider):
+ self.gain_slider = gain_slider
+ self.rtlsdr_source_0.set_gain(self.gain_slider, 0)
def get_fc_slider(self):
return self.fc_slider
def set_fc_slider(self, fc_slider):
self.fc_slider = fc_slider
- self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
self.rtlsdr_source_0.set_center_freq(self.fc_slider-self.shiftoff, 0)
+ self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
+ self.gsm_input_0.set_fc(self.fc_slider-self.shiftoff)
+ self.gsm_clock_offset_control_0.set_fc(self.fc_slider-self.shiftoff)
def argument_parser():
- parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+ description = 'Interactive monitor of a single C0 channel with analysis performed by Wireshark (command to run wireshark: sudo wireshark -k -f udp -Y gsmtap -i lo)'
+ parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description)
parser.add_option(
"", "--args", dest="args", type="string", default="",
help="Set Device Arguments [default=%default]")
parser.add_option(
- "", "--collector", dest="collector", type="string", default="localhost",
+ "", "--collector", dest="collector", type="string", default='localhost',
help="Set IP or DNS name of collector point [default=%default]")
parser.add_option(
- "", "--collectorport", dest="collectorport", type="string", default="4729",
+ "", "--collectorport", dest="collectorport", type="string", default='4729',
help="Set UDP port number of collector [default=%default]")
parser.add_option(
"-f", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(941.8e6),
@@ -337,7 +347,7 @@
"-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(
- "", "--serverport", dest="serverport", type="string", default="4729",
+ "", "--serverport", dest="serverport", type="string", default='4729',
help="Set UDP server listening port [default=%default]")
parser.add_option(
"-o", "--shiftoff", dest="shiftoff", type="eng_float", default=eng_notation.num_to_str(400e3),
diff --git a/apps/grgsm_livemon.grc b/apps/grgsm_livemon.grc
index 1b80a19..3d2236d 100644
--- a/apps/grgsm_livemon.grc
+++ b/apps/grgsm_livemon.grc
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
-<?grc format='1' created='3.7.9'?>
+<?grc format='1' created='3.7.12'?>
<flow_graph>
<timestamp>Sat Dec 13 10:49:59 2014</timestamp>
<block>
@@ -73,6 +73,10 @@
<value>True</value>
</param>
<param>
+ <key>sizing_mode</key>
+ <value>fixed</value>
+ </param>
+ <param>
<key>thread_safe_setters</key>
<value></value>
</param>
@@ -80,6 +84,10 @@
<key>title</key>
<value>Gr-gsm Livemon</value>
</param>
+ <param>
+ <key>placement</key>
+ <value>(0,0)</value>
+ </param>
</block>
<block>
<key>variable_qtgui_range</key>
@@ -196,7 +204,7 @@
</param>
<param>
<key>stop</key>
- <value>50</value>
+ <value>100</value>
</param>
<param>
<key>rangeType</key>
@@ -305,6 +313,10 @@
<value></value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>string</value>
</param>
@@ -509,6 +521,10 @@
<value></value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>string</value>
</param>
@@ -552,6 +568,10 @@
<value></value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>string</value>
</param>
@@ -595,6 +615,10 @@
<value>f</value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>eng_float</value>
</param>
@@ -638,6 +662,10 @@
<value>g</value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>eng_float</value>
</param>
@@ -733,7 +761,7 @@
</param>
<param>
<key>fc</key>
- <value>fc-shiftoff</value>
+ <value>fc_slider-shiftoff</value>
</param>
<param>
<key>samp_rate</key>
@@ -909,7 +937,7 @@
</param>
<param>
<key>fc</key>
- <value>fc</value>
+ <value>fc_slider-shiftoff</value>
</param>
<param>
<key>ppm</key>
@@ -975,7 +1003,7 @@
</param>
<param>
<key>cell_allocation</key>
- <value>[0]</value>
+ <value>[arfcn.downlink2arfcn(fc)]</value>
</param>
<param>
<key>comment</key>
@@ -1097,6 +1125,37 @@
</param>
</block>
<block>
+ <key>import</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1016, 60)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>import_1</value>
+ </param>
+ <param>
+ <key>import</key>
+ <value>from grgsm import arfcn</value>
+ </param>
+ </block>
+ <block>
<key>parameter</key>
<param>
<key>alias</key>
@@ -1131,6 +1190,10 @@
<value></value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>intx</value>
</param>
@@ -1174,6 +1237,10 @@
<value>p</value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>eng_float</value>
</param>
@@ -1193,6 +1260,10 @@
<value>1.0</value>
</param>
<param>
+ <key>axislabels</key>
+ <value>True</value>
+ </param>
+ <param>
<key>bw</key>
<value>samp_rate</value>
</param>
@@ -1461,6 +1532,10 @@
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
<param>
+ <key>label</key>
+ <value>Relative Gain</value>
+ </param>
+ <param>
<key>ymax</key>
<value>10</value>
</param>
@@ -1468,6 +1543,10 @@
<key>ymin</key>
<value>-140</value>
</param>
+ <param>
+ <key>units</key>
+ <value>dB</value>
+ </param>
</block>
<block>
<key>rtlsdr_source</key>
@@ -2911,6 +2990,10 @@
<value>s</value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>eng_float</value>
</param>
@@ -2954,6 +3037,10 @@
<value></value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>string</value>
</param>
@@ -2997,6 +3084,10 @@
<value>o</value>
</param>
<param>
+ <key>hide</key>
+ <value>none</value>
+ </param>
+ <param>
<key>type</key>
<value>eng_float</value>
</param>
diff --git a/apps/grgsm_livemon_headless b/apps/grgsm_livemon_headless
old mode 100644
new mode 100755
diff --git a/grc/receiver/gsm_clock_offset_control.xml b/grc/receiver/gsm_clock_offset_control.xml
index 17378ea..c5a932a 100644
--- a/grc/receiver/gsm_clock_offset_control.xml
+++ b/grc/receiver/gsm_clock_offset_control.xml
@@ -4,7 +4,7 @@
<key>gsm_clock_offset_control</key>
<import>import grgsm</import>
<make>grgsm.clock_offset_control($fc, $samp_rate, $osr)</make>
- <callback></callback>
+ <callback>set_fc($fc)</callback>
<param>
<name>fc</name>
<key>fc</key>
diff --git a/include/grgsm/misc_utils/extract_cmc.h b/include/grgsm/misc_utils/extract_cmc.h
index 2b07bbe..82bd729 100644
--- a/include/grgsm/misc_utils/extract_cmc.h
+++ b/include/grgsm/misc_utils/extract_cmc.h
@@ -53,6 +53,7 @@
virtual std::vector<int> get_framenumbers() = 0;
virtual std::vector<int> get_a5_versions() = 0;
virtual std::vector<int> get_start_ciphering() = 0;
+ virtual std::vector<int> get_assignment_commands() = 0;
};
} // namespace gsm
diff --git a/lib/misc_utils/extract_cmc_impl.cc b/lib/misc_utils/extract_cmc_impl.cc
index 16f2f6b..c28e49f 100644
--- a/lib/misc_utils/extract_cmc_impl.cc
+++ b/lib/misc_utils/extract_cmc_impl.cc
@@ -40,7 +40,7 @@
gsmtap_hdr * header = (gsmtap_hdr *)message_plus_header;
uint8_t * msg_elements = (uint8_t *)(message_plus_header+sizeof(gsmtap_hdr));
- if((msg_elements[3] & 0xF) == 0x6 && msg_elements[4] == 0x35)
+ if((msg_elements[3] & 0xFF) == 0x06 && msg_elements[4] == 0x35)
{
int frame_nr = be32toh(header->frame_number);
@@ -50,6 +50,11 @@
d_framenumbers.push_back(frame_nr);
d_a5_versions.push_back(a5_version);
}
+ if((msg_elements[3] & 0xFF) == 0x06 && msg_elements[4] == 0x2e)
+ {
+ int frame_nr = be32toh(header->frame_number);
+ d_assignment_commands.push_back(frame_nr);
+ }
}
std::vector<int> extract_cmc_impl::get_framenumbers()
@@ -67,6 +72,11 @@
return d_start_ciphering;
}
+ std::vector<int> extract_cmc_impl::get_assignment_commands()
+ {
+ return d_assignment_commands;
+ }
+
extract_cmc::sptr
extract_cmc::make()
{
diff --git a/lib/misc_utils/extract_cmc_impl.h b/lib/misc_utils/extract_cmc_impl.h
index b62cadc..1dd02cb 100644
--- a/lib/misc_utils/extract_cmc_impl.h
+++ b/lib/misc_utils/extract_cmc_impl.h
@@ -35,10 +35,12 @@
std::vector<int> d_framenumbers;
std::vector<int> d_a5_versions;
std::vector<int> d_start_ciphering;
+ std::vector<int> d_assignment_commands;
public:
virtual std::vector<int> get_framenumbers();
virtual std::vector<int> get_a5_versions();
virtual std::vector<int> get_start_ciphering();
+ virtual std::vector<int> get_assignment_commands();
extract_cmc_impl();
~extract_cmc_impl();
};
diff --git a/tests/dockerfiles/Debian_Jessie.docker b/tests/dockerfiles/Debian_Jessie.docker
deleted file mode 100644
index 1252314..0000000
--- a/tests/dockerfiles/Debian_Jessie.docker
+++ /dev/null
@@ -1,34 +0,0 @@
-FROM debian:testing
-
-# We know it's going to foul up, so we run this install separately and then ...fix... dpkg status
-RUN apt-get update && apt-get install -y uhd-host || \
- sed -i "s/Status: install ok half-configured/Status: install ok installed/g" /var/lib/dpkg/status
-
-RUN apt-get install -y \
- git \
- vim \
- cmake \
- autoconf \
- libtool \
- build-essential \
- python-docutils \
- libboost-all-dev \
- libcppunit-dev swig \
- doxygen \
- liblog4cpp5-dev \
- python-scipy \
- gnuradio \
- gnuradio-dev \
- gr-osmosdr \
- libosmogsm5
-
-COPY ./ /src/
-RUN ls /src
-
-RUN mkdir /src/build && \
- cd /src/build && \
- cmake .. && \
- make && \
- make test && \
- make install && \
- ldconfig
diff --git a/tests/dockerfiles/Debian_testing.docker b/tests/dockerfiles/Debian_testing.docker
index 26d67d6..9cdd389 100644
--- a/tests/dockerfiles/Debian_testing.docker
+++ b/tests/dockerfiles/Debian_testing.docker
@@ -1,5 +1,5 @@
FROM debian:testing
-MAINTAINER Ash Wilson
+MAINTAINER Piotr Krysik
RUN apt-get update && apt-get install -y \
cmake \
@@ -24,4 +24,5 @@
RUN cmake .. && \
make && \
make install && \
- ldconfig
+ ldconfig && \
+ make test
diff --git a/tests/dockerfiles/Debian_testing_package.docker b/tests/dockerfiles/Debian_testing_package.docker
new file mode 100644
index 0000000..35d31cd
--- /dev/null
+++ b/tests/dockerfiles/Debian_testing_package.docker
@@ -0,0 +1,10 @@
+FROM debian:testing
+MAINTAINER Piotr Krysik
+
+RUN apt-get update && apt-get install -y \
+ gr-gsm
+
+COPY ./ /src/
+RUN ls /src
+
+
diff --git a/tests/dockerfiles/Ubuntu_16_04_debbuild.docker b/tests/dockerfiles/Kali.docker
similarity index 69%
rename from tests/dockerfiles/Ubuntu_16_04_debbuild.docker
rename to tests/dockerfiles/Kali.docker
index 030ece8..5442f33 100644
--- a/tests/dockerfiles/Ubuntu_16_04_debbuild.docker
+++ b/tests/dockerfiles/Kali.docker
@@ -1,11 +1,12 @@
-FROM ubuntu:16.04
-MAINTAINER Ash Wilson
+FROM kalilinux/kali-linux-docker
+MAINTAINER Piotr Krysik
RUN apt-get update && apt-get install -y \
cmake \
autoconf \
libtool \
build-essential \
+ python-docutils \
libcppunit-dev \
swig \
doxygen \
@@ -21,7 +22,7 @@
RUN mkdir /src/build
WORKDIR /src/build
RUN cmake .. && \
- make package && \
- cpack -G DEB && \
- ls
-
+ make && \
+ make install && \
+ ldconfig && \
+ make test
diff --git a/tests/dockerfiles/Ubuntu_15_04.docker b/tests/dockerfiles/Ubuntu_15_04.docker
deleted file mode 100644
index 973b624..0000000
--- a/tests/dockerfiles/Ubuntu_15_04.docker
+++ /dev/null
@@ -1,80 +0,0 @@
-FROM ubuntu:15.04
-MAINTAINER Ash Wilson
-
-ENV OSMOSDR_GIT="git://git.osmocom.org/libosmocore.git"
-ENV OSMOCORE_TAG=0.6.3
-
-# We know it's going to foul up, so we run this install separately and then ...fix... dpkg status
-RUN apt-get update && apt-get install -y uhd-host || \
- sed -i "s/Status: install ok half-configured/Status: install ok installed/g" /var/lib/dpkg/status
-
-
-RUN apt-get update && apt-get install -y \
- git \
- python \
- python-scipy \
- cmake \
- make \
- autoconf \
- automake \
- cpp-4.9 \
- gcc \
- g++ \
- libstdc++-4.9-dev \
- libcppunit-dev \
- swig \
- swig2.0 \
- doxygen \
- liblog4cpp5 \
- liblog4cpp5-dev \
- build-essential \
- python-docutils \
- libtool \
- shtool \
- pkg-config \
- libpcsclite-dev \
- gnuradio \
- gnuradio-dev \
- gr-osmosdr \
- libfftw3-dev \
- libusb-1.0-0-dev \
- libvolk-dev \
- libvolk0.0.0 \
- libboost-all-dev \
- libgnuradio-osmosdr0.1.3 \
- libmirisdr0 \
- libosmosdr-dev \
- libosmosdr0 \
- librtlsdr-dev \
- librtlsdr0 \
- osmo-sdr \
- rtl-sdr \
- wget \
- python-talloc-dev \
- libtalloc2 \
- libtalloc-dev \
- unzip
-
-# Build libosmosdr
-RUN git clone $OSMOSDR_GIT
-WORKDIR libosmocore
-RUN git checkout tags/$OSMOCORE_TAG && \
- autoreconf -i && \
- ./configure && \
- make && \
- make install && \
- ldconfig -i
-
-COPY ./ /src/
-
-RUN mkdir /root/.gnuradio/
-RUN echo "[grc]\nlocal_blocks_path=/usr/local/share/gnuradio/grc/blocks" > \
- /root/.gnuradio/config.conf
-
-RUN mkdir /src/build
-WORKDIR /src/build
-RUN cmake .. && \
- make && \
- make test && \
- make install && \
- ldconfig
diff --git a/tests/dockerfiles/Ubuntu_16_04.docker b/tests/dockerfiles/Ubuntu_16_04.docker
index e0ccbea..e56b87f 100644
--- a/tests/dockerfiles/Ubuntu_16_04.docker
+++ b/tests/dockerfiles/Ubuntu_16_04.docker
@@ -1,5 +1,5 @@
FROM ubuntu:16.04
-MAINTAINER Ash Wilson
+MAINTAINER Piotr Krysik
RUN apt-get update && apt-get install -y \
cmake \
@@ -24,4 +24,5 @@
RUN cmake .. && \
make && \
make install && \
- ldconfig
+ ldconfig && \
+ make test
diff --git a/tests/dockerfiles/Ubuntu_16_04_debinstall.docker b/tests/dockerfiles/Ubuntu_16_04_debinstall.docker
deleted file mode 100644
index 0a476ce..0000000
--- a/tests/dockerfiles/Ubuntu_16_04_debinstall.docker
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM ubuntu:16.04
-MAINTAINER Ash Wilson
-
-RUN apt-get update && apt-get install -y \
- software-properties-common
-
-RUN add-apt-repository -y ppa:ptrkrysik/gr-gsm
-
-RUN apt-get update && apt-get install -y \
- gr-gsm
-
-COPY ./ /src/
-RUN ls /src