From 846179f946545efc80a4e27f4411b8562d37308b Mon Sep 17 00:00:00 2001 From: Martin Marmsoler Date: Sun, 23 Mar 2025 14:12:11 +0100 Subject: [PATCH] Port to cmake build system --- .gitignore | 2 + CMakeLists.txt | 111 ++++++++++++++++++++++++ global.h | 2 + images/r.xcf | Bin 1749 -> 5967 bytes images/r_dsremote_128x128.png | Bin 0 -> 2508 bytes images/r_dsremote_256x256.png | Bin 0 -> 3905 bytes images/r_dsremote_32x32.png | Bin 0 -> 1105 bytes images/r_dsremote_512x512.png | Bin 0 -> 5174 bytes images/r_dsremote_64x64.png | Bin 0 -> 1605 bytes install/net.teuniz.dsremote.appdata.xml | 77 ++++++++++++++++ install/net.teuniz.dsremote.desktop | 11 +++ interface.cpp | 3 +- mainwindow.cpp | 10 +-- save_data.cpp | 1 + serial_decoder.cpp | 2 +- third_party/CMakeLists.txt | 1 + third_party/kiss_fft/CMakeLists.txt | 5 ++ timer_handlers.cpp | 2 +- tmc_lan.c | 2 + 19 files changed, 217 insertions(+), 12 deletions(-) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 images/r_dsremote_128x128.png create mode 100644 images/r_dsremote_256x256.png create mode 100644 images/r_dsremote_32x32.png create mode 100644 images/r_dsremote_512x512.png create mode 100644 images/r_dsremote_64x64.png create mode 100644 install/net.teuniz.dsremote.appdata.xml create mode 100644 install/net.teuniz.dsremote.desktop create mode 100644 third_party/CMakeLists.txt create mode 100644 third_party/kiss_fft/CMakeLists.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9be39f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +CMakeLists.txt.user +build diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..992ebfa --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,111 @@ +# FILE_SET needs at least 3.23 +cmake_minimum_required(VERSION 3.23) + +project(DSRemote) +set(ID "net.teuniz.dsremote") +set(VERSION "0.42_2408061715") + +find_package(QT NAMES Qt4 Qt5 Qt6 REQUIRED) +set(QT Qt${QT_VERSION_MAJOR}) + +if (QT_VERSION_MAJOR EQUAL 4) + if (QT_MINOR_VERSION LESS 7 OR (QT_MINOR_VERSION EQUAL 7 AND QT_PATCH_VERSION LESS 1)) + message(FATAL_ERROR "This project needs at least Qt4.7.1") + endif() +elseif( QT_VERSION_MAJOR EQUAL 5) + if (QT_MINOR_VERSION LESS 9 OR (QT_MINOR_VERSION EQUAL 9 AND QT_PATCH_VERSION LESS 1)) + message(FATAL_ERROR "This project needs at least Qt5.9.1") + endif() +endif() + +find_package(${QT} REQUIRED COMPONENTS Widgets Network) + +set(COMPILE_FLAGS "-Wextra -Wshadow -Wformat-nonliteral -Wformat -Wformat-security -Wtype-limits -Wfatal-errors") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS}") + +add_compile_definitions(_LARGEFILE64_SOURCE _LARGEFILE_SOURCE) # needed in edflib + +add_subdirectory(third_party) + +set(HEADERS global.h + mainwindow.h + about_dialog.h + utils.h + connection.h + tmc_dev.h + tmc_lan.h + tled.h + edflib.h + signalcurve.h + settings_dialog.h + screen_thread.h + lan_connect_thread.h + read_settings_thread.h + save_data_thread.h + decode_dialog.h + tdial.h + wave_dialog.h + wave_view.h + playback_dialog.h) + +set(SOURCES main.cpp + mainwindow.cpp + mainwindow_constr.cpp + timer_handlers.cpp + save_data.cpp + interface.cpp + serial_decoder.cpp + about_dialog.cpp + utils.c + connection.cpp + tmc_dev.c + tmc_lan.c + tled.cpp + edflib.c + signalcurve.cpp + settings_dialog.cpp + screen_thread.cpp + lan_connect_thread.cpp + read_settings_thread.cpp + save_data_thread.cpp + decode_dialog.cpp + tdial.cpp + wave_dialog.cpp + wave_view.cpp + playback_dialog.cpp) + +set(RESOURCES images.qrc) + +add_executable(${PROJECT_NAME} ${SOURCES} ${RESOURCES}) +target_link_libraries(${PROJECT_NAME} ${QT}::Widgets ${QT}::Network kiss_fft) +set_property(TARGET ${PROJECT_NAME} PROPERTY AUTOMOC ON) +set_property(TARGET ${PROJECT_NAME} PROPERTY AUTORCC ON) +target_sources(${PROJECT_NAME} PRIVATE + FILE_SET HEADERS TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES ${HEADERS}) +target_compile_definitions(${PROJECT_NAME} PRIVATE PROGRAM_VERSION="${VERSION}") + +install(TARGETS ${PROJECT_NAME}) + +if(UNIX AND NOT APPLE) + foreach(icon 32 64 128 256 512) + install( + FILES images/r_dsremote_${icon}x${icon}.png + DESTINATION share/icons/hicolor/${icon}x${icon}/apps + COMPONENT ${PROJECT_NAME} + RENAME ${ID}.png) + endforeach() + + install( + FILES install/${ID}.appdata.xml + DESTINATION share/metainfo + COMPONENT ${PROJECT_NAME} + ) + + install( + FILES install/${ID}.desktop + DESTINATION share/applications + COMPONENT ${PROJECT_NAME} + ) +endif() + + diff --git a/global.h b/global.h index 22346f3..05e028c 100644 --- a/global.h +++ b/global.h @@ -59,7 +59,9 @@ #define PROGRAM_NAME "DSRemote" +#ifndef PROGRAM_VERSION #define PROGRAM_VERSION "0.42_2408061715" +#endif #define MAX_PATHLEN (1024) diff --git a/images/r.xcf b/images/r.xcf index 9331bf13bf10735505d83d15d5bbfa893506fcb1..b2d1d1ae81cd87a5d2de890e3e8e124a917c745d 100644 GIT binary patch literal 5967 zcmeHLeQ;FO6+asS`OYTnCYz5<^0G-F0XAQR1R6-Fs8G~m(FzudT{fF!A=!<)n)Eb>F4kC&Q14NVx=yWg!Aoi|xL;@5e5DiF& z^sq1e(tv9~QWJ)?+TE?K4wnyglE%?9JPw=B(V%rWea+g;uRQRew4{W(I$Lc`4r`Og z*&v$q-c{`Nb+tG&ue-(BP!eC<*kpINxIJ2Nh^(Hb#Wt-x^s6XA^Wu+auFyh1Y3}s4 z+3ZeNlU7lVTGy~zxMFR0IenVbWp8$P7q+;#Qky zX?vSynL6auO-0CEn%B9^F>RrxvbwUOs%oL7Ztm1F(d(v`g}YfW4UKM>PqRE^b9ryo zta6-IF*)2Ast!#@o3qo=B6DYR`JA>Er_HN%h32xw=4xuk0@ExGm$f}K(qfy}VQp}F z9Cn}6?b2F&9vt`K6*jcMWc@5@_xhZTU78*1*&$sQyF0C|?gj_;O{YWFrwAR+2CVGL zN!6v*k!4D_x!K`tYW8WBHIqKNJ+uIC-$b($cYzffx&?`4xQy60oL6> zF!pKyDIj$lum?B*9Fg;Nr+f?&4-jvg%me=Z>sQVm+g8W?DKKngjCAwJpZ4^u@jY5! z5Iu=vG3bfkuCv#~mr*kN{fD1jlrx?T95}vlcFb5x=fL$BzB;OqGCA1$Oo@feto|@d zqg+;pzm`iHt5<5xWMQ=}EsF|R_0G?vB39dzO*Dqp+r{bsabNW`^c!|nAG-HXzB>~l zkW2l#xYP`7;(gnsT7(eY;s2*NL@t4`tghahM#Zf9?>ABjtHFm2G>%nZ;bQJ_`+y!^%26}( zH#JgYKFDU?lTSQ1n^j*ToE;G6=ab65mc_i&Lfi#DWg(S(6;39EwcrOKXeyI=RRQrq z@P2RyxEDMY9g@K3Q6CT93!V*L0d|5P0Ivp@fqx861@9^(zM8@O68IE&Klm;1LGbI~ zqu@V-kAq(U9|Io=>&L){P(KZRxqy_eAI?h{I0FOsfUCiBp^t#w;O~Lwg7<@w15^~w ztOiHo-ljnLTe!zg@G;bvK%azLvVwPHvbwB8c+7sZJP&09TD}gUG=QeQ1Vr!vl%IpW zh~&M9ajid#)w?=`T{{cu@%Yb}L;jb^Kypp2-jr7{`%@&|PflaE61iMz7F~~uOEHzy zJ?vWln^Rx#R2G>UjHGf;V!K^T!sg6Bj-BX%b5Ace=h;{@1*4Y*uwfTsSJxcDX5N=g z!7*EdctYLKu>EUZ3}UN0OcX5YK4w9j4dmD5FW7RjkkyemWRS(ndk$Vh`Z;AzkxX-; zC{^;#d*!1g3!Nx3NKSgqWF&Oi6q_bbw-4r-2uJVE$&e@C$@{ZN3?6Td z$)Rix1oq6t63&40duN7)OdM3}vO~|&!1i$#^autw8#O}Gxx6rs@>sp7&%rqAof0!4 zUtOJ%ErSot3q4kYi!$Ym!EarhUMvO267 zu89%@WfhdA(Vv5)apxb&$NwYij@~hBmaue9eB9Q>Yb6T1bh7 z@+1_OC^yjOU!pt(1y3xMep^`sr45SdCLVI<@YKT+Djcd}e%5Ai5mx6-6OSQYCst+l zrSn+gXT+kC#>K?n7pt=Rja)*!UaZRQH}E*(ABa`v{?R-h&o;5jJdny0uz1C)oPiX! z5^of%atHKWO8l%?l{=WsWyG7rs=UD@E+^hBR%wHYTtWOJu`1u6z?H;X#G(?<6R|19 zDvLjktBALXRR#W7o`iqEvD_WKa#&QmqgE2f)e*PVkvbPQjTApVje>kWZYt@JOU0`5 z@wF7i>=mmn#D9rKF#E)!GDTis+r_H)5+>6~=5LEdrG`eKB34~YsHPa^4zcQDqP$pe zr&x6i|#%H($zyuTkWk4-36L<)C3|IN?3uE>0!{n E0W&+aasU7T literal 1749 zcmcgsPiPcZ82>htZj$|g-H9GmE>W zG#7iREfh*mJ@wFA_25Mm!9!0GZ;Buo5D~=CdQil=apv{=-p(YO8m~V1=6%2K-@Nb7 zd!}g2vR0+WYQo}xYdj+2hmjHq{H#M7JoGaF5w20BexwhO)<-;m49io-Ef|Y(ABizT3%1BhzzLWTYKKkHFB2i-`(qP1s z)lkIa2Ag{LR1cr-;WIsawujFnPjLq%F4}u^y+c8RV4|+uU7xpn-7?zTMUm?6(Ne>3 z&oyURajMHqPhkOV=813kfwRSl$@1PkXN%J(r*@NgdTMuMRm1|;9NTBbQ-s8_MiZ2|SS-y*Y z|DV0(hQ7_v*nHLWd{JvNi`RUFGfqoyI8~09ti@@VNpN0N@fu9T^A}0$T$pvAO-!!j zLdI&Umb0h}Oaq5f*Q8&HvtDclF80{dm7^4d-ei(HBD}vuEWe(o-fB6z|u(VYPhTwI7Zu`*- z52Yr8A3A;M(s$1(((Ntys%df% zg3WgcKi!G1o+gJNSa*-`LLNpCry$t&5908$f@uhkQSM)>co_(PCELy<6wo#UL27~U zqb&YelUWE3hUELBf;k9(Bkj^BctB0&AQ*m1+M5dIAv{BoKUYOAKzN;OA7@m)SdVS0 z9v9b-=2m!2&ntLZ+!ZYQ8{P2PSaLT@B4Z{=oqxt edO+gG4Asd$l-0_SHI!XjElbW5o*M!g5&Q>~>Aa-? diff --git a/images/r_dsremote_128x128.png b/images/r_dsremote_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5d9b7c3aeaf634a879680667983e71d73da643 GIT binary patch literal 2508 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 XlZD|Ex`y7r00000NkvXXu0mjfgr4e} literal 0 HcmV?d00001 diff --git a/images/r_dsremote_512x512.png b/images/r_dsremote_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad93f5c6f02f3964a3b2604fdec60b41d8b89c3 GIT binary patch literal 5174 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 D?b6+> literal 0 HcmV?d00001 diff --git a/install/net.teuniz.dsremote.appdata.xml b/install/net.teuniz.dsremote.appdata.xml new file mode 100644 index 0000000..9dd57de --- /dev/null +++ b/install/net.teuniz.dsremote.appdata.xml @@ -0,0 +1,77 @@ + + + net.teuniz.dsremote + DSRemote.desktop + DSRemote + FSFAP + GPL-3.0+ + DSRemote is a program to control and visualize your RigolĀ® oscillosopes + + +

DSRemote is a program to control and visualize your RigolĀ® DS6000 or DS1000Z series oscilloscope from +your Linux desktop via USB or LAN. It will probably work as well with the other series like DS2000A and DS4000 series but +I have no access to all those oscilloscopes so I can not test it

+ +

Features:

+
    +
  • LAN or USB connection
  • +
  • Saving screenshots
  • +
  • Saving data to file
  • +
+ +
+ Teunis van Beelen + + + + https://www.teuniz.net/DSRemote/oscilloscope_decode.png + + + https://www.teuniz.net/DSRemote/oscilloscope_with_fft.png + + + + https://www.teuniz.net/DSRemote + https://gitlab.com/Teuniz/DSRemote/-/issues + https://gitlab.com/Teuniz/DSRemote/-/issues + + + + + Release + + + + + + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + + +
diff --git a/install/net.teuniz.dsremote.desktop b/install/net.teuniz.dsremote.desktop new file mode 100644 index 0000000..42f62cf --- /dev/null +++ b/install/net.teuniz.dsremote.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=DSRemote +Comment=Operate your Rigol oscilloscope from your Linux desktop. +Exec=DSRemote +StartupWMClass=net.teuniz.dsremote +Icon=net.teuniz.dsremote +Terminal=false +Type=Application +Categories=Science;Application;Development; +X-Desktop-File-Install-Version=0.1 diff --git a/interface.cpp b/interface.cpp index 683e064..ac295cc 100644 --- a/interface.cpp +++ b/interface.cpp @@ -25,8 +25,7 @@ *************************************************************************** */ - - +#include "mainwindow.h" void UI_Mainwindow::navDialChanged(int npos) { diff --git a/mainwindow.cpp b/mainwindow.cpp index 38d2b29..cf1adf4 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -27,13 +27,6 @@ #include "mainwindow.h" -#include "mainwindow_constr.cpp" -#include "timer_handlers.cpp" -#include "save_data.cpp" -#include "interface.cpp" -#include "serial_decoder.cpp" - - void UI_Mainwindow::open_settings_dialog() { @@ -91,7 +84,8 @@ void UI_Mainwindow::open_connection() device = tmc_open_usb(dev_str); if(device == NULL) { - snprintf(str, 4096, "Can not open device %s", dev_str); + char* msg = strerror(errno); + snprintf(str, 4096, "Can not open device %s: %s", dev_str, msg); goto OC_OUT_ERROR; } } diff --git a/save_data.cpp b/save_data.cpp index 56e9238..b774123 100644 --- a/save_data.cpp +++ b/save_data.cpp @@ -25,6 +25,7 @@ *************************************************************************** */ +#include "mainwindow.h" #define SAV_MEM_BSZ (250000) diff --git a/serial_decoder.cpp b/serial_decoder.cpp index db6c364..29a7de1 100644 --- a/serial_decoder.cpp +++ b/serial_decoder.cpp @@ -53,7 +53,7 @@ *************************************************************************** */ - +#include "mainwindow.h" void UI_Mainwindow::serial_decoder(struct device_settings *d_parms) diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt new file mode 100644 index 0000000..0f65dae --- /dev/null +++ b/third_party/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(kiss_fft) diff --git a/third_party/kiss_fft/CMakeLists.txt b/third_party/kiss_fft/CMakeLists.txt new file mode 100644 index 0000000..3fd825d --- /dev/null +++ b/third_party/kiss_fft/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(kiss_fft kiss_fft.c kiss_fftr.c) +target_sources(kiss_fft INTERFACE + FILE_SET HEADERS TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES kiss_fft.h kiss_fftr.h) +target_sources(kiss_fft PRIVATE + FILE_SET private_headers TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES _kiss_fft_guts.h) diff --git a/timer_handlers.cpp b/timer_handlers.cpp index fd64a28..6f8955b 100644 --- a/timer_handlers.cpp +++ b/timer_handlers.cpp @@ -25,7 +25,7 @@ *************************************************************************** */ - +#include "mainwindow.h" void UI_Mainwindow::test_timer_handler() diff --git a/tmc_lan.c b/tmc_lan.c index e7b96d8..8243903 100644 --- a/tmc_lan.c +++ b/tmc_lan.c @@ -203,6 +203,8 @@ struct tmcdev * tmclan_open(const char *host_or_ip) if(connect(sockfd, (struct sockaddr *) &inet_address, sizeof(struct sockaddr)) < 0) { + char* err = strerror(errno); + printf("Unable to connect to device %s: %s", ip_address, err); return NULL; }