aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRoman Khassraf <roman@khassraf.at>2015-09-26 18:44:56 +0200
committerRoman Khassraf <roman@khassraf.at>2015-09-26 18:44:56 +0200
commit9f4feb5c38d469d6ebc3e386f9d413a383f644ac (patch)
tree038e13730a22577db089fd618d6fac23f7119b52 /lib
parenta1dd7eef169ee56127de0bc20523c6aedc0afd78 (diff)
Added parsing CCCH Config in system info extractor
Diffstat (limited to 'lib')
-rw-r--r--lib/misc_utils/extract_system_info_impl.cc11
-rw-r--r--lib/misc_utils/extract_system_info_impl.h7
2 files changed, 16 insertions, 2 deletions
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();