Git Product home page Git Product logo

galmon's People

Contributors

acyberexpert avatar ahupowerdns avatar akhepcat avatar alimirjamali avatar amontefusco avatar berthubert avatar chtitux avatar conorpwr avatar csylvain avatar ctassisf avatar gizmoguy avatar iivvoo avatar ishchatul avatar jeffpc avatar josephfoulds avatar kiwibrew avatar mahtin avatar myself248 avatar nousian avatar omoerbeek avatar philcrump avatar ptudor avatar sjcjonker avatar ssb83 avatar wojas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

galmon's Issues

ubxtool/rtcmtool/septool transmitter deals badly with timeouts

Despite claims in the code, the NavmonMessage transmitter deals badly with timeouts, except during connect, where we handle them well. The timeout is not hooked up to the ReadBuffer class, and is not actually used by writen() in SocketCommunicator.

`_` is hard to read in ΔHz column

I'm assuming that _ in the ΔHz means "info not available". Unfortunately, it is a bit hard to read. It'd probably be easier to read if instead of _ it was a ? or X or even NA.

ubxtool sometimes needs --wait to start up, sometimes crashes if it's specified

After reconnecting my receiver, I had this repeatedly crashing:
pi@rpi4:~/galmon $ systemctl status galmon ● galmon.service - #41 Galmon GNSS Monitor Loaded: loaded (/etc/systemd/system/galmon.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: signal) since Sun 2019-12-29 22:04:08 GMT; 4s ago Process: 3926 ExecStart=/home/pi/galmon/ubxtool -c -g -r -e --wait --port /dev/ttyACM0 --station 41 --destination 82.94.213.34 --owner NJ8Z -- Main PID: 3926 (code=killed, signal=ABRT)

So I stopped the service and ran it once on the commandline with ./ubxtool -c -g -r -e --port /dev/ttyACM0 --stdout

and it came up just fine. I ctrl-c'd it after a moment. After that I could reenable the service which has --wait on its commandline, and it too came up just fine.

logfile creation in ubxtool should be optional via a command line

There's no need for a logfile to be created by ubxtool for remote stations that are just feeding data over the net. The logfile should not be created by default and only enabled via a command line flag for specific uses.

BTW: While the file is benign, I found this was an issue when writing the systemd scripts as I wanted to run ubxtool as a daemon in a read-only folder as a dedicated user. Until this is fixed; I can't do that.

navparse: does not link

building with head 0f7cb5143d81303aa23fee107046e90b0829242b and I get this result:

