From d6b9e1d86a5e4274d98f36670586c55b92e97d82 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sat, 19 Sep 2020 12:48:34 +0200 Subject: [PATCH] new modole system --- CMakeLists.txt | 70 +---- core/CMakeLists.txt | 74 ++++++ {src => core/src}/audio.cpp | 0 {src => core/src}/audio.h | 0 {src => core/src}/bandplan.cpp | 0 {src => core/src}/bandplan.h | 0 {src => core/src}/config.cpp | 0 {src => core/src}/config.h | 0 core/src/core.cpp | 250 ++++++++++++++++++ core/src/core.h | 3 + {src => core/src}/dsp/block.h | 0 {src => core/src}/dsp/correction.h | 0 {src => core/src}/dsp/demodulator.h | 0 {src => core/src}/dsp/filter.h | 0 {src => core/src}/dsp/math.h | 0 {src => core/src}/dsp/resampling.h | 0 {src => core/src}/dsp/routing.h | 0 {src => core/src}/dsp/sink.h | 0 {src => core/src}/dsp/source.h | 0 {src => core/src}/dsp/stream.h | 0 {src => core/src}/dsp/types.h | 0 {src => core/src}/dsp/vfo.h | 0 {src => core/src}/frequency_select.cpp | 1 + {src => core/src}/frequency_select.h | 0 {src => core/src}/icons.cpp | 0 {src => core/src}/icons.h | 0 {src => core/src}/imgui/imconfig.h | 0 {src => core/src}/imgui/imgui.cpp | 0 {src => core/src}/imgui/imgui.h | 0 {src => core/src}/imgui/imgui_demo.cpp | 0 {src => core/src}/imgui/imgui_draw.cpp | 0 {src => core/src}/imgui/imgui_impl_glfw.cpp | 0 {src => core/src}/imgui/imgui_impl_glfw.h | 0 .../src}/imgui/imgui_impl_opengl3.cpp | 0 {src => core/src}/imgui/imgui_impl_opengl3.h | 0 {src => core/src}/imgui/imgui_internal.h | 0 {src => core/src}/imgui/imgui_plot.cpp | 0 {src => core/src}/imgui/imgui_plot.h | 0 {src => core/src}/imgui/imgui_widgets.cpp | 0 {src => core/src}/imgui/imstb_rectpack.h | 0 {src => core/src}/imgui/imstb_textedit.h | 0 {src => core/src}/imgui/imstb_truetype.h | 0 {src => core/src}/imgui/imutils.h | 0 {src => core/src}/imgui/stb_image.h | 0 {src => core/src}/imgui/stb_image_resize.h | 0 {src => core/src}/io/audio.h | 0 {src => core/src}/io/soapy.h | 7 +- {src => core/src}/json.hpp | 0 {src => core/src}/main_window.cpp | 3 + {src => core/src}/main_window.h | 0 {src => core/src}/module.cpp | 0 {src => core/src}/module.h | 0 {src => core/src}/signal_path.cpp | 0 {src => core/src}/signal_path.h | 0 {src => core/src}/spdlog/async.h | 0 {src => core/src}/spdlog/async_logger-inl.h | 0 {src => core/src}/spdlog/async_logger.h | 0 {src => core/src}/spdlog/cfg/argv.h | 0 {src => core/src}/spdlog/cfg/env.h | 0 {src => core/src}/spdlog/cfg/helpers-inl.h | 0 {src => core/src}/spdlog/cfg/helpers.h | 0 {src => core/src}/spdlog/cfg/log_levels.h | 0 {src => core/src}/spdlog/common-inl.h | 0 {src => core/src}/spdlog/common.h | 0 .../src}/spdlog/details/backtracer-inl.h | 0 {src => core/src}/spdlog/details/backtracer.h | 0 {src => core/src}/spdlog/details/circular_q.h | 0 .../src}/spdlog/details/console_globals.h | 0 .../src}/spdlog/details/file_helper-inl.h | 0 .../src}/spdlog/details/file_helper.h | 0 {src => core/src}/spdlog/details/fmt_helper.h | 0 .../src}/spdlog/details/log_msg-inl.h | 0 {src => core/src}/spdlog/details/log_msg.h | 0 .../src}/spdlog/details/log_msg_buffer-inl.h | 0 .../src}/spdlog/details/log_msg_buffer.h | 0 .../src}/spdlog/details/mpmc_blocking_q.h | 0 {src => core/src}/spdlog/details/null_mutex.h | 0 {src => core/src}/spdlog/details/os-inl.h | 0 {src => core/src}/spdlog/details/os.h | 0 .../src}/spdlog/details/periodic_worker-inl.h | 0 .../src}/spdlog/details/periodic_worker.h | 0 .../src}/spdlog/details/registry-inl.h | 0 {src => core/src}/spdlog/details/registry.h | 0 .../src}/spdlog/details/synchronous_factory.h | 0 .../src}/spdlog/details/tcp_client-windows.h | 0 {src => core/src}/spdlog/details/tcp_client.h | 0 .../src}/spdlog/details/thread_pool-inl.h | 0 .../src}/spdlog/details/thread_pool.h | 0 .../src}/spdlog/details/windows_include.h | 0 {src => core/src}/spdlog/fmt/bin_to_hex.h | 0 .../src}/spdlog/fmt/bundled/LICENSE.rst | 0 {src => core/src}/spdlog/fmt/bundled/chrono.h | 0 {src => core/src}/spdlog/fmt/bundled/color.h | 0 .../src}/spdlog/fmt/bundled/compile.h | 0 {src => core/src}/spdlog/fmt/bundled/core.h | 0 .../src}/spdlog/fmt/bundled/format-inl.h | 0 {src => core/src}/spdlog/fmt/bundled/format.h | 0 {src => core/src}/spdlog/fmt/bundled/locale.h | 0 .../src}/spdlog/fmt/bundled/ostream.h | 0 {src => core/src}/spdlog/fmt/bundled/posix.h | 0 {src => core/src}/spdlog/fmt/bundled/printf.h | 0 {src => core/src}/spdlog/fmt/bundled/ranges.h | 0 {src => core/src}/spdlog/fmt/fmt.h | 0 {src => core/src}/spdlog/fmt/ostr.h | 0 {src => core/src}/spdlog/formatter.h | 0 {src => core/src}/spdlog/fwd.h | 0 {src => core/src}/spdlog/logger-inl.h | 0 {src => core/src}/spdlog/logger.h | 0 .../src}/spdlog/pattern_formatter-inl.h | 0 {src => core/src}/spdlog/pattern_formatter.h | 0 {src => core/src}/spdlog/sinks/android_sink.h | 0 .../src}/spdlog/sinks/ansicolor_sink-inl.h | 0 .../src}/spdlog/sinks/ansicolor_sink.h | 0 .../src}/spdlog/sinks/base_sink-inl.h | 0 {src => core/src}/spdlog/sinks/base_sink.h | 0 .../src}/spdlog/sinks/basic_file_sink-inl.h | 0 .../src}/spdlog/sinks/basic_file_sink.h | 0 .../src}/spdlog/sinks/daily_file_sink.h | 0 {src => core/src}/spdlog/sinks/dist_sink.h | 0 .../src}/spdlog/sinks/dup_filter_sink.h | 0 {src => core/src}/spdlog/sinks/msvc_sink.h | 0 {src => core/src}/spdlog/sinks/null_sink.h | 0 {src => core/src}/spdlog/sinks/ostream_sink.h | 0 .../src}/spdlog/sinks/ringbuffer_sink.h | 0 .../spdlog/sinks/rotating_file_sink-inl.h | 0 .../src}/spdlog/sinks/rotating_file_sink.h | 0 {src => core/src}/spdlog/sinks/sink-inl.h | 0 {src => core/src}/spdlog/sinks/sink.h | 0 .../spdlog/sinks/stdout_color_sinks-inl.h | 0 .../src}/spdlog/sinks/stdout_color_sinks.h | 0 .../src}/spdlog/sinks/stdout_sinks-inl.h | 0 {src => core/src}/spdlog/sinks/stdout_sinks.h | 0 {src => core/src}/spdlog/sinks/syslog_sink.h | 0 {src => core/src}/spdlog/sinks/systemd_sink.h | 0 {src => core/src}/spdlog/sinks/tcp_sink.h | 0 .../src}/spdlog/sinks/win_eventlog_sink.h | 0 .../src}/spdlog/sinks/wincolor_sink-inl.h | 0 .../src}/spdlog/sinks/wincolor_sink.h | 0 {src => core/src}/spdlog/spdlog-inl.h | 0 {src => core/src}/spdlog/spdlog.h | 0 {src => core/src}/spdlog/tweakme.h | 0 {src => core/src}/spdlog/version.h | 0 {src => core/src}/style.cpp | 4 + {src => core/src}/style.h | 1 + {src => core/src}/version.h | 0 {src => core/src}/vfo_manager.cpp | 0 {src => core/src}/vfo_manager.h | 0 {src => core/src}/watcher.h | 0 {src => core/src}/waterfall.cpp | 0 {src => core/src}/waterfall.h | 0 demo/CMakeLists.txt | 7 + demo/src/main.cpp | 38 +++ modules/demo/CMakeLists.txt | 55 ---- modules/demo/src/main.cpp | 38 --- {modules/radio => radio}/CMakeLists.txt | 8 +- {modules/radio => radio}/src/main.cpp | 0 {modules/radio => radio}/src/path.cpp | 0 {modules/radio => radio}/src/path.h | 0 {modules/recorder => recorder}/CMakeLists.txt | 8 +- {modules/recorder => recorder}/src/main.cpp | 0 {modules/recorder => recorder}/src/wav.h | 0 root_dev/config.json | 4 +- root_dev/module_list.json | 6 +- src/main.cpp | 250 +----------------- 164 files changed, 414 insertions(+), 413 deletions(-) create mode 100644 core/CMakeLists.txt rename {src => core/src}/audio.cpp (100%) rename {src => core/src}/audio.h (100%) rename {src => core/src}/bandplan.cpp (100%) rename {src => core/src}/bandplan.h (100%) rename {src => core/src}/config.cpp (100%) rename {src => core/src}/config.h (100%) create mode 100644 core/src/core.cpp create mode 100644 core/src/core.h rename {src => core/src}/dsp/block.h (100%) rename {src => core/src}/dsp/correction.h (100%) rename {src => core/src}/dsp/demodulator.h (100%) rename {src => core/src}/dsp/filter.h (100%) rename {src => core/src}/dsp/math.h (100%) rename {src => core/src}/dsp/resampling.h (100%) rename {src => core/src}/dsp/routing.h (100%) rename {src => core/src}/dsp/sink.h (100%) rename {src => core/src}/dsp/source.h (100%) rename {src => core/src}/dsp/stream.h (100%) rename {src => core/src}/dsp/types.h (100%) rename {src => core/src}/dsp/vfo.h (100%) rename {src => core/src}/frequency_select.cpp (99%) rename {src => core/src}/frequency_select.h (100%) rename {src => core/src}/icons.cpp (100%) rename {src => core/src}/icons.h (100%) rename {src => core/src}/imgui/imconfig.h (100%) rename {src => core/src}/imgui/imgui.cpp (100%) rename {src => core/src}/imgui/imgui.h (100%) rename {src => core/src}/imgui/imgui_demo.cpp (100%) rename {src => core/src}/imgui/imgui_draw.cpp (100%) rename {src => core/src}/imgui/imgui_impl_glfw.cpp (100%) rename {src => core/src}/imgui/imgui_impl_glfw.h (100%) rename {src => core/src}/imgui/imgui_impl_opengl3.cpp (100%) rename {src => core/src}/imgui/imgui_impl_opengl3.h (100%) rename {src => core/src}/imgui/imgui_internal.h (100%) rename {src => core/src}/imgui/imgui_plot.cpp (100%) rename {src => core/src}/imgui/imgui_plot.h (100%) rename {src => core/src}/imgui/imgui_widgets.cpp (100%) rename {src => core/src}/imgui/imstb_rectpack.h (100%) rename {src => core/src}/imgui/imstb_textedit.h (100%) rename {src => core/src}/imgui/imstb_truetype.h (100%) rename {src => core/src}/imgui/imutils.h (100%) rename {src => core/src}/imgui/stb_image.h (100%) rename {src => core/src}/imgui/stb_image_resize.h (100%) rename {src => core/src}/io/audio.h (100%) rename {src => core/src}/io/soapy.h (98%) rename {src => core/src}/json.hpp (100%) rename {src => core/src}/main_window.cpp (99%) rename {src => core/src}/main_window.h (100%) rename {src => core/src}/module.cpp (100%) rename {src => core/src}/module.h (100%) rename {src => core/src}/signal_path.cpp (100%) rename {src => core/src}/signal_path.h (100%) rename {src => core/src}/spdlog/async.h (100%) rename {src => core/src}/spdlog/async_logger-inl.h (100%) rename {src => core/src}/spdlog/async_logger.h (100%) rename {src => core/src}/spdlog/cfg/argv.h (100%) rename {src => core/src}/spdlog/cfg/env.h (100%) rename {src => core/src}/spdlog/cfg/helpers-inl.h (100%) rename {src => core/src}/spdlog/cfg/helpers.h (100%) rename {src => core/src}/spdlog/cfg/log_levels.h (100%) rename {src => core/src}/spdlog/common-inl.h (100%) rename {src => core/src}/spdlog/common.h (100%) rename {src => core/src}/spdlog/details/backtracer-inl.h (100%) rename {src => core/src}/spdlog/details/backtracer.h (100%) rename {src => core/src}/spdlog/details/circular_q.h (100%) rename {src => core/src}/spdlog/details/console_globals.h (100%) rename {src => core/src}/spdlog/details/file_helper-inl.h (100%) rename {src => core/src}/spdlog/details/file_helper.h (100%) rename {src => core/src}/spdlog/details/fmt_helper.h (100%) rename {src => core/src}/spdlog/details/log_msg-inl.h (100%) rename {src => core/src}/spdlog/details/log_msg.h (100%) rename {src => core/src}/spdlog/details/log_msg_buffer-inl.h (100%) rename {src => core/src}/spdlog/details/log_msg_buffer.h (100%) rename {src => core/src}/spdlog/details/mpmc_blocking_q.h (100%) rename {src => core/src}/spdlog/details/null_mutex.h (100%) rename {src => core/src}/spdlog/details/os-inl.h (100%) rename {src => core/src}/spdlog/details/os.h (100%) rename {src => core/src}/spdlog/details/periodic_worker-inl.h (100%) rename {src => core/src}/spdlog/details/periodic_worker.h (100%) rename {src => core/src}/spdlog/details/registry-inl.h (100%) rename {src => core/src}/spdlog/details/registry.h (100%) rename {src => core/src}/spdlog/details/synchronous_factory.h (100%) rename {src => core/src}/spdlog/details/tcp_client-windows.h (100%) rename {src => core/src}/spdlog/details/tcp_client.h (100%) rename {src => core/src}/spdlog/details/thread_pool-inl.h (100%) rename {src => core/src}/spdlog/details/thread_pool.h (100%) rename {src => core/src}/spdlog/details/windows_include.h (100%) rename {src => core/src}/spdlog/fmt/bin_to_hex.h (100%) rename {src => core/src}/spdlog/fmt/bundled/LICENSE.rst (100%) rename {src => core/src}/spdlog/fmt/bundled/chrono.h (100%) rename {src => core/src}/spdlog/fmt/bundled/color.h (100%) rename {src => core/src}/spdlog/fmt/bundled/compile.h (100%) rename {src => core/src}/spdlog/fmt/bundled/core.h (100%) rename {src => core/src}/spdlog/fmt/bundled/format-inl.h (100%) rename {src => core/src}/spdlog/fmt/bundled/format.h (100%) rename {src => core/src}/spdlog/fmt/bundled/locale.h (100%) rename {src => core/src}/spdlog/fmt/bundled/ostream.h (100%) rename {src => core/src}/spdlog/fmt/bundled/posix.h (100%) rename {src => core/src}/spdlog/fmt/bundled/printf.h (100%) rename {src => core/src}/spdlog/fmt/bundled/ranges.h (100%) rename {src => core/src}/spdlog/fmt/fmt.h (100%) rename {src => core/src}/spdlog/fmt/ostr.h (100%) rename {src => core/src}/spdlog/formatter.h (100%) rename {src => core/src}/spdlog/fwd.h (100%) rename {src => core/src}/spdlog/logger-inl.h (100%) rename {src => core/src}/spdlog/logger.h (100%) rename {src => core/src}/spdlog/pattern_formatter-inl.h (100%) rename {src => core/src}/spdlog/pattern_formatter.h (100%) rename {src => core/src}/spdlog/sinks/android_sink.h (100%) rename {src => core/src}/spdlog/sinks/ansicolor_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/ansicolor_sink.h (100%) rename {src => core/src}/spdlog/sinks/base_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/base_sink.h (100%) rename {src => core/src}/spdlog/sinks/basic_file_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/basic_file_sink.h (100%) rename {src => core/src}/spdlog/sinks/daily_file_sink.h (100%) rename {src => core/src}/spdlog/sinks/dist_sink.h (100%) rename {src => core/src}/spdlog/sinks/dup_filter_sink.h (100%) rename {src => core/src}/spdlog/sinks/msvc_sink.h (100%) rename {src => core/src}/spdlog/sinks/null_sink.h (100%) rename {src => core/src}/spdlog/sinks/ostream_sink.h (100%) rename {src => core/src}/spdlog/sinks/ringbuffer_sink.h (100%) rename {src => core/src}/spdlog/sinks/rotating_file_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/rotating_file_sink.h (100%) rename {src => core/src}/spdlog/sinks/sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/sink.h (100%) rename {src => core/src}/spdlog/sinks/stdout_color_sinks-inl.h (100%) rename {src => core/src}/spdlog/sinks/stdout_color_sinks.h (100%) rename {src => core/src}/spdlog/sinks/stdout_sinks-inl.h (100%) rename {src => core/src}/spdlog/sinks/stdout_sinks.h (100%) rename {src => core/src}/spdlog/sinks/syslog_sink.h (100%) rename {src => core/src}/spdlog/sinks/systemd_sink.h (100%) rename {src => core/src}/spdlog/sinks/tcp_sink.h (100%) rename {src => core/src}/spdlog/sinks/win_eventlog_sink.h (100%) rename {src => core/src}/spdlog/sinks/wincolor_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/wincolor_sink.h (100%) rename {src => core/src}/spdlog/spdlog-inl.h (100%) rename {src => core/src}/spdlog/spdlog.h (100%) rename {src => core/src}/spdlog/tweakme.h (100%) rename {src => core/src}/spdlog/version.h (100%) rename {src => core/src}/style.cpp (98%) rename {src => core/src}/style.h (90%) rename {src => core/src}/version.h (100%) rename {src => core/src}/vfo_manager.cpp (100%) rename {src => core/src}/vfo_manager.h (100%) rename {src => core/src}/watcher.h (100%) rename {src => core/src}/waterfall.cpp (100%) rename {src => core/src}/waterfall.h (100%) create mode 100644 demo/CMakeLists.txt create mode 100644 demo/src/main.cpp delete mode 100644 modules/demo/CMakeLists.txt delete mode 100644 modules/demo/src/main.cpp rename {modules/radio => radio}/CMakeLists.txt (86%) rename {modules/radio => radio}/src/main.cpp (100%) rename {modules/radio => radio}/src/path.cpp (100%) rename {modules/radio => radio}/src/path.h (100%) rename {modules/recorder => recorder}/CMakeLists.txt (86%) rename {modules/recorder => recorder}/src/main.cpp (100%) rename {modules/recorder => recorder}/src/wav.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b95e1d7..a9c6c4bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,65 +1,19 @@ -cmake_minimum_required(VERSION 3.9) -project(sdrpp) +cmake_minimum_required(VERSION 3.13) +project(sdrpp_core) -add_subdirectory("modules/radio") -add_subdirectory("modules/recorder") +add_subdirectory("core") +add_subdirectory("radio") +add_subdirectory("recorder") +add_subdirectory("demo") +add_executable(sdrpp "src/main.cpp" "win32/resources.rc") +target_link_libraries(sdrpp PRIVATE sdrpp_core) + +# Copy dynamic libs over if (MSVC) - set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - link_directories(sdrpp "C:/Program Files/PothosSDR/lib/") - include_directories(sdrpp "C:/Program Files/PothosSDR/include/volk/") - include_directories(sdrpp "C:/Program Files/PothosSDR/include/") - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + add_custom_target(do_always ALL xcopy /s \"$\\*.dll\" \"$\" /Y) else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") - # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") - include_directories(sdrpp "/usr/include/volk") - link_libraries(pthread) - link_libraries(GL) - link_libraries(GLEW) - link_libraries(glfw) - link_libraries(fftw3) - link_libraries(fftw3f) - link_libraries(portaudio) - link_libraries(X11) - link_libraries(Xxf86vm) - link_libraries(dl) -endif (MSVC) - -link_libraries(volk) -link_libraries(SoapySDR) - -# Main code -include_directories(sdrpp "src/") -include_directories(sdrpp "src/imgui") -file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "src/imgui/*.cpp") - -# If on windows, set the executable icon -if (MSVC) - set(SRC ${SRC} "win32/resources.rc") -endif (MSVC) - -add_executable(sdrpp ${SRC} ${IMGUI}) - -if (MSVC) - # Glew - find_package(GLEW REQUIRED) - target_link_libraries(sdrpp PRIVATE GLEW::GLEW) - - # GLFW3 - find_package(glfw3 CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE glfw) - - # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE FFTW3::fftw3) - find_package(FFTW3f CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE FFTW3::fftw3f) - - # PortAudio - find_package(portaudio CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE portaudio portaudio_static) + add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") endif (MSVC) # cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt new file mode 100644 index 00000000..d08495d7 --- /dev/null +++ b/core/CMakeLists.txt @@ -0,0 +1,74 @@ +cmake_minimum_required(VERSION 3.13) +project(sdrpp_core) + +# Set compiler options +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") + # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") +endif (MSVC) + +# Main code +file(GLOB SRC "src/*.cpp") +file(GLOB IMGUI "src/imgui/*.cpp") + +# Add code to dyn lib +add_library(sdrpp_core SHARED ${SRC} ${IMGUI}) + +# Include core headers +target_include_directories(sdrpp_core PUBLIC "src/") +target_include_directories(sdrpp_core PUBLIC "src/imgui") + + +if (MSVC) + # Lib path + target_link_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/lib/") + + # Misc headers + target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") + + # Volk + target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/volk/") + target_link_libraries(sdrpp_core PUBLIC volk) + + # SoapySDR + target_link_libraries(sdrpp_core PUBLIC SoapySDR) + + # Glew + find_package(GLEW REQUIRED) + target_link_libraries(sdrpp_core PUBLIC GLEW::GLEW) + + # GLFW3 + find_package(glfw3 CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC glfw) + + # FFTW3 + find_package(FFTW3 CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3) + find_package(FFTW3f CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3f) + + # PortAudio + find_package(portaudio CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC portaudio portaudio_static) + +else() + target_include_directories(sdrpp_core PUBLIC "/usr/include/volk") + + target_link_libraries(sdrpp_core PUBLIC pthread) + target_link_libraries(sdrpp_core PUBLIC GL) + target_link_libraries(sdrpp_core PUBLIC GLEW) + target_link_libraries(sdrpp_core PUBLIC glfw) + target_link_libraries(sdrpp_core PUBLIC fftw3) + target_link_libraries(sdrpp_core PUBLIC fftw3f) + target_link_libraries(sdrpp_core PUBLIC portaudio) + target_link_libraries(sdrpp_core PUBLIC X11) + target_link_libraries(sdrpp_core PUBLIC Xxf86vm) + target_link_libraries(sdrpp_core PUBLIC dl) +endif (MSVC) + +set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) + +# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/src/audio.cpp b/core/src/audio.cpp similarity index 100% rename from src/audio.cpp rename to core/src/audio.cpp diff --git a/src/audio.h b/core/src/audio.h similarity index 100% rename from src/audio.h rename to core/src/audio.h diff --git a/src/bandplan.cpp b/core/src/bandplan.cpp similarity index 100% rename from src/bandplan.cpp rename to core/src/bandplan.cpp diff --git a/src/bandplan.h b/core/src/bandplan.h similarity index 100% rename from src/bandplan.h rename to core/src/bandplan.h diff --git a/src/config.cpp b/core/src/config.cpp similarity index 100% rename from src/config.cpp rename to core/src/config.cpp diff --git a/src/config.h b/core/src/config.h similarity index 100% rename from src/config.h rename to core/src/config.h diff --git a/core/src/core.cpp b/core/src/core.cpp new file mode 100644 index 00000000..4df80c94 --- /dev/null +++ b/core/src/core.cpp @@ -0,0 +1,250 @@ +#include "imgui.h" +#include "imgui_impl_glfw.h" +#include "imgui_impl_opengl3.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define STB_IMAGE_RESIZE_IMPLEMENTATION +#include + +#ifdef _WIN32 +#include +#endif + +// Comment to build a normal release +#define DEV_BUILD + +bool maximized = false; +bool fullScreen = false; + +static void glfw_error_callback(int error, const char* description) { + spdlog::error("Glfw Error {0}: {1}", error, description); +} + +static void maximized_callback(GLFWwindow* window, int n) { + if (n == GLFW_TRUE) { + maximized = true; + } + else { + maximized = false; + } +} + +// main +int sdrpp_main() { +#ifdef _WIN32 + //FreeConsole(); +#endif + + spdlog::info("SDR++ v" VERSION_STR); + +#ifdef DEV_BUILD + config::setRootDirectory("../root_dev"); +#elif _WIN32 + config::setRootDirectory("."); +#else + config::setRootDirectory("/etc/sdrpp"); +#endif + + // Load config + spdlog::info("Loading config"); + config::load(config::getRootDirectory() + "/config.json"); + config::startAutoSave(); + + // Setup window + glfwSetErrorCallback(glfw_error_callback); + if (!glfwInit()) { + return 1; + } + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac + + int winWidth = config::config["windowSize"]["w"]; + int winHeight = config::config["windowSize"]["h"]; + maximized = config::config["maximized"]; + + // Create window with graphics context + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + GLFWwindow* window = glfwCreateWindow(winWidth, winHeight, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); + if (window == NULL) + return 1; + glfwMakeContextCurrent(window); + glfwSwapInterval(1); // Enable vsync + + if (maximized) { + glfwMaximizeWindow(window); + } + + glfwSetWindowMaximizeCallback(window, maximized_callback); + + // Load app icon + GLFWimage icons[10]; + icons[0].pixels = stbi_load((config::getRootDirectory() + "/res/icons/sdrpp.png").c_str(), &icons[0].width, &icons[0].height, 0, 4); + icons[1].pixels = (unsigned char*)malloc(16 * 16 * 4); icons[1].width = icons[1].height = 16; + icons[2].pixels = (unsigned char*)malloc(24 * 24 * 4); icons[2].width = icons[2].height = 24; + icons[3].pixels = (unsigned char*)malloc(32 * 32 * 4); icons[3].width = icons[3].height = 32; + icons[4].pixels = (unsigned char*)malloc(48 * 48 * 4); icons[4].width = icons[4].height = 48; + icons[5].pixels = (unsigned char*)malloc(64 * 64 * 4); icons[5].width = icons[5].height = 64; + icons[6].pixels = (unsigned char*)malloc(96 * 96 * 4); icons[6].width = icons[6].height = 96; + icons[7].pixels = (unsigned char*)malloc(128 * 128 * 4); icons[7].width = icons[7].height = 128; + icons[8].pixels = (unsigned char*)malloc(196 * 196 * 4); icons[8].width = icons[8].height = 196; + icons[9].pixels = (unsigned char*)malloc(256 * 256 * 4); icons[9].width = icons[9].height = 256; + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[1].pixels, 16, 16, 16 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[2].pixels, 24, 24, 24 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[3].pixels, 32, 32, 32 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[4].pixels, 48, 48, 48 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[5].pixels, 64, 64, 64 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[6].pixels, 96, 96, 96 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[7].pixels, 128, 128, 128 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[8].pixels, 196, 196, 196 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[9].pixels, 256, 256, 256 * 4, 4); + glfwSetWindowIcon(window, 10, icons); + stbi_image_free(icons[0].pixels); + for (int i = 1; i < 10; i++) { + free(icons[i].pixels); + } + + if (glewInit() != GLEW_OK) { + spdlog::error("Failed to initialize OpenGL loader!"); + return 1; + } + + + // Setup Dear ImGui context + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + ImGuiIO& io = ImGui::GetIO(); (void)io; + io.IniFilename = NULL; + + // Setup Platform/Renderer bindings + ImGui_ImplGlfw_InitForOpenGL(window, true); + ImGui_ImplOpenGL3_Init("#version 150"); + + style::setDarkStyle(); + + + // ==================================================== + // glfwPollEvents(); + ImGui_ImplOpenGL3_NewFrame(); + // ImGui_ImplGlfw_NewFrame(); + // ImGui::NewFrame(); + + // ImGui::ShowDemoWindow(); + + // ImGui::Render(); + int display_w, display_h; + glfwGetFramebufferSize(window, &display_w, &display_h); + glViewport(0, 0, display_w, display_h); + glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); + //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + // ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + glfwSwapBuffers(window); + // ==================================================== + + spdlog::info("Loading icons"); + icons::load(); + + spdlog::info("Loading band plans"); + bandplan::loadFromDir(config::getRootDirectory() + "/bandplans"); + + spdlog::info("Loading band plans color table"); + bandplan::loadColorTable(config::getRootDirectory() + "/band_colors.json"); + + windowInit(); + + spdlog::info("Ready."); + + bool _maximized = maximized; + int fsWidth, fsHeight, fsPosX, fsPosY; + + // Main loop + while (!glfwWindowShouldClose(window)) { + glfwPollEvents(); + + // Start the Dear ImGui frame + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); + + if (_maximized != maximized) { + _maximized = maximized; + config::config["maximized"]= _maximized; + config::configModified = true; + if (!maximized) { + glfwSetWindowSize(window, config::config["windowSize"]["w"], config::config["windowSize"]["h"]); + } + } + + int _winWidth, _winHeight; + glfwGetWindowSize(window, &_winWidth, &_winHeight); + + if (ImGui::IsKeyPressed(GLFW_KEY_F11)) { + fullScreen = !fullScreen; + if (fullScreen) { + spdlog::info("Fullscreen: ON"); + fsWidth = _winWidth; + fsHeight = _winHeight; + glfwGetWindowPos(window, &fsPosX, &fsPosY); + const GLFWvidmode * mode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, 0); + } + else { + spdlog::info("Fullscreen: OFF"); + glfwSetWindowMonitor(window, nullptr, fsPosX, fsPosY, fsWidth, fsHeight, 0); + } + } + + if ((_winWidth != winWidth || _winHeight != winHeight) && !maximized && _winWidth > 0 && _winHeight > 0) { + winWidth = _winWidth; + winHeight = _winHeight; + config::config["windowSize"]["w"] = winWidth; + config::config["windowSize"]["h"] = winHeight; + config::configModified = true; + } + + if (winWidth > 0 && winHeight > 0) { + ImGui::SetNextWindowPos(ImVec2(0, 0)); + ImGui::SetNextWindowSize(ImVec2(_winWidth, _winHeight)); + drawWindow(); + } + + // Rendering + ImGui::Render(); + int display_w, display_h; + glfwGetFramebufferSize(window, &display_w, &display_h); + glViewport(0, 0, display_w, display_h); + glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); + //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + glfwSwapBuffers(window); + } + + // Cleanup + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); + + glfwDestroyWindow(window); + glfwTerminate(); + + return 0; +} \ No newline at end of file diff --git a/core/src/core.h b/core/src/core.h new file mode 100644 index 00000000..ce5ea1fd --- /dev/null +++ b/core/src/core.h @@ -0,0 +1,3 @@ +#pragma once + +int sdrpp_main(); \ No newline at end of file diff --git a/src/dsp/block.h b/core/src/dsp/block.h similarity index 100% rename from src/dsp/block.h rename to core/src/dsp/block.h diff --git a/src/dsp/correction.h b/core/src/dsp/correction.h similarity index 100% rename from src/dsp/correction.h rename to core/src/dsp/correction.h diff --git a/src/dsp/demodulator.h b/core/src/dsp/demodulator.h similarity index 100% rename from src/dsp/demodulator.h rename to core/src/dsp/demodulator.h diff --git a/src/dsp/filter.h b/core/src/dsp/filter.h similarity index 100% rename from src/dsp/filter.h rename to core/src/dsp/filter.h diff --git a/src/dsp/math.h b/core/src/dsp/math.h similarity index 100% rename from src/dsp/math.h rename to core/src/dsp/math.h diff --git a/src/dsp/resampling.h b/core/src/dsp/resampling.h similarity index 100% rename from src/dsp/resampling.h rename to core/src/dsp/resampling.h diff --git a/src/dsp/routing.h b/core/src/dsp/routing.h similarity index 100% rename from src/dsp/routing.h rename to core/src/dsp/routing.h diff --git a/src/dsp/sink.h b/core/src/dsp/sink.h similarity index 100% rename from src/dsp/sink.h rename to core/src/dsp/sink.h diff --git a/src/dsp/source.h b/core/src/dsp/source.h similarity index 100% rename from src/dsp/source.h rename to core/src/dsp/source.h diff --git a/src/dsp/stream.h b/core/src/dsp/stream.h similarity index 100% rename from src/dsp/stream.h rename to core/src/dsp/stream.h diff --git a/src/dsp/types.h b/core/src/dsp/types.h similarity index 100% rename from src/dsp/types.h rename to core/src/dsp/types.h diff --git a/src/dsp/vfo.h b/core/src/dsp/vfo.h similarity index 100% rename from src/dsp/vfo.h rename to core/src/dsp/vfo.h diff --git a/src/frequency_select.cpp b/core/src/frequency_select.cpp similarity index 99% rename from src/frequency_select.cpp rename to core/src/frequency_select.cpp index 45c4f576..fe750ff0 100644 --- a/src/frequency_select.cpp +++ b/core/src/frequency_select.cpp @@ -12,6 +12,7 @@ void FrequencySelect::init() { font = ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 42.0f); for (int i = 0; i < 12; i++) { digits[i] = 0; + } } diff --git a/src/frequency_select.h b/core/src/frequency_select.h similarity index 100% rename from src/frequency_select.h rename to core/src/frequency_select.h diff --git a/src/icons.cpp b/core/src/icons.cpp similarity index 100% rename from src/icons.cpp rename to core/src/icons.cpp diff --git a/src/icons.h b/core/src/icons.h similarity index 100% rename from src/icons.h rename to core/src/icons.h diff --git a/src/imgui/imconfig.h b/core/src/imgui/imconfig.h similarity index 100% rename from src/imgui/imconfig.h rename to core/src/imgui/imconfig.h diff --git a/src/imgui/imgui.cpp b/core/src/imgui/imgui.cpp similarity index 100% rename from src/imgui/imgui.cpp rename to core/src/imgui/imgui.cpp diff --git a/src/imgui/imgui.h b/core/src/imgui/imgui.h similarity index 100% rename from src/imgui/imgui.h rename to core/src/imgui/imgui.h diff --git a/src/imgui/imgui_demo.cpp b/core/src/imgui/imgui_demo.cpp similarity index 100% rename from src/imgui/imgui_demo.cpp rename to core/src/imgui/imgui_demo.cpp diff --git a/src/imgui/imgui_draw.cpp b/core/src/imgui/imgui_draw.cpp similarity index 100% rename from src/imgui/imgui_draw.cpp rename to core/src/imgui/imgui_draw.cpp diff --git a/src/imgui/imgui_impl_glfw.cpp b/core/src/imgui/imgui_impl_glfw.cpp similarity index 100% rename from src/imgui/imgui_impl_glfw.cpp rename to core/src/imgui/imgui_impl_glfw.cpp diff --git a/src/imgui/imgui_impl_glfw.h b/core/src/imgui/imgui_impl_glfw.h similarity index 100% rename from src/imgui/imgui_impl_glfw.h rename to core/src/imgui/imgui_impl_glfw.h diff --git a/src/imgui/imgui_impl_opengl3.cpp b/core/src/imgui/imgui_impl_opengl3.cpp similarity index 100% rename from src/imgui/imgui_impl_opengl3.cpp rename to core/src/imgui/imgui_impl_opengl3.cpp diff --git a/src/imgui/imgui_impl_opengl3.h b/core/src/imgui/imgui_impl_opengl3.h similarity index 100% rename from src/imgui/imgui_impl_opengl3.h rename to core/src/imgui/imgui_impl_opengl3.h diff --git a/src/imgui/imgui_internal.h b/core/src/imgui/imgui_internal.h similarity index 100% rename from src/imgui/imgui_internal.h rename to core/src/imgui/imgui_internal.h diff --git a/src/imgui/imgui_plot.cpp b/core/src/imgui/imgui_plot.cpp similarity index 100% rename from src/imgui/imgui_plot.cpp rename to core/src/imgui/imgui_plot.cpp diff --git a/src/imgui/imgui_plot.h b/core/src/imgui/imgui_plot.h similarity index 100% rename from src/imgui/imgui_plot.h rename to core/src/imgui/imgui_plot.h diff --git a/src/imgui/imgui_widgets.cpp b/core/src/imgui/imgui_widgets.cpp similarity index 100% rename from src/imgui/imgui_widgets.cpp rename to core/src/imgui/imgui_widgets.cpp diff --git a/src/imgui/imstb_rectpack.h b/core/src/imgui/imstb_rectpack.h similarity index 100% rename from src/imgui/imstb_rectpack.h rename to core/src/imgui/imstb_rectpack.h diff --git a/src/imgui/imstb_textedit.h b/core/src/imgui/imstb_textedit.h similarity index 100% rename from src/imgui/imstb_textedit.h rename to core/src/imgui/imstb_textedit.h diff --git a/src/imgui/imstb_truetype.h b/core/src/imgui/imstb_truetype.h similarity index 100% rename from src/imgui/imstb_truetype.h rename to core/src/imgui/imstb_truetype.h diff --git a/src/imgui/imutils.h b/core/src/imgui/imutils.h similarity index 100% rename from src/imgui/imutils.h rename to core/src/imgui/imutils.h diff --git a/src/imgui/stb_image.h b/core/src/imgui/stb_image.h similarity index 100% rename from src/imgui/stb_image.h rename to core/src/imgui/stb_image.h diff --git a/src/imgui/stb_image_resize.h b/core/src/imgui/stb_image_resize.h similarity index 100% rename from src/imgui/stb_image_resize.h rename to core/src/imgui/stb_image_resize.h diff --git a/src/io/audio.h b/core/src/io/audio.h similarity index 100% rename from src/io/audio.h rename to core/src/io/audio.h diff --git a/src/io/soapy.h b/core/src/io/soapy.h similarity index 98% rename from src/io/soapy.h rename to core/src/io/soapy.h index ac1311f1..bb0c97ca 100644 --- a/src/io/soapy.h +++ b/core/src/io/soapy.h @@ -10,8 +10,12 @@ namespace io { class SoapyWrapper { public: SoapyWrapper() { + + } + + void init() { SoapySDR::registerLogHandler(_logHandler); - SoapySDR::Device::make(""); + //SoapySDR::Device::make(""); output.init(64000); currentGains = new float[1]; @@ -52,7 +56,6 @@ namespace io { if (running) { return; } - devList = SoapySDR::Device::enumerate(); txtDevList = ""; devNameList.clear(); diff --git a/src/json.hpp b/core/src/json.hpp similarity index 100% rename from src/json.hpp rename to core/src/json.hpp diff --git a/src/main_window.cpp b/core/src/main_window.cpp similarity index 99% rename from src/main_window.cpp rename to core/src/main_window.cpp index 8c9f4504..bd196ffc 100644 --- a/src/main_window.cpp +++ b/core/src/main_window.cpp @@ -155,6 +155,9 @@ void saveAudioConfig(std::string name) { } void windowInit() { + spdlog::info("Initializing SoapySDR"); + soapy.init(); + fSel.init(); fft_in = (fftwf_complex*) fftwf_malloc(sizeof(fftwf_complex) * fftSize); diff --git a/src/main_window.h b/core/src/main_window.h similarity index 100% rename from src/main_window.h rename to core/src/main_window.h diff --git a/src/module.cpp b/core/src/module.cpp similarity index 100% rename from src/module.cpp rename to core/src/module.cpp diff --git a/src/module.h b/core/src/module.h similarity index 100% rename from src/module.h rename to core/src/module.h diff --git a/src/signal_path.cpp b/core/src/signal_path.cpp similarity index 100% rename from src/signal_path.cpp rename to core/src/signal_path.cpp diff --git a/src/signal_path.h b/core/src/signal_path.h similarity index 100% rename from src/signal_path.h rename to core/src/signal_path.h diff --git a/src/spdlog/async.h b/core/src/spdlog/async.h similarity index 100% rename from src/spdlog/async.h rename to core/src/spdlog/async.h diff --git a/src/spdlog/async_logger-inl.h b/core/src/spdlog/async_logger-inl.h similarity index 100% rename from src/spdlog/async_logger-inl.h rename to core/src/spdlog/async_logger-inl.h diff --git a/src/spdlog/async_logger.h b/core/src/spdlog/async_logger.h similarity index 100% rename from src/spdlog/async_logger.h rename to core/src/spdlog/async_logger.h diff --git a/src/spdlog/cfg/argv.h b/core/src/spdlog/cfg/argv.h similarity index 100% rename from src/spdlog/cfg/argv.h rename to core/src/spdlog/cfg/argv.h diff --git a/src/spdlog/cfg/env.h b/core/src/spdlog/cfg/env.h similarity index 100% rename from src/spdlog/cfg/env.h rename to core/src/spdlog/cfg/env.h diff --git a/src/spdlog/cfg/helpers-inl.h b/core/src/spdlog/cfg/helpers-inl.h similarity index 100% rename from src/spdlog/cfg/helpers-inl.h rename to core/src/spdlog/cfg/helpers-inl.h diff --git a/src/spdlog/cfg/helpers.h b/core/src/spdlog/cfg/helpers.h similarity index 100% rename from src/spdlog/cfg/helpers.h rename to core/src/spdlog/cfg/helpers.h diff --git a/src/spdlog/cfg/log_levels.h b/core/src/spdlog/cfg/log_levels.h similarity index 100% rename from src/spdlog/cfg/log_levels.h rename to core/src/spdlog/cfg/log_levels.h diff --git a/src/spdlog/common-inl.h b/core/src/spdlog/common-inl.h similarity index 100% rename from src/spdlog/common-inl.h rename to core/src/spdlog/common-inl.h diff --git a/src/spdlog/common.h b/core/src/spdlog/common.h similarity index 100% rename from src/spdlog/common.h rename to core/src/spdlog/common.h diff --git a/src/spdlog/details/backtracer-inl.h b/core/src/spdlog/details/backtracer-inl.h similarity index 100% rename from src/spdlog/details/backtracer-inl.h rename to core/src/spdlog/details/backtracer-inl.h diff --git a/src/spdlog/details/backtracer.h b/core/src/spdlog/details/backtracer.h similarity index 100% rename from src/spdlog/details/backtracer.h rename to core/src/spdlog/details/backtracer.h diff --git a/src/spdlog/details/circular_q.h b/core/src/spdlog/details/circular_q.h similarity index 100% rename from src/spdlog/details/circular_q.h rename to core/src/spdlog/details/circular_q.h diff --git a/src/spdlog/details/console_globals.h b/core/src/spdlog/details/console_globals.h similarity index 100% rename from src/spdlog/details/console_globals.h rename to core/src/spdlog/details/console_globals.h diff --git a/src/spdlog/details/file_helper-inl.h b/core/src/spdlog/details/file_helper-inl.h similarity index 100% rename from src/spdlog/details/file_helper-inl.h rename to core/src/spdlog/details/file_helper-inl.h diff --git a/src/spdlog/details/file_helper.h b/core/src/spdlog/details/file_helper.h similarity index 100% rename from src/spdlog/details/file_helper.h rename to core/src/spdlog/details/file_helper.h diff --git a/src/spdlog/details/fmt_helper.h b/core/src/spdlog/details/fmt_helper.h similarity index 100% rename from src/spdlog/details/fmt_helper.h rename to core/src/spdlog/details/fmt_helper.h diff --git a/src/spdlog/details/log_msg-inl.h b/core/src/spdlog/details/log_msg-inl.h similarity index 100% rename from src/spdlog/details/log_msg-inl.h rename to core/src/spdlog/details/log_msg-inl.h diff --git a/src/spdlog/details/log_msg.h b/core/src/spdlog/details/log_msg.h similarity index 100% rename from src/spdlog/details/log_msg.h rename to core/src/spdlog/details/log_msg.h diff --git a/src/spdlog/details/log_msg_buffer-inl.h b/core/src/spdlog/details/log_msg_buffer-inl.h similarity index 100% rename from src/spdlog/details/log_msg_buffer-inl.h rename to core/src/spdlog/details/log_msg_buffer-inl.h diff --git a/src/spdlog/details/log_msg_buffer.h b/core/src/spdlog/details/log_msg_buffer.h similarity index 100% rename from src/spdlog/details/log_msg_buffer.h rename to core/src/spdlog/details/log_msg_buffer.h diff --git a/src/spdlog/details/mpmc_blocking_q.h b/core/src/spdlog/details/mpmc_blocking_q.h similarity index 100% rename from src/spdlog/details/mpmc_blocking_q.h rename to core/src/spdlog/details/mpmc_blocking_q.h diff --git a/src/spdlog/details/null_mutex.h b/core/src/spdlog/details/null_mutex.h similarity index 100% rename from src/spdlog/details/null_mutex.h rename to core/src/spdlog/details/null_mutex.h diff --git a/src/spdlog/details/os-inl.h b/core/src/spdlog/details/os-inl.h similarity index 100% rename from src/spdlog/details/os-inl.h rename to core/src/spdlog/details/os-inl.h diff --git a/src/spdlog/details/os.h b/core/src/spdlog/details/os.h similarity index 100% rename from src/spdlog/details/os.h rename to core/src/spdlog/details/os.h diff --git a/src/spdlog/details/periodic_worker-inl.h b/core/src/spdlog/details/periodic_worker-inl.h similarity index 100% rename from src/spdlog/details/periodic_worker-inl.h rename to core/src/spdlog/details/periodic_worker-inl.h diff --git a/src/spdlog/details/periodic_worker.h b/core/src/spdlog/details/periodic_worker.h similarity index 100% rename from src/spdlog/details/periodic_worker.h rename to core/src/spdlog/details/periodic_worker.h diff --git a/src/spdlog/details/registry-inl.h b/core/src/spdlog/details/registry-inl.h similarity index 100% rename from src/spdlog/details/registry-inl.h rename to core/src/spdlog/details/registry-inl.h diff --git a/src/spdlog/details/registry.h b/core/src/spdlog/details/registry.h similarity index 100% rename from src/spdlog/details/registry.h rename to core/src/spdlog/details/registry.h diff --git a/src/spdlog/details/synchronous_factory.h b/core/src/spdlog/details/synchronous_factory.h similarity index 100% rename from src/spdlog/details/synchronous_factory.h rename to core/src/spdlog/details/synchronous_factory.h diff --git a/src/spdlog/details/tcp_client-windows.h b/core/src/spdlog/details/tcp_client-windows.h similarity index 100% rename from src/spdlog/details/tcp_client-windows.h rename to core/src/spdlog/details/tcp_client-windows.h diff --git a/src/spdlog/details/tcp_client.h b/core/src/spdlog/details/tcp_client.h similarity index 100% rename from src/spdlog/details/tcp_client.h rename to core/src/spdlog/details/tcp_client.h diff --git a/src/spdlog/details/thread_pool-inl.h b/core/src/spdlog/details/thread_pool-inl.h similarity index 100% rename from src/spdlog/details/thread_pool-inl.h rename to core/src/spdlog/details/thread_pool-inl.h diff --git a/src/spdlog/details/thread_pool.h b/core/src/spdlog/details/thread_pool.h similarity index 100% rename from src/spdlog/details/thread_pool.h rename to core/src/spdlog/details/thread_pool.h diff --git a/src/spdlog/details/windows_include.h b/core/src/spdlog/details/windows_include.h similarity index 100% rename from src/spdlog/details/windows_include.h rename to core/src/spdlog/details/windows_include.h diff --git a/src/spdlog/fmt/bin_to_hex.h b/core/src/spdlog/fmt/bin_to_hex.h similarity index 100% rename from src/spdlog/fmt/bin_to_hex.h rename to core/src/spdlog/fmt/bin_to_hex.h diff --git a/src/spdlog/fmt/bundled/LICENSE.rst b/core/src/spdlog/fmt/bundled/LICENSE.rst similarity index 100% rename from src/spdlog/fmt/bundled/LICENSE.rst rename to core/src/spdlog/fmt/bundled/LICENSE.rst diff --git a/src/spdlog/fmt/bundled/chrono.h b/core/src/spdlog/fmt/bundled/chrono.h similarity index 100% rename from src/spdlog/fmt/bundled/chrono.h rename to core/src/spdlog/fmt/bundled/chrono.h diff --git a/src/spdlog/fmt/bundled/color.h b/core/src/spdlog/fmt/bundled/color.h similarity index 100% rename from src/spdlog/fmt/bundled/color.h rename to core/src/spdlog/fmt/bundled/color.h diff --git a/src/spdlog/fmt/bundled/compile.h b/core/src/spdlog/fmt/bundled/compile.h similarity index 100% rename from src/spdlog/fmt/bundled/compile.h rename to core/src/spdlog/fmt/bundled/compile.h diff --git a/src/spdlog/fmt/bundled/core.h b/core/src/spdlog/fmt/bundled/core.h similarity index 100% rename from src/spdlog/fmt/bundled/core.h rename to core/src/spdlog/fmt/bundled/core.h diff --git a/src/spdlog/fmt/bundled/format-inl.h b/core/src/spdlog/fmt/bundled/format-inl.h similarity index 100% rename from src/spdlog/fmt/bundled/format-inl.h rename to core/src/spdlog/fmt/bundled/format-inl.h diff --git a/src/spdlog/fmt/bundled/format.h b/core/src/spdlog/fmt/bundled/format.h similarity index 100% rename from src/spdlog/fmt/bundled/format.h rename to core/src/spdlog/fmt/bundled/format.h diff --git a/src/spdlog/fmt/bundled/locale.h b/core/src/spdlog/fmt/bundled/locale.h similarity index 100% rename from src/spdlog/fmt/bundled/locale.h rename to core/src/spdlog/fmt/bundled/locale.h diff --git a/src/spdlog/fmt/bundled/ostream.h b/core/src/spdlog/fmt/bundled/ostream.h similarity index 100% rename from src/spdlog/fmt/bundled/ostream.h rename to core/src/spdlog/fmt/bundled/ostream.h diff --git a/src/spdlog/fmt/bundled/posix.h b/core/src/spdlog/fmt/bundled/posix.h similarity index 100% rename from src/spdlog/fmt/bundled/posix.h rename to core/src/spdlog/fmt/bundled/posix.h diff --git a/src/spdlog/fmt/bundled/printf.h b/core/src/spdlog/fmt/bundled/printf.h similarity index 100% rename from src/spdlog/fmt/bundled/printf.h rename to core/src/spdlog/fmt/bundled/printf.h diff --git a/src/spdlog/fmt/bundled/ranges.h b/core/src/spdlog/fmt/bundled/ranges.h similarity index 100% rename from src/spdlog/fmt/bundled/ranges.h rename to core/src/spdlog/fmt/bundled/ranges.h diff --git a/src/spdlog/fmt/fmt.h b/core/src/spdlog/fmt/fmt.h similarity index 100% rename from src/spdlog/fmt/fmt.h rename to core/src/spdlog/fmt/fmt.h diff --git a/src/spdlog/fmt/ostr.h b/core/src/spdlog/fmt/ostr.h similarity index 100% rename from src/spdlog/fmt/ostr.h rename to core/src/spdlog/fmt/ostr.h diff --git a/src/spdlog/formatter.h b/core/src/spdlog/formatter.h similarity index 100% rename from src/spdlog/formatter.h rename to core/src/spdlog/formatter.h diff --git a/src/spdlog/fwd.h b/core/src/spdlog/fwd.h similarity index 100% rename from src/spdlog/fwd.h rename to core/src/spdlog/fwd.h diff --git a/src/spdlog/logger-inl.h b/core/src/spdlog/logger-inl.h similarity index 100% rename from src/spdlog/logger-inl.h rename to core/src/spdlog/logger-inl.h diff --git a/src/spdlog/logger.h b/core/src/spdlog/logger.h similarity index 100% rename from src/spdlog/logger.h rename to core/src/spdlog/logger.h diff --git a/src/spdlog/pattern_formatter-inl.h b/core/src/spdlog/pattern_formatter-inl.h similarity index 100% rename from src/spdlog/pattern_formatter-inl.h rename to core/src/spdlog/pattern_formatter-inl.h diff --git a/src/spdlog/pattern_formatter.h b/core/src/spdlog/pattern_formatter.h similarity index 100% rename from src/spdlog/pattern_formatter.h rename to core/src/spdlog/pattern_formatter.h diff --git a/src/spdlog/sinks/android_sink.h b/core/src/spdlog/sinks/android_sink.h similarity index 100% rename from src/spdlog/sinks/android_sink.h rename to core/src/spdlog/sinks/android_sink.h diff --git a/src/spdlog/sinks/ansicolor_sink-inl.h b/core/src/spdlog/sinks/ansicolor_sink-inl.h similarity index 100% rename from src/spdlog/sinks/ansicolor_sink-inl.h rename to core/src/spdlog/sinks/ansicolor_sink-inl.h diff --git a/src/spdlog/sinks/ansicolor_sink.h b/core/src/spdlog/sinks/ansicolor_sink.h similarity index 100% rename from src/spdlog/sinks/ansicolor_sink.h rename to core/src/spdlog/sinks/ansicolor_sink.h diff --git a/src/spdlog/sinks/base_sink-inl.h b/core/src/spdlog/sinks/base_sink-inl.h similarity index 100% rename from src/spdlog/sinks/base_sink-inl.h rename to core/src/spdlog/sinks/base_sink-inl.h diff --git a/src/spdlog/sinks/base_sink.h b/core/src/spdlog/sinks/base_sink.h similarity index 100% rename from src/spdlog/sinks/base_sink.h rename to core/src/spdlog/sinks/base_sink.h diff --git a/src/spdlog/sinks/basic_file_sink-inl.h b/core/src/spdlog/sinks/basic_file_sink-inl.h similarity index 100% rename from src/spdlog/sinks/basic_file_sink-inl.h rename to core/src/spdlog/sinks/basic_file_sink-inl.h diff --git a/src/spdlog/sinks/basic_file_sink.h b/core/src/spdlog/sinks/basic_file_sink.h similarity index 100% rename from src/spdlog/sinks/basic_file_sink.h rename to core/src/spdlog/sinks/basic_file_sink.h diff --git a/src/spdlog/sinks/daily_file_sink.h b/core/src/spdlog/sinks/daily_file_sink.h similarity index 100% rename from src/spdlog/sinks/daily_file_sink.h rename to core/src/spdlog/sinks/daily_file_sink.h diff --git a/src/spdlog/sinks/dist_sink.h b/core/src/spdlog/sinks/dist_sink.h similarity index 100% rename from src/spdlog/sinks/dist_sink.h rename to core/src/spdlog/sinks/dist_sink.h diff --git a/src/spdlog/sinks/dup_filter_sink.h b/core/src/spdlog/sinks/dup_filter_sink.h similarity index 100% rename from src/spdlog/sinks/dup_filter_sink.h rename to core/src/spdlog/sinks/dup_filter_sink.h diff --git a/src/spdlog/sinks/msvc_sink.h b/core/src/spdlog/sinks/msvc_sink.h similarity index 100% rename from src/spdlog/sinks/msvc_sink.h rename to core/src/spdlog/sinks/msvc_sink.h diff --git a/src/spdlog/sinks/null_sink.h b/core/src/spdlog/sinks/null_sink.h similarity index 100% rename from src/spdlog/sinks/null_sink.h rename to core/src/spdlog/sinks/null_sink.h diff --git a/src/spdlog/sinks/ostream_sink.h b/core/src/spdlog/sinks/ostream_sink.h similarity index 100% rename from src/spdlog/sinks/ostream_sink.h rename to core/src/spdlog/sinks/ostream_sink.h diff --git a/src/spdlog/sinks/ringbuffer_sink.h b/core/src/spdlog/sinks/ringbuffer_sink.h similarity index 100% rename from src/spdlog/sinks/ringbuffer_sink.h rename to core/src/spdlog/sinks/ringbuffer_sink.h diff --git a/src/spdlog/sinks/rotating_file_sink-inl.h b/core/src/spdlog/sinks/rotating_file_sink-inl.h similarity index 100% rename from src/spdlog/sinks/rotating_file_sink-inl.h rename to core/src/spdlog/sinks/rotating_file_sink-inl.h diff --git a/src/spdlog/sinks/rotating_file_sink.h b/core/src/spdlog/sinks/rotating_file_sink.h similarity index 100% rename from src/spdlog/sinks/rotating_file_sink.h rename to core/src/spdlog/sinks/rotating_file_sink.h diff --git a/src/spdlog/sinks/sink-inl.h b/core/src/spdlog/sinks/sink-inl.h similarity index 100% rename from src/spdlog/sinks/sink-inl.h rename to core/src/spdlog/sinks/sink-inl.h diff --git a/src/spdlog/sinks/sink.h b/core/src/spdlog/sinks/sink.h similarity index 100% rename from src/spdlog/sinks/sink.h rename to core/src/spdlog/sinks/sink.h diff --git a/src/spdlog/sinks/stdout_color_sinks-inl.h b/core/src/spdlog/sinks/stdout_color_sinks-inl.h similarity index 100% rename from src/spdlog/sinks/stdout_color_sinks-inl.h rename to core/src/spdlog/sinks/stdout_color_sinks-inl.h diff --git a/src/spdlog/sinks/stdout_color_sinks.h b/core/src/spdlog/sinks/stdout_color_sinks.h similarity index 100% rename from src/spdlog/sinks/stdout_color_sinks.h rename to core/src/spdlog/sinks/stdout_color_sinks.h diff --git a/src/spdlog/sinks/stdout_sinks-inl.h b/core/src/spdlog/sinks/stdout_sinks-inl.h similarity index 100% rename from src/spdlog/sinks/stdout_sinks-inl.h rename to core/src/spdlog/sinks/stdout_sinks-inl.h diff --git a/src/spdlog/sinks/stdout_sinks.h b/core/src/spdlog/sinks/stdout_sinks.h similarity index 100% rename from src/spdlog/sinks/stdout_sinks.h rename to core/src/spdlog/sinks/stdout_sinks.h diff --git a/src/spdlog/sinks/syslog_sink.h b/core/src/spdlog/sinks/syslog_sink.h similarity index 100% rename from src/spdlog/sinks/syslog_sink.h rename to core/src/spdlog/sinks/syslog_sink.h diff --git a/src/spdlog/sinks/systemd_sink.h b/core/src/spdlog/sinks/systemd_sink.h similarity index 100% rename from src/spdlog/sinks/systemd_sink.h rename to core/src/spdlog/sinks/systemd_sink.h diff --git a/src/spdlog/sinks/tcp_sink.h b/core/src/spdlog/sinks/tcp_sink.h similarity index 100% rename from src/spdlog/sinks/tcp_sink.h rename to core/src/spdlog/sinks/tcp_sink.h diff --git a/src/spdlog/sinks/win_eventlog_sink.h b/core/src/spdlog/sinks/win_eventlog_sink.h similarity index 100% rename from src/spdlog/sinks/win_eventlog_sink.h rename to core/src/spdlog/sinks/win_eventlog_sink.h diff --git a/src/spdlog/sinks/wincolor_sink-inl.h b/core/src/spdlog/sinks/wincolor_sink-inl.h similarity index 100% rename from src/spdlog/sinks/wincolor_sink-inl.h rename to core/src/spdlog/sinks/wincolor_sink-inl.h diff --git a/src/spdlog/sinks/wincolor_sink.h b/core/src/spdlog/sinks/wincolor_sink.h similarity index 100% rename from src/spdlog/sinks/wincolor_sink.h rename to core/src/spdlog/sinks/wincolor_sink.h diff --git a/src/spdlog/spdlog-inl.h b/core/src/spdlog/spdlog-inl.h similarity index 100% rename from src/spdlog/spdlog-inl.h rename to core/src/spdlog/spdlog-inl.h diff --git a/src/spdlog/spdlog.h b/core/src/spdlog/spdlog.h similarity index 100% rename from src/spdlog/spdlog.h rename to core/src/spdlog/spdlog.h diff --git a/src/spdlog/tweakme.h b/core/src/spdlog/tweakme.h similarity index 100% rename from src/spdlog/tweakme.h rename to core/src/spdlog/tweakme.h diff --git a/src/spdlog/version.h b/core/src/spdlog/version.h similarity index 100% rename from src/spdlog/version.h rename to core/src/spdlog/version.h diff --git a/src/style.cpp b/core/src/style.cpp similarity index 98% rename from src/style.cpp rename to core/src/style.cpp index a8ff6996..9f2a5b15 100644 --- a/src/style.cpp +++ b/core/src/style.cpp @@ -15,6 +15,10 @@ namespace style { //ImGui::StyleColorsLight(); } + void testtt() { + ImGui::StyleColorsLight(); + } + void setDarkStyle() { ImGui::GetStyle().WindowRounding = 0.0f; ImGui::GetStyle().ChildRounding = 0.0f; diff --git a/src/style.h b/core/src/style.h similarity index 90% rename from src/style.h rename to core/src/style.h index 527bde14..e588539f 100644 --- a/src/style.h +++ b/core/src/style.h @@ -8,4 +8,5 @@ namespace style { void setDarkStyle(); void beginDisabled(); void endDisabled(); + void testtt(); } \ No newline at end of file diff --git a/src/version.h b/core/src/version.h similarity index 100% rename from src/version.h rename to core/src/version.h diff --git a/src/vfo_manager.cpp b/core/src/vfo_manager.cpp similarity index 100% rename from src/vfo_manager.cpp rename to core/src/vfo_manager.cpp diff --git a/src/vfo_manager.h b/core/src/vfo_manager.h similarity index 100% rename from src/vfo_manager.h rename to core/src/vfo_manager.h diff --git a/src/watcher.h b/core/src/watcher.h similarity index 100% rename from src/watcher.h rename to core/src/watcher.h diff --git a/src/waterfall.cpp b/core/src/waterfall.cpp similarity index 100% rename from src/waterfall.cpp rename to core/src/waterfall.cpp diff --git a/src/waterfall.h b/core/src/waterfall.h similarity index 100% rename from src/waterfall.h rename to core/src/waterfall.h diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt new file mode 100644 index 00000000..9fe9176a --- /dev/null +++ b/demo/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.13) +project(demo) + +file(GLOB SRC "src/*.cpp") + +add_library(demo SHARED ${SRC}) +target_link_libraries(demo PRIVATE sdrpp_core) \ No newline at end of file diff --git a/demo/src/main.cpp b/demo/src/main.cpp new file mode 100644 index 00000000..8abd3cf3 --- /dev/null +++ b/demo/src/main.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + + +struct DemoContext_t { + std::string name; +}; + +MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { + DemoContext_t* ctx = new DemoContext_t; + ctx->name = _name; + return ctx; +} + +MOD_EXPORT void _NEW_FRAME_(DemoContext_t* ctx) { + +} + +MOD_EXPORT void _DRAW_MENU_(DemoContext_t* ctx) { + ImGui::Text(ctx->name.c_str()); +} + +MOD_EXPORT void _HANDLE_EVENT_(DemoContext_t* ctx, int eventId) { + +} + +MOD_EXPORT void _STOP_(DemoContext_t* ctx) { + +} \ No newline at end of file diff --git a/modules/demo/CMakeLists.txt b/modules/demo/CMakeLists.txt deleted file mode 100644 index 25e29d07..00000000 --- a/modules/demo/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -cmake_minimum_required(VERSION 3.9) -project(demo) - -if (MSVC) - set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - link_directories(demo "C:/Program Files/PothosSDR/lib/") - include_directories(demo "C:/Program Files/PothosSDR/include/volk/") - include_directories(demo "C:/Program Files/PothosSDR/include/") -else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") - include_directories(demo "/usr/include/volk") - link_libraries(pthread) - link_libraries(GL) - link_libraries(GLEW) - link_libraries(glfw) - link_libraries(fftw3) - link_libraries(fftw3f) - link_libraries(portaudio) - link_libraries(X11) - link_libraries(Xxf86vm) -endif (MSVC) - -link_libraries(volk) -link_libraries(SoapySDR) - -# Main code -include_directories(demo "src/") -include_directories(demo "../../src/") -include_directories(demo "../../src/imgui") -file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../../src/imgui/*.cpp") -add_library(demo SHARED ${SRC} ${IMGUI}) -set_target_properties(demo PROPERTIES PREFIX "") - -if (MSVC) - # Glew - find_package(GLEW REQUIRED) - target_link_libraries(demo PRIVATE GLEW::GLEW) - - # GLFW3 - find_package(glfw3 CONFIG REQUIRED) - target_link_libraries(demo PRIVATE glfw) - - # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(demo PRIVATE FFTW3::fftw3) - find_package(FFTW3f CONFIG REQUIRED) - target_link_libraries(demo PRIVATE FFTW3::fftw3f) - - # PortAudio - find_package(portaudio CONFIG REQUIRED) - target_link_libraries(demo PRIVATE portaudio portaudio_static) -endif (MSVC) - -# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/modules/demo/src/main.cpp b/modules/demo/src/main.cpp deleted file mode 100644 index d22f6377..00000000 --- a/modules/demo/src/main.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -mod::API_t* API; - -struct ExampleContext_t { - std::string name; -}; - -MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { - API = _API; - ExampleContext_t* ctx = new ExampleContext_t; - ctx->name = _name; - ImGui::SetCurrentContext(imctx); - return ctx; -} - -MOD_EXPORT void _NEW_FRAME_(ExampleContext_t* ctx) { - -} - -MOD_EXPORT void _DRAW_MENU_(ExampleContext_t* ctx) { - ImGui::Text("Demo!"); -} - -MOD_EXPORT void _HANDLE_EVENT_(ExampleContext_t* ctx, int eventId) { - -} - -MOD_EXPORT void _STOP_(ExampleContext_t* ctx) { - -} \ No newline at end of file diff --git a/modules/radio/CMakeLists.txt b/radio/CMakeLists.txt similarity index 86% rename from modules/radio/CMakeLists.txt rename to radio/CMakeLists.txt index fb00414f..2ac85c54 100644 --- a/modules/radio/CMakeLists.txt +++ b/radio/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required(VERSION 3.13) project(radio) if (MSVC) @@ -25,10 +25,10 @@ link_libraries(SoapySDR) # Main code include_directories(radio "src/") -include_directories(radio "../../src/") -include_directories(radio "../../src/imgui") +include_directories(radio "../core/src/") +include_directories(radio "../core/src/imgui") file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../../src/imgui/*.cpp") +file(GLOB IMGUI "../core/src/imgui/*.cpp") add_library(radio SHARED ${SRC} ${IMGUI}) set_target_properties(radio PROPERTIES PREFIX "") diff --git a/modules/radio/src/main.cpp b/radio/src/main.cpp similarity index 100% rename from modules/radio/src/main.cpp rename to radio/src/main.cpp diff --git a/modules/radio/src/path.cpp b/radio/src/path.cpp similarity index 100% rename from modules/radio/src/path.cpp rename to radio/src/path.cpp diff --git a/modules/radio/src/path.h b/radio/src/path.h similarity index 100% rename from modules/radio/src/path.h rename to radio/src/path.h diff --git a/modules/recorder/CMakeLists.txt b/recorder/CMakeLists.txt similarity index 86% rename from modules/recorder/CMakeLists.txt rename to recorder/CMakeLists.txt index 32791d6e..f5a297fc 100644 --- a/modules/recorder/CMakeLists.txt +++ b/recorder/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required(VERSION 3.13) project(recorder) if (MSVC) @@ -25,10 +25,10 @@ link_libraries(SoapySDR) # Main code include_directories(recorder "src/") -include_directories(recorder "../../src/") -include_directories(recorder "../../src/imgui") +include_directories(recorder "../core/src/") +include_directories(recorder "../core/src/imgui") file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../../src/imgui/*.cpp") +file(GLOB IMGUI "../core/src/imgui/*.cpp") add_library(recorder SHARED ${SRC} ${IMGUI}) set_target_properties(recorder PROPERTIES PREFIX "") diff --git a/modules/recorder/src/main.cpp b/recorder/src/main.cpp similarity index 100% rename from modules/recorder/src/main.cpp rename to recorder/src/main.cpp diff --git a/modules/recorder/src/wav.h b/recorder/src/wav.h similarity index 100% rename from modules/recorder/src/wav.h rename to recorder/src/wav.h diff --git a/root_dev/config.json b/root_dev/config.json index 142d286e..14d71bf2 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -9,7 +9,7 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 100100000, + "frequency": 99000000, "max": 0.0, "maximized": false, "menuWidth": 300, @@ -27,7 +27,7 @@ } }, "windowSize": { - "h": 725, + "h": 726, "w": 1280 } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 63dd7fa4..319321f3 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,4 +1,6 @@ { - "Radio": "../build/modules/radio/Release/radio.dll", - "Recorder": "../build/modules/recorder/Release/recorder.dll" + "Radio": "../build/radio/Release/radio.dll", + "Recorder": "../build/recorder/Release/recorder.dll", + "Demo": "../build/demo/Release/demo.dll", + "Demo 2": "../build/demo/Release/demo.dll" } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 765f4283..023f73bc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,252 +1,6 @@ -#include "imgui.h" -#include "imgui_impl_glfw.h" -#include "imgui_impl_opengl3.h" +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define STB_IMAGE_RESIZE_IMPLEMENTATION -#include - -#ifdef _WIN32 -#include -#endif - -// Comment to build a normal release -#define DEV_BUILD - -bool maximized = false; -bool fullScreen = false; - -static void glfw_error_callback(int error, const char* description) { - spdlog::error("Glfw Error {0}: {1}", error, description); -} - -static void maximized_callback(GLFWwindow* window, int n) { - if (n == GLFW_TRUE) { - maximized = true; - } - else { - maximized = false; - } -} - -// main int main() { -#ifdef _WIN32 - //FreeConsole(); -#endif - - spdlog::info("SDR++ v" VERSION_STR); - -#ifdef DEV_BUILD - config::setRootDirectory("../root_dev"); -#elif _WIN32 - config::setRootDirectory("."); -#else - config::setRootDirectory("/etc/sdrpp"); -#endif - - // Load config - spdlog::info("Loading config"); - config::load(config::getRootDirectory() + "/config.json"); - config::startAutoSave(); - - // Setup window - glfwSetErrorCallback(glfw_error_callback); - if (!glfwInit()) { - return 1; - } - - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only - glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac - - int winWidth = config::config["windowSize"]["w"]; - int winHeight = config::config["windowSize"]["h"]; - maximized = config::config["maximized"]; - - // Create window with graphics context - GLFWmonitor* monitor = glfwGetPrimaryMonitor(); - GLFWwindow* window = glfwCreateWindow(winWidth, winHeight, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); - if (window == NULL) - return 1; - glfwMakeContextCurrent(window); - glfwSwapInterval(1); // Enable vsync - - if (maximized) { - glfwMaximizeWindow(window); - } - - glfwSetWindowMaximizeCallback(window, maximized_callback); - - // Load app icon - GLFWimage icons[10]; - icons[0].pixels = stbi_load((config::getRootDirectory() + "/res/icons/sdrpp.png").c_str(), &icons[0].width, &icons[0].height, 0, 4); - icons[1].pixels = (unsigned char*)malloc(16 * 16 * 4); icons[1].width = icons[1].height = 16; - icons[2].pixels = (unsigned char*)malloc(24 * 24 * 4); icons[2].width = icons[2].height = 24; - icons[3].pixels = (unsigned char*)malloc(32 * 32 * 4); icons[3].width = icons[3].height = 32; - icons[4].pixels = (unsigned char*)malloc(48 * 48 * 4); icons[4].width = icons[4].height = 48; - icons[5].pixels = (unsigned char*)malloc(64 * 64 * 4); icons[5].width = icons[5].height = 64; - icons[6].pixels = (unsigned char*)malloc(96 * 96 * 4); icons[6].width = icons[6].height = 96; - icons[7].pixels = (unsigned char*)malloc(128 * 128 * 4); icons[7].width = icons[7].height = 128; - icons[8].pixels = (unsigned char*)malloc(196 * 196 * 4); icons[8].width = icons[8].height = 196; - icons[9].pixels = (unsigned char*)malloc(256 * 256 * 4); icons[9].width = icons[9].height = 256; - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[1].pixels, 16, 16, 16 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[2].pixels, 24, 24, 24 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[3].pixels, 32, 32, 32 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[4].pixels, 48, 48, 48 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[5].pixels, 64, 64, 64 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[6].pixels, 96, 96, 96 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[7].pixels, 128, 128, 128 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[8].pixels, 196, 196, 196 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[9].pixels, 256, 256, 256 * 4, 4); - glfwSetWindowIcon(window, 10, icons); - stbi_image_free(icons[0].pixels); - for (int i = 1; i < 10; i++) { - free(icons[i].pixels); - } - - if (glewInit() != GLEW_OK) { - spdlog::error("Failed to initialize OpenGL loader!"); - return 1; - } - - - // Setup Dear ImGui context - IMGUI_CHECKVERSION(); - ImGui::CreateContext(); - ImGuiIO& io = ImGui::GetIO(); (void)io; - io.IniFilename = NULL; - - // Setup Platform/Renderer bindings - ImGui_ImplGlfw_InitForOpenGL(window, true); - ImGui_ImplOpenGL3_Init("#version 150"); - - style::setDarkStyle(); - - - // ==================================================== - // glfwPollEvents(); - // ImGui_ImplOpenGL3_NewFrame(); - // ImGui_ImplGlfw_NewFrame(); - // ImGui::NewFrame(); - - // ImGui::ShowDemoWindow(); - - // ImGui::Render(); - // int display_w, display_h; - // glfwGetFramebufferSize(window, &display_w, &display_h); - // glViewport(0, 0, display_w, display_h); - // glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); - // //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); - // glClear(GL_COLOR_BUFFER_BIT); - // ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); - - // glfwSwapBuffers(window); - // ==================================================== - - spdlog::info("Loading icons"); - icons::load(); - - spdlog::info("Loading band plans"); - bandplan::loadFromDir(config::getRootDirectory() + "/bandplans"); - - spdlog::info("Loading band plans color table"); - bandplan::loadColorTable(config::getRootDirectory() + "/band_colors.json"); - - windowInit(); - - spdlog::info("Ready."); - - bool _maximized = maximized; - int fsWidth, fsHeight, fsPosX, fsPosY; - - // Main loop - while (!glfwWindowShouldClose(window)) { - glfwPollEvents(); - - // Start the Dear ImGui frame - ImGui_ImplOpenGL3_NewFrame(); - ImGui_ImplGlfw_NewFrame(); - ImGui::NewFrame(); - - if (_maximized != maximized) { - _maximized = maximized; - config::config["maximized"]= _maximized; - config::configModified = true; - if (!maximized) { - glfwSetWindowSize(window, config::config["windowSize"]["w"], config::config["windowSize"]["h"]); - } - } - - - - int _winWidth, _winHeight; - glfwGetWindowSize(window, &_winWidth, &_winHeight); - - if (ImGui::IsKeyPressed(GLFW_KEY_F11)) { - fullScreen = !fullScreen; - if (fullScreen) { - spdlog::info("Fullscreen: ON"); - fsWidth = _winWidth; - fsHeight = _winHeight; - glfwGetWindowPos(window, &fsPosX, &fsPosY); - const GLFWvidmode * mode = glfwGetVideoMode(glfwGetPrimaryMonitor()); - glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, 0); - } - else { - spdlog::info("Fullscreen: OFF"); - glfwSetWindowMonitor(window, nullptr, fsPosX, fsPosY, fsWidth, fsHeight, 0); - } - } - - if ((_winWidth != winWidth || _winHeight != winHeight) && !maximized && _winWidth > 0 && _winHeight > 0) { - winWidth = _winWidth; - winHeight = _winHeight; - config::config["windowSize"]["w"] = winWidth; - config::config["windowSize"]["h"] = winHeight; - config::configModified = true; - } - - if (winWidth > 0 && winHeight > 0) { - ImGui::SetNextWindowPos(ImVec2(0, 0)); - ImGui::SetNextWindowSize(ImVec2(_winWidth, _winHeight)); - drawWindow(); - } - - // Rendering - ImGui::Render(); - int display_w, display_h; - glfwGetFramebufferSize(window, &display_w, &display_h); - glViewport(0, 0, display_w, display_h); - glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); - //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); - - glfwSwapBuffers(window); - } - - // Cleanup - ImGui_ImplOpenGL3_Shutdown(); - ImGui_ImplGlfw_Shutdown(); - ImGui::DestroyContext(); - - glfwDestroyWindow(window); - glfwTerminate(); - - return 0; + return sdrpp_main(); } \ No newline at end of file