summaryrefslogtreecommitdiffstats
path: root/src/output
diff options
context:
space:
mode:
Diffstat (limited to 'src/output')
-rw-r--r--src/output/USRPTime.cpp41
-rw-r--r--src/output/USRPTime.h5
2 files changed, 17 insertions, 29 deletions
diff --git a/src/output/USRPTime.cpp b/src/output/USRPTime.cpp
index 56bdf50..39b0e5a 100644
--- a/src/output/USRPTime.cpp
+++ b/src/output/USRPTime.cpp
@@ -204,43 +204,32 @@ void USRPTime::check_gps()
if (gpsfix_needs_check() and time_last_check + checkinterval < time_now) {
time_last_check = time_now;
- // Alternate between launching thread and checking the
- // result.
- if (gps_fix_task.joinable()) {
- if (gps_fix_future.has_value()) {
-
- gps_fix_future.wait();
-
- gps_fix_task.join();
-
- if (not gps_fix_future.get()) {
- if (num_checks_without_gps_fix == 0) {
- etiLog.level(alert) << "OutputUHD: GPS Time Lock lost";
- }
- num_checks_without_gps_fix++;
+ // Alternate between launching task and checking the result.
+ if (gps_fix_future.valid()) {
+ if (not gps_fix_future.get()) {
+ if (num_checks_without_gps_fix == 0) {
+ etiLog.level(alert) << "OutputUHD: GPS Time Lock lost";
}
- else {
- if (num_checks_without_gps_fix) {
- etiLog.level(info) << "OutputUHD: GPS Time Lock recovered";
- }
- num_checks_without_gps_fix = 0;
+ num_checks_without_gps_fix++;
+ }
+ else {
+ if (num_checks_without_gps_fix) {
+ etiLog.level(info) << "OutputUHD: GPS Time Lock recovered";
}
+ num_checks_without_gps_fix = 0;
}
}
else {
// Checking the sensor here takes too much
// time, it has to be done in a separate thread.
if (gpsdo_is_ettus()) {
- gps_fix_pt = boost::packaged_task<bool>(
- boost::bind(check_gps_locked, m_usrp) );
+ gps_fix_future = std::async(std::launch::async,
+ std::bind(check_gps_locked, m_usrp) );
}
else {
- gps_fix_pt = boost::packaged_task<bool>(
- boost::bind(check_gps_timelock, m_usrp) );
+ gps_fix_future = std::async(std::launch::async,
+ std::bind(check_gps_timelock, m_usrp) );
}
- gps_fix_future = gps_fix_pt.get_future();
-
- gps_fix_task = boost::thread(boost::move(gps_fix_pt));
}
}
}
diff --git a/src/output/USRPTime.h b/src/output/USRPTime.h
index 7527f21..70e55ae 100644
--- a/src/output/USRPTime.h
+++ b/src/output/USRPTime.h
@@ -42,6 +42,7 @@ DESCRIPTION:
#include <memory>
#include <string>
#include <atomic>
+#include <future>
#include "Log.h"
#include "output/SDR.h"
@@ -96,9 +97,7 @@ class USRPTime {
using timepoint_t = std::chrono::time_point<std::chrono::steady_clock>;
timepoint_t time_last_check;
- boost::packaged_task<bool> gps_fix_pt;
- boost::unique_future<bool> gps_fix_future;
- boost::thread gps_fix_task;
+ std::future<bool> gps_fix_future;
// Returns true if we want to check for the gps_timelock sensor
bool gpsfix_needs_check(void) const;