burst_fnr_filter: implement and expose GET/SET API
diff --git a/include/grgsm/flow_control/burst_fnr_filter.h b/include/grgsm/flow_control/burst_fnr_filter.h
index 919bc1c..dd60830 100644
--- a/include/grgsm/flow_control/burst_fnr_filter.h
+++ b/include/grgsm/flow_control/burst_fnr_filter.h
@@ -56,6 +56,12 @@
        */
       static sptr make(filter_mode mode, unsigned int fnr);
 
+      /* External API */
+      virtual unsigned int get_fn(void) = 0;
+      virtual unsigned int set_fn(unsigned int fn) = 0;
+
+      virtual filter_mode get_mode(void) = 0;
+      virtual filter_mode set_mode(filter_mode mode) = 0;
     };
 
   } // namespace gsm
diff --git a/lib/flow_control/burst_fnr_filter_impl.cc b/lib/flow_control/burst_fnr_filter_impl.cc
index e665acf..940dcdf 100644
--- a/lib/flow_control/burst_fnr_filter_impl.cc
+++ b/lib/flow_control/burst_fnr_filter_impl.cc
@@ -75,5 +75,36 @@
             message_port_pub(pmt::mp("out"), msg);
         }
     }
+
+    /* External API */
+    unsigned int
+    burst_fnr_filter_impl::get_fn(void)
+    {
+      return d_framenr;
+    }
+
+    unsigned int
+    burst_fnr_filter_impl::set_fn(unsigned int fn)
+    {
+      if (fn <= GSM_HYPERFRAME)
+        d_framenr = fn;
+
+      return d_framenr;
+    }
+
+
+    filter_mode
+    burst_fnr_filter_impl::get_mode(void)
+    {
+      return d_mode;
+    }
+
+    filter_mode
+    burst_fnr_filter_impl::set_mode(filter_mode mode)
+    {
+      d_mode = mode;
+      return d_mode;
+    }
+
   } /* namespace gsm */
 } /* namespace gr */
diff --git a/lib/flow_control/burst_fnr_filter_impl.h b/lib/flow_control/burst_fnr_filter_impl.h
index 5d9850d..b113679 100644
--- a/lib/flow_control/burst_fnr_filter_impl.h
+++ b/lib/flow_control/burst_fnr_filter_impl.h
@@ -25,6 +25,9 @@
 
 #include <grgsm/flow_control/burst_fnr_filter.h>
 
+#define GSM_SUPERFRAME    (26 * 51)
+#define GSM_HYPERFRAME    (2048 * GSM_SUPERFRAME)
+
 namespace gr {
   namespace gsm {
 
@@ -37,6 +40,13 @@
       burst_fnr_filter_impl(filter_mode mode, unsigned int fnr);
       ~burst_fnr_filter_impl();
       void process_burst(pmt::pmt_t msg);
+
+      /* External API */
+      unsigned int get_fn(void);
+      unsigned int set_fn(unsigned int fn);
+
+      filter_mode get_mode(void);
+      filter_mode set_mode(filter_mode mode);
     };
 
   } // namespace gsm