aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xapps/grgsm_scanner4
-rw-r--r--lib/demapping/tch_f_chans_demapper_impl.cc2
-rw-r--r--lib/misc_utils/extract_system_info_impl.cc11
3 files changed, 14 insertions, 3 deletions
diff --git a/apps/grgsm_scanner b/apps/grgsm_scanner
index acd48d9..1688310 100755
--- a/apps/grgsm_scanner
+++ b/apps/grgsm_scanner
@@ -220,7 +220,7 @@ class wideband_scanner(gr.top_block):
# correction of central frequency
# if the receiver has large frequency offset
# the value of this variable should be set close to that offset in ppm
- self.rtlsdr_source.set_freq_corr(options.ppm, 0)
+ self.rtlsdr_source.set_freq_corr(ppm, 0)
self.rtlsdr_source.set_dc_offset_mode(2, 0)
self.rtlsdr_source.set_iq_balance_mode(0, 0)
@@ -230,7 +230,7 @@ class wideband_scanner(gr.top_block):
self.head = blocks.head(gr.sizeof_gr_complex * 1, int(rec_len * sample_rate))
# shift again by -0.1MHz in order to align channel center in 0Hz
- self.blocks_rotator_cc = blocks.rotator_cc(-2 * pi * 0.1e6 / options.samp_rate)
+ self.blocks_rotator_cc = blocks.rotator_cc(-2 * pi * 0.1e6 / sample_rate)
self.wideband_receiver = wideband_receiver(OSR=4, fc=carrier_frequency, samp_rate=sample_rate)
self.gsm_extract_system_info = grgsm.extract_system_info()
diff --git a/lib/demapping/tch_f_chans_demapper_impl.cc b/lib/demapping/tch_f_chans_demapper_impl.cc
index a672b24..53f46fb 100644
--- a/lib/demapping/tch_f_chans_demapper_impl.cc
+++ b/lib/demapping/tch_f_chans_demapper_impl.cc
@@ -87,7 +87,7 @@ namespace gr {
new_hdr->sub_type = GSMTAP_CHANNEL_TCH_F;
if (fn_mod13 == 12)
- header->sub_type = GSMTAP_CHANNEL_ACCH|GSMTAP_CHANNEL_TCH_F;
+ new_hdr->sub_type = GSMTAP_CHANNEL_ACCH|GSMTAP_CHANNEL_TCH_F;
pmt::pmt_t msg_binary_blob = pmt::make_blob(new_msg,sizeof(gsmtap_hdr)+BURST_SIZE);
pmt::pmt_t msg_out = pmt::cons(pmt::PMT_NIL, msg_binary_blob);
diff --git a/lib/misc_utils/extract_system_info_impl.cc b/lib/misc_utils/extract_system_info_impl.cc
index bb7fada..6f745a0 100644
--- a/lib/misc_utils/extract_system_info_impl.cc
+++ b/lib/misc_utils/extract_system_info_impl.cc
@@ -76,6 +76,12 @@ namespace gr {
info.lac = (msg_elements[8]<<8)+msg_elements[9]; //take lac
info.mcc = ((msg_elements[5] & 0xF) * 100) + (((msg_elements[5] & 0xF0) >> 4) * 10) + ((msg_elements[6] & 0xF)); // take mcc
info.mnc = (msg_elements[7] & 0xF) * 10 + (msg_elements[7]>>4); //take mnc
+ if (((msg_elements[6] & 0xF0) >> 4) < 10) // we have a 3 digit mnc, see figure 10.5.3 of 3GPP TS 24.008
+ {
+ info.mnc *= 10;
+ info.mnc += (msg_elements[6] & 0xF0) >> 4;
+ }
+
info.ccch_conf = (msg_elements[10] & 0x7); // ccch_conf
boost::mutex::scoped_lock lock(extract_mutex);
@@ -92,6 +98,11 @@ namespace gr {
info.lac = (msg_elements[6]<<8)+msg_elements[7]; //take lac
info.mcc = ((msg_elements[3] & 0xF) * 100) + (((msg_elements[3] & 0xF0) >> 4) * 10) + ((msg_elements[4] & 0xF)); // take mcc
info.mnc = (msg_elements[5] & 0xF) * 10 + (msg_elements[5]>>4); //take mnc
+ if (((msg_elements[4] & 0xF0) >> 4) < 10) // we have a 3 digit mnc, see figure 10.5.3 of 3GPP TS 24.008
+ {
+ info.mnc *= 10;
+ info.mnc += (msg_elements[4] & 0xF0) >> 4;
+ }
boost::mutex::scoped_lock lock(extract_mutex);
if(d_c0_channels.find(info.id) != d_c0_channels.end()){