pi@adsb:~/galmon $ make
g++ -std=gnu++17 navparse.o ext/fmt-6.1.2/src/format.o ext/powerblog/h2o-pp.o ext/powerblog/ext/simplesocket/swrappers.o ext/powerblog/ext/simplesocket/sclasses.o ext/powerblog/ext/simplesocket/comboaddress.o minicurl.o ubx.o bits.o navmon.pb.o gps.o ephemeris.o beidou.o glonass.o ext/sgp4/libsgp4/Observer.o ext/sgp4/libsgp4/Vector.o ext/sgp4/libsgp4/DateTime.o ext/sgp4/libsgp4/Tle.o ext/sgp4/libsgp4/SatelliteException.o ext/sgp4/libsgp4/TimeSpan.o ext/sgp4/libsgp4/DecayedException.o ext/sgp4/libsgp4/TleException.o ext/sgp4/libsgp4/Globals.o ext/sgp4/libsgp4/CoordTopocentric.o ext/sgp4/libsgp4/SolarPosition.o ext/sgp4/libsgp4/Util.o ext/sgp4/libsgp4/SGP4.o ext/sgp4/libsgp4/CoordGeodetic.o ext/sgp4/libsgp4/Eci.o ext/sgp4/libsgp4/OrbitalElements.o tle.o navmon.o coverage.o osen.o trkmeas.o influxpush.o githash.o -o navparse -pthread -L/usr/local/lib -L/usr/local/opt/openssl/lib/  -lh2o-evloop -lssl -lcrypto -lz  -lcurl -lprotobuf  
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `fmt::v5::basic_printf_context<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char, fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > > >::get_arg(fmt::v5::internal::null_terminating_iterator<char>, unsigned int) [clone .isra.296]':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/core.h:863: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/core.h:863: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/core.h:863: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `char* fmt::v5::internal::format_decimal<unsigned long long, char, fmt::v5::internal::no_thousands_sep>(char*, unsigned long long, unsigned int, fmt::v5::internal::no_thousands_sep) [clone .isra.356]':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1056: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `fmt::v5::basic_printf_context<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char, fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > > >::parse_header(fmt::v5::internal::null_terminating_iterator<char>&, fmt::v5::basic_format_specs<char>&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1590: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1590: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_double<double>(double, fmt::v5::basic_format_specs<char> const&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:2954: undefined reference to `int fmt::v5::internal::char_traits<char>::format_float<double>(char*, unsigned int, char const*, int, double)'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_double<long double>(long double, fmt::v5::basic_format_specs<char> const&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:2954: undefined reference to `int fmt::v5::internal::char_traits<char>::format_float<long double>(char*, unsigned int, char const*, int, long double)'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_padded<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<int, fmt::v5::basic_format_specs<char> >::dec_writer> >(unsigned int, fmt::v5::align_spec const&, fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<int, fmt::v5::basic_format_specs<char> >::dec_writer>&&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1058: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_padded<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<unsigned int, fmt::v5::basic_format_specs<char> >::dec_writer> >(unsigned int, fmt::v5::align_spec const&, fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<unsigned int, fmt::v5::basic_format_specs<char> >::dec_writer>&&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1058: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_padded<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<long long, fmt::v5::basic_format_specs<char> >::dec_writer> >(unsigned int, fmt::v5::align_spec const&, fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<long long, fmt::v5::basic_format_specs<char> >::dec_writer>&&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1058: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_padded<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<unsigned long long, fmt::v5::basic_format_specs<char> >::dec_writer> >(unsigned int, fmt::v5::align_spec const&, fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<unsigned long long, fmt::v5::basic_format_specs<char> >::dec_writer>&&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1058: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_padded<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<char, fmt::v5::basic_format_specs<char> >::dec_writer> >(unsigned int, fmt::v5::align_spec const&, fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::padded_int_writer<fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::int_writer<char, fmt::v5::basic_format_specs<char> >::dec_writer>&&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1058: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o:/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1038: more undefined references to `fmt::v5::internal::basic_data<void>::DIGITS' follow
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_int<unsigned int, fmt::v5::basic_format_specs<char> >(unsigned int, fmt::v5::basic_format_specs<char> const&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:2614: undefined reference to `char fmt::v5::internal::thousands_sep<char>(fmt::v5::locale_provider*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1220: undefined reference to `fmt::v5::internal::basic_data<void>::ZERO_OR_POWERS_OF_10_32'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `std::enable_if<std::is_integral<int>::value, std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> > >::type fmt::v5::internal::arg_formatter_base<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::operator()<int>(int)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:2614: undefined reference to `char fmt::v5::internal::thousands_sep<char>(fmt::v5::locale_provider*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1058: undefined reference to `fmt::v5::internal::basic_data<void>::ZERO_OR_POWERS_OF_10_32'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1058: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `fmt::v5::internal::result_of<fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > > (int)>::type fmt::v5::visit<fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >, fmt::v5::basic_printf_context<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char, fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > > > >(fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >&&, fmt::v5::basic_format_arg<fmt::v5::basic_printf_context<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char, fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > > > > const&)':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1332: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1320: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1326: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:2614: undefined reference to `char fmt::v5::internal::thousands_sep<char>(fmt::v5::locale_provider*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:2614: undefined reference to `char fmt::v5::internal::thousands_sep<char>(fmt::v5::locale_provider*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1548: undefined reference to `fmt::v5::internal::basic_data<void>::ZERO_OR_POWERS_OF_10_32'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1548: undefined reference to `fmt::v5::internal::basic_data<void>::DIGITS'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1548: undefined reference to `fmt::v5::internal::basic_data<void>::ZERO_OR_POWERS_OF_10_64'
/usr/bin/ld: ext/powerblog/ext/simplesocket/swrappers.o: in function `fmt::v5::basic_printf_context<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char, fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > > >::format()':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/format.h:1590: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: ext/powerblog/ext/simplesocket/sclasses.o: in function `fmt::v5::basic_printf_context<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char, fmt::v5::printf_arg_formatter<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > > >::get_arg(fmt::v5::internal::null_terminating_iterator<char>, unsigned int) [clone .isra.236]':
/home/pi/galmon/ext/fmt-5.2.1/include/fmt/core.h:863: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/core.h:863: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
/usr/bin/ld: /home/pi/galmon/ext/fmt-5.2.1/include/fmt/core.h:863: undefined reference to `fmt::v5::internal::error_handler::on_error(char const*)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:40: navparse] Error 1

Move tty code (and some I/O code) to separate file vs be in ubxtool.cc

I've submitted #26 as a set of edits that help move the ubxtool code from one massive block of code and present it with anything that touches devices (the tty device) into a separate file. The goal is to have a place to do O/S specific I/O code should this code be ported to a different platform.

Readability is at the moment the number one goal. There's no additional functionality so far. Stay tuned.

PS: Yes, I pushed the edits before creating the issue. Oops.

Automatic upload of u-center configuration files during startup?

Due to the fact that my module is one of the cheap ones, it loses it's configuration each reboot, I'm currently using a bash script to parse the u-center configuration file and upload everything (including baudrate change) to the m8n module.

I am wondering, is there a way to do this nicely, with galmon and its set of tools?

observer map could show 'amount of coverage'

The map showing 'observer ranges' is now populated enough that it's difficult to tell how many observers are looking at which parts of the sky.

So I suggest it'd be nice to have counts for how many observers can see which sky segments, so we could tell if the little bit near the southern tip of Chile is observed by zero or six observers. Perhaps also with a 'ring' plotted on the ground to see where exactly receivers could be hosted to cover low-count patches.

This may help to encourage people to host receivers for their area, if they knew they had a high chance of helping.

Thanks

/run/ubxtool is deleted on every startup

On Raspbian (maybe all Debian) it's expected that subdirectories of /run (/var/run) are deleted on reboot by systemd. So our current instructions for establishing a systemd service - which tell us to mkdir /run/ubxtool result in a service definition that doesn't survive reboot. If we use WorkingDirectory=/run/ it survives reboot. @mahtin what do you think? Ok to change WorkingDirectory to /run/ or should we establish that directory in a supported way?

hover-over on /geo/ should handle closely spaced stations

For example, stations 31 and 32 are at the same location but the new /geo/ hover-over doesn't realize that and therefore one of the stations (32) covers over the other (31) making it impossible to hover over station 31.

Possible solution: combine closely spaced stations into a single "hover-over region", and list multiple lines in the tool-tip identifying which sat is seen by with station in the "region".

Update for README.md

ubxtool does not work "out of the box" with the uBlox MAX-M8Q on the Uputronics Raspberry Pi+ GPS Expansion shield. the software itself does build on Raspbian Buster, so there is hope. toward that end, i propose for now these changes to the README.md file (no need yet to clone the repo just for these changes):

--- a/README.md                                                                                                        
+++ b/README.md                                                                                                        
@@ -5,7 +5,8 @@ galileo/GPS/GLONASS/BeiDou open source monitoring. GPL3 licensed.                                       Live website: https://galmon.eu/

 Theoretically multi-vendor, although currently only the U-blox 8 chipset is
-supported. Navilock NL-8012U receiver works really well, as does the U-blox evaluation kit for the 8MT.               
+supported. Navilock NL-8012U receiver works really well, as does the U-blox evaluation kit for the 8MT,               
+as well as the Uputronics Raspberry Pi+ GPS Expansion board in a future release.                                      
 Highlights:
  * Processes raw frames/strings/words from GPS, GLONASS, BeiDou and Galileo
@@ -31,13 +32,13 @@ Goals:                                                                                                 order calculations

 Works on Linux (including Raspbian on Pi Zero W), OSX and OpenBSD.
-                                                                                                                      
+Builds on Raspbian Buster [g++-8] (but not Raspbian Stretch [g++-6]).                                                 

 Build locally
 -------------

-To get started, make sure you have a C++17 compiler, git, protobuf-compiler.
+To get started, make sure you have a C++17 compiler (g++ version 8 or better), git, protobuf-compiler, and ncurses-dev.                                                                                                                       
Then run 'make ubxtool navdump' to build the receiver-only tools.

 To also run the webserver locally, intall libh2o-dev and run 'make'.
@@ -45,7 +46,7 @@ To also run the webserver locally, intall libh2o-dev and run 'make'.                                  To build everything, try:

-apt-get install protobuf-compiler libh2o-dev libcurl4-openssl-dev libssl-dev libprotobuf-dev libh2o-evloop-dev libwslay-dev                                                                                                                  
+apt-get install protobuf-compiler libh2o-dev libcurl4-openssl-dev libssl-dev libprotobuf-dev libh2o-evloop-dev libwslay-dev libncurses-dev                                                                                                    git clone https://github.com/ahupowerdns/galmon.git --recursive
cd galmon                                                                                                              
make

navparse sometimes emit implausible dates on disruptions

Fri, 04 Oct 2019 21:19:48 +0000 wn 2073 GPS 20@0 change in URA [200 cm] -> [400 cm] 2, lastseen 0 hours
Fri, 04 Oct 2019 21:19:48 +0000 wn 2073 GPS 20@0 change in health [0] -> [63], lastseen 0 hours
Fri, 27 Sep 2019 21:19:48 +0000 wn 2072 GPS 20@0 change in health [63] -> [0], lastseen 0 hours
Fri, 27 Sep 2019 21:29:10 +0000 BeiDou C23@0 health changed from  0 to 1, lastseen 0.0711111
Fri, 27 Sep 2019 21:33:56 +0000 BeiDou C23@0 health changed from  1 to 0, lastseen -0.00166667
Mon, 04 Mar 2013 10:18:53 +0000 BeiDou C19@0 health changed from  0 to 1, lastseen 29.2881
Fri, 27 Sep 2019 22:04:26 +0000 BeiDou C19@0 health changed from  1 to 0, lastseen -29.2881
Sat, 28 Sep 2019 03:59:48 +0000 wn 2072 GPS 28@0 change in URA [282 cm] -> [400 cm] 2, lastseen -0.00166667 hours
Tue, 05 Mar 2013 23:31:29 +0000 BeiDou C29@0 health changed from  0 to 1, lastseen 0.0930556
Sat, 28 Sep 2019 06:05:26 +0000 BeiDou C29@0 health changed from  1 to 0, lastseen -0.0947222

Feature Request - enable PPS

Next to Issue #100 it would be good to then also add PPS support, this can be done with UBX_CFG_TP5, there are some settings to put in, checking both gpsd ubxtool and gpsctl the following seem to be OK, but might need tweaking:

  • antenna cable delay to 56 ns
  • RF group delay to 20 ns
  • unlock period 1000000 microseconds
  • unlock pulse length 0
  • locked period 1000000 microseconds
  • locked pulse length 500000 microseconds
  • user delay 0

"dmesg | grep pps" should show a pps source is detected, and after installing pps-tools, if PPS is woorking it should show output like:
$ sudo ppstest /dev/pps0 # press Ctrl-C to cancel.. trying PPS source "/dev/pps0" found PPS source "/dev/pps0" ok, found 1 source(s), now start fetching data... source 0 - assert 1351501153.999956346, sequence: 47481 - clear 0.000000000, sequence: 0 source 0 - assert 1351501154.999954601, sequence: 47482 - clear 0.000000000, sequence: 0 source 0 - assert 1351501155.999951856, sequence: 47483 - clear 0.000000000, sequence: 0 ^C

Together with the SHM driver this will allow ubxtool to be used together with Chrony/NTPd as time source.

The above is PPS info is taken from: http://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html

Unable to launch local web page (:10000)

Raspberry Pi 3+. Buster. Ublox8.

`pi@raspberrypi:~/galmon $ ./ubxtool --wait --port /dev/ttyACM0 --station 1 --stdout | ./ubxparse 10000 html null

-bash: ./ubxparse: No such file or directory
Sending version query
swVersion: ROM CORE 3.01 (107888)
hwVersion: 00080000
Extended info: FWVER=SPG 3.01
Extended info: PROTVER=18.00
Extended info: GPS;GLO;GAL;BDS
Extended info: SBAS;IMES;QZSS
Sending GNSS query
GNSS status, got 7 rows:
GNSSID 0 enabled 1 minTrk 8 maxTrk 16 1 0 1 1
GNSSID 1 enabled 1 minTrk 1 maxTrk 3 1 0 1 1
GNSSID 2 enabled 0 minTrk 4 maxTrk 8 0 0 1 1
GNSSID 3 enabled 0 minTrk 8 maxTrk 16 0 0 1 1
GNSSID 4 enabled 0 minTrk 0 maxTrk 8 0 0 1 3
GNSSID 5 enabled 1 minTrk 0 maxTrk 3 1 0 1 5
GNSSID 6 enabled 1 minTrk 8 maxTrk 14 1 0 1 1
Got an ack for 6 62 while waiting for 6 62
Got ACK for our poll of GNSS settings
Sending GNSS setting, GPS: 0, Galileo: 0, BeiDou: 0, GLONASS: 0, SBAS: 0
Got an nack for 6 62 while waiting for 6 62
Got nack on GNSS setting
pi@raspberrypi:~/galmon $`

At this point, I visit my pi IP address:10000 and can not connect.

Any assistance would be gratefully received.

Allow feed to remote influxdb

Currently the influxdb address is hardcoded to 127.0.0.1 in the code.
Request that the address of a remote influxdb instance can be entered on the command line.
I did recompile my copy with a remote address and it works correctly, but this approach should only be regarded as a work around.

add satellite tails to /geo

It could possibly look very cool if for each sat on the map, there were 3 or 4 "previous positions" drawn as well. This is a common visualization on ATC radar showing the previous radar returns to at a glance ascertain the direction of the craft.

Estimating how fast GNSS sats move based on wikipedia MEO info, drawing the previous positions at 5, 10, and 15 mins prior to "current" may work well. The older the point, the less saturated it should be.

Compiling with clang 10 on OpenBSD produces a few warnings

rtcm.cc:9:10: warning: destination for this 'memset' call is a pointer to dynamic class 'GalileoMessage'; vtable
      pointer will be overwritten [-Wdynamic-class-memaccess]
  memset(&d_gm, 0, sizeof(d_gm));
  ~~~~~~ ^
rtcm.cc:9:10: note: explicitly cast the pointer to silence this warning
  memset(&d_gm, 0, sizeof(d_gm));
         ^
         (void*)

struct InfluxPusher
^
./navparse.hh:26:1: note: did you mean struct here?
class InfluxPusher;
^~~~~
struct

In file included from ubxtool.cc:36:
./nmmsender.hh:40:31: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
        d_thread.emplace_back(std::move(std::make_unique<std::thread>(&NMMSender::sendTCPThread, this, d.get())));
                              ^
./nmmsender.hh:40:31: note: remove std::move call here
        d_thread.emplace_back(std::move(std::make_unique<std::thread>(&NMMSender::sendTCPThread, this, d.get())));

./rinex.hh:37:10: warning: private field 'd_time' is not used [-Wunused-private-field]
  time_t d_time{0};

rinreport.cc:83:10: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
  return std::move(stat);
         ^
rinreport.cc:83:10: note: remove std::move call here
  return std::move(stat);
         ^~~~~~~~~~    ~

Sorry, no time to look at this now...

Two bugs in ubxtool.sh

I found two small bugs in ubxtool.sh, the following patch fix them:

-DEV="/run/ubxtool"
+DIR="/run/ubxtool"
 
-STATION="`/usr/local/ubxtool/station`"
+STATION="`cat /usr/local/ubxtool/station`"

Feature: add lat/long lookup to automate volunteer info

An example script, using OpenCageGeocode
takes a csv inputfile of lat,long
outputs a csv of lat,long,city,state,country_code

https://github.com/akhepcat/Miscellaneous/blob/master/LatLongParse.py

This could be run once a day (at most, probably) to populate a cache for displaying the general location of users' receivers.

requires a free API key, which nets 2000+ lookups per day, which is plenty for seeding/updating a local cache on a server.

Galileo has two parsers

There is a perfectly fine Galileo parser in galileo.cc/.hh, but navparse.cc contains another galileo parser for hysterical raisins. These should be unified.

Some fields in '/svs.json' have excessive resolution, increasing server bandwidth usage.

This issue is a work-in-progress, as although I've noted the excessive resolution I'm not yet sure of what resolution is needed if these are used in client-side calculations.

This list is to be ticked off when the relevant fixes are merged.

  • alma-dist - This is decimal kilometres, displayed to one decimal place on the homepage.
  • best-tle-dist - [Usage TBC]
  • latest-disco - This is decimal metres, displayed in centimetres to one decimal place on the homepage.
  • time-disco - This is decimal nanoseconds, displayed to one decimal place on the homepage.
  • perrecv -> delta_hz - [Usage TBC]
  • perrecv -> delta_hz_corr - [Usage TBC]

compliation of navparse.cc blows up - no header file "<optional>"

using
$ g++ --version
g++ (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

galmon build almost immediately dies with
$ make
g++ -std=gnu++17 -Wall -O3 -MMD -MP -ggdb -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-5.2.1/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include -c -o navparse.o navparse.cc
navparse.cc:27:20: fatal error: optional: No such file or directory
#include <optional>
^
compilation terminated.

[SOLVED] Is ublox NEO-M8N Galileo receiver eligible for galmon ?

Just wondering if my receiver (ublox NEO-M8N) is good enough for galmon.

I am operating it under Ubuntu 18.04 and it seems work with screen:

sudo screen /dev/ttyACM0 9600

$GATXT,01,01,02,u-blox AG - www.u-blox.com*41
$GATXT,01,01,02,HW UBX-M8030 00080000*6F
$GATXT,01,01,02,EXT CORE 3.01 (107900)*3C
$GATXT,01,01,02,ROM BASE 3.01 (107888)*2A
$GATXT,01,01,02,FWVER=SPG 3.01*49
$GATXT,01,01,02,PROTVER=18.00*1E
$GATXT,01,01,02,MOD=NEO-M8N-0*68
$GATXT,01,01,02,FIS=0xC22536 (100111)*27
$GATXT,01,01,02,GPS;GLO;GAL;BDS*78
$GATXT,01,01,02,SBAS;IMES;QZSS*46
$GATXT,01,01,02,GNSS OTP=GPS;GLO*38
$GATXT,01,01,02,LLC=FFFFFFFF-FFFFFFED-FFFFFFFF-FFFFFFFF-FFFFFF69*2C
$GATXT,01,01,02,ANTSUPERV=AC SD PDoS SR*31
$GATXT,01,01,02,ANTSTATUS=OK*2A
$GATXT,01,01,02,PF=3FF*44
$GARMC,,V,,,,,,,,,,N,V*38
$GAVTG,,,,,,,,,N*21
$GAGGA,,,,,,0,00,99.99,,,,,,*59
$GAGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99,3*3E
$GAGSV,1,1,00,0*74
...
...

However, when I run ubxtool, only a few messages are shown, after that it exits.

$ sudo ./ubxtool --wait --port /dev/ttyACM0 --station 1 --stdout
Fri, 08 Nov 2019 08:32:11 +0000 swVersion: EXT CORE 3.01 (107900)
Fri, 08 Nov 2019 08:32:11 +0000 hwVersion: 00080000
Fri, 08 Nov 2019 08:32:11 +0000 Extended info: ROM BASE 3.01 (107888)
Fri, 08 Nov 2019 08:32:11 +0000 Extended info: FWVER=SPG 3.01
Fri, 08 Nov 2019 08:32:11 +0000 Extended info: PROTVER=18.00
Fri, 08 Nov 2019 08:32:11 +0000 Extended info: MOD=NEO-M8N-0
Fri, 08 Nov 2019 08:32:11 +0000 Extended info: FIS=0xC22536 (100111)
Fri, 08 Nov 2019 08:32:11 +0000 Extended info: GPS;GLO;GAL;BDS
Fri, 08 Nov 2019 08:32:11 +0000 Extended info: SBAS;IMES;QZSS

ubxtool name used by gpsd

Hi,

the gpsd project is using the name 'ubxtool' since 2018. This will stop people from packaging galmon for Debian/Ubuntu - please rename your ubxtool.

Thanks,
Bernd

allow stations to name themselves

Presently the ubxtool requires the --station command (a number between 1 and N) which identifies a unique station. Let's upgrade that to a number colon name so that the database has a station identifier. (in my case, I'd use my ham radio callsign; but maybe someone wants to use their name or city.
For example ...

     $ ubxtool ... --station 5:W6LHI ...

... in my case. This would be backward compatible because if no name was provided; then it's simply "".
The name would only need to be sent once to the database; leaving all other messages to simple use the g_srcid in the regular NavMonMessage messages.

No data recieved or transmitted

./ubxtool --wait --port /dev/ttyACM0 --station 1 --gps --stdout | ./navparse 127.0.0.1:10000 html null

leads to following output:

Unknown type 10
Unknown type 10
Unknown type 10
Unknown type 10
Unknown type 10

/geo/ could remember preferences

Every time I go to /geo/, I do the same things:

  1. disable coverage (1 click)
  2. change the projection (2 clicks)

It'd be nice if the viewer remembered my preferences instead of having to click around to make the map readable (for me).

duplicate ubxtool

The gpsd project has shipped a ubxtool since September 2018. A very different thing than your ubxtool.

The gpsd project is adding link in their README to this project to lessen confusion. Can galmon please add a link back to our ubxtool?

warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 52] from the object at ‘_NavMonMessage_GalileoInav_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_GalileoInav::gnsswn_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]

Building ubxtool on Ubuntu 20.04 gives some warnings about out-of-bound references:

sarnold@millbarge:~/trees/galmon$ git pull --recurse
Fetching submodule ext/powerblog
Fetching submodule ext/powerblog/ext/simplesocket
Fetching submodule ext/sgp4
Already up to date.
sarnold@millbarge:~/trees/galmon$ git log -1
commit 3b638de1ee11e985537924e4b3b3dc5c28ab274d (HEAD -> master, origin/master, origin/HEAD)
Author: bert hubert <[email protected]>
Date:   Fri Jul 10 21:06:54 2020 +0200

    adjust for NEO-8MP not doing *anything* with Galileo
sarnold@millbarge:~/trees/galmon$ make clean
rm -f *~ *.o *.d ext/*/*.o ext/*/*.d navparse ubxtool navnexus navcat navrecv navdump testrunner navdisplay tlecatch reporter sp3feed galmonmon rinreport rtcmtool navmon.pb.h navmon.pb.cc ext/sgp4/libsgp4/Observer.o ext/sgp4/libsgp4/DateTime.o ext/sgp4/libsgp4/Tle.o ext/sgp4/libsgp4/Globals.o ext/sgp4/libsgp4/TimeSpan.o ext/sgp4/libsgp4/DecayedException.o ext/sgp4/libsgp4/CoordTopocentric.o ext/sgp4/libsgp4/SolarPosition.o ext/sgp4/libsgp4/Vector.o ext/sgp4/libsgp4/Util.o ext/sgp4/libsgp4/SGP4.o ext/sgp4/libsgp4/CoordGeodetic.o ext/sgp4/libsgp4/Eci.o ext/sgp4/libsgp4/TleException.o ext/sgp4/libsgp4/OrbitalElements.o ext/sgp4/libsgp4/SatelliteException.o ext/powerblog/h2o-pp.o ext/powerblog/ext/simplesocket/swrappers.o ext/powerblog/ext/simplesocket/sclasses.o  ext/powerblog/ext/simplesocket/comboaddress.o 
rm -f ext/fmt-6.1.2/src/format.[do] ext/sgp4/libsgp4/*.d ext/powerblog/ext/simplesocket/*.d
sarnold@millbarge:~/trees/galmon$ make -j8 ubxtool 
protoc --cpp_out=./ navmon.proto
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o ubxtool.o ubxtool.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o ubx.o ubx.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o bits.o bits.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o ext/fmt-6.1.2/src/format.o ext/fmt-6.1.2/src/format.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o galileo.o galileo.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o gps.o gps.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o beidou.o beidou.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o navmon.o navmon.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o ephemeris.o ephemeris.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o ext/powerblog/ext/simplesocket/swrappers.o ext/powerblog/ext/simplesocket/swrappers.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o ext/powerblog/ext/simplesocket/sclasses.o ext/powerblog/ext/simplesocket/sclasses.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o ext/powerblog/ext/simplesocket/comboaddress.o ext/powerblog/ext/simplesocket/comboaddress.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o osen.o osen.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o githash.o githash.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o nmmsender.o nmmsender.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o zstdwrap.o zstdwrap.cc
g++ -std=gnu++17 -Wall -O3 -ggdb -MMD -MP -fno-omit-frame-pointer -Iext/CLI11 -Iext/fmt-6.1.2/include/ -Iext/powerblog/ext/simplesocket -Iext/powerblog/ext/ -I/usr/local/opt/openssl/include/ -Iext/sgp4/libsgp4/ -I/usr/local/include   -c -o navmon.pb.o navmon.pb.cc
ext/powerblog/ext/simplesocket/swrappers.cc: In function ‘std::vector<ComboAddress> resolveName(const string&, bool, bool)’:
ext/powerblog/ext/simplesocket/swrappers.cc:242:64: warning: ‘void* memcpy(void*, const void*, size_t)’ copying an object of non-trivial type ‘union ComboAddress’ from an array of ‘struct sockaddr’ [-Wclass-memaccess]
  242 |           memcpy(&remote, address->ai_addr, address->ai_addrlen);
      |                                                                ^
In file included from ext/powerblog/ext/simplesocket/swrappers.hh:3,
                 from ext/powerblog/ext/simplesocket/swrappers.cc:1:
ext/powerblog/ext/simplesocket/comboaddress.hh:78:7: note: ‘union ComboAddress’ declared here
   78 | union ComboAddress {
      |       ^~~~~~~~~~~~
In file included from /usr/include/string.h:495,
                 from /usr/include/google/protobuf/stubs/port.h:38,
                 from /usr/include/google/protobuf/stubs/common.h:46,
                 from navmon.pb.h:9,
                 from navmon.pb.cc:4:
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_GPSInav::SharedCtor()’ at navmon.pb.cc:1491:11,
    inlined from ‘NavMonMessage_GPSInav::NavMonMessage_GPSInav()’ at navmon.pb.cc:1471:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_GPSInav()’ at navmon.pb.cc:1467:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 52] from the object at ‘_NavMonMessage_GPSInav_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_GPSInav::gnsswn_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_GalileoInav::SharedCtor()’ at navmon.pb.cc:1022:11,
    inlined from ‘NavMonMessage_GalileoInav::NavMonMessage_GalileoInav()’ at navmon.pb.cc:1002:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_GalileoInav()’ at navmon.pb.cc:998:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 52] from the object at ‘_NavMonMessage_GalileoInav_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_GalileoInav::gnsswn_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_GPSCnav::SharedCtor()’ at navmon.pb.cc:7651:11,
    inlined from ‘NavMonMessage_GPSCnav::NavMonMessage_GPSCnav()’ at navmon.pb.cc:7631:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_GPSCnav()’ at navmon.pb.cc:7627:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 52] from the object at ‘_NavMonMessage_GPSCnav_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_GPSCnav::gnsswn_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_SBASMessage::SharedCtor()’ at navmon.pb.cc:7297:11,
    inlined from ‘NavMonMessage_SBASMessage::NavMonMessage_SBASMessage()’ at navmon.pb.cc:7277:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_SBASMessage()’ at navmon.pb.cc:7273:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 40] from the object at ‘_NavMonMessage_SBASMessage_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_SBASMessage::gnssid_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_BeidouInavD2::SharedCtor()’ at navmon.pb.cc:2429:11,
    inlined from ‘NavMonMessage_BeidouInavD2::NavMonMessage_BeidouInavD2()’ at navmon.pb.cc:2409:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_BeidouInavD2()’ at navmon.pb.cc:2405:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 52] from the object at ‘_NavMonMessage_BeidouInavD2_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_BeidouInavD2::gnsswn_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_GlonassInav::SharedCtor()’ at navmon.pb.cc:2897:11,
    inlined from ‘NavMonMessage_GlonassInav::NavMonMessage_GlonassInav()’ at navmon.pb.cc:2877:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_GlonassInav()’ at navmon.pb.cc:2873:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 48] from the object at ‘_NavMonMessage_GlonassInav_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_GlonassInav::gnssid_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_BeidouInavD1::SharedCtor()’ at navmon.pb.cc:1960:11,
    inlined from ‘NavMonMessage_BeidouInavD1::NavMonMessage_BeidouInavD1()’ at navmon.pb.cc:1940:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_BeidouInavD1()’ at navmon.pb.cc:1936:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [37, 52] from the object at ‘_NavMonMessage_BeidouInavD1_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_BeidouInavD1::gnsswn_’ with type ‘unsigned int’ at offset 32 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_ReceptionData::SharedCtor()’ at navmon.pb.cc:3324:11,
    inlined from ‘NavMonMessage_ReceptionData::NavMonMessage_ReceptionData()’ at navmon.pb.cc:3309:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_ReceptionData()’ at navmon.pb.cc:3305:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [29, 61] from the object at ‘_NavMonMessage_ReceptionData_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_ReceptionData::gnssid_’ with type ‘unsigned int’ at offset 24 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_ObserverPosition::SharedCtor()’ at navmon.pb.cc:4784:11,
    inlined from ‘NavMonMessage_ObserverPosition::NavMonMessage_ObserverPosition()’ at navmon.pb.cc:4769:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_ObserverPosition()’ at navmon.pb.cc:4765:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [33, 64] from the object at ‘_NavMonMessage_ObserverPosition_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_ObserverPosition::x_’ with type ‘double’ at offset 24 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_RFData::SharedCtor()’ at navmon.pb.cc:3900:11,
    inlined from ‘NavMonMessage_RFData::NavMonMessage_RFData()’ at navmon.pb.cc:3885:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_RFData()’ at navmon.pb.cc:3881:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [33, 113] from the object at ‘_NavMonMessage_RFData_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_RFData::rcvtow_’ with type ‘double’ at offset 24 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_UbloxJammingStats::SharedCtor()’ at navmon.pb.cc:6913:11,
    inlined from ‘NavMonMessage_UbloxJammingStats::NavMonMessage_UbloxJammingStats()’ at navmon.pb.cc:6898:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_UbloxJammingStats()’ at navmon.pb.cc:6894:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [29, 40] from the object at ‘_NavMonMessage_UbloxJammingStats_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_UbloxJammingStats::noiseperms_’ with type ‘unsigned int’ at offset 24 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_GNSSOffset::SharedCtor()’ at navmon.pb.cc:8361:11,
    inlined from ‘NavMonMessage_GNSSOffset::NavMonMessage_GNSSOffset()’ at navmon.pb.cc:8346:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_GNSSOffset()’ at navmon.pb.cc:8342:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [29, 60] from the object at ‘_NavMonMessage_GNSSOffset_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_GNSSOffset::gnssid_’ with type ‘unsigned int’ at offset 24 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage::SharedCtor()’ at navmon.pb.cc:9322:11,
    inlined from ‘NavMonMessage::NavMonMessage()’ at navmon.pb.cc:9227:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage()’ at navmon.pb.cc:9223:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [33, 176] from the object at ‘_NavMonMessage_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage::gi_’ with type ‘NavMonMessage_GalileoInav*’ at offset 24 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_SARResponse::SharedCtor()’ at navmon.pb.cc:5194:11,
    inlined from ‘NavMonMessage_SARResponse::NavMonMessage_SARResponse()’ at navmon.pb.cc:5169:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_SARResponse()’ at navmon.pb.cc:5165:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [45, 60] from the object at ‘_NavMonMessage_SARResponse_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_SARResponse::gnssid_’ with type ‘unsigned int’ at offset 40 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void NavMonMessage_ObserverDetails::SharedCtor()’ at navmon.pb.cc:6061:11,
    inlined from ‘NavMonMessage_ObserverDetails::NavMonMessage_ObserverDetails()’ at navmon.pb.cc:6006:13,
    inlined from ‘void protobuf_navmon_2eproto::InitDefaultsNavMonMessage_ObserverDetails()’ at navmon.pb.cc:6002:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [97, 124] from the object at ‘_NavMonMessage_ObserverDetails_default_instance_’ is out of the bounds of referenced subobject ‘NavMonMessage_ObserverDetails::clockoffsetns_’ with type ‘double’ at offset 88 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
g++ -std=gnu++17 navmon.pb.o ubxtool.o ubx.o bits.o ext/fmt-6.1.2/src/format.o galileo.o gps.o beidou.o navmon.o ephemeris.o ext/powerblog/ext/simplesocket/swrappers.o ext/powerblog/ext/simplesocket/sclasses.o ext/powerblog/ext/simplesocket/comboaddress.o osen.o githash.o nmmsender.o zstdwrap.o -o ubxtool -L/usr/local/lib -lprotobuf -pthread -lzstd
sarnold@millbarge:~/trees/galmon$ dpkg -S /usr/include/x86_64-linux-gnu/bits/string_fortified.h
libc6-dev:amd64: /usr/include/x86_64-linux-gnu/bits/string_fortified.h
sarnold@millbarge:~/trees/galmon$ dpkg -l libc6-dev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name            Version       Architecture Description
+++-===============-=============-============-=====================================================
ii  libc6-dev:amd64 2.31-0ubuntu9 amd64        GNU C Library: Development Libraries and Header Files

Thanks

Compression of ubxtool stream

Is the stream of data collected by ubxtool compressed on its way to navrecv?

A central navrecv host might have more CPU than bandwidth and benefit from compression.

A remote ubxtool host might have a metered connection that is shared or a latent connection where less packets transmitted are less packets lost.

Accommodating those who like to tune the knobs, allowing a client to pick the preferred compression level can allow for variation between the slowest embedded processors and fastest workstations.

Reference: 5 ways Facebook improved compression at scale with Zstandard

svg path should use fill-rule=evenodd

The world geometry sometimes carves holes into polygons, which shouldn't be filled, e.g. by adding .attr("fill-rule", "evenodd") in the right place(s).

I didn't find an actual "visual" bug in the display, but for example "South Africa" has a hole, but it isn't water - it is another country "Lesotho" (which is why it looks the same).

Send SV names to influxdb

Currently the SV id's are sent as numeric values, however it would be useful for presentation purposes on grafana to show the SV names such as
E10, C08, EGNOS etc.

GPS L2C parser missing

Newer GPS L2C should also be parsed, and we don't right now. These are very different messages.

watchdog timeout

Hi,

I have a receiver (https://galmon.eu/observer.html?observer=74) that will occasionally hang and stop generating serial data. This typically occurs a few times a week. When it happens kernel messages like these are generated:

[Sat Jun 27 17:11:16 2020] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[Mon Jun 29 22:10:58 2020] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32

This is on a Raspberry Pi 4 and I don't see the same issue on my desktop, so it's probably a hardware issue.

Closing and re-opening the serial port appears to clear the problem. My current workaround is to restart the ubxtool process every hour or so (e.g. RuntimeMaxSec=3600 in the systemd service unit), but I'm wondering if it might make more sense to have a watchdog option in the ubxtool process itself that exits the main loop if a message hasn't been received in a reasonable amount of time (e.g., 5–10 minutes?).

Thanks for considering!

System clock jumps cause incorrect application uptime reported by ubxtool

When the system time is changed during the running of ubxtool, this causes the application uptime to be incorrectly calculated.

This happens often for SBC-based mobile observer stations, that in addition to being regularly powered on after hours or more switched off, may also take a while to establish internet connections and update their system time (through ntp/chrony). This jump forwards is then shown as an addition to the application uptime.

Reported by ptudor, also observed by me (craag).

some stale entries display with a list of sources

The "stale" table sometimes includes svs with a list of sources. This seems counter-intuitive - if a sv is stale, isn't it because there are no receivers?

E.g., at the time of filing this issue, E19@1 is listed as stale with 8 as a source.

BeiDou D2 parser missing

BeiDou geostationary satellites emit D2 messages, which we don't parse yet. It also looks difficult, an initial attempt failed. Documentation may not match what we receive, or we just don't understand what we are doing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.