aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Khassraf <roman@khassraf.at>2015-07-26 13:47:26 +0200
committerRoman Khassraf <roman@khassraf.at>2015-07-26 13:47:26 +0200
commit2bf49e4dd58d1c0833bde8f6af3fe0d71b2b694b (patch)
treebbbe7f1963ff6ccf7bd5c360fcfe8b6fa1a1eafe
parent829eabb58c0e7c35d7abde55609b8c56154d7d7f (diff)
Added option to message printer that allows printing the gsmtap header.
-rw-r--r--grc/misc_utils/gsm_message_printer.xml16
-rw-r--r--include/grgsm/misc_utils/message_printer.h2
-rw-r--r--lib/misc_utils/message_printer_impl.cc18
-rw-r--r--lib/misc_utils/message_printer_impl.h3
4 files changed, 31 insertions, 8 deletions
diff --git a/grc/misc_utils/gsm_message_printer.xml b/grc/misc_utils/gsm_message_printer.xml
index 8b44b22..7e390ed 100644
--- a/grc/misc_utils/gsm_message_printer.xml
+++ b/grc/misc_utils/gsm_message_printer.xml
@@ -4,7 +4,7 @@
<key>gsm_message_printer</key>
<import>import grgsm</import>
<import>import pmt</import>
- <make>grgsm.message_printer(pmt.intern($prepend_string))</make>
+ <make>grgsm.message_printer(pmt.intern($prepend_string), $print_gsmtap_header)</make>
<param>
<name>Prepend String</name>
@@ -13,6 +13,20 @@
<type>string</type>
<hide>part</hide>
</param>
+ <param>
+ <name>Print GSMTap header</name>
+ <key>print_gsmtap_header</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/message_printer.h b/include/grgsm/misc_utils/message_printer.h
index 3914707..d40352f 100644
--- a/include/grgsm/misc_utils/message_printer.h
+++ b/include/grgsm/misc_utils/message_printer.h
@@ -48,7 +48,7 @@ namespace gr {
* class. gsm::message_printer::make is the public interface for
* creating new instances.
*/
- static sptr make(pmt::pmt_t prepend_string);
+ static sptr make(pmt::pmt_t prepend_string, bool print_gsmtap_header=false);
};
} // namespace gsm
diff --git a/lib/misc_utils/message_printer_impl.cc b/lib/misc_utils/message_printer_impl.cc
index d02e2fe..2599f65 100644
--- a/lib/misc_utils/message_printer_impl.cc
+++ b/lib/misc_utils/message_printer_impl.cc
@@ -41,7 +41,15 @@ namespace gr {
gsmtap_hdr * header = (gsmtap_hdr *)message_plus_header;
std::cout << d_prepend_string;
- for(int ii=sizeof(gsmtap_hdr); ii<message_plus_header_len; ii++)
+
+ int start_index = sizeof(gsmtap_hdr);
+
+ if (d_print_gsmtap_header)
+ {
+ start_index = 0;
+ }
+
+ for(int ii=start_index; ii<message_plus_header_len; ii++)
{
printf(" %02x", message_plus_header[ii]);
}
@@ -49,24 +57,24 @@ namespace gr {
}
message_printer::sptr
- message_printer::make(pmt::pmt_t prepend_string)
+ message_printer::make(pmt::pmt_t prepend_string, bool print_gsmtap_header)
{
return gnuradio::get_initial_sptr
- (new message_printer_impl(prepend_string));
+ (new message_printer_impl(prepend_string, print_gsmtap_header));
}
/*
* The private constructor
*/
- message_printer_impl::message_printer_impl(pmt::pmt_t prepend_string)
+ message_printer_impl::message_printer_impl(pmt::pmt_t prepend_string, bool print_gsmtap_header)
: gr::block("message_printer",
gr::io_signature::make(0, 0, 0),
gr::io_signature::make(0, 0, 0))
{
d_prepend_string = prepend_string;
+ d_print_gsmtap_header = print_gsmtap_header;
message_port_register_in(pmt::mp("msgs"));
set_msg_handler(pmt::mp("msgs"), boost::bind(&message_printer_impl::message_print, this, _1));
-
}
/*
diff --git a/lib/misc_utils/message_printer_impl.h b/lib/misc_utils/message_printer_impl.h
index e82485e..e44288b 100644
--- a/lib/misc_utils/message_printer_impl.h
+++ b/lib/misc_utils/message_printer_impl.h
@@ -33,8 +33,9 @@ namespace gr {
private:
void message_print(pmt::pmt_t msg);
pmt::pmt_t d_prepend_string;
+ bool d_print_gsmtap_header;
public:
- message_printer_impl(pmt::pmt_t prepend_string);
+ message_printer_impl(pmt::pmt_t prepend_string, bool print_gsmtap_header=false);
~message_printer_impl();
};