Skip to content

NR UE & gNB imscope.

Bartosz Podrygajlo requested to merge wip-imscope into develop

A new phy scope based on ImGui and ImPlot. This scope uses a different concurrency model than previous scopes.

The PHY thread writing the data first checks if the data is ready to be written. If its not, nothing is copied. The GUI thread reads data if available and marks it ready to write. This makes sure that the PHY threads are not busy copying data that would never be displayed.

Some of the scopes also have a freeze functionality that further limit the amount of data that needs to be copied from PHY threads. If a scope is "frozen" it still allows the user to explore the data using plots zoom/pan functions but doesn't cause PHY threads to perform extra writes on the displayed data.

How to test: You need glfw3 and OpenGL My u22 system has these installed:

libglfw3-dev/jammy,now 3.3.6-1 amd64 [installed]
libglfw3/jammy,now 3.3.6-1 amd64 [installed,automatic]
libopengl-dev/jammy,now 1.4.0-1 amd64 [installed,automatic]
libopengl0/jammy,now 1.4.0-1 amd64 [installed,automatic]

Build: add -DENABLE_IMSCOPE=ON to your cmake command. also build target imscope as this is loaded as a shared library.

Run: add --imscope to your command line

Some screenshots will follow here.

Screencast_from_21-08-24_08_42_24

LLR plot:

Screencast_from_27-08-24_13_05_12

This commit uses CPM (https://github.com/cpm-cmake/CPM.cmake). CPM is a pure CMake script that works as a package manger. CPM supports caching outside repository if run with CPM_SOURCE_CACHE environment variable set.

example output with cache enabled:

-- CPM: Adding package imgui@1.90.9 (v1.90.9 to /home/ubuntu/package-cache/imgui/e4eeb0d2c4569a62c65fb0e31f374b6c0c5a9734)
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so   
-- CPM: Adding package implot@0.16 (v0.16 to /home/ubuntu/package-cache/implot/39c5cb9f7c206a0ef33673b03689f7b5715580ea)

This works without internet connection once the cache is built.

Edited by Bartosz Podrygajlo

Merge request reports