This is a very experimental GUI for controlling u-blox 9 (and perhaps later ones) positioning receivers, analysing data, recording and replaying logs.
This needs Linux. It won't work on Windoze. We need gcc (>= 8.0, maybe >= 10.0) and GNU libc. A recent Ubuntu (20.04 or later) should work.
Install dependencies:
sudo apt-get install libcurl4-gnutls-dev libglfw3-dev libfreetype6-dev libglu1-mesa-dev zlib1g-dev libglm-dev gcc g++ # or libcurl4-openssl-dev
Build:
make cfggui -j8
On older Ubuntus you may be able to get it to work as follows:
sudo apt install libcurl4-gnutls-dev libglfw3-dev libfreetype6-dev libglu1-mesa-dev zlib1g-dev libglm-dev gcc-8 g++-8 # or libcurl4-openssl-dev
make cfggui CC=gcc-8 CXX=gcc-8
If it fails at compiler warnings, try disabling them (remove -Werror
from Makefile).
YMMV.
Starting:
./output/cfggui-release
Debugging gui: LIBGL_SHOW_FPS=1 LIBGL_DEBUG=verbose ./output/cfggui-release
(https://docs.mesa3d.org/envvars.html)
If you get a GLFW error 65543: GLX: Failed to create context: GLXBadFBConfig error, try starting it using
MESA_GL_VERSION_OVERRIDE=4.3 ./output/cfggui-release
- Various third-party code comes with its own license, see
3rdparty/
and below - Definitions for various maps are built into the cfggui. Check if the licenses cover your use!
See
mapparams.cpp
.
See the main README for more.
The GUI uses the following third-party code:
-
Dear ImGui (https://github.com/ocornut/imgui), see 3rdparty/imgui/
-
ImPlot (https://github.com/epezent/implot), see 3rdparty/implot/
-
PlatformFolders (https://github.com/sago007/PlatformFolders), see 3rdparty/stuff/
-
DejaVu fonts (https://dejavu-fonts.github.io/), see 3rdparty/fonts/
-
ProggyClean font (https://proggyfonts.net), see 3rdparty/fonts/
-
ForkAwesome font (https://forkaweso.me/Fork-Awesome/), see 3rdparty/fonts/
-
_json* (https://github.com/nlohmann/json), see 3rdparty/stuff/
-
GLFW (https://www.glfw.org/), dynamically linked
-
libcurl (https://curl.se/), dynamically linked
-
Freetype (https://freetype.org/), dynamically linked
-
zlib (https://zlib.net/), dynamically linked
-
And a bunch of other libraries that GLFW, Freetype, ImGui, libcurl etc. need...
See the main README for more.
-
Implement Logfile::Read(), Seek(), Tell(), Size(), and gzipped read/write/seek/tell/size
-
Navigation status page (same stuff as in input window + velocity gage, artificial horizon, etc.)?
-
Implement A-GNSS
-
Add epoch rate [Hz] to nav status (also for logfile!)
-
Messages data win: show tree anyway if hidden but selected message not present (until it is present...)
-
Clear all settings (on next restart) option
-
Custom message: implement RTCM3
-
Custom message: load from / save to file, load from clipboard? sw itch to right tab depending on what message it is?
-
Fix docking troubles in GuiWinInput::DrawWindow(), disallow some centre dockings
-
Improve GuiWinDataPlot, e.g. markers, lines, lines+markers, ...
-
Handle database reset (insert blank epoch?) when seeking in logfile
-
File dialog: load dir entries async, and as needed (make _RefreshDir() run in background)
-
(started) Implement epoch info page (table with all details / fields of EPOCH_t etc.)
-
FIXMEs and TODOs all over...
-
Application crashes if (e.g. receiver) thread is running on close. Explicitly calling _receiver->Stop() in GuiWinInputReceiver::~GuiWinInputReceiver(). Maybe this is now fixed with the GuiSettings rework. seems to help (and in ~GuiWinInputLogfile)
-
GuiWinDataConfig needs some love, and the new tables..
-
Gzipped read: maybe replace by gunzipping file into cache dir and then use that? Hmmm... lots of implications with the "immediate" in imgui.. :-/ Can we implement seekpos()? Maybe re-open file at a certain position? And gzseek() is commented-out in zlib.h anyway... (?!)
-
Fix memory leaks... valgrind isn't too happy.. :-/ (Is it?)
-
Use Ff::Thread in GuiWinPlay
-
Write parser for swisstopo wmts capabilities xml to generate mapparams
-
Use https://github.com/raysan5/raylib/blob/master/src/raymath.h instead of glm (1 file vs 1000000 files)
-
example_emscripten_wgpu, can we do that?
-
plot trajectory with error estimates
-
OpenGL::SaveState()/RervertState() or something like that
-
Something's wrong when stepping logs by epoch: UBX-NAV-EOE is not shown?!
-
Use JSON to store config and states
-
Waterfall plot of UBX-MON-SPAN
-
Check out stuff here: https://github.com/mahilab/mahi-gui
-
Check out https://github.com/bkaradzic/bgfx
-
Check out https://github.com/jnmaloney/WebGui
-
Checkout icons in https://github.com/leiradel/ImGuiAl/tree/master/fonts
-
https://gist.github.com/gorbatschow/ce36c15d9265b61d12a1be1783bf0abf
-
Check out https://github.com/WerWolv/ImHex/blob/master/lib/libimhex/source/api/layout_manager.cpp