Commit Graph

53 Commits

Author SHA1 Message Date
Matt Goodrich d722186e8e
Merge pull request #137 from cedricgrothues/patch-1
Fix include guard in `NMEA_data.h`
2022-05-20 08:50:37 -04:00
Josh Bailey 48ca1177f4 c++ min() wants args of the same type (https://en.cppreference.com/w/cpp/algorithm/min).
This allows us to compile with -fno-permissive (gcc default).
2022-03-17 10:39:53 +13:00
Cedric Grothues d8686043fb
Fix `NMEA_data.h` include guard 2022-03-07 20:12:08 +01:00
Bruno Bousquet 43b28b978e
Fix formatting 2022-02-01 16:32:55 -05:00
Bruno Bousquet 290b1ed835 keep USE_SW_SERIAL define 2022-01-31 23:23:06 -05:00
Bruno Bousquet ec1882be89 add define to disable sw serial 2022-01-31 23:08:42 -05:00
Ron Barry 1666dae26b
Fix issue with millisecond parsing.
By calling atof() on p, we're converting the entire time string  (101520.123 for 10:15:20am and 123 milliseconds) to a float, then multiplying by 1000 to get ms. This results in a value that overflows and exhibits all sorts of strange behavior as seconds and minutes turn over. It's clearly not what was intended. From the if statement wrapping the conversion, it is clear that the author intended to make the atof() conversion on the dec pointer, instead. Making this change actually does fix the parsing so that Adafruit_GPS' milliseconds property correctly matches the value in the NMEA sentence.

You guys do great work. Thanks for everything!
2020-10-18 01:41:23 -07:00
Matt Goodrich e5ad8934d8 Bugfix for parseCoord 2020-06-04 14:43:11 -04:00
Matt Goodrich c65c00ae15
Merge pull request #117 from optorres/fix-warnings-2
Fix boolean deprecation and -Wdouble-promotion warnings
2020-02-25 14:30:22 -05:00
Owen Torres a0cf6d860a Fix formatting 2020-02-23 18:53:32 -05:00
Owen Torres e3caa7d491 Fix boolean deprecation and -Wdouble-promotion warnings 2020-02-23 18:39:46 -05:00
Edgar Bonet 76526b0b15 Document time limits of secondsSince*()
The values returned by Adafruit_GPS::secondsSince{Fix,Time,Date}()
wrap around if larger than 2^32 ms.
2020-02-21 21:04:56 +01:00
Edgar Bonet 939534d580 Correct handling of millis() rollover
millis() returns an unsigned long integer, and C++ guarantees that
arithmetics on this type work modulo (ULONG_MAX+1). This behavior
ensures that computing a delay as

    millis() - previousMillis

yields the correct result across millis() rollover events, as long as
the time actually elapsed is less than about 49.7 days.
2020-02-20 22:03:34 +01:00
Rick Sellens fdda5b6e1e clang 2020-02-07 20:20:30 -05:00
Rick Sellens 59c1a4acbd casts to make unambiguous on UNO 2020-02-07 20:04:33 -05:00
Rick Sellens 8c550d278e fix to parsing bug on RMB sentence 2020-02-07 14:54:26 -05:00
Rick Sellens a047465a73 More rigor in parseTime()
previous version ran ok with M0, but generated exceptions in ESP32 when decimals not found.
2020-02-07 14:26:39 -05:00
Rick Sellens 07fd81fd91 explicit cast eliminates ambiguity
ESP32 wire lib includes requestFrom(int,int,int) and requestFrom(uint16_t,uint8_t,bool) and throws a warning trying to resolve.
2020-01-31 07:30:30 -05:00
Rick Sellens 50abddc691 comments to solve: https://github.com/adafruit/Adafruit_GPS/issues/76
Corrections to original comments that were off by a factor of 10.
2020-01-30 20:14:52 -05:00
Rick Sellens d0f7f47dc9 Warning about scaling 2020-01-30 17:09:35 -05:00
Rick Sellens d14e220c1b Add noCRLF option to build()
new optional argument will leave the carriage return and linefeed off the end of an NMEA sentence.
2020-01-30 14:29:17 -05:00
Rick Sellens deb312b293 Clear thisSentence and thisSource at start of each check
that way previous sentence identifiers won't bleed through on failure.
2020-01-29 19:52:13 -05:00
Rick Sellens 84eaad66e4 Fail Check if sentence not recognized
Previous check would pass for unknown but properly formatted sentence.
2020-01-29 19:44:05 -05:00
Rick Sellens ebb09d0480 clang 2020-01-29 13:23:02 -05:00
Rick Sellens 1afe1df764 clang 2020-01-29 13:10:43 -05:00
Rick Sellens 8ae6a7b75a clang 2020-01-29 12:57:20 -05:00
Rick Sellens 7d889e3a9d Reorder and document
Align the order in the .h with the order in the various .cpp
Note that ! is also a valid starting character for an NMEA sentence.
2020-01-29 12:03:25 -05:00
Rick Sellens 1d58e4e66e run data_init() under common_init() 2020-01-29 10:35:00 -05:00
Rick Sellens 0fca64d082 Comment out old Lat Lon parsing
new parse() uses generalized parseCoord()
2020-01-29 10:27:05 -05:00
Rick Sellens 3876f29fc1 New parse() with more sentences
move other parsing functions in NMEA_parse.cpp
fix parseTime to be insensitive to number of decimal places and return bool.
add isEmpty() checks where needed.
reorder some declarations.
2020-01-29 10:18:41 -05:00
Rick Sellens 4b6e181770 New version of build() with more sentences
move addChecksum() to NMEA_build.cpp
2020-01-29 10:03:59 -05:00
Rick Sellens 0b0996bbb0 Add NMEA_EXTRAS for command line compile control 2020-01-29 09:59:47 -05:00
Rick Sellens 2a5b5bdd1c Update source and sentence lists 2020-01-29 09:57:49 -05:00
Rick Sellens 6f41d311cd Add no comms constructor, destructor, data values 2020-01-29 09:56:21 -05:00
Owen Torres 748707b6ee Fix -Wdouble-promotion warnings
We want to avoid using doubles where unnessesary since many embedded
targets have only a single precision FPU or no FPU at all.

Passing doubles is unavoidable with the printf family of functions,
so use an explicit cast to silence the warning.
2020-01-27 19:01:45 +00:00
Owen Torres 61fe38d503 Remove unused variables 2020-01-27 18:54:28 +00:00
Owen Torres 17bb6d1ed2 Replace boolean with standard bool
This causes deprecation warnings when compiling with the STM32duino
Arduino core.
2020-01-27 18:54:28 +00:00
Rick Sellens 7025f17c82 clang 2020-01-21 14:20:40 -05:00
Rick Sellens 35069cb40c trigger a new check run 2020-01-21 13:49:48 -05:00
Rick Sellens 15788bd2f0 let the float type be set from the compile command line 2020-01-21 12:34:35 -05:00
Rick Sellens af963a4846 clang 2020-01-19 20:25:14 -05:00
Rick Sellens 716315af97 single is not float
that's what happens when you rush
2020-01-19 20:16:24 -05:00
Rick Sellens edc7146730 Update NMEA_data.h 2020-01-19 19:48:00 -05:00
Rick Sellens 7d806715fc this one too 2020-01-19 09:52:28 -05:00
Rick Sellens 3a823f80e0 this comment has a trailing space 2020-01-19 09:37:51 -05:00
Rick Sellens 8c3bdfd0ca clang 2020-01-19 09:15:18 -05:00
Rick Sellens c006654469 clang hates trailing white space 2020-01-19 08:56:06 -05:00
Rick Sellens 0051f37600 change from float to nmea_float_t
Not sure whether to make it float or double by default

/*************************************************************************
  doubles and floats are identical on AVR processors like the UNO where space
  is tight. doubles avoid the roundoff errors that led to the fixed point mods
  in https://github.com/adafruit/Adafruit-GPS-Library/pull/13, provided the
  processor supports actual doubles like the SAMD series with more storage. The
  total penalty for going all double is under a few hundred bytes / instance or
  0 bytes / instance on an UNO. This typedef allows a switch to lower precision
  to save some storage if needed. A float carries 23 bits of fractional
  resolution, giving a resolution of at least 9 significant digits, thus 6
  significant digits in the decimal place of an angular value like latitude, and
  thus a resolution on earth of at least 110 mm. That's closer than GPS will
  hit, and closer than needed for navigation, so floats can be used to save a
  little storage.
 **************************************************************************/
typedef double
    nmea_float_t; ///< the type of variables to use for floating point
2020-01-19 08:14:02 -05:00
Rick Sellens 8739f08ca6 move resetSentTime out of extensions
potentially useful elsewhere, and small
2020-01-19 08:06:26 -05:00
Rick Sellens 4bfbd03b90 move PMTK defines to their own .h 2020-01-19 07:54:34 -05:00