diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2018-02-14 10:34:54 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2018-02-14 10:34:54 +0100 |
commit | 21b9b097329453bb3c3666d9429a1d1c7257efae (patch) | |
tree | 55ffad80c7b8e42b1c1ce6a9f065cc052a18c4ad /src | |
parent | aa55134b32e8026ad0e052717f488a7e0837bda5 (diff) | |
download | dabmod-21b9b097329453bb3c3666d9429a1d1c7257efae.tar.gz dabmod-21b9b097329453bb3c3666d9429a1d1c7257efae.tar.bz2 dabmod-21b9b097329453bb3c3666d9429a1d1c7257efae.zip |
Fix handling of GPS sensors
Diffstat (limited to 'src')
-rw-r--r-- | src/output/USRPTime.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/output/USRPTime.cpp b/src/output/USRPTime.cpp index 8de86fb..56bdf50 100644 --- a/src/output/USRPTime.cpp +++ b/src/output/USRPTime.cpp @@ -48,14 +48,29 @@ static bool check_gps_timelock(uhd::usrp::multi_usrp::sptr& usrp) usrp->get_mboard_sensor("gps_timelock", 0).to_pp_string(); if (sensor_value.find("TIME LOCKED") == string::npos) { - etiLog.level(warn) << "OutputUHD: gps_timelock " << sensor_value; + + const string gngga = + usrp->get_mboard_sensor("gps_gngga", 0).to_pp_string(); + + std::stringstream ss(gngga); + std::string item; + std::vector<std::string> elems; + while (std::getline(ss, item, ',')) { + elems.push_back(item); + } + + const auto num_svs = (elems.size() >= 7) ? elems[7] : "?"; + + etiLog.level(info) << "OutputUHD: " << num_svs << " SVs," + " gps_timelock " << sensor_value; return false; } return true; } - catch (const uhd::lookup_error &e) { - etiLog.level(warn) << "OutputUHD: no gps_timelock sensor"; + catch (const uhd::exception &e) { + etiLog.level(warn) << "OutputUHD: no gps_timelock sensor: " << + e.what(); return false; } } @@ -74,8 +89,9 @@ static bool check_gps_locked(uhd::usrp::multi_usrp::sptr& usrp) return true; } - catch (const uhd::lookup_error &e) { - etiLog.level(warn) << "OutputUHD: no gps_locked sensor"; + catch (const uhd::exception &e) { + etiLog.level(warn) << "OutputUHD: no gps_locked sensor" << + e.what(); return false; } } @@ -100,7 +116,7 @@ USRPTime::USRPTime( } now = system_clock::now(); - this_thread::sleep_for(seconds(1)); + this_thread::sleep_for(seconds(2)); } if (not checkfunc(m_usrp)) { |