mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 15:23:04 +00:00 
			
		
		
		
	Added missing files
This commit is contained in:
		
							
								
								
									
										94
									
								
								src/algorithms/observables/adapters/mixed_observables.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								src/algorithms/observables/adapters/mixed_observables.cc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,94 @@ | ||||
| /*! | ||||
|  * \file mixed_observables.cc | ||||
|  * \brief Implementation of an adapter of a mixed observables block (muti-frequency and multi-system) | ||||
|  * to a ObservablesInterface | ||||
|  * \author Javier Arribas, 2015. jarribas(at)cttc.es | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Copyright (C) 2010-2015  (see AUTHORS file for a list of contributors) | ||||
|  * | ||||
|  * GNSS-SDR is a software defined Global Navigation | ||||
|  *          Satellite Systems receiver | ||||
|  * | ||||
|  * This file is part of GNSS-SDR. | ||||
|  * | ||||
|  * GNSS-SDR is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * GNSS-SDR is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "mixed_observables.h" | ||||
| #include "configuration_interface.h" | ||||
| #include "mixed_observables_cc.h" | ||||
| #include <glog/logging.h> | ||||
|  | ||||
| using google::LogMessage; | ||||
|  | ||||
| MixedObservables::MixedObservables(ConfigurationInterface* configuration, | ||||
|         std::string role, | ||||
|         unsigned int in_streams, | ||||
|         unsigned int out_streams, | ||||
|         boost::shared_ptr<gr::msg_queue> queue) : | ||||
|                     role_(role), | ||||
|                     in_streams_(in_streams), | ||||
|                     out_streams_(out_streams), | ||||
|                     queue_(queue) | ||||
| { | ||||
|     int output_rate_ms; | ||||
|     output_rate_ms = configuration->property(role + ".output_rate_ms", 500); | ||||
|     std::string default_dump_filename = "./observables.dat"; | ||||
|     DLOG(INFO) << "role " << role; | ||||
|     bool flag_averaging; | ||||
|     flag_averaging = configuration->property(role + ".flag_averaging", false); | ||||
|     dump_ = configuration->property(role + ".dump", false); | ||||
|     dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); | ||||
|     //fs_in_ = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); | ||||
|     observables_ = mixed_make_observables_cc(in_streams_, queue_, dump_, dump_filename_, output_rate_ms, flag_averaging); | ||||
|     //observables_->set_fs_in(fs_in_); | ||||
|     DLOG(INFO) << "pseudorange(" << observables_->unique_id() << ")"; | ||||
| } | ||||
|  | ||||
|  | ||||
| MixedObservables::~MixedObservables() | ||||
| {} | ||||
|  | ||||
| void MixedObservables::connect(gr::top_block_sptr top_block) | ||||
| { | ||||
|     if(top_block) { /* top_block is not null */}; | ||||
|     // Nothing to connect internally | ||||
|     DLOG(INFO) << "nothing to connect internally"; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| void MixedObservables::disconnect(gr::top_block_sptr top_block) | ||||
| { | ||||
|     if(top_block) { /* top_block is not null */}; | ||||
|     // Nothing to disconnect | ||||
| } | ||||
|  | ||||
|  | ||||
| gr::basic_block_sptr MixedObservables::get_left_block() | ||||
| { | ||||
|     return observables_; | ||||
| } | ||||
|  | ||||
|  | ||||
| gr::basic_block_sptr MixedObservables::get_right_block() | ||||
| { | ||||
|     return observables_; | ||||
| } | ||||
|  | ||||
							
								
								
									
										91
									
								
								src/algorithms/observables/adapters/mixed_observables.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								src/algorithms/observables/adapters/mixed_observables.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | ||||
| /*! | ||||
|  * \file mixed_observables.h | ||||
|  * \brief Implementation of an adapter of a mixed observables block (muti-frequency and multi-system) | ||||
|  * to a ObservablesInterface | ||||
|  * \author Javier Arribas, 2015. jarribas(at)cttc.es | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Copyright (C) 2010-2015  (see AUTHORS file for a list of contributors) | ||||
|  * | ||||
|  * GNSS-SDR is a software defined Global Navigation | ||||
|  *          Satellite Systems receiver | ||||
|  * | ||||
|  * This file is part of GNSS-SDR. | ||||
|  * | ||||
|  * GNSS-SDR is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * GNSS-SDR is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #ifndef GNSS_SDR_MIXED_OBSERVABLES_H_ | ||||
| #define GNSS_SDR_MIXED_OBSERVABLES_H_ | ||||
|  | ||||
| #include <string> | ||||
| #include <gnuradio/msg_queue.h> | ||||
| #include "observables_interface.h" | ||||
| #include "mixed_observables_cc.h" | ||||
|  | ||||
|  | ||||
| class ConfigurationInterface; | ||||
|  | ||||
| /*! | ||||
|  * \brief This class implements an ObservablesInterface for mixed observables block (muti-frequency and multi-system) | ||||
|  */ | ||||
| class MixedObservables : public ObservablesInterface | ||||
| { | ||||
| public: | ||||
|     MixedObservables(ConfigurationInterface* configuration, | ||||
|                        std::string role, | ||||
|                        unsigned int in_streams, | ||||
|                        unsigned int out_streams, | ||||
|                        boost::shared_ptr<gr::msg_queue> queue); | ||||
|     virtual ~MixedObservables(); | ||||
|     std::string role() | ||||
|     { | ||||
|         return role_; | ||||
|     } | ||||
|  | ||||
|     //!  Returns "Mixed_Observables" | ||||
|     std::string implementation() | ||||
|     { | ||||
|         return "Mixed_Observables"; | ||||
|     } | ||||
|     void connect(gr::top_block_sptr top_block); | ||||
|     void disconnect(gr::top_block_sptr top_block); | ||||
|     gr::basic_block_sptr get_left_block(); | ||||
|     gr::basic_block_sptr get_right_block(); | ||||
|     void reset() | ||||
|     { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     //! All blocks must have an item_size() function implementation | ||||
|     size_t item_size() | ||||
|     { | ||||
|         return sizeof(gr_complex); | ||||
|     } | ||||
|  | ||||
| private: | ||||
|     mixed_observables_cc_sptr observables_; | ||||
|     bool dump_; | ||||
|     //unsigned int fs_in_; | ||||
|     std::string dump_filename_; | ||||
|     std::string role_; | ||||
|     unsigned int in_streams_; | ||||
|     unsigned int out_streams_; | ||||
|     boost::shared_ptr<gr::msg_queue> queue_; | ||||
| }; | ||||
|  | ||||
| #endif | ||||
| @@ -0,0 +1,205 @@ | ||||
| /*! | ||||
|  * \file mixed_observables_cc.cc | ||||
|  * \brief Implementation of the pseudorange computation block for MIXED observables (Multi-frequency and Multi-system) | ||||
|  * \author Javier Arribas, 2015. jarribas(at)cttc.es | ||||
|  * ------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Copyright (C) 2010-2015  (see AUTHORS file for a list of contributors) | ||||
|  * | ||||
|  * GNSS-SDR is a software defined Global Navigation | ||||
|  *          Satellite Systems receiver | ||||
|  * | ||||
|  * This file is part of GNSS-SDR. | ||||
|  * | ||||
|  * GNSS-SDR is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * GNSS-SDR is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #include "mixed_observables_cc.h" | ||||
| #include <algorithm> | ||||
| #include <bitset> | ||||
| #include <cmath> | ||||
| #include <iostream> | ||||
| #include <map> | ||||
| #include <sstream> | ||||
| #include <vector> | ||||
| #include <gnuradio/io_signature.h> | ||||
| #include <glog/logging.h> | ||||
| #include "control_message_factory.h" | ||||
| #include "gnss_synchro.h" | ||||
|  | ||||
|  | ||||
| using google::LogMessage; | ||||
|  | ||||
|  | ||||
| mixed_observables_cc_sptr | ||||
| mixed_make_observables_cc(unsigned int nchannels, boost::shared_ptr<gr::msg_queue> queue, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging) | ||||
| { | ||||
|     return mixed_observables_cc_sptr(new mixed_observables_cc(nchannels, queue, dump, dump_filename, output_rate_ms, flag_averaging)); | ||||
| } | ||||
|  | ||||
|  | ||||
| mixed_observables_cc::mixed_observables_cc(unsigned int nchannels, boost::shared_ptr<gr::msg_queue> queue, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging) : | ||||
| 		                        gr::block("mixed_observables_cc", gr::io_signature::make(nchannels, nchannels, sizeof(Gnss_Synchro)), | ||||
| 		                        gr::io_signature::make(nchannels, nchannels, sizeof(Gnss_Synchro))) | ||||
| { | ||||
|     // initialize internal vars | ||||
|     d_queue = queue; | ||||
|     d_dump = dump; | ||||
|     d_nchannels = nchannels; | ||||
|     d_output_rate_ms = output_rate_ms; | ||||
|     d_dump_filename = dump_filename; | ||||
|     d_flag_averaging = flag_averaging; | ||||
|  | ||||
|     // ############# ENABLE DATA FILE LOG ################# | ||||
|     if (d_dump == true) | ||||
|         { | ||||
|             if (d_dump_file.is_open() == false) | ||||
|                 { | ||||
|                     try | ||||
|                     { | ||||
|                             d_dump_file.exceptions (std::ifstream::failbit | std::ifstream::badbit ); | ||||
|                             d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); | ||||
|                             LOG(INFO) << "Observables dump enabled Log file: " << d_dump_filename.c_str() << std::endl; | ||||
|                     } | ||||
|                     catch (std::ifstream::failure& e) | ||||
|                     { | ||||
|                             LOG(WARNING) << "Exception opening observables dump file " << e.what() << std::endl; | ||||
|                     } | ||||
|                 } | ||||
|         } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| mixed_observables_cc::~mixed_observables_cc() | ||||
| { | ||||
|     d_dump_file.close(); | ||||
| } | ||||
|  | ||||
|  | ||||
| bool MixedPairCompare_gnss_synchro_Prn_delay_ms(const std::pair<int,Gnss_Synchro>& a, const std::pair<int,Gnss_Synchro>& b) | ||||
| { | ||||
|     return (a.second.Prn_timestamp_ms) < (b.second.Prn_timestamp_ms); | ||||
| } | ||||
|  | ||||
|  | ||||
| bool MixedPairCompare_gnss_synchro_d_TOW_at_current_symbol(const std::pair<int,Gnss_Synchro>& a, const std::pair<int,Gnss_Synchro>& b) | ||||
| { | ||||
|     return (a.second.d_TOW_at_current_symbol) < (b.second.d_TOW_at_current_symbol); | ||||
| } | ||||
|  | ||||
|  | ||||
| int mixed_observables_cc::general_work (int noutput_items, gr_vector_int &ninput_items, | ||||
|         gr_vector_const_void_star &input_items,	gr_vector_void_star &output_items) | ||||
| { | ||||
|     Gnss_Synchro **in = (Gnss_Synchro **)  &input_items[0];   // Get the input pointer | ||||
|     Gnss_Synchro **out = (Gnss_Synchro **)  &output_items[0]; // Get the output pointer | ||||
|  | ||||
|     Gnss_Synchro current_gnss_synchro[d_nchannels]; | ||||
|     std::map<int,Gnss_Synchro> current_gnss_synchro_map; | ||||
|     std::map<int,Gnss_Synchro>::iterator gnss_synchro_iter; | ||||
|  | ||||
|     /* | ||||
|      * 1. Read the GNSS SYNCHRO objects from available channels | ||||
|      */ | ||||
|     for (unsigned int i = 0; i < d_nchannels; i++) | ||||
|         { | ||||
|             //Copy the telemetry decoder data to local copy | ||||
|             current_gnss_synchro[i] = in[i][0]; | ||||
|             /* | ||||
|              * 1.2 Assume no valid pseudoranges | ||||
|              */ | ||||
|             current_gnss_synchro[i].Flag_valid_pseudorange = false; | ||||
|             current_gnss_synchro[i].Pseudorange_m = 0.0; | ||||
|             if(current_gnss_synchro[i].Signal[0]=='2'){ | ||||
| 				if (current_gnss_synchro[i].Flag_valid_word) //if this channel have valid word | ||||
| 					{ | ||||
| 						//record the word structure in a map for pseudorange computation | ||||
| 						current_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(current_gnss_synchro[i].Channel_ID, current_gnss_synchro[i])); | ||||
| 					} | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     /* | ||||
|      * 2. Compute RAW pseudoranges using COMMON RECEPTION TIME algorithm. Use only the valid channels (channels that are tracking a satellite) | ||||
|      */ | ||||
|     if(current_gnss_synchro_map.size() > 0) | ||||
|         { | ||||
|             /* | ||||
|              *  2.1 Use CURRENT set of measurements and find the nearest satellite | ||||
|              *  common RX time algorithm | ||||
|              */ | ||||
|             // what is the most recent symbol TOW in the current set? -> this will be the reference symbol | ||||
|             gnss_synchro_iter = max_element(current_gnss_synchro_map.begin(), current_gnss_synchro_map.end(), MixedPairCompare_gnss_synchro_d_TOW_at_current_symbol); | ||||
|             double d_TOW_reference = gnss_synchro_iter->second.d_TOW_at_current_symbol; | ||||
|             double d_ref_PRN_rx_time_ms = gnss_synchro_iter->second.Prn_timestamp_ms; | ||||
|             //int reference_channel= gnss_synchro_iter->second.Channel_ID; | ||||
|  | ||||
|             // Now compute RX time differences due to the PRN alignment in the correlators | ||||
|             double traveltime_ms; | ||||
|             double pseudorange_m; | ||||
|             double delta_rx_time_ms; | ||||
|             for(gnss_synchro_iter = current_gnss_synchro_map.begin(); gnss_synchro_iter != current_gnss_synchro_map.end(); gnss_synchro_iter++) | ||||
|             { | ||||
|             	// compute the required symbol history shift in order to match the reference symbol | ||||
|             	delta_rx_time_ms = gnss_synchro_iter->second.Prn_timestamp_ms - d_ref_PRN_rx_time_ms; | ||||
|             	//compute the pseudorange | ||||
|             	traveltime_ms = (d_TOW_reference-gnss_synchro_iter->second.d_TOW_at_current_symbol)*1000.0 + delta_rx_time_ms + GPS_STARTOFFSET_ms; | ||||
|             	pseudorange_m = traveltime_ms * GPS_C_m_ms; // [m] | ||||
|                 // update the pseudorange object | ||||
|                 current_gnss_synchro[gnss_synchro_iter->second.Channel_ID] = gnss_synchro_iter->second; | ||||
|                 current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Pseudorange_m = pseudorange_m; | ||||
|                 current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Flag_valid_pseudorange = true; | ||||
|                 current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].d_TOW_at_current_symbol = round(d_TOW_reference*1000)/1000 + GPS_STARTOFFSET_ms/1000.0; | ||||
|                 std::cout<<"Pseudorange_m="<<current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Pseudorange_m<<std::endl; | ||||
|                 std::cout<<"Signal="<<current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Signal<<std::endl; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     if(d_dump == true) | ||||
|         { | ||||
|             // MULTIPLEXED FILE RECORDING - Record results to file | ||||
|             try | ||||
|             { | ||||
|                     double tmp_double; | ||||
|                     for (unsigned int i = 0; i < d_nchannels; i++) | ||||
|                         { | ||||
|                             tmp_double = current_gnss_synchro[i].d_TOW_at_current_symbol; | ||||
|                             d_dump_file.write((char*)&tmp_double, sizeof(double)); | ||||
|                             tmp_double = current_gnss_synchro[i].Prn_timestamp_ms; | ||||
|                             d_dump_file.write((char*)&tmp_double, sizeof(double)); | ||||
|                             tmp_double = current_gnss_synchro[i].Pseudorange_m; | ||||
|                             d_dump_file.write((char*)&tmp_double, sizeof(double)); | ||||
|                             tmp_double = (double)(current_gnss_synchro[i].Flag_valid_pseudorange==true); | ||||
|                             d_dump_file.write((char*)&tmp_double, sizeof(double)); | ||||
|                             tmp_double = current_gnss_synchro[i].PRN; | ||||
|                             d_dump_file.write((char*)&tmp_double, sizeof(double)); | ||||
|                         } | ||||
|             } | ||||
|             catch (const std::ifstream::failure& e) | ||||
|             { | ||||
|                     LOG(WARNING) << "Exception writing observables dump file " << e.what() << std::endl; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     consume_each(1); //one by one | ||||
|     for (unsigned int i = 0; i < d_nchannels; i++) | ||||
|         { | ||||
|             *out[i] = current_gnss_synchro[i]; | ||||
|         } | ||||
|     return 1; // Output the observables | ||||
| } | ||||
|  | ||||
| @@ -0,0 +1,80 @@ | ||||
| /*! | ||||
|  * \file mixed_observables_cc.h | ||||
|  * \brief Interface of the pseudorange computation block for MIXED observables (Multi-frequency and Multi-system) | ||||
|  * \author Javier Arribas, 2015. jarribas(at)cttc.es | ||||
|  * ------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Copyright (C) 2010-2015  (see AUTHORS file for a list of contributors) | ||||
|  * | ||||
|  * GNSS-SDR is a software defined Global Navigation | ||||
|  *          Satellite Systems receiver | ||||
|  * | ||||
|  * This file is part of GNSS-SDR. | ||||
|  * | ||||
|  * GNSS-SDR is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * GNSS-SDR is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef GNSS_SDR_MIXED_OBSERVABLES_CC_H_ | ||||
| #define	GNSS_SDR_MIXED_OBSERVABLES_CC_H_ | ||||
|  | ||||
| #include <fstream> | ||||
| #include <queue> | ||||
| #include <string> | ||||
| #include <utility> | ||||
| #include <boost/thread/mutex.hpp> | ||||
| #include <boost/thread/thread.hpp> | ||||
| #include <gnuradio/block.h> | ||||
| #include <gnuradio/msg_queue.h> | ||||
| #include "concurrent_queue.h" | ||||
| #include "gps_navigation_message.h" | ||||
| #include "rinex_printer.h" | ||||
| #include "GPS_L1_CA.h" | ||||
| #include "gnss_synchro.h" | ||||
|  | ||||
| class mixed_observables_cc; | ||||
|  | ||||
| typedef boost::shared_ptr<mixed_observables_cc> mixed_observables_cc_sptr; | ||||
|  | ||||
| mixed_observables_cc_sptr | ||||
| mixed_make_observables_cc(unsigned int n_channels, boost::shared_ptr<gr::msg_queue> queue, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging); | ||||
|  | ||||
| /*! | ||||
|  * \brief This class implements a block that computes MIXED observables (Multi-frequency and Multi-system) | ||||
|  */ | ||||
| class mixed_observables_cc : public gr::block | ||||
| { | ||||
| public: | ||||
|     ~mixed_observables_cc (); | ||||
|     int general_work (int noutput_items, gr_vector_int &ninput_items, | ||||
|             gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); | ||||
|  | ||||
| private: | ||||
|     friend mixed_observables_cc_sptr | ||||
|     mixed_make_observables_cc(unsigned int nchannels, boost::shared_ptr<gr::msg_queue> queue, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging); | ||||
|     mixed_observables_cc(unsigned int nchannels, boost::shared_ptr<gr::msg_queue> queue, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging); | ||||
|  | ||||
|     // class private vars | ||||
|     boost::shared_ptr<gr::msg_queue> d_queue; | ||||
|     bool d_dump; | ||||
|     bool d_flag_averaging; | ||||
|     unsigned int d_nchannels; | ||||
|     int d_output_rate_ms; | ||||
|     std::string d_dump_filename; | ||||
|     std::ofstream d_dump_file; | ||||
| }; | ||||
|  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user
	 Javier
					Javier