GNU Radio's SATELLITES Package
varlen_packet_tagger.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2017 Glenn Richardson <glenn@spacequest.com>
4  *
5  * This file is part of gr-satellites
6  *
7  * SPDX-License-Identifier: GPL-3.0-or-later
8  *
9  */
10 
11 #ifndef INCLUDED_VARLEN_PACKET_TAGGER_H
12 #define INCLUDED_VARLEN_PACKET_TAGGER_H
13 
14 #include <gnuradio/block.h>
15 #include <gnuradio/endianness.h>
16 #include <pmt/pmt.h>
17 #include <satellites/api.h>
18 
19 namespace gr {
20 namespace satellites {
21 /*!
22  * \brief Examine input stream for sync tags and extract packet length.
23  * \ingroup satellites
24  *
25  * \details
26  * input: stream of bits (unpacked bytes) with sync tags
27  * output: a tagged stream of bits containing just the received packets
28  *
29  * This block uses the sync tag on the input stream to identify
30  * the header of packets. The length of each packet is extracted
31  * from the stream's header. The length of the header field and
32  * the endianness are parameters.
33  *
34  */
35 class SATELLITES_API varlen_packet_tagger : virtual public gr::block
36 {
37 public:
38  typedef boost::shared_ptr<varlen_packet_tagger> sptr;
39 
40  /*!
41  * \param sync_key
42  * \param packet_key
43  * \param length_field_size
44  * \param max_packet_size
45  * \param endianness
46  * \param use_golay For 24-bit golay headers
47  */
48  static sptr make(const std::string& sync_key,
49  const std::string& packet_key,
50  int length_field_size,
51  int max_packet_size,
52  endianness_t endianness,
53  bool use_golay);
54 };
55 
56 } // namespace satellites
57 } // namespace gr
58 
59 #endif
boost::shared_ptr< varlen_packet_tagger > sptr
Definition: varlen_packet_tagger.h:38
Definition: ax100_decode.h:17
Examine input stream for sync tags and extract packet length.
Definition: varlen_packet_tagger.h:35
#define SATELLITES_API
Definition: api.h:31