diff options
author | Roman Khassraf <roman@khassraf.at> | 2015-08-05 12:41:13 +0200 |
---|---|---|
committer | Roman Khassraf <roman@khassraf.at> | 2015-08-05 12:41:13 +0200 |
commit | 1fc0565aa9b0b02ab6cbcb9dcb7d7524bdceddd9 (patch) | |
tree | f2599bcc193574cdeaf32754401818a3091fd792 /lib | |
parent | 09405388e0bf95021654b8c7f07226fe795565d5 (diff) | |
parent | 298700dfa3f12d243f7870b9f1656a5a649282ff (diff) |
Merge remote-tracking branch 'origin/burst-printer-issue-95' into dev
Diffstat (limited to 'lib')
-rw-r--r-- | lib/misc_utils/bursts_printer_impl.cc | 45 | ||||
-rw-r--r-- | lib/misc_utils/bursts_printer_impl.h | 8 |
2 files changed, 49 insertions, 4 deletions
diff --git a/lib/misc_utils/bursts_printer_impl.cc b/lib/misc_utils/bursts_printer_impl.cc index 3b4f026..fd93d79 100644 --- a/lib/misc_utils/bursts_printer_impl.cc +++ b/lib/misc_utils/bursts_printer_impl.cc @@ -37,6 +37,19 @@ namespace gr { namespace gsm { boost::mutex printer_mutex; + // dummy burst defined in gsm 05.02, section 5.2.6 + const int8_t bursts_printer_impl::d_dummy_burst[] = {0,0,0, + 1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0, + 0,0,0,0,1,0,1,0,0,1,0,0,1,1,1,0, + 0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0, + 0,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0, + 0,1,0,1,1,1,0,0,0,1,0,1,1,1,0,0, + 0,1,0,1,0,1,1,1,0,1,0,0,1,0,1,0, + 0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,1, + 1,1,1,0,1,0,0,1,1,1,1,1,0,0,0,1, + 0,0,1,0,1,1,1,1,1,0,1,0,1,0, + 0,0,0 }; + void bursts_printer_impl::bursts_print(pmt::pmt_t msg) { pmt::pmt_t header_plus_burst = pmt::cdr(msg); @@ -46,6 +59,11 @@ namespace gr { size_t burst_len=pmt::blob_length(header_plus_burst)-sizeof(gsmtap_hdr); uint32_t frame_nr = be32toh(header->frame_number); + if (d_ignore_dummy_bursts && is_dummy_burst(burst, burst_len)) + { + return; + } + std::cout << d_prepend_string; if (d_prepend_fnr) { @@ -94,19 +112,38 @@ namespace gr { std::cout << std::endl; } + bool bursts_printer_impl::is_dummy_burst(int8_t *burst, size_t burst_len) + { + if (burst_len != DUMMY_BURST_LEN) + { + return false; + } + for (int i=0; i<DUMMY_BURST_LEN; i++) + { + if (burst[i] != d_dummy_burst[i]) + { + return false; + } + } + return true; + } + bursts_printer::sptr bursts_printer::make(pmt::pmt_t prepend_string, bool prepend_fnr, - bool prepend_frame_count, bool print_payload_only) + bool prepend_frame_count, bool print_payload_only, + bool ignore_dummy_bursts) { return gnuradio::get_initial_sptr - (new bursts_printer_impl(prepend_string, prepend_fnr, prepend_frame_count, print_payload_only)); + (new bursts_printer_impl(prepend_string, prepend_fnr, prepend_frame_count, + print_payload_only, ignore_dummy_bursts)); } /* * The private constructor */ bursts_printer_impl::bursts_printer_impl(pmt::pmt_t prepend_string, bool prepend_fnr, - bool prepend_frame_count, bool print_payload_only) + bool prepend_frame_count, bool print_payload_only, + bool ignore_dummy_bursts) : gr::block("bursts_printer", gr::io_signature::make(0, 0, 0), gr::io_signature::make(0, 0, 0)) @@ -115,6 +152,8 @@ namespace gr { d_prepend_fnr = prepend_fnr; d_prepend_frame_count = prepend_frame_count; d_print_payload_only = print_payload_only; + d_ignore_dummy_bursts = ignore_dummy_bursts; + message_port_register_in(pmt::mp("bursts")); set_msg_handler(pmt::mp("bursts"), boost::bind(&bursts_printer_impl::bursts_print, this, _1)); } diff --git a/lib/misc_utils/bursts_printer_impl.h b/lib/misc_utils/bursts_printer_impl.h index 5a8a7ed..e438c37 100644 --- a/lib/misc_utils/bursts_printer_impl.h +++ b/lib/misc_utils/bursts_printer_impl.h @@ -23,6 +23,8 @@ #ifndef INCLUDED_GSM_BURSTS_PRINTER_IMPL_H #define INCLUDED_GSM_BURSTS_PRINTER_IMPL_H +#define DUMMY_BURST_LEN 148 + #include <grgsm/misc_utils/bursts_printer.h> #include <set> @@ -37,9 +39,13 @@ namespace gr { bool d_prepend_fnr; bool d_prepend_frame_count; bool d_print_payload_only; + bool d_ignore_dummy_bursts; + bool is_dummy_burst(int8_t *burst, size_t burst_len); + static const int8_t d_dummy_burst[]; public: bursts_printer_impl(pmt::pmt_t prepend_string, bool prepend_fnr=false, - bool prepend_frame_count=false, bool print_payload_only=false); + bool prepend_frame_count=false, bool print_payload_only=false, + bool ignore_dummy_bursts=false); ~bursts_printer_impl(); }; |