mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-04-08 11:46:46 +00:00
Code cleaning
This commit is contained in:
parent
2f2ed7938e
commit
1cf508ad20
@ -94,8 +94,8 @@ void ad936x_iio_source::ad9361_channel_demux_and_record(ad936x_iio_samples *samp
|
||||
{
|
||||
for (ch = 0; ch < nchannels; ch++)
|
||||
{
|
||||
//std::cout << current_byte << " of " << samples_in->n_bytes << " test: " << (int)samples_in->buffer[current_byte] << "\n";
|
||||
(*files_out).at(ch).write(&samples_in->buffer[current_byte], 4); //two bytes I + two bytes Q per channel
|
||||
// std::cout << current_byte << " of " << samples_in->n_bytes << " test: " << (int)samples_in->buffer[current_byte] << "\n";
|
||||
(*files_out).at(ch).write(&samples_in->buffer[current_byte], 4); // two bytes I + two bytes Q per channel
|
||||
current_byte += 4;
|
||||
}
|
||||
}
|
||||
@ -134,7 +134,7 @@ ad936x_iio_source::ad936x_iio_source(
|
||||
{
|
||||
if (ad936x_custom->initialize_device(pluto_uri_, board_type_) == true)
|
||||
{
|
||||
//configure channels
|
||||
// configure channels
|
||||
if (ad936x_custom->init_config_ad9361_rx(bandwidth_,
|
||||
sample_rate_,
|
||||
freq_,
|
||||
@ -153,19 +153,19 @@ ad936x_iio_source::ad936x_iio_source(
|
||||
{
|
||||
std::cout << "ad936x_iio_source HW configured OK!\n";
|
||||
|
||||
//PPS FPGA Samplestamp information from TCP server
|
||||
// PPS FPGA Samplestamp information from TCP server
|
||||
pps_rx = std::make_shared<pps_tcp_rx>();
|
||||
ppsqueue = std::shared_ptr<Concurrent_Queue<PpsSamplestamp>>(new Concurrent_Queue<PpsSamplestamp>());
|
||||
|
||||
pps_rx->set_pps_samplestamp_queue(ppsqueue);
|
||||
ad936x_custom->set_pps_samplestamp_queue(ppsqueue);
|
||||
|
||||
//start PPS RX thread
|
||||
// start PPS RX thread
|
||||
if (ppsmode_ == true or customsamplesize_ == true)
|
||||
{
|
||||
pps_rx_thread = std::thread(&pps_tcp_rx::receive_pps, pps_rx, fe_ip_, fe_ctlport_);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||
//configure custom FPGA options
|
||||
// configure custom FPGA options
|
||||
switch (ssize_)
|
||||
{
|
||||
case 16:
|
||||
@ -251,13 +251,13 @@ ad936x_iio_source::ad936x_iio_source(
|
||||
|
||||
set_min_noutput_items(IIO_DEFAULTAD936XAPIFIFOSIZE_SAMPLES * 2); // multiplexed I,Q, so, two samples per complex sample
|
||||
set_min_output_buffer(IIO_DEFAULTAD936XAPIFIFOSIZE_SAMPLES * sizeof(int16_t) * 2);
|
||||
//std::cout << "max_output_buffer " << min_output_buffer(0) << " min_noutput_items: " << min_noutput_items() << "\n";
|
||||
// std::cout << "max_output_buffer " << min_output_buffer(0) << " min_noutput_items: " << min_noutput_items() << "\n";
|
||||
|
||||
// for (int n = 0; n < ad936x_custom->n_channels; n++)
|
||||
// {
|
||||
// std::string cap_file_root_name = "./debug_cap_ch";
|
||||
// samplesfile.push_back(std::fstream(cap_file_root_name + std::to_string(n) + ".dat", std::ios::out | std::ios::binary));
|
||||
// //samplesfile.back().exceptions(std::ios_base::badbit | std::ios_base::failbit); //this will enable exceptions for debug
|
||||
// // samplesfile.back().exceptions(std::ios_base::badbit | std::ios_base::failbit); //this will enable exceptions for debug
|
||||
//
|
||||
// if (samplesfile.back().is_open() == false)
|
||||
// {
|
||||
@ -301,7 +301,7 @@ int ad936x_iio_source::general_work(int noutput_items,
|
||||
ad936x_custom->pop_sample_buffer(current_buffer);
|
||||
current_samples = current_buffer.get();
|
||||
|
||||
//I and Q samples are interleaved in buffer: IQIQIQ...
|
||||
// I and Q samples are interleaved in buffer: IQIQIQ...
|
||||
int32_t n_interleaved_iq_samples_per_channel = current_samples->n_bytes / (ad936x_custom->n_channels * 2);
|
||||
if (noutput_items < n_interleaved_iq_samples_per_channel)
|
||||
{
|
||||
@ -310,12 +310,12 @@ int ad936x_iio_source::general_work(int noutput_items,
|
||||
}
|
||||
else
|
||||
{
|
||||
//ad9361_channel_demux_and_record(current_samples, ad936x_custom->n_channels, &samplesfile);
|
||||
// ad9361_channel_demux_and_record(current_samples, ad936x_custom->n_channels, &samplesfile);
|
||||
|
||||
uint32_t current_byte = 0;
|
||||
uint32_t current_byte_in_gr = 0;
|
||||
int16_t ch = 0;
|
||||
//std::cout << "nbytes: " << samples_in->n_bytes << " nsamples: " << samples_in->n_samples << " nch: " << nchannels << "\n";
|
||||
// std::cout << "nbytes: " << samples_in->n_bytes << " nsamples: " << samples_in->n_samples << " nch: " << nchannels << "\n";
|
||||
if (ad936x_custom->n_channels == 1)
|
||||
{
|
||||
memcpy(&((char *)output_items[0])[0], ¤t_samples->buffer[current_byte], current_samples->n_bytes);
|
||||
|
@ -193,7 +193,7 @@ bool Gr_Complex_Ip_Packet_Source::stop()
|
||||
bool Gr_Complex_Ip_Packet_Source::open()
|
||||
{
|
||||
std::array<char, PCAP_ERRBUF_SIZE> errbuf{};
|
||||
//boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function
|
||||
// boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function
|
||||
gr::thread::scoped_lock guard(d_setlock);
|
||||
// open device for reading
|
||||
descr = pcap_open_live(d_src_device.c_str(), 1500, 1, 1000, errbuf.data());
|
||||
@ -250,7 +250,7 @@ void Gr_Complex_Ip_Packet_Source::static_pcap_callback(u_char *args, const struc
|
||||
void Gr_Complex_Ip_Packet_Source::pcap_callback(__attribute__((unused)) u_char *args, __attribute__((unused)) const struct pcap_pkthdr *pkthdr,
|
||||
const u_char *packet)
|
||||
{
|
||||
//boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function
|
||||
// boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function
|
||||
|
||||
const gr_ip_header *ih;
|
||||
const gr_udp_header *uh;
|
||||
@ -500,7 +500,7 @@ int Gr_Complex_Ip_Packet_Source::work(int noutput_items,
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
// send samples to next GNU Radio block
|
||||
//boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function
|
||||
// boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function
|
||||
if (fifo_items == 0)
|
||||
{
|
||||
return 0;
|
||||
|
@ -83,7 +83,7 @@ private:
|
||||
bool open();
|
||||
|
||||
boost::thread *d_pcap_thread;
|
||||
//boost::mutex d_mutex;
|
||||
// boost::mutex d_mutex;
|
||||
struct sockaddr_in si_me
|
||||
{
|
||||
};
|
||||
|
@ -40,10 +40,10 @@ ad936x_iio_custom::ad936x_iio_custom(int debug_level_, int log_level_)
|
||||
|
||||
ad936x_iio_custom::~ad936x_iio_custom()
|
||||
{
|
||||
//disable TX
|
||||
// disable TX
|
||||
if (phy != NULL) PlutoTxEnable(false);
|
||||
|
||||
//Close device
|
||||
// Close device
|
||||
if (ctx != NULL) iio_context_destroy(ctx);
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ void ad936x_iio_custom::set_pps_samplestamp_queue(std::shared_ptr<Concurrent_Que
|
||||
|
||||
bool ad936x_iio_custom::initialize_device(std::string pluto_device_uri, std::string board_type)
|
||||
{
|
||||
//Find devices
|
||||
// Find devices
|
||||
if (pluto_device_uri == "local")
|
||||
{
|
||||
struct iio_scan_context *tmp_ctx = iio_create_scan_context("usb", 0);
|
||||
@ -130,7 +130,7 @@ bool ad936x_iio_custom::initialize_device(std::string pluto_device_uri, std::str
|
||||
|
||||
if (board_type.compare("fmcomms5") == 0)
|
||||
{
|
||||
stream_dev = iio_context_find_device(ctx, "cf-ad9361-A"); //first ad9361 in FMCOMMS5
|
||||
stream_dev = iio_context_find_device(ctx, "cf-ad9361-A"); // first ad9361 in FMCOMMS5
|
||||
if (stream_dev == NULL)
|
||||
{
|
||||
std::cout << "Unable to find cf-ad9361-A device from uri: " << pluto_device_uri << std::endl;
|
||||
@ -139,13 +139,13 @@ bool ad936x_iio_custom::initialize_device(std::string pluto_device_uri, std::str
|
||||
}
|
||||
else
|
||||
{
|
||||
stream_dev = iio_context_find_device(ctx, "cf-ad9361-lpc"); //regular AD9361 stream device in single AD9361 boards
|
||||
stream_dev = iio_context_find_device(ctx, "cf-ad9361-lpc"); // regular AD9361 stream device in single AD9361 boards
|
||||
if (stream_dev == NULL)
|
||||
{
|
||||
std::cout << "Unable to find cf-ad9361-lpc device from uri: " << pluto_device_uri << std::endl;
|
||||
return false;
|
||||
};
|
||||
dds_dev = iio_context_find_device(ctx, "cf-ad9361-dds-core-lpc"); //DDS core for LO oscillator (external transverter operation)
|
||||
dds_dev = iio_context_find_device(ctx, "cf-ad9361-dds-core-lpc"); // DDS core for LO oscillator (external transverter operation)
|
||||
if (stream_dev == NULL)
|
||||
{
|
||||
std::cout << "Warning: Unable to find cf-ad9361-dds-core-lpc device from uri: " << pluto_device_uri << std::endl;
|
||||
@ -267,13 +267,13 @@ bool ad936x_iio_custom::config_ad9361_dds(uint64_t freq_rf_tx_hz_,
|
||||
{
|
||||
params_phy.push_back("out_voltage0_hardwaregain=" +
|
||||
std::to_string(-tx_attenuation_db_));
|
||||
//disable the other TX
|
||||
// disable the other TX
|
||||
params_phy.push_back("out_voltage1_hardwaregain=" +
|
||||
std::to_string(-disabled_tx_attenuation));
|
||||
|
||||
configure_params(phy, params_phy);
|
||||
|
||||
//DDS TX CH1 I (tone #1)
|
||||
// DDS TX CH1 I (tone #1)
|
||||
params_dds.push_back("out_altvoltage0_TX1_I_F1_frequency=" +
|
||||
std::to_string(freq_dds_tx_hz_));
|
||||
params_dds.push_back("out_altvoltage0_TX1_I_F1_phase=" +
|
||||
@ -281,7 +281,7 @@ bool ad936x_iio_custom::config_ad9361_dds(uint64_t freq_rf_tx_hz_,
|
||||
params_dds.push_back("out_altvoltage0_TX1_I_F1_scale=" +
|
||||
std::to_string(scale_dds_));
|
||||
params_dds.push_back("out_altvoltage0_TX1_I_F1_raw=1");
|
||||
//DDS TX CH1 Q (tone #1)
|
||||
// DDS TX CH1 Q (tone #1)
|
||||
params_dds.push_back("out_altvoltage2_TX1_Q_F1_frequency=" +
|
||||
std::to_string(freq_dds_tx_hz_));
|
||||
params_dds.push_back("out_altvoltage2_TX1_Q_F1_phase=" +
|
||||
@ -296,13 +296,13 @@ bool ad936x_iio_custom::config_ad9361_dds(uint64_t freq_rf_tx_hz_,
|
||||
{
|
||||
params_phy.push_back("out_voltage1_hardwaregain=" +
|
||||
std::to_string(-tx_attenuation_db_));
|
||||
//disable the other TX
|
||||
// disable the other TX
|
||||
params_phy.push_back("out_voltage0_hardwaregain=" +
|
||||
std::to_string(-disabled_tx_attenuation));
|
||||
|
||||
configure_params(phy, params_phy);
|
||||
|
||||
//DDS TX CH2 I (tone #1)
|
||||
// DDS TX CH2 I (tone #1)
|
||||
params_dds.push_back("out_altvoltage4_TX2_I_F1_frequency=" +
|
||||
std::to_string(freq_dds_tx_hz_));
|
||||
params_dds.push_back("out_altvoltage4_TX2_I_F1_phase=" +
|
||||
@ -310,7 +310,7 @@ bool ad936x_iio_custom::config_ad9361_dds(uint64_t freq_rf_tx_hz_,
|
||||
params_dds.push_back("out_altvoltage4_TX2_I_F1_scale=" +
|
||||
std::to_string(scale_dds_));
|
||||
params_dds.push_back("out_altvoltage4_TX2_I_F1_raw=1");
|
||||
//DDS TX CH2 Q (tone #1)
|
||||
// DDS TX CH2 Q (tone #1)
|
||||
params_dds.push_back("out_altvoltage6_TX2_Q_F1_frequency=" +
|
||||
std::to_string(freq_dds_tx_hz_));
|
||||
params_dds.push_back("out_altvoltage6_TX2_Q_F1_phase=" +
|
||||
@ -549,7 +549,7 @@ bool ad936x_iio_custom::init_config_ad9361_rx(long long bandwidth_,
|
||||
}
|
||||
else
|
||||
{
|
||||
PlutoTxEnable(false); //power down the TX LO to reduce interferences
|
||||
PlutoTxEnable(false); // power down the TX LO to reduce interferences
|
||||
}
|
||||
|
||||
int set_filter_ret = ad9361_set_bb_rate(phy, sample_rate_sps);
|
||||
@ -564,7 +564,7 @@ bool ad936x_iio_custom::init_config_ad9361_rx(long long bandwidth_,
|
||||
// std::cout << "Warning: Unable to set AD936x RX filter parameters!\n";
|
||||
// }
|
||||
|
||||
//testing: set manual RX filter chain
|
||||
// testing: set manual RX filter chain
|
||||
// unsigned long RX_analog_bb_lpf_stop_hz = 1000000;
|
||||
// unsigned long TX_analog_bb_lpf_stop_hz = 1000000;
|
||||
//
|
||||
@ -588,7 +588,7 @@ bool ad936x_iio_custom::init_config_ad9361_rx(long long bandwidth_,
|
||||
name << "voltage";
|
||||
name << 0;
|
||||
struct iio_channel *phy_ch;
|
||||
phy_ch = iio_device_find_channel(phy, name.str().c_str(), false); //false means RX
|
||||
phy_ch = iio_device_find_channel(phy, name.str().c_str(), false); // false means RX
|
||||
if (!phy_ch)
|
||||
{
|
||||
std::cerr << "Could not find AD9361 phy channel: " << name.str() << "\n";
|
||||
@ -639,7 +639,7 @@ bool ad936x_iio_custom::init_config_ad9361_rx(long long bandwidth_,
|
||||
name << "voltage";
|
||||
name << 1;
|
||||
struct iio_channel *phy_ch;
|
||||
phy_ch = iio_device_find_channel(phy, name.str().c_str(), false); //false means RX
|
||||
phy_ch = iio_device_find_channel(phy, name.str().c_str(), false); // false means RX
|
||||
if (!phy_ch)
|
||||
{
|
||||
std::cerr << "Could not find AD9361 phy channel: " << name.str() << "\n";
|
||||
@ -773,7 +773,7 @@ bool ad936x_iio_custom::setRXGain(int ch_num, std::string gain_mode, double gain
|
||||
double ad936x_iio_custom::get_rx_gain(int ch_num)
|
||||
{
|
||||
if (check_device() == false) return -1;
|
||||
double gain_dB; //gain in dB
|
||||
double gain_dB; // gain in dB
|
||||
int ret = 0;
|
||||
if (ch_num == 0)
|
||||
{
|
||||
@ -804,7 +804,7 @@ double ad936x_iio_custom::get_rx_gain(int ch_num)
|
||||
bool ad936x_iio_custom::calibrate(int ch, double bw_hz)
|
||||
{
|
||||
if (check_device() == false) return false;
|
||||
//todo
|
||||
// todo
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -889,7 +889,7 @@ void ad936x_iio_custom::PlutoTxEnable(bool txon)
|
||||
int ret;
|
||||
if (txon == false)
|
||||
{
|
||||
ret = iio_channel_attr_write_bool(iio_device_find_channel(phy, "altvoltage1", true), "powerdown", true); //turn off TX LO
|
||||
ret = iio_channel_attr_write_bool(iio_device_find_channel(phy, "altvoltage1", true), "powerdown", true); // turn off TX LO
|
||||
if (ret < 0)
|
||||
{
|
||||
std::cerr << "Failed to write altvoltage1 powerdown: " << ret << std::endl;
|
||||
@ -897,7 +897,7 @@ void ad936x_iio_custom::PlutoTxEnable(bool txon)
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = iio_channel_attr_write_bool(iio_device_find_channel(phy, "altvoltage1", true), "powerdown", false); //turn on TX LO
|
||||
ret = iio_channel_attr_write_bool(iio_device_find_channel(phy, "altvoltage1", true), "powerdown", false); // turn on TX LO
|
||||
if (ret < 0)
|
||||
{
|
||||
std::cerr << "Failed to write altvoltage1 powerdown: " << ret << std::endl;
|
||||
@ -909,10 +909,10 @@ void ad936x_iio_custom::PlutoTxEnable(bool txon)
|
||||
void ad936x_iio_custom::setPlutoGpo(int p)
|
||||
{
|
||||
char pins[11];
|
||||
sprintf(pins, "0x27 0x%x0", p); //direct access to AD9361 registers... WARNING!
|
||||
sprintf(pins, "0x27 0x%x0", p); // direct access to AD9361 registers... WARNING!
|
||||
pins[9] = 0;
|
||||
int ret;
|
||||
//std::cout << "send: " << pins << " \n";
|
||||
// std::cout << "send: " << pins << " \n";
|
||||
if (check_device())
|
||||
{
|
||||
ret = iio_device_debug_attr_write(phy, "direct_reg_access", pins);
|
||||
@ -932,7 +932,7 @@ bool ad936x_iio_custom::select_rf_filter(std::string rf_filter)
|
||||
// adi,gpo-manual-mode-enable-mask does not work...
|
||||
// some software use the direct_reg_access (see https://github.com/g4eml/Langstone/blob/master/LangstoneGUI.c)
|
||||
|
||||
//since plutosdr fw 31:
|
||||
// since plutosdr fw 31:
|
||||
// GPOs can be addressed individual 0..3 or altogether using 0xF as Identifier.
|
||||
//
|
||||
// SYNTAX:
|
||||
@ -958,7 +958,7 @@ bool ad936x_iio_custom::select_rf_filter(std::string rf_filter)
|
||||
|
||||
if (rf_filter.compare("E1") == 0)
|
||||
{
|
||||
//set gpio0 to switch L1 filter
|
||||
// set gpio0 to switch L1 filter
|
||||
// setPlutoGpo(plutoGpo);
|
||||
ret = iio_device_debug_attr_write(phy, "gpo_set", "0 0");
|
||||
if (ret < 0)
|
||||
@ -969,7 +969,7 @@ bool ad936x_iio_custom::select_rf_filter(std::string rf_filter)
|
||||
}
|
||||
else if (rf_filter.compare("E5E6") == 0)
|
||||
{
|
||||
//set gpio0 to switch L5/L6 filter (GPO0)
|
||||
// set gpio0 to switch L5/L6 filter (GPO0)
|
||||
// plutoGpo = plutoGpo | 0x10;
|
||||
// setPlutoGpo(plutoGpo); //set the Pluto GPO Pin
|
||||
ret = iio_device_debug_attr_write(phy, "gpo_set", "0 1");
|
||||
@ -1018,20 +1018,20 @@ void ad936x_iio_custom::get_PPS_timestamp()
|
||||
return;
|
||||
}
|
||||
|
||||
//Get new PPS samplestamp and associate it to the corresponding uBlox TP message
|
||||
// Get new PPS samplestamp and associate it to the corresponding uBlox TP message
|
||||
while (receive_samples == true)
|
||||
{
|
||||
std::cout << "[" << pps.samplestamp << "][o:" << pps.overflow_reg << "] uBlox time message received with TOW=" << tow.tow_ms << "\n";
|
||||
LOG(INFO) << "[" << pps.samplestamp << "][o:" << pps.overflow_reg << "] uBlox time message received with TOW=" << tow.tow_ms << "\n";
|
||||
//write timestamp information to timestamp metadata file:
|
||||
//uint64_t: absolute sample counter from the beginning of sample capture associated to the rising edge of the PPS signal
|
||||
// write timestamp information to timestamp metadata file:
|
||||
// uint64_t: absolute sample counter from the beginning of sample capture associated to the rising edge of the PPS signal
|
||||
// ppstimefile.write(reinterpret_cast<char *>(&pps.samplestamp), sizeof(uint64_t));
|
||||
//int32_t: Galileo/GPS Week Number associated to the rising edge of PPS signal
|
||||
// int32_t: Galileo/GPS Week Number associated to the rising edge of PPS signal
|
||||
// ppstimefile.write(reinterpret_cast<char *>(&tow.week), sizeof(int32_t));
|
||||
//int32_t: Galileo/GPS TOW associated to the rising edge of PPS signal
|
||||
// int32_t: Galileo/GPS TOW associated to the rising edge of PPS signal
|
||||
// ppstimefile.write(reinterpret_cast<char *>(&tow.tow_ms), sizeof(int32_t));
|
||||
//record pps rise samplestamp associated to the absolute sample counter
|
||||
//PPS rising edge must be associated with the corresponding uBlox time message (tx once a second)
|
||||
// record pps rise samplestamp associated to the absolute sample counter
|
||||
// PPS rising edge must be associated with the corresponding uBlox time message (tx once a second)
|
||||
|
||||
|
||||
if (GnssTime_queue->timed_wait_and_pop(tow, 2000) == false)
|
||||
@ -1066,10 +1066,10 @@ void ad936x_iio_custom::get_PPS_timestamp()
|
||||
}
|
||||
bool ad936x_iio_custom::start_sample_rx(bool ppsmode)
|
||||
{
|
||||
//using queues of smart pointers to preallocated buffers
|
||||
// using queues of smart pointers to preallocated buffers
|
||||
free_buffers.clear();
|
||||
used_buffers.clear();
|
||||
//preallocate buffers and use queues
|
||||
// preallocate buffers and use queues
|
||||
std::cerr << "Allocating memory..\n";
|
||||
try
|
||||
{
|
||||
@ -1084,33 +1084,33 @@ bool ad936x_iio_custom::start_sample_rx(bool ppsmode)
|
||||
return false;
|
||||
}
|
||||
|
||||
//prepare capture channels
|
||||
// prepare capture channels
|
||||
std::vector<std::string> channels;
|
||||
switch (n_channels)
|
||||
{
|
||||
case 1:
|
||||
channels.push_back("voltage0"); //Channel 0 I
|
||||
channels.push_back("voltage1"); //Channel 0 Q
|
||||
channels.push_back("voltage0"); // Channel 0 I
|
||||
channels.push_back("voltage1"); // Channel 0 Q
|
||||
break;
|
||||
case 2:
|
||||
channels.push_back("voltage0"); //Channel 0 I
|
||||
channels.push_back("voltage1"); //Channel 0 Q
|
||||
channels.push_back("voltage2"); //Channel 1 I
|
||||
channels.push_back("voltage3"); //Channel 1 Q
|
||||
channels.push_back("voltage0"); // Channel 0 I
|
||||
channels.push_back("voltage1"); // Channel 0 Q
|
||||
channels.push_back("voltage2"); // Channel 1 I
|
||||
channels.push_back("voltage3"); // Channel 1 Q
|
||||
break;
|
||||
default:
|
||||
channels.push_back("voltage0"); //Channel 0 I
|
||||
channels.push_back("voltage1"); //Channel 0 Q
|
||||
channels.push_back("voltage0"); // Channel 0 I
|
||||
channels.push_back("voltage1"); // Channel 0 Q
|
||||
}
|
||||
|
||||
receive_samples = true;
|
||||
//start sample capture thread
|
||||
// start sample capture thread
|
||||
capture_samples_thread = std::thread(&ad936x_iio_custom::capture, this, channels);
|
||||
//start sample overflow detector
|
||||
// start sample overflow detector
|
||||
overflow_monitor_thread = std::thread(&ad936x_iio_custom::monitor_thread_fn, this);
|
||||
|
||||
|
||||
//start PPS and GNSS Time capture thread
|
||||
// start PPS and GNSS Time capture thread
|
||||
|
||||
if (ppsmode == true)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@
|
||||
#endif
|
||||
|
||||
#include "ad936x_iio_samples.h"
|
||||
#include <ad9361.h> //multichip sync and high level functions
|
||||
#include <ad9361.h> // multichip sync and high level functions
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
@ -114,13 +114,13 @@ private:
|
||||
void PlutoTxEnable(bool txon);
|
||||
void setPlutoGpo(int p);
|
||||
|
||||
//Device structure
|
||||
// Device structure
|
||||
struct iio_context *ctx;
|
||||
struct iio_device *phy;
|
||||
struct iio_device *stream_dev;
|
||||
struct iio_device *dds_dev;
|
||||
|
||||
//stream
|
||||
// stream
|
||||
|
||||
uint64_t sample_rate_sps;
|
||||
|
||||
@ -135,7 +135,7 @@ private:
|
||||
boost::atomic<bool> receive_samples;
|
||||
|
||||
boost::atomic<bool> fpga_overflow;
|
||||
//using queues of smart pointers to preallocated buffers
|
||||
// using queues of smart pointers to preallocated buffers
|
||||
Concurrent_Queue<std::shared_ptr<ad936x_iio_samples>> free_buffers;
|
||||
Concurrent_Queue<std::shared_ptr<ad936x_iio_samples>> used_buffers;
|
||||
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
uint32_t n_interleaved_iq_samples;
|
||||
uint16_t n_channels;
|
||||
uint16_t step_bytes;
|
||||
char buffer[IIO_DEFAULTAD936XAPIFIFOSIZE_SAMPLES * 4 * 4]; //max 16 bits samples per buffer (4 channels, 2-bytes per I + 2-bytes per Q)
|
||||
char buffer[IIO_DEFAULTAD936XAPIFIFOSIZE_SAMPLES * 4 * 4]; // max 16 bits samples per buffer (4 channels, 2-bytes per I + 2-bytes per Q)
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -13,7 +13,7 @@
|
||||
class PpsSamplestamp
|
||||
{
|
||||
public:
|
||||
uint64_t samplestamp; //PPS rising edge samples counter from the beginning of rx stream opperation. Notice that it is reseted to zero if sample buffer overflow is detected on the FPGA side
|
||||
uint64_t samplestamp; // PPS rising edge samples counter from the beginning of rx stream opperation. Notice that it is reseted to zero if sample buffer overflow is detected on the FPGA side
|
||||
uint32_t overflow_reg; // >0 indicates overflow situation in the FPGA RX buffer
|
||||
};
|
||||
|
||||
|
@ -52,16 +52,16 @@ bool pps_tcp_rx::send_cmd(std::string cmd)
|
||||
}
|
||||
void pps_tcp_rx::receive_pps(std::string ip_address, int port)
|
||||
{
|
||||
//create a message buffer
|
||||
// create a message buffer
|
||||
char buf[1500];
|
||||
//setup a socket and connection tools
|
||||
// setup a socket and connection tools
|
||||
sockaddr_in sendSockAddr;
|
||||
sendSockAddr.sin_family = AF_INET;
|
||||
sendSockAddr.sin_addr.s_addr =
|
||||
inet_addr(ip_address.c_str());
|
||||
sendSockAddr.sin_port = htons(port);
|
||||
clientSd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
//try to connect...
|
||||
// try to connect...
|
||||
int status = connect(clientSd,
|
||||
(sockaddr *)&sendSockAddr, sizeof(sendSockAddr));
|
||||
if (status < 0)
|
||||
@ -84,8 +84,8 @@ void pps_tcp_rx::receive_pps(std::string ip_address, int port)
|
||||
{
|
||||
if (new_pps_line.length() > 0)
|
||||
{
|
||||
//std::cout << "pps_tcp_rx debug: " << new_pps_line << "\n";
|
||||
//parse string and push PPS data to the PPS queue
|
||||
// std::cout << "pps_tcp_rx debug: " << new_pps_line << "\n";
|
||||
// parse string and push PPS data to the PPS queue
|
||||
std::stringstream ss(new_pps_line);
|
||||
std::vector<std::string> data;
|
||||
while (ss.good())
|
||||
@ -97,7 +97,7 @@ void pps_tcp_rx::receive_pps(std::string ip_address, int port)
|
||||
if (data.size() >= 2)
|
||||
{
|
||||
PpsSamplestamp new_pps;
|
||||
//sample counter
|
||||
// sample counter
|
||||
std::size_t found = data.at(0).find("sc=");
|
||||
if (found != std::string::npos)
|
||||
{
|
||||
@ -131,7 +131,7 @@ void pps_tcp_rx::receive_pps(std::string ip_address, int port)
|
||||
std::cout << "pps_tcp_rx debug: o parse error str " << data.at(1) << "\n";
|
||||
}
|
||||
Pps_queue->push(new_pps);
|
||||
//std::cout << "pps_tcp_rx debug: pps pushed!\n";
|
||||
// std::cout << "pps_tcp_rx debug: pps pushed!\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user