summaryrefslogtreecommitdiff
path: root/gr-digital/lib/header_payload_demux_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/lib/header_payload_demux_impl.cc')
-rw-r--r--gr-digital/lib/header_payload_demux_impl.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/gr-digital/lib/header_payload_demux_impl.cc b/gr-digital/lib/header_payload_demux_impl.cc
index a2e81c5b8e..affbc92125 100644
--- a/gr-digital/lib/header_payload_demux_impl.cc
+++ b/gr-digital/lib/header_payload_demux_impl.cc
@@ -24,7 +24,7 @@
#endif
#include <climits>
-#include <gr_io_signature.h>
+#include <gnuradio/io_signature.h>
#include "header_payload_demux_impl.h"
namespace gr {
@@ -70,9 +70,9 @@ namespace gr {
const std::string &trigger_tag_key,
bool output_symbols,
size_t itemsize
- ) : gr_block("header_payload_demux",
- gr_make_io_signature2(1, 2, itemsize, sizeof(char)),
- gr_make_io_signature(2, 2, (output_symbols ? itemsize * items_per_symbol : itemsize))),
+ ) : block("header_payload_demux",
+ io_signature::make2(1, 2, itemsize, sizeof(char)),
+ io_signature::make(2, 2, (output_symbols ? itemsize * items_per_symbol : itemsize))),
d_header_len(header_len),
d_items_per_symbol(items_per_symbol),
d_gi(guard_interval),
@@ -123,7 +123,8 @@ namespace gr {
int produced_hdr = 0;
int produced_payload = 0;
- while (nread < noutput_items && !exit_loop) {
+ // FIXME ninput_items[1] does not have to be defined O_o
+ while (nread < noutput_items && nread < ninput_items[0] && nread < ninput_items[1] && !exit_loop) {
switch (d_state) {
case STATE_IDLE:
// 1) Search for a trigger signal on input 1 (if present)
@@ -154,6 +155,7 @@ namespace gr {
// 4) fall through to next state
d_remaining_symbols = -1;
if (!parse_header_data_msg()) {
+ d_state = STATE_IDLE;
exit_loop = true;
break;
}
@@ -199,7 +201,7 @@ namespace gr {
}
}
if (d_uses_trigger_tag) {
- std::vector<gr_tag_t> tags;
+ std::vector<tag_t> tags;
get_tags_in_range(tags, 0, nitems_read(0), nitems_read(0)+noutput_items);
uint64_t min_offset = ULLONG_MAX;
int tag_index = -1;
@@ -241,6 +243,8 @@ namespace gr {
}
} else if (pmt::is_null(msg)) { // Blocking call was interrupted
return false;
+ } else if (msg == pmt::PMT_F) { // Header was invalid
+ return false;
} else {
throw std::runtime_error("Received illegal header data");
}
@@ -250,7 +254,7 @@ namespace gr {
void
header_payload_demux_impl::copy_symbol(const unsigned char *&in, unsigned char *&out, int port, int &nread, int &nproduced)
{
- std::vector<gr_tag_t> tags;
+ std::vector<tag_t> tags;
memcpy((void *) out,
(void *) (in + d_gi * d_itemsize),
d_itemsize * d_items_per_symbol