Added MCC parsing in system info extractor, fixed MNC parsing for 2-digit MNC's
diff --git a/lib/misc_utils/extract_system_info_impl.cc b/lib/misc_utils/extract_system_info_impl.cc
index 994c92b..0e6a4c8 100644
--- a/lib/misc_utils/extract_system_info_impl.cc
+++ b/lib/misc_utils/extract_system_info_impl.cc
@@ -74,7 +74,8 @@
info.pwr_db = header->signal_dbm;
info.cell_id = (msg_elements[3]<<8)+msg_elements[4]; //take cell id
info.lac = (msg_elements[8]<<8)+msg_elements[9]; //take lac
- info.mnc = (msg_elements[7]>>4); //take mnc
+ 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
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);
@@ -87,8 +88,9 @@
info.id = be16toh(header->arfcn); //take arfcn
info.pwr_db = header->signal_dbm;
info.lac = (msg_elements[6]<<8)+msg_elements[7]; //take lac
- info.mnc = (msg_elements[5]>>4); //take mnc
-
+ info.mcc = ((msg_elements[3] & 0xF) * 100) + (((msg_elements[3] & 0xF0) >> 4) * 10) + ((msg_elements[3] & 0xF)); // take mcc
+ info.mnc = (msg_elements[5] & 0xF) * 10 + (msg_elements[5]>>4); //take mnc
+
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);
@@ -177,6 +179,15 @@
return lacs;
}
+ std::vector<int> extract_system_info_impl::get_mcc()
+ {
+ std::vector<int> mccs;
+ BOOST_FOREACH(chan_info_map::value_type &i, d_c0_channels){
+ mccs.push_back(i.second.mcc);
+ }
+ return mccs;
+ }
+
std::vector<int> extract_system_info_impl::get_mnc()
{
std::vector<int> mncs;
@@ -203,6 +214,7 @@
}
return pwrs;
}
+
std::vector<int> extract_system_info_impl::get_neighbours(int chan_id)
{
std::vector<int> neighbour_cells;