Added option to ignore Immediate Assignments for GPRS channels in the extractor. Enhancement of issue #84
diff --git a/grc/misc_utils/gsm_extract_immediate_assignment.xml b/grc/misc_utils/gsm_extract_immediate_assignment.xml
index 92a2b90..788ea45 100644
--- a/grc/misc_utils/gsm_extract_immediate_assignment.xml
+++ b/grc/misc_utils/gsm_extract_immediate_assignment.xml
@@ -3,7 +3,7 @@
   <name>Extract immediate assignment</name>
   <key>gsm_extract_immediate_assignment</key>
   <import>import grgsm</import>
-  <make>grgsm.extract_immediate_assignment($print_immediate_assignments)</make>
+  <make>grgsm.extract_immediate_assignment($print_immediate_assignments, $ignore_gprs)</make>
 
   <param>
     <name>Print</name>
@@ -19,6 +19,20 @@
       <key>True</key>
     </option>
   </param>
+  <param>
+    <name>Ignore GPRS</name>
+    <key>ignore_gprs</key>
+    <value>False</value>
+    <type>bool</type>
+    <option>
+      <name>False</name>
+      <key>False</key>
+    </option>
+    <option>
+      <name>True</name>
+      <key>True</key>
+    </option>
+  </param>
 
   <sink>
     <name>msgs</name>
diff --git a/include/grgsm/misc_utils/extract_immediate_assignment.h b/include/grgsm/misc_utils/extract_immediate_assignment.h
index 64b5f1e..361a9c3 100644
--- a/include/grgsm/misc_utils/extract_immediate_assignment.h
+++ b/include/grgsm/misc_utils/extract_immediate_assignment.h
@@ -48,7 +48,7 @@
        * class. gsm::extract_immediate_assignment::make is the public interface for
        * creating new instances.
        */
-      static sptr make(bool print_immediate_assignments=false);
+      static sptr make(bool print_immediate_assignments=false, bool ignore_gprs=false);
       virtual std::vector<int> get_frame_numbers() = 0;
       virtual std::vector<std::string> get_channel_types() = 0;
       virtual std::vector<int> get_timeslots() = 0;
diff --git a/lib/misc_utils/extract_immediate_assignment_impl.cc b/lib/misc_utils/extract_immediate_assignment_impl.cc
index db3318b..e3bce37 100644
--- a/lib/misc_utils/extract_immediate_assignment_impl.cc
+++ b/lib/misc_utils/extract_immediate_assignment_impl.cc
@@ -90,6 +90,11 @@
             }
             else
             {
+                // We return if ignore_gprs is set true
+                if (d_ignore_gprs)
+                {
+                    return;
+                }
                 current.channel_type = "GPRS - Temporary Block Flow TBF";
             }
 
@@ -282,21 +287,22 @@
     }
 
     extract_immediate_assignment::sptr
-    extract_immediate_assignment::make(bool print_immediate_assignments)
+    extract_immediate_assignment::make(bool print_immediate_assignments, bool ignore_gprs)
     {
       return gnuradio::get_initial_sptr
-        (new extract_immediate_assignment_impl(print_immediate_assignments));
+        (new extract_immediate_assignment_impl(print_immediate_assignments, ignore_gprs));
     }
 
     /*
      * The private constructor
      */
-    extract_immediate_assignment_impl::extract_immediate_assignment_impl(bool print_immediate_assignments)
+    extract_immediate_assignment_impl::extract_immediate_assignment_impl(bool print_immediate_assignments, bool ignore_gprs)
       : gr::block("extract_immediate_assignment",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0))
     {
         d_print_immediate_assignments = print_immediate_assignments;
+        d_ignore_gprs = ignore_gprs;
         message_port_register_in(pmt::mp("msgs"));
         set_msg_handler(pmt::mp("msgs"), boost::bind(&extract_immediate_assignment_impl::process_message, this, _1));
     }
diff --git a/lib/misc_utils/extract_immediate_assignment_impl.h b/lib/misc_utils/extract_immediate_assignment_impl.h
index 1e99f7c..80e02a5 100644
--- a/lib/misc_utils/extract_immediate_assignment_impl.h
+++ b/lib/misc_utils/extract_immediate_assignment_impl.h
@@ -57,6 +57,7 @@
             void process_message(pmt::pmt_t msg);
             immediate_assignment_map d_assignment_map;
             bool d_print_immediate_assignments;
+            bool d_ignore_gprs;
         public:
             virtual std::vector<int> get_frame_numbers();
             virtual std::vector<std::string> get_channel_types();
@@ -68,7 +69,7 @@
             virtual std::vector<int> get_arfcns();
             virtual std::vector<int> get_timing_advances();
             virtual std::vector<std::string> get_mobile_allocations();
-            extract_immediate_assignment_impl(bool print_immediate_assignments=false);
+            extract_immediate_assignment_impl(bool print_immediate_assignments=false, bool ignore_gprs=false);
             ~extract_immediate_assignment_impl();
     };
   } // namespace gsm