1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-14 04:00:34 +00:00

If dump_filename points to a non-existing folder, try to create it

This commit is contained in:
Carles Fernandez 2021-09-24 16:52:13 +02:00
parent f05ab2c410
commit 48b62e9585
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
2 changed files with 37 additions and 4 deletions

View File

@ -34,6 +34,11 @@ All notable changes to GNSS-SDR will be documented in this file.
`TelemetryDecoder_XX.dump_crc_stats_filename=./crc_stats` in the configuration `TelemetryDecoder_XX.dump_crc_stats_filename=./crc_stats` in the configuration
file. At the end of the processing (or exiting with `q` + `[Enter]`), the CRC file. At the end of the processing (or exiting with `q` + `[Enter]`), the CRC
check success rate will be reported in a file. check success rate will be reported in a file.
- The `UHD_Signal_Source` learned to dump data in folders that do not exist,
*e.g.*, if `SignalSource.dump=true`,
`SignalSource.dump_filename=./non-existing/data.dat`, and the `non-existing`
folder does not exist, it will be created if the running user has writing
permissions. This also works for absolute paths.
See the definitions of concepts and metrics at See the definitions of concepts and metrics at
https://gnss-sdr.org/design-forces/ https://gnss-sdr.org/design-forces/

View File

@ -17,6 +17,8 @@
#include "uhd_signal_source.h" #include "uhd_signal_source.h"
#include "GPS_L1_CA.h" #include "GPS_L1_CA.h"
#include "configuration_interface.h" #include "configuration_interface.h"
#include "gnss_sdr_create_directory.h"
#include "gnss_sdr_filesystem.h"
#include "gnss_sdr_string_literals.h" #include "gnss_sdr_string_literals.h"
#include "gnss_sdr_valve.h" #include "gnss_sdr_valve.h"
#include <glog/logging.h> #include <glog/logging.h>
@ -66,8 +68,21 @@ UhdSignalSource::UhdSignalSource(const ConfigurationInterface* configuration,
{ {
// Single RF channel UHD operation (backward compatible config file format) // Single RF channel UHD operation (backward compatible config file format)
samples_.push_back(configuration->property(role + ".samples", 0)); samples_.push_back(configuration->property(role + ".samples", 0));
dump_.push_back(configuration->property(role + ".dump", false)); bool dump_source = configuration->property(role + ".dump", false);
dump_filename_.push_back(configuration->property(role + ".dump_filename", default_dump_file)); dump_.push_back(dump_source);
std::string dump_source_filename = configuration->property(role + ".dump_filename", default_dump_file);
dump_filename_.push_back(dump_source_filename);
if (dump_source)
{
std::string::size_type pos = dump_source_filename.find_last_of(fs::path::preferred_separator);
if (pos != std::string::npos)
{
if (!gnss_sdr_create_directory(dump_source_filename.substr(0, pos)))
{
std::cerr << "GNSS-SDR cannot create the " << dump_source_filename.substr(0, pos) << " folder. Wrong permissions?\n";
}
}
}
freq_.push_back(configuration->property(role + ".freq", GPS_L1_FREQ_HZ)); freq_.push_back(configuration->property(role + ".freq", GPS_L1_FREQ_HZ));
gain_.push_back(configuration->property(role + ".gain", 50.0)); gain_.push_back(configuration->property(role + ".gain", 50.0));
@ -81,8 +96,21 @@ UhdSignalSource::UhdSignalSource(const ConfigurationInterface* configuration,
{ {
// Single RF channel UHD operation (backward compatible config file format) // Single RF channel UHD operation (backward compatible config file format)
samples_.push_back(configuration->property(role + ".samples" + std::to_string(i), 0)); samples_.push_back(configuration->property(role + ".samples" + std::to_string(i), 0));
dump_.push_back(configuration->property(role + ".dump" + std::to_string(i), false)); bool dump_source = configuration->property(role + ".dump" + std::to_string(i), false);
dump_filename_.push_back(configuration->property(role + ".dump_filename" + std::to_string(i), default_dump_file)); dump_.push_back(dump_source);
std::string dump_source_filename = configuration->property(role + ".dump_filename" + std::to_string(i), std::to_string(i) + "_"s + default_dump_file);
dump_filename_.push_back(dump_source_filename);
if (dump_source)
{
std::string::size_type pos = dump_source_filename.find_last_of(fs::path::preferred_separator);
if (pos != std::string::npos)
{
if (!gnss_sdr_create_directory(dump_source_filename.substr(0, pos)))
{
std::cerr << "GNSS-SDR cannot create the " << dump_source_filename.substr(0, pos) << " folder. Wrong permissions?\n";
}
}
}
freq_.push_back(configuration->property(role + ".freq" + std::to_string(i), GPS_L1_FREQ_HZ)); freq_.push_back(configuration->property(role + ".freq" + std::to_string(i), GPS_L1_FREQ_HZ));
gain_.push_back(configuration->property(role + ".gain" + std::to_string(i), 50.0)); gain_.push_back(configuration->property(role + ".gain" + std::to_string(i), 50.0));