GNU Radio's CYBERRADIO Package
vita_multifile_iq_source_impl.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /***************************************************************************
3  * \file vita_multifile_iq_source_impl.h
4  *
5  * \brief Implementation of vita_multifile_iq_source block.
6  *
7  * \author DA
8  * \copyright Copyright (c) 2015 CyberRadio Solutions, Inc.
9  *
10  */
11 
12 #ifndef INCLUDED_CYBERRADIO_VITA_MULTIFILE_IQ_SOURCE_IMPL_H
13 #define INCLUDED_CYBERRADIO_VITA_MULTIFILE_IQ_SOURCE_IMPL_H
14 
15 #include <CyberRadio/api.h>
17 #include <LibCyberRadio/Common/Vita49Packet.h>
18 #include <boost/thread/mutex.hpp>
19 #include <string>
20 #include <vector>
21 
23 
24 namespace gr {
25 namespace CyberRadio {
27  : virtual public vita_multifile_iq_source {
28 public:
29  vita_multifile_iq_source_impl(const std::vector<std::string> &filespecs,
30  bool alphabetical, int vita_type,
31  size_t payload_size, size_t vita_header_size,
32  size_t vita_tail_size, bool byte_swapped,
33  bool iq_swapped, float iq_scale_factor,
34  bool repeat, bool terminate_at_end, bool tagged,
35  bool debug);
37  void open(const std::vector<std::string> &filespecs, bool alphabetical,
38  bool repeat, bool terminate_at_end);
39  void close();
40  void set_iq_scale_factor(float iq_scale_factor);
41  int work(int noutput_items, gr_vector_const_void_star &input_items,
42  gr_vector_void_star &output_items);
43  float get_realtime_sample_rate();
44 
45 protected:
46  void open_immediate(const std::vector<std::string> &filespecs,
47  bool alphabetical, bool repeat, bool terminate_at_end);
48  void close_immediate();
49  void open_file_immediate();
50  void close_file_immediate();
51  void next_file_immediate();
52  int read_output_items_immediate(gr_complex *out);
53  void generate_vita_tags(int output, const Vita49Packet &vp);
54  int debug(const char *format, ...);
55 
56 protected:
57  // From block configuration
60  size_t d_payload_size; // maximum transmission unit (packet length)
66  bool d_repeat;
68  bool d_tagged;
69  bool d_debug;
70  // Internal state data
71  std::vector<std::string> d_filenames;
72  size_t d_packet_size;
74  FILE *d_fp;
75  boost::mutex d_fp_mutex;
76  unsigned char *d_buffer;
83 };
84 
85 } /* namespace CyberRadio */
86 } /* namespace gr */
87 
88 #endif /* INCLUDED_CYBERRADIO_VITA_MULTIFILE_IQ_SOURCE_IMPL_H */
size_t d_packet_size
Definition: vita_multifile_iq_source_impl.h:72
float d_realtime_sample_rate
Definition: vita_multifile_iq_source_impl.h:80
unsigned char * d_buffer
Definition: vita_multifile_iq_source_impl.h:76
#define CYBERRADIO_API
Definition: api.h:30
size_t d_vita_header_size
Definition: vita_multifile_iq_source_impl.h:61
bool d_alphabetical
Definition: vita_multifile_iq_source_impl.h:58
size_t d_vita_tail_size
Definition: vita_multifile_iq_source_impl.h:62
boost::mutex d_fp_mutex
Definition: vita_multifile_iq_source_impl.h:75
time_t d_realtime_last_time
Definition: vita_multifile_iq_source_impl.h:82
LibCyberRadio::Vita49Packet Vita49Packet
Definition: vita_multifile_iq_source_impl.h:22
int d_filename_index
Definition: vita_multifile_iq_source_impl.h:73
bool d_terminate_at_end
Definition: vita_multifile_iq_source_impl.h:67
size_t d_payload_size
Definition: vita_multifile_iq_source_impl.h:60
Provides GNU Radio blocks.
Definition: NDR651_duc_sink_mk2.h:21
bool d_iq_swapped
Definition: vita_multifile_iq_source_impl.h:64
long d_realtime_sample_count
Definition: vita_multifile_iq_source_impl.h:81
FILE * d_fp
Definition: vita_multifile_iq_source_impl.h:74
Generic VITA 49-compatible I/Q data source block that pulls its source data from a sequence of files...
Definition: vita_multifile_iq_source.h:87
bool d_packet_data_available
Definition: vita_multifile_iq_source_impl.h:78
float d_iq_scale_factor
Definition: vita_multifile_iq_source_impl.h:65
bool d_repeat
Definition: vita_multifile_iq_source_impl.h:66
uint64_t d_absolute_packet_num
Definition: vita_multifile_iq_source_impl.h:79
LibCyberRadio::Vita49Packet Vita49Packet
Definition: vita_iq_source_2_impl.h:26
bool d_tagged
Definition: vita_multifile_iq_source_impl.h:68
Definition: vita_multifile_iq_source_impl.h:26
int d_vita_type
Definition: vita_multifile_iq_source_impl.h:59
std::vector< std::string > d_filenames
Definition: vita_multifile_iq_source_impl.h:71
bool d_byte_swapped
Definition: vita_multifile_iq_source_impl.h:63
int d_buffer_offset
Definition: vita_multifile_iq_source_impl.h:77