From 1a9b6d17636980babbc29b4706e9eff166948867 Mon Sep 17 00:00:00 2001 From: Jon Beniston <jon@beniston.com> Date: Tue, 27 Oct 2020 16:22:10 +0000 Subject: [PATCH] Add ADS-B Demodulator plugin. Add GS232 Rotator Controller feature plugin. Add altitude and station name to My Positon. Use QtDeploy to ensure all required Qt libraries are included (Should fix OpenGL issues) --- CMakeLists.txt | 13 +- cmake/Modules/DeployQt.cmake | 49 + cmake/cpack/CMakeLists.txt | 44 +- doc/img/ADSBDemod_plugin.png | Bin 0 -> 15469 bytes doc/img/ADSBDemod_plugin.xcf | Bin 0 -> 58734 bytes doc/img/ADSBDemod_plugin_map.png | Bin 0 -> 478712 bytes doc/img/ADSBDemod_plugin_table.png | Bin 0 -> 23970 bytes doc/img/GS232Controller_plugin.png | Bin 0 -> 17462 bytes doc/img/GS232Controller_plugin.xcf | Bin 0 -> 60536 bytes plugins/channelrx/CMakeLists.txt | 3 + plugins/channelrx/demodadsb/CMakeLists.txt | 70 ++ plugins/channelrx/demodadsb/adsb.h | 29 + plugins/channelrx/demodadsb/adsbdemod.cpp | 468 ++++++++ plugins/channelrx/demodadsb/adsbdemod.h | 155 +++ .../channelrx/demodadsb/adsbdemodbaseband.cpp | 157 +++ .../channelrx/demodadsb/adsbdemodbaseband.h | 87 ++ plugins/channelrx/demodadsb/adsbdemodgui.cpp | 1024 +++++++++++++++++ plugins/channelrx/demodadsb/adsbdemodgui.h | 272 +++++ plugins/channelrx/demodadsb/adsbdemodgui.ui | 667 +++++++++++ .../channelrx/demodadsb/adsbdemodreport.cpp | 21 + plugins/channelrx/demodadsb/adsbdemodreport.h | 65 ++ .../channelrx/demodadsb/adsbdemodsettings.cpp | 142 +++ .../channelrx/demodadsb/adsbdemodsettings.h | 58 + plugins/channelrx/demodadsb/adsbdemodsink.cpp | 278 +++++ plugins/channelrx/demodadsb/adsbdemodsink.h | 106 ++ .../demodadsb/adsbdemodwebapiadapter.cpp | 51 + .../demodadsb/adsbdemodwebapiadapter.h | 50 + .../channelrx/demodadsb/adsbdemodworker.cpp | 197 ++++ plugins/channelrx/demodadsb/adsbdemodworker.h | 87 ++ plugins/channelrx/demodadsb/adsbplugin.cpp | 92 ++ plugins/channelrx/demodadsb/adsbplugin.h | 49 + plugins/channelrx/demodadsb/readme.md | 86 ++ plugins/feature/CMakeLists.txt | 3 + .../feature/gs232controller/CMakeLists.txt | 64 ++ .../gs232controller/gs232controller.cpp | 425 +++++++ .../feature/gs232controller/gs232controller.h | 140 +++ .../gs232controller/gs232controllergui.cpp | 447 +++++++ .../gs232controller/gs232controllergui.h | 90 ++ .../gs232controller/gs232controllergui.ui | 397 +++++++ .../gs232controller/gs232controllerplugin.cpp | 80 ++ .../gs232controller/gs232controllerplugin.h | 49 + .../gs232controller/gs232controllerreport.h | 64 ++ .../gs232controllersettings.cpp | 121 ++ .../gs232controller/gs232controllersettings.h | 71 ++ .../gs232controllerwebapiadapter.cpp | 51 + .../gs232controllerwebapiadapter.h | 50 + .../gs232controller/gs232controllerworker.cpp | 248 ++++ .../gs232controller/gs232controllerworker.h | 94 ++ plugins/feature/gs232controller/readme.md | 52 + sdrbase/CMakeLists.txt | 2 + sdrbase/resources/webapi/doc/html2/index.html | 144 ++- sdrbase/settings/mainsettings.h | 6 +- sdrbase/settings/preferences.cpp | 14 +- sdrbase/settings/preferences.h | 10 +- sdrbase/util/azel.cpp | 151 +++ sdrbase/util/azel.h | 133 +++ sdrbase/util/crc.h | 7 + sdrbase/webapi/webapirequestmapper.cpp | 23 +- sdrgui/gui/myposdialog.ui | 52 +- sdrgui/gui/mypositiondialog.cpp | 4 + sdrgui/resources/MapStation.qml | 38 + sdrgui/resources/aircraft_2engine.png | Bin 0 -> 782 bytes sdrgui/resources/aircraft_2enginesmall.png | Bin 0 -> 657 bytes sdrgui/resources/aircraft_4engine.png | Bin 0 -> 772 bytes sdrgui/resources/aircraft_drone.png | Bin 0 -> 1362 bytes sdrgui/resources/aircraft_fighter.png | Bin 0 -> 647 bytes sdrgui/resources/aircraft_helicopter.png | Bin 0 -> 779 bytes sdrgui/resources/aircraft_light.png | Bin 0 -> 541 bytes sdrgui/resources/aircraft_space.png | Bin 0 -> 735 bytes sdrgui/resources/map.qml | 85 ++ sdrgui/resources/map_antenna.png | Bin 0 -> 1328 bytes sdrgui/resources/map_truck.png | Bin 0 -> 619 bytes sdrgui/resources/res.qrc | 11 + .../api/swagger/include/ADSBDemod.yaml | 58 + .../api/swagger/include/ChannelReport.yaml | 2 + .../api/swagger/include/ChannelSettings.yaml | 2 + .../api/swagger/include/FeatureSettings.yaml | 2 + .../api/swagger/include/GS232Controller.yaml | 36 + swagger/sdrangel/code/html2/index.html | 144 ++- .../code/qt5/client/SWGADSBDemodReport.cpp | 177 +++ .../code/qt5/client/SWGADSBDemodReport.h | 76 ++ .../code/qt5/client/SWGADSBDemodSettings.cpp | 459 ++++++++ .../code/qt5/client/SWGADSBDemodSettings.h | 149 +++ .../code/qt5/client/SWGChannelReport.cpp | 25 + .../code/qt5/client/SWGChannelReport.h | 7 + .../code/qt5/client/SWGChannelSettings.cpp | 25 + .../code/qt5/client/SWGChannelSettings.h | 7 + .../code/qt5/client/SWGFeatureSettings.cpp | 25 + .../code/qt5/client/SWGFeatureSettings.h | 7 + .../qt5/client/SWGGS232ControllerSettings.cpp | 413 +++++++ .../qt5/client/SWGGS232ControllerSettings.h | 137 +++ .../code/qt5/client/SWGModelFactory.h | 12 + 92 files changed, 9158 insertions(+), 51 deletions(-) create mode 100644 cmake/Modules/DeployQt.cmake create mode 100644 doc/img/ADSBDemod_plugin.png create mode 100644 doc/img/ADSBDemod_plugin.xcf create mode 100644 doc/img/ADSBDemod_plugin_map.png create mode 100644 doc/img/ADSBDemod_plugin_table.png create mode 100644 doc/img/GS232Controller_plugin.png create mode 100644 doc/img/GS232Controller_plugin.xcf create mode 100644 plugins/channelrx/demodadsb/CMakeLists.txt create mode 100644 plugins/channelrx/demodadsb/adsb.h create mode 100644 plugins/channelrx/demodadsb/adsbdemod.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemod.h create mode 100644 plugins/channelrx/demodadsb/adsbdemodbaseband.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemodbaseband.h create mode 100644 plugins/channelrx/demodadsb/adsbdemodgui.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemodgui.h create mode 100644 plugins/channelrx/demodadsb/adsbdemodgui.ui create mode 100644 plugins/channelrx/demodadsb/adsbdemodreport.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemodreport.h create mode 100644 plugins/channelrx/demodadsb/adsbdemodsettings.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemodsettings.h create mode 100644 plugins/channelrx/demodadsb/adsbdemodsink.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemodsink.h create mode 100644 plugins/channelrx/demodadsb/adsbdemodwebapiadapter.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemodwebapiadapter.h create mode 100644 plugins/channelrx/demodadsb/adsbdemodworker.cpp create mode 100644 plugins/channelrx/demodadsb/adsbdemodworker.h create mode 100644 plugins/channelrx/demodadsb/adsbplugin.cpp create mode 100644 plugins/channelrx/demodadsb/adsbplugin.h create mode 100644 plugins/channelrx/demodadsb/readme.md create mode 100644 plugins/feature/gs232controller/CMakeLists.txt create mode 100644 plugins/feature/gs232controller/gs232controller.cpp create mode 100644 plugins/feature/gs232controller/gs232controller.h create mode 100644 plugins/feature/gs232controller/gs232controllergui.cpp create mode 100644 plugins/feature/gs232controller/gs232controllergui.h create mode 100644 plugins/feature/gs232controller/gs232controllergui.ui create mode 100644 plugins/feature/gs232controller/gs232controllerplugin.cpp create mode 100644 plugins/feature/gs232controller/gs232controllerplugin.h create mode 100644 plugins/feature/gs232controller/gs232controllerreport.h create mode 100644 plugins/feature/gs232controller/gs232controllersettings.cpp create mode 100644 plugins/feature/gs232controller/gs232controllersettings.h create mode 100644 plugins/feature/gs232controller/gs232controllerwebapiadapter.cpp create mode 100644 plugins/feature/gs232controller/gs232controllerwebapiadapter.h create mode 100644 plugins/feature/gs232controller/gs232controllerworker.cpp create mode 100644 plugins/feature/gs232controller/gs232controllerworker.h create mode 100644 plugins/feature/gs232controller/readme.md create mode 100644 sdrbase/util/azel.cpp create mode 100644 sdrbase/util/azel.h create mode 100644 sdrgui/resources/MapStation.qml create mode 100644 sdrgui/resources/aircraft_2engine.png create mode 100644 sdrgui/resources/aircraft_2enginesmall.png create mode 100644 sdrgui/resources/aircraft_4engine.png create mode 100644 sdrgui/resources/aircraft_drone.png create mode 100644 sdrgui/resources/aircraft_fighter.png create mode 100644 sdrgui/resources/aircraft_helicopter.png create mode 100644 sdrgui/resources/aircraft_light.png create mode 100644 sdrgui/resources/aircraft_space.png create mode 100644 sdrgui/resources/map.qml create mode 100644 sdrgui/resources/map_antenna.png create mode 100644 sdrgui/resources/map_truck.png create mode 100644 swagger/sdrangel/api/swagger/include/ADSBDemod.yaml create mode 100644 swagger/sdrangel/api/swagger/include/GS232Controller.yaml create mode 100644 swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.cpp create mode 100644 swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.h create mode 100644 swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp create mode 100644 swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h create mode 100644 swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp create mode 100644 swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 7642e3a40..ce5e14658 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -238,6 +238,9 @@ elseif (WIN32) set(UHD_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/uhd/lib/uhd.lib" CACHE INTERNAL "") set(UHD_DLL_DIR "${EXTERNAL_LIBRARY_FOLDER}/uhd/bin" CACHE INTERNAL "") + set(OPENSSL_FOUND ON CACHE INTERNAL "") + set(OPENSSL_DLL_DIR "${EXTERNAL_LIBRARY_FOLDER}/openssl" CACHE INTERNAL "") + # ffmpeg set(FFMPEG_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "") set(FFMPEG_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/bin" CACHE INTERNAL "") @@ -331,11 +334,15 @@ find_package(Qt5 COMPONENTS Widgets REQUIRED) find_package(Qt5 COMPONENTS WebSockets REQUIRED) find_package(Qt5 COMPONENTS Multimedia REQUIRED) find_package(Qt5 COMPONENTS MultimediaWidgets REQUIRED) +find_package(Qt5 COMPONENTS SerialPort) -# for the server we don't need OpenGL components +# for the server we don't need OpenGL/Qt Quick components if (BUILD_GUI) find_package(OpenGL REQUIRED) find_package(Qt5 COMPONENTS OpenGL REQUIRED) + find_package(Qt5 COMPONENTS Quick) + find_package(Qt5 COMPONENTS QuickWidgets) + find_package(Qt5 COMPONENTS Positioning) endif() # other requirements @@ -589,6 +596,10 @@ endif() if (LINUX AND ENABLE_EXTERNAL_LIBRARIES) install(DIRECTORY ${EXTERNAL_BUILD_LIBRARIES}/lib/ DESTINATION ${INSTALL_LIB_DIR}) endif() +if(WIN32) + include(DeployQt) + windeployqt(${CMAKE_PROJECT_NAME} ${SDRANGEL_BINARY_BIN_DIR} ${PROJECT_SOURCE_DIR}/sdrgui/resources) +endif() # install documentation # TODO maybe install readme for every plugins diff --git a/cmake/Modules/DeployQt.cmake b/cmake/Modules/DeployQt.cmake new file mode 100644 index 000000000..d8a1d2d79 --- /dev/null +++ b/cmake/Modules/DeployQt.cmake @@ -0,0 +1,49 @@ +find_package(Qt5Core REQUIRED) + +get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION) +get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) + +find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}") +if(WIN32 AND NOT WINDEPLOYQT_EXECUTABLE) + message(FATAL_ERROR "windeployqt not found") +endif() + +# Add commands that copy the required Qt files to ${bindir} as well as including +# them in final installation (by first copying them to a winqt subdir) +# We need to specify ${bindir} as we run this on plugins as well as the main .exe +# Preferably, it would be nicer to skip the extra copy to winqt subdir, but how? +# Also, we should possibly only call install once, after all deployments are made +function(windeployqt target bindir qmldir) + + # Run windeployqt after build + # First deploy in to bin directory, so we can run from the build bin directory + add_custom_command(TARGET ${target} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E + env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}" + --verbose 1 + --no-compiler-runtime + --dir "${bindir}" + --qmldir "${qmldir}" + --multimedia + \"$<TARGET_FILE:${target}>\" + COMMENT "Deploying Qt..." + ) + + # Then, deploy again in to separate directory for install to pick up + add_custom_command(TARGET ${target} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E + env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}" + --verbose 1 + --no-compiler-runtime + --dir "${bindir}/winqt" + --qmldir "${qmldir}" + --multimedia + \"$<TARGET_FILE:${target}>\" + COMMENT "Deploying Qt..." + ) + + install(DIRECTORY "${bindir}/winqt/" DESTINATION .) + +endfunction() + +mark_as_advanced(WINDEPLOYQT_EXECUTABLE) diff --git a/cmake/cpack/CMakeLists.txt b/cmake/cpack/CMakeLists.txt index c8c80f70a..259853eeb 100644 --- a/cmake/cpack/CMakeLists.txt +++ b/cmake/cpack/CMakeLists.txt @@ -11,6 +11,7 @@ endfunction (QUERY_QMAKE) query_qmake (QT_INSTALL_PLUGINS QT_PLUGINS_DIR) query_qmake (QT_INSTALL_IMPORTS QT_IMPORTS_DIR) +query_qmake (QT_INSTALL_QML QT_QML_DIR) if(APPLE AND BUNDLE AND BUILD_GUI) @@ -172,24 +173,6 @@ elseif(LINUX AND BUNDLE) elseif(WIN32 OR MINGW) - set(QT_PLUGINS_DIR_SET - "${QT_PLUGINS_DIR}/platforms" - "${QT_PLUGINS_DIR}/audio" - "${QT_PLUGINS_DIR}/imageformats" - "${QT_PLUGINS_DIR}/mediaservice" - "${QT_PLUGINS_DIR}/playlistformats" - "${QT_PLUGINS_DIR}/renderplugins" - "${QT_PLUGINS_DIR}/iconengines" - ) - - # Copy Qt Plugins; fixup_bundle doesn't do that - foreach(qt_plugin ${QT_PLUGINS_DIR_SET}) - get_filename_component(qt_plugin_name "${qt_plugin}" NAME) - add_custom_target(copy_qt_plugin_${qt_plugin_name} ALL - COMMAND ${CMAKE_COMMAND} -E copy_directory "${qt_plugin}" "${SDRANGEL_BINARY_BIN_DIR}/${qt_plugin_name}" - ) - endforeach(qt_plugin) - # unfortunately some libraries are dependencies of dll so we copy by hand # TODO check if we can use fixup_bundle() and have libraries on root path @@ -242,6 +225,14 @@ elseif(WIN32 OR MINGW) endforeach(uhd_dll) endif() + file(GLOB OPENSSL_DLLS "${OPENSSL_DLL_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}") + foreach(openssl_dll ${OPENSSL_DLLS}) + get_filename_component(openssl_dll_name "${openssl_dll}" NAME) + add_custom_target(copy_openssl_${openssl_dll_name} ALL + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${openssl_dll}" "${SDRANGEL_BINARY_BIN_DIR}/" + ) + endforeach(openssl_dll) + # TODO we need a way to fixup_bundle() on the build bin/ directory without call install if(BUILD_GUI) install(CODE " @@ -268,23 +259,9 @@ elseif(WIN32 OR MINGW) " COMPONENT Runtime) endif(BUILD_GUI) - # Copy Qt Plugins; fixup_bundle doesn't do that - install ( - DIRECTORY ${QT_PLUGINS_DIR_SET} - DESTINATION "${INSTALL_BIN_DIR}" - CONFIGURATIONS Release MinSizeRel - COMPONENT runtime - FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}" - PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE - PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE - PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE - PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE - ) - # unfortunately some libraries are dependencies of dll so we copy by hand # TODO check if we can use fixup_bundle() and have libraries on root path # inputkiwisdr.dll - install(FILES "${Qt5_DIR}/../../../bin/Qt5WebSockets${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") # demoddatv.dll install(DIRECTORY "${FFMPEG_LIBRARIES}/" DESTINATION "${INSTALL_LIB_DIR}" FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}") @@ -300,6 +277,9 @@ elseif(WIN32 OR MINGW) # uhd install(DIRECTORY "${UHD_DLL_DIR}/" DESTINATION "${INSTALL_LIB_DIR}" FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}") + # OpenSSL + install(DIRECTORY "${OPENSSL_DLL_DIR}/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}") install(CODE " # remove *.lib files diff --git a/doc/img/ADSBDemod_plugin.png b/doc/img/ADSBDemod_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..ec76e6ee1c16517d4905592bd1ca2d5b6f61e68a GIT binary patch literal 15469 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 Rf%i}$q{QSz%Z2s*{~w&qp)ddd literal 0 HcmV?d00001 diff --git a/doc/img/ADSBDemod_plugin.xcf b/doc/img/ADSBDemod_plugin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..e60cae85f97123edc2f936dfaac9d881c49e417e GIT binary patch literal 58734 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 Q?tz;uKFgYc=Xv!1|1#J$dH?_b literal 0 HcmV?d00001 diff --git a/doc/img/ADSBDemod_plugin_map.png b/doc/img/ADSBDemod_plugin_map.png new file mode 100644 index 0000000000000000000000000000000000000000..645b5bfbc2e1e6a3badc05559b25064d7a9e6682 GIT binary patch literal 478712 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%0AgP>Wz*5obQ^<>5tb7BF5+}Dx^TnDyf2C%Q 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ℜ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 bPze1$-=)VBK>j?&00000NkvXXu0mjf^*-`Q literal 0 HcmV?d00001 diff --git a/doc/img/ADSBDemod_plugin_table.png b/doc/img/ADSBDemod_plugin_table.png new file mode 100644 index 0000000000000000000000000000000000000000..97d70921da8df1df38a3f879428f53332f1c87b1 GIT binary patch literal 23970 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 literal 0 HcmV?d00001 diff --git a/doc/img/GS232Controller_plugin.png b/doc/img/GS232Controller_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4acd67d2f364de60a5f3ecd64322d4fc38fa4c GIT binary patch literal 17462 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 literal 0 HcmV?d00001 diff --git a/doc/img/GS232Controller_plugin.xcf b/doc/img/GS232Controller_plugin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..8ca672e50f0ccf9799c9b21f7d5c4e508ecc8f17 GIT binary patch literal 60536 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 literal 0 HcmV?d00001 diff --git a/plugins/channelrx/CMakeLists.txt b/plugins/channelrx/CMakeLists.txt index 322fb6961..dcdb70bd4 100644 --- a/plugins/channelrx/CMakeLists.txt +++ b/plugins/channelrx/CMakeLists.txt @@ -1,5 +1,8 @@ project(demod) +if (Qt5Quick_FOUND AND Qt5QuickWidgets_FOUND AND Qt5Positioning_FOUND) + add_subdirectory(demodadsb) +endif() add_subdirectory(demodam) add_subdirectory(demodbfm) add_subdirectory(demodnfm) diff --git a/plugins/channelrx/demodadsb/CMakeLists.txt b/plugins/channelrx/demodadsb/CMakeLists.txt new file mode 100644 index 000000000..4cff3eb67 --- /dev/null +++ b/plugins/channelrx/demodadsb/CMakeLists.txt @@ -0,0 +1,70 @@ +project(adsb) + +set(adsb_SOURCES + adsbdemod.cpp + adsbdemodsettings.cpp + adsbdemodwebapiadapter.cpp + adsbplugin.cpp + adsbdemodsink.cpp + adsbdemodbaseband.cpp + adsbdemodreport.cpp + adsbdemodworker.cpp +) + +set(adsb_HEADERS + adsbdemod.h + adsbdemodsettings.h + adsbdemodwebapiadapter.h + adsbplugin.h + adsbdemodsink.h + adsbdemodbaseband.h + adsbdemodreport.h + adsbdemodworker.h + adsb.h +) + +include_directories( + ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client +) + +if(NOT SERVER_MODE) + set(adsb_SOURCES + ${adsb_SOURCES} + adsbdemodgui.cpp + adsbdemodgui.ui + ) + set(adsb_HEADERS + ${adsb_HEADERS} + adsbdemodgui.h + ) + + set(TARGET_NAME demodadsb) + set(TARGET_LIB Qt5::Widgets Qt5::Quick Qt5::QuickWidgets Qt5::Positioning) + set(TARGET_LIB_GUI "sdrgui") + set(INSTALL_FOLDER ${INSTALL_PLUGINS_DIR}) +else() + set(TARGET_NAME demodadsbsrv) + set(TARGET_LIB "") + set(TARGET_LIB_GUI "") + set(INSTALL_FOLDER ${INSTALL_PLUGINSSRV_DIR}) +endif() + +add_library(${TARGET_NAME} SHARED + ${adsb_SOURCES} +) + +target_link_libraries(${TARGET_NAME} + Qt5::Core + ${TARGET_LIB} + sdrbase + ${TARGET_LIB_GUI} + swagger +) + +install(TARGETS ${TARGET_NAME} DESTINATION ${INSTALL_FOLDER}) + +if(WIN32) + # Run deployqt for QtQuick etc + include(DeployQt) + windeployqt(${TARGET_NAME} ${SDRANGEL_BINARY_BIN_DIR} ${PROJECT_SOURCE_DIR}/../../../sdrgui/resources) +endif() diff --git a/plugins/channelrx/demodadsb/adsb.h b/plugins/channelrx/demodadsb/adsb.h new file mode 100644 index 000000000..11b47faee --- /dev/null +++ b/plugins/channelrx/demodadsb/adsb.h @@ -0,0 +1,29 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSB_H +#define INCLUDE_ADSB_H + +#define ADS_B_CHIPS_PER_BIT 2 +#define ADS_B_PREAMBLE_BITS 8 +#define ADS_B_PREAMBLE_CHIPS (ADS_B_PREAMBLE_BITS*ADS_B_CHIPS_PER_BIT) +#define ADS_B_ES_BITS 112 +#define ADS_B_ES_BYTES (ADS_B_ES_BITS/8) +#define ADS_B_DF_MASK 0x1f +#define ADS_B_BITS_PER_SECOND 1000000 + +#endif // INCLUDE_ADSB_H diff --git a/plugins/channelrx/demodadsb/adsbdemod.cpp b/plugins/channelrx/demodadsb/adsbdemod.cpp new file mode 100644 index 000000000..46e4e46b7 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemod.cpp @@ -0,0 +1,468 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2012 maintech GmbH, Otto-Hahn-Str. 15, 97204 Hoechberg, Germany // +// written by Christian Daniel // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <stdio.h> +#include <complex.h> + +#include <QTime> +#include <QDebug> +#include <QNetworkAccessManager> +#include <QNetworkReply> +#include <QBuffer> +#include <QThread> + +#include "SWGChannelSettings.h" +#include "SWGADSBDemodSettings.h" +#include "SWGChannelReport.h" +#include "SWGADSBDemodReport.h" + +#include "dsp/dspengine.h" +#include "dsp/dspcommands.h" +#include "dsp/devicesamplemimo.h" +#include "device/deviceapi.h" +#include "util/db.h" + +#include "adsbdemod.h" +#include "adsbdemodworker.h" + +MESSAGE_CLASS_DEFINITION(ADSBDemod::MsgConfigureADSBDemod, Message) + +const QString ADSBDemod::m_channelIdURI = "sdrangel.channel.adsbdemod"; +const QString ADSBDemod::m_channelId = "ADSBDemod"; + +ADSBDemod::ADSBDemod(DeviceAPI *devieAPI) : + ChannelAPI(m_channelIdURI, ChannelAPI::StreamSingleSink), + m_deviceAPI(devieAPI), + m_basebandSampleRate(0), + m_targetAzElValid(false), + m_targetAzimuth(0.0f), + m_targetElevation(0.0f) +{ + qDebug("ADSBDemod::ADSBDemod"); + setObjectName(m_channelId); + + m_thread = new QThread(this); + m_basebandSink = new ADSBDemodBaseband(); + m_basebandSink->moveToThread(m_thread); + + m_worker = new ADSBDemodWorker(); + m_basebandSink->setMessageQueueToWorker(m_worker->getInputMessageQueue()); + + applySettings(m_settings, true); + + m_deviceAPI->addChannelSink(this); + m_deviceAPI->addChannelSinkAPI(this); + + m_networkManager = new QNetworkAccessManager(); + connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*))); +} + +ADSBDemod::~ADSBDemod() +{ + if (m_worker->isRunning()) { + stop(); + } + delete m_worker; + disconnect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*))); + delete m_networkManager; + m_deviceAPI->removeChannelSinkAPI(this); + m_deviceAPI->removeChannelSink(this); + delete m_basebandSink; + delete m_thread; +} + +uint32_t ADSBDemod::getNumberOfDeviceStreams() const +{ + return m_deviceAPI->getNbSourceStreams(); +} + +void ADSBDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst) +{ + (void) firstOfBurst; + m_basebandSink->feed(begin, end); +} + +void ADSBDemod::start() +{ + qDebug() << "ADSBDemod::start"; + + if (m_basebandSampleRate != 0) { + m_basebandSink->setBasebandSampleRate(m_basebandSampleRate); + } + + m_worker->reset(); + m_worker->startWork(); + m_basebandSink->reset(); + m_thread->start(); + + ADSBDemodWorker::MsgConfigureADSBDemodWorker *msg = ADSBDemodWorker::MsgConfigureADSBDemodWorker::create(m_settings, true); + m_worker->getInputMessageQueue()->push(msg); +} + +void ADSBDemod::stop() +{ + qDebug() << "ADSBDemod::stop"; + m_worker->stopWork(); + m_thread->exit(); + m_thread->wait(); +} + +bool ADSBDemod::handleMessage(const Message& cmd) +{ + if (MsgConfigureADSBDemod::match(cmd)) + { + MsgConfigureADSBDemod& cfg = (MsgConfigureADSBDemod&) cmd; + qDebug() << "ADSBDemod::handleMessage: MsgConfigureADSBDemod"; + + applySettings(cfg.getSettings(), cfg.getForce()); + + return true; + } + else if (DSPSignalNotification::match(cmd)) + { + DSPSignalNotification& notif = (DSPSignalNotification&) cmd; + m_basebandSampleRate = notif.getSampleRate(); + // Forward to the sink + DSPSignalNotification* rep = new DSPSignalNotification(notif); // make a copy + qDebug() << "ADSBDemod::handleMessage: DSPSignalNotification"; + m_basebandSink->getInputMessageQueue()->push(rep); + + return true; + } + else + { + return false; + } +} + +void ADSBDemod::applySettings(const ADSBDemodSettings& settings, bool force) +{ + qDebug() << "ADSBDemod::applySettings:" + << " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset + << " m_rfBandwidth: " << settings.m_rfBandwidth + << " m_streamIndex: " << settings.m_streamIndex + << " m_useReverseAPI: " << settings.m_useReverseAPI + << " m_reverseAPIAddress: " << settings.m_reverseAPIAddress + << " m_reverseAPIPort: " << settings.m_reverseAPIPort + << " m_reverseAPIDeviceIndex: " << settings.m_reverseAPIDeviceIndex + << " m_reverseAPIChannelIndex: " << settings.m_reverseAPIChannelIndex + << " force: " << force; + + QList<QString> reverseAPIKeys; + + if ((settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) || force) { + reverseAPIKeys.append("inputFrequencyOffset"); + } + if ((settings.m_rgbColor != m_settings.m_rgbColor) || force) { + reverseAPIKeys.append("rgbColor"); + } + if ((settings.m_title != m_settings.m_title) || force) { + reverseAPIKeys.append("title"); + } + if ((settings.m_rfBandwidth != m_settings.m_rfBandwidth) || force) { + reverseAPIKeys.append("rfBandwidth"); + } + + if (m_settings.m_streamIndex != settings.m_streamIndex) + { + if (m_deviceAPI->getSampleMIMO()) // change of stream is possible for MIMO devices only + { + m_deviceAPI->removeChannelSinkAPI(this); + m_deviceAPI->removeChannelSink(this, m_settings.m_streamIndex); + m_deviceAPI->addChannelSink(this, settings.m_streamIndex); + m_deviceAPI->addChannelSinkAPI(this); + } + + reverseAPIKeys.append("streamIndex"); + } + + ADSBDemodBaseband::MsgConfigureADSBDemodBaseband *msg = ADSBDemodBaseband::MsgConfigureADSBDemodBaseband::create(settings, force); + m_basebandSink->getInputMessageQueue()->push(msg); + + ADSBDemodWorker::MsgConfigureADSBDemodWorker *workerMsg = ADSBDemodWorker::MsgConfigureADSBDemodWorker::create(settings, force); + m_worker->getInputMessageQueue()->push(workerMsg); + + if (settings.m_useReverseAPI) + { + bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) || + (m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) || + (m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) || + (m_settings.m_reverseAPIDeviceIndex != settings.m_reverseAPIDeviceIndex) || + (m_settings.m_reverseAPIChannelIndex != settings.m_reverseAPIChannelIndex); + webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force); + } + + m_settings = settings; +} + +QByteArray ADSBDemod::serialize() const +{ + return m_settings.serialize(); +} + +bool ADSBDemod::deserialize(const QByteArray& data) +{ + bool success = true; + + if (!m_settings.deserialize(data)) + { + m_settings.resetToDefaults(); + success = false; + } + + MsgConfigureADSBDemod *msg = MsgConfigureADSBDemod::create(m_settings, true); + m_inputMessageQueue.push(msg); + + return success; +} + +int ADSBDemod::webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setAdsbDemodSettings(new SWGSDRangel::SWGADSBDemodSettings()); + response.getAdsbDemodSettings()->init(); + webapiFormatChannelSettings(response, m_settings); + return 200; +} + +int ADSBDemod::webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + ADSBDemodSettings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + + MsgConfigureADSBDemod *msg = MsgConfigureADSBDemod::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureADSBDemod *msgToGUI = MsgConfigureADSBDemod::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void ADSBDemod::webapiUpdateChannelSettings( + ADSBDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("inputFrequencyOffset")) { + settings.m_inputFrequencyOffset = response.getAdsbDemodSettings()->getInputFrequencyOffset(); + } + if (channelSettingsKeys.contains("rfBandwidth")) { + settings.m_rfBandwidth = response.getAdsbDemodSettings()->getRfBandwidth(); + } + if (channelSettingsKeys.contains("correlationThreshold")) { + settings.m_correlationThreshold = response.getAdsbDemodSettings()->getCorrelationThreshold(); + } + if (channelSettingsKeys.contains("samplesPerBit")) { + settings.m_samplesPerBit = response.getAdsbDemodSettings()->getSamplesPerBit(); + } + if (channelSettingsKeys.contains("removeTimeout")) { + settings.m_removeTimeout = response.getAdsbDemodSettings()->getRemoveTimeout(); + } + if (channelSettingsKeys.contains("beastEnabled")) { + settings.m_beastEnabled = response.getAdsbDemodSettings()->getBeastEnabled() != 0; + } + if (channelSettingsKeys.contains("beastHost")) { + settings.m_beastHost = *response.getAdsbDemodSettings()->getBeastHost(); + } + if (channelSettingsKeys.contains("beastPort")) { + settings.m_beastPort = response.getAdsbDemodSettings()->getBeastPort(); + } + if (channelSettingsKeys.contains("rgbColor")) { + settings.m_rgbColor = response.getAdsbDemodSettings()->getRgbColor(); + } + if (channelSettingsKeys.contains("title")) { + settings.m_title = *response.getAdsbDemodSettings()->getTitle(); + } + if (channelSettingsKeys.contains("streamIndex")) { + settings.m_streamIndex = response.getAdsbDemodSettings()->getStreamIndex(); + } + if (channelSettingsKeys.contains("useReverseAPI")) { + settings.m_useReverseAPI = response.getAdsbDemodSettings()->getUseReverseApi() != 0; + } + if (channelSettingsKeys.contains("reverseAPIAddress")) { + settings.m_reverseAPIAddress = *response.getAdsbDemodSettings()->getReverseApiAddress(); + } + if (channelSettingsKeys.contains("reverseAPIPort")) { + settings.m_reverseAPIPort = response.getAdsbDemodSettings()->getReverseApiPort(); + } + if (channelSettingsKeys.contains("reverseAPIDeviceIndex")) { + settings.m_reverseAPIDeviceIndex = response.getAdsbDemodSettings()->getReverseApiDeviceIndex(); + } + if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { + settings.m_reverseAPIChannelIndex = response.getAdsbDemodSettings()->getReverseApiChannelIndex(); + } +} + +int ADSBDemod::webapiReportGet( + SWGSDRangel::SWGChannelReport& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setAdsbDemodReport(new SWGSDRangel::SWGADSBDemodReport()); + response.getAdsbDemodReport()->init(); + webapiFormatChannelReport(response); + return 200; +} + +void ADSBDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const ADSBDemodSettings& settings) +{ + response.getAdsbDemodSettings()->setInputFrequencyOffset(settings.m_inputFrequencyOffset); + response.getAdsbDemodSettings()->setRfBandwidth(settings.m_rfBandwidth); + response.getAdsbDemodSettings()->setCorrelationThreshold(settings.m_correlationThreshold); + response.getAdsbDemodSettings()->setSamplesPerBit(settings.m_samplesPerBit); + response.getAdsbDemodSettings()->setRemoveTimeout(settings.m_removeTimeout); + response.getAdsbDemodSettings()->setBeastEnabled(settings.m_beastEnabled ? 1 : 0); + response.getAdsbDemodSettings()->setBeastHost(new QString(settings.m_beastHost)); + response.getAdsbDemodSettings()->setBeastPort(settings.m_beastPort); + response.getAdsbDemodSettings()->setRgbColor(settings.m_rgbColor); + + if (response.getAdsbDemodSettings()->getTitle()) { + *response.getAdsbDemodSettings()->getTitle() = settings.m_title; + } else { + response.getAdsbDemodSettings()->setTitle(new QString(settings.m_title)); + } + + response.getAdsbDemodSettings()->setStreamIndex(settings.m_streamIndex); + response.getAdsbDemodSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); + + if (response.getAdsbDemodSettings()->getReverseApiAddress()) { + *response.getAdsbDemodSettings()->getReverseApiAddress() = settings.m_reverseAPIAddress; + } else { + response.getAdsbDemodSettings()->setReverseApiAddress(new QString(settings.m_reverseAPIAddress)); + } + + response.getAdsbDemodSettings()->setReverseApiPort(settings.m_reverseAPIPort); + response.getAdsbDemodSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex); + response.getAdsbDemodSettings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex); +} + +void ADSBDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) +{ + double magsqAvg, magsqPeak; + int nbMagsqSamples; + getMagSqLevels(magsqAvg, magsqPeak, nbMagsqSamples); + + response.getAdsbDemodReport()->setChannelPowerDb(CalcDb::dbPower(magsqAvg)); + response.getAdsbDemodReport()->setChannelSampleRate(m_basebandSink->getChannelSampleRate()); + if (m_targetAzElValid) + { + response.getAdsbDemodReport()->setTargetAzimuth(m_targetAzimuth); + response.getAdsbDemodReport()->setTargetElevation(m_targetElevation); + } +} + +void ADSBDemod::webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const ADSBDemodSettings& settings, bool force) +{ + SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings(); + swgChannelSettings->setDirection(0); // single sink (Rx) + swgChannelSettings->setOriginatorChannelIndex(getIndexInDeviceSet()); + swgChannelSettings->setOriginatorDeviceSetIndex(getDeviceSetIndex()); + swgChannelSettings->setChannelType(new QString("ADSBDemod")); + swgChannelSettings->setAdsbDemodSettings(new SWGSDRangel::SWGADSBDemodSettings()); + SWGSDRangel::SWGADSBDemodSettings *swgADSBDemodSettings = swgChannelSettings->getAdsbDemodSettings(); + + // transfer data that has been modified. When force is on transfer all data except reverse API data + + if (channelSettingsKeys.contains("inputFrequencyOffset") || force) { + swgADSBDemodSettings->setInputFrequencyOffset(settings.m_inputFrequencyOffset); + } + if (channelSettingsKeys.contains("rfBandwidth") || force) { + swgADSBDemodSettings->setRfBandwidth(settings.m_rfBandwidth); + } + if (channelSettingsKeys.contains("correlationThreshold") || force) { + swgADSBDemodSettings->setCorrelationThreshold(settings.m_correlationThreshold); + } + if (channelSettingsKeys.contains("samplesPerBit") || force) { + swgADSBDemodSettings->setSamplesPerBit(settings.m_samplesPerBit); + } + if (channelSettingsKeys.contains("removeTimeout") || force) { + swgADSBDemodSettings->setRemoveTimeout(settings.m_removeTimeout); + } + if (channelSettingsKeys.contains("beastEnabled") || force) { + swgADSBDemodSettings->setBeastEnabled(settings.m_beastEnabled ? 1 : 0); + } + if (channelSettingsKeys.contains("beastHost") || force) { + swgADSBDemodSettings->setBeastHost(new QString(settings.m_beastHost)); + } + if (channelSettingsKeys.contains("beastPort") || force) { + swgADSBDemodSettings->setBeastPort(settings.m_beastPort); + } + if (channelSettingsKeys.contains("rgbColor") || force) { + swgADSBDemodSettings->setRgbColor(settings.m_rgbColor); + } + if (channelSettingsKeys.contains("title") || force) { + swgADSBDemodSettings->setTitle(new QString(settings.m_title)); + } + if (channelSettingsKeys.contains("streamIndex") || force) { + swgADSBDemodSettings->setStreamIndex(settings.m_streamIndex); + } + + QString channelSettingsURL = QString("http://%1:%2/sdrangel/deviceset/%3/channel/%4/settings") + .arg(settings.m_reverseAPIAddress) + .arg(settings.m_reverseAPIPort) + .arg(settings.m_reverseAPIDeviceIndex) + .arg(settings.m_reverseAPIChannelIndex); + m_networkRequest.setUrl(QUrl(channelSettingsURL)); + m_networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + QBuffer *buffer = new QBuffer(); + buffer->open((QBuffer::ReadWrite)); + buffer->write(swgChannelSettings->asJson().toUtf8()); + buffer->seek(0); + + // Always use PATCH to avoid passing reverse API settings + QNetworkReply *reply = m_networkManager->sendCustomRequest(m_networkRequest, "PATCH", buffer); + buffer->setParent(reply); + + delete swgChannelSettings; +} + +void ADSBDemod::networkManagerFinished(QNetworkReply *reply) +{ + QNetworkReply::NetworkError replyError = reply->error(); + + if (replyError) + { + qWarning() << "ADSBDemod::networkManagerFinished:" + << " error(" << (int) replyError + << "): " << replyError + << ": " << reply->errorString(); + } + else + { + QString answer = reply->readAll(); + answer.chop(1); // remove last \n + qDebug("ADSBDemod::networkManagerFinished: reply:\n%s", answer.toStdString().c_str()); + } + + reply->deleteLater(); +} diff --git a/plugins/channelrx/demodadsb/adsbdemod.h b/plugins/channelrx/demodadsb/adsbdemod.h new file mode 100644 index 000000000..8d9c5e6af --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemod.h @@ -0,0 +1,155 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2012 maintech GmbH, Otto-Hahn-Str. 15, 97204 Hoechberg, Germany // +// written by Christian Daniel // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSBDEMOD_H +#define INCLUDE_ADSBDEMOD_H + +#include <vector> + +#include <QNetworkRequest> + +#include "dsp/basebandsamplesink.h" +#include "channel/channelapi.h" +#include "util/message.h" + +#include "adsbdemodbaseband.h" +#include "adsbdemodsettings.h" + +class QNetworkAccessManager; +class QNetworkReply; +class QThread; +class DeviceAPI; +class ADSBDemodWorker; + +class ADSBDemod : public BasebandSampleSink, public ChannelAPI { + Q_OBJECT +public: + class MsgConfigureADSBDemod : public Message { + MESSAGE_CLASS_DECLARATION + + public: + const ADSBDemodSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } + + static MsgConfigureADSBDemod* create(const ADSBDemodSettings& settings, bool force) + { + return new MsgConfigureADSBDemod(settings, force); + } + + private: + ADSBDemodSettings m_settings; + bool m_force; + + MsgConfigureADSBDemod(const ADSBDemodSettings& settings, bool force) : + Message(), + m_settings(settings), + m_force(force) + { } + }; + + ADSBDemod(DeviceAPI *deviceAPI); + virtual ~ADSBDemod(); + virtual void destroy() { delete this; } + + virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positive); + virtual void start(); + virtual void stop(); + virtual bool handleMessage(const Message& cmd); + + virtual void getIdentifier(QString& id) { id = m_channelId; } + virtual const QString& getURI() const { return m_channelIdURI; } + virtual void getTitle(QString& title) { title = m_settings.m_title; } + virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; } + + virtual QByteArray serialize() const; + virtual bool deserialize(const QByteArray& data); + + virtual int getNbSinkStreams() const { return 1; } + virtual int getNbSourceStreams() const { return 0; } + + virtual qint64 getStreamCenterFrequency(int streamIndex, bool sinkElseSource) const + { + (void) streamIndex; + (void) sinkElseSource; + return m_settings.m_inputFrequencyOffset; + } + + virtual int webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + + virtual int webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + + virtual int webapiReportGet( + SWGSDRangel::SWGChannelReport& response, + QString& errorMessage); + + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const ADSBDemodSettings& settings); + + static void webapiUpdateChannelSettings( + ADSBDemodSettings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + + void getMagSqLevels(double& avg, double& peak, int& nbSamples) { m_basebandSink->getMagSqLevels(avg, peak, nbSamples); } + void propagateMessageQueueToGUI() { m_basebandSink->setMessageQueueToGUI(getMessageQueueToGUI()); } + + void setTarget(float targetAzimuth, float targetElevation) + { + m_targetAzimuth = targetAzimuth; + m_targetElevation = targetElevation; + m_targetAzElValid = true; + } + void clearTarget() { m_targetAzElValid = false; } + + uint32_t getNumberOfDeviceStreams() const; + + static const QString m_channelIdURI; + static const QString m_channelId; + +private: + DeviceAPI* m_deviceAPI; + QThread *m_thread; + ADSBDemodWorker *m_worker; + ADSBDemodBaseband* m_basebandSink; + ADSBDemodSettings m_settings; + int m_basebandSampleRate; //!< stored from device message used when starting baseband sink + + bool m_targetAzElValid; + float m_targetAzimuth; + float m_targetElevation; + + QNetworkAccessManager *m_networkManager; + QNetworkRequest m_networkRequest; + + void applySettings(const ADSBDemodSettings& settings, bool force = false); + void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); + void webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const ADSBDemodSettings& settings, bool force); + +private slots: + void networkManagerFinished(QNetworkReply *reply); +}; + +#endif // INCLUDE_ADSBDEMOD_H diff --git a/plugins/channelrx/demodadsb/adsbdemodbaseband.cpp b/plugins/channelrx/demodadsb/adsbdemodbaseband.cpp new file mode 100644 index 000000000..d2ed1a268 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodbaseband.cpp @@ -0,0 +1,157 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QDebug> + +#include "dsp/dspengine.h" +#include "dsp/dspcommands.h" +#include "dsp/downchannelizer.h" + +#include "adsbdemodbaseband.h" +#include "adsb.h" + +MESSAGE_CLASS_DEFINITION(ADSBDemodBaseband::MsgConfigureADSBDemodBaseband, Message) + +ADSBDemodBaseband::ADSBDemodBaseband() : + m_mutex(QMutex::Recursive) +{ + m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(8000000)); + m_channelizer = new DownChannelizer(&m_sink); + + qDebug("ADSBDemodBaseband::ADSBDemodBaseband"); + QObject::connect( + &m_sampleFifo, + &SampleSinkFifo::dataReady, + this, + &ADSBDemodBaseband::handleData, + Qt::QueuedConnection + ); + + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); +} + +ADSBDemodBaseband::~ADSBDemodBaseband() +{ + delete m_channelizer; +} + +void ADSBDemodBaseband::reset() +{ + QMutexLocker mutexLocker(&m_mutex); + m_sampleFifo.reset(); +} + +void ADSBDemodBaseband::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end) +{ + m_sampleFifo.write(begin, end); +} + +void ADSBDemodBaseband::handleData() +{ + QMutexLocker mutexLocker(&m_mutex); + + while ((m_sampleFifo.fill() > 0) && (m_inputMessageQueue.size() == 0)) + { + SampleVector::iterator part1begin; + SampleVector::iterator part1end; + SampleVector::iterator part2begin; + SampleVector::iterator part2end; + + std::size_t count = m_sampleFifo.readBegin(m_sampleFifo.fill(), &part1begin, &part1end, &part2begin, &part2end); + + // first part of FIFO data + if (part1begin != part1end) { + m_channelizer->feed(part1begin, part1end); + } + + // second part of FIFO data (used when block wraps around) + if(part2begin != part2end) { + m_channelizer->feed(part2begin, part2end); + } + + m_sampleFifo.readCommit((unsigned int) count); + } +} + +void ADSBDemodBaseband::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != nullptr) + { + if (handleMessage(*message)) { + delete message; + } + } +} + +bool ADSBDemodBaseband::handleMessage(const Message& cmd) +{ + if (MsgConfigureADSBDemodBaseband::match(cmd)) + { + QMutexLocker mutexLocker(&m_mutex); + MsgConfigureADSBDemodBaseband& cfg = (MsgConfigureADSBDemodBaseband&) cmd; + qDebug() << "ADSBDemodBaseband::handleMessage: MsgConfigureADSBDemodBaseband"; + + applySettings(cfg.getSettings(), cfg.getForce()); + + return true; + } + else if (DSPSignalNotification::match(cmd)) + { + QMutexLocker mutexLocker(&m_mutex); + DSPSignalNotification& notif = (DSPSignalNotification&) cmd; + qDebug() << "ADSBDemodBaseband::handleMessage: DSPSignalNotification: basebandSampleRate: " << notif.getSampleRate(); + m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(8*notif.getSampleRate())); // Need a large FIFO otherwise we get overflows - revist after better upsampling + m_channelizer->setBasebandSampleRate(notif.getSampleRate()); + m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); + + return true; + } + else + { + return false; + } +} + +void ADSBDemodBaseband::applySettings(const ADSBDemodSettings& settings, bool force) +{ + if ((settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) + || (settings.m_samplesPerBit != m_settings.m_samplesPerBit) || force) + { + int requestedRate = ADS_B_BITS_PER_SECOND * settings.m_samplesPerBit; + m_channelizer->setChannelization(requestedRate, settings.m_inputFrequencyOffset); + m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); + } + + m_sink.applySettings(settings, force); + + m_settings = settings; +} + +int ADSBDemodBaseband::getChannelSampleRate() const +{ + return m_channelizer->getChannelSampleRate(); +} + + +void ADSBDemodBaseband::setBasebandSampleRate(int sampleRate) +{ + m_channelizer->setBasebandSampleRate(sampleRate); + m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); +} diff --git a/plugins/channelrx/demodadsb/adsbdemodbaseband.h b/plugins/channelrx/demodadsb/adsbdemodbaseband.h new file mode 100644 index 000000000..be7367491 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodbaseband.h @@ -0,0 +1,87 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSBDEMODBASEBAND_H +#define INCLUDE_ADSBDEMODBASEBAND_H + +#include <QObject> +#include <QMutex> + +#include "dsp/samplesinkfifo.h" +#include "util/message.h" +#include "util/messagequeue.h" + +#include "adsbdemodsink.h" + +class DownChannelizer; + +class ADSBDemodBaseband : public QObject +{ + Q_OBJECT +public: + class MsgConfigureADSBDemodBaseband : public Message { + MESSAGE_CLASS_DECLARATION + + public: + const ADSBDemodSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } + + static MsgConfigureADSBDemodBaseband* create(const ADSBDemodSettings& settings, bool force) + { + return new MsgConfigureADSBDemodBaseband(settings, force); + } + + private: + ADSBDemodSettings m_settings; + bool m_force; + + MsgConfigureADSBDemodBaseband(const ADSBDemodSettings& settings, bool force) : + Message(), + m_settings(settings), + m_force(force) + { } + }; + + ADSBDemodBaseband(); + ~ADSBDemodBaseband(); + void reset(); + void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end); + MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } //!< Get the queue for asynchronous inbound communication + int getChannelSampleRate() const; + void getMagSqLevels(double& avg, double& peak, int& nbSamples) { m_sink.getMagSqLevels(avg, peak, nbSamples); } + void setMessageQueueToGUI(MessageQueue *messageQueue) { m_sink.setMessageQueueToGUI(messageQueue); } + void setMessageQueueToWorker(MessageQueue *messageQueue) { m_sink.setMessageQueueToWorker(messageQueue); } + void setBasebandSampleRate(int sampleRate); + +private: + SampleSinkFifo m_sampleFifo; + DownChannelizer *m_channelizer; + ADSBDemodSink m_sink; + MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication + ADSBDemodSettings m_settings; + QMutex m_mutex; + + bool handleMessage(const Message& cmd); + void applySettings(const ADSBDemodSettings& settings, bool force = false); + +private slots: + void handleInputMessages(); + void handleData(); //!< Handle data when samples have to be processed +}; + +#endif // INCLUDE_ADSBDEMODBASEBAND_H diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.cpp b/plugins/channelrx/demodadsb/adsbdemodgui.cpp new file mode 100644 index 000000000..d035cf6d4 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodgui.cpp @@ -0,0 +1,1024 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#define _USE_MATH_DEFINES +#include <cmath> + +#include "device/deviceuiset.h" +#include <QDockWidget> +#include <QMainWindow> +#include <QQuickItem> +#include <QGeoLocation> +#include <QQmlContext> +#include <QDesktopServices> +#include <QUrl> +#include <QDebug> + +#include "ui_adsbdemodgui.h" +#include "plugin/pluginapi.h" +#include "util/simpleserializer.h" +#include "util/db.h" +#include "gui/basicchannelsettingsdialog.h" +#include "gui/devicestreamselectiondialog.h" +#include "gui/crightclickenabler.h" +#include "dsp/dspengine.h" +#include "mainwindow.h" + +#include "adsbdemodreport.h" +#include "adsbdemod.h" +#include "adsbdemodgui.h" +#include "adsb.h" + +// ADS-B table columns +#define ADSB_COL_ICAO 0 +#define ADSB_COL_FLIGHT 1 +#define ADSB_COL_LATITUDE 2 +#define ADSB_COL_LONGITUDE 3 +#define ADSB_COL_ALTITUDE 4 +#define ADSB_COL_SPEED 5 +#define ADSB_COL_HEADING 6 +#define ADSB_COL_VERTICALRATE 7 +#define ADSB_COL_CATEGORY 8 +#define ADSB_COL_STATUS 9 +#define ADSB_COL_RANGE 10 +#define ADSB_COL_AZEL 11 +#define ADSB_COL_TIME 12 +#define ADSB_COL_FRAMECOUNT 13 +#define ADSB_COL_CORRELATION 14 + +const char *Aircraft::m_speedTypeNames[] = { + "GS", "TAS", "IAS" +}; + +ADSBDemodGUI* ADSBDemodGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) +{ + ADSBDemodGUI* gui = new ADSBDemodGUI(pluginAPI, deviceUISet, rxChannel); + return gui; +} + +void ADSBDemodGUI::destroy() +{ + delete this; +} + +void ADSBDemodGUI::resetToDefaults() +{ + m_settings.resetToDefaults(); + displaySettings(); + applySettings(); +} + +QByteArray ADSBDemodGUI::serialize() const +{ + return m_settings.serialize(); +} + +bool ADSBDemodGUI::deserialize(const QByteArray& data) +{ + if(m_settings.deserialize(data)) { + displaySettings(); + applySettings(true); + return true; + } else { + resetToDefaults(); + return false; + } +} + +// Longitude zone (returns value in range [1,59] +static int cprNL(Real lat) +{ + if (lat == 0.0f) + return 59; + else if ((lat == 87.0f) || (lat == -87.0f)) + return 2; + else if ((lat > 87.0f) || (lat < -87.0f)) + return 1; + else + { + double nz = 15.0; + double n = 1 - std::cos(M_PI / (2.0 * nz)); + double d = std::cos(std::fabs(lat) * M_PI/180.0); + return std::floor((M_PI * 2.0) / std::acos(1.0 - (n/(d*d)))); + } +} + +static int cprN(Real lat, int odd) +{ + int nl = cprNL(lat) - odd; + if (nl > 1) + return nl; + else + return 1; +} + +static Real feetToMetres(Real feet) +{ + return feet * 0.3048; +} + +// Can't use std::fmod, as that works differently for negative numbers +static Real modulus(Real x, Real y) +{ + return x - y * std::floor(x/y); +} + +QVariant AircraftModel::data(const QModelIndex &index, int role) const +{ + int row = index.row(); + if ((row < 0) || (row >= m_aircrafts.count())) + return QVariant(); + if (role == AircraftModel::positionRole) + { + // Coordinates to display the aircraft icon at + QGeoCoordinate coords; + coords.setLatitude(m_aircrafts[row]->m_latitude); + coords.setLongitude(m_aircrafts[row]->m_longitude); + coords.setAltitude(m_aircrafts[row]->m_altitude * 0.3048); // Convert feet to metres + return QVariant::fromValue(coords); + } + else if (role == AircraftModel::headingRole) + { + // What rotation to draw the aircraft icon at + return QVariant::fromValue(m_aircrafts[row]->m_heading); + } + else if (role == AircraftModel::adsbDataRole) + { + // Create the text to go in the bubble next to the aircraft + QStringList list; + if (m_aircrafts[row]->m_flight.length() > 0) + { + list.append(QString("Flight: %1").arg(m_aircrafts[row]->m_flight)); + } + else + { + list.append(QString("ICAO: %1").arg(m_aircrafts[row]->m_icao, 1, 16)); + } + if (m_aircrafts[row]->m_altitudeValid) + { + list.append(QString("Altitude: %1 (ft)").arg(m_aircrafts[row]->m_altitude)); + } + if (m_aircrafts[row]->m_speedValid) + { + list.append(QString("%1: %2 (kn)").arg(m_aircrafts[row]->m_speedTypeNames[m_aircrafts[row]->m_speedType]).arg(m_aircrafts[row]->m_speed)); + } + if (m_aircrafts[row]->m_verticalRateValid) + { + QString desc; + if (m_aircrafts[row]->m_verticalRate == 0) + desc = "Level flight"; + else if (m_aircrafts[row]->m_verticalRate > 0) + desc = QString("Climbing: %1 (ft/min)").arg(m_aircrafts[row]->m_verticalRate); + else + desc = QString("Descending: %1 (ft/min)").arg(m_aircrafts[row]->m_verticalRate); + list.append(QString(desc)); + } + if ((m_aircrafts[row]->m_status.length() > 0) && m_aircrafts[row]->m_status.compare("No emergency")) + { + list.append(m_aircrafts[row]->m_status); + } + QString data = list.join("\n"); + return QVariant::fromValue(data); + } + else if (role == AircraftModel::aircraftImageRole) + { + // Select an image to use for the aircraft + if (m_aircrafts[row]->m_emitterCategory.length() > 0) + { + if (!m_aircrafts[row]->m_emitterCategory.compare("Heavy")) + return QVariant::fromValue(QString("aircraft_4engine.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("Large")) + return QVariant::fromValue(QString("aircraft_2engine.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("Small")) + return QVariant::fromValue(QString("aircraft_2enginesmall.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("Rotorcraft")) + return QVariant::fromValue(QString("aircraft_helicopter.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("High performance")) + return QVariant::fromValue(QString("aircraft_fighter.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("Light") + || !m_aircrafts[row]->m_emitterCategory.compare("Ultralight") + || !m_aircrafts[row]->m_emitterCategory.compare("Glider/sailplane")) + return QVariant::fromValue(QString("aircraft_light.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("Space vehicle")) + return QVariant::fromValue(QString("aircraft_space.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("UAV")) + return QVariant::fromValue(QString("aircraft_drone.png")); + else if (!m_aircrafts[row]->m_emitterCategory.compare("Emergency vehicle") + || !m_aircrafts[row]->m_emitterCategory.compare("Service vehicle")) + return QVariant::fromValue(QString("map_truck.png")); + else + return QVariant::fromValue(QString("aircraft_2engine.png")); + } + else + return QVariant::fromValue(QString("aircraft_2engine.png")); + } + else if (role == AircraftModel::bubbleColourRole) + { + // Select a background colour for the text bubble next to the aircraft + if (m_aircrafts[row]->m_isBeingTracked) + return QVariant::fromValue(QColor("lightgreen")); + else if ((m_aircrafts[row]->m_status.length() > 0) && m_aircrafts[row]->m_status.compare("No emergency")) + return QVariant::fromValue(QColor("lightred")); + else + return QVariant::fromValue(QColor("lightblue")); + } + return QVariant(); +} + +// Called when we have both lat & long +void ADSBDemodGUI::updatePosition(Aircraft *aircraft) +{ + if (!aircraft->m_positionValid) + { + aircraft->m_positionValid = true; + // Now we have a position, add a plane to the map + QGeoCoordinate coords; + coords.setLatitude(aircraft->m_latitude); + coords.setLongitude(aircraft->m_longitude); + m_aircraftModel.addAircraft(aircraft); + } + // Calculate range, azimuth and elevation to aircraft from station + m_azEl.setTarget(aircraft->m_latitude, aircraft->m_longitude, feetToMetres(aircraft->m_altitude)); + m_azEl.calculate(); + aircraft->m_range = m_azEl.getDistance(); + aircraft->m_azimuth = m_azEl.getAzimuth(); + aircraft->m_elevation = m_azEl.getElevation(); + aircraft->m_rangeItem->setText(QString("%1").arg(aircraft->m_range/1000.0, 0, 'f', 1)); + aircraft->m_azElItem->setText(QString("%1/%2").arg(std::round(aircraft->m_azimuth)).arg(std::round(aircraft->m_elevation))); + if (aircraft == m_trackAircraft) + m_adsbDemod->setTarget(aircraft->m_azimuth, aircraft->m_elevation); +} + +void ADSBDemodGUI::handleADSB(const QByteArray data, const QDateTime dateTime, float correlation) +{ + const char idMap[] = "?ABCDEFGHIJKLMNOPQRSTUVWXYZ????? ???????????????0123456789??????"; + const QString categorySetA[] = { + "None", + "Light", + "Small", + "Large", + "High vortex", + "Heavy", + "High performance", + "Rotorcraft" + }; + const QString categorySetB[] = { + "None", + "Glider/sailplane", + "Lighter-than-air", + "Parachutist", + "Ultralight", + "Reserved", + "UAV", + "Space vehicle" + }; + const QString categorySetC[] = { + "None", + "Emergency vehicle", + "Service vehicle", + "Ground obstruction", + "Cluster obstacle", + "Line obstacle", + "Reserved", + "Reserved" + }; + const QString emergencyStatus[] = { + "No emergency", + "General emergency", + "Lifeguard/Medical", + "Minimum fuel", + "No communications", + "Unlawful interference", + "Downed aircraft", + "Reserved" + }; + + int df = (data[0] >> 3) & ADS_B_DF_MASK; // Downlink format + int ca = data[0] & 0x7; // Capability + unsigned icao = ((data[1] & 0xff) << 16) | ((data[2] & 0xff) << 8) | (data[3] & 0xff); // ICAO aircraft address + int tc = (data[4] >> 3) & 0x1f; // Type code + + Aircraft *aircraft; + if (m_aircraft.contains(icao)) + { + // Update existing aircraft info + aircraft = m_aircraft.value(icao); + } + else + { + // Add new aircraft + aircraft = new Aircraft; + aircraft->m_icao = icao; + m_aircraft.insert(icao, aircraft); + aircraft->m_icaoItem->setText(QString("%1").arg(aircraft->m_icao, 1, 16)); + int row = ui->adsbData->rowCount(); + ui->adsbData->setRowCount(row + 1); + ui->adsbData->setItem(row, ADSB_COL_ICAO, aircraft->m_icaoItem); + ui->adsbData->setItem(row, ADSB_COL_FLIGHT, aircraft->m_flightItem); + ui->adsbData->setItem(row, ADSB_COL_LATITUDE, aircraft->m_latitudeItem); + ui->adsbData->setItem(row, ADSB_COL_LONGITUDE, aircraft->m_longitudeItem); + ui->adsbData->setItem(row, ADSB_COL_ALTITUDE, aircraft->m_altitudeItem); + ui->adsbData->setItem(row, ADSB_COL_SPEED, aircraft->m_speedItem); + ui->adsbData->setItem(row, ADSB_COL_HEADING, aircraft->m_headingItem); + ui->adsbData->setItem(row, ADSB_COL_VERTICALRATE, aircraft->m_verticalRateItem); + ui->adsbData->setItem(row, ADSB_COL_CATEGORY, aircraft->m_emitterCategoryItem); + ui->adsbData->setItem(row, ADSB_COL_STATUS, aircraft->m_statusItem); + ui->adsbData->setItem(row, ADSB_COL_RANGE, aircraft->m_rangeItem); + ui->adsbData->setItem(row, ADSB_COL_AZEL, aircraft->m_azElItem); + ui->adsbData->setItem(row, ADSB_COL_TIME, aircraft->m_timeItem); + ui->adsbData->setItem(row, ADSB_COL_FRAMECOUNT, aircraft->m_adsbFrameCountItem); + ui->adsbData->setItem(row, ADSB_COL_CORRELATION, aircraft->m_correlationItem); + } + aircraft->m_time = dateTime; + QTime time = dateTime.time(); + aircraft->m_timeItem->setText(QString("%1:%2:%3").arg(time.hour(), 2, 10, QLatin1Char('0')).arg(time.minute(), 2, 10, QLatin1Char('0')).arg(time.second(), 2, 10, QLatin1Char('0'))); + aircraft->m_adsbFrameCount++; + aircraft->m_adsbFrameCountItem->setText(QString("%1").arg(aircraft->m_adsbFrameCount)); + + if (correlation < aircraft->m_minCorrelation) + aircraft->m_minCorrelation = correlation; + if (correlation > aircraft->m_maxCorrelation) + aircraft->m_maxCorrelation = correlation; + aircraft->m_sumCorrelation += correlation; + aircraft->m_correlationItem->setText(QString("%1/%2/%3").arg(aircraft->m_minCorrelation, 3, 'f', 1).arg(aircraft->m_sumCorrelation / aircraft->m_adsbFrameCount, 3, 'f', 1).arg(aircraft->m_maxCorrelation, 3, 'f', 1)); + + + if ((tc >= 1) && ((tc <= 4))) + { + // Aircraft identification + int ec = data[4] & 0x7; // Emitter category + if (tc == 4) + aircraft->m_emitterCategory = categorySetA[ec]; + else if (tc == 3) + aircraft->m_emitterCategory = categorySetB[ec]; + else if (tc == 2) + aircraft->m_emitterCategory = categorySetC[ec]; + else + aircraft->m_emitterCategory = QString("Reserved"); + aircraft->m_emitterCategoryItem->setText(aircraft->m_emitterCategory); + + // Flight/callsign - Extract 8 6-bit characters from 6 8-bit bytes, MSB first + unsigned char c[8]; + char callsign[9]; + c[0] = (data[5] >> 2) & 0x3f; // 6 + c[1] = ((data[5] & 0x3) << 4) | ((data[6] & 0xf0) >> 4); // 2+4 + c[2] = ((data[6] & 0xf) << 2) | ((data[7] & 0xc0) >> 6); // 4+2 + c[3] = (data[7] & 0x3f); // 6 + c[4] = (data[8] >> 2) & 0x3f; + c[5] = ((data[8] & 0x3) << 4) | ((data[9] & 0xf0) >> 4); + c[6] = ((data[9] & 0xf) << 2) | ((data[10] & 0xc0) >> 6); + c[7] = (data[10] & 0x3f); + // Map to ASCII + for (int i = 0; i < 8; i++) + callsign[i] = idMap[c[i]]; + callsign[8] = '\0'; + + aircraft->m_flight = QString(callsign); + aircraft->m_flightItem->setText(aircraft->m_flight); + } + else if ((tc >= 5) && (tc <= 8)) + { + // Surface position + } + else if (((tc >= 9) && (tc <= 18)) || ((tc >= 20) && (tc <= 22))) + { + // Airbourne position (9-18 baro, 20-22 GNSS) + int ss = (data[4] >> 1) & 0x3; // Surveillance status + int nicsb = data[4] & 1; // NIC supplement-B + int alt = ((data[5] & 0xff) << 4) | ((data[6] >> 4) & 0xf); // Altitude + int n = ((alt >> 1) & 0x7f0) | (alt & 0xf); + int alt_ft = n * ((alt & 0x10) ? 25 : 100) - 1000; + + aircraft->m_altitude = alt_ft; + aircraft->m_altitudeValid = true; + aircraft->m_altitudeItem->setText(QString("%1").arg(aircraft->m_altitude)); + + int t = (data[6] >> 3) & 1; // Time + int f = (data[6] >> 2) & 1; // CPR odd/even frame + int lat_cpr = ((data[6] & 3) << 15) | ((data[7] & 0xff) << 7) | ((data[8] >> 1) & 0x7f); + int lon_cpr = ((data[8] & 1) << 16) | ((data[9] & 0xff) << 8) | (data[10] & 0xff); + + aircraft->m_cprValid[f] = true; + aircraft->m_cprLat[f] = lat_cpr/131072.0f; + aircraft->m_cprLong[f] = lon_cpr/131072.0f; + + // Check if both odd and even frames are available + // See: https://mode-s.org/decode/adsb/airborne-position.html + // We could compare global + local methods to see if the positions are sensible + if (aircraft->m_cprValid[0] && aircraft->m_cprValid[1]) + { + // Global decode using odd and even frames + + // Calculate latitude + const Real dLatEven = 360.0f/60.0f; + const Real dLatOdd = 360.0f/59.0f; + Real latEven, latOdd; + + int j = std::floor(59.0f*aircraft->m_cprLat[0] - 60.0f*aircraft->m_cprLat[1] + 0.5); + latEven = dLatEven * ((j % 60) + aircraft->m_cprLat[0]); + if (latEven >= 270.0f) + latEven -= 360.0f; + latOdd = dLatOdd * ((j % 59) + aircraft->m_cprLat[1]); + if (latOdd >= 270.0f) + latOdd -= 360.0f; + if (!f) + aircraft->m_latitude = latEven; + else + aircraft->m_latitude = latOdd; + aircraft->m_latitudeItem->setText(QString("%1").arg(aircraft->m_latitude)); + + // Check if both frames in same latitude zone + int latEvenNL = cprNL(latEven); + int latOddNL = cprNL(latOdd); + if (latEvenNL == latOddNL) + { + // Calculate longitude + if (!f) + { + int ni = cprN(latEven, 0); + int m = std::floor(aircraft->m_cprLong[0] * (latEvenNL - 1) - aircraft->m_cprLong[1] * latEvenNL + 0.5f); + aircraft->m_longitude = (360.0f/ni) * ((m % ni) + aircraft->m_cprLong[0]); + } + else + { + int ni = cprN(latOdd, 1); + int m = std::floor(aircraft->m_cprLong[0] * (latOddNL - 1) - aircraft->m_cprLong[1] * latOddNL + 0.5f); + aircraft->m_longitude = (360.0f/ni) * ((m % ni) + aircraft->m_cprLong[1]); + } + if (aircraft->m_longitude > 180.0f) + aircraft->m_longitude -= 360.0f; + aircraft->m_longitudeItem->setText(QString("%1").arg(aircraft->m_longitude)); + updatePosition(aircraft); + } + } + else + { + // Local decode using a single aircraft position + location of receiver + // Only valid if within 180nm + + // Caclulate latitude + const Real dLatEven = 360.0f/60.0f; + const Real dLatOdd = 360.0f/59.0f; + Real dLat = f ? dLatOdd : dLatEven; + int j = std::floor(m_azEl.getLocationSpherical().m_latitude/dLat) + std::floor(modulus(m_azEl.getLocationSpherical().m_latitude, dLat)/dLat - aircraft->m_cprLat[f] + 0.5); + aircraft->m_latitude = dLat * (j + aircraft->m_cprLat[f]); + // Add suffix of L to indicate local decode + aircraft->m_latitudeItem->setText(QString("%1 L").arg(aircraft->m_latitude)); + + // Caclulate longitude + Real dLong; + int latNL = cprNL(aircraft->m_latitude); + if (f == 0) + { + if (latNL > 0) + dLong = 360.0 / latNL; + else + dLong = 360.0; + } + else + { + if ((latNL - 1) > 0) + dLong = 360.0 / (latNL - 1); + else + dLong = 360.0; + } + int m = std::floor(m_azEl.getLocationSpherical().m_longitude/dLong) + std::floor(modulus(m_azEl.getLocationSpherical().m_longitude, dLong)/dLong - aircraft->m_cprLong[f] + 0.5); + aircraft->m_longitude = dLong * (m + aircraft->m_cprLong[f]); + // Add suffix of L to indicate local decode + aircraft->m_longitudeItem->setText(QString("%1 L").arg(aircraft->m_longitude)); + updatePosition(aircraft); + } + } + else if (tc == 19) + { + // Airbourne velocity + int st = data[4] & 0x7; // Subtype + int ic = (data[5] >> 7) & 1; // Intent change flag + int nac = (data[5] >> 3) & 0x3; // Velocity uncertainty + if ((st == 1) || (st == 2)) + { + // Ground speed + int s_ew = (data[5] >> 2) & 1; // East-west velocity sign + int v_ew = ((data[5] & 0x3) << 8) | (data[6] & 0xff); // East-west velocity + int s_ns = (data[7] >> 7) & 1; // North-south velocity sign + int v_ns = ((data[7] & 0x7f) << 3) | ((data[8] >> 5) & 0x7); // North-south velocity + + int v_we; + int v_sn; + int v; + int h; + + if (s_ew) + v_we = -1 * (v_ew - 1); + else + v_we = v_ew - 1; + if (s_ns) + v_sn = -1 * (v_ns - 1); + else + v_sn = v_ns - 1; + v = (int)std::sqrt(v_we*v_we + v_sn*v_sn); + h = std::atan2(v_we, v_sn) * 360.0/(2.0*M_PI); + if (h < 0) + h += 360; + + aircraft->m_heading = h; + aircraft->m_headingValid = true; + aircraft->m_speed = v; + aircraft->m_speedType = Aircraft::GS; + aircraft->m_speedValid = true; + aircraft->m_headingItem->setText(QString("%1").arg(aircraft->m_heading)); + aircraft->m_speedItem->setText(QString("%1").arg(aircraft->m_speed)); + } + else + { + // Airspeed + int s_hdg = (data[5] >> 2) & 1; // Heading status + int hdg = ((data[5] & 0x3) << 8) | (data[6] & 0xff); // Heading + if (s_hdg) + { + aircraft->m_heading = hdg/1024.0f*360.0f; + aircraft->m_headingValid = true; + aircraft->m_headingItem->setText(QString("%1").arg(aircraft->m_heading)); + } + + int as_t = (data[7] >> 7) & 1; // Airspeed type + int as = ((data[7] & 0x7f) << 3) | ((data[8] >> 5) & 0x7); // Airspeed + + aircraft->m_speed = as; + aircraft->m_speedType = as_t ? Aircraft::IAS : Aircraft::TAS; + aircraft->m_speedValid = true; + aircraft->m_speedItem->setText(QString("%1").arg(aircraft->m_speed)); + } + int vrsrc = (data[8] >> 4) & 1; // Vertical rate source + int s_vr = (data[8] >> 3) & 1; // Vertical rate sign + int vr = ((data[8] & 0x7) << 6) | ((data[9] >> 2) & 0x3f); // Vertical rate + aircraft->m_verticalRate = (vr-1)*64*(s_vr?-1:1); + aircraft->m_verticalRateValid = true; + aircraft->m_verticalRateItem->setText(QString("%1").arg(aircraft->m_verticalRate)); + + int s_dif = (data[10] >> 7) & 1; // Diff from baro alt, sign + int dif = data[10] & 0x7f; // Diff from baro alt + } + else if (tc == 28) + { + // Aircraft status + int st = data[4] & 0x7; // Subtype + int es = (data[5] >> 5) & 0x7; // Emergeny state + if (st == 1) + aircraft->m_status = emergencyStatus[es]; + else + aircraft->m_status = QString(""); + aircraft->m_statusItem->setText(aircraft->m_status); + } + else if (tc == 29) + { + // Target state and status + } + else if (tc == 31) + { + // Aircraft operation status + } + + // Update aircraft in map + if (aircraft->m_positionValid) + { + m_aircraftModel.aircraftUpdated(aircraft); + } + +} + +bool ADSBDemodGUI::handleMessage(const Message& message) +{ + if (ADSBDemodReport::MsgReportADSB::match(message)) + { + ADSBDemodReport::MsgReportADSB& report = (ADSBDemodReport::MsgReportADSB&) message; + handleADSB(report.getData(), report.getDateTime(), report.getPreambleCorrelation()); + return true; + } + else if (ADSBDemod::MsgConfigureADSBDemod::match(message)) + { + qDebug("ADSBDemodGUI::handleMessage: ADSBDemod::MsgConfigureADSBDemod"); + const ADSBDemod::MsgConfigureADSBDemod& cfg = (ADSBDemod::MsgConfigureADSBDemod&) message; + m_settings = cfg.getSettings(); + blockApplySettings(true); + displaySettings(); + blockApplySettings(false); + return true; + } + + return false; +} + +void ADSBDemodGUI::handleInputMessages() +{ + Message* message; + + while ((message = getInputMessageQueue()->pop()) != 0) + { + if (handleMessage(*message)) + { + delete message; + } + } +} + +void ADSBDemodGUI::channelMarkerChangedByCursor() +{ + ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); + m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); + applySettings(); +} + +void ADSBDemodGUI::channelMarkerHighlightedByCursor() +{ + setHighlighted(m_channelMarker.getHighlighted()); +} + +void ADSBDemodGUI::on_deltaFrequency_changed(qint64 value) +{ + m_channelMarker.setCenterFrequency(value); + m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); + applySettings(); +} + +void ADSBDemodGUI::on_rfBW_valueChanged(int value) +{ + Real bw = (Real)value; + ui->rfBWText->setText(QString("%1M").arg(bw / 1000000.0, 0, 'f', 1)); + m_channelMarker.setBandwidth(bw); + m_settings.m_rfBandwidth = bw; + applySettings(); +} + +void ADSBDemodGUI::on_threshold_valueChanged(int value) +{ + Real threshold = ((Real)value)/10.0f; + ui->thresholdText->setText(QString("%1").arg(threshold, 0, 'f', 1)); + m_settings.m_correlationThreshold = threshold; + applySettings(); +} + +void ADSBDemodGUI::on_beastEnabled_stateChanged(int state) +{ + m_settings.m_beastEnabled = state == Qt::Checked; + // Don't disable host/port - so they can be entered before connecting + applySettings(); +} + +void ADSBDemodGUI::on_host_editingFinished(QString value) +{ + m_settings.m_beastHost = value; + applySettings(); +} + +void ADSBDemodGUI::on_port_valueChanged(int value) +{ + m_settings.m_beastPort = value; + applySettings(); +} + +void ADSBDemodGUI::on_adsbData_cellDoubleClicked(int row, int column) +{ + // Get ICAO of aircraft in row double clicked + int icao = ui->adsbData->item(row, 0)->text().toInt(nullptr, 16); + if (column == ADSB_COL_ICAO) + { + // Search for aircraft on planespotters.net + QString icaoUpper = QString("%1").arg(icao, 1, 16).toUpper(); + QDesktopServices::openUrl(QUrl(QString("https://www.planespotters.net/hex/%1").arg(icaoUpper))); + } + else if (m_aircraft.contains(icao)) + { + Aircraft *aircraft = m_aircraft.value(icao); + + if (column == ADSB_COL_FLIGHT) + { + if (aircraft->m_flight.length() > 0) + { + // Search for flight on flightradar24 + QDesktopServices::openUrl(QUrl(QString("https://www.flightradar24.com/%1").arg(aircraft->m_flight.trimmed()))); + } + } + else + { + if (column == ADSB_COL_AZEL) + { + if (m_trackAircraft) + { + // Restore colour of current target + m_trackAircraft->m_isBeingTracked = false; + m_aircraftModel.aircraftUpdated(m_trackAircraft); + } + // Track this aircraft + m_trackAircraft = aircraft; + if (aircraft->m_positionValid) + m_adsbDemod->setTarget(aircraft->m_azimuth, aircraft->m_elevation); + // Change colour of new target + aircraft->m_isBeingTracked = true; + m_aircraftModel.aircraftUpdated(aircraft); + } + // Center map view on aircraft if it has a valid position + if (aircraft->m_positionValid) + { + QQuickItem *item = ui->map->rootObject(); + QObject *object = item->findChild<QObject*>("map"); + if(object != NULL) + { + QGeoCoordinate geocoord = object->property("center").value<QGeoCoordinate>(); + geocoord.setLatitude(aircraft->m_latitude); + geocoord.setLongitude(aircraft->m_longitude); + object->setProperty("center", QVariant::fromValue(geocoord)); + } + } + } + } +} + +void ADSBDemodGUI::on_spb_currentIndexChanged(int value) +{ + m_settings.m_samplesPerBit = (value + 2) * 2; + applySettings(); +} + +void ADSBDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) +{ + (void) widget; + (void) rollDown; +} + +void ADSBDemodGUI::onMenuDialogCalled(const QPoint &p) +{ + if (m_contextMenuType == ContextMenuChannelSettings) + { + BasicChannelSettingsDialog dialog(&m_channelMarker, this); + dialog.setUseReverseAPI(m_settings.m_useReverseAPI); + dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress); + dialog.setReverseAPIPort(m_settings.m_reverseAPIPort); + dialog.setReverseAPIDeviceIndex(m_settings.m_reverseAPIDeviceIndex); + dialog.setReverseAPIChannelIndex(m_settings.m_reverseAPIChannelIndex); + dialog.move(p); + dialog.exec(); + + m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); + m_settings.m_rgbColor = m_channelMarker.getColor().rgb(); + m_settings.m_title = m_channelMarker.getTitle(); + m_settings.m_useReverseAPI = dialog.useReverseAPI(); + m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress(); + m_settings.m_reverseAPIPort = dialog.getReverseAPIPort(); + m_settings.m_reverseAPIDeviceIndex = dialog.getReverseAPIDeviceIndex(); + m_settings.m_reverseAPIChannelIndex = dialog.getReverseAPIChannelIndex(); + + setWindowTitle(m_settings.m_title); + setTitleColor(m_settings.m_rgbColor); + + applySettings(); + } + else if ((m_contextMenuType == ContextMenuStreamSettings) && (m_deviceUISet->m_deviceMIMOEngine)) + { + DeviceStreamSelectionDialog dialog(this); + dialog.setNumberOfStreams(m_adsbDemod->getNumberOfDeviceStreams()); + dialog.setStreamIndex(m_settings.m_streamIndex); + dialog.move(p); + dialog.exec(); + + m_settings.m_streamIndex = dialog.getSelectedStreamIndex(); + m_channelMarker.clearStreamIndexes(); + m_channelMarker.addStreamIndex(m_settings.m_streamIndex); + displayStreamIndex(); + applySettings(); + } + + resetContextMenuType(); +} + + +ADSBDemodGUI::ADSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : + ChannelGUI(parent), + ui(new Ui::ADSBDemodGUI), + m_pluginAPI(pluginAPI), + m_deviceUISet(deviceUISet), + m_channelMarker(this), + m_basicSettingsShown(false), + m_doApplySettings(true), + m_tickCount(0), + m_trackAircraft(nullptr) +{ + ui->setupUi(this); + ui->map->rootContext()->setContextProperty("aircraftModel", &m_aircraftModel); + + setAttribute(Qt::WA_DeleteOnClose, true); + + connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); + + m_adsbDemod = reinterpret_cast<ADSBDemod*>(rxChannel); //new ADSBDemod(m_deviceUISet->m_deviceSourceAPI); + m_adsbDemod->setMessageQueueToGUI(getInputMessageQueue()); + m_adsbDemod->propagateMessageQueueToGUI(); + + connect(&MainCore::instance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); + + ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue); + + ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); + ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); + ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); + + m_channelMarker.blockSignals(true); + m_channelMarker.setColor(Qt::red); + m_channelMarker.setBandwidth(5000); + m_channelMarker.setCenterFrequency(0); + m_channelMarker.setTitle("ADS-B Demodulator"); + m_channelMarker.blockSignals(false); + m_channelMarker.setVisible(true); // activate signal on the last setting only + + m_settings.setChannelMarker(&m_channelMarker); + + m_deviceUISet->addChannelMarker(&m_channelMarker); + m_deviceUISet->addRollupWidget(this); + + connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor())); + connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor())); + + connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + + ui->adsbData->resizeColumnsToContents(); + + // Get station position + Real stationLatitude = MainCore::instance()->getSettings().getLatitude(); + Real stationLongitude = MainCore::instance()->getSettings().getLongitude(); + Real stationAltitude = MainCore::instance()->getSettings().getAltitude(); + m_azEl.setLocation(stationLatitude, stationLongitude, stationAltitude); + + // Centre map at My Position + QQuickItem *item = ui->map->rootObject(); + QObject *object = item->findChild<QObject*>("map"); + if(object != NULL) + { + QGeoCoordinate coords = object->property("center").value<QGeoCoordinate>(); + coords.setLatitude(stationLatitude); + coords.setLongitude(stationLongitude); + object->setProperty("center", QVariant::fromValue(coords)); + } + // Move antenna icon to My Position + QObject *stationObject = item->findChild<QObject*>("station"); + if(stationObject != NULL) + { + QGeoCoordinate coords = stationObject->property("coordinate").value<QGeoCoordinate>(); + coords.setLatitude(stationLatitude); + coords.setLongitude(stationLongitude); + coords.setAltitude(stationAltitude); + stationObject->setProperty("coordinate", QVariant::fromValue(coords)); + stationObject->setProperty("stationName", QVariant::fromValue(MainCore::instance()->getSettings().getStationName())); + } + + displaySettings(); + applySettings(true); +} + +ADSBDemodGUI::~ADSBDemodGUI() +{ + delete ui; + QHash<int,Aircraft *>::iterator i = m_aircraft.begin(); + while (i != m_aircraft.end()) + { + Aircraft *a = i.value(); + delete a; + ++i; + } +} + +void ADSBDemodGUI::applySettings(bool force) +{ + if (m_doApplySettings) + { + qDebug() << "ADSBDemodGUI::applySettings"; + + ADSBDemod::MsgConfigureADSBDemod* message = ADSBDemod::MsgConfigureADSBDemod::create( m_settings, force); + m_adsbDemod->getInputMessageQueue()->push(message); + } +} + +void ADSBDemodGUI::displaySettings() +{ + m_channelMarker.blockSignals(true); + m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset); + m_channelMarker.setBandwidth(m_settings.m_rfBandwidth); + m_channelMarker.setTitle(m_settings.m_title); + m_channelMarker.blockSignals(false); + m_channelMarker.setColor(m_settings.m_rgbColor); + + setTitleColor(m_settings.m_rgbColor); + setWindowTitle(m_channelMarker.getTitle()); + + blockApplySettings(true); + + ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); + + ui->rfBWText->setText(QString("%1M").arg(m_settings.m_rfBandwidth / 1000000.0, 0, 'f', 1)); + ui->rfBW->setValue((int)m_settings.m_rfBandwidth); + + ui->spb->setCurrentIndex(m_settings.m_samplesPerBit/2-2); + + ui->thresholdText->setText(QString("%1").arg(m_settings.m_correlationThreshold, 0, 'f', 1)); + ui->threshold->setValue((int)(m_settings.m_correlationThreshold*10)); + + ui->beastEnabled->setChecked(m_settings.m_beastEnabled); + ui->host->setText(m_settings.m_beastHost); + ui->port->setValue(m_settings.m_beastPort); + + displayStreamIndex(); + + blockApplySettings(false); +} + +void ADSBDemodGUI::displayStreamIndex() +{ + if (m_deviceUISet->m_deviceMIMOEngine) { + setStreamIndicator(tr("%1").arg(m_settings.m_streamIndex)); + } else { + setStreamIndicator("S"); // single channel indicator + } +} + +void ADSBDemodGUI::leaveEvent(QEvent*) +{ + m_channelMarker.setHighlighted(false); +} + +void ADSBDemodGUI::enterEvent(QEvent*) +{ + m_channelMarker.setHighlighted(true); +} + +void ADSBDemodGUI::blockApplySettings(bool block) +{ + m_doApplySettings = !block; +} + +void ADSBDemodGUI::tick() +{ + double magsqAvg, magsqPeak; + int nbMagsqSamples; + m_adsbDemod->getMagSqLevels(magsqAvg, magsqPeak, nbMagsqSamples); + double powDbAvg = CalcDb::dbPower(magsqAvg); + double powDbPeak = CalcDb::dbPower(magsqPeak); + + ui->channelPowerMeter->levelChanged( + (100.0f + powDbAvg) / 100.0f, + (100.0f + powDbPeak) / 100.0f, + nbMagsqSamples); + + if (m_tickCount % 4 == 0) { + ui->channelPower->setText(tr("%1 dB").arg(powDbAvg, 0, 'f', 1)); + } + + m_tickCount++; + + // Tick is called 20x a second - lets check this every 10 seconds + if (m_tickCount % (20*10) == 0) + { + // Remove aircraft that haven't been heard of for a minute as probably out of range + QDateTime now = QDateTime::currentDateTime(); + qint64 nowSecs = now.toSecsSinceEpoch(); + QHash<int, Aircraft *>::iterator i = m_aircraft.begin(); + while (i != m_aircraft.end()) + { + Aircraft *aircraft = i.value(); + qint64 secondsSinceLastFrame = nowSecs - aircraft->m_time.toSecsSinceEpoch(); + if (secondsSinceLastFrame >= m_settings.m_removeTimeout) + { + // Don't try to track it anymore + if (m_trackAircraft == aircraft) + { + m_adsbDemod->clearTarget(); + m_trackAircraft = nullptr; + } + // Remove map model + m_aircraftModel.removeAircraft(aircraft); + // Remove row from table + ui->adsbData->removeRow(aircraft->m_icaoItem->row()); + // Remove aircraft from hash + i = m_aircraft.erase(i); + // And finally free its memory + delete aircraft; + } + else + ++i; + } + } +} diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.h b/plugins/channelrx/demodadsb/adsbdemodgui.h new file mode 100644 index 000000000..68c8e2511 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodgui.h @@ -0,0 +1,272 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSBDEMODGUI_H +#define INCLUDE_ADSBDEMODGUI_H + +#include <QTableWidgetItem> +#include <QGeoCoordinate> +#include <QDateTime> +#include <QAbstractListModel> + +#include "channel/channelgui.h" +#include "dsp/dsptypes.h" +#include "dsp/channelmarker.h" +#include "dsp/movingaverage.h" +#include "util/messagequeue.h" +#include "util/azel.h" + +#include "adsbdemodsettings.h" + +class PluginAPI; +class DeviceUISet; +class BasebandSampleSink; +class ADSBDemod; + +namespace Ui { + class ADSBDemodGUI; +} + +// Data about an aircraft extracted from an ADS-B frames +struct Aircraft { + int m_icao; // 24-bit ICAO aircraft address + QString m_flight; // Flight callsign + Real m_latitude; // Latitude in decimal degrees + Real m_longitude; // Longitude in decimal degrees + int m_altitude; // Altitude in feet + int m_speed; // Speed in knots + enum SpeedType { + GS, // Ground speed + TAS, // True air speed + IAS // Indicated air speed + } m_speedType; + static const char *m_speedTypeNames[]; + int m_heading; // Heading in degrees + int m_verticalRate; // Vertical climb rate in ft/min + QString m_emitterCategory; // Aircraft type + QString m_status; // Aircraft status + Real m_range; // Distance from station to aircraft + Real m_azimuth; // Azimuth from station to aircraft + Real m_elevation; // Elevation from station to aicraft; + QDateTime m_time; // When last updated + + bool m_positionValid; // Indicates if we have valid data for the above fields + bool m_altitudeValid; + bool m_speedValid; + bool m_headingValid; + bool m_verticalRateValid; + + // State for calculating position using two CPR frames + bool m_cprValid[2]; + Real m_cprLat[2]; + Real m_cprLong[2]; + + int m_adsbFrameCount; // Number of ADS-B frames for this aircraft + float m_minCorrelation; + float m_maxCorrelation; + float m_sumCorrelation; + bool m_isBeingTracked; // Are we tracking this aircraft + + // GUI table items for above data + QTableWidgetItem *m_icaoItem; + QTableWidgetItem *m_flightItem; + QTableWidgetItem *m_latitudeItem; + QTableWidgetItem *m_longitudeItem; + QTableWidgetItem *m_altitudeItem; + QTableWidgetItem *m_speedItem; + QTableWidgetItem *m_headingItem; + QTableWidgetItem *m_verticalRateItem; + QTableWidgetItem *m_emitterCategoryItem; + QTableWidgetItem *m_statusItem; + QTableWidgetItem *m_rangeItem; + QTableWidgetItem *m_azElItem; + QTableWidgetItem *m_timeItem; + QTableWidgetItem *m_adsbFrameCountItem; + QTableWidgetItem *m_correlationItem; + + Aircraft() : + m_icao(0), + m_latitude(0), + m_longitude(0), + m_altitude(0), + m_speed(0), + m_heading(0), + m_verticalRate(0), + m_azimuth(0), + m_elevation(0), + m_positionValid(false), + m_altitudeValid(false), + m_speedValid(false), + m_headingValid(false), + m_verticalRateValid(false), + m_adsbFrameCount(0), + m_minCorrelation(INFINITY), + m_maxCorrelation(-INFINITY), + m_sumCorrelation(0.0f), + m_isBeingTracked(false) + { + for (int i = 0; i < 2; i++) + { + m_cprValid[i] = false; + } + // These are deleted by QTableWidget + m_icaoItem = new QTableWidgetItem(); + m_flightItem = new QTableWidgetItem(); + m_latitudeItem = new QTableWidgetItem(); + m_longitudeItem = new QTableWidgetItem(); + m_altitudeItem = new QTableWidgetItem(); + m_speedItem = new QTableWidgetItem(); + m_headingItem = new QTableWidgetItem(); + m_verticalRateItem = new QTableWidgetItem(); + m_emitterCategoryItem = new QTableWidgetItem(); + m_statusItem = new QTableWidgetItem(); + m_rangeItem = new QTableWidgetItem(); + m_azElItem = new QTableWidgetItem(); + m_timeItem = new QTableWidgetItem(); + m_adsbFrameCountItem = new QTableWidgetItem(); + m_correlationItem = new QTableWidgetItem(); + } +}; + +// Aircraft data model used by QML map item +class AircraftModel : public QAbstractListModel { + Q_OBJECT + +public: + using QAbstractListModel::QAbstractListModel; + enum MarkerRoles{ + positionRole = Qt::UserRole + 1, + headingRole = Qt::UserRole + 2, + adsbDataRole = Qt::UserRole + 3, + aircraftImageRole = Qt::UserRole + 4, + bubbleColourRole = Qt::UserRole + 5 + }; + + Q_INVOKABLE void addAircraft(Aircraft *aircraft) { + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + m_aircrafts.append(aircraft); + endInsertRows(); + } + + int rowCount(const QModelIndex &parent = QModelIndex()) const override { + Q_UNUSED(parent) + return m_aircrafts.count(); + } + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + + void aircraftUpdated(Aircraft *aircraft) { + int row = m_aircrafts.indexOf(aircraft); + if (row >= 0) + { + QModelIndex idx = index(row); + emit dataChanged(idx, idx); + } + } + + void removeAircraft(Aircraft *aircraft) { + int row = m_aircrafts.indexOf(aircraft); + if (row >= 0) + { + beginRemoveRows(QModelIndex(), row, row); + m_aircrafts.removeAt(row); + endRemoveRows(); + } + } + + QHash<int, QByteArray> roleNames() const { + QHash<int, QByteArray> roles; + roles[positionRole] = "position"; + roles[headingRole] = "heading"; + roles[adsbDataRole] = "adsbData"; + roles[aircraftImageRole] = "aircraftImage"; + roles[bubbleColourRole] = "bubbleColour"; + return roles; + } + +private: + QList<Aircraft *> m_aircrafts; +}; + +class ADSBDemodGUI : public ChannelGUI { + Q_OBJECT + +public: + static ADSBDemodGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); + virtual void destroy(); + + void resetToDefaults(); + QByteArray serialize() const; + bool deserialize(const QByteArray& data); + virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } + +public slots: + void channelMarkerChangedByCursor(); + void channelMarkerHighlightedByCursor(); + +private: + Ui::ADSBDemodGUI* ui; + PluginAPI* m_pluginAPI; + DeviceUISet* m_deviceUISet; + ChannelMarker m_channelMarker; + ADSBDemodSettings m_settings; + bool m_basicSettingsShown; + bool m_doApplySettings; + + ADSBDemod* m_adsbDemod; + uint32_t m_tickCount; + MessageQueue m_inputMessageQueue; + + QHash<int,Aircraft *> m_aircraft; // Hashed on ICAO + AircraftModel m_aircraftModel; + + AzEl m_azEl; // Position of station + Aircraft *m_trackAircraft; // Aircraft we want to track in Channel Report + + explicit ADSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); + virtual ~ADSBDemodGUI(); + + void blockApplySettings(bool block); + void applySettings(bool force = false); + void displaySettings(); + void displayStreamIndex(); + bool handleMessage(const Message& message); + void updatePosition(Aircraft *aircraft); + void handleADSB(const QByteArray data, const QDateTime dateTime, float correlation); + + void leaveEvent(QEvent*); + void enterEvent(QEvent*); + +private slots: + void on_deltaFrequency_changed(qint64 value); + void on_rfBW_valueChanged(int value); + void on_threshold_valueChanged(int value); + void on_adsbData_cellDoubleClicked(int row, int column); + void on_spb_currentIndexChanged(int value); + void on_beastEnabled_stateChanged(int state); + void on_host_editingFinished(QString value); + void on_port_valueChanged(int value); + void onWidgetRolled(QWidget* widget, bool rollDown); + void onMenuDialogCalled(const QPoint& p); + void handleInputMessages(); + void tick(); +signals: + void homePositionChanged(); +}; + +#endif // INCLUDE_ADSBDEMODGUI_H diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.ui b/plugins/channelrx/demodadsb/adsbdemodgui.ui new file mode 100644 index 000000000..a0ffdff16 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodgui.ui @@ -0,0 +1,667 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>ADSBDemodGUI</class> + <widget class="RollupWidget" name="ADSBDemodGUI"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>350</width> + <height>1019</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>350</width> + <height>0</height> + </size> + </property> + <property name="font"> + <font> + <family>Liberation Sans</family> + <pointsize>9</pointsize> + </font> + </property> + <property name="windowTitle"> + <string>ADS-B Demodulator</string> + </property> + <widget class="QWidget" name="settingsContainer" native="true"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>340</width> + <height>101</height> + </rect> + </property> + <property name="minimumSize"> + <size> + <width>300</width> + <height>0</height> + </size> + </property> + <property name="windowTitle"> + <string>Settings</string> + </property> + <layout class="QVBoxLayout" name="verticalLayoutSettings"> + <property name="spacing"> + <number>3</number> + </property> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> + <number>2</number> + </property> + <item> + <layout class="QHBoxLayout" name="deltaFreqPowerLayout"> + <property name="topMargin"> + <number>2</number> + </property> + <item> + <layout class="QHBoxLayout" name="DeltaFrequencyLayout"> + <item> + <widget class="QLabel" name="deltaFrequencyLabel"> + <property name="minimumSize"> + <size> + <width>16</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Df</string> + </property> + </widget> + </item> + <item> + <widget class="ValueDialZ" name="deltaFrequency" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>32</width> + <height>16</height> + </size> + </property> + <property name="font"> + <font> + <family>Liberation Mono</family> + <pointsize>12</pointsize> + </font> + </property> + <property name="cursor"> + <cursorShape>PointingHandCursor</cursorShape> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + <property name="toolTip"> + <string>Demod shift frequency from center in Hz</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="deltaUnits"> + <property name="text"> + <string>Hz </string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + </layout> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="channelPower"> + <property name="minimumSize"> + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Channel power</string> + </property> + <property name="layoutDirection"> + <enum>Qt::RightToLeft</enum> + </property> + <property name="text"> + <string>-100.0 dB</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="levelMeterLayout"> + <item> + <widget class="QLabel" name="channelPowerMeterUnits"> + <property name="text"> + <string>dB</string> + </property> + </widget> + </item> + <item> + <widget class="LevelMeterSignalDB" name="channelPowerMeter" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>24</height> + </size> + </property> + <property name="font"> + <font> + <family>Liberation Mono</family> + <pointsize>8</pointsize> + </font> + </property> + <property name="toolTip"> + <string>Level meter (dB) top trace: average, bottom trace: instantaneous peak, tip: peak hold</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="rfBWLayout"> + <item> + <widget class="QLabel" name="rfBWLabel"> + <property name="text"> + <string>RFBW</string> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="rfBW"> + <property name="toolTip"> + <string>RF bandwidth</string> + </property> + <property name="minimum"> + <number>1000000</number> + </property> + <property name="maximum"> + <number>3000000</number> + </property> + <property name="singleStep"> + <number>100000</number> + </property> + <property name="pageStep"> + <number>1000000</number> + </property> + <property name="value"> + <number>2300000</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="rfBWText"> + <property name="text"> + <string>2.3M</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="Line" name="line_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="spbrLabel"> + <property name="text"> + <string>SR</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="spb"> + <property name="minimumSize"> + <size> + <width>40</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Demodulator sample rate. This should ideally be matched to baseband sample rate</string> + </property> + <item> + <property name="text"> + <string>4</string> + </property> + </item> + <item> + <property name="text"> + <string>6</string> + </property> + </item> + <item> + <property name="text"> + <string>8</string> + </property> + </item> + <item> + <property name="text"> + <string>10</string> + </property> + </item> + <item> + <property name="text"> + <string>12</string> + </property> + </item> + </widget> + </item> + <item> + <widget class="QLabel" name="spbUnit"> + <property name="text"> + <string>M</string> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="thresholdLabel"> + <property name="text"> + <string>Threshold</string> + </property> + </widget> + </item> + <item> + <widget class="QDial" name="threshold"> + <property name="maximumSize"> + <size> + <width>24</width> + <height>24</height> + </size> + </property> + <property name="toolTip"> + <string>Correlation threshold. Lower values will increase the number of frames that can be received, but require more processing.</string> + </property> + <property name="minimum"> + <number>-100</number> + </property> + <property name="maximum"> + <number>20</number> + </property> + <property name="value"> + <number>0</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="thresholdText"> + <property name="minimumSize"> + <size> + <width>30</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>-15.0</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QCheckBox" name="beastEnabled"> + <property name="toolTip"> + <string>Enable feeding of received ADS-B messages in Beast binary format to the specifed server</string> + </property> + <property name="text"> + <string>Feed</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="hostLabel"> + <property name="text"> + <string>Server</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="host"> + <property name="toolTip"> + <string>Hostname of the server to feed</string> + </property> + <property name="text"> + <string>feed.adsbexchange.com</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="portLabel"> + <property name="text"> + <string>Port</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="port"> + <property name="minimumSize"> + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Port the server is listening on</string> + </property> + <property name="minimum"> + <number>1024</number> + </property> + <property name="maximum"> + <number>65535</number> + </property> + <property name="value"> + <number>30005</number> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="dataContainer" native="true"> + <property name="geometry"> + <rect> + <x>0</x> + <y>114</y> + <width>341</width> + <height>291</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle"> + <string>ADS-B Data</string> + </property> + <layout class="QVBoxLayout" name="verticalLayoutTable"> + <property name="spacing"> + <number>2</number> + </property> + <property name="leftMargin"> + <number>3</number> + </property> + <property name="topMargin"> + <number>3</number> + </property> + <property name="rightMargin"> + <number>3</number> + </property> + <property name="bottomMargin"> + <number>3</number> + </property> + <item> + <widget class="QTableWidget" name="adsbData"> + <property name="font"> + <font> + <family>Segoe UI</family> + <pointsize>9</pointsize> + </font> + </property> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <column> + <property name="text"> + <string>ICAO ID</string> + </property> + <property name="toolTip"> + <string extracomment="Double click to search for the aircraft on www.planespotters.net"/> + </property> + </column> + <column> + <property name="text"> + <string>Flight No.</string> + </property> + </column> + <column> + <property name="text"> + <string>Latitude (°)</string> + </property> + <property name="toolTip"> + <string extracomment="Double click to centre the map on this aircraft"/> + </property> + </column> + <column> + <property name="text"> + <string>Longitude (°)</string> + </property> + <property name="toolTip"> + <string extracomment="Double click to centre the map on this aircraft"/> + </property> + </column> + <column> + <property name="text"> + <string>Altitude (ft)</string> + </property> + </column> + <column> + <property name="text"> + <string>Speed (kn)</string> + </property> + </column> + <column> + <property name="text"> + <string>Heading (°)</string> + </property> + </column> + <column> + <property name="text"> + <string>Climb (ft/min)</string> + </property> + </column> + <column> + <property name="text"> + <string>Category</string> + </property> + </column> + <column> + <property name="text"> + <string>Status</string> + </property> + </column> + <column> + <property name="text"> + <string>Range (km)</string> + </property> + </column> + <column> + <property name="text"> + <string>Az/El (°)</string> + </property> + </column> + <column> + <property name="text"> + <string>Updated</string> + </property> + </column> + <column> + <property name="text"> + <string>RX Frames</string> + </property> + </column> + <column> + <property name="text"> + <string>Correlation</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="mapContainer" native="true"> + <property name="geometry"> + <rect> + <x>10</x> + <y>420</y> + <width>331</width> + <height>581</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle"> + <string>Map</string> + </property> + <layout class="QVBoxLayout" name="verticalLayoutMap" stretch="0"> + <property name="spacing"> + <number>2</number> + </property> + <property name="leftMargin"> + <number>3</number> + </property> + <property name="topMargin"> + <number>3</number> + </property> + <property name="rightMargin"> + <number>3</number> + </property> + <property name="bottomMargin"> + <number>3</number> + </property> + <item> + <widget class="QQuickWidget" name="map"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>100</width> + <height>400</height> + </size> + </property> + <property name="toolTip"> + <string>Aircraft location map</string> + </property> + <property name="resizeMode"> + <enum>QQuickWidget::SizeRootObjectToView</enum> + </property> + <property name="source"> + <url> + <string>qrc:/map.qml</string> + </url> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + <customwidgets> + <customwidget> + <class>QQuickWidget</class> + <extends>QWidget</extends> + <header location="global">QtQuickWidgets/QQuickWidget</header> + </customwidget> + <customwidget> + <class>RollupWidget</class> + <extends>QWidget</extends> + <header>gui/rollupwidget.h</header> + <container>1</container> + </customwidget> + <customwidget> + <class>LevelMeterSignalDB</class> + <extends>QWidget</extends> + <header>gui/levelmeter.h</header> + <container>1</container> + </customwidget> + <customwidget> + <class>ValueDialZ</class> + <extends>QWidget</extends> + <header>gui/valuedialz.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>deltaFrequency</tabstop> + <tabstop>rfBW</tabstop> + <tabstop>spb</tabstop> + <tabstop>threshold</tabstop> + <tabstop>beastEnabled</tabstop> + <tabstop>host</tabstop> + <tabstop>port</tabstop> + <tabstop>adsbData</tabstop> + <tabstop>map</tabstop> + </tabstops> + <resources> + <include location="../../../sdrgui/resources/res.qrc"/> + </resources> + <connections/> +</ui> diff --git a/plugins/channelrx/demodadsb/adsbdemodreport.cpp b/plugins/channelrx/demodadsb/adsbdemodreport.cpp new file mode 100644 index 000000000..14c2a6d17 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodreport.cpp @@ -0,0 +1,21 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include "adsbdemodreport.h" + +MESSAGE_CLASS_DEFINITION(ADSBDemodReport::MsgReportADSB, Message) diff --git a/plugins/channelrx/demodadsb/adsbdemodreport.h b/plugins/channelrx/demodadsb/adsbdemodreport.h new file mode 100644 index 000000000..3ee354896 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodreport.h @@ -0,0 +1,65 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef PLUGINS_CHANNELRX_DEMOADSB_ADSBDEMODREPORT_H_ +#define PLUGINS_CHANNELRX_DEMOADSB_ADSBDEMODREPORT_H_ + +#include <QObject> +#include <QByteArray> +#include <QDateTime> + +#include "dsp/dsptypes.h" +#include "util/message.h" + +class ADSBDemodReport : public QObject +{ + Q_OBJECT +public: + class MsgReportADSB : public Message { + MESSAGE_CLASS_DECLARATION + + public: + QByteArray getData() const { return m_data; } + QDateTime getDateTime() const { return m_dateTime; } + float getPreambleCorrelation() const { return m_premableCorrelation; } + + static MsgReportADSB* create(QByteArray data, float premableCorrelation) + { + return new MsgReportADSB(data, premableCorrelation); + } + + private: + QByteArray m_data; + QDateTime m_dateTime; + float m_premableCorrelation; + + MsgReportADSB(QByteArray data, float premableCorrelation) : + Message(), + m_data(data), + m_premableCorrelation(premableCorrelation) + { + m_dateTime = QDateTime::currentDateTime(); + } + }; + +public: + ADSBDemodReport() {} + ~ADSBDemodReport() {} +}; + +#endif // PLUGINS_CHANNELRX_DEMOADSB_ADSBDEMODREPORT_H_ diff --git a/plugins/channelrx/demodadsb/adsbdemodsettings.cpp b/plugins/channelrx/demodadsb/adsbdemodsettings.cpp new file mode 100644 index 000000000..f24621a48 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodsettings.cpp @@ -0,0 +1,142 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2017 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QColor> + +#include "dsp/dspengine.h" +#include "util/simpleserializer.h" +#include "settings/serializable.h" + +#include "adsbdemodsettings.h" + +ADSBDemodSettings::ADSBDemodSettings() : + m_channelMarker(0) +{ + resetToDefaults(); +} + +void ADSBDemodSettings::resetToDefaults() +{ + m_inputFrequencyOffset = 0; + m_rfBandwidth = 2*1300000; + m_correlationThreshold = 0.0f; + m_samplesPerBit = 6; + m_removeTimeout = 60; + m_beastEnabled = false; + m_beastHost = "feed.adsbexchange.com"; + m_beastPort = 30005; + m_rgbColor = QColor(255, 0, 0).rgb(); + m_title = "ADS-B Demodulator"; + m_streamIndex = 0; + m_useReverseAPI = false; + m_reverseAPIAddress = "127.0.0.1"; + m_reverseAPIPort = 8888; + m_reverseAPIDeviceIndex = 0; + m_reverseAPIChannelIndex = 0; +} + +QByteArray ADSBDemodSettings::serialize() const +{ + SimpleSerializer s(1); + s.writeS32(1, m_inputFrequencyOffset); + s.writeReal(2, m_rfBandwidth); + s.writeReal(3, m_correlationThreshold); + s.writeS32(4, m_samplesPerBit); + s.writeS32(5, m_removeTimeout); + s.writeBool(6, m_beastEnabled); + s.writeString(7, m_beastHost); + s.writeU32(8, m_beastPort); + + s.writeU32(9, m_rgbColor); + if (m_channelMarker) { + s.writeBlob(10, m_channelMarker->serialize()); + } + s.writeString(11, m_title); + s.writeBool(12, m_useReverseAPI); + s.writeString(13, m_reverseAPIAddress); + s.writeU32(14, m_reverseAPIPort); + s.writeU32(15, m_reverseAPIDeviceIndex); + s.writeU32(16, m_reverseAPIChannelIndex); + s.writeS32(17, m_streamIndex); + + return s.final(); +} + +bool ADSBDemodSettings::deserialize(const QByteArray& data) +{ + SimpleDeserializer d(data); + + if (!d.isValid()) + { + resetToDefaults(); + return false; + } + + if (d.getVersion() == 1) + { + QByteArray bytetmp; + qint32 tmp; + uint32_t utmp; + + if (m_channelMarker) + { + d.readBlob(10, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } + + d.readS32(1, &tmp, 0); + m_inputFrequencyOffset = tmp; + d.readReal(2, &m_rfBandwidth, 2*1300000); + d.readReal(3, &m_correlationThreshold, 1.0f); + d.readS32(4, &m_samplesPerBit, 6); + d.readS32(5, &m_removeTimeout, 60); + d.readBool(6, &m_beastEnabled, false); + d.readString(7, &m_beastHost, "feed.adsbexchange.com"); + d.readU32(8, &utmp, 0); + if ((utmp > 1023) && (utmp < 65535)) { + m_beastPort = utmp; + } else { + m_beastPort = 30005; + } + + d.readU32(9, &m_rgbColor, QColor(255, 0, 0).rgb()); + d.readString(11, &m_title, "ADS-B Demodulator"); + d.readBool(12, &m_useReverseAPI, false); + d.readString(13, &m_reverseAPIAddress, "127.0.0.1"); + d.readU32(14, &utmp, 0); + + if ((utmp > 1023) && (utmp < 65535)) { + m_reverseAPIPort = utmp; + } else { + m_reverseAPIPort = 8888; + } + + d.readU32(15, &utmp, 0); + m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; + d.readU32(16, &utmp, 0); + m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; + d.readS32(17, &m_streamIndex, 0); + + return true; + } + else + { + resetToDefaults(); + return false; + } +} diff --git a/plugins/channelrx/demodadsb/adsbdemodsettings.h b/plugins/channelrx/demodadsb/adsbdemodsettings.h new file mode 100644 index 000000000..9b02d1b51 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodsettings.h @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2017 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef PLUGINS_CHANNELRX_DEMODADSB_ADSBDEMODSETTINGS_H_ +#define PLUGINS_CHANNELRX_DEMODADSB_ADSBDEMODSETTINGS_H_ + +#include <QtGlobal> +#include <QString> +#include <stdint.h> +#include "dsp/dsptypes.h" + +class Serializable; + +struct ADSBDemodSettings +{ + int32_t m_inputFrequencyOffset; + Real m_rfBandwidth; + Real m_correlationThreshold; + int m_samplesPerBit; + int m_removeTimeout; // Time in seconds before removing an aircraft, unless a new frame is received + bool m_beastEnabled; + QString m_beastHost; + uint16_t m_beastPort; + + quint32 m_rgbColor; + QString m_title; + int m_streamIndex; //!< MIMO channel. Not relevant when connected to SI (single Rx). + bool m_useReverseAPI; + QString m_reverseAPIAddress; + uint16_t m_reverseAPIPort; + uint16_t m_reverseAPIDeviceIndex; + uint16_t m_reverseAPIChannelIndex; + + Serializable *m_channelMarker; + + ADSBDemodSettings(); + void resetToDefaults(); + void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + QByteArray serialize() const; + bool deserialize(const QByteArray& data); +}; + +#endif /* PLUGINS_CHANNELRX_DEMODADSB_ADSBDEMODSETTINGS_H_ */ diff --git a/plugins/channelrx/demodadsb/adsbdemodsink.cpp b/plugins/channelrx/demodadsb/adsbdemodsink.cpp new file mode 100644 index 000000000..8812e4082 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodsink.cpp @@ -0,0 +1,278 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <stdio.h> +#include <complex.h> + +#include <QTime> +#include <QDebug> + +#include "util/stepfunctions.h" +#include "util/db.h" +#include "util/crc.h" +#include "audio/audiooutput.h" +#include "dsp/dspengine.h" +#include "dsp/dspcommands.h" +#include "dsp/devicesamplemimo.h" +#include "device/deviceapi.h" + +#include "adsbdemodreport.h" +#include "adsbdemodsink.h" +#include "adsb.h" + +ADSBDemodSink::ADSBDemodSink() : + m_channelSampleRate(6000000), + m_channelFrequencyOffset(0), + m_sampleIdx(0), + m_sampleCount(0), + m_skipCount(0), + m_magsq(0.0f), + m_magsqSum(0.0f), + m_magsqPeak(0.0f), + m_magsqCount(0), + m_messageQueueToGUI(nullptr), + m_sampleBuffer(nullptr), + m_preamble(nullptr) +{ + applySettings(m_settings, true); + applyChannelSettings(m_channelSampleRate, m_channelFrequencyOffset, true); +} + +ADSBDemodSink::~ADSBDemodSink() +{ + delete m_sampleBuffer; + delete m_preamble; +} + +void ADSBDemodSink::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end) +{ + Complex ci; + + for (SampleVector::const_iterator it = begin; it != end; ++it) + { + Complex c(it->real(), it->imag()); + c *= m_nco.nextIQ(); + + if (m_interpolatorDistance == 1.0f) + { + processOneSample(c); + } + else if (m_interpolatorDistance < 1.0f) // interpolate + { + while (!m_interpolator.interpolate(&m_interpolatorDistanceRemain, c, &ci)) + { + processOneSample(ci); + m_interpolatorDistanceRemain += m_interpolatorDistance; + } + } + else // decimate + { + if (m_interpolator.decimate(&m_interpolatorDistanceRemain, c, &ci)) + { + processOneSample(ci); + m_interpolatorDistanceRemain += m_interpolatorDistance; + } + } + } + +} + +void ADSBDemodSink::processOneSample(Complex &ci) +{ + Real sample; + + double magsqRaw = ci.real()*ci.real() + ci.imag()*ci.imag(); + Real magsq = magsqRaw / (SDR_RX_SCALED*SDR_RX_SCALED); + m_movingAverage(magsq); + m_magsqSum += magsq; + + if (magsq > m_magsqPeak) + { + m_magsqPeak = magsq; + } + m_magsqCount++; + + sample = std::sqrtf(magsq); + m_sampleBuffer[m_sampleCount] = sample; + m_sampleCount++; + + // Do we have enough data for a frame + if ((m_sampleCount >= m_totalSamples) && (m_skipCount == 0)) + { + int startIdx = m_sampleCount - m_totalSamples; + + // Correlate received signal with expected preamble + Real preambleCorrelation = 0.0f; + for (int i = 0; i < ADS_B_PREAMBLE_CHIPS*m_samplesPerChip; i++) + preambleCorrelation += m_preamble[i] * m_sampleBuffer[startIdx+i]; + + // If the correlation is exactly 0, it's probably no signal + if ((preambleCorrelation > m_settings.m_correlationThreshold) && (preambleCorrelation != 0.0f)) + { + // Skip over preamble + startIdx += m_settings.m_samplesPerBit*ADS_B_PREAMBLE_BITS; + + // Demodulate waveform to bytes + unsigned char data[ADS_B_ES_BYTES]; + int byteIdx = 0; + int currentBit; + unsigned char currentByte = 0; + bool adsbOnly = true; + int df; + + for (int bit = 0; bit < ADS_B_ES_BITS; bit++) + { + // PPM (Pulse position modulation) - Each bit spreads to two chips, 1->10, 0->01 + // Determine if bit is 1 or 0, by seeing which chip has largest combined energy over the sampling period + Real oneSum = 0.0f; + Real zeroSum = 0.0f; + for (int i = 0; i < m_samplesPerChip; i++) + { + oneSum += m_sampleBuffer[startIdx+i]; + zeroSum += m_sampleBuffer[startIdx+m_samplesPerChip+i]; + } + currentBit = oneSum > zeroSum; + startIdx += m_settings.m_samplesPerBit; + // Convert bit to bytes - MSB first + currentByte |= currentBit << (7-(bit & 0x7)); + if ((bit & 0x7) == 0x7) + { + data[byteIdx++] = currentByte; + currentByte = 0; + // Don't try to demodulate any further, if this isn't an ADS-B frame + // to help reduce processing overhead + if (adsbOnly && (bit == 7)) + { + df = ((data[0] >> 3) & ADS_B_DF_MASK); + if ((df != 17) && (df != 18)) + break; + } + } + } + + // Is ADS-B? + df = ((data[0] >> 3) & ADS_B_DF_MASK); + if ((df == 17) || (df == 18)) + { + crcadsb crc; + //int icao = (data[1] << 16) | (data[2] << 8) | data[3]; // ICAO aircraft address + int parity = (data[11] << 16) | (data[12] << 8) | data[13]; // Parity / CRC + + crc.calculate(data, ADS_B_ES_BYTES-3); + if (parity == crc.get()) + { + // Got a valid frame + // Don't try to re-demodulate the same frame + m_skipCount = (ADS_B_ES_BITS+ADS_B_PREAMBLE_BITS)*ADS_B_CHIPS_PER_BIT*m_samplesPerChip; + // Pass to GUI + if (getMessageQueueToGUI()) + { + ADSBDemodReport::MsgReportADSB *msg = ADSBDemodReport::MsgReportADSB::create(QByteArray((char*)data, sizeof(data)), preambleCorrelation); + getMessageQueueToGUI()->push(msg); + } + // Pass to worker + if (getMessageQueueToWorker()) + { + ADSBDemodReport::MsgReportADSB *msg = ADSBDemodReport::MsgReportADSB::create(QByteArray((char*)data, sizeof(data)), preambleCorrelation); + getMessageQueueToWorker()->push(msg); + } + } + } + } + } + if (m_skipCount > 0) + m_skipCount--; + if (m_sampleCount >= 2*m_totalSamples) + { + // Copy second half of buffer to first + memcpy(&m_sampleBuffer[0], &m_sampleBuffer[m_totalSamples], m_totalSamples*sizeof(Real)); + m_sampleCount = m_totalSamples; + } + m_sampleIdx++; + +} + +void ADSBDemodSink::init(int samplesPerBit) +{ + if (m_sampleBuffer) + delete m_sampleBuffer; + if (m_preamble) + delete m_preamble; + + m_totalSamples = samplesPerBit*(ADS_B_PREAMBLE_BITS+ADS_B_ES_BITS); + m_samplesPerChip = samplesPerBit/ADS_B_CHIPS_PER_BIT; + + m_sampleBuffer = new Real[2*m_totalSamples]; + m_preamble = new Real[ADS_B_PREAMBLE_CHIPS*m_samplesPerChip]; + // Possibly don't look for first chip + const int preambleChips[] = {1, -1, 1, -1, -1, -1, -1, 1, -1, 1, -1, -1, -1, -1, -1, -1}; + for (int i = 0; i < ADS_B_PREAMBLE_CHIPS; i++) + { + for (int j = 0; j < m_samplesPerChip; j++) + { + m_preamble[i*m_samplesPerChip+j] = preambleChips[i]; + } + } +} + +void ADSBDemodSink::applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, bool force) +{ + qDebug() << "ADSBDemodSink::applyChannelSettings:" + << " channelSampleRate: " << channelSampleRate + << " channelFrequencyOffset: " << channelFrequencyOffset; + + if ((channelFrequencyOffset != m_channelFrequencyOffset) || + (channelSampleRate != m_channelSampleRate) || force) + { + m_nco.setFreq(-channelFrequencyOffset, channelSampleRate); + } + + if ((channelSampleRate != m_channelSampleRate) || force) + { + m_interpolator.create(16, channelSampleRate, m_settings.m_rfBandwidth / 2.2); + m_interpolatorDistanceRemain = 0; + m_interpolatorDistance = (Real) channelSampleRate / (Real) (ADS_B_BITS_PER_SECOND * m_settings.m_samplesPerBit); + } + + m_channelSampleRate = channelSampleRate; + m_channelFrequencyOffset = channelFrequencyOffset; +} + +void ADSBDemodSink::applySettings(const ADSBDemodSettings& settings, bool force) +{ + qDebug() << "ADSBDemodSink::applySettings:" + << " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset + << " m_rfBandwidth: " << settings.m_rfBandwidth + << " m_correlationThreshold: " << settings.m_correlationThreshold + << " m_samplesPerBit: " << settings.m_samplesPerBit + << " force: " << force; + + if ((settings.m_rfBandwidth != m_settings.m_rfBandwidth) + || (settings.m_samplesPerBit != m_settings.m_samplesPerBit) || force) + { + m_interpolator.create(16, m_channelSampleRate, settings.m_rfBandwidth / 2.2); + m_interpolatorDistanceRemain = 0; + m_interpolatorDistance = (Real) m_channelSampleRate / (Real) (ADS_B_BITS_PER_SECOND * settings.m_samplesPerBit); + } + if ((settings.m_samplesPerBit != m_settings.m_samplesPerBit) || force) + { + init(settings.m_samplesPerBit); + } + + m_settings = settings; +} diff --git a/plugins/channelrx/demodadsb/adsbdemodsink.h b/plugins/channelrx/demodadsb/adsbdemodsink.h new file mode 100644 index 000000000..b57970c7b --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodsink.h @@ -0,0 +1,106 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSBDEMODSINK_H +#define INCLUDE_ADSBDEMODSINK_H + +#include <vector> + +#include "dsp/channelsamplesink.h" +#include "dsp/nco.h" +#include "dsp/interpolator.h" +#include "util/movingaverage.h" + +#include "adsbdemodsettings.h" + +class ADSBDemodSink : public ChannelSampleSink { +public: + ADSBDemodSink(); + ~ADSBDemodSink(); + + virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end); + + void getMagSqLevels(double& avg, double& peak, int& nbSamples) + { + if (m_magsqCount > 0) + { + m_magsq = m_magsqSum / m_magsqCount; + m_magSqLevelStore.m_magsq = m_magsq; + m_magSqLevelStore.m_magsqPeak = m_magsqPeak; + } + + avg = m_magSqLevelStore.m_magsq; + peak = m_magSqLevelStore.m_magsqPeak; + nbSamples = m_magsqCount == 0 ? 1 : m_magsqCount; + + m_magsqSum = 0.0f; + m_magsqPeak = 0.0f; + m_magsqCount = 0; + } + + void init(int samplesPerBit); + void applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, bool force = false); + void applySettings(const ADSBDemodSettings& settings, bool force = false); + void setMessageQueueToGUI(MessageQueue *messageQueue) { m_messageQueueToGUI = messageQueue; } + void setMessageQueueToWorker(MessageQueue *messageQueue) { m_messageQueueToWorker = messageQueue; } + +private: + struct MagSqLevelsStore + { + MagSqLevelsStore() : + m_magsq(1e-12), + m_magsqPeak(1e-12) + {} + double m_magsq; + double m_magsqPeak; + }; + + int m_channelSampleRate; + int m_channelFrequencyOffset; + ADSBDemodSettings m_settings; + + NCO m_nco; + Interpolator m_interpolator; + Real m_interpolatorDistance; + Real m_interpolatorDistanceRemain; + int m_sampleIdx; + int m_sampleCount; + int m_skipCount; // Samples to skip, because we've already received a frame + Real *m_sampleBuffer; + Real *m_preamble; + + int m_totalSamples; // These two values are derived from samplesPerBit + int m_samplesPerChip; + + double m_magsq; //!< displayed averaged value + double m_magsqSum; + double m_magsqPeak; + int m_magsqCount; + MagSqLevelsStore m_magSqLevelStore; + + MovingAverageUtil<Real, double, 32> m_movingAverage; + + MessageQueue *m_messageQueueToGUI; + MessageQueue *m_messageQueueToWorker; + + void processOneSample(Complex &ci); + MessageQueue *getMessageQueueToGUI() { return m_messageQueueToGUI; } + MessageQueue *getMessageQueueToWorker() { return m_messageQueueToWorker; } +}; + +#endif // INCLUDE_ADSBDEMODSINK_H diff --git a/plugins/channelrx/demodadsb/adsbdemodwebapiadapter.cpp b/plugins/channelrx/demodadsb/adsbdemodwebapiadapter.cpp new file mode 100644 index 000000000..d18add79d --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodwebapiadapter.cpp @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB. // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include "SWGChannelSettings.h" +#include "adsbdemod.h" +#include "adsbdemodwebapiadapter.h" + +ADSBDemodWebAPIAdapter::ADSBDemodWebAPIAdapter() +{} + +ADSBDemodWebAPIAdapter::~ADSBDemodWebAPIAdapter() +{} + +int ADSBDemodWebAPIAdapter::webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setAdsbDemodSettings(new SWGSDRangel::SWGADSBDemodSettings()); + response.getAdsbDemodSettings()->init(); + ADSBDemod::webapiFormatChannelSettings(response, m_settings); + + return 200; +} + +int ADSBDemodWebAPIAdapter::webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + ADSBDemod::webapiUpdateChannelSettings(m_settings, channelSettingsKeys, response); + + return 200; +} diff --git a/plugins/channelrx/demodadsb/adsbdemodwebapiadapter.h b/plugins/channelrx/demodadsb/adsbdemodwebapiadapter.h new file mode 100644 index 000000000..7e480d031 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodwebapiadapter.h @@ -0,0 +1,50 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB. // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSBDEMOD_WEBAPIADAPTER_H +#define INCLUDE_ADSBDEMOD_WEBAPIADAPTER_H + +#include "channel/channelwebapiadapter.h" +#include "adsbdemodsettings.h" + +/** + * Standalone API adapter only for the settings + */ +class ADSBDemodWebAPIAdapter : public ChannelWebAPIAdapter { +public: + ADSBDemodWebAPIAdapter(); + virtual ~ADSBDemodWebAPIAdapter(); + + virtual QByteArray serialize() const { return m_settings.serialize(); } + virtual bool deserialize(const QByteArray& data) { return m_settings.deserialize(data); } + + virtual int webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + + virtual int webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + +private: + ADSBDemodSettings m_settings; +}; + +#endif // INCLUDE_ADSBDEMOD_WEBAPIADAPTER_H diff --git a/plugins/channelrx/demodadsb/adsbdemodworker.cpp b/plugins/channelrx/demodadsb/adsbdemodworker.cpp new file mode 100644 index 000000000..c254f4bbc --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodworker.cpp @@ -0,0 +1,197 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QDebug> +#include <QTcpServer> +#include <QTcpSocket> +#include <QEventLoop> +#include <QTimer> + +#include "adsbdemodworker.h" +#include "adsbdemodreport.h" + +MESSAGE_CLASS_DEFINITION(ADSBDemodWorker::MsgConfigureADSBDemodWorker, Message) + +ADSBDemodWorker::ADSBDemodWorker() : + m_running(false), + m_mutex(QMutex::Recursive) +{ + connect(&m_heartbeatTimer, SIGNAL(timeout()), this, SLOT(heartbeat())); + connect(&m_socket, SIGNAL(readyRead()),this, SLOT(recv())); +} + +ADSBDemodWorker::~ADSBDemodWorker() +{ + m_inputMessageQueue.clear(); +} + +void ADSBDemodWorker::reset() +{ + QMutexLocker mutexLocker(&m_mutex); + m_inputMessageQueue.clear(); +} + +bool ADSBDemodWorker::startWork() +{ + QMutexLocker mutexLocker(&m_mutex); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + m_heartbeatTimer.start(60*1000); + m_running = true; + return m_running; +} + +void ADSBDemodWorker::stopWork() +{ + QMutexLocker mutexLocker(&m_mutex); + m_heartbeatTimer.stop(); + disconnect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + m_running = false; +} + +void ADSBDemodWorker::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != nullptr) + { + if (handleMessage(*message)) { + delete message; + } + } +} + +bool ADSBDemodWorker::handleMessage(const Message& message) +{ + if (MsgConfigureADSBDemodWorker::match(message)) + { + QMutexLocker mutexLocker(&m_mutex); + MsgConfigureADSBDemodWorker& cfg = (MsgConfigureADSBDemodWorker&) message; + + applySettings(cfg.getSettings(), cfg.getForce()); + return true; + } + else if (ADSBDemodReport::MsgReportADSB::match(message)) + { + ADSBDemodReport::MsgReportADSB& report = (ADSBDemodReport::MsgReportADSB&) message; + handleADSB(report.getData(), report.getDateTime(), report.getPreambleCorrelation()); + return true; + } + else + { + return false; + } +} + +void ADSBDemodWorker::applySettings(const ADSBDemodSettings& settings, bool force) +{ + qDebug() << "ADSBDemodWorker::applySettings:" + << " m_beastEnabled: " << settings.m_beastEnabled + << " m_beastHost: " << settings.m_beastHost + << " m_beastPort: " << settings.m_beastPort + << " force: " << force; + + if ((settings.m_beastEnabled != m_settings.m_beastEnabled) + || (settings.m_beastHost != m_settings.m_beastHost) + || (settings.m_beastPort != m_settings.m_beastPort) || force) + { + // Close any existing connection + if (m_socket.isOpen()) + m_socket.close(); + // Open connection + if (settings.m_beastEnabled) + m_socket.connectToHost(settings.m_beastHost, settings.m_beastPort); + } + + m_settings = settings; +} + +void ADSBDemodWorker::recv() +{ + // Not expecting to receving anything from server + qDebug() << "ADSBDemodWorker::recv"; + qDebug() << m_socket.readAll(); +} + +void ADSBDemodWorker::send(const char *data, int length) +{ + if (m_settings.m_beastEnabled) + { + // Reopen connection if it was lost + if (!m_socket.isOpen()) + m_socket.connectToHost(m_settings.m_beastHost, m_settings.m_beastPort); + // Send data + m_socket.write(data, length); + } +} + +#define BEAST_ESC 0x1a + +char *ADSBDemodWorker::escape(char *p, char c) +{ + *p++ = c; + if (c == BEAST_ESC) + *p++ = BEAST_ESC; + return p; +} + +// Forward ADS-B data in Beast binary format to specified server +// See: https://wiki.jetvision.de/wiki/Mode-S_Beast:Data_Output_Formats +void ADSBDemodWorker::handleADSB(QByteArray data, const QDateTime dateTime, float correlation) +{ + char beastBinary[2+6*2+1*2+14*2]; + int length; + char *p = beastBinary; + qint64 timestamp; + unsigned char signalStrength; + + timestamp = dateTime.toMSecsSinceEpoch(); + + if (correlation > 255) + signalStrength = 255; + if (correlation < 1) + signalStrength = 1; + else + signalStrength = (unsigned char)correlation; + + *p++ = BEAST_ESC; + *p++ = '3'; // Mode-S long + + p = escape(p, timestamp >> 56); // Big-endian timestamp + p = escape(p, timestamp >> 48); + p = escape(p, timestamp >> 32); + p = escape(p, timestamp >> 24); + p = escape(p, timestamp >> 16); + p = escape(p, timestamp >> 8); + p = escape(p, timestamp); + + p = escape(p, signalStrength); // Signal strength + + for (int i = 0; i < data.length(); i++) // ADS-B data + p = escape(p, data[i]); + + length = p - beastBinary; + + send(beastBinary, length); +} + +// Periodically send heartbeat to keep connection alive +void ADSBDemodWorker::heartbeat() +{ + const char heartbeat[] = {BEAST_ESC, '1', 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Mode AC packet + send(heartbeat, sizeof(heartbeat)); +} diff --git a/plugins/channelrx/demodadsb/adsbdemodworker.h b/plugins/channelrx/demodadsb/adsbdemodworker.h new file mode 100644 index 000000000..8a592205b --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbdemodworker.h @@ -0,0 +1,87 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSBDEMODWORKER_H +#define INCLUDE_ADSBDEMODWORKER_H + +#include <QObject> +#include <QTimer> +#include <QTcpSocket> + +#include "util/message.h" +#include "util/messagequeue.h" + +#include "adsbdemodsettings.h" + +class ADSBDemodWorker : public QObject +{ + Q_OBJECT +public: + class MsgConfigureADSBDemodWorker : public Message { + MESSAGE_CLASS_DECLARATION + + public: + const ADSBDemodSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } + + static MsgConfigureADSBDemodWorker* create(const ADSBDemodSettings& settings, bool force) + { + return new MsgConfigureADSBDemodWorker(settings, force); + } + + private: + ADSBDemodSettings m_settings; + bool m_force; + + MsgConfigureADSBDemodWorker(const ADSBDemodSettings& settings, bool force) : + Message(), + m_settings(settings), + m_force(force) + { } + }; + + ADSBDemodWorker(); + ~ADSBDemodWorker(); + void reset(); + bool startWork(); + void stopWork(); + bool isRunning() const { return m_running; } + MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } + +private: + + MessageQueue m_inputMessageQueue; + ADSBDemodSettings m_settings; + bool m_running; + QMutex m_mutex; + QTimer m_heartbeatTimer; + QTcpSocket m_socket; + + bool handleMessage(const Message& cmd); + void applySettings(const ADSBDemodSettings& settings, bool force = false); + void send(const char *data, int length); + char *escape(char *p, char c); + void handleADSB(QByteArray data, const QDateTime dateTime, float correlation); + +private slots: + void handleInputMessages(); + void recv(); + void heartbeat(); +}; + +#endif // INCLUDE_ADSBDEMODWORKER_H diff --git a/plugins/channelrx/demodadsb/adsbplugin.cpp b/plugins/channelrx/demodadsb/adsbplugin.cpp new file mode 100644 index 000000000..2b44dd522 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbplugin.cpp @@ -0,0 +1,92 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QtPlugin> +#include "plugin/pluginapi.h" + +#include "adsbplugin.h" +#ifndef SERVER_MODE +#include "adsbdemodgui.h" +#endif +#include "adsbdemod.h" +#include "adsbdemodwebapiadapter.h" +#include "adsbplugin.h" + +const PluginDescriptor ADSBPlugin::m_pluginDescriptor = { + ADSBDemod::m_channelId, + QString("ADS-B Demodulator"), + QString("4.20.0"), + QString("(c) Jon Beniston, M7RCE"), + QString("https://github.com/f4exb/sdrangel"), + true, + QString("https://github.com/f4exb/sdrangel") +}; + +ADSBPlugin::ADSBPlugin(QObject* parent) : + QObject(parent), + m_pluginAPI(0) +{ +} + +const PluginDescriptor& ADSBPlugin::getPluginDescriptor() const +{ + return m_pluginDescriptor; +} + +void ADSBPlugin::initPlugin(PluginAPI* pluginAPI) +{ + m_pluginAPI = pluginAPI; + + // register demodulator + m_pluginAPI->registerRxChannel(ADSBDemod::m_channelIdURI, ADSBDemod::m_channelId, this); +} + +void ADSBPlugin::createRxChannel(DeviceAPI *deviceAPI, BasebandSampleSink **bs, ChannelAPI **cs) const +{ + if (bs || cs) + { + ADSBDemod *instance = new ADSBDemod(deviceAPI); + + if (bs) { + *bs = instance; + } + + if (cs) { + *cs = instance; + } + } +} + +#ifdef SERVER_MODE +ChannelGUI* ADSBPlugin::createRxChannelGUI( + DeviceUISet *deviceUISet, + BasebandSampleSink *rxChannel) const +{ + return 0; +} +#else +ChannelGUI* ADSBPlugin::createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) const +{ + return ADSBDemodGUI::create(m_pluginAPI, deviceUISet, rxChannel); +} +#endif + +ChannelWebAPIAdapter* ADSBPlugin::createChannelWebAPIAdapter() const +{ + return new ADSBDemodWebAPIAdapter(); +} diff --git a/plugins/channelrx/demodadsb/adsbplugin.h b/plugins/channelrx/demodadsb/adsbplugin.h new file mode 100644 index 000000000..b43a49051 --- /dev/null +++ b/plugins/channelrx/demodadsb/adsbplugin.h @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_ADSBPLUGIN_H +#define INCLUDE_ADSBPLUGIN_H + +#include <QObject> +#include "plugin/plugininterface.h" + +class DeviceUISet; +class BasebandSampleSink; + +class ADSBPlugin : public QObject, PluginInterface { + Q_OBJECT + Q_INTERFACES(PluginInterface) + Q_PLUGIN_METADATA(IID "sdrangel.channel.adsbdemod") + +public: + explicit ADSBPlugin(QObject* parent = NULL); + + const PluginDescriptor& getPluginDescriptor() const; + void initPlugin(PluginAPI* pluginAPI); + + virtual void createRxChannel(DeviceAPI *deviceAPI, BasebandSampleSink **bs, ChannelAPI **cs) const; + virtual ChannelGUI* createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) const; + virtual ChannelWebAPIAdapter* createChannelWebAPIAdapter() const; + +private: + static const PluginDescriptor m_pluginDescriptor; + + PluginAPI* m_pluginAPI; +}; + +#endif // INCLUDE_ADSBPLUGIN_H diff --git a/plugins/channelrx/demodadsb/readme.md b/plugins/channelrx/demodadsb/readme.md new file mode 100644 index 000000000..dd2f603c5 --- /dev/null +++ b/plugins/channelrx/demodadsb/readme.md @@ -0,0 +1,86 @@ +<h1>ADS-B demodulator plugin</h1> + +<h2>Introduction</h2> + +This plugin can be used to receive and display ADS-B aircraft information. This is information about an aircraft, such as position, altitude, heading and speed, broadcast by aircraft on 1090MHz, in the 1090ES (Extended Squitter) format. 1090ES frames have a chip rate of 2Mchip/s, so the baseband sample rate should be set to be greater than 2MSa/s. + +<h2>Interface</h2> + + + +<h3>1: Frequency shift from center frequency of reception value</h3> + +Use the wheels to adjust the frequency shift in Hz from the center frequency of reception. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. Wheels are moved with the mousewheel while pointing at the wheel or by selecting the wheel with the left mouse click and using the keyboard arrows. Pressing shift simultaneously moves digit by 5 and pressing control moves it by 2. Left click on a digit sets the cursor position at this digit. + +<h3>2: Channel power</h3> + +Average total power in dB relative to a +/- 1.0 amplitude signal received in the pass band. + +<h3>3: Level meter in dB</h3> + + - top bar (green): average value + - bottom bar (blue green): instantaneous peak value + - tip vertical bar (bright green): peak hold value + +<h3>4: RF bandwidth</h3> + +This is the bandwidth in MHz of the channel signal before demodulation. + +<h3>5: SR - Channel Sample Rate</h3> + +This specifies the channel sample rate the demodulator uses. Values of 4M-12MSa/s are supported, 2MSa/s steps. Ideally, this should be set to the same value as the baseband sample rate (the sample rate received from the radio). If it is different from the baseband sample rate, interpolation or decimation will be performed as needed to match the rates. However, interpolation currently requires a significant amount of processing power and may result in dropped samples. + +Higher channel sample rates may help decode more frames, but will require more processing power. + +<h3>6: Threshold</h3> + +This sets the correlation threshold between the received signal and expected 1090ES preamble, that is required to be exceeded before the demodulator will try to decode a frame. Lower values should decode more frames, but will require more processing power. + +<h3>7: Feed</h3> + +Checking Feed enables feeding received ADS-B frames to aggregators such as ADS-B Exchange: https://www.adsbexchange.com The server name and port to send the frames to should be entered in the Server and Port fields. For ADS-B Exchange, set Server to feed.adsbexchange.com and Port to 30005. You can check if you are feeding data to ADS-B Exchange (after about 30 seconds) at: https://www.adsbexchange.com/myip/ Frames are forwarded in the Beast binary format as described here: https://wiki.jetvision.de/wiki/Mode-S_Beast:Data_Output_Formats + +<h3>ADS-B Data</h3> + +The table displays the decoded ADS-B data for each aircraft. The data is not all able to be transmitted in a single ADS-B frame, so the table displays an amalgamation of the latest received data of each type. + + + +* ICAO ID - 24-bit hexidecimal ICAO aircraft address. This is unique for each aircraft. +* Flight No. - Airline flight number or callsign. +* Latitude - Vertical position coordinate, in decimal degrees. +* Longitude - Horizontal position coordinate, in decimal degrees. +* Altitude - Altitude in feet. +* Speed - Speed (either ground speed, indicated airspeed, or true airspeed) in knots. +* Heading - The direction the aircraft is heading, in degrees. +* Climb - The vertical climb rate (or descent rate if negative) in feet/minute. +* Categoty - The vehicle category, such as Light, Large, Heavy or Rotorcraft. +* Range - The range (distance) to the aircraft from the receiving antenna in kilometres. The location of the receiving antenna is set under the Preferences > My Position menu. +* Az/El - The azimuth and elevation angles to the aircraft from the receiving antenna in degrees. These values can be sent to a rotator controller to track the aircraft. +* Updated - The local time at which the last ADS-B message was received. +* RX Frames - A count of the number of ADS-B frames received from this aircraft. +* Correlation - Displays the minimum, average and maximum of the preamable correlation for each recevied frame. These values can be used to help select a threshold setting. + +A suffix of L in the latitude and longitude columns, indicates the position is based on a local decode, using a single received frame and the position of the radio station. No suffix will be added for a global decode, which is based upon receving and odd and even frame. +If an ADS-B frame has not been received from an aircraft for 60 seconds, the aircraft is removed from the table and map. + +Double clicking in an ICAO ID cell will open a Web browser and search for the corresponding aircraft on https://www.planespotters.net/ +Double clicking in an Flight No cell will open a Web browser and search for the corresponding flight on https://www.flightradar24.com/ +Double clicking in an Az/El cell will set the aircraft as the active target. The azimuth and elevation to the aicraft will be sent to a rotator controller plugin. The aircraft text will be coloured green, rather than blue, on the map. +Double clicking on any other cell in the table will centre the map on the corresponding aircraft. + +<h3>Map</h3> + +The map displays aircraft locations and data geographically. + + + +The initial antenna location is placed according to My Position set under the Preferences > My Position menu. The position is only updated when the ADS-B demodulator plugin is first opened. + +Aircraft are only placed upon the map when a position can be calculated, which can require several frames to be received. + +To pan around the map, click the left mouse button and drag. To zoom in or out, use the mouse scroll wheel. + +<h3>Attribution</h3> + +Icons are by Alice Design, Alex Ahineev, Verry Obito, Sean Maldjia, Tinashe Mugayi, Andreas V�gele and Angriawan Ditya Zulkarnain from the Noun Project https://thenounproject.com/ diff --git a/plugins/feature/CMakeLists.txt b/plugins/feature/CMakeLists.txt index 58a75ed42..6d80a3cd6 100644 --- a/plugins/feature/CMakeLists.txt +++ b/plugins/feature/CMakeLists.txt @@ -1,4 +1,7 @@ project(feature) +if (Qt5SerialPort_FOUND) + add_subdirectory(gs232controller) +endif() add_subdirectory(rigctlserver) add_subdirectory(simpleptt) diff --git a/plugins/feature/gs232controller/CMakeLists.txt b/plugins/feature/gs232controller/CMakeLists.txt new file mode 100644 index 000000000..c5d99df76 --- /dev/null +++ b/plugins/feature/gs232controller/CMakeLists.txt @@ -0,0 +1,64 @@ +project(gs232controller) + +set(gs232controller_SOURCES + gs232controller.cpp + gs232controllersettings.cpp + gs232controllerplugin.cpp + gs232controllerworker.cpp + gs232controllerwebapiadapter.cpp +) + +set(gs232controller_HEADERS + gs232controller.h + gs232controllersettings.h + gs232controllerplugin.h + gs232controllerreport.h + gs232controllerworker.h + gs232controllerwebapiadapter.h +) + +include_directories( + ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client +) + +if(NOT SERVER_MODE) + set(gs232controller_SOURCES + ${gs232controller_SOURCES} + gs232controllergui.cpp + gs232controllergui.ui + ) + set(gs232controller_HEADERS + ${gs232controller_HEADERS} + gs232controllergui.h + ) + + set(TARGET_NAME featuregs232controller) + set(TARGET_LIB Qt5::Widgets) + set(TARGET_LIB_GUI "sdrgui") + set(INSTALL_FOLDER ${INSTALL_PLUGINS_DIR}) +else() + set(TARGET_NAME featuregs232controllersrv) + set(TARGET_LIB "") + set(TARGET_LIB_GUI "") + set(INSTALL_FOLDER ${INSTALL_PLUGINSSRV_DIR}) +endif() + +add_library(${TARGET_NAME} SHARED + ${gs232controller_SOURCES} +) + +target_link_libraries(${TARGET_NAME} + Qt5::Core + Qt5::SerialPort + ${TARGET_LIB} + sdrbase + ${TARGET_LIB_GUI} +) + +install(TARGETS ${TARGET_NAME} DESTINATION ${INSTALL_FOLDER}) + +if(WIN32) + # Run deployqt for serial libraries + include(DeployQt) + windeployqt(${TARGET_NAME} ${SDRANGEL_BINARY_BIN_DIR} ${PROJECT_SOURCE_DIR}/../../../sdrgui/resources) +endif() diff --git a/plugins/feature/gs232controller/gs232controller.cpp b/plugins/feature/gs232controller/gs232controller.cpp new file mode 100644 index 000000000..d88b3dc90 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controller.cpp @@ -0,0 +1,425 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QDebug> +#include <QNetworkAccessManager> +#include <QNetworkReply> +#include <QBuffer> + +#include "SWGFeatureSettings.h" +#include "SWGFeatureReport.h" +#include "SWGFeatureActions.h" +#include "SWGSimplePTTReport.h" +#include "SWGDeviceState.h" + +#include "dsp/dspengine.h" + +#include "gs232controllerworker.h" +#include "gs232controller.h" + +MESSAGE_CLASS_DEFINITION(GS232Controller::MsgConfigureGS232Controller, Message) +MESSAGE_CLASS_DEFINITION(GS232Controller::MsgStartStop, Message) + +const QString GS232Controller::m_featureIdURI = "sdrangel.feature.gs232controller"; +const QString GS232Controller::m_featureId = "GS232Controller"; + +GS232Controller::GS232Controller(WebAPIAdapterInterface *webAPIAdapterInterface) : + Feature(m_featureIdURI, webAPIAdapterInterface), + m_ptt(false) +{ + qDebug("GS232Controller::GS232Controller: webAPIAdapterInterface: %p", webAPIAdapterInterface); + setObjectName(m_featureId); + m_worker = new GS232ControllerWorker(webAPIAdapterInterface); + m_state = StIdle; + m_errorMessage = "GS232Controller error"; +} + +GS232Controller::~GS232Controller() +{ + if (m_worker->isRunning()) { + stop(); + } + + delete m_worker; +} + +void GS232Controller::start() +{ + qDebug("GS232Controller::start"); + + m_worker->reset(); + m_worker->setMessageQueueToFeature(getInputMessageQueue()); + m_worker->setMessageQueueToGUI(getMessageQueueToGUI()); + bool ok = m_worker->startWork(); + m_state = ok ? StRunning : StError; + m_thread.start(); + + GS232ControllerWorker::MsgConfigureGS232ControllerWorker *msg = GS232ControllerWorker::MsgConfigureGS232ControllerWorker::create(m_settings, true); + m_worker->getInputMessageQueue()->push(msg); +} + +void GS232Controller::stop() +{ + qDebug("GS232Controller::stop"); + m_worker->stopWork(); + m_state = StIdle; + m_thread.quit(); + m_thread.wait(); +} + +bool GS232Controller::handleMessage(const Message& cmd) +{ + if (MsgConfigureGS232Controller::match(cmd)) + { + MsgConfigureGS232Controller& cfg = (MsgConfigureGS232Controller&) cmd; + qDebug() << "GS232Controller::handleMessage: MsgConfigureGS232Controller"; + applySettings(cfg.getSettings(), cfg.getForce()); + + return true; + } + else if (MsgStartStop::match(cmd)) + { + MsgStartStop& cfg = (MsgStartStop&) cmd; + qDebug() << "GS232Controller::handleMessage: MsgStartStop: start:" << cfg.getStartStop(); + + if (cfg.getStartStop()) { + start(); + } else { + stop(); + } + + return true; + } + else if (GS232ControllerSettings::MsgChannelIndexChange::match(cmd)) + { + GS232ControllerSettings::MsgChannelIndexChange& cfg = (GS232ControllerSettings::MsgChannelIndexChange&) cmd; + int newChannelIndex = cfg.getIndex(); + qDebug() << "GS232Controller::handleMessage: MsgChannelIndexChange: " << newChannelIndex; + GS232ControllerSettings settings = m_settings; + settings.m_channelIndex = newChannelIndex; + applySettings(settings, false); + + if (getMessageQueueToGUI()) + { + GS232ControllerSettings::MsgChannelIndexChange *msg = new GS232ControllerSettings::MsgChannelIndexChange(cfg); + getMessageQueueToGUI()->push(msg); + } + + return true; + } + else + { + return false; + } +} + +QByteArray GS232Controller::serialize() const +{ + return m_settings.serialize(); +} + +bool GS232Controller::deserialize(const QByteArray& data) +{ + if (m_settings.deserialize(data)) + { + MsgConfigureGS232Controller *msg = MsgConfigureGS232Controller::create(m_settings, true); + m_inputMessageQueue.push(msg); + return true; + } + else + { + m_settings.resetToDefaults(); + MsgConfigureGS232Controller *msg = MsgConfigureGS232Controller::create(m_settings, true); + m_inputMessageQueue.push(msg); + return false; + } +} + +void GS232Controller::applySettings(const GS232ControllerSettings& settings, bool force) +{ + qDebug() << "GS232Controller::applySettings:" + << " m_azimuth: " << settings.m_azimuth + << " m_elevation: " << settings.m_elevation + << " m_serialPort: " << settings.m_serialPort + << " m_baudRate: " << settings.m_baudRate + << " m_track: " << settings.m_track + << " m_deviceIndex: " << settings.m_deviceIndex + << " m_channelIndex: " << settings.m_channelIndex + << " m_title: " << settings.m_title + << " m_rgbColor: " << settings.m_rgbColor + << " m_useReverseAPI: " << settings.m_useReverseAPI + << " m_reverseAPIAddress: " << settings.m_reverseAPIAddress + << " m_reverseAPIPort: " << settings.m_reverseAPIPort + << " m_reverseAPIFeatureSetIndex: " << settings.m_reverseAPIFeatureSetIndex + << " m_reverseAPIFeatureIndex: " << settings.m_reverseAPIFeatureIndex + << " force: " << force; + + QList<QString> reverseAPIKeys; + + if ((m_settings.m_azimuth != settings.m_azimuth) || force) { + reverseAPIKeys.append("azimuth"); + } + if ((m_settings.m_elevation != settings.m_elevation) || force) { + reverseAPIKeys.append("elevation"); + } + if ((m_settings.m_serialPort != settings.m_serialPort) || force) { + reverseAPIKeys.append("serialPort"); + } + if ((m_settings.m_baudRate != settings.m_baudRate) || force) { + reverseAPIKeys.append("baudRate"); + } + if ((m_settings.m_track != settings.m_track) || force) { + reverseAPIKeys.append("track"); + } + if ((m_settings.m_deviceIndex != settings.m_deviceIndex) || force) { + reverseAPIKeys.append("deviceIndex"); + } + if ((m_settings.m_channelIndex != settings.m_channelIndex) || force) { + reverseAPIKeys.append("channelIndex"); + } + if ((m_settings.m_title != settings.m_title) || force) { + reverseAPIKeys.append("title"); + } + if ((m_settings.m_rgbColor != settings.m_rgbColor) || force) { + reverseAPIKeys.append("rgbColor"); + } + + GS232ControllerWorker::MsgConfigureGS232ControllerWorker *msg = GS232ControllerWorker::MsgConfigureGS232ControllerWorker::create( + settings, force + ); + m_worker->getInputMessageQueue()->push(msg); + + if (settings.m_useReverseAPI) + { + bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) || + (m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) || + (m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) || + (m_settings.m_reverseAPIFeatureSetIndex != settings.m_reverseAPIFeatureSetIndex) || + (m_settings.m_reverseAPIFeatureIndex != settings.m_reverseAPIFeatureIndex); + webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force); + } + + m_settings = settings; +} + +int GS232Controller::webapiRun(bool run, + SWGSDRangel::SWGDeviceState& response, + QString& errorMessage) +{ + getFeatureStateStr(*response.getState()); + MsgStartStop *msg = MsgStartStop::create(run); + getInputMessageQueue()->push(msg); + return 202; +} + +int GS232Controller::webapiSettingsGet( + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setGs232ControllerSettings(new SWGSDRangel::SWGGS232ControllerSettings()); + response.getGs232ControllerSettings()->init(); + webapiFormatFeatureSettings(response, m_settings); + return 200; +} + +int GS232Controller::webapiSettingsPutPatch( + bool force, + const QStringList& featureSettingsKeys, + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + GS232ControllerSettings settings = m_settings; + webapiUpdateFeatureSettings(settings, featureSettingsKeys, response); + + MsgConfigureGS232Controller *msg = MsgConfigureGS232Controller::create(settings, force); + m_inputMessageQueue.push(msg); + + qDebug("GS232Controller::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureGS232Controller *msgToGUI = MsgConfigureGS232Controller::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatFeatureSettings(response, settings); + + return 200; +} + +void GS232Controller::webapiFormatFeatureSettings( + SWGSDRangel::SWGFeatureSettings& response, + const GS232ControllerSettings& settings) +{ + response.getGs232ControllerSettings()->setAzimuth(settings.m_azimuth); + response.getGs232ControllerSettings()->setElevation(settings.m_elevation); + response.getGs232ControllerSettings()->setSerialPort(new QString(settings.m_serialPort)); + response.getGs232ControllerSettings()->setBaudRate(settings.m_baudRate); + response.getGs232ControllerSettings()->setTrack(settings.m_track); + response.getGs232ControllerSettings()->setDeviceIndex(settings.m_deviceIndex); + response.getGs232ControllerSettings()->setChannelIndex(settings.m_channelIndex); + + if (response.getGs232ControllerSettings()->getTitle()) { + *response.getGs232ControllerSettings()->getTitle() = settings.m_title; + } else { + response.getGs232ControllerSettings()->setTitle(new QString(settings.m_title)); + } + + response.getGs232ControllerSettings()->setRgbColor(settings.m_rgbColor); + response.getGs232ControllerSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); + + if (response.getGs232ControllerSettings()->getReverseApiAddress()) { + *response.getGs232ControllerSettings()->getReverseApiAddress() = settings.m_reverseAPIAddress; + } else { + response.getGs232ControllerSettings()->setReverseApiAddress(new QString(settings.m_reverseAPIAddress)); + } + + response.getGs232ControllerSettings()->setReverseApiPort(settings.m_reverseAPIPort); + response.getGs232ControllerSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIFeatureSetIndex); + response.getGs232ControllerSettings()->setReverseApiChannelIndex(settings.m_reverseAPIFeatureIndex); +} + +void GS232Controller::webapiUpdateFeatureSettings( + GS232ControllerSettings& settings, + const QStringList& featureSettingsKeys, + SWGSDRangel::SWGFeatureSettings& response) +{ + if (featureSettingsKeys.contains("azimuth")) { + settings.m_azimuth = response.getGs232ControllerSettings()->getAzimuth(); + } + if (featureSettingsKeys.contains("elevation")) { + settings.m_elevation = response.getGs232ControllerSettings()->getElevation(); + } + if (featureSettingsKeys.contains("serialPort")) { + settings.m_serialPort = *response.getGs232ControllerSettings()->getSerialPort(); + } + if (featureSettingsKeys.contains("baudRate")) { + settings.m_serialPort = response.getGs232ControllerSettings()->getBaudRate(); + } + if (featureSettingsKeys.contains("track")) { + settings.m_track = response.getGs232ControllerSettings()->getTrack() != 0; + } + if (featureSettingsKeys.contains("deviceIndex")) { + settings.m_deviceIndex = response.getGs232ControllerSettings()->getDeviceIndex(); + } + if (featureSettingsKeys.contains("channelIndex")) { + settings.m_channelIndex = response.getGs232ControllerSettings()->getChannelIndex(); + } + if (featureSettingsKeys.contains("title")) { + settings.m_title = *response.getGs232ControllerSettings()->getTitle(); + } + if (featureSettingsKeys.contains("rgbColor")) { + settings.m_rgbColor = response.getGs232ControllerSettings()->getRgbColor(); + } + if (featureSettingsKeys.contains("useReverseAPI")) { + settings.m_useReverseAPI = response.getGs232ControllerSettings()->getUseReverseApi() != 0; + } + if (featureSettingsKeys.contains("reverseAPIAddress")) { + settings.m_reverseAPIAddress = *response.getGs232ControllerSettings()->getReverseApiAddress(); + } + if (featureSettingsKeys.contains("reverseAPIPort")) { + settings.m_reverseAPIPort = response.getGs232ControllerSettings()->getReverseApiPort(); + } + if (featureSettingsKeys.contains("reverseAPIDeviceIndex")) { + settings.m_reverseAPIFeatureSetIndex = response.getGs232ControllerSettings()->getReverseApiDeviceIndex(); + } + if (featureSettingsKeys.contains("reverseAPIChannelIndex")) { + settings.m_reverseAPIFeatureIndex = response.getGs232ControllerSettings()->getReverseApiChannelIndex(); + } +} + +void GS232Controller::webapiReverseSendSettings(QList<QString>& featureSettingsKeys, const GS232ControllerSettings& settings, bool force) +{ + SWGSDRangel::SWGFeatureSettings *swgFeatureSettings = new SWGSDRangel::SWGFeatureSettings(); + // swgFeatureSettings->setOriginatorFeatureIndex(getIndexInDeviceSet()); + // swgFeatureSettings->setOriginatorFeatureSetIndex(getDeviceSetIndex()); + swgFeatureSettings->setFeatureType(new QString("GS232Controller")); + swgFeatureSettings->setGs232ControllerSettings(new SWGSDRangel::SWGGS232ControllerSettings()); + SWGSDRangel::SWGGS232ControllerSettings *swgGS232ControllerSettings = swgFeatureSettings->getGs232ControllerSettings(); + + // transfer data that has been modified. When force is on transfer all data except reverse API data + + if (featureSettingsKeys.contains("azimuth") || force) { + swgGS232ControllerSettings->setAzimuth(settings.m_azimuth); + } + if (featureSettingsKeys.contains("elevation") || force) { + swgGS232ControllerSettings->setElevation(settings.m_elevation); + } + if (featureSettingsKeys.contains("serialPort") || force) { + swgGS232ControllerSettings->setSerialPort(new QString(settings.m_serialPort)); + } + if (featureSettingsKeys.contains("baudRate") || force) { + swgGS232ControllerSettings->setBaudRate(settings.m_baudRate); + } + if (featureSettingsKeys.contains("track") || force) { + swgGS232ControllerSettings->setTrack(settings.m_track); + } + if (featureSettingsKeys.contains("deviceIndex") || force) { + swgGS232ControllerSettings->setDeviceIndex(settings.m_deviceIndex); + } + if (featureSettingsKeys.contains("channelIndex") || force) { + swgGS232ControllerSettings->setChannelIndex(settings.m_channelIndex); + } + if (featureSettingsKeys.contains("title") || force) { + swgGS232ControllerSettings->setTitle(new QString(settings.m_title)); + } + if (featureSettingsKeys.contains("rgbColor") || force) { + swgGS232ControllerSettings->setRgbColor(settings.m_rgbColor); + } + + QString channelSettingsURL = QString("http://%1:%2/sdrangel/featureset/%3/feature/%4/settings") + .arg(settings.m_reverseAPIAddress) + .arg(settings.m_reverseAPIPort) + .arg(settings.m_reverseAPIFeatureSetIndex) + .arg(settings.m_reverseAPIFeatureIndex); + m_networkRequest.setUrl(QUrl(channelSettingsURL)); + m_networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + QBuffer *buffer = new QBuffer(); + buffer->open((QBuffer::ReadWrite)); + buffer->write(swgFeatureSettings->asJson().toUtf8()); + buffer->seek(0); + + // Always use PATCH to avoid passing reverse API settings + QNetworkReply *reply = m_networkManager->sendCustomRequest(m_networkRequest, "PATCH", buffer); + buffer->setParent(reply); + + delete swgFeatureSettings; +} + +void GS232Controller::networkManagerFinished(QNetworkReply *reply) +{ + QNetworkReply::NetworkError replyError = reply->error(); + + if (replyError) + { + qWarning() << "GS232Controller::networkManagerFinished:" + << " error(" << (int) replyError + << "): " << replyError + << ": " << reply->errorString(); + } + else + { + QString answer = reply->readAll(); + answer.chop(1); // remove last \n + qDebug("GS232Controller::networkManagerFinished: reply:\n%s", answer.toStdString().c_str()); + } + + reply->deleteLater(); +} diff --git a/plugins/feature/gs232controller/gs232controller.h b/plugins/feature/gs232controller/gs232controller.h new file mode 100644 index 000000000..d101992f3 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controller.h @@ -0,0 +1,140 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_FEATURE_GS232CONTROLLER_H_ +#define INCLUDE_FEATURE_GS232CONTROLLER_H_ + +#include <QThread> +#include <QNetworkRequest> + +#include "feature/feature.h" +#include "util/message.h" + +#include "gs232controllersettings.h" + +class WebAPIAdapterInterface; +class GS232ControllerWorker; +class QNetworkAccessManager; +class QNetworkReply; + +namespace SWGSDRangel { + class SWGDeviceState; +} + +class GS232Controller : public Feature +{ + Q_OBJECT +public: + class MsgConfigureGS232Controller : public Message { + MESSAGE_CLASS_DECLARATION + + public: + const GS232ControllerSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } + + static MsgConfigureGS232Controller* create(const GS232ControllerSettings& settings, bool force) { + return new MsgConfigureGS232Controller(settings, force); + } + + private: + GS232ControllerSettings m_settings; + bool m_force; + + MsgConfigureGS232Controller(const GS232ControllerSettings& settings, bool force) : + Message(), + m_settings(settings), + m_force(force) + { } + }; + + class MsgStartStop : public Message { + MESSAGE_CLASS_DECLARATION + + public: + bool getStartStop() const { return m_startStop; } + + static MsgStartStop* create(bool startStop) { + return new MsgStartStop(startStop); + } + + protected: + bool m_startStop; + + MsgStartStop(bool startStop) : + Message(), + m_startStop(startStop) + { } + }; + + GS232Controller(WebAPIAdapterInterface *webAPIAdapterInterface); + virtual ~GS232Controller(); + virtual void destroy() { delete this; } + virtual bool handleMessage(const Message& cmd); + + virtual const QString& getURI() const { return m_featureIdURI; } + virtual void getIdentifier(QString& id) const { id = m_featureId; } + virtual void getTitle(QString& title) const { title = m_settings.m_title; } + + virtual QByteArray serialize() const; + virtual bool deserialize(const QByteArray& data); + + virtual int webapiRun(bool run, + SWGSDRangel::SWGDeviceState& response, + QString& errorMessage); + + virtual int webapiSettingsGet( + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage); + + virtual int webapiSettingsPutPatch( + bool force, + const QStringList& featureSettingsKeys, + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage); + + static void webapiFormatFeatureSettings( + SWGSDRangel::SWGFeatureSettings& response, + const GS232ControllerSettings& settings); + + static void webapiUpdateFeatureSettings( + GS232ControllerSettings& settings, + const QStringList& featureSettingsKeys, + SWGSDRangel::SWGFeatureSettings& response); + + static const QString m_featureIdURI; + static const QString m_featureId; + +private: + QThread m_thread; + GS232ControllerWorker *m_worker; + GS232ControllerSettings m_settings; + bool m_ptt; + + QNetworkAccessManager *m_networkManager; + QNetworkRequest m_networkRequest; + + void start(); + void stop(); + void applySettings(const GS232ControllerSettings& settings, bool force = false); + void webapiReverseSendSettings(QList<QString>& featureSettingsKeys, const GS232ControllerSettings& settings, bool force); + +private slots: + void networkManagerFinished(QNetworkReply *reply); +}; + +#endif // INCLUDE_FEATURE_GS232CONTROLLER_H_ diff --git a/plugins/feature/gs232controller/gs232controllergui.cpp b/plugins/feature/gs232controller/gs232controllergui.cpp new file mode 100644 index 000000000..f39650630 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllergui.cpp @@ -0,0 +1,447 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QMessageBox> +#include <QLineEdit> +#include <QSerialPortInfo> + +#include "feature/featureuiset.h" +#include "gui/basicfeaturesettingsdialog.h" +#include "mainwindow.h" +#include "device/deviceuiset.h" + +#include "ui_gs232controllergui.h" +#include "gs232controller.h" +#include "gs232controllergui.h" +#include "gs232controllerreport.h" + +GS232ControllerGUI* GS232ControllerGUI::create(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *feature) +{ + GS232ControllerGUI* gui = new GS232ControllerGUI(pluginAPI, featureUISet, feature); + return gui; +} + +void GS232ControllerGUI::destroy() +{ + delete this; +} + +void GS232ControllerGUI::resetToDefaults() +{ + m_settings.resetToDefaults(); + displaySettings(); + applySettings(true); +} + +QByteArray GS232ControllerGUI::serialize() const +{ + qDebug("GS232ControllerGUI::serialize: %d", m_settings.m_channelIndex); + return m_settings.serialize(); +} + +bool GS232ControllerGUI::deserialize(const QByteArray& data) +{ + if (m_settings.deserialize(data)) + { + qDebug("GS232ControllerGUI::deserialize: %d", m_settings.m_channelIndex); + updateDeviceSetList(); + displaySettings(); + applySettings(true); + return true; + } + else + { + resetToDefaults(); + return false; + } +} + +bool GS232ControllerGUI::handleMessage(const Message& message) +{ + if (GS232Controller::MsgConfigureGS232Controller::match(message)) + { + qDebug("GS232ControllerGUI::handleMessage: GS232Controller::MsgConfigureGS232Controller"); + const GS232Controller::MsgConfigureGS232Controller& cfg = (GS232Controller::MsgConfigureGS232Controller&) message; + m_settings = cfg.getSettings(); + blockApplySettings(true); + displaySettings(); + blockApplySettings(false); + + return true; + } + else if (GS232ControllerSettings::MsgChannelIndexChange::match(message)) + { + const GS232ControllerSettings::MsgChannelIndexChange& cfg = (GS232ControllerSettings::MsgChannelIndexChange&) message; + int newChannelIndex = cfg.getIndex(); + qDebug("GS232ControllerGUI::handleMessage: GS232ControllerSettings::MsgChannelIndexChange: %d", newChannelIndex); + ui->channel->blockSignals(true); + ui->channel->setCurrentIndex(newChannelIndex); + m_settings.m_channelIndex = newChannelIndex; + ui->channel->blockSignals(false); + + return true; + } else if (GS232ControllerReport::MsgReportAzAl::match(message)) + { + GS232ControllerReport::MsgReportAzAl& azAl = (GS232ControllerReport::MsgReportAzAl&) message; + if (azAl.getType() == GS232ControllerReport::AzAlType::TARGET) + { + ui->azimuth->setValue(std::round(azAl.getAzimuth())); + ui->elevation->setValue(std::round(azAl.getElevation())); + } + else + { + ui->azimuthCurrentText->setText(QString("%1").arg(std::round(azAl.getAzimuth()))); + ui->elevationCurrentText->setText(QString("%1").arg(std::round(azAl.getElevation()))); + } + return true; + } + + return false; +} + +void GS232ControllerGUI::handleInputMessages() +{ + Message* message; + + while ((message = getInputMessageQueue()->pop())) + { + if (handleMessage(*message)) { + delete message; + } + } +} + +void GS232ControllerGUI::onWidgetRolled(QWidget* widget, bool rollDown) +{ + (void) widget; + (void) rollDown; +} + +GS232ControllerGUI::GS232ControllerGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *feature, QWidget* parent) : + FeatureGUI(parent), + ui(new Ui::GS232ControllerGUI), + m_pluginAPI(pluginAPI), + m_featureUISet(featureUISet), + m_doApplySettings(true), + m_lastFeatureState(0) +{ + ui->setupUi(this); + setAttribute(Qt::WA_DeleteOnClose, true); + setChannelWidget(false); + connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_gs232Controller = reinterpret_cast<GS232Controller*>(feature); + m_gs232Controller->setMessageQueueToGUI(&m_inputMessageQueue); + + m_featureUISet->addRollupWidget(this); + + connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); + connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + + connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus())); + m_statusTimer.start(1000); + + updateSerialPortList(); + updateDeviceSetList(); + displaySettings(); + applySettings(true); +} + +GS232ControllerGUI::~GS232ControllerGUI() +{ + delete ui; +} + +void GS232ControllerGUI::blockApplySettings(bool block) +{ + m_doApplySettings = !block; +} + +void GS232ControllerGUI::displaySettings() +{ + setTitleColor(m_settings.m_rgbColor); + setWindowTitle(m_settings.m_title); + blockApplySettings(true); + ui->azimuth->setValue(m_settings.m_azimuth); + ui->elevation->setValue(m_settings.m_elevation); + if (m_settings.m_serialPort.length() > 0) + ui->serialPort->lineEdit()->setText(m_settings.m_serialPort); + ui->baudRate->setCurrentText(QString("%1").arg(m_settings.m_baudRate)); + ui->track->setChecked(m_settings.m_track); + blockApplySettings(false); +} + +void GS232ControllerGUI::updateSerialPortList() +{ + ui->serialPort->clear(); + QList<QSerialPortInfo> serialPorts = QSerialPortInfo::availablePorts(); + QListIterator<QSerialPortInfo> i(serialPorts); + while (i.hasNext()) + { + QSerialPortInfo info = i.next(); + ui->serialPort->addItem(info.portName()); + } +} + +void GS232ControllerGUI::updateDeviceSetList() +{ + MainWindow *mainWindow = MainWindow::getInstance(); + std::vector<DeviceUISet*>& deviceUISets = mainWindow->getDeviceUISets(); + std::vector<DeviceUISet*>::const_iterator it = deviceUISets.begin(); + + ui->device->blockSignals(true); + + ui->device->clear(); + unsigned int deviceIndex = 0; + + for (; it != deviceUISets.end(); ++it, deviceIndex++) + { + DSPDeviceSourceEngine *deviceSourceEngine = (*it)->m_deviceSourceEngine; + DSPDeviceSinkEngine *deviceSinkEngine = (*it)->m_deviceSinkEngine; + DSPDeviceMIMOEngine *deviceMIMOEngine = (*it)->m_deviceMIMOEngine; + + if (deviceSourceEngine) { + ui->device->addItem(QString("R%1").arg(deviceIndex), deviceIndex); + } + } + + int newDeviceIndex; + + if (it != deviceUISets.begin()) + { + if (m_settings.m_deviceIndex < 0) { + ui->device->setCurrentIndex(0); + } else { + ui->device->setCurrentIndex(m_settings.m_deviceIndex); + } + + newDeviceIndex = ui->device->currentData().toInt(); + } + else + { + newDeviceIndex = -1; + } + + + if (newDeviceIndex != m_settings.m_deviceIndex) + { + qDebug("GS232ControllerGUI::updateDeviceSetLists: device index changed: %d", newDeviceIndex); + m_settings.m_deviceIndex = newDeviceIndex; + } + + updateChannelList(); + + ui->device->blockSignals(false); +} + +bool GS232ControllerGUI::updateChannelList() +{ + int newChannelIndex; + ui->channel->blockSignals(true); + ui->channel->clear(); + + if (m_settings.m_deviceIndex < 0) + { + newChannelIndex = -1; + } + else + { + MainWindow *mainWindow = MainWindow::getInstance(); + std::vector<DeviceUISet*>& deviceUISets = mainWindow->getDeviceUISets(); + DeviceUISet *deviceUISet = deviceUISets[m_settings.m_deviceIndex]; + int nbChannels = deviceUISet->getNumberOfChannels(); + + for (int ch = 0; ch < nbChannels; ch++) { + ui->channel->addItem(QString("%1").arg(ch), ch); + } + + if (nbChannels > 0) + { + if (m_settings.m_channelIndex < 0) { + ui->channel->setCurrentIndex(0); + } else { + ui->channel->setCurrentIndex(m_settings.m_channelIndex); + } + + newChannelIndex = ui->channel->currentIndex(); + } + else + { + newChannelIndex = -1; + } + } + + ui->channel->blockSignals(false); + + if (newChannelIndex != m_settings.m_channelIndex) + { + qDebug("GS232ControllerGUI::updateChannelList: channel index changed: %d", newChannelIndex); + m_settings.m_channelIndex = newChannelIndex; + return true; + } + + return false; +} + +void GS232ControllerGUI::leaveEvent(QEvent*) +{ +} + +void GS232ControllerGUI::enterEvent(QEvent*) +{ +} + +void GS232ControllerGUI::onMenuDialogCalled(const QPoint &p) +{ + if (m_contextMenuType == ContextMenuChannelSettings) + { + BasicFeatureSettingsDialog dialog(this); + dialog.setTitle(m_settings.m_title); + dialog.setColor(m_settings.m_rgbColor); + dialog.setUseReverseAPI(m_settings.m_useReverseAPI); + dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress); + dialog.setReverseAPIPort(m_settings.m_reverseAPIPort); + dialog.setReverseAPIFeatureSetIndex(m_settings.m_reverseAPIFeatureSetIndex); + dialog.setReverseAPIFeatureIndex(m_settings.m_reverseAPIFeatureIndex); + + dialog.move(p); + dialog.exec(); + + m_settings.m_rgbColor = dialog.getColor().rgb(); + m_settings.m_title = dialog.getTitle(); + m_settings.m_useReverseAPI = dialog.useReverseAPI(); + m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress(); + m_settings.m_reverseAPIPort = dialog.getReverseAPIPort(); + m_settings.m_reverseAPIFeatureSetIndex = dialog.getReverseAPIFeatureSetIndex(); + m_settings.m_reverseAPIFeatureIndex = dialog.getReverseAPIFeatureIndex(); + + setWindowTitle(m_settings.m_title); + setTitleColor(m_settings.m_rgbColor); + + applySettings(); + } + + resetContextMenuType(); +} + +void GS232ControllerGUI::on_startStop_toggled(bool checked) +{ + if (m_doApplySettings) + { + GS232Controller::MsgStartStop *message = GS232Controller::MsgStartStop::create(checked); + m_gs232Controller->getInputMessageQueue()->push(message); + } +} + +void GS232ControllerGUI::on_devicesRefresh_clicked() +{ + updateDeviceSetList(); + displaySettings(); + applySettings(); +} + +void GS232ControllerGUI::on_device_currentIndexChanged(int index) +{ + if (index >= 0) + { + m_settings.m_deviceIndex = ui->device->currentData().toInt(); + updateChannelList(); + applySettings(); + } +} + +void GS232ControllerGUI::on_channel_currentIndexChanged(int index) +{ + if (index >= 0) + { + m_settings.m_channelIndex = index; + applySettings(); + } +} + +void GS232ControllerGUI::on_serialPort_currentIndexChanged(int index) +{ + m_settings.m_serialPort = ui->serialPort->currentText(); + applySettings(); +} + +void GS232ControllerGUI::on_baudRate_currentIndexChanged(int index) +{ + m_settings.m_baudRate = ui->baudRate->currentText().toInt(); + applySettings(); +} + +void GS232ControllerGUI::on_azimuth_valueChanged(int value) +{ + m_settings.m_azimuth = value; + applySettings(); +} + +void GS232ControllerGUI::on_elevation_valueChanged(int value) +{ + m_settings.m_elevation = value; + applySettings(); +} + +void GS232ControllerGUI::on_track_stateChanged(int state) +{ + m_settings.m_track = state == Qt::Checked; + ui->devicesRefresh->setEnabled(m_settings.m_track); + ui->deviceLabel->setEnabled(m_settings.m_track); + ui->device->setEnabled(m_settings.m_track); + ui->channelLabel->setEnabled(m_settings.m_track); + ui->channel->setEnabled(m_settings.m_track); + applySettings(); +} + +void GS232ControllerGUI::updateStatus() +{ + int state = m_gs232Controller->getState(); + + if (m_lastFeatureState != state) + { + switch (state) + { + case Feature::StNotStarted: + ui->startStop->setStyleSheet("QToolButton { background:rgb(79,79,79); }"); + break; + case Feature::StIdle: + ui->startStop->setStyleSheet("QToolButton { background-color : blue; }"); + break; + case Feature::StRunning: + ui->startStop->setStyleSheet("QToolButton { background-color : green; }"); + break; + case Feature::StError: + ui->startStop->setStyleSheet("QToolButton { background-color : red; }"); + QMessageBox::information(this, tr("Message"), m_gs232Controller->getErrorMessage()); + break; + default: + break; + } + + m_lastFeatureState = state; + } +} + +void GS232ControllerGUI::applySettings(bool force) +{ + if (m_doApplySettings) + { + GS232Controller::MsgConfigureGS232Controller* message = GS232Controller::MsgConfigureGS232Controller::create(m_settings, force); + m_gs232Controller->getInputMessageQueue()->push(message); + } +} diff --git a/plugins/feature/gs232controller/gs232controllergui.h b/plugins/feature/gs232controller/gs232controllergui.h new file mode 100644 index 000000000..a8a41f62c --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllergui.h @@ -0,0 +1,90 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_FEATURE_GS232CONTROLLERGUI_H_ +#define INCLUDE_FEATURE_GS232CONTROLLERGUI_H_ + +#include <QTimer> + +#include "feature/featuregui.h" +#include "util/messagequeue.h" +#include "gs232controllersettings.h" + +class PluginAPI; +class FeatureUISet; +class GS232Controller; + +namespace Ui { + class GS232ControllerGUI; +} + +class GS232ControllerGUI : public FeatureGUI { + Q_OBJECT +public: + static GS232ControllerGUI* create(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *feature); + virtual void destroy(); + + void resetToDefaults(); + QByteArray serialize() const; + bool deserialize(const QByteArray& data); + virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } + +private: + Ui::GS232ControllerGUI* ui; + PluginAPI* m_pluginAPI; + FeatureUISet* m_featureUISet; + GS232ControllerSettings m_settings; + bool m_doApplySettings; + + GS232Controller* m_gs232Controller; + MessageQueue m_inputMessageQueue; + QTimer m_statusTimer; + int m_lastFeatureState; + + explicit GS232ControllerGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *feature, QWidget* parent = nullptr); + virtual ~GS232ControllerGUI(); + + void blockApplySettings(bool block); + void applySettings(bool force = false); + void displaySettings(); + void updateSerialPortList(); + void updateDeviceSetList(); + bool updateChannelList(); //!< true if channel index has changed + bool handleMessage(const Message& message); + + void leaveEvent(QEvent*); + void enterEvent(QEvent*); + +private slots: + void onMenuDialogCalled(const QPoint &p); + void onWidgetRolled(QWidget* widget, bool rollDown); + void handleInputMessages(); + void on_startStop_toggled(bool checked); + void on_devicesRefresh_clicked(); + void on_device_currentIndexChanged(int index); + void on_channel_currentIndexChanged(int index); + void on_serialPort_currentIndexChanged(int index); + void on_baudRate_currentIndexChanged(int index); + void on_track_stateChanged(int state); + void on_azimuth_valueChanged(int value); + void on_elevation_valueChanged(int value); + void updateStatus(); +}; + + +#endif // INCLUDE_FEATURE_GS232CONTROLLERGUI_H_ diff --git a/plugins/feature/gs232controller/gs232controllergui.ui b/plugins/feature/gs232controller/gs232controllergui.ui new file mode 100644 index 000000000..5189f070b --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllergui.ui @@ -0,0 +1,397 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>GS232ControllerGUI</class> + <widget class="RollupWidget" name="GS232ControllerGUI"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>320</width> + <height>187</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>320</width> + <height>100</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>320</width> + <height>16777215</height> + </size> + </property> + <property name="font"> + <font> + <family>Liberation Sans</family> + <pointsize>9</pointsize> + </font> + </property> + <property name="windowTitle"> + <string>GS-232 Rotator Controller</string> + </property> + <widget class="QWidget" name="settingsContainer" native="true"> + <property name="geometry"> + <rect> + <x>10</x> + <y>10</y> + <width>301</width> + <height>171</height> + </rect> + </property> + <property name="windowTitle"> + <string>Settings</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>3</number> + </property> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> + <number>2</number> + </property> + <item> + <layout class="QHBoxLayout" name="controlLayout"> + <item> + <widget class="ButtonSwitch" name="startStop"> + <property name="toolTip"> + <string>start/stop acquisition</string> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../../../sdrgui/resources/res.qrc"> + <normaloff>:/play.png</normaloff> + <normalon>:/stop.png</normalon>:/play.png</iconset> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="azimuthtLabel"> + <property name="text"> + <string>Azimuth</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="azimuth"> + <property name="toolTip"> + <string>Target azimuth in degrees</string> + </property> + <property name="minimum"> + <number>0</number> + </property> + <property name="maximum"> + <number>450</number> + </property> + <property name="value"> + <number>359</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="azimuthCurrentText"> + <property name="minimumSize"> + <size> + <width>23</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Current azimuth in degrees</string> + </property> + <property name="text"> + <string>-</string> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="elevationLabel"> + <property name="text"> + <string>Elevation</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="elevation"> + <property name="toolTip"> + <string>Target elevation in degrees</string> + </property> + <property name="maximum"> + <number>180</number> + </property> + <property name="value"> + <number>180</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="elevationCurrentText"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Current elevation in degrees</string> + </property> + <property name="text"> + <string>-</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="serverLayout"> + <item> + <widget class="QLabel" name="serialLabel"> + <property name="text"> + <string>Serial Port</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="serialPort"> + <property name="toolTip"> + <string>Name of serial port to use to connect to the GS-232 controller</string> + </property> + <property name="editable"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="baudRateLabel"> + <property name="text"> + <string>Baud rate</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="baudRate"> + <property name="toolTip"> + <string>Serial port baud rate for the GS-232 controller</string> + </property> + <property name="currentIndex"> + <number>3</number> + </property> + <item> + <property name="text"> + <string>1200</string> + </property> + </item> + <item> + <property name="text"> + <string>2400</string> + </property> + </item> + <item> + <property name="text"> + <string>4800</string> + </property> + </item> + <item> + <property name="text"> + <string>9600</string> + </property> + </item> + <item> + <property name="text"> + <string>19200</string> + </property> + </item> + <item> + <property name="text"> + <string>38400</string> + </property> + </item> + <item> + <property name="text"> + <string>57600</string> + </property> + </item> + <item> + <property name="text"> + <string>115200</string> + </property> + </item> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="localDeviceLayout"> + <item> + <widget class="QCheckBox" name="track"> + <property name="toolTip"> + <string>Check to enable automatic tracking of azimuth and elevation from the specified channel</string> + </property> + <property name="text"> + <string>Track</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="devicesRefresh"> + <property name="maximumSize"> + <size> + <width>24</width> + <height>16777215</height> + </size> + </property> + <property name="toolTip"> + <string>Refresh indexes of available device sets</string> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../../../sdrgui/resources/res.qrc"> + <normaloff>:/recycle.png</normaloff>:/recycle.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="deviceLabel"> + <property name="text"> + <string>Device</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="device"> + <property name="minimumSize"> + <size> + <width>55</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Receiver deviceset index</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="channelLabel"> + <property name="text"> + <string>Channel</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="channel"> + <property name="minimumSize"> + <size> + <width>55</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Channel index</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="channelLayout"> + <item> + <spacer name="horizontalSpacer_5"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </widget> + <customwidgets> + <customwidget> + <class>RollupWidget</class> + <extends>QWidget</extends> + <header>gui/rollupwidget.h</header> + <container>1</container> + </customwidget> + <customwidget> + <class>ButtonSwitch</class> + <extends>QToolButton</extends> + <header>gui/buttonswitch.h</header> + </customwidget> + </customwidgets> + <resources> + <include location="../../../sdrgui/resources/res.qrc"/> + </resources> + <connections/> +</ui> diff --git a/plugins/feature/gs232controller/gs232controllerplugin.cpp b/plugins/feature/gs232controller/gs232controllerplugin.cpp new file mode 100644 index 000000000..868d7a9df --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllerplugin.cpp @@ -0,0 +1,80 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + + +#include <QtPlugin> +#include "plugin/pluginapi.h" + +#ifndef SERVER_MODE +#include "gs232controllergui.h" +#endif +#include "gs232controller.h" +#include "gs232controllerplugin.h" +#include "gs232controllerwebapiadapter.h" + +const PluginDescriptor GS232ControllerPlugin::m_pluginDescriptor = { + GS232Controller::m_featureId, + QString("GS-232 Rotator Controller"), + QString("4.20.0"), + QString("(c) Jon Beniston, M7RCE"), + QString("https://github.com/f4exb/sdrangel"), + true, + QString("https://github.com/f4exb/sdrangel") +}; + +GS232ControllerPlugin::GS232ControllerPlugin(QObject* parent) : + QObject(parent), + m_pluginAPI(nullptr) +{ +} + +const PluginDescriptor& GS232ControllerPlugin::getPluginDescriptor() const +{ + return m_pluginDescriptor; +} + +void GS232ControllerPlugin::initPlugin(PluginAPI* pluginAPI) +{ + m_pluginAPI = pluginAPI; + + m_pluginAPI->registerFeature(GS232Controller::m_featureIdURI, GS232Controller::m_featureId, this); +} + +#ifdef SERVER_MODE +FeatureGUI* GS232ControllerPlugin::createFeatureGUI(FeatureUISet *featureUISet, Feature *feature) const +{ + (void) featureUISet; + (void) feature; + return nullptr; +} +#else +FeatureGUI* GS232ControllerPlugin::createFeatureGUI(FeatureUISet *featureUISet, Feature *feature) const +{ + return GS232ControllerGUI::create(m_pluginAPI, featureUISet, feature); +} +#endif + +Feature* GS232ControllerPlugin::createFeature(WebAPIAdapterInterface* webAPIAdapterInterface) const +{ + return new GS232Controller(webAPIAdapterInterface); +} + +FeatureWebAPIAdapter* GS232ControllerPlugin::createFeatureWebAPIAdapter() const +{ + return new GS232ControllerWebAPIAdapter(); +} diff --git a/plugins/feature/gs232controller/gs232controllerplugin.h b/plugins/feature/gs232controller/gs232controllerplugin.h new file mode 100644 index 000000000..b58a51267 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllerplugin.h @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_FEATURE_GS232CONTROLLERPLUGIN_H +#define INCLUDE_FEATURE_GS232CONTROLLERPLUGIN_H + +#include <QObject> +#include "plugin/plugininterface.h" + +class FeatureGUI; +class WebAPIAdapterInterface; + +class GS232ControllerPlugin : public QObject, PluginInterface { + Q_OBJECT + Q_INTERFACES(PluginInterface) + Q_PLUGIN_METADATA(IID "sdrangel.feature.gs232controller") + +public: + explicit GS232ControllerPlugin(QObject* parent = nullptr); + + const PluginDescriptor& getPluginDescriptor() const; + void initPlugin(PluginAPI* pluginAPI); + + virtual FeatureGUI* createFeatureGUI(FeatureUISet *featureUISet, Feature *feature) const; + virtual Feature* createFeature(WebAPIAdapterInterface *webAPIAdapterInterface) const; + virtual FeatureWebAPIAdapter* createFeatureWebAPIAdapter() const; + +private: + static const PluginDescriptor m_pluginDescriptor; + + PluginAPI* m_pluginAPI; +}; + +#endif // INCLUDE_FEATURE_GS232CONTROLLERPLUGIN_H diff --git a/plugins/feature/gs232controller/gs232controllerreport.h b/plugins/feature/gs232controller/gs232controllerreport.h new file mode 100644 index 000000000..8e175d8fc --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllerreport.h @@ -0,0 +1,64 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2019 Edouard Griffiths, F4EXB // +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_FEATURE_GS232CONTROLLERREPORT_H_ +#define INCLUDE_FEATURE_GS232CONTROLLERREPORT_H_ + +#include <QObject> + +#include "util/message.h" + +class GS232ControllerReport : public QObject +{ + Q_OBJECT +public: + enum AzAlType {TARGET, ACTUAL}; + + class MsgReportAzAl : public Message { + MESSAGE_CLASS_DECLARATION + + public: + float getAzimuth() const { return m_azimuth; } + float getElevation() const { return m_elevation; } + AzAlType getType() const { return m_type; } + + static MsgReportAzAl* create(float azimuth, float elevation, AzAlType type) + { + return new MsgReportAzAl(azimuth, elevation, type); + } + + private: + float m_azimuth; + float m_elevation; + AzAlType m_type; + + MsgReportAzAl(float azimuth, float elevation, AzAlType type) : + Message(), + m_azimuth(azimuth), + m_elevation(elevation), + m_type(type) + { + } + }; + +public: + GS232ControllerReport() {} + ~GS232ControllerReport() {} +}; + +#endif // INCLUDE_FEATURE_GS232CONTROLLERREPORT_H_ diff --git a/plugins/feature/gs232controller/gs232controllersettings.cpp b/plugins/feature/gs232controller/gs232controllersettings.cpp new file mode 100644 index 000000000..3b8ba8cb7 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllersettings.cpp @@ -0,0 +1,121 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QColor> + +#include "util/simpleserializer.h" +#include "settings/serializable.h" + +#include "gs232controllersettings.h" + +MESSAGE_CLASS_DEFINITION(GS232ControllerSettings::MsgChannelIndexChange, Message) + +GS232ControllerSettings::GS232ControllerSettings() +{ + resetToDefaults(); +} + +void GS232ControllerSettings::resetToDefaults() +{ + m_azimuth = 0; + m_elevation = 0; + m_serialPort = ""; + m_baudRate = 9600; + m_track = false; + m_deviceIndex = -1; + m_channelIndex = -1; + m_title = "GS-232 Rotator Controller"; + m_rgbColor = QColor(225, 25, 99).rgb(); + m_useReverseAPI = false; + m_reverseAPIAddress = "127.0.0.1"; + m_reverseAPIPort = 8888; + m_reverseAPIFeatureSetIndex = 0; + m_reverseAPIFeatureIndex = 0; +} + +QByteArray GS232ControllerSettings::serialize() const +{ + SimpleSerializer s(1); + + s.writeS32(1, m_azimuth); + s.writeS32(2, m_elevation); + s.writeString(3, m_serialPort); + s.writeS32(4, m_baudRate); + s.writeBool(5, m_track); + s.writeS32(6, m_deviceIndex); + s.writeS32(7, m_channelIndex); + s.writeString(8, m_title); + s.writeU32(9, m_rgbColor); + s.writeBool(10, m_useReverseAPI); + s.writeString(11, m_reverseAPIAddress); + s.writeU32(12, m_reverseAPIPort); + s.writeU32(13, m_reverseAPIFeatureSetIndex); + s.writeU32(14, m_reverseAPIFeatureIndex); + + return s.final(); +} + +bool GS232ControllerSettings::deserialize(const QByteArray& data) +{ + SimpleDeserializer d(data); + + if (!d.isValid()) + { + resetToDefaults(); + return false; + } + + if (d.getVersion() == 1) + { + QByteArray bytetmp; + qint32 tmp; + uint32_t utmp; + QString strtmp; + + d.readS32(1, &m_azimuth, 0); + d.readS32(2, &m_elevation, 0); + d.readString(3, &m_serialPort, ""); + d.readS32(4, &m_baudRate, 9600); + d.readBool(5, &m_track, false); + d.readS32(6, &m_deviceIndex, -1); + d.readS32(7, &m_channelIndex, -1); + d.readString(8, &m_title, "GS-232 Rotator Controller"); + d.readU32(9, &m_rgbColor, QColor(225, 25, 99).rgb()); + d.readBool(10, &m_useReverseAPI, false); + d.readString(11, &m_reverseAPIAddress, "127.0.0.1"); + d.readU32(12, &utmp, 0); + + if ((utmp > 1023) && (utmp < 65535)) { + m_reverseAPIPort = utmp; + } else { + m_reverseAPIPort = 8888; + } + + d.readU32(13, &utmp, 0); + m_reverseAPIFeatureSetIndex = utmp > 99 ? 99 : utmp; + d.readU32(14, &utmp, 0); + m_reverseAPIFeatureIndex = utmp > 99 ? 99 : utmp; + + return true; + } + else + { + resetToDefaults(); + return false; + } +} diff --git a/plugins/feature/gs232controller/gs232controllersettings.h b/plugins/feature/gs232controller/gs232controllersettings.h new file mode 100644 index 000000000..01cd25992 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllersettings.h @@ -0,0 +1,71 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_FEATURE_GS232CONTROLLERSETTINGS_H_ +#define INCLUDE_FEATURE_GS232CONTROLLERSETTINGS_H_ + +#include <QByteArray> +#include <QString> + +#include "util/message.h" + +class Serializable; + +struct GS232ControllerSettings +{ + class MsgChannelIndexChange : public Message { + MESSAGE_CLASS_DECLARATION + + public: + bool getIndex() const { return m_index; } + + static MsgChannelIndexChange* create(int index) { + return new MsgChannelIndexChange(index); + } + + protected: + int m_index; + + MsgChannelIndexChange(int index) : + Message(), + m_index(index) + { } + }; + + int m_azimuth; + int m_elevation; + QString m_serialPort; + int m_baudRate; + int m_deviceIndex; + bool m_track; + int m_channelIndex; + QString m_title; + quint32 m_rgbColor; + bool m_useReverseAPI; + QString m_reverseAPIAddress; + uint16_t m_reverseAPIPort; + uint16_t m_reverseAPIFeatureSetIndex; + uint16_t m_reverseAPIFeatureIndex; + + GS232ControllerSettings(); + void resetToDefaults(); + QByteArray serialize() const; + bool deserialize(const QByteArray& data); +}; + +#endif // INCLUDE_FEATURE_GS232CONTROLLERSETTINGS_H_ diff --git a/plugins/feature/gs232controller/gs232controllerwebapiadapter.cpp b/plugins/feature/gs232controller/gs232controllerwebapiadapter.cpp new file mode 100644 index 000000000..2bfd5de86 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllerwebapiadapter.cpp @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB. // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include "SWGFeatureSettings.h" +#include "gs232controller.h" +#include "gs232controllerwebapiadapter.h" + +GS232ControllerWebAPIAdapter::GS232ControllerWebAPIAdapter() +{} + +GS232ControllerWebAPIAdapter::~GS232ControllerWebAPIAdapter() +{} + +int GS232ControllerWebAPIAdapter::webapiSettingsGet( + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setSimplePttSettings(new SWGSDRangel::SWGSimplePTTSettings()); + response.getSimplePttSettings()->init(); + GS232Controller::webapiFormatFeatureSettings(response, m_settings); + + return 200; +} + +int GS232ControllerWebAPIAdapter::webapiSettingsPutPatch( + bool force, + const QStringList& featureSettingsKeys, + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + GS232Controller::webapiUpdateFeatureSettings(m_settings, featureSettingsKeys, response); + + return 200; +} diff --git a/plugins/feature/gs232controller/gs232controllerwebapiadapter.h b/plugins/feature/gs232controller/gs232controllerwebapiadapter.h new file mode 100644 index 000000000..7afa55e63 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllerwebapiadapter.h @@ -0,0 +1,50 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB. // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_GS232CONTROLLER_WEBAPIADAPTER_H +#define INCLUDE_GS232CONTROLLER_WEBAPIADAPTER_H + +#include "feature/featurewebapiadapter.h" +#include "gs232controllersettings.h" + +/** + * Standalone API adapter only for the settings + */ +class GS232ControllerWebAPIAdapter : public FeatureWebAPIAdapter { +public: + GS232ControllerWebAPIAdapter(); + virtual ~GS232ControllerWebAPIAdapter(); + + virtual QByteArray serialize() const { return m_settings.serialize(); } + virtual bool deserialize(const QByteArray& data) { return m_settings.deserialize(data); } + + virtual int webapiSettingsGet( + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage); + + virtual int webapiSettingsPutPatch( + bool force, + const QStringList& featureSettingsKeys, + SWGSDRangel::SWGFeatureSettings& response, + QString& errorMessage); + +private: + GS232ControllerSettings m_settings; +}; + +#endif // INCLUDE_GS232CONTROLLER_WEBAPIADAPTER_H diff --git a/plugins/feature/gs232controller/gs232controllerworker.cpp b/plugins/feature/gs232controller/gs232controllerworker.cpp new file mode 100644 index 000000000..59af9333b --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllerworker.cpp @@ -0,0 +1,248 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include <QDebug> +#include <QTcpServer> +#include <QTcpSocket> +#include <QEventLoop> +#include <QTimer> +#include <QSerialPort> +#include <QRegularExpression> + +#include "SWGDeviceState.h" +#include "SWGSuccessResponse.h" +#include "SWGErrorResponse.h" +#include "SWGDeviceSettings.h" +#include "SWGChannelSettings.h" +#include "SWGDeviceSet.h" +#include "SWGChannelReport.h" + +#include "webapi/webapiadapterinterface.h" +#include "webapi/webapiutils.h" + +#include "gs232controllerworker.h" +#include "gs232controllerreport.h" + +MESSAGE_CLASS_DEFINITION(GS232ControllerWorker::MsgConfigureGS232ControllerWorker, Message) +MESSAGE_CLASS_DEFINITION(GS232ControllerReport::MsgReportAzAl, Message) + +GS232ControllerWorker::GS232ControllerWorker(WebAPIAdapterInterface *webAPIAdapterInterface) : + m_webAPIAdapterInterface(webAPIAdapterInterface), + m_msgQueueToFeature(nullptr), + m_msgQueueToGUI(nullptr), + m_running(false), + m_mutex(QMutex::Recursive) +{ + connect(&m_pollTimer, SIGNAL(timeout()), this, SLOT(update())); + m_pollTimer.start(1000); +} + +GS232ControllerWorker::~GS232ControllerWorker() +{ + m_inputMessageQueue.clear(); +} + +void GS232ControllerWorker::reset() +{ + QMutexLocker mutexLocker(&m_mutex); + m_inputMessageQueue.clear(); +} + +bool GS232ControllerWorker::startWork() +{ + QMutexLocker mutexLocker(&m_mutex); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + connect(&m_serialPort, &QSerialPort::readyRead, this, &GS232ControllerWorker::readSerialData); + m_running = true; + return m_running; +} + +void GS232ControllerWorker::stopWork() +{ + QMutexLocker mutexLocker(&m_mutex); + disconnect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + disconnect(&m_serialPort, &QSerialPort::readyRead, this, &GS232ControllerWorker::readSerialData); + m_running = false; +} + +void GS232ControllerWorker::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != nullptr) + { + if (handleMessage(*message)) { + delete message; + } + } +} + +bool GS232ControllerWorker::handleMessage(const Message& cmd) +{ + if (MsgConfigureGS232ControllerWorker::match(cmd)) + { + QMutexLocker mutexLocker(&m_mutex); + MsgConfigureGS232ControllerWorker& cfg = (MsgConfigureGS232ControllerWorker&) cmd; + + applySettings(cfg.getSettings(), cfg.getForce()); + return true; + } + else + { + return false; + } +} + +void GS232ControllerWorker::applySettings(const GS232ControllerSettings& settings, bool force) +{ + qDebug() << "GS232ControllerWorker::applySettings:" + << " m_azimuth: " << settings.m_azimuth + << " m_elevation: " << settings.m_elevation + << " m_serialPort: " << settings.m_serialPort + << " m_baudRate: " << settings.m_baudRate + << " m_deviceIndex: " << settings.m_deviceIndex + << " m_channelIndex: " << settings.m_channelIndex + << " force: " << force; + + if ((settings.m_serialPort != m_settings.m_serialPort) || force) + { + if (m_serialPort.isOpen()) + m_serialPort.close(); + m_serialPort.setPortName(settings.m_serialPort); + m_serialPort.setBaudRate(settings.m_baudRate); + if (!m_serialPort.open(QIODevice::ReadWrite)) + qCritical() << "GS232ControllerWorker::applySettings: Failed to open serial port " << settings.m_serialPort << ". Error: " << m_serialPort.error(); + } + else if ((settings.m_baudRate != m_settings.m_baudRate) || force) + { + m_serialPort.setBaudRate(settings.m_baudRate); + } + + if ((settings.m_elevation != m_settings.m_elevation) || force) + { + setAzimuthElevation(settings.m_azimuth, settings.m_elevation); + } + else if ((settings.m_azimuth != m_settings.m_azimuth) || force) + { + setAzimuth(settings.m_azimuth); + } + + m_settings = settings; +} + +void GS232ControllerWorker::setAzimuth(int azimuth) +{ + QString cmd = QString("M%1\r\n").arg(azimuth, 3, 10, QLatin1Char('0')); + QByteArray data = cmd.toLatin1(); + m_serialPort.write(data); +} + +void GS232ControllerWorker::setAzimuthElevation(int azimuth, int elevation) +{ + QString cmd = QString("W%1 %2\r\n").arg(azimuth, 3, 10, QLatin1Char('0')).arg(elevation, 3, 10, QLatin1Char('0')); + QByteArray data = cmd.toLatin1(); + m_serialPort.write(data); +} + +void GS232ControllerWorker::readSerialData() +{ + char buf[1024]; + qint64 len; + + while (m_serialPort.canReadLine()) + { + len = m_serialPort.readLine(buf, sizeof(buf)); + if (len != -1) + { + QString response = QString::fromUtf8(buf, len); + + QRegularExpression re("AZ=(\\d\\d\\d)EL=(\\d\\d\\d)"); + QRegularExpressionMatch match = re.match(response); + if (match.hasMatch()) + { + QString az = match.captured(1); + QString el = match.captured(2); + //qDebug() << "GS232ControllerWorker::readSerialData read az " << az << " el " << el; + if (getMessageQueueToGUI()) + { + GS232ControllerReport::MsgReportAzAl *msg = GS232ControllerReport::MsgReportAzAl::create( + az.toFloat(), el.toFloat(), GS232ControllerReport::ACTUAL); + getMessageQueueToGUI()->push(msg); + } + } + else + { + qDebug() << "GS232ControllerWorker::readSerialData unknown response " << response; + } + } + } +} + +void GS232ControllerWorker::update() +{ + // Request current Az/El from GS-232 controller + if (m_serialPort.isOpen()) + { + QByteArray cmd("C2\r\n"); + m_serialPort.write(cmd); + } + + // Request target Az/EL from channel + if (m_settings.m_track) + { + SWGSDRangel::SWGChannelReport response; + SWGSDRangel::SWGErrorResponse errorResponse; + + int httpRC = m_webAPIAdapterInterface->devicesetChannelReportGet( + m_settings.m_deviceIndex, + m_settings.m_channelIndex, + response, + errorResponse + ); + + if (httpRC/100 != 2) + { + qWarning("GS232ControllerWorker::update: get channel report error %d: %s", + httpRC, qPrintable(*errorResponse.getMessage())); + } + else + { + QJsonObject *jsonObj = response.asJsonObject(); + double targetAzimuth; + double targetElevation; + bool gotElevation = false; + bool gotAzimuth = false; + + if (WebAPIUtils::getSubObjectDouble(*jsonObj, "targetAzimuth", targetAzimuth)) + gotAzimuth = true; + + if (WebAPIUtils::getSubObjectDouble(*jsonObj, "targetElevation", targetElevation)) + gotElevation = true; + + if (gotAzimuth && gotElevation) + { + if (getMessageQueueToGUI()) + { + GS232ControllerReport::MsgReportAzAl *msg = GS232ControllerReport::MsgReportAzAl::create( + targetAzimuth, targetElevation, GS232ControllerReport::TARGET); + getMessageQueueToGUI()->push(msg); + } + } + } + } +} diff --git a/plugins/feature/gs232controller/gs232controllerworker.h b/plugins/feature/gs232controller/gs232controllerworker.h new file mode 100644 index 000000000..2041e17c8 --- /dev/null +++ b/plugins/feature/gs232controller/gs232controllerworker.h @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// Copyright (C) 2020 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_FEATURE_GS232CONTROLLERWORKER_H_ +#define INCLUDE_FEATURE_GS232CONTROLLERWORKER_H_ + +#include <QObject> +#include <QTimer> +#include <QSerialPort> + +#include "util/message.h" +#include "util/messagequeue.h" + +#include "gs232controllersettings.h" + +class WebAPIAdapterInterface; + +class GS232ControllerWorker : public QObject +{ + Q_OBJECT +public: + class MsgConfigureGS232ControllerWorker : public Message { + MESSAGE_CLASS_DECLARATION + + public: + const GS232ControllerSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } + + static MsgConfigureGS232ControllerWorker* create(const GS232ControllerSettings& settings, bool force) + { + return new MsgConfigureGS232ControllerWorker(settings, force); + } + + private: + GS232ControllerSettings m_settings; + bool m_force; + + MsgConfigureGS232ControllerWorker(const GS232ControllerSettings& settings, bool force) : + Message(), + m_settings(settings), + m_force(force) + { } + }; + + GS232ControllerWorker(WebAPIAdapterInterface *webAPIAdapterInterface); + ~GS232ControllerWorker(); + void reset(); + bool startWork(); + void stopWork(); + bool isRunning() const { return m_running; } + MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } + void setMessageQueueToFeature(MessageQueue *messageQueue) { m_msgQueueToFeature = messageQueue; } + void setMessageQueueToGUI(MessageQueue *messageQueue) { m_msgQueueToGUI = messageQueue; } + +private: + + WebAPIAdapterInterface *m_webAPIAdapterInterface; + MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication + MessageQueue *m_msgQueueToFeature; //!< Queue to report channel change to main feature object + MessageQueue *m_msgQueueToGUI; + GS232ControllerSettings m_settings; + bool m_running; + QMutex m_mutex; + QSerialPort m_serialPort; + QTimer m_pollTimer; + + bool handleMessage(const Message& cmd); + void applySettings(const GS232ControllerSettings& settings, bool force = false); + MessageQueue *getMessageQueueToGUI() { return m_msgQueueToGUI; } + void setAzimuth(int azimuth); + void setAzimuthElevation(int azimuth, int elevation); + +private slots: + void handleInputMessages(); + void readSerialData(); + void update(); +}; + +#endif // INCLUDE_FEATURE_GS232CONTROLLERWORKER_H_ diff --git a/plugins/feature/gs232controller/readme.md b/plugins/feature/gs232controller/readme.md new file mode 100644 index 000000000..3e55f92ea --- /dev/null +++ b/plugins/feature/gs232controller/readme.md @@ -0,0 +1,52 @@ +<h1>GS-232 Rotator Controller Feature Plugin</h1> + +<h2>Introduction</h2> + +The GS-232 Rotator Controller feature plugin allows SDRangel to send commands to GS-232 rotators. This allows SDRangel to point antennas mounted on a rotator to a specified azimuth and elevation. + +Azimuth and elevation can be set manually by a user in the GUI, via the REST API, or via another plugin, such as the ADS-B Demodulator, which can track a selected aircraft. + +<h2>Interface</h2> + + + +<h3>1: Start/Stop plugin</h3> + +This button starts or stops the plugin. When the plugin is stopped, azimuth and elevation commands will not be sent to the GS-232 rotator. + +<h3>2: Azimuth</h3> + +Specifies the target azimuth (angle in degrees, clockwise from North) to point the antenna towards. Valid values range from 0 to 450 degrees. The value to the right of the target azimuth, is the current azimuth read from the GS-232 rotator. + +<h3>3: Elevation</h3> + +Specifies the target elevation (angle in degrees) to point the antenna towards. Valid values range from 0 to 180 degrees, where 0 and 180 point towards the horizon and 90 degrees to zenith. The value to the right of the target elevation, is the current elevation read from the GS-232 rotator. + +<h3>4: Serial Port</h3> + +Specifies the serial port (E.g. COM3 on Windows or /dev/ttyS0 on Linux) that will be used to send commands to the GS-232 rotator. + +<h3>5: Baud rate</h3> + +Specifies the baud rate that will be used to send commands to the GS-232 rotator. Typically this is 9600. + +<h3>6: Track</h3> + +When checked, the GS-232 Rotator Controller plugin will query the channel specified by the Device (8) and Channel (9) combo boxes for the target azimuth and elevation. For example, this allows an aircraft to be tracked, by setting the Device and Channel to correspond to the ADS-B Demodulator plugin. + +<h3>7: Refresh list of devices and channels</h3> + +Use this button to refresh the list of devices (8) and channels (9) + +<h3>8: Select device set</h3> + +Specify the SDRangel device set containing the channel plugin that will be asked for aziumth and elevation values. Defaults to R0. + +<h3>9: Select channel</h3> + +The channel index specifies the SDRangel channel that will be asked for azimuth and elevation values. Defaults to 0. + +<h2>Developer Information</h2> + +For a channel plugin to be able to set the azimuth and elevation, its channel report should contain targetAzimuth and targetElevation. See the ADS-B plugin as an example. + \ No newline at end of file diff --git a/sdrbase/CMakeLists.txt b/sdrbase/CMakeLists.txt index 407e8d1f2..aeac9d603 100644 --- a/sdrbase/CMakeLists.txt +++ b/sdrbase/CMakeLists.txt @@ -149,6 +149,7 @@ set(sdrbase_SOURCES settings/preset.cpp settings/mainsettings.cpp + util/azel.cpp util/crc.cpp util/CRC64.cpp util/db.cpp @@ -314,6 +315,7 @@ set(sdrbase_HEADERS settings/preset.h settings/mainsettings.h + util/azel.h util/CRC64.h util/db.h util/doublebuffer.h diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 2dd81cdeb..abbdba250 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -696,6 +696,87 @@ margin-bottom: 20px; <script> // Script section to load models into a JS Var var defs = {} + defs.ADSBDemodReport = { + "properties" : { + "channelPowerDB" : { + "type" : "number", + "format" : "float", + "description" : "power received in channel (dB)" + }, + "channelSampleRate" : { + "type" : "integer" + }, + "targetAzimuth" : { + "type" : "number", + "format" : "float" + }, + "targetElevation" : { + "type" : "number", + "format" : "float" + } + }, + "description" : "ADSBDemod" +}; + defs.ADSBDemodSettings = { + "properties" : { + "inputFrequencyOffset" : { + "type" : "integer", + "format" : "int64", + "description" : "channel center frequency shift from baseband center in Hz" + }, + "rfBandwidth" : { + "type" : "number", + "format" : "float", + "description" : "channel RF bandwidth in Hz" + }, + "correlationThreshold" : { + "type" : "number", + "format" : "float" + }, + "samplesPerBit" : { + "type" : "integer" + }, + "removeTimeout" : { + "type" : "integer" + }, + "beastEnabled" : { + "type" : "integer" + }, + "beastHost" : { + "type" : "string" + }, + "beastPort" : { + "type" : "integer" + }, + "rgbColor" : { + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "streamIndex" : { + "type" : "integer", + "description" : "MIMO channel. Not relevant when connected to SI (single Rx)." + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + } + }, + "description" : "ADSBDemod" +}; defs.AMBEDevice = { "properties" : { "deviceRef" : { @@ -2163,6 +2244,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "0 for Rx only, 1 for Tx only or 2 for any number and direction (default 0)" }, + "ADSBDemodReport" : { + "$ref" : "#/definitions/ADSBDemodReport" + }, "AMDemodReport" : { "$ref" : "#/definitions/AMDemodReport" }, @@ -2249,6 +2333,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "Optional for reverse API. This is the channel index from where the message comes from." }, + "ADSBDemodSettings" : { + "$ref" : "#/definitions/ADSBDemodSettings" + }, "AMDemodSettings" : { "$ref" : "#/definitions/AMDemodSettings" }, @@ -3300,6 +3387,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "Optional for reverse API. This is the feature index from where the message comes from." }, + "GS232ControllerSettings" : { + "$ref" : "#/definitions/GS232ControllerSettings" + }, "SimplePTTSettings" : { "$ref" : "#/definitions/SimplePTTSettings" }, @@ -4001,6 +4091,58 @@ margin-bottom: 20px; } }, "description" : "GLSpectrumGUI settings" +}; + defs.GS232ControllerSettings = { + "properties" : { + "azimuth" : { + "type" : "integer", + "description" : "Target azimuth in degrees (0-450)" + }, + "elevation" : { + "type" : "integer", + "description" : "Target elevation in degrees (0-180)" + }, + "serialPort" : { + "type" : "string", + "description" : "The serial port the GS-232 controller is connected to" + }, + "baudRate" : { + "type" : "integer", + "description" : "The baud rate to use for the serial connection to the GS-232 controller" + }, + "track" : { + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "rgbColor" : { + "type" : "integer" + }, + "deviceIndex" : { + "type" : "integer" + }, + "channelIndex" : { + "type" : "integer" + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + } + }, + "description" : "GS-232 Controller settings" }; defs.Gain = { "properties" : { @@ -39969,7 +40111,7 @@ except ApiException as e: </div> <div id="generator"> <div class="content"> - Generated 2020-10-11T08:49:12.690+02:00 + Generated 2020-10-27T16:45:08.746+01:00 </div> </div> </div> diff --git a/sdrbase/settings/mainsettings.h b/sdrbase/settings/mainsettings.h index 0815d5fa0..9f2057519 100644 --- a/sdrbase/settings/mainsettings.h +++ b/sdrbase/settings/mainsettings.h @@ -73,10 +73,14 @@ public: const QString& getSourceDeviceId() const { return m_preferences.getSourceDevice(); } void setSourceDeviceId(const QString& deviceId) { m_preferences.setSourceDevice(deviceId); } - void setLatitude(float latitude) { m_preferences.setLatitude(latitude); } + void setStationName(const QString& name) { m_preferences.setStationName(name); } + void setLatitude(float latitude) { m_preferences.setLatitude(latitude); } void setLongitude(float longitude) { m_preferences.setLongitude(longitude); } + void setAltitude(float altitude) { m_preferences.setAltitude(altitude); } + QString getStationName() const { return m_preferences.getStationName(); } float getLatitude() const { return m_preferences.getLatitude(); } float getLongitude() const { return m_preferences.getLongitude(); } + float getAltitude() const { return m_preferences.getAltitude(); } void setConsoleMinLogLevel(const QtMsgType& minLogLevel) { m_preferences.setConsoleMinLogLevel(minLogLevel); } void setFileMinLogLevel(const QtMsgType& minLogLevel) { m_preferences.setFileMinLogLevel(minLogLevel); } diff --git a/sdrbase/settings/preferences.cpp b/sdrbase/settings/preferences.cpp index 98b6ca284..4df70478a 100644 --- a/sdrbase/settings/preferences.cpp +++ b/sdrbase/settings/preferences.cpp @@ -12,8 +12,10 @@ void Preferences::resetToDefaults() m_audioType.clear(); m_audioDevice.clear(); m_sourceIndex = 0; - m_latitude = 0.0; - m_longitude = 0.0; + m_stationName = "Home"; + m_latitude = 49.012423; // Set an interesting location so map doesn't open up in the middle of the ocean + m_longitude = 8.418125; + m_altitude = 0.0f; m_useLogFile = false; m_logFileName = "sdrangel.log"; m_consoleMinLogLevel = QtDebugMsg; @@ -33,6 +35,8 @@ QByteArray Preferences::serialize() const s.writeBool(9, m_useLogFile); s.writeString(10, m_logFileName); s.writeS32(11, (int) m_fileMinLogLevel); + s.writeString(12, m_stationName); + s.writeFloat(13, m_altitude); return s.final(); } @@ -53,8 +57,8 @@ bool Preferences::deserialize(const QByteArray& data) d.readString(3, &m_audioType); d.readString(4, &m_audioDevice); d.readS32(5, &m_sourceIndex, 0); - d.readFloat(6, &m_latitude, 0.0); - d.readFloat(7, &m_longitude, 0.0); + d.readFloat(6, &m_latitude, 0.0f); + d.readFloat(7, &m_longitude, 0.0f); d.readS32(8, &tmpInt, (int) QtDebugMsg); @@ -72,6 +76,8 @@ bool Preferences::deserialize(const QByteArray& data) d.readString(10, &m_logFileName, "sdrangel.log"); d.readS32(11, &tmpInt, (int) QtDebugMsg); + d.readString(12, &m_stationName, "Home"); + d.readFloat(13, &m_altitude, 0.0f); if ((tmpInt == (int) QtDebugMsg) || (tmpInt == (int) QtInfoMsg) || diff --git a/sdrbase/settings/preferences.h b/sdrbase/settings/preferences.h index 598e96e22..de3a8f631 100644 --- a/sdrbase/settings/preferences.h +++ b/sdrbase/settings/preferences.h @@ -23,10 +23,14 @@ public: void setAudioDevice(const QString& value) { m_audioDevice = value; } const QString& getAudioDevice() const { return m_audioDevice; } - void setLatitude(float latitude) { m_latitude = latitude; } + void setStationName(const QString& name) { m_stationName = name; } + void setLatitude(float latitude) { m_latitude = latitude; } void setLongitude(float longitude) { m_longitude = longitude; } + void setAltitude(float altitude) { m_altitude = altitude; } + QString getStationName() const { return m_stationName; } float getLatitude() const { return m_latitude; } float getLongitude() const { return m_longitude; } + float getAltitude() const { return m_altitude; } void setConsoleMinLogLevel(const QtMsgType& minLogLevel) { m_consoleMinLogLevel = minLogLevel; } void setFileMinLogLevel(const QtMsgType& minLogLevel) { m_fileMinLogLevel = minLogLevel; } @@ -44,8 +48,10 @@ protected: QString m_audioType; QString m_audioDevice; - float m_latitude; + QString m_stationName; //!< Name of the station (for drawing on the map) + float m_latitude; //!< Position of the station float m_longitude; + float m_altitude; //!< Altitude in metres QtMsgType m_consoleMinLogLevel; QtMsgType m_fileMinLogLevel; diff --git a/sdrbase/util/azel.cpp b/sdrbase/util/azel.cpp new file mode 100644 index 000000000..4bb7494bb --- /dev/null +++ b/sdrbase/util/azel.cpp @@ -0,0 +1,151 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#include "azel.h" + +#define _USE_MATH_DEFINES +#include <cmath> + +// Calculate cartesian distance between two points +double AzEl::cartDistance(const AzElPoint& a, const AzElPoint& b) +{ + double dx = b.m_cart.m_x - a.m_cart.m_x; + double dy = b.m_cart.m_y - a.m_cart.m_y; + double dz = b.m_cart.m_z - a.m_cart.m_z; + return std::sqrt(dx*dx + dy*dy + dz*dz); +} + +// Calculate vector difference then normalise the result +bool AzEl::normVectorDiff(const AzElCartesian& a, const AzElCartesian& b, AzElCartesian& n) +{ + n.m_x = b.m_x - a.m_x; + n.m_y = b.m_y - a.m_y; + n.m_z = b.m_z - a.m_z; + double distance = std::sqrt(n.m_x*n.m_x + n.m_y*n.m_y + n.m_z*n.m_z); + if (distance > 0.0f) + { + n.m_x = n.m_x / distance; + n.m_y = n.m_y / distance; + n.m_z = n.m_z / distance; + return true; + } + else + { + return false; + } +} + +// Convert geodetic latitude (as given by GPS) to geocentric latitude (angle from centre of Earth between the point and equator) +// Both in radians. +// https://en.wikipedia.org/wiki/Latitude#Geocentric_latitude +double AzEl::geocentricLatitude(double latRad) const +{ + double e2 = 0.00669437999014; + return std::atan((1.0 - e2) * std::tan(latRad)); +} + +// Earth radius for a given latitude, as it's not quite spherical +// http://en.wikipedia.org/wiki/Earth_radius +double AzEl::earthRadiusInMetres(double geodeticLatRad) const +{ + double equatorialRadius = 6378137.0; + double polarRadius = 6356752.3; + double cosLat = std::cos(geodeticLatRad); + double sinLat = std::sin(geodeticLatRad); + double t1 = equatorialRadius * equatorialRadius * cosLat; + double t2 = polarRadius * polarRadius * sinLat; + double t3 = equatorialRadius * cosLat; + double t4 = polarRadius * sinLat; + return std::sqrt((t1*t1 + t2*t2)/(t3*t3 + t4*t4)); +} + +// Convert spherical coordinate to cartesian. Also calculates radius and a normal vector +void AzEl::sphericalToCartesian(AzElPoint& point) +{ + // First calculate cartesian coords for point on Earth's surface + double latRad = point.m_spherical.m_latitude * M_PI/180.0; + double longRad = point.m_spherical.m_longitude * M_PI/180.0; + point.m_radius = earthRadiusInMetres(latRad); + double clat = geocentricLatitude(latRad); + double cosLong = cos(longRad); + double sinLong = sin(longRad); + double cosLat = cos(clat); + double sinLat = sin(clat); + + point.m_cart.m_x = point.m_radius * cosLong * cosLat; + point.m_cart.m_y = point.m_radius * sinLong * cosLat; + point.m_cart.m_z = point.m_radius * sinLat; + + // Calculate normal vector at surface + double cosGLat = std::cos(latRad); + double sinGLat = std::sin(latRad); + + point.m_norm.m_x = cosGLat * cosLong; + point.m_norm.m_y = cosGLat * sinLong; + point.m_norm.m_z = sinGLat; + + // Add altitude along normal vector + point.m_cart.m_x += point.m_spherical.m_altitude * point.m_norm.m_x; + point.m_cart.m_y += point.m_spherical.m_altitude * point.m_norm.m_y; + point.m_cart.m_z += point.m_spherical.m_altitude * point.m_norm.m_z; +} + +// Calculate azimuth of target from location +void AzEl::calcAzimuth() +{ + AzElPoint bRot; + + // Rotate so location is at lat=0, long=0 + bRot.m_spherical.m_latitude = m_target.m_spherical.m_latitude; + bRot.m_spherical.m_longitude = m_target.m_spherical.m_longitude - m_location.m_spherical.m_longitude; + bRot.m_spherical.m_altitude = m_target.m_spherical.m_altitude; + sphericalToCartesian(bRot); + + double aLat = geocentricLatitude(-m_location.m_spherical.m_latitude * M_PI / 180.0); + double aCos = std::cos(aLat); + double aSin = std::sin(aLat); + + double bx = (bRot.m_cart.m_x * aCos) - (bRot.m_cart.m_z * aSin); + double by = bRot.m_cart.m_y; + double bz = (bRot.m_cart.m_x * aSin) + (bRot.m_cart.m_z * aCos); + + if (bz*bz + by*by > 1e-6) + { + double theta = std::atan2(bz, by) * 180.0 / M_PI; + m_azimuth = 90.0 - theta; + if (m_azimuth < 0.0) + m_azimuth += 360.0; + else if (m_azimuth > 360.0) + m_azimuth -= 360.0; + } + else + m_azimuth = 0.0; +} + +// Calculate elevation of target from location +void AzEl::calcElevation() +{ + AzElCartesian bma; + if (normVectorDiff(m_location.m_cart, m_target.m_cart, bma)) + { + m_elevation = 90.0 - (180.0/M_PI) * std::acos(bma.m_x * m_location.m_norm.m_x + + bma.m_y * m_location.m_norm.m_y + + bma.m_z * m_location.m_norm.m_z); + } + else + m_elevation = 0.0; +} diff --git a/sdrbase/util/azel.h b/sdrbase/util/azel.h new file mode 100644 index 000000000..671750915 --- /dev/null +++ b/sdrbase/util/azel.h @@ -0,0 +1,133 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2020 Jon Beniston, M7RCE // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see <http://www.gnu.org/licenses/>. // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_AZ_EL_H +#define INCLUDE_AZ_EL_H + +#include "export.h" + +// Spherical coordinate +struct SDRBASE_API AzElSpherical +{ + double m_latitude; // Degrees + double m_longitude; // Degrees + double m_altitude; // Metres +}; + +// Cartesian coordinate +struct SDRBASE_API AzElCartesian +{ + double m_x; // Metres + double m_y; // Metres + double m_z; // Metres +}; + +struct SDRBASE_API AzElPoint +{ + AzElSpherical m_spherical; // Spherical coordinates + AzElCartesian m_cart; // Cartesian coordinates + AzElCartesian m_norm; // Normal vector on surface of sphere + double m_radius; // Radius from centre of sphere to the point +}; + + +// Class to calculate azimuth, elevation and distance between two points specified +// by latitude, longitude and altitude +// See: https://doncross.net/geocalc +class SDRBASE_API AzEl +{ +public: + // Location is the point we are looking from + void setLocation(double latitude, double longitude, double altitude) + { + m_location.m_spherical.m_latitude = latitude; + m_location.m_spherical.m_longitude = longitude; + m_location.m_spherical.m_altitude = altitude; + sphericalToCartesian(m_location); + } + + // Target is the point we are looking at + void setTarget(double latiude, double longitude, double altitude) + { + m_target.m_spherical.m_latitude = latiude; + m_target.m_spherical.m_longitude = longitude; + m_target.m_spherical.m_altitude = altitude; + sphericalToCartesian(m_target); + } + + AzElSpherical getLocationSpherical() + { + return m_location.m_spherical; + } + + AzElCartesian getLocationCartesian() + { + return m_location.m_cart; + } + + AzElSpherical getTargetSpherical() + { + return m_target.m_spherical; + } + + AzElCartesian getTargetCartesian() + { + return m_target.m_cart; + } + + void calculate() + { + m_distance = cartDistance(m_location, m_target); + calcAzimuth(); + calcElevation(); + } + + double getDistance() + { + return m_distance; + } + + double getAzimuth() + { + return m_azimuth; + } + + double getElevation() + { + return m_elevation; + } + +private: + + double cartDistance(const AzElPoint& a, const AzElPoint& b); + bool normVectorDiff(const AzElCartesian& a, const AzElCartesian& b, AzElCartesian& n); + double geocentricLatitude(double latRad) const; + double earthRadiusInMetres(double geodeticLatRad) const; + void sphericalToCartesian(AzElPoint& point); + void calcAzimuth(); + void calcElevation(); + + AzElPoint m_location; + AzElPoint m_target; + + double m_azimuth; + double m_elevation; + double m_distance; + +}; + +#endif diff --git a/sdrbase/util/crc.h b/sdrbase/util/crc.h index 3fcd44559..cde0e5294 100644 --- a/sdrbase/util/crc.h +++ b/sdrbase/util/crc.h @@ -111,4 +111,11 @@ public: crc32c() : crc(32, 0x1EDC6F41, false, 0xffffffff, 0) {} }; +// ADS-B - https://mode-s.org/decode/adsb/introduction.html +class SDRBASE_API crcadsb : public crc +{ +public: + crcadsb() : crc(24, 0xfff409, true, 0, 0) {} +}; + #endif diff --git a/sdrbase/webapi/webapirequestmapper.cpp b/sdrbase/webapi/webapirequestmapper.cpp index 376da9135..651fab751 100644 --- a/sdrbase/webapi/webapirequestmapper.cpp +++ b/sdrbase/webapi/webapirequestmapper.cpp @@ -57,6 +57,7 @@ #include "SWGFeatureActions.h" const QMap<QString, QString> WebAPIRequestMapper::m_channelURIToSettingsKey = { + {"sdrangel.channel.adsbdemod", "ADSBDemodSettings"}, {"sdrangel.channel.amdemod", "AMDemodSettings"}, {"de.maintech.sdrangelove.channel.am", "AMDemodSettings"}, // remap {"sdrangel.channeltx.modam", "AMModSettings"}, @@ -136,6 +137,7 @@ const QMap<QString, QString> WebAPIRequestMapper::m_deviceIdToSettingsKey = { }; const QMap<QString, QString> WebAPIRequestMapper::m_channelTypeToSettingsKey = { + {"ADSBDemod", "ADSBDemodSettings"}, {"AMDemod", "AMDemodSettings"}, {"AMMod", "AMModSettings"}, {"ATVDemod", "ATVDemodSettings"}, @@ -242,6 +244,7 @@ const QMap<QString, QString> WebAPIRequestMapper::m_mimoDeviceHwIdToActionsKey= }; const QMap<QString, QString> WebAPIRequestMapper::m_featureTypeToSettingsKey = { + {"GS232Controller", "GS232ControllerSettings"}, {"SimplePTT", "SimplePTTSettings"}, {"RigCtlServer", "RigCtlServerSettings"} }; @@ -251,6 +254,7 @@ const QMap<QString, QString> WebAPIRequestMapper::m_featureTypeToActionsKey = { }; const QMap<QString, QString> WebAPIRequestMapper::m_featureURIToSettingsKey = { + {"sdrangel.feature.gs232controller", "GS232ControllerSettings"}, {"sdrangel.feature.simpleptt", "SimplePTTSettings"}, {"sdrangel.feature.rigctlserver", "RigCtlServerSettings"} }; @@ -3715,7 +3719,12 @@ bool WebAPIRequestMapper::getChannelSettings( appendSettingsSubKeys(settingsJsonObject, cwJson, "cwKeyer", channelSettingsKeys); } - if (channelSettingsKey == "AMDemodSettings") + if (channelSettingsKey == "ADSBDemodSettings") + { + channelSettings->setAdsbDemodSettings(new SWGSDRangel::SWGADSBDemodSettings()); + channelSettings->getAdsbDemodSettings()->fromJsonObject(settingsJsonObject); + } + else if (channelSettingsKey == "AMDemodSettings") { channelSettings->setAmDemodSettings(new SWGSDRangel::SWGAMDemodSettings()); channelSettings->getAmDemodSettings()->fromJsonObject(settingsJsonObject); @@ -4179,11 +4188,17 @@ bool WebAPIRequestMapper::getFeatureSettings( QJsonObject settingsJsonObject = featureSettingsJson[featureSettingsKey].toObject(); featureSettingsKeys = settingsJsonObject.keys(); - if (featureSettingsKey == "SimplePTTSettings") + if (featureSettingsKey == "GS232ControllerSettings") + { + featureSettings->setGs232ControllerSettings(new SWGSDRangel::SWGGS232ControllerSettings()); + featureSettings->getGs232ControllerSettings()->fromJsonObject(settingsJsonObject); + } + else if (featureSettingsKey == "SimplePTTSettings") { featureSettings->setSimplePttSettings(new SWGSDRangel::SWGSimplePTTSettings()); featureSettings->getSimplePttSettings()->fromJsonObject(settingsJsonObject); - } else if (featureSettingsKey == "RigCtlServerSettings") + } + else if (featureSettingsKey == "RigCtlServerSettings") { featureSettings->setRigCtlServerSettings(new SWGSDRangel::SWGRigCtlServerSettings()); featureSettings->getRigCtlServerSettings()->fromJsonObject(settingsJsonObject); @@ -4328,6 +4343,7 @@ void WebAPIRequestMapper::resetChannelSettings(SWGSDRangel::SWGChannelSettings& { channelSettings.cleanup(); channelSettings.setChannelType(nullptr); + channelSettings.setAdsbDemodSettings(nullptr); channelSettings.setAmDemodSettings(nullptr); channelSettings.setAmModSettings(nullptr); channelSettings.setAtvModSettings(nullptr); @@ -4351,6 +4367,7 @@ void WebAPIRequestMapper::resetChannelReport(SWGSDRangel::SWGChannelReport& chan { channelReport.cleanup(); channelReport.setChannelType(nullptr); + channelReport.setAdsbDemodReport(nullptr); channelReport.setAmDemodReport(nullptr); channelReport.setAmModReport(nullptr); channelReport.setAtvModReport(nullptr); diff --git a/sdrgui/gui/myposdialog.ui b/sdrgui/gui/myposdialog.ui index bc022184e..f972db551 100644 --- a/sdrgui/gui/myposdialog.ui +++ b/sdrgui/gui/myposdialog.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>324</width> - <height>147</height> + <height>190</height> </rect> </property> <property name="font"> @@ -26,22 +26,25 @@ <string>My Station Position</string> </property> <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> + <item row="2" column="0"> <widget class="QLabel" name="latitudeLabel"> <property name="text"> <string>Latitude</string> </property> </widget> </item> - <item row="1" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="longitudeLabel"> <property name="text"> <string>Longitude</string> </property> </widget> </item> - <item row="1" column="1"> + <item row="3" column="1"> <widget class="QDoubleSpinBox" name="longitudeSpinBox"> + <property name="toolTip"> + <string>Longitude in decimal degrees</string> + </property> <property name="decimals"> <number>6</number> </property> @@ -53,8 +56,11 @@ </property> </widget> </item> - <item row="0" column="1"> + <item row="2" column="1"> <widget class="QDoubleSpinBox" name="latitudeSpinBox"> + <property name="toolTip"> + <string>Latitude in decimal degrees</string> + </property> <property name="decimals"> <number>6</number> </property> @@ -66,6 +72,37 @@ </property> </widget> </item> + <item row="4" column="1"> + <widget class="QSpinBox" name="altitudeSpinBox"> + <property name="toolTip"> + <string>Altitude in metres</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="altitudeLabel"> + <property name="text"> + <string>Altitude (m)</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="name"> + <property name="toolTip"> + <string>Enter the name of your station</string> + </property> + <property name="text"> + <string>Home</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="nameLabel"> + <property name="text"> + <string>Station name</string> + </property> + </widget> + </item> </layout> </widget> </item> @@ -82,7 +119,10 @@ </layout> </widget> <tabstops> - <tabstop>buttonBox</tabstop> + <tabstop>name</tabstop> + <tabstop>latitudeSpinBox</tabstop> + <tabstop>longitudeSpinBox</tabstop> + <tabstop>altitudeSpinBox</tabstop> </tabstops> <resources/> <connections> diff --git a/sdrgui/gui/mypositiondialog.cpp b/sdrgui/gui/mypositiondialog.cpp index 2e945096a..58c8284a8 100644 --- a/sdrgui/gui/mypositiondialog.cpp +++ b/sdrgui/gui/mypositiondialog.cpp @@ -29,8 +29,10 @@ MyPositionDialog::MyPositionDialog(MainSettings& mainSettings, QWidget* parent) m_mainSettings(mainSettings) { ui->setupUi(this); + ui->name->setText(m_mainSettings.getStationName()); ui->latitudeSpinBox->setValue(m_mainSettings.getLatitude()); ui->longitudeSpinBox->setValue(m_mainSettings.getLongitude()); + ui->altitudeSpinBox->setValue(m_mainSettings.getAltitude()); } MyPositionDialog::~MyPositionDialog() @@ -40,7 +42,9 @@ MyPositionDialog::~MyPositionDialog() void MyPositionDialog::accept() { + m_mainSettings.setStationName(ui->name->text()); m_mainSettings.setLatitude(ui->latitudeSpinBox->value()); m_mainSettings.setLongitude(ui->longitudeSpinBox->value()); + m_mainSettings.setAltitude(ui->altitudeSpinBox->value()); QDialog::accept(); } diff --git a/sdrgui/resources/MapStation.qml b/sdrgui/resources/MapStation.qml new file mode 100644 index 000000000..d489dc92f --- /dev/null +++ b/sdrgui/resources/MapStation.qml @@ -0,0 +1,38 @@ +import QtQuick 2.4 +import QtLocation 5.6 +import QtPositioning 5.6 + +MapQuickItem { + id: station + property string stationName // Name of the station, E.g. Home + + coordinate: QtPositioning.coordinate(51.5, 0.125) // Location of the antenna (QTH) - London + zoomLevel: 11 + + anchorPoint.x: image.width/2 + anchorPoint.y: image.height/2 + + sourceItem: Grid { + columns: 1 + Grid { + horizontalItemAlignment: Grid.AlignHCenter + Image { + id: image + source: "map_antenna.png" + } + Rectangle { + id: bubble + color: "lightblue" + border.width: 1 + width: text.width * 1.3 + height: text.height * 1.3 + radius: 5 + Text { + id: text + anchors.centerIn: parent + text: stationName + } + } + } + } +} diff --git a/sdrgui/resources/aircraft_2engine.png b/sdrgui/resources/aircraft_2engine.png new file mode 100644 index 0000000000000000000000000000000000000000..42967cc08dd7c78295746a3fd99bd040a7851430 GIT binary patch literal 782 zcmV+p1M&QcP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WB7$UZdXb}Ja0-H%h zK~!ko?b=I-j$srB@E;MzWlT|0WaY9^NR608V+^4zCeq|mVqw8Xv$3$kk|dXsVmD=j zg%Bl|vQw4_3)hSp<1%jZS$Nd+_I=NM_xaxXPMyX3p67es^FQZ2&+|V|A9cwoV{iti zFgA?<4j~itMB1ERfFDBuWUwhs0InpQ&)_LWr@{Hz_>%=d25sg3SS2E|CNl5pGys?v zvCT~bfGI`VY6iflB5gGTpsG>_PzO*4PzNyboV}3!y%kdfuepPdWjZ6KU^B+yD=uT8 z++dd^h}r3cy#<%>JqMA?U=X*lH8}fU4kpHJt3(DSWqEGI7VN{qJTtH=XfL{P5)FxQ z4V5Ujm5C_5A12!Q>L5NO-tDeL29jf^mytV7OS~Ij?%F?#{xU>6U;Trd=qUC=U~;JI z$5nJXm%hf4(COtR?RZ-Qjwkgy_7CU$e0-}x=Z7x%=<UY2A}4;13)q2Uk#Xm-E{u7I zUqyWDZVbSqJSTY?oY|hGHg`pScR0&g(vG8ekSCzt*w&cq0C|IZxP=>d5eY(H#MYB| z{(|d4|9^immIvC>k~pzpLM#JM0?KE&h&`B7;11RriC$-cb2VTEy27?P5N`Z(N*iXD zcy26>0N7CC+zo+-R8;0g04z&GKTyaTs7U~yBeqXzX_S8ED50@w$Uv?v^oM;u6#)9G zQUBG>KwlbazcKU<gE`hfH=1hI`So~}C%@lVOO7{%s29pAYa$zK@va1Z{}Rn3<@~HN zH9tLBu57BZ3pGcm?O>qF`JB#8STqs<l05x4?&Cmca=M1tb_QC$7uUi`9h<8v(ix(B zHFRc;3Hyw2J@OS3vqZfk^c;PmhZvDPe>iS)+`s=!#AJLaYasRV7pcdk)6{FUy8r+H M07*qoM6N<$g5FnLtN;K2 literal 0 HcmV?d00001 diff --git a/sdrgui/resources/aircraft_2enginesmall.png b/sdrgui/resources/aircraft_2enginesmall.png new file mode 100644 index 0000000000000000000000000000000000000000..77712261c0f566558a9b3f38d7eff66d6d34fce2 GIT binary patch literal 657 zcmV;C0&e|@P)<h;3K|Lk000e1NJLTq001Ze001cn1^@s6N1|)U00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WF4Gc)s+1>yE0v<_3 zK~z}7?by3(R8bJX;m-$ZL`f9F22l~w!U&3}AShbIPEf3DtPEKA7l<H;Hg<N3*w|)m zL<<EGANXj*E~XI_UorUFM0^q0weSQkmveVF`|_eYFf4b@%(=fkXJ^iw<v)@IxQjdJ z$s^zyRDxd48{B&QN&r?clqbM*DYy!*<q7av1n?{7<puCZ1h9favlGv45#XX(+B*)| zHt7O(0lR=TWPY7~o6(Q&c+})OcZd2|!mU<yDbtDKI~eRsaTHH7igX1paS|&+OfSlb z@wKf0T%3C8FfL-M3RqgFaTSMC_6_X-Y^Bx&taX@g!U=3|Qx2@c$M93A)Em@;BY51# zl}qb$91n?DRkq?)2f@->!htNfg$=?@;Ag~M##jUMeZxQuaH!4+#xa6piIOuK@tX`| z12}~98GbPxjuq;GjFlb7y@ZZMe5N9{FX8ij_(CJ$xqv+h9mJeeY#|0X<1~T$c!&ph zT1SS(06%5;PM{c6NQ@oWiM`ko0R}6>?W_?gMz-m8gLCy`O>70<G*QoHvx2qcL(rCX zGm{b9=RCDr)smzO_)l!{vWTrW4;^`5=ncymCqfa+{}$XnysqQedWZd;1X~i0t=TjH zWn2o^hqlXwCfcdfok)^x5!(ygOgvx5+d5-gE;F~dQJlrDaJcvR^Dk>Dv6UNfDiL#| r6MzS?I%Dig==)-_E+kf0Ix4>bwBa|-9o;Gg00000NkvXXu0mjf`o$aC literal 0 HcmV?d00001 diff --git a/sdrgui/resources/aircraft_4engine.png b/sdrgui/resources/aircraft_4engine.png new file mode 100644 index 0000000000000000000000000000000000000000..0c6ac5f9474bddabd6fc3d79d2a45e84d3bfea4b GIT binary patch literal 772 zcmV+f1N;1mP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WB7Y&-iNrwOc0+C5X zK~!ko?U~DK6hRQie;Z>~gU|Sg1fL|tNI=Dlm;3?Z3rSQwdDQ4Fmw;Cfo&q6wlH6iI zFa!|=y%{72kBUeh;43Hugxv%&4=@=I)<V<l^vw3`%ubUjD5iJ1>G{5{?&_*q$i!E6 z0^`6CQ0F3n$ABl==NkCS3V07#0@_>wzZv+V5%7R#t`O)h1KtDHfMeDESR9AzqTyTT zT_AAE(0AGe0!@a#JuVQ~WZ9P*0*OjSAR~|w$OyPe;3V(~_zX-)09UEB0$+gw@Etgj zB=MVCpw_GqEBFL+9`FI^kg?~qzHS>J^#T3Yfiu#62}~LY^#Er>SZ)e<3w#U+2ro%{ z0(fG((sRlRJvUgO8me00jq-jfiUsPlb{@C_+>K#d-UGG)V?a)MpNlf-4`n6hfnPDK zysky<98KF=Ag_6s=7b!?F75Xgpi%PbP;w9$NNBYyvC2c>Xb||Tz@HQW*L4}V;Rn7A zShbvZO)3$u<#O^H_f1@J6zi_4B^vb%^a2e57Wxg$h)&CMR-P*|X2f9XSHK-5^=y}m ztzFZ+0Yd|D3+UGgl&<o1@&7u|8Q^D#Gqe!0uK>Ig)m`@yA#z-_MC_2b)y{I0cS%KI zYeX+{-(dd!h;uheWuvRy7MiS*8!TG(g^?xTeca*nLW~3w$p?y-<WfT*v%rS3Kpe8e z$AzvFLuoM%$pL@M5Lk4jD&YsV=n8=zpWD0%xRB<pvtI(aplI?bus3bsuT>Z#&r9x6 zb2-5OKeKIP`xih<t-!a+N=D7H=77VsATU(LRPli=i24WwN?F&UWM#9G{FK_gz-<{b z2#hL;iJFCNmjotp=?Eyb>;r~@N5F2wxE3L@G36g+AbQzffM1*d0000<MNUMnLSTYT C(@}i@ literal 0 HcmV?d00001 diff --git a/sdrgui/resources/aircraft_drone.png b/sdrgui/resources/aircraft_drone.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a9b2c418f71a49624e7b7432b0cc568ad1734c GIT binary patch literal 1362 zcmV-Y1+DstP)<h;3K|Lk000e1NJLTq001li001fo1^@s6$lbXd00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WC4iD}Q>x2LR1m8(S zK~z}7?U;LLmQ@_bKiizwP!TJsw9L7*T2f(Dv_f%`q&0<#Y5tMJOBc;Q3bTue6lOu2 zblFlgSMfF#N^O<5jA~BIa;EdTjM<37iWGuI<zD~!9{6>5-uF50yJSN9!Nc=D=lss^ zeBbl@p6~AhUD750lAHjYV&E>I05}6Q0~>)o9o)MZxEm-Gj_-gvU`MtFhX9`g$rRVe zz@RMbUMf(j?A8NAGc`I4_*n*i0A2u&1Ji)Tz)xmwa0YgV0zYc)319)R6j%o=(kUl_ zUv%<8k_UXNg&TnW8gB-M>vun3n>mpX*UANUYt1I0kH+T!Z|HXqpjJBjg(X&|ng!i8 zHW6q6MjO2WK&y0b53oB{y3If@GkzcN1u#L+y?}$#of-o8eJRh<^GxGkPk6ddYP>4I z?h5HX?u{=p_NRM$uJ?^}i!eMw_bY&BfN^GS8E}hEp&#&%@%cEpQun^VTwow@88E}> zJPSMwwCj0f2w*psluvyCoC5BVuTIumSO{DQYz2A;0PbU`bP!PHu|X~Hj`r%UZzRZv zw+ie;?@!d5SJw{A(@AdwRtDHzDJtwK*RoW0zynvR@wyPe^Q64R8?OR>^FYrR=<5UQ zUZ*#<zytfGJ~A83KGWPoA%HJ1Jo}s(U!s$#^)`Gekk)d<;dX5eaEbWbQR>T@YxUS9 zt&9QwG7)WxHk%=%32)<1fUDEkD+0EAYu3ot<v^n-tU+^az-^gEyApHK_Ignpt@Fm) z70Q<Y59-f7FW+zXbl;VY$_V?dz#ZA<6Mcbl`EwI+RNPpgul{J7oFLV8K(BhZfFA<B z78^Za*yNnZqzFL!feK)`iCFd;*V*Z5ivhD#ueu1h2FUkb`;qe@r(P{E4H3Tmwm7^| z&#!fKv)umxaEtDBz^%Z&W^TGT`Xf)bQvsjR{cpK|FZr6o<OrP#c!=)fl_uH}XR~tP z@p>M7KKQVuw)yhe66L>niiB>yv9rOBiJ+|=$`=;u#Qpi3&n2K9N+%PFSi6B$z*X|i zZ?Xs+4SEZOVvU_9<GV9O${Qp%nW8W%2Y5YV?ufFwr<MG_sglUos}Qi-h`A<URHk5W z1pY97H&drsB(N3UCVOJye~Bq<ZBEineqW`u*6ExEuFb>^zSqKPQ;0U}EB6zYS5weg zl-(8H+GW5az)Pl3Sf#ncq3%(x1-m@j+iOaDyJ22TYU!j<y30Kq#}qAXb>qH`X(50& zNcny*XZR|`D@}MCrVHV3rEsZFJ>6LvUmH?{x(fKD%9{R4`$l`=__Rv)GNp%cG77js zE>tbsV@=PZT8DCxdLEd@O<KS%e7>Tvd$G!KCmY2ct^)+{X8_<f-78fUx2c{h*7$5? zc=ak&UF9At>!mnH&yRU@WaUv)o5e}Ovx_+xXMeT<p9J2^q*ZlLl|ily>@=Mj#2!u3 zoe*HR)bMOiuiiT;>detw-z(j+&}N_mk}$MZDb92h<xXs0ApLX~Rk=Jl-y}pQOkb_W z{IR@HE*@ce5QkOX*QlbHtB95ael@Kv0zbS{rj#mI>+84z$05!A9@VCblY$5;v)3-u zFUv$mMnpY(?MrtEaSf0hB_xyd2a;llO{S%lZ602#c9^5CW59>9-Qh&POa3=<7HZhd UQJK0ip8x;=07*qoM6N<$g5RQsQUCw| literal 0 HcmV?d00001 diff --git a/sdrgui/resources/aircraft_fighter.png b/sdrgui/resources/aircraft_fighter.png new file mode 100644 index 0000000000000000000000000000000000000000..d217c5654d48eba0586da9f60bddd5b27e441057 GIT binary patch literal 647 zcmV;20(kw2P)<h;3K|Lk000e1NJLTq001xm001or1^@s6=t}6q00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WBEDKK)1Bw6u0u)I^ zK~!ko?b*9)6j2lg@L$%D6e|JA(?==35EMkPP%MIt53B?m1xe%IU~O%worR@VqK#22 zK`mlL@ITNf8Y2qgE6J{fcVHNHVP<z`cLwHz4-R)PyWcl^=bm%!rACb!mByBWzyAsj z;Z0Q^&~rSks`zpI#!rk@(ZFG}1NRp7BaH$L?25%Zs%RiCdV3WO#6{0l(ZED3ZdTF2 zc$c^~P#Z{z_`2U(mE?66OW2Ghv4|UZiBn}2e-!H-geUn22g|sGu3|LByfG}4(ZGQW zbN83gz*IqV2V!6ZGa2U3mF)#Smg41&vxR+S5#Pk?j0W0xR%C)pi`gKg-6J1ia#-R| z<5M5vBfiJ{AcgP2-LQ_^Ir0H^7b*M*?%;3E!joD0cIc;b+h)(<ae<<{aS4}GX7`TW z)D3(bg773i1T7O;3@nsDc#@a0Wa0}Ytai_LD*-xT8>U0eG8tnu79Wq|tYt|HU$7P! z#j7Dse)bvPi+n;;xRqil+|09>%M&M4HZ<!vQ8w{2Sjm`ur^_O~fyEwnl_!e7pGbx4 zeQb@_hAn<RoHq1oU}MmQToTE;XfxIuv=R+W8_OMzTvjr6bGhPILd+s|;uRjo#_!`^ zNRY|*WlbL!AftU6I3AjsX6Oyx;%oR9-r-D`w;b5O#c(b(iywG_Z~ZjmMYWlY*jBmf h|9#m=Savlc`~$v6bp0hm50C%=002ovPDHLkV1j=q89D#} literal 0 HcmV?d00001 diff --git a/sdrgui/resources/aircraft_helicopter.png b/sdrgui/resources/aircraft_helicopter.png new file mode 100644 index 0000000000000000000000000000000000000000..62d4f7629d3be08479f203c109eac88d0e76847e GIT binary patch literal 779 zcmV+m1N8ifP)<h;3K|Lk000e1NJLTq001xm001ut1^@s6rGiPx00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WB87JTRt=|9u0+>le zK~!ko?U~I>RY4esAA%^m)h$p+BwDnJj6#rFSblUh`jBc-&^l<-qCcQz6b2%+YS%&t zB7z{7qL~(1*-DEb+O#gHyjRPx)57<_FnQ+A9M3&7rZ3FqoO#drJ?CTQ{msC7td2Mc zY)p~2A1DF49rNmd=B&hD1R`JzC|Kqk0;VJ{0{#GxfO?DE9l&eJJDCMQGf<WbKC^&0 ztn}C0dl6_7|3><jfqhxMg?0^MYeK&w@Hs(z+#XnpZ_oNa=m08JAZ}F=AAe3q4B{(t zubM=s0iq80W&scZ_YLB^YCR%#B|x0F6dwU|0<4Ok1CHl4tR7STiRZvJ;I0Ee1e^n2 zDdJ0c&kfyj;|LfBrX2x(D&o6+O>inin)VAg?R%E)0p?SRKNCu+aW)0OL>4#RkP*OG zikyXz0Ls9kW6qC|02ZZ$aEVVL0RYT6_WuwXz*EQmqoJ9ez49s9j6gF48bg)<S3(rO z6L@PO{<ozw%Qe)h(x#0YOpzDyv4@=pP6784O6VKFY)BAAtt9SI&P{0mx0kV}ULlIW zq@g69)BtWO=h~Dv5&MZ;V>|G&iWxBhc!f~KR}4<78UVmi1>!{>5C!qUv3Qe*wE>7B z%6UK(q-?fbJ+KAPJ$6kXT*bQr==L;Ih%MrtTvyCo0d#vhAxkeSj>~evS$Wme5CGtW z0&yt|fCgXyXm!j>3lRU<{W8~hi<JO)F*IIc9pHZjXaX9wV+VlEtKp$s0KO&|nRh8h zv)p1A@YvE)_5qth5PeN~>R)hM8=VGPd;_!sPnHok!qWC^NoiMskNmqrecdNOuOemv zc*xQ=t7*{a1%|aeuK?eHJGk%0w*Z4ufqIL2?04^zVh?LM{sNs3hPcoxDzpFq002ov JPDHLkV1fkCNU;C_ literal 0 HcmV?d00001 diff --git a/sdrgui/resources/aircraft_light.png b/sdrgui/resources/aircraft_light.png new file mode 100644 index 0000000000000000000000000000000000000000..826620e7064fdb88bab44a40156759d178a3ce35 GIT binary patch literal 541 zcmV+&0^<FNP)<h;3K|Lk000e1NJLTq001xm001Wl1^@s6Nzu!s00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WC3l{ehw*deE0jfzv zK~z}7?byv~6hRaP;BS%{qETY9k_?K9j%KU46Bj;!K7hoR(tW@eaO={Ax>9hfkcecW zxbP>&jSg{iksBz&Oe;+HOqcY5Lv>xK?sK}T?(J$CG-yyIR)g8%J|5&M{x&}0Gw$Rj zegy;k4h|w#I_4@eu!c_3@8C*K2G0FsthNTuM!SX091R@DL-cSN8xboV?J@D?*mUFC zm4dNwE#CNxWJdbv7L3`)*WhkJI~MEsf?<+9>c(McTpu+9-KtVuiD-q!Zq<8WYWS}V z3^UUGD_v8ESi%il3|<Oez`~4#{>0m)o@@o5WACVeqFFkVm^w7L{Fg%3!;|RW3IW>% zV|GUf-I>+OxQp*$atYsXZ<>W{QuJ{W?<0Soh*(wzU@?hp=ak(#ktxy&x*#)rNDO?; zv5@u0TsH=$Wnib7ff=93+DFoLB`300N%y&l>$n<R8&PBS@fxp!FY&Yv>2h^~6V~ZE zETOqsK0o^d&3sAU?DG!(gTkrgzI*tAW6>Yr4W8i<9#8tY+^XQEv~k|Suf)w*>%9>E fE;e(626e$7{M?X+k}%J300000NkvXXu0mjfpjY*< literal 0 HcmV?d00001 diff --git a/sdrgui/resources/aircraft_space.png b/sdrgui/resources/aircraft_space.png new file mode 100644 index 0000000000000000000000000000000000000000..d441f75961fabcaa7afe3a1fe49e040d39cc884a GIT binary patch literal 735 zcmV<50wDc~P)<h;3K|Lk000e1NJLTq001rk001Hg1^@s6Abaaf00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WC2@ottaJB#d0&Gb{ zK~z}7?bqFlPk9^%@E2pO%q(U-X2sZcE#u)ryCSqjdDv`bv*ku@tNa1$ZZEkR+$fT` zvlO*95-G*DHEJTI5IZ4{o0ef&>tS4Q^PW0sTIOfQtekh9I(>fUe7>KD_vigNKT4D+ zQKH1Vj6OZ!b28>*9BT0wF5+<Ry9Ir_u>jxUEOuiIF5!2y;VYcReoXzpbnQd@ie}7? zZ3WI@N8!1CScz-+vA2V+#R;rK)l12Y#Rr|dGcujn(3^qp!+I?1BJDa7{-HO5Zp`70 zIA6iM)Z;pazwN+Jh11RWx<VgKSo1c6o*V_K!eb1m(9b84$}Xc{g$K^UZ+MQ?c!KJ1 zw+8(&Br@5Ke{;3tUct}hP;3-#_4EQ7hE3t-pW$jf>Tnl#^4udlO)}NFhDC91;tH-} zK?ZzB3ec^AkH#u|i;vKPllTLz(dI{8NPZ~B<Fn9iW){;K?82U|B+(iAV{<CB7Snog zZmLuLpVP?|Z{loAvacz0=l~uT99M_$_pvm#fsx8K%!{oq1APlK3Z1-&8)zt;I{_E| zORZj|y<cKm2CL)nx%dgoV;hT4vptu^)(~!Qi_XIrN%$8miEVZU^cWTv&TYk^yi*Yt zWq`g<WrZ>=m{aJ&MjXfV*s8ESt9?>|b~|x2UydCcbZ@>KN5(ch!+I_qsTfn@{3f>I zn;zJ96SDsIg-T74({7Q&kJIACX<>U>+M2H1juieK8GIIM)D@~b1S3-2@d^0ze5beI zAdb9_LcPf!iBXuC0O~O~!41lNO*ZO3nURMX;0MwB%el_yw-O~vlqm5Y;ROu)gJ$vo RZ@>Tm002ovPDHLkV1fe*R)+up literal 0 HcmV?d00001 diff --git a/sdrgui/resources/map.qml b/sdrgui/resources/map.qml new file mode 100644 index 000000000..096fcb337 --- /dev/null +++ b/sdrgui/resources/map.qml @@ -0,0 +1,85 @@ +import QtQuick 2.4 +import QtQuick.Window 2.4 +import QtLocation 5.6 +import QtPositioning 5.6 + +Item { + id: qmlMap + property int aircraftZoomLevel: 11 + + Plugin { + id: mapPlugin + name: "osm" + } + + Map { + id: map + objectName: "map" + anchors.fill: parent + plugin: mapPlugin + center: QtPositioning.coordinate(51.5, 0.125) // London + zoomLevel: 10 + + MapStation { + id: station + objectName: "station" + stationName: "Home" + coordinate: QtPositioning.coordinate(51.5, 0.125) + } + + MapItemView{ + model: aircraftModel + delegate: aircraftComponent + } + + onZoomLevelChanged: { + if (zoomLevel > 11) { + station.zoomLevel = zoomLevel + aircraftZoomLevel = zoomLevel + } else { + station.zoomLevel = 11 + aircraftZoomLevel = 11 + } + } + + } + + Component { + id: aircraftComponent + MapQuickItem { + id: aircraft + anchorPoint.x: image.width/2 + anchorPoint.y: image.height/2 + coordinate: position + zoomLevel: aircraftZoomLevel + + sourceItem: Grid { + columns: 1 + Grid { + horizontalItemAlignment: Grid.AlignHCenter + Image { + id: image + rotation: heading + source: aircraftImage + } + Rectangle { + id: bubble + color: bubbleColour + border.width: 1 + width: text.width * 1.1 + height: text.height * 1.1 + radius: 5 + Text { + id: text + anchors.centerIn: parent + text: adsbData + } + } + } + } + + + } + } + +} diff --git a/sdrgui/resources/map_antenna.png b/sdrgui/resources/map_antenna.png new file mode 100644 index 0000000000000000000000000000000000000000..f13c9188161f77915ca18139b8b4884b60be5511 GIT binary patch literal 1328 zcmV-01<(44P)<h;3K|Lk000e1NJLTq001xm001!v1^@s6oL(v-00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WBG68#s)k^>X1ieW_ zK~!ko?V3$&RYerXe|=O+MLxy0kf^jOh7A@gARp=mn;4U#prS+*AYnlwYzWar(UtO< zE=&w53tb2ZA`QV60n|j$HjO5N8WSis0;N!dmMS3Hj*I>$oKEh0l=j}|CE+AD@8&-< zXXebD&$$n7aVm(JUolV(Oa&$Y<AJL{D{vY(2>bxJv~9#RU^noW7MJV!9oPtrOT!7= ztHr!zc%1|G0lxufgpCI(bUG!%I)U}TCg7j{W7lT^ZDwcp0&{>&jxj@kCx9=^xG#Y* z`Cj}2>9zxoYf(2#PXW#1@hfnDz83$e(e-bPN`$Iep%a;-_b7F}TZZj`pMjA{FTO<H z!~utZqM*GDs0B`DG2U9BG#FC^99Eyt6Yz|E=tE7^60!43fiAP)BeILVz)^#D0gHpN zr4rBq^OIWqB;cARnHRLZEBs$zGcYk?d^u33J`PwDVOI|LNyZ*KePC3_(jv37&-8=O zv%sG~53n$>n{UNyK@t($AF-Wur2KwQ#HmaLR_dt?+Md^#v%rXm&G;k<&*Ol<fl&ru zEqrH?PJ9|+#M^*jrr$2%s|+?;YT6#R8oioDeZCVu%V1lCwF4Uzsm}}BZ2HX>b~xba z)#$-E1$aYDw;L>@-Rd;aw+!eOR&M%M0GDLIrDlAmPSv{39h$3O!7<ZM0q)Uno598b zcL1lP&q&uZz<%XIo=ylGBHKV?P6I=O#IDtBMr;CHGC{}FRsCAM?lciLD(V7s7;IR; z%VJmJRH0=$*7^YVDlptk-lpAM90WP1?9^|<T^f5a;JHVAAB$6fr%k?Msb2Vt275&U zI3;T*^d9>Cg(iKl^o#JaI0YzH@Cm)cd|^KZZm-689;f#j(_U!Oi{}jffQiPjQ+<Tr zE&!T@ZwmUi7y(*>wp!thfd}$&WkV7I%oFogqw@d{OOLx1h<pX+fMco`oN8p0CpnFo zWcUo1jr2rB?%3#%CVx93QZEfs1qW<Z1h%S@0bU2H0v>DBZ&%V~WVZs?lR5gW(_&UA z7jnSb8&qf4^h{2=sCiQhItSdBrO(&uGYy!o_ph?_ogiKgSe~!4@*_>SBunAmr9d=P z(fYEySYbr}m&L0tpGAEJn2{x8tc*y~e1i5!7G6~Y%|0^&6re{gusfpdas4(JtRZL% zd3~RSS7HL>q8a*aG+1NM7ON^GC4f!FF6TIbRMBXuf>WYb1xx`hn0#nVngyuVLVezJ zR*%K1)2u>Xeco5~R-$LSu-NS&ZUJWM_n6WPPt#3>mRdU~Fe$W8;P&aU*!iTd4+nE| zXRlEjRCV1+?<KHpdnk<pyhh)9(Xpm&6xTm3IbGAF&IYV;Zk6k_weyaMXq_r*3e==d z1$>d-ZCg{?7GG>GxoS+{YBGXdP+N!k7N<!7e@(dG6z9!m$D4(rK2Bp&V*@iy)>#0& zK;Lg(<+@wS(0iYnIy>+;&5P*$UhI_2Et7Zh-_#DO2y(z@X%fJHJNUx{t;(RtIc{zv z{5P{$qUS(q1Ta@V{$qo;18>py4%BC=?{WR27@bB3a6rjkUg;ff{I`PsKI;d%h{8b# muuZOTuz8KsCBbdFCFwsJE06r64B5H>0000<MNUMnLSTZ5SY7u3 literal 0 HcmV?d00001 diff --git a/sdrgui/resources/map_truck.png b/sdrgui/resources/map_truck.png new file mode 100644 index 0000000000000000000000000000000000000000..cd0a2e91a0f8b403175e6e76d5ef97510533e779 GIT binary patch literal 619 zcmV-x0+juUP)<h;3K|Lk000e1NJLTq001xm001Ef1^@s6pNJ^A00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru<O&WC1216CwE+MC0r*Ko zK~z}7?buC-PGJ-W@ZXHrBnuytl#kRPMU)ImDMd<+d}bpH5@9h-v9MqxL|L#_QWiGK z#>!XuEIU&&5*ky4e2v76udz9c+wC>C*L!=tZ|=Wt_j#Uk&vVcJo^zh_JeL9m3KaO4 zXsS|w5w_RR-YyK}IpJmu)$kgVHlVrDL#UJ?pBrH^vW)C)y%X4mQ+S*hYeie4zoT9~ z(~5UkmKq<Oipibznga)L3pY~ZUm76?+OP{t8X<|xdEglCp}UN1Y`uG69yUe1J&Su1 z<LaHjs;JIQsnw=oLTGBE7qSr*>OaJx8rnOUMc{LV6HY=$4GA32BG8SiiT-O`zza-| z%DW;VACLCGH0Cmn;z1Os^*ETZP-O0&Cxk)mn25zu%s$~hHsVMQmH0Gf;SxUL5%ypX zJ`AHbDvLlzJUEEu5mMi97yThyi=HY7yu#%0>QHQ1zDK(gdxz0&$s#ZfKXC;oLTOFN zX2xOSIu2Js;0$&r+Rd@+9Y8N;45M4h%7MPvz<tHO7`qeqC-L>B;3O_aj;yRO_It54 z+Sl+a^59J@3Vm4k2i+f)yr?r+pT%tKPxPzB>X@qs>k{6+ndg$#g4-z<J`WG%f%B=k z-(!B>hx!t>U;&=S*YD5qhr$LdjnF)Ym&JdU0tNmv{08j>+{~uD{;vQ4002ovPDHLk FV1gZ(6Y~H7 literal 0 HcmV?d00001 diff --git a/sdrgui/resources/res.qrc b/sdrgui/resources/res.qrc index d9c770161..8480b58bf 100644 --- a/sdrgui/resources/res.qrc +++ b/sdrgui/resources/res.qrc @@ -1,5 +1,16 @@ <RCC> <qresource prefix="/"> + <file>map.qml</file> + <file>MapStation.qml</file> + <file>aircraft_2engine.png</file> + <file>aircraft_2enginesmall.png</file> + <file>aircraft_4engine.png</file> + <file>aircraft_helicopter.png</file> + <file>aircraft_light.png</file> + <file>aircraft_space.png</file> + <file>aircraft_drone.png</file> + <file>map_antenna.png</file> + <file>map_truck.png</file> <file>star.png</file> <file>swap.png</file> <file>gridpolar.png</file> diff --git a/swagger/sdrangel/api/swagger/include/ADSBDemod.yaml b/swagger/sdrangel/api/swagger/include/ADSBDemod.yaml new file mode 100644 index 000000000..4476535cd --- /dev/null +++ b/swagger/sdrangel/api/swagger/include/ADSBDemod.yaml @@ -0,0 +1,58 @@ +ADSBDemodSettings: + description: ADSBDemod + properties: + inputFrequencyOffset: + description: channel center frequency shift from baseband center in Hz + type: integer + format: int64 + rfBandwidth: + description: channel RF bandwidth in Hz + type: number + format: float + correlationThreshold: + type: number + format: float + samplesPerBit: + type: integer + removeTimeout: + type: integer + beastEnabled: + type: integer + beastHost: + type: string + beastPort: + type: integer + rgbColor: + type: integer + title: + type: string + streamIndex: + description: MIMO channel. Not relevant when connected to SI (single Rx). + type: integer + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer + +ADSBDemodReport: + description: ADSBDemod + properties: + channelPowerDB: + description: power received in channel (dB) + type: number + format: float + channelSampleRate: + type: integer + targetAzimuth: + type: number + format: float + targetElevation: + type: number + format: float diff --git a/swagger/sdrangel/api/swagger/include/ChannelReport.yaml b/swagger/sdrangel/api/swagger/include/ChannelReport.yaml index 21e76944b..9c658daac 100644 --- a/swagger/sdrangel/api/swagger/include/ChannelReport.yaml +++ b/swagger/sdrangel/api/swagger/include/ChannelReport.yaml @@ -11,6 +11,8 @@ ChannelReport: direction: description: 0 for Rx only, 1 for Tx only or 2 for any number and direction (default 0) type: integer + ADSBDemodReport: + $ref: "http://swgserver:8081/api/swagger/include/ADSBDemod.yaml#/ADSBDemodReport" AMDemodReport: $ref: "http://swgserver:8081/api/swagger/include/AMDemod.yaml#/AMDemodReport" AMModReport: diff --git a/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml b/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml index e92e02d8f..c89eace66 100644 --- a/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml +++ b/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml @@ -17,6 +17,8 @@ ChannelSettings: originatorChannelIndex: description: Optional for reverse API. This is the channel index from where the message comes from. type: integer + ADSBDemodSettings: + $ref: "http://swgserver:8081/api/swagger/include/ADSBDemod.yaml#/ADSBDemodSettings" AMDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/AMDemod.yaml#/AMDemodSettings" AMModSettings: diff --git a/swagger/sdrangel/api/swagger/include/FeatureSettings.yaml b/swagger/sdrangel/api/swagger/include/FeatureSettings.yaml index d673f7e0d..621cbfada 100644 --- a/swagger/sdrangel/api/swagger/include/FeatureSettings.yaml +++ b/swagger/sdrangel/api/swagger/include/FeatureSettings.yaml @@ -13,6 +13,8 @@ FeatureSettings: originatorFeatureIndex: description: Optional for reverse API. This is the feature index from where the message comes from. type: integer + GS232ControllerSettings: + $ref: "http://swgserver:8081/api/swagger/include/GS232Controller.yaml#/GS232ControllerSettings" SimplePTTSettings: $ref: "http://swgserver:8081/api/swagger/include/SimplePTT.yaml#/SimplePTTSettings" RigCtlServerSettings: diff --git a/swagger/sdrangel/api/swagger/include/GS232Controller.yaml b/swagger/sdrangel/api/swagger/include/GS232Controller.yaml new file mode 100644 index 000000000..7c8b2ed12 --- /dev/null +++ b/swagger/sdrangel/api/swagger/include/GS232Controller.yaml @@ -0,0 +1,36 @@ +GS232ControllerSettings: + description: "GS-232 Controller settings" + properties: + azimuth: + description: Target azimuth in degrees (0-450) + type: integer + elevation: + description: Target elevation in degrees (0-180) + type: integer + serialPort: + description: The serial port the GS-232 controller is connected to + type: string + baudRate: + description: The baud rate to use for the serial connection to the GS-232 controller + type: integer + track: + type: integer + title: + type: string + rgbColor: + type: integer + deviceIndex: + type: integer + channelIndex: + type: integer + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 2dd81cdeb..abbdba250 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -696,6 +696,87 @@ margin-bottom: 20px; <script> // Script section to load models into a JS Var var defs = {} + defs.ADSBDemodReport = { + "properties" : { + "channelPowerDB" : { + "type" : "number", + "format" : "float", + "description" : "power received in channel (dB)" + }, + "channelSampleRate" : { + "type" : "integer" + }, + "targetAzimuth" : { + "type" : "number", + "format" : "float" + }, + "targetElevation" : { + "type" : "number", + "format" : "float" + } + }, + "description" : "ADSBDemod" +}; + defs.ADSBDemodSettings = { + "properties" : { + "inputFrequencyOffset" : { + "type" : "integer", + "format" : "int64", + "description" : "channel center frequency shift from baseband center in Hz" + }, + "rfBandwidth" : { + "type" : "number", + "format" : "float", + "description" : "channel RF bandwidth in Hz" + }, + "correlationThreshold" : { + "type" : "number", + "format" : "float" + }, + "samplesPerBit" : { + "type" : "integer" + }, + "removeTimeout" : { + "type" : "integer" + }, + "beastEnabled" : { + "type" : "integer" + }, + "beastHost" : { + "type" : "string" + }, + "beastPort" : { + "type" : "integer" + }, + "rgbColor" : { + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "streamIndex" : { + "type" : "integer", + "description" : "MIMO channel. Not relevant when connected to SI (single Rx)." + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + } + }, + "description" : "ADSBDemod" +}; defs.AMBEDevice = { "properties" : { "deviceRef" : { @@ -2163,6 +2244,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "0 for Rx only, 1 for Tx only or 2 for any number and direction (default 0)" }, + "ADSBDemodReport" : { + "$ref" : "#/definitions/ADSBDemodReport" + }, "AMDemodReport" : { "$ref" : "#/definitions/AMDemodReport" }, @@ -2249,6 +2333,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "Optional for reverse API. This is the channel index from where the message comes from." }, + "ADSBDemodSettings" : { + "$ref" : "#/definitions/ADSBDemodSettings" + }, "AMDemodSettings" : { "$ref" : "#/definitions/AMDemodSettings" }, @@ -3300,6 +3387,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "Optional for reverse API. This is the feature index from where the message comes from." }, + "GS232ControllerSettings" : { + "$ref" : "#/definitions/GS232ControllerSettings" + }, "SimplePTTSettings" : { "$ref" : "#/definitions/SimplePTTSettings" }, @@ -4001,6 +4091,58 @@ margin-bottom: 20px; } }, "description" : "GLSpectrumGUI settings" +}; + defs.GS232ControllerSettings = { + "properties" : { + "azimuth" : { + "type" : "integer", + "description" : "Target azimuth in degrees (0-450)" + }, + "elevation" : { + "type" : "integer", + "description" : "Target elevation in degrees (0-180)" + }, + "serialPort" : { + "type" : "string", + "description" : "The serial port the GS-232 controller is connected to" + }, + "baudRate" : { + "type" : "integer", + "description" : "The baud rate to use for the serial connection to the GS-232 controller" + }, + "track" : { + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "rgbColor" : { + "type" : "integer" + }, + "deviceIndex" : { + "type" : "integer" + }, + "channelIndex" : { + "type" : "integer" + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + } + }, + "description" : "GS-232 Controller settings" }; defs.Gain = { "properties" : { @@ -39969,7 +40111,7 @@ except ApiException as e: </div> <div id="generator"> <div class="content"> - Generated 2020-10-11T08:49:12.690+02:00 + Generated 2020-10-27T16:45:08.746+01:00 </div> </div> </div> diff --git a/swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.cpp b/swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.cpp new file mode 100644 index 000000000..92bece173 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.cpp @@ -0,0 +1,177 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1, USRP and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 4.15.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + +#include "SWGADSBDemodReport.h" + +#include "SWGHelpers.h" + +#include <QJsonDocument> +#include <QJsonArray> +#include <QObject> +#include <QDebug> + +namespace SWGSDRangel { + +SWGADSBDemodReport::SWGADSBDemodReport(QString* json) { + init(); + this->fromJson(*json); +} + +SWGADSBDemodReport::SWGADSBDemodReport() { + channel_power_db = 0.0f; + m_channel_power_db_isSet = false; + channel_sample_rate = 0; + m_channel_sample_rate_isSet = false; + target_azimuth = 0.0f; + m_target_azimuth_isSet = false; + target_elevation = 0.0f; + m_target_elevation_isSet = false; +} + +SWGADSBDemodReport::~SWGADSBDemodReport() { + this->cleanup(); +} + +void +SWGADSBDemodReport::init() { + channel_power_db = 0.0f; + m_channel_power_db_isSet = false; + channel_sample_rate = 0; + m_channel_sample_rate_isSet = false; + target_azimuth = 0.0f; + m_target_azimuth_isSet = false; + target_elevation = 0.0f; + m_target_elevation_isSet = false; +} + +void +SWGADSBDemodReport::cleanup() { + + + + +} + +SWGADSBDemodReport* +SWGADSBDemodReport::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGADSBDemodReport::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&channel_power_db, pJson["channelPowerDB"], "float", ""); + + ::SWGSDRangel::setValue(&channel_sample_rate, pJson["channelSampleRate"], "qint32", ""); + + ::SWGSDRangel::setValue(&target_azimuth, pJson["targetAzimuth"], "float", ""); + + ::SWGSDRangel::setValue(&target_elevation, pJson["targetElevation"], "float", ""); + +} + +QString +SWGADSBDemodReport::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGADSBDemodReport::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_channel_power_db_isSet){ + obj->insert("channelPowerDB", QJsonValue(channel_power_db)); + } + if(m_channel_sample_rate_isSet){ + obj->insert("channelSampleRate", QJsonValue(channel_sample_rate)); + } + if(m_target_azimuth_isSet){ + obj->insert("targetAzimuth", QJsonValue(target_azimuth)); + } + if(m_target_elevation_isSet){ + obj->insert("targetElevation", QJsonValue(target_elevation)); + } + + return obj; +} + +float +SWGADSBDemodReport::getChannelPowerDb() { + return channel_power_db; +} +void +SWGADSBDemodReport::setChannelPowerDb(float channel_power_db) { + this->channel_power_db = channel_power_db; + this->m_channel_power_db_isSet = true; +} + +qint32 +SWGADSBDemodReport::getChannelSampleRate() { + return channel_sample_rate; +} +void +SWGADSBDemodReport::setChannelSampleRate(qint32 channel_sample_rate) { + this->channel_sample_rate = channel_sample_rate; + this->m_channel_sample_rate_isSet = true; +} + +float +SWGADSBDemodReport::getTargetAzimuth() { + return target_azimuth; +} +void +SWGADSBDemodReport::setTargetAzimuth(float target_azimuth) { + this->target_azimuth = target_azimuth; + this->m_target_azimuth_isSet = true; +} + +float +SWGADSBDemodReport::getTargetElevation() { + return target_elevation; +} +void +SWGADSBDemodReport::setTargetElevation(float target_elevation) { + this->target_elevation = target_elevation; + this->m_target_elevation_isSet = true; +} + + +bool +SWGADSBDemodReport::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_channel_power_db_isSet){ + isObjectUpdated = true; break; + } + if(m_channel_sample_rate_isSet){ + isObjectUpdated = true; break; + } + if(m_target_azimuth_isSet){ + isObjectUpdated = true; break; + } + if(m_target_elevation_isSet){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.h b/swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.h new file mode 100644 index 000000000..f0bf18b30 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGADSBDemodReport.h @@ -0,0 +1,76 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1, USRP and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 4.15.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +/* + * SWGADSBDemodReport.h + * + * ADSBDemod + */ + +#ifndef SWGADSBDemodReport_H_ +#define SWGADSBDemodReport_H_ + +#include <QJsonObject> + + + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGADSBDemodReport: public SWGObject { +public: + SWGADSBDemodReport(); + SWGADSBDemodReport(QString* json); + virtual ~SWGADSBDemodReport(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGADSBDemodReport* fromJson(QString &jsonString) override; + + float getChannelPowerDb(); + void setChannelPowerDb(float channel_power_db); + + qint32 getChannelSampleRate(); + void setChannelSampleRate(qint32 channel_sample_rate); + + float getTargetAzimuth(); + void setTargetAzimuth(float target_azimuth); + + float getTargetElevation(); + void setTargetElevation(float target_elevation); + + + virtual bool isSet() override; + +private: + float channel_power_db; + bool m_channel_power_db_isSet; + + qint32 channel_sample_rate; + bool m_channel_sample_rate_isSet; + + float target_azimuth; + bool m_target_azimuth_isSet; + + float target_elevation; + bool m_target_elevation_isSet; + +}; + +} + +#endif /* SWGADSBDemodReport_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp new file mode 100644 index 000000000..e01362ced --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.cpp @@ -0,0 +1,459 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1, USRP and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 4.15.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + +#include "SWGADSBDemodSettings.h" + +#include "SWGHelpers.h" + +#include <QJsonDocument> +#include <QJsonArray> +#include <QObject> +#include <QDebug> + +namespace SWGSDRangel { + +SWGADSBDemodSettings::SWGADSBDemodSettings(QString* json) { + init(); + this->fromJson(*json); +} + +SWGADSBDemodSettings::SWGADSBDemodSettings() { + input_frequency_offset = 0L; + m_input_frequency_offset_isSet = false; + rf_bandwidth = 0.0f; + m_rf_bandwidth_isSet = false; + correlation_threshold = 0.0f; + m_correlation_threshold_isSet = false; + samples_per_bit = 0; + m_samples_per_bit_isSet = false; + remove_timeout = 0; + m_remove_timeout_isSet = false; + beast_enabled = 0; + m_beast_enabled_isSet = false; + beast_host = nullptr; + m_beast_host_isSet = false; + beast_port = 0; + m_beast_port_isSet = false; + rgb_color = 0; + m_rgb_color_isSet = false; + title = nullptr; + m_title_isSet = false; + stream_index = 0; + m_stream_index_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = nullptr; + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; +} + +SWGADSBDemodSettings::~SWGADSBDemodSettings() { + this->cleanup(); +} + +void +SWGADSBDemodSettings::init() { + input_frequency_offset = 0L; + m_input_frequency_offset_isSet = false; + rf_bandwidth = 0.0f; + m_rf_bandwidth_isSet = false; + correlation_threshold = 0.0f; + m_correlation_threshold_isSet = false; + samples_per_bit = 0; + m_samples_per_bit_isSet = false; + remove_timeout = 0; + m_remove_timeout_isSet = false; + beast_enabled = 0; + m_beast_enabled_isSet = false; + beast_host = new QString(""); + m_beast_host_isSet = false; + beast_port = 0; + m_beast_port_isSet = false; + rgb_color = 0; + m_rgb_color_isSet = false; + title = new QString(""); + m_title_isSet = false; + stream_index = 0; + m_stream_index_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = new QString(""); + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; +} + +void +SWGADSBDemodSettings::cleanup() { + + + + + + + if(beast_host != nullptr) { + delete beast_host; + } + + + if(title != nullptr) { + delete title; + } + + + if(reverse_api_address != nullptr) { + delete reverse_api_address; + } + + + +} + +SWGADSBDemodSettings* +SWGADSBDemodSettings::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGADSBDemodSettings::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&input_frequency_offset, pJson["inputFrequencyOffset"], "qint64", ""); + + ::SWGSDRangel::setValue(&rf_bandwidth, pJson["rfBandwidth"], "float", ""); + + ::SWGSDRangel::setValue(&correlation_threshold, pJson["correlationThreshold"], "float", ""); + + ::SWGSDRangel::setValue(&samples_per_bit, pJson["samplesPerBit"], "qint32", ""); + + ::SWGSDRangel::setValue(&remove_timeout, pJson["removeTimeout"], "qint32", ""); + + ::SWGSDRangel::setValue(&beast_enabled, pJson["beastEnabled"], "qint32", ""); + + ::SWGSDRangel::setValue(&beast_host, pJson["beastHost"], "QString", "QString"); + + ::SWGSDRangel::setValue(&beast_port, pJson["beastPort"], "qint32", ""); + + ::SWGSDRangel::setValue(&rgb_color, pJson["rgbColor"], "qint32", ""); + + ::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString"); + + ::SWGSDRangel::setValue(&stream_index, pJson["streamIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_address, pJson["reverseAPIAddress"], "QString", "QString"); + + ::SWGSDRangel::setValue(&reverse_api_port, pJson["reverseAPIPort"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_device_index, pJson["reverseAPIDeviceIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_channel_index, pJson["reverseAPIChannelIndex"], "qint32", ""); + +} + +QString +SWGADSBDemodSettings::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGADSBDemodSettings::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_input_frequency_offset_isSet){ + obj->insert("inputFrequencyOffset", QJsonValue(input_frequency_offset)); + } + if(m_rf_bandwidth_isSet){ + obj->insert("rfBandwidth", QJsonValue(rf_bandwidth)); + } + if(m_correlation_threshold_isSet){ + obj->insert("correlationThreshold", QJsonValue(correlation_threshold)); + } + if(m_samples_per_bit_isSet){ + obj->insert("samplesPerBit", QJsonValue(samples_per_bit)); + } + if(m_remove_timeout_isSet){ + obj->insert("removeTimeout", QJsonValue(remove_timeout)); + } + if(m_beast_enabled_isSet){ + obj->insert("beastEnabled", QJsonValue(beast_enabled)); + } + if(beast_host != nullptr && *beast_host != QString("")){ + toJsonValue(QString("beastHost"), beast_host, obj, QString("QString")); + } + if(m_beast_port_isSet){ + obj->insert("beastPort", QJsonValue(beast_port)); + } + if(m_rgb_color_isSet){ + obj->insert("rgbColor", QJsonValue(rgb_color)); + } + if(title != nullptr && *title != QString("")){ + toJsonValue(QString("title"), title, obj, QString("QString")); + } + if(m_stream_index_isSet){ + obj->insert("streamIndex", QJsonValue(stream_index)); + } + if(m_use_reverse_api_isSet){ + obj->insert("useReverseAPI", QJsonValue(use_reverse_api)); + } + if(reverse_api_address != nullptr && *reverse_api_address != QString("")){ + toJsonValue(QString("reverseAPIAddress"), reverse_api_address, obj, QString("QString")); + } + if(m_reverse_api_port_isSet){ + obj->insert("reverseAPIPort", QJsonValue(reverse_api_port)); + } + if(m_reverse_api_device_index_isSet){ + obj->insert("reverseAPIDeviceIndex", QJsonValue(reverse_api_device_index)); + } + if(m_reverse_api_channel_index_isSet){ + obj->insert("reverseAPIChannelIndex", QJsonValue(reverse_api_channel_index)); + } + + return obj; +} + +qint64 +SWGADSBDemodSettings::getInputFrequencyOffset() { + return input_frequency_offset; +} +void +SWGADSBDemodSettings::setInputFrequencyOffset(qint64 input_frequency_offset) { + this->input_frequency_offset = input_frequency_offset; + this->m_input_frequency_offset_isSet = true; +} + +float +SWGADSBDemodSettings::getRfBandwidth() { + return rf_bandwidth; +} +void +SWGADSBDemodSettings::setRfBandwidth(float rf_bandwidth) { + this->rf_bandwidth = rf_bandwidth; + this->m_rf_bandwidth_isSet = true; +} + +float +SWGADSBDemodSettings::getCorrelationThreshold() { + return correlation_threshold; +} +void +SWGADSBDemodSettings::setCorrelationThreshold(float correlation_threshold) { + this->correlation_threshold = correlation_threshold; + this->m_correlation_threshold_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getSamplesPerBit() { + return samples_per_bit; +} +void +SWGADSBDemodSettings::setSamplesPerBit(qint32 samples_per_bit) { + this->samples_per_bit = samples_per_bit; + this->m_samples_per_bit_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getRemoveTimeout() { + return remove_timeout; +} +void +SWGADSBDemodSettings::setRemoveTimeout(qint32 remove_timeout) { + this->remove_timeout = remove_timeout; + this->m_remove_timeout_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getBeastEnabled() { + return beast_enabled; +} +void +SWGADSBDemodSettings::setBeastEnabled(qint32 beast_enabled) { + this->beast_enabled = beast_enabled; + this->m_beast_enabled_isSet = true; +} + +QString* +SWGADSBDemodSettings::getBeastHost() { + return beast_host; +} +void +SWGADSBDemodSettings::setBeastHost(QString* beast_host) { + this->beast_host = beast_host; + this->m_beast_host_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getBeastPort() { + return beast_port; +} +void +SWGADSBDemodSettings::setBeastPort(qint32 beast_port) { + this->beast_port = beast_port; + this->m_beast_port_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getRgbColor() { + return rgb_color; +} +void +SWGADSBDemodSettings::setRgbColor(qint32 rgb_color) { + this->rgb_color = rgb_color; + this->m_rgb_color_isSet = true; +} + +QString* +SWGADSBDemodSettings::getTitle() { + return title; +} +void +SWGADSBDemodSettings::setTitle(QString* title) { + this->title = title; + this->m_title_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getStreamIndex() { + return stream_index; +} +void +SWGADSBDemodSettings::setStreamIndex(qint32 stream_index) { + this->stream_index = stream_index; + this->m_stream_index_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getUseReverseApi() { + return use_reverse_api; +} +void +SWGADSBDemodSettings::setUseReverseApi(qint32 use_reverse_api) { + this->use_reverse_api = use_reverse_api; + this->m_use_reverse_api_isSet = true; +} + +QString* +SWGADSBDemodSettings::getReverseApiAddress() { + return reverse_api_address; +} +void +SWGADSBDemodSettings::setReverseApiAddress(QString* reverse_api_address) { + this->reverse_api_address = reverse_api_address; + this->m_reverse_api_address_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getReverseApiPort() { + return reverse_api_port; +} +void +SWGADSBDemodSettings::setReverseApiPort(qint32 reverse_api_port) { + this->reverse_api_port = reverse_api_port; + this->m_reverse_api_port_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getReverseApiDeviceIndex() { + return reverse_api_device_index; +} +void +SWGADSBDemodSettings::setReverseApiDeviceIndex(qint32 reverse_api_device_index) { + this->reverse_api_device_index = reverse_api_device_index; + this->m_reverse_api_device_index_isSet = true; +} + +qint32 +SWGADSBDemodSettings::getReverseApiChannelIndex() { + return reverse_api_channel_index; +} +void +SWGADSBDemodSettings::setReverseApiChannelIndex(qint32 reverse_api_channel_index) { + this->reverse_api_channel_index = reverse_api_channel_index; + this->m_reverse_api_channel_index_isSet = true; +} + + +bool +SWGADSBDemodSettings::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_input_frequency_offset_isSet){ + isObjectUpdated = true; break; + } + if(m_rf_bandwidth_isSet){ + isObjectUpdated = true; break; + } + if(m_correlation_threshold_isSet){ + isObjectUpdated = true; break; + } + if(m_samples_per_bit_isSet){ + isObjectUpdated = true; break; + } + if(m_remove_timeout_isSet){ + isObjectUpdated = true; break; + } + if(m_beast_enabled_isSet){ + isObjectUpdated = true; break; + } + if(beast_host && *beast_host != QString("")){ + isObjectUpdated = true; break; + } + if(m_beast_port_isSet){ + isObjectUpdated = true; break; + } + if(m_rgb_color_isSet){ + isObjectUpdated = true; break; + } + if(title && *title != QString("")){ + isObjectUpdated = true; break; + } + if(m_stream_index_isSet){ + isObjectUpdated = true; break; + } + if(m_use_reverse_api_isSet){ + isObjectUpdated = true; break; + } + if(reverse_api_address && *reverse_api_address != QString("")){ + isObjectUpdated = true; break; + } + if(m_reverse_api_port_isSet){ + isObjectUpdated = true; break; + } + if(m_reverse_api_device_index_isSet){ + isObjectUpdated = true; break; + } + if(m_reverse_api_channel_index_isSet){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h new file mode 100644 index 000000000..87ec98472 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGADSBDemodSettings.h @@ -0,0 +1,149 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1, USRP and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 4.15.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +/* + * SWGADSBDemodSettings.h + * + * ADSBDemod + */ + +#ifndef SWGADSBDemodSettings_H_ +#define SWGADSBDemodSettings_H_ + +#include <QJsonObject> + + +#include <QString> + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGADSBDemodSettings: public SWGObject { +public: + SWGADSBDemodSettings(); + SWGADSBDemodSettings(QString* json); + virtual ~SWGADSBDemodSettings(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGADSBDemodSettings* fromJson(QString &jsonString) override; + + qint64 getInputFrequencyOffset(); + void setInputFrequencyOffset(qint64 input_frequency_offset); + + float getRfBandwidth(); + void setRfBandwidth(float rf_bandwidth); + + float getCorrelationThreshold(); + void setCorrelationThreshold(float correlation_threshold); + + qint32 getSamplesPerBit(); + void setSamplesPerBit(qint32 samples_per_bit); + + qint32 getRemoveTimeout(); + void setRemoveTimeout(qint32 remove_timeout); + + qint32 getBeastEnabled(); + void setBeastEnabled(qint32 beast_enabled); + + QString* getBeastHost(); + void setBeastHost(QString* beast_host); + + qint32 getBeastPort(); + void setBeastPort(qint32 beast_port); + + qint32 getRgbColor(); + void setRgbColor(qint32 rgb_color); + + QString* getTitle(); + void setTitle(QString* title); + + qint32 getStreamIndex(); + void setStreamIndex(qint32 stream_index); + + qint32 getUseReverseApi(); + void setUseReverseApi(qint32 use_reverse_api); + + QString* getReverseApiAddress(); + void setReverseApiAddress(QString* reverse_api_address); + + qint32 getReverseApiPort(); + void setReverseApiPort(qint32 reverse_api_port); + + qint32 getReverseApiDeviceIndex(); + void setReverseApiDeviceIndex(qint32 reverse_api_device_index); + + qint32 getReverseApiChannelIndex(); + void setReverseApiChannelIndex(qint32 reverse_api_channel_index); + + + virtual bool isSet() override; + +private: + qint64 input_frequency_offset; + bool m_input_frequency_offset_isSet; + + float rf_bandwidth; + bool m_rf_bandwidth_isSet; + + float correlation_threshold; + bool m_correlation_threshold_isSet; + + qint32 samples_per_bit; + bool m_samples_per_bit_isSet; + + qint32 remove_timeout; + bool m_remove_timeout_isSet; + + qint32 beast_enabled; + bool m_beast_enabled_isSet; + + QString* beast_host; + bool m_beast_host_isSet; + + qint32 beast_port; + bool m_beast_port_isSet; + + qint32 rgb_color; + bool m_rgb_color_isSet; + + QString* title; + bool m_title_isSet; + + qint32 stream_index; + bool m_stream_index_isSet; + + qint32 use_reverse_api; + bool m_use_reverse_api_isSet; + + QString* reverse_api_address; + bool m_reverse_api_address_isSet; + + qint32 reverse_api_port; + bool m_reverse_api_port_isSet; + + qint32 reverse_api_device_index; + bool m_reverse_api_device_index_isSet; + + qint32 reverse_api_channel_index; + bool m_reverse_api_channel_index_isSet; + +}; + +} + +#endif /* SWGADSBDemodSettings_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp b/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp index 0afdca202..f2584d3ab 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp @@ -32,6 +32,8 @@ SWGChannelReport::SWGChannelReport() { m_channel_type_isSet = false; direction = 0; m_direction_isSet = false; + adsb_demod_report = nullptr; + m_adsb_demod_report_isSet = false; am_demod_report = nullptr; m_am_demod_report_isSet = false; am_mod_report = nullptr; @@ -86,6 +88,8 @@ SWGChannelReport::init() { m_channel_type_isSet = false; direction = 0; m_direction_isSet = false; + adsb_demod_report = new SWGADSBDemodReport(); + m_adsb_demod_report_isSet = false; am_demod_report = new SWGAMDemodReport(); m_am_demod_report_isSet = false; am_mod_report = new SWGAMModReport(); @@ -136,6 +140,9 @@ SWGChannelReport::cleanup() { delete channel_type; } + if(adsb_demod_report != nullptr) { + delete adsb_demod_report; + } if(am_demod_report != nullptr) { delete am_demod_report; } @@ -216,6 +223,8 @@ SWGChannelReport::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&direction, pJson["direction"], "qint32", ""); + ::SWGSDRangel::setValue(&adsb_demod_report, pJson["ADSBDemodReport"], "SWGADSBDemodReport", "SWGADSBDemodReport"); + ::SWGSDRangel::setValue(&am_demod_report, pJson["AMDemodReport"], "SWGAMDemodReport", "SWGAMDemodReport"); ::SWGSDRangel::setValue(&am_mod_report, pJson["AMModReport"], "SWGAMModReport", "SWGAMModReport"); @@ -280,6 +289,9 @@ SWGChannelReport::asJsonObject() { if(m_direction_isSet){ obj->insert("direction", QJsonValue(direction)); } + if((adsb_demod_report != nullptr) && (adsb_demod_report->isSet())){ + toJsonValue(QString("ADSBDemodReport"), adsb_demod_report, obj, QString("SWGADSBDemodReport")); + } if((am_demod_report != nullptr) && (am_demod_report->isSet())){ toJsonValue(QString("AMDemodReport"), am_demod_report, obj, QString("SWGAMDemodReport")); } @@ -367,6 +379,16 @@ SWGChannelReport::setDirection(qint32 direction) { this->m_direction_isSet = true; } +SWGADSBDemodReport* +SWGChannelReport::getAdsbDemodReport() { + return adsb_demod_report; +} +void +SWGChannelReport::setAdsbDemodReport(SWGADSBDemodReport* adsb_demod_report) { + this->adsb_demod_report = adsb_demod_report; + this->m_adsb_demod_report_isSet = true; +} + SWGAMDemodReport* SWGChannelReport::getAmDemodReport() { return am_demod_report; @@ -588,6 +610,9 @@ SWGChannelReport::isSet(){ if(m_direction_isSet){ isObjectUpdated = true; break; } + if(adsb_demod_report && adsb_demod_report->isSet()){ + isObjectUpdated = true; break; + } if(am_demod_report && am_demod_report->isSet()){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelReport.h b/swagger/sdrangel/code/qt5/client/SWGChannelReport.h index 46ad8c44e..bb89c5cc5 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelReport.h +++ b/swagger/sdrangel/code/qt5/client/SWGChannelReport.h @@ -22,6 +22,7 @@ #include <QJsonObject> +#include "SWGADSBDemodReport.h" #include "SWGAMDemodReport.h" #include "SWGAMModReport.h" #include "SWGATVModReport.h" @@ -69,6 +70,9 @@ public: qint32 getDirection(); void setDirection(qint32 direction); + SWGADSBDemodReport* getAdsbDemodReport(); + void setAdsbDemodReport(SWGADSBDemodReport* adsb_demod_report); + SWGAMDemodReport* getAmDemodReport(); void setAmDemodReport(SWGAMDemodReport* am_demod_report); @@ -142,6 +146,9 @@ private: qint32 direction; bool m_direction_isSet; + SWGADSBDemodReport* adsb_demod_report; + bool m_adsb_demod_report_isSet; + SWGAMDemodReport* am_demod_report; bool m_am_demod_report_isSet; diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp index e0519f71c..49a6803ec 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp @@ -36,6 +36,8 @@ SWGChannelSettings::SWGChannelSettings() { m_originator_device_set_index_isSet = false; originator_channel_index = 0; m_originator_channel_index_isSet = false; + adsb_demod_settings = nullptr; + m_adsb_demod_settings_isSet = false; am_demod_settings = nullptr; m_am_demod_settings_isSet = false; am_mod_settings = nullptr; @@ -106,6 +108,8 @@ SWGChannelSettings::init() { m_originator_device_set_index_isSet = false; originator_channel_index = 0; m_originator_channel_index_isSet = false; + adsb_demod_settings = new SWGADSBDemodSettings(); + m_adsb_demod_settings_isSet = false; am_demod_settings = new SWGAMDemodSettings(); m_am_demod_settings_isSet = false; am_mod_settings = new SWGAMModSettings(); @@ -170,6 +174,9 @@ SWGChannelSettings::cleanup() { + if(adsb_demod_settings != nullptr) { + delete adsb_demod_settings; + } if(am_demod_settings != nullptr) { delete am_demod_settings; } @@ -272,6 +279,8 @@ SWGChannelSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&originator_channel_index, pJson["originatorChannelIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&adsb_demod_settings, pJson["ADSBDemodSettings"], "SWGADSBDemodSettings", "SWGADSBDemodSettings"); + ::SWGSDRangel::setValue(&am_demod_settings, pJson["AMDemodSettings"], "SWGAMDemodSettings", "SWGAMDemodSettings"); ::SWGSDRangel::setValue(&am_mod_settings, pJson["AMModSettings"], "SWGAMModSettings", "SWGAMModSettings"); @@ -354,6 +363,9 @@ SWGChannelSettings::asJsonObject() { if(m_originator_channel_index_isSet){ obj->insert("originatorChannelIndex", QJsonValue(originator_channel_index)); } + if((adsb_demod_settings != nullptr) && (adsb_demod_settings->isSet())){ + toJsonValue(QString("ADSBDemodSettings"), adsb_demod_settings, obj, QString("SWGADSBDemodSettings")); + } if((am_demod_settings != nullptr) && (am_demod_settings->isSet())){ toJsonValue(QString("AMDemodSettings"), am_demod_settings, obj, QString("SWGAMDemodSettings")); } @@ -479,6 +491,16 @@ SWGChannelSettings::setOriginatorChannelIndex(qint32 originator_channel_index) { this->m_originator_channel_index_isSet = true; } +SWGADSBDemodSettings* +SWGChannelSettings::getAdsbDemodSettings() { + return adsb_demod_settings; +} +void +SWGChannelSettings::setAdsbDemodSettings(SWGADSBDemodSettings* adsb_demod_settings) { + this->adsb_demod_settings = adsb_demod_settings; + this->m_adsb_demod_settings_isSet = true; +} + SWGAMDemodSettings* SWGChannelSettings::getAmDemodSettings() { return am_demod_settings; @@ -766,6 +788,9 @@ SWGChannelSettings::isSet(){ if(m_originator_channel_index_isSet){ isObjectUpdated = true; break; } + if(adsb_demod_settings && adsb_demod_settings->isSet()){ + isObjectUpdated = true; break; + } if(am_demod_settings && am_demod_settings->isSet()){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h index 990208b03..a6f4dc5cb 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h @@ -22,6 +22,7 @@ #include <QJsonObject> +#include "SWGADSBDemodSettings.h" #include "SWGAMDemodSettings.h" #include "SWGAMModSettings.h" #include "SWGATVDemodSettings.h" @@ -81,6 +82,9 @@ public: qint32 getOriginatorChannelIndex(); void setOriginatorChannelIndex(qint32 originator_channel_index); + SWGADSBDemodSettings* getAdsbDemodSettings(); + void setAdsbDemodSettings(SWGADSBDemodSettings* adsb_demod_settings); + SWGAMDemodSettings* getAmDemodSettings(); void setAmDemodSettings(SWGAMDemodSettings* am_demod_settings); @@ -178,6 +182,9 @@ private: qint32 originator_channel_index; bool m_originator_channel_index_isSet; + SWGADSBDemodSettings* adsb_demod_settings; + bool m_adsb_demod_settings_isSet; + SWGAMDemodSettings* am_demod_settings; bool m_am_demod_settings_isSet; diff --git a/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.cpp index dbe340b7c..11580d15c 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.cpp @@ -34,6 +34,8 @@ SWGFeatureSettings::SWGFeatureSettings() { m_originator_feature_set_index_isSet = false; originator_feature_index = 0; m_originator_feature_index_isSet = false; + gs232_controller_settings = nullptr; + m_gs232_controller_settings_isSet = false; simple_ptt_settings = nullptr; m_simple_ptt_settings_isSet = false; rig_ctl_server_settings = nullptr; @@ -52,6 +54,8 @@ SWGFeatureSettings::init() { m_originator_feature_set_index_isSet = false; originator_feature_index = 0; m_originator_feature_index_isSet = false; + gs232_controller_settings = new SWGGS232ControllerSettings(); + m_gs232_controller_settings_isSet = false; simple_ptt_settings = new SWGSimplePTTSettings(); m_simple_ptt_settings_isSet = false; rig_ctl_server_settings = new SWGRigCtlServerSettings(); @@ -65,6 +69,9 @@ SWGFeatureSettings::cleanup() { } + if(gs232_controller_settings != nullptr) { + delete gs232_controller_settings; + } if(simple_ptt_settings != nullptr) { delete simple_ptt_settings; } @@ -90,6 +97,8 @@ SWGFeatureSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&originator_feature_index, pJson["originatorFeatureIndex"], "qint32", ""); + ::SWGSDRangel::setValue(&gs232_controller_settings, pJson["GS232ControllerSettings"], "SWGGS232ControllerSettings", "SWGGS232ControllerSettings"); + ::SWGSDRangel::setValue(&simple_ptt_settings, pJson["SimplePTTSettings"], "SWGSimplePTTSettings", "SWGSimplePTTSettings"); ::SWGSDRangel::setValue(&rig_ctl_server_settings, pJson["RigCtlServerSettings"], "SWGRigCtlServerSettings", "SWGRigCtlServerSettings"); @@ -119,6 +128,9 @@ SWGFeatureSettings::asJsonObject() { if(m_originator_feature_index_isSet){ obj->insert("originatorFeatureIndex", QJsonValue(originator_feature_index)); } + if((gs232_controller_settings != nullptr) && (gs232_controller_settings->isSet())){ + toJsonValue(QString("GS232ControllerSettings"), gs232_controller_settings, obj, QString("SWGGS232ControllerSettings")); + } if((simple_ptt_settings != nullptr) && (simple_ptt_settings->isSet())){ toJsonValue(QString("SimplePTTSettings"), simple_ptt_settings, obj, QString("SWGSimplePTTSettings")); } @@ -159,6 +171,16 @@ SWGFeatureSettings::setOriginatorFeatureIndex(qint32 originator_feature_index) { this->m_originator_feature_index_isSet = true; } +SWGGS232ControllerSettings* +SWGFeatureSettings::getGs232ControllerSettings() { + return gs232_controller_settings; +} +void +SWGFeatureSettings::setGs232ControllerSettings(SWGGS232ControllerSettings* gs232_controller_settings) { + this->gs232_controller_settings = gs232_controller_settings; + this->m_gs232_controller_settings_isSet = true; +} + SWGSimplePTTSettings* SWGFeatureSettings::getSimplePttSettings() { return simple_ptt_settings; @@ -193,6 +215,9 @@ SWGFeatureSettings::isSet(){ if(m_originator_feature_index_isSet){ isObjectUpdated = true; break; } + if(gs232_controller_settings && gs232_controller_settings->isSet()){ + isObjectUpdated = true; break; + } if(simple_ptt_settings && simple_ptt_settings->isSet()){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.h b/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.h index 21480f57a..9bc2b8cd5 100644 --- a/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGFeatureSettings.h @@ -22,6 +22,7 @@ #include <QJsonObject> +#include "SWGGS232ControllerSettings.h" #include "SWGRigCtlServerSettings.h" #include "SWGSimplePTTSettings.h" #include <QString> @@ -53,6 +54,9 @@ public: qint32 getOriginatorFeatureIndex(); void setOriginatorFeatureIndex(qint32 originator_feature_index); + SWGGS232ControllerSettings* getGs232ControllerSettings(); + void setGs232ControllerSettings(SWGGS232ControllerSettings* gs232_controller_settings); + SWGSimplePTTSettings* getSimplePttSettings(); void setSimplePttSettings(SWGSimplePTTSettings* simple_ptt_settings); @@ -72,6 +76,9 @@ private: qint32 originator_feature_index; bool m_originator_feature_index_isSet; + SWGGS232ControllerSettings* gs232_controller_settings; + bool m_gs232_controller_settings_isSet; + SWGSimplePTTSettings* simple_ptt_settings; bool m_simple_ptt_settings_isSet; diff --git a/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp new file mode 100644 index 000000000..cd3923b65 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.cpp @@ -0,0 +1,413 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1, USRP and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 4.15.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + +#include "SWGGS232ControllerSettings.h" + +#include "SWGHelpers.h" + +#include <QJsonDocument> +#include <QJsonArray> +#include <QObject> +#include <QDebug> + +namespace SWGSDRangel { + +SWGGS232ControllerSettings::SWGGS232ControllerSettings(QString* json) { + init(); + this->fromJson(*json); +} + +SWGGS232ControllerSettings::SWGGS232ControllerSettings() { + azimuth = 0; + m_azimuth_isSet = false; + elevation = 0; + m_elevation_isSet = false; + serial_port = nullptr; + m_serial_port_isSet = false; + baud_rate = 0; + m_baud_rate_isSet = false; + track = 0; + m_track_isSet = false; + title = nullptr; + m_title_isSet = false; + rgb_color = 0; + m_rgb_color_isSet = false; + device_index = 0; + m_device_index_isSet = false; + channel_index = 0; + m_channel_index_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = nullptr; + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; +} + +SWGGS232ControllerSettings::~SWGGS232ControllerSettings() { + this->cleanup(); +} + +void +SWGGS232ControllerSettings::init() { + azimuth = 0; + m_azimuth_isSet = false; + elevation = 0; + m_elevation_isSet = false; + serial_port = new QString(""); + m_serial_port_isSet = false; + baud_rate = 0; + m_baud_rate_isSet = false; + track = 0; + m_track_isSet = false; + title = new QString(""); + m_title_isSet = false; + rgb_color = 0; + m_rgb_color_isSet = false; + device_index = 0; + m_device_index_isSet = false; + channel_index = 0; + m_channel_index_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = new QString(""); + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; +} + +void +SWGGS232ControllerSettings::cleanup() { + + + if(serial_port != nullptr) { + delete serial_port; + } + + + if(title != nullptr) { + delete title; + } + + + + + if(reverse_api_address != nullptr) { + delete reverse_api_address; + } + + + +} + +SWGGS232ControllerSettings* +SWGGS232ControllerSettings::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGGS232ControllerSettings::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&azimuth, pJson["azimuth"], "qint32", ""); + + ::SWGSDRangel::setValue(&elevation, pJson["elevation"], "qint32", ""); + + ::SWGSDRangel::setValue(&serial_port, pJson["serialPort"], "QString", "QString"); + + ::SWGSDRangel::setValue(&baud_rate, pJson["baudRate"], "qint32", ""); + + ::SWGSDRangel::setValue(&track, pJson["track"], "qint32", ""); + + ::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString"); + + ::SWGSDRangel::setValue(&rgb_color, pJson["rgbColor"], "qint32", ""); + + ::SWGSDRangel::setValue(&device_index, pJson["deviceIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&channel_index, pJson["channelIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_address, pJson["reverseAPIAddress"], "QString", "QString"); + + ::SWGSDRangel::setValue(&reverse_api_port, pJson["reverseAPIPort"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_device_index, pJson["reverseAPIDeviceIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_channel_index, pJson["reverseAPIChannelIndex"], "qint32", ""); + +} + +QString +SWGGS232ControllerSettings::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGGS232ControllerSettings::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_azimuth_isSet){ + obj->insert("azimuth", QJsonValue(azimuth)); + } + if(m_elevation_isSet){ + obj->insert("elevation", QJsonValue(elevation)); + } + if(serial_port != nullptr && *serial_port != QString("")){ + toJsonValue(QString("serialPort"), serial_port, obj, QString("QString")); + } + if(m_baud_rate_isSet){ + obj->insert("baudRate", QJsonValue(baud_rate)); + } + if(m_track_isSet){ + obj->insert("track", QJsonValue(track)); + } + if(title != nullptr && *title != QString("")){ + toJsonValue(QString("title"), title, obj, QString("QString")); + } + if(m_rgb_color_isSet){ + obj->insert("rgbColor", QJsonValue(rgb_color)); + } + if(m_device_index_isSet){ + obj->insert("deviceIndex", QJsonValue(device_index)); + } + if(m_channel_index_isSet){ + obj->insert("channelIndex", QJsonValue(channel_index)); + } + if(m_use_reverse_api_isSet){ + obj->insert("useReverseAPI", QJsonValue(use_reverse_api)); + } + if(reverse_api_address != nullptr && *reverse_api_address != QString("")){ + toJsonValue(QString("reverseAPIAddress"), reverse_api_address, obj, QString("QString")); + } + if(m_reverse_api_port_isSet){ + obj->insert("reverseAPIPort", QJsonValue(reverse_api_port)); + } + if(m_reverse_api_device_index_isSet){ + obj->insert("reverseAPIDeviceIndex", QJsonValue(reverse_api_device_index)); + } + if(m_reverse_api_channel_index_isSet){ + obj->insert("reverseAPIChannelIndex", QJsonValue(reverse_api_channel_index)); + } + + return obj; +} + +qint32 +SWGGS232ControllerSettings::getAzimuth() { + return azimuth; +} +void +SWGGS232ControllerSettings::setAzimuth(qint32 azimuth) { + this->azimuth = azimuth; + this->m_azimuth_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getElevation() { + return elevation; +} +void +SWGGS232ControllerSettings::setElevation(qint32 elevation) { + this->elevation = elevation; + this->m_elevation_isSet = true; +} + +QString* +SWGGS232ControllerSettings::getSerialPort() { + return serial_port; +} +void +SWGGS232ControllerSettings::setSerialPort(QString* serial_port) { + this->serial_port = serial_port; + this->m_serial_port_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getBaudRate() { + return baud_rate; +} +void +SWGGS232ControllerSettings::setBaudRate(qint32 baud_rate) { + this->baud_rate = baud_rate; + this->m_baud_rate_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getTrack() { + return track; +} +void +SWGGS232ControllerSettings::setTrack(qint32 track) { + this->track = track; + this->m_track_isSet = true; +} + +QString* +SWGGS232ControllerSettings::getTitle() { + return title; +} +void +SWGGS232ControllerSettings::setTitle(QString* title) { + this->title = title; + this->m_title_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getRgbColor() { + return rgb_color; +} +void +SWGGS232ControllerSettings::setRgbColor(qint32 rgb_color) { + this->rgb_color = rgb_color; + this->m_rgb_color_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getDeviceIndex() { + return device_index; +} +void +SWGGS232ControllerSettings::setDeviceIndex(qint32 device_index) { + this->device_index = device_index; + this->m_device_index_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getChannelIndex() { + return channel_index; +} +void +SWGGS232ControllerSettings::setChannelIndex(qint32 channel_index) { + this->channel_index = channel_index; + this->m_channel_index_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getUseReverseApi() { + return use_reverse_api; +} +void +SWGGS232ControllerSettings::setUseReverseApi(qint32 use_reverse_api) { + this->use_reverse_api = use_reverse_api; + this->m_use_reverse_api_isSet = true; +} + +QString* +SWGGS232ControllerSettings::getReverseApiAddress() { + return reverse_api_address; +} +void +SWGGS232ControllerSettings::setReverseApiAddress(QString* reverse_api_address) { + this->reverse_api_address = reverse_api_address; + this->m_reverse_api_address_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getReverseApiPort() { + return reverse_api_port; +} +void +SWGGS232ControllerSettings::setReverseApiPort(qint32 reverse_api_port) { + this->reverse_api_port = reverse_api_port; + this->m_reverse_api_port_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getReverseApiDeviceIndex() { + return reverse_api_device_index; +} +void +SWGGS232ControllerSettings::setReverseApiDeviceIndex(qint32 reverse_api_device_index) { + this->reverse_api_device_index = reverse_api_device_index; + this->m_reverse_api_device_index_isSet = true; +} + +qint32 +SWGGS232ControllerSettings::getReverseApiChannelIndex() { + return reverse_api_channel_index; +} +void +SWGGS232ControllerSettings::setReverseApiChannelIndex(qint32 reverse_api_channel_index) { + this->reverse_api_channel_index = reverse_api_channel_index; + this->m_reverse_api_channel_index_isSet = true; +} + + +bool +SWGGS232ControllerSettings::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_azimuth_isSet){ + isObjectUpdated = true; break; + } + if(m_elevation_isSet){ + isObjectUpdated = true; break; + } + if(serial_port && *serial_port != QString("")){ + isObjectUpdated = true; break; + } + if(m_baud_rate_isSet){ + isObjectUpdated = true; break; + } + if(m_track_isSet){ + isObjectUpdated = true; break; + } + if(title && *title != QString("")){ + isObjectUpdated = true; break; + } + if(m_rgb_color_isSet){ + isObjectUpdated = true; break; + } + if(m_device_index_isSet){ + isObjectUpdated = true; break; + } + if(m_channel_index_isSet){ + isObjectUpdated = true; break; + } + if(m_use_reverse_api_isSet){ + isObjectUpdated = true; break; + } + if(reverse_api_address && *reverse_api_address != QString("")){ + isObjectUpdated = true; break; + } + if(m_reverse_api_port_isSet){ + isObjectUpdated = true; break; + } + if(m_reverse_api_device_index_isSet){ + isObjectUpdated = true; break; + } + if(m_reverse_api_channel_index_isSet){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h new file mode 100644 index 000000000..d62a535ba --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGGS232ControllerSettings.h @@ -0,0 +1,137 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1, USRP and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 4.15.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +/* + * SWGGS232ControllerSettings.h + * + * GS-232 Controller settings + */ + +#ifndef SWGGS232ControllerSettings_H_ +#define SWGGS232ControllerSettings_H_ + +#include <QJsonObject> + + +#include <QString> + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGGS232ControllerSettings: public SWGObject { +public: + SWGGS232ControllerSettings(); + SWGGS232ControllerSettings(QString* json); + virtual ~SWGGS232ControllerSettings(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGGS232ControllerSettings* fromJson(QString &jsonString) override; + + qint32 getAzimuth(); + void setAzimuth(qint32 azimuth); + + qint32 getElevation(); + void setElevation(qint32 elevation); + + QString* getSerialPort(); + void setSerialPort(QString* serial_port); + + qint32 getBaudRate(); + void setBaudRate(qint32 baud_rate); + + qint32 getTrack(); + void setTrack(qint32 track); + + QString* getTitle(); + void setTitle(QString* title); + + qint32 getRgbColor(); + void setRgbColor(qint32 rgb_color); + + qint32 getDeviceIndex(); + void setDeviceIndex(qint32 device_index); + + qint32 getChannelIndex(); + void setChannelIndex(qint32 channel_index); + + qint32 getUseReverseApi(); + void setUseReverseApi(qint32 use_reverse_api); + + QString* getReverseApiAddress(); + void setReverseApiAddress(QString* reverse_api_address); + + qint32 getReverseApiPort(); + void setReverseApiPort(qint32 reverse_api_port); + + qint32 getReverseApiDeviceIndex(); + void setReverseApiDeviceIndex(qint32 reverse_api_device_index); + + qint32 getReverseApiChannelIndex(); + void setReverseApiChannelIndex(qint32 reverse_api_channel_index); + + + virtual bool isSet() override; + +private: + qint32 azimuth; + bool m_azimuth_isSet; + + qint32 elevation; + bool m_elevation_isSet; + + QString* serial_port; + bool m_serial_port_isSet; + + qint32 baud_rate; + bool m_baud_rate_isSet; + + qint32 track; + bool m_track_isSet; + + QString* title; + bool m_title_isSet; + + qint32 rgb_color; + bool m_rgb_color_isSet; + + qint32 device_index; + bool m_device_index_isSet; + + qint32 channel_index; + bool m_channel_index_isSet; + + qint32 use_reverse_api; + bool m_use_reverse_api_isSet; + + QString* reverse_api_address; + bool m_reverse_api_address_isSet; + + qint32 reverse_api_port; + bool m_reverse_api_port_isSet; + + qint32 reverse_api_device_index; + bool m_reverse_api_device_index_isSet; + + qint32 reverse_api_channel_index; + bool m_reverse_api_channel_index_isSet; + +}; + +} + +#endif /* SWGGS232ControllerSettings_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h index 867e0913e..420db2ec7 100644 --- a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h +++ b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h @@ -14,6 +14,8 @@ #define ModelFactory_H_ +#include "SWGADSBDemodReport.h" +#include "SWGADSBDemodSettings.h" #include "SWGAMBEDevice.h" #include "SWGAMBEDevices.h" #include "SWGAMDemodReport.h" @@ -96,6 +98,7 @@ #include "SWGFrequencyRange.h" #include "SWGGLScope.h" #include "SWGGLSpectrum.h" +#include "SWGGS232ControllerSettings.h" #include "SWGGain.h" #include "SWGHackRFInputSettings.h" #include "SWGHackRFOutputSettings.h" @@ -203,6 +206,12 @@ namespace SWGSDRangel { inline void* create(QString type) { + if(QString("SWGADSBDemodReport").compare(type) == 0) { + return new SWGADSBDemodReport(); + } + if(QString("SWGADSBDemodSettings").compare(type) == 0) { + return new SWGADSBDemodSettings(); + } if(QString("SWGAMBEDevice").compare(type) == 0) { return new SWGAMBEDevice(); } @@ -449,6 +458,9 @@ namespace SWGSDRangel { if(QString("SWGGLSpectrum").compare(type) == 0) { return new SWGGLSpectrum(); } + if(QString("SWGGS232ControllerSettings").compare(type) == 0) { + return new SWGGS232ControllerSettings(); + } if(QString("SWGGain").compare(type) == 0) { return new SWGGain(); }