GNU Radio's SATELLITES Package
manchester_sync.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2023 Daniel Estevez <daniel@destevez.net>.
4  *
5  * This file is part of gr-satellites
6  *
7  * SPDX-License-Identifier: GPL-3.0-or-later
8  */
9 
10 #ifndef INCLUDED_SATELLITES_MANCHESTER_SYNC_H
11 #define INCLUDED_SATELLITES_MANCHESTER_SYNC_H
12 
13 #include <gnuradio/sync_decimator.h>
14 #include <satellites/api.h>
15 
16 namespace gr {
17 namespace satellites {
18 
19 /*!
20  * \brief Detects phase of a Manchester clock and integrates symbols
21  * \ingroup satellites
22  *
23  * \details
24  * The Manchester Sync block operates on a Manchester coded signal at
25  * two samples per symbol (one sample per each half of the Manchester
26  * pulse). The block detects which is the phase of the Manchester clock
27  * (i.e., what are the symbol boundaries), integrates symbols by
28  * subtracting the appropriate halves, and outputs the symbols at one
29  * sample per symbol.
30  *
31  * The detection of the Manchester clock phase is done using a high
32  * SNR approximation to the maximum likelihood metric. Detection is
33  * done blockwise, with the size of the block indicated in the constructor.
34  */
35 template <class T>
36 class SATELLITES_API manchester_sync : virtual public gr::sync_decimator
37 {
38 public:
39  typedef boost::shared_ptr<manchester_sync<T>> sptr;
40 
41  /*!
42  * \brief Constructs a Manchester Sync block.
43  *
44  * \param block_size Size of the block for metric evaluation (in symbols).
45  */
46  static sptr make(int block_size);
47 };
48 
51 
52 } // namespace satellites
53 } // namespace gr
54 
55 #endif /* INCLUDED_SATELLITES_MANCHESTER_SYNC_H */
#define SATELLITES_API
Definition: api.h:31
Detects phase of a Manchester clock and integrates symbols.
Definition: manchester_sync.h:37
static sptr make(int block_size)
Constructs a Manchester Sync block.
boost::shared_ptr< manchester_sync< T > > sptr
Definition: manchester_sync.h:39
manchester_sync< gr_complex > manchester_sync_cc
Definition: manchester_sync.h:49
manchester_sync< float > manchester_sync_ff
Definition: manchester_sync.h:50
Definition: ax100_decode.h:17