GNSS-SDR  0.0.21
An Open Source GNSS Software Defined Receiver
acquisition_impl_interface.h
Go to the documentation of this file.
1 /*!
2  * \file acquisition_impl_interface.h
3  * \brief Header file of the interface to an acquisition implementation GNSS block.
4  * \author Mathieu Favraeu, 2025. favreau.mathieu(at)hotmail.com
5  *
6  * This header file contains the interface to an abstract class
7  * for acquisition algorithms. Since all its methods are virtual,
8  * this class cannot be instantiated directly, and a subclass can only be
9  * instantiated directly if all inherited pure virtual methods have been
10  * implemented by that class or a parent class.
11  *
12  * -----------------------------------------------------------------------------
13  *
14  * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
15  * This file is part of GNSS-SDR.
16  *
17  * Copyright (C) 2010-2025 (see AUTHORS file for a list of contributors)
18  * SPDX-License-Identifier: GPL-3.0-or-later
19  *
20  * -----------------------------------------------------------------------------
21  */
22 
23 #ifndef GNSS_SDR_ACQUISITION_IMPL_INTERFACE_H
24 #define GNSS_SDR_ACQUISITION_IMPL_INTERFACE_H
25 
26 #include "gnss_block_interface.h"
27 #include "gnss_synchro.h"
28 #include <gnuradio/block.h>
29 #include <complex>
30 #include <memory>
31 
32 /** \addtogroup Core
33  * \{ */
34 /** \addtogroup GNSS_Block_Interfaces GNSS block interfaces
35  * GNSS block interfaces.
36  * \{ */
37 
38 class ChannelFsm;
40 
41 using acquisition_impl_interface_sptr = gnss_shared_ptr<acquisition_impl_interface>;
42 
43 /*! \brief This abstract class represents an interface to an acquisition GNSS block.
44  *
45  * Abstract class for acquisition algorithms. Since all its methods are virtual,
46  * this class cannot be instantiated directly, and a subclass can only be
47  * instantiated directly if all inherited pure virtual methods have been
48  * implemented by that class or a parent class.
49  */
50 class acquisition_impl_interface : public gr::block
51 {
52 public:
53  acquisition_impl_interface(const std::string& name,
54  gr::io_signature::sptr input_signature,
55  gr::io_signature::sptr output_signature) : gr::block(name, std::move(input_signature), std::move(output_signature)) {}
56 
57  virtual void set_gnss_synchro(Gnss_Synchro* gnss_synchro) = 0;
58  virtual void set_channel(uint32_t channel_id) = 0;
59  virtual void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) = 0;
60  virtual void set_local_code(std::complex<float>* /*code*/) {};
61  virtual void set_local_code(std::complex<float>* /*code_data*/, std::complex<float>* /*code_pilot*/) {};
62  virtual uint32_t mag() const = 0;
63  virtual void set_active(bool active) = 0;
64 };
65 
66 
67 /** \} */
68 /** \} */
69 #endif // GNSS_SDR_ACQUISITION_INTERFACE */
This is the class that contains the information that is shared by the processing blocks.
Definition: gnss_synchro.h:38
This interface represents a GNSS block.
This class implements a State Machine for channel.
Definition: channel_fsm.h:41
This abstract class represents an interface to an acquisition GNSS block.
Interface of the Gnss_Synchro class.