56class labsat23_source :
public gr::block
61 int general_work(
int noutput_items,
62 gr_vector_int &ninput_items,
63 gr_vector_const_void_star &input_items,
64 gr_vector_void_star &output_items);
67 friend labsat23_source_sptr labsat23_make_source_sptr(
68 const char *signal_file_basename,
69 const std::vector<int> &channel_selector,
71 bool digital_io_enabled,
72 double seconds_to_skip);
74 labsat23_source(
const char *signal_file_basename,
75 const std::vector<int> &channel_selector,
77 bool digital_io_enabled,
78 double seconds_to_skip);
80 std::string generate_filename();
83 int read_ls3w_ini(
const std::string &filename);
84 int number_of_samples_per_ls3w_register()
const;
86 void decode_samples_one_channel(int16_t input_short, gr_complex *out,
int type);
87 void decode_ls3w_register(uint64_t input, std::vector<gr_complex *> &out, std::size_t output_pointer)
const;
88 int parse_ls23_data(
int noutput_items, std::vector<gr_complex *> out);
89 int parse_ls3w_data(
int noutput_items, std::vector<gr_complex *> out);
90 int parse_ls4_data(
int noutput_items, std::vector<gr_complex *> out);
93 std::ifstream binary_input_file;
94 std::string d_signal_file_basename;
96 std::vector<int> d_channel_selector_config;
97 int d_current_file_number;
98 uint8_t d_labsat_version;
99 uint8_t d_channel_selector;
101 uint8_t d_bits_per_sample;
102 bool d_header_parsed;
105 std::string d_ls3w_OSC;
106 std::vector<int> d_ls3w_selected_channel_offset;
107 int64_t d_ls3w_SMP{};
108 int32_t d_ls3w_QUA{};
109 int32_t d_ls3w_CHN{};
110 int32_t d_ls3w_SFT{};
111 int d_ls3w_spare_bits{};
112 int d_ls3w_samples_per_register{};
113 bool d_is_ls3w =
false;
114 bool d_is_ls4 =
false;
115 bool d_ls3w_digital_io_enabled =
false;
118 int32_t d_ls4_BW_MAX{0};
119 int32_t d_number_sample_per_output{0};
120 int32_t d_number_register_per_output{0};
121 uint64_t d_read_index{0};
125 std::string identifier;
126 int32_t center_freq{0};
127 int32_t bandwidth{0};
129 int32_t buff_size{0};
130 int32_t number_sample_per_output{0};
131 uint64_t data_index{0};
132 std::vector<uint64_t> data{};
134 ChannelState(
const std::string &
id) : identifier(
id) {}
137 std::map<int32_t, ChannelState> d_channel_map{
138 std::make_pair(1, ChannelState{
"A"}), std::make_pair(2, ChannelState{
"B"}), std::make_pair(3, ChannelState{
"C"})};