aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/gps_ctrl.cpp
Commit message (Collapse)AuthorAgeFilesLines
* uhd: Fix non-standard function name macrosMartin Braun2022-01-121-2/+2
| | | | | | | | | | | | | | | | | Throughout UHD, we are using a random mix of __FUNCTION__, __func__, __PRETTY_FUNCTION__, and BOOST_CURRENT_FUNCTION. Note that the first two macros are non-standard (although many compilers understand them), and the last requires Boost. __func__ is available since C++11, but is not the best choice because the C++ standard doesn't require it to be of any specific value. We thus define UHD_FUNCTION and UHD_PRETTY_FUNCTION as portable macros. The former simply contains the undecorated function name, the latter the expanded function with full signature. As it happens, our currently supported compilers didn't have any issues using non-standard macros, so the main fix here is the removal of the Boost macros and the harmonization of the other macros.
* uhd: Replace Boost mutexes and locks with standard optionsMartin Braun2021-10-191-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a very mechanical task that could almost have been done with sed. Boost versions of mutexes and locks were removed, and replaced with std:: versions. The replacement tables are as follows: == Mutexes == - boost::mutex -> std::mutex - boost::recursive_mutex -> std::recursive_mutex Mutexes behave identically between Boost and std:: and have the same API. == Locks == C++11 has only two types of lock that we use/need in UHD: - std::lock_guard: Identical to boost::lock_guard - std::unique_lock: Identical to boost::unique_lock Boost also has boost::mutex::scoped_lock, which is a typedef for boost::unique_lock<>. However, we often have used scoped_lock where we meant to use lock_guard<>. The name is a bit misleading, "scoped lock" sounding a bit like an RAII mechanism. Therefore, some previous boost::mutex::scoped_lock are now std::lock_guard<>. std::unique_lock is required when doing more than RAII locking (i.e., unlocking, relocking, usage with condition variables, etc.). == Condition Variables == Condition variables were out of the scope of this lock/mutex change, but in UHD, we inconsistently use boost::condition vs. boost::condition_variable. The former is a templated version of the latter, and thus works fine with std::mutex'es. Therefore, some boost::condition_variable where changed to boost::condition. All locks and mutexes use `#include <mutex>`. The corresponding Boost includes were removed. In some cases, this exposed issues with implicit Boost includes elsewhere. The missing explicit includes were added.
* host: Update code base using clang-tidyMartin Braun2021-03-041-5/+5
| | | | | | | | | The checks from the new clang-tidy file are applied to the source tree using: $ find . -name "*.cpp" | sort -u | xargs \ --max-procs 8 --max-args 1 clang-tidy --format-style=file \ --fix -p /path/to/compile_commands.json
* uhd: Apply clang-format against all .cpp and .hpp files in host/Martin Braun2020-03-031-290/+284
| | | | | Note: template_lvbitx.{cpp,hpp} need to be excluded from the list of files that clang-format gets applied against.
* uhd: Remove all usages of boost::tuple and friendsMartin Braun2019-11-261-8/+8
| | | | | | | | | | | | | This replaces all of the following with standard C++ features: - boost::tuple - boost::make_tuple - boost::tuple::get - #include <boost/tuple/tuple.hpp> All usages were replaced with search-and-replace scripts (the usages of get could be automatically replaced with a vim macro, the rest was straightforward search-and-replace).
* uhd: Replace boost::regex with std::regexMartin Braun2019-11-261-5/+5
| | | | | | | | boost::regex was a requirement until the minimum version of gcc was increased. Since it is at version 5.3 now, using Boost.Regex is no longer necessary. This change is a pure search-and-replace; Boost and std versions of regex are compatible and use the same syntax.
* uhd: Remove usage of time_t (except when required)Martin Braun2018-08-201-1/+1
| | | | | | | | | | The C/C++ standards don't define what time_t is, only that it is arithmetic (and real for C11, and integral for C++). It should not be used in portable software and is only used as the return value for some libc calls. A common definition for time_t is int64_t, so we'll switch to that permanently in our own APIs. System APIs will of course stick with time_t.
* lib: Purge use of boost::assign, except for uhd::dictMartin Braun2018-05-021-10/+10
| | | | | | | Replaced with initialization lists. Note: uhd::dict does not work with initializer lists without making changes to said data structure. This commit has no functional changes, so keeping the boost::assigns for uhd::dict.
* lib: Purge all references to boost::this_thread::sleep()Martin Braun2018-04-301-1/+0
| | | | Replace with std::this_thread::sleep_for().
* gps_ctrl: Replace boost::this_thread::sleep()Martin Braun2018-04-171-26/+32
| | | | Use std::this_thread::sleep_for() instead.
* uhd: Update license headersMartin Braun2018-02-191-1/+2
| | | | | | | All copyright is now attributed to "Ettus Research, a National Instruments company". SPDX headers were also updated to latest version 3.0.
* Move all license headers to SPDX format.Martin Braun2017-12-221-12/+1
|
* gps_ctrl: dont use gmtimeAndrej Rode2017-04-121-14/+10
|
* gps_ctrl: yeah windows, my friendAndrej Rode2017-04-121-1/+4
|
* usrp: remove gregorian and lexical casting in gps_ctrlAndrej Rode2017-04-121-12/+14
|
* utils: introduce new logging API and remove msg APIAndrej Rode2017-02-201-10/+10
|
* uhd: replace BOOST_FOREACH with C++11 range-based for loopAndrej Rode2017-02-101-2/+1
| | | | | Note: This is the first commit that uses for-range, and range-based for-loops are now usable for UHD development.
* GPSDO: Improved detectionmichael-west2017-02-011-7/+17
| | | | | - Added re-sending of *IDN? command if no reply or unexpected string (i.e. during GPSDO firmware initialization) - Shortened detection timeout to return sooner if no GPSDO present (faster initialization)
* GPS: Improvements to query_gpsdo_sensormichael-west2017-01-301-5/+5
| | | | | | | - Reordered operations to make sure setting clock and time sources is first - Reduced delay waiting for ref lock - Added wait for GPSDO warm up - Made warning messages in gps_ctrl function into log messages to prevent unnecessary output
* Remove all boost:: namespace prefix for uint32_t, int32_t etc. (fixed-width ↵Martin Braun2016-11-081-3/+3
| | | | | | | | types) - Also removes all references to boost/cstdint.hpp and replaces it with stdint.h (The 'correct' replacement would be <cstdint>, but not all of our compilers support that).
* gps: Removed redundant error message in case no GPS presentMartin Braun2016-09-271-2/+1
| | | | | Signed-off-by: Martin Braun <martin.braun@ettus.com> Reviewed-By: Moritz Fischer <moritz.fischer@ettus.com>
* Fix TXCO GPSDO recognitionmichael-west2016-09-081-1/+3
|
* gps_ctrl: Multiple fixesmichael-west2016-09-021-115/+125
| | | | | | | - Check for updates if cached data is older than one millisecond - Removed timeouts when checking for updated data from UART - Subscribe to SERVO:TRACe message every second and process like NMEA strings - Refactored code for simplification
* Add thread safety to gps_ctrl cached sensorsmichael-west2016-09-021-0/+3
|
* gps_ctrl: code cleanupNicholas Corgan2015-08-141-11/+11
|
* Added missing pure virtual destructors to base classesNicholas Corgan2014-09-011-0/+4
|
* Updated copyright year.michael-west2014-07-171-1/+1
|
* - Changed variables from uint8_t to uint32_t so parsing of hex strings would ↵michael-west2014-07-171-3/+3
| | | | work properly.
* Addressing comments from review.michael-west2014-07-171-8/+12
| | | | | | - Corrected types of some variables to be boost types. - Removed debugging code accidentally left in. - Changed some compiled out error messages to log messages.
* Fix for BUG #469: Bad/Empty GPS NMEA strings returned when the queries are ↵michael-west2014-07-171-5/+34
| | | | | | | | | made in a random wait iterative fashion Fix for BUG #460: X300: GPGGA sensor most often empty, while RMC is usually OK - Added checksum verification of NMEA strings - Improved handling of short or malformed strings - Fixed GPSDO data synchronization between X300 firmware and host
* BUG #460: X300: GPGGA sensor most often empty, while RMC is usually OKmichael-west2014-05-061-1/+8
| | | | | | - It was found that strings containing only a newline character were being returned by N-series and X-series devices. - Added better handling of strings received under 6 bytes. - Added erasing of end of line characters.
* gps: Removed superfluous include.Moritz Fischer2014-03-231-1/+0
| | | | | | | * This file doesn't need boost::container::vector. Tested-by: Marcus D. Leech <mleech@ripnet.com> Signed-off-by: Moritz Fischer <moritz@ettus.com>
* Pushing the bulk of UHD-3.7.0 code.Ben Hilburn2014-02-141-22/+25
|
* Merging USRP X300 and X310 support!!Ben Hilburn2014-02-041-17/+20
|
* cleaning up gpsdo docsBen Hilburn2013-12-191-21/+19
|
* Squashed merge of Coverity fixes.Ben Hilburn2013-11-271-2/+0
|
* gps: only enable SERV:TRAC when requestedJosh Blum2013-04-091-2/+11
|
* gps: flush uart buffer before waiting for timeJosh Blum2013-04-091-1/+2
| | | | | | This addresses a bug only on the master branch. Also turn off the servo sensor, its too long a delay. We will need to conditionally enable this in a later commit.
* gps_ctrl: Lower the number of retries to two when waiting for the time.Moritz Fischer2012-11-131-1/+1
|
* gps_ctrl.cpp: Partially rewritten, to use caching instead of throwingMoritz Fischer2012-10-191-25/+109
| | | | | | | | | | away the 'wrong' messages. The old way to do this was when a sensor was requested, to wait for the corresponding NMEA message to pass by, throwing away all the 'wrong' ones in the meantime. However, this leads to problems if the user requests combinations that are based on the same NMEA string. To avoid this we now try to cache the strings for a 'freshness' period.
* Removed GPGSA from GPS driver since Firefly doesn't actually support it.Nick Foster2012-05-161-5/+1
|
* uhd: removed wax and props utilsJosh Blum2011-11-071-2/+1
|
* gps: use absolute timeout for communicationJosh Blum2011-09-281-6/+6
|
* usrp2: uart/udp work in host and fw, workingJosh Blum2011-09-281-10/+22
|
* gps_ctrl: make GPSDO parsing more robust, add retriesNick Foster2011-08-111-32/+51
|
* GPS ctrl fixes for uncooperative Firefly devices (Bastien Auneau)Nick Foster2011-08-051-0/+7
|
* Refactor GPS code to duplicate way less stuff, make members privateNick Foster2011-06-171-120/+101
|
* USRP2/N210: set VITA time even if GPS not locked. harmless to do so.Nick Foster2011-06-171-1/+1
|
* UHD: implemented gps_locked sensor. usrp2 mboard doesn't init VITA time if ↵Nick Foster2011-06-171-0/+22
| | | | time not valid.
* UHD: GPS work.Nick Foster2011-06-171-48/+77
| | | | | | | * Rewrote NMEA acquisition to be more general * Added GPS sensors instead of member fns for data access * GPS sensors added to mboard sensors to keep ABI compat * VITA time initialized to GPS time on init