diff options
author | Roman Khassraf <roman@khassraf.at> | 2015-09-26 18:44:56 +0200 |
---|---|---|
committer | Roman Khassraf <roman@khassraf.at> | 2015-09-26 18:44:56 +0200 |
commit | 9f4feb5c38d469d6ebc3e386f9d413a383f644ac (patch) | |
tree | 038e13730a22577db089fd618d6fac23f7119b52 | |
parent | a1dd7eef169ee56127de0bc20523c6aedc0afd78 (diff) |
Added parsing CCCH Config in system info extractor
-rw-r--r-- | include/grgsm/misc_utils/extract_system_info.h | 1 | ||||
-rw-r--r-- | lib/misc_utils/extract_system_info_impl.cc | 11 | ||||
-rw-r--r-- | lib/misc_utils/extract_system_info_impl.h | 7 |
3 files changed, 17 insertions, 2 deletions
diff --git a/include/grgsm/misc_utils/extract_system_info.h b/include/grgsm/misc_utils/extract_system_info.h index 72d87bf..d449cce 100644 --- a/include/grgsm/misc_utils/extract_system_info.h +++ b/include/grgsm/misc_utils/extract_system_info.h @@ -56,6 +56,7 @@ namespace gr { virtual std::vector<int> get_cell_id() = 0; virtual std::vector<int> get_mcc() = 0; virtual std::vector<int> get_mnc() = 0; + virtual std::vector<int> get_ccch_conf() = 0; virtual std::vector<int> get_neighbours(int chan_id) = 0; virtual void reset() = 0; }; diff --git a/lib/misc_utils/extract_system_info_impl.cc b/lib/misc_utils/extract_system_info_impl.cc index 0e6a4c8..73ce992 100644 --- a/lib/misc_utils/extract_system_info_impl.cc +++ b/lib/misc_utils/extract_system_info_impl.cc @@ -76,6 +76,8 @@ 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 + info.ccch_conf = (msg_elements[10] & 0x7); // ccch_conf + boost::mutex::scoped_lock lock(extract_mutex); if(d_c0_channels.find(info.id) != d_c0_channels.end()){ d_c0_channels[info.id].copy_nonzero_elements(info); @@ -215,6 +217,15 @@ namespace gr { return pwrs; } + std::vector<int> extract_system_info_impl::get_ccch_conf() + { + std::vector<int> ccch_confs; + BOOST_FOREACH(chan_info_map::value_type &i, d_c0_channels){ + ccch_confs.push_back(i.second.ccch_conf); + } + return ccch_confs; + } + std::vector<int> extract_system_info_impl::get_neighbours(int chan_id) { std::vector<int> neighbour_cells; diff --git a/lib/misc_utils/extract_system_info_impl.h b/lib/misc_utils/extract_system_info_impl.h index 6c50e10..cd0b2b0 100644 --- a/lib/misc_utils/extract_system_info_impl.h +++ b/lib/misc_utils/extract_system_info_impl.h @@ -39,10 +39,11 @@ namespace gr { unsigned int cell_id; unsigned int mcc; unsigned int mnc; + unsigned int ccch_conf; std::set<int> neighbour_cells; - chan_info() : id(-1), pwr_db(0), arfcn(0), lac(0), cell_id(0), mcc(0), mnc(0){} - chan_info(const chan_info & info) : id(info.id), pwr_db(info.pwr_db), arfcn(info.arfcn), lac(info.lac), cell_id(info.cell_id), mcc(info.mcc), mnc(info.mnc){} + chan_info() : id(-1), pwr_db(0), arfcn(0), lac(0), cell_id(0), mcc(0), mnc(0), ccch_conf(-1){} + chan_info(const chan_info & info) : id(info.id), pwr_db(info.pwr_db), arfcn(info.arfcn), lac(info.lac), cell_id(info.cell_id), mcc(info.mcc), mnc(info.mnc), ccch_conf(info.ccch_conf){} ~chan_info(){} void copy_nonzero_elements(const chan_info & info){ id = info.id; @@ -52,6 +53,7 @@ namespace gr { cell_id = (info.cell_id!=0) ? info.cell_id : cell_id; mcc = (info.mcc!=0) ? info.mcc : mcc; mnc = (info.mnc!=0) ? info.mnc : mnc; + ccch_conf = (info.ccch_conf!=-1) ? info.ccch_conf : ccch_conf; } }; @@ -86,6 +88,7 @@ namespace gr { virtual std::vector<int> get_cell_id(); virtual std::vector<int> get_mcc(); virtual std::vector<int> get_mnc(); + virtual std::vector<int> get_ccch_conf(); virtual std::vector<int> get_neighbours(int chan_id); virtual void reset(); extract_system_info_impl(); |