GNSS-SDR  0.0.14
An Open Source GNSS Software Defined Receiver
plutosdr_signal_source.h
Go to the documentation of this file.
1 /*!
2  * \file plutosdr_signal_source.h
3  * \brief Signal source for PlutoSDR
4  * \author Rodrigo Muñoz, 2017, rmunozl(at)inacap.cl, rodrigo.munoz(at)proteinlab.cl
5  *
6  *
7  * -----------------------------------------------------------------------------
8  *
9  * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
10  * This file is part of GNSS-SDR.
11  *
12  * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
13  * SPDX-License-Identifier: GPL-3.0-or-later
14  *
15  * -----------------------------------------------------------------------------
16  */
17 
18 
19 #ifndef GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H
20 #define GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H
21 
22 #include "gnss_block_interface.h"
23 #include <gnuradio/blocks/file_sink.h>
24 #if GRIIO_INCLUDE_HAS_GNURADIO
25 #include <gnuradio/iio/pluto_source.h>
26 #else
27 #include <iio/pluto_source.h>
28 #endif
29 #include "concurrent_queue.h"
30 #include <pmt/pmt.h>
31 #include <cstdint>
32 #include <string>
33 
34 
35 /** \addtogroup Signal_Source
36  * \{ */
37 /** \addtogroup Signal_Source_adapters
38  * \{ */
39 
40 
42 
43 /*!
44  */
46 {
47 public:
48  PlutosdrSignalSource(const ConfigurationInterface* configuration,
49  const std::string& role, unsigned int in_stream,
50  unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
51 
52  ~PlutosdrSignalSource() = default;
53 
54  std::string role() override
55  {
56  return role_;
57  }
58 
59  /*!
60  * \brief Returns "Plutosdr_Signal_Source"
61  */
62  std::string implementation() override
63  {
64  return "Plutosdr_Signal_Source";
65  }
66  size_t item_size() override
67  {
68  return item_size_;
69  }
70 
71  void connect(gr::top_block_sptr top_block) override;
72  void disconnect(gr::top_block_sptr top_block) override;
73  gr::basic_block_sptr get_left_block() override;
74  gr::basic_block_sptr get_right_block() override;
75 
76 private:
77  gr::iio::pluto_source::sptr plutosdr_source_;
78 
79  gnss_shared_ptr<gr::block> valve_;
80  gr::blocks::file_sink::sptr file_sink_;
81 
82  std::string role_;
83  std::string dump_filename_;
84 
85  // Front-end settings
86  std::string uri_; // device direction
87  std::string gain_mode_;
88  std::string filter_file_;
89  std::string filter_source_;
90  std::string filter_filename_;
91  std::string item_type_;
92  double rf_gain_;
93  int64_t samples_;
94  uint64_t freq_; // frequency of local oscilator
95  uint64_t sample_rate_;
96  uint64_t bandwidth_;
97  uint64_t buffer_size_; // reception buffer
98  size_t item_size_;
99  float Fpass_;
100  float Fstop_;
101  unsigned int in_stream_;
102  unsigned int out_stream_;
103 
104  bool quadrature_;
105  bool rf_dc_;
106  bool bb_dc_;
107  bool filter_auto_;
108  bool dump_;
109 };
110 
111 
112 /** \} */
113 /** \} */
114 #endif // GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H
Interface of a thread-safe std::queue.
This interface represents a GNSS block.
This abstract class represents an interface to configuration parameters.
This abstract class represents an interface to GNSS blocks.
std::string implementation() override
Returns "Plutosdr_Signal_Source".