Added parsing CCCH Config in system info extractor
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 @@
       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 @@
             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 @@
         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 @@
         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 @@
             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 @@
       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();