GNSS-SDR 0.0.21
An Open Source GNSS Software Defined Receiver
Loading...
Searching...
No Matches
spir_gss6450_file_signal_source.h
Go to the documentation of this file.
1/*!
2 * \file spir_gss6450_file_signal_source.h
3 * \brief Implementation of a class that reads signals samples from a SPIR file
4 * and adapts it to a SignalSourceInterface.
5 * \author Antonio Ramos, 2017 antonio.ramos(at)cttc.es
6 *
7 * -----------------------------------------------------------------------------
8 *
9 * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
10 *
11 * GNSS-SDR is a software defined Global Navigation
12 * Satellite Systems receiver
13 *
14 * This file is not part of GNSS-SDR.
15 *
16 * SPDX-License-Identifier: GPL-3.0-or-later
17 *
18 * -----------------------------------------------------------------------------
19 */
20
21#ifndef GNSS_SDR_SPIR_GSS6450_FILE_SIGNAL_SOURCE_H
22#define GNSS_SDR_SPIR_GSS6450_FILE_SIGNAL_SOURCE_H
23
24#include "concurrent_queue.h"
25#include "gnss_sdr_valve.h"
26#include "signal_source_base.h"
28#include <gnuradio/blocks/deinterleave.h>
29#include <gnuradio/blocks/endian_swap.h>
30#include <gnuradio/blocks/file_sink.h>
31#include <gnuradio/blocks/file_source.h>
32#include <gnuradio/blocks/null_sink.h>
33#include <gnuradio/blocks/throttle.h>
34#include <gnuradio/hier_block2.h>
35#include <pmt/pmt.h>
36#include <cstdint>
37#include <string>
38#include <vector>
39
40
41/** \addtogroup Signal_Source
42 * \{ */
43/** \addtogroup Signal_Source_adapters
44 * \{ */
45
46
48
49/*!
50 * \brief Class that reads signals samples from a file
51 * and adapts it to a SignalSourceInterface
52 */
53class SpirGSS6450FileSignalSource : public SignalSourceBase
54{
55public:
56 SpirGSS6450FileSignalSource(const ConfigurationInterface* configuration, const std::string& role,
57 uint32_t in_streams, uint32_t out_streams, Concurrent_Queue<pmt::pmt_t>* queue);
58
59 inline size_t item_size() override
60 {
61 return item_size_;
62 }
63
64 void connect(gr::top_block_sptr top_block) override;
65 void disconnect(gr::top_block_sptr top_block) override;
66 gr::basic_block_sptr get_left_block() override;
67 gr::basic_block_sptr get_right_block(int RF_channel) override;
68 gr::basic_block_sptr get_right_block() override;
69
70 inline std::string filename() const
71 {
72 return filename_;
73 }
74
75 inline std::string item_type() const
76 {
77 return item_type_;
78 }
79
80 inline bool repeat() const
81 {
82 return repeat_;
83 }
84
85 inline int64_t sampling_frequency() const
86 {
87 return sampling_frequency_;
88 }
89
90 inline uint64_t samples() const
91 {
92 return samples_;
93 }
94
95private:
96 gr::blocks::file_source::sptr file_source_;
97 gr::blocks::deinterleave::sptr deint_;
98 std::vector<gnss_shared_ptr<gr::block>> valve_vec_;
99 std::vector<gr::blocks::endian_swap::sptr> endian_vec_;
100 std::vector<gr::blocks::null_sink::sptr> null_sinks_;
101 std::vector<unpack_spir_gss6450_samples_sptr> unpack_spir_vec_;
102 std::vector<gr::blocks::file_sink::sptr> sink_vec_;
103 std::vector<gr::blocks::throttle::sptr> throttle_vec_;
104 std::string filename_;
105 std::string dump_filename_;
106 std::string item_type_;
107 uint64_t samples_;
108 int64_t sampling_frequency_;
109 size_t item_size_;
110 uint32_t in_streams_;
111 uint32_t out_streams_;
112 uint32_t adc_bits_;
113 int32_t n_channels_;
114 int32_t sel_ch_;
115 bool repeat_;
116 bool dump_; // Enables dumping the gr_complex sample output
117 bool enable_throttle_control_;
118 bool endian_swap_;
119};
120
121
122/** \} */
123/** \} */
124#endif // GNSS_SDR_SPIR_GSS6450_FILE_SIGNAL_SOURCE_H
This class implements a thread-safe std::queue.
This abstract class represents an interface to configuration parameters.
SignalSourceBase(ConfigurationInterface const *configuration, std::string role, std::string impl)
Constructor.
Interface of a thread-safe std::queue.
Interface of a GNU Radio block that sends a STOP message to the control queue right after a specific ...
Header file of the base class to signal_source GNSS blocks.
Unpacks SPIR int samples.