GNSS-SDR 0.0.21
An Open Source GNSS Software Defined Receiver
Loading...
Searching...
No Matches
multichannel_file_signal_source.h
Go to the documentation of this file.
1/*!
2 * \file multichannel_file_signal_source.h
3 * \brief Implementation of a class that reads signals samples from files at
4 * different frequency band and adapts it to a SignalSourceInterface
5 * \author Javier Arribas, 2019 jarribas(at)cttc.es
6 *
7 * This class represents a file signal source. Internally it uses a GNU Radio's
8 * gr_file_source as a connector to the data.
9 *
10 * -----------------------------------------------------------------------------
11 *
12 * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
13 * This file is part of GNSS-SDR.
14 *
15 * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
16 * SPDX-License-Identifier: GPL-3.0-or-later
17 *
18 * -----------------------------------------------------------------------------
19 */
20
21#ifndef GNSS_SDR_MULTICHANNEL_FILE_SIGNAL_SOURCE_H
22#define GNSS_SDR_MULTICHANNEL_FILE_SIGNAL_SOURCE_H
23
24#include "concurrent_queue.h"
26#include "signal_source_base.h"
27#include <gnuradio/blocks/file_sink.h>
28#include <gnuradio/blocks/file_source.h>
29#include <gnuradio/blocks/throttle.h>
30#include <gnuradio/hier_block2.h>
31#include <pmt/pmt.h>
32#include <cstdint>
33#include <string>
34#include <vector>
35
36
37/** \addtogroup Signal_Source
38 * \{ */
39/** \addtogroup Signal_Source_adapters
40 * \{ */
41
42
44
45/*!
46 * \brief Class that reads signals samples from files at different frequency bands
47 * and adapts it to a SignalSourceInterface
48 */
49class MultichannelFileSignalSource : public SignalSourceBase
50{
51public:
52 MultichannelFileSignalSource(const ConfigurationInterface* configuration, const std::string& role,
53 unsigned int in_streams, unsigned int out_streams,
55
56 ~MultichannelFileSignalSource() = default;
57
58 inline size_t item_size() override
59 {
60 return item_size_;
61 }
62
63 void connect(gr::top_block_sptr top_block) override;
64 void disconnect(gr::top_block_sptr top_block) override;
65 gr::basic_block_sptr get_left_block() override;
66 gr::basic_block_sptr get_right_block() override;
67
68 inline std::string filename() const
69 {
70 return filename_vec_.at(0);
71 }
72
73 inline std::string item_type() const
74 {
75 return item_type_;
76 }
77
78 inline bool repeat() const
79 {
80 return repeat_;
81 }
82
83 inline int64_t sampling_frequency() const
84 {
85 return sampling_frequency_;
86 }
87
88 inline uint64_t samples() const
89 {
90 return samples_;
91 }
92
93private:
94 std::vector<gr::blocks::file_source::sptr> file_source_vec_;
95 gnss_shared_ptr<gr::block> valve_;
96 gr::blocks::file_sink::sptr sink_;
97 std::vector<gr::blocks::throttle::sptr> throttle_vec_;
98 std::vector<std::string> filename_vec_;
99 std::string item_type_;
100 uint64_t samples_;
101 int64_t sampling_frequency_;
102 size_t item_size_;
103 int32_t n_channels_;
104 uint32_t in_streams_;
105 uint32_t out_streams_;
106 bool repeat_;
107 // Throttle control
108 bool enable_throttle_control_;
109};
110
111
112/** \} */
113/** \} */
114#endif // GNSS_SDR_MULTICHANNEL_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.
This interface represents a GNSS block.
Header file of the base class to signal_source GNSS blocks.