OmniView is an experimental GUI for the measurement-devices of the research-collaboration AW4null. It's purpose is the display and the handling of data, generated by Auto-Intern OmniScopes.
The plan of AW4null is to enhance car-diagnostics with AI-powered diagnostic-services.
Diagnostic-services will be reachable through differen REST-APIs and will be specialized on a lot of different purposes.
Physical-measurements of automotive-sensors will be taken, displayed in OmniView and send to an API at the users will.
OmniView shall receive data from multiple generators, such as OmniScopes and OmniB-, OmniE-Clamp and OmniPressure.
The data will come in as a binary stream of 24-bit integers.
Since the incoming data represents measurement-samples in the time-domain, the individual channels will be synchronized.
This is done in a currently non-public-repo of Auto-Intern, but will be separated into a .dll
or .so
respectively.
The acquired data can be viewed on the OmniView GUI and may then be saved to the hard-drive in .csv
or binary format.
Anyhow, another possibility is to send the measurement to a REST-API provided by the THGA.
In its first phase, only one API will be used, documented by this Repository. The API will be able to receive training-data for AI-training purposes.
Phase two will implement the interface to the data-producer as a vector
of a multitude of objects, that encapsulate each an individual .dll
or .so
.
The first two shared libs that shall be used will be a software-function-generator as well as an abstraction of the OmniScope, following the Unified-abstract-Dataproducer-Interface which is displayed in the UaDI-Demonstrator-Repo.
In phase three, OmniView will be extended to use a multitude of service-APIs that can be loaded at runtime.
Building is currently only possible with specially provided access-rights, but will be made available to the wider public as soon as the migration to a closed-source shared-library for device handling has been done as described in Issue #36. In order to ask for access-rights, contact @bjoekeldude.
Anyhow, building IS available in CI. A push into any branch will generate a new binary, that can be downloaded via the Action-Tab.
Building requires cmake --version > 3.20
as well as a c++20
-Compiler.
In order to start the compilation, following packages need to be ensured:
Move into OmniView-directory, update and initialize all submodules:
git submodule update --init --recursive
create build-directory and run cmake from there:
mkdir build
cd build
cmake ..
Start the compilation by using the CMake-command:
cmake --build .
In order to run OmniView it needs admin-rights right now:
sudo ./OmniView
In order to build on Windows, you have to make sure to install the MS Build Tools for Visual Studio
.
Due to the layout of the Microsoft Download Page this package can be hard to find.
Use this Link to Download https://aka.ms/vs/17/release/vs_BuildTools.exe.
If it doesn't work, please make an Issue.
In order to build the project on Windows, make sure, that you installed git
for Windows, and set up an additional .ssh
-Configuration for github in your CMD.
The Windows Shell doesn't use the WSL SSH Configuration!
Make sure to select the following options in the Visual Studio Installer:
from the optional components select:
greater than
10.0.223??.?) This installs approximately 9 GB of data.
In order to utilize the MSVC
-Compiler on the Windows Command-Line, you'll have to set a whole bunch of environment variables.
Thus Build-Tools provides an easy way to load all of them at one.
Instead of runnign cmd
you can just run the Developer Command Promt
from your Windows Startmenu.
This starts a Session with all env-variables set accordingly.
Run the following commands in the Developer Command Prompt:
git clone --recurse-submodules git@github.com:skunkforce/OmniView.git
cd OmniView
cmake -S . -B ./build -DVCPKG_TARGET_TRIPLET="x64-windows-static"
cmake --build ./build --config Release
The compiled executable will be called .\build\Release\OmniView.exe
.
The code should follow the c++ standard and contains the following structure :
The following Interfaces are used :
popups.hpp handler.hpp regions.hpp Style.hpp
The functions are declared in the .hpp files and implemented in the .cpp files
Every function that does not depend on another function should be implemented in an individual .cpp file.
The functions declaration, implementation and usage can be found in the documentation. (right now there is no documentation)
Namespaces should be used to prevent potential conflicts that may arise when functions are declared multiple times in an open-source project. However, they should only be used when necessary because the code should not be overloaded with unnecessary namespaces.
The different PlotRegions have namespaces for readability: SideBarRegion, DevicesRegion, ToolbarRegion, and PlotRegion.
The design and usage of the Regions can be found in the skunkforce/OmniView-Product-Vision Document.
To add new code to the project, follow these steps:
To use the Clang-Formatter, follow these steps:
clang-format -style=file -i directory/filetochange
Note: You don't need to modify the -style=file
option.
git diff
.clang-format
.Versioning will only be used for releases in the master branch. Version numbers for software releases follow a standard format, typically consisting of three numbers separated by periods: Major.Minor.Patch. The first number represents the major version, indicating significant changes or updates that might not be backward compatible. The second number denotes the minor version, usually signaling smaller enhancements or new features that are backward compatible. The third number, the patch version, signifies bug fixes or minor updates without introducing new features. We are using this standard for versioning the different releases. Releases can be found on the right side of the repository. To keep a clean versioning, those versions will only be set by the current product manager @AKMaily.
To add a version to the master the following steps need to be followed in an empty directory :
git clone git@github.com:skunkforce/OmniView.git
cd OmniView
git tag vNUMBER
git push origin vNUMBER
In order to learn more about the project as such, you may visit www.autowerkstatt40.org or have a look at our online-learning resources
This work has been supported by the BMWK- project number 68GX21005E