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
16namespace gr {
17namespace 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 */
35template <class T>
36class SATELLITES_API manchester_sync : virtual public gr::sync_decimator
37{
38public:
39 typedef std::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
std::shared_ptr< manchester_sync< T > > sptr
Definition: manchester_sync.h:39
static sptr make(int block_size)
Constructs a Manchester Sync block.
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