18 #ifndef GNSS_SDR_FIFO_READER_H_ 19 #define GNSS_SDR_FIFO_READER_H_ 22 #include <gnuradio/sync_block.h> 35 using sptr = gnss_shared_ptr<FifoReader>;
36 static sptr make(
const std::string &file_name,
const std::string &sample_type);
44 int work(
int noutput_items,
45 gr_vector_const_void_star &input_items,
46 gr_vector_void_star &output_items);
52 FifoReader(
const std::string &file_name,
const std::string &sample_type);
54 size_t read_gr_complex(
int noutput_items, gr_vector_void_star &output_items);
60 template <
typename Type>
61 size_t read_interleaved(
int noutput_items, gr_vector_void_star &output_items)
63 size_t items_retrieved = 0;
64 for (
int n = 0; n < noutput_items; n++)
68 std::array<char, 2 * sizeof(Type)> buffer;
69 fifo_.read(reinterpret_cast<char *>(buffer.data()), buffer.size());
72 auto real =
reinterpret_cast<Type
const *
>(&buffer[0]);
73 auto imag =
reinterpret_cast<Type
const *
>(&buffer[
sizeof(Type)]);
74 static_cast<gr_complex *
>(output_items[0])[n] = gr_complex(*real, *imag);
88 return items_retrieved;
93 void fifo_error_output()
const;
95 const std::string file_name_;
96 const std::string sample_type_;
bool start()
initialize istream resource for FIFO
This interface represents a GNSS block.
gnss_shared_ptr< FifoReader > sptr
static function to create a class instance