18 #ifndef GNSS_SDR_GNSS_SDR_FLAGS_H 19 #define GNSS_SDR_GNSS_SDR_FLAGS_H 24 #if USE_GLOG_AND_GFLAGS 25 #include <gflags/gflags.h> 27 #include <absl/flags/declare.h> 28 #include <absl/flags/flag.h> 42 #if USE_GLOG_AND_GFLAGS 44 DECLARE_string(config_file);
46 DECLARE_string(log_dir);
50 DECLARE_string(signal_source);
51 DECLARE_string(timestamp_source);
52 DECLARE_bool(rf_shutdown);
55 DECLARE_int32(doppler_max);
56 DECLARE_int32(doppler_step);
59 DECLARE_int32(cn0_samples);
60 DECLARE_int32(cn0_min);
61 DECLARE_int32(max_lock_fail);
62 DECLARE_int32(max_carrier_lock_fail);
63 DECLARE_double(carrier_lock_th);
64 DECLARE_double(dll_bw_hz);
65 DECLARE_double(pll_bw_hz);
68 DECLARE_int32(carrier_smoothing_factor);
69 const int32_t DEFAULT_CARRIER_SMOOTHING_FACTOR = 200;
72 DECLARE_string(RINEX_version);
73 DECLARE_string(RINEX_name);
74 DECLARE_bool(keyboard);
103 const int32_t DEFAULT_CARRIER_SMOOTHING_FACTOR = 200;
110 static inline void GetTempDirectories(std::vector<std::string>& list)
115 const char* candidates[] = {
117 std::getenv(
"TEST_TMPDIR"),
120 std::getenv(
"TMPDIR"),
126 for (
auto d : candidates)
131 std::string dstr = d;
132 if (dstr[dstr.size() - 1] !=
'/')
136 list.push_back(dstr);
139 if (!stat(d, &statbuf) && S_ISDIR(statbuf.st_mode))
148 static inline void GetExistingTempDirectories(std::vector<std::string>& list)
150 GetTempDirectories(list);
151 auto i_dir = list.begin();
152 while (i_dir != list.end())
154 if (access(i_dir->c_str(), 0))
156 i_dir = list.erase(i_dir);
166 static inline std::string GetTempDir()
168 std::vector<std::string> temp_directories_list;
169 GetExistingTempDirectories(temp_directories_list);
171 if (temp_directories_list.empty())
173 std::cerr <<
"No temporary directory found\n";
178 return temp_directories_list.front();
181 bool ValidateFlags();
187 #endif // GNSS_SDR_GNSS_SDR_FLAGS_H ABSL_DECLARE_FLAG(std::string, c)
Path to the configuration file.