From 2c070f811e8e2e07d8d23dc0513dd94c4e65ca27 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 17 Apr 2022 10:20:07 +0200 Subject: [PATCH] Massive UI revamping (v7): Channel window documentation. Show device type name in index tooltip --- doc/img/ChannelWindow.png | Bin 0 -> 31954 bytes doc/img/ChannelWindow.xcf | Bin 0 -> 74318 bytes doc/img/ChannelWindow_bottom.png | Bin 0 -> 5530 bytes doc/img/ChannelWindow_bottom.xcf | Bin 0 -> 18590 bytes doc/img/ChannelWindow_top.png | Bin 0 -> 9647 bytes doc/img/ChannelWindow_top.xcf | Bin 0 -> 35027 bytes .../channelmimo/beamsteeringcwmod/readme.md | 2 + plugins/channelmimo/interferometer/readme.md | 2 + plugins/channelrx/chanalyzer/readme.md | 2 + plugins/channelrx/demodadsb/readme.md | 2 + plugins/channelrx/demodais/readme.md | 2 + plugins/channelrx/demodam/readme.md | 4 +- plugins/channelrx/demodapt/readme.md | 4 +- plugins/channelrx/demodatv/readme.md | 2 + plugins/channelrx/demodbfm/readme.md | 2 + plugins/channelrx/demodchirpchat/readme.md | 2 + plugins/channelrx/demoddab/readme.md | 2 + plugins/channelrx/demoddatv/readme.md | 2 + plugins/channelrx/demoddsd/readme.md | 2 + plugins/channelrx/demodfreedv/readme.md | 8 +- plugins/channelrx/demodnfm/readme.md | 2 + plugins/channelrx/demodpacket/readme.md | 2 + plugins/channelrx/demodpager/readme.md | 2 + plugins/channelrx/demodradiosonde/readme.md | 14 +- plugins/channelrx/demodssb/readme.md | 2 + plugins/channelrx/demodvor/readme.md | 2 + plugins/channelrx/demodvorsc/readme.md | 2 + plugins/channelrx/demodwfm/readme.md | 2 + plugins/channelrx/filesink/readme.md | 2 + plugins/channelrx/freqtracker/readme.md | 2 + plugins/channelrx/localsink/readme.md | 2 + plugins/channelrx/noisefigure/readme.md | 2 + plugins/channelrx/radioastronomy/readme.md | 2 + plugins/channelrx/radioclock/readme.md | 2 + plugins/channelrx/remotesink/readme.md | 2 + plugins/channelrx/sigmffilesink/readme.md | 2 + plugins/channelrx/udpsink/readme.md | 24 +-- plugins/channeltx/filesource/readme.md | 2 + plugins/channeltx/localsource/readme.md | 2 + plugins/channeltx/mod802.15.4/readme.md | 2 + plugins/channeltx/modais/readme.md | 2 + plugins/channeltx/modam/readme.md | 2 + plugins/channeltx/modatv/readme.md | 2 + plugins/channeltx/modchirpchat/readme.md | 2 + plugins/channeltx/moddatv/readme.md | 2 + plugins/channeltx/modfreedv/readme.md | 2 + plugins/channeltx/modnfm/readme.md | 2 + plugins/channeltx/modpacket/readme.md | 2 + plugins/channeltx/modssb/readme.md | 2 + plugins/channeltx/modwfm/readme.md | 2 + plugins/channeltx/remotesource/readme.md | 2 + plugins/channeltx/udpsource/readme.md | 18 +- sdrgui/channel/channelgui.cpp | 7 +- sdrgui/channel/channelgui.h | 2 + sdrgui/channel/readme.md | 165 ++++++++++++++++++ sdrgui/device/deviceuiset.cpp | 19 +- sdrgui/device/readme.md | 11 +- sdrgui/mainwindow.cpp | 5 + 58 files changed, 317 insertions(+), 44 deletions(-) create mode 100644 doc/img/ChannelWindow.png create mode 100644 doc/img/ChannelWindow.xcf create mode 100644 doc/img/ChannelWindow_bottom.png create mode 100644 doc/img/ChannelWindow_bottom.xcf create mode 100644 doc/img/ChannelWindow_top.png create mode 100644 doc/img/ChannelWindow_top.xcf create mode 100644 sdrgui/channel/readme.md diff --git a/doc/img/ChannelWindow.png b/doc/img/ChannelWindow.png new file mode 100644 index 0000000000000000000000000000000000000000..fe980a6377f76527b60eb187a5ba2bc675751623 GIT binary patch literal 31954 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 IzjWLG1K*pmGynhq literal 0 HcmV?d00001 diff --git a/doc/img/ChannelWindow.xcf b/doc/img/ChannelWindow.xcf new file mode 100644 index 0000000000000000000000000000000000000000..834ea8e2fdf3e5534ea9c50433e0c148bae4de7c GIT binary patch literal 74318 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 OF}K#-BykPmvi}D%UsMYK literal 0 HcmV?d00001 diff --git a/doc/img/ChannelWindow_bottom.png b/doc/img/ChannelWindow_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d3602df2dd9cf73ab65a5b7805d629b25f9596ce GIT binary patch literal 5530 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 literal 0 HcmV?d00001 diff --git a/doc/img/ChannelWindow_bottom.xcf b/doc/img/ChannelWindow_bottom.xcf new file mode 100644 index 0000000000000000000000000000000000000000..d92c777b9d88b870010bb38869191ce197c2f070 GIT binary patch literal 18590 zcmeHP3tW`Pwg2|TTQmx>d6c^vlWa^NV2EOxnn4t)31*R3)I?pD1r`x34;9n8^d=^$ zHL2B@S`uY3+A5l8Z{v+ka_b{%tgNVQy+)0V5g%X_6d&NSyVG;NnQ!-l0P-@I+n?j_ z?EjpZbLKnW%zQJ4v)`I&o;^o9-V+ zf`HUO{ebS~Jn97lT?Oiw30;R8^JdRBcjSbs~i3XQmmn;o`rDN1!>a zjphig_z#=s7tApj&AFM{h;WdKTS#08Ey^_)YR$REEK>nmKrOkjK5#T`^k8%jQ5xE0Wuy}2lkJp zKM-6`u@-PNkT(#vVgC99^aRQsfMD9ma`UM>iUg@)X8Lw>qc6Ix(iVA4iJaRpIiGd#yU-;{&P!H`>M zHsqKM1=?b9dE^*!GmBu&YKNL~LyHQqr!+%>DKy=jZ!#8|^K!L0h51m~deOp?3=fM6 zZ&@N?m4R+{Q9+?Oqgb0`$|%JC^5%!m&Pz9G(~ENrv&}|cB`#C9Us+~w4A!;i72dS0 zs4mC^X?@_pK~dwPkc!j>vO2_FNrME1n>2zq^#a+0O6o7l5=!kppo4l0{RO2c2Z(hF zuwk;)?m=cRzh;mym=3lpH>{;#^_-eB#?BKEd4#3L+ z8cJ)}$jN!<0J@ZopNDH2Ku^^+9$Dz)QFrb0Wuw{Hzv7wxcPD>M=b{W=K1O#V7a+JA zj<>AR2#t$={&+xe(${nzGp6rpsOztOOlS%!wl!QoxIny$+*urMcxa?U0Cxrd=jWR8 z;dz=7E^a7&Xd{tUX}32L+^A&58~09L+(W>h74M0x!EY?bNgStg0|2)T@ZQH+y*GdU zyzNZ(!3`9O4{l(H!#O_1aTmwGaXihjfuS#Mcu;%?avaKW1VcZLf?yeNnr6AA#O^8*igJoK?h=L>ErDy{vjL@2 z1EACfY`}j>_2LO@g+t3tzJg=5)mjE8rqx$aTB*qS2+d_y_=mOLf_itew+dYF z5^k1TS4omaXj*Hv3Leo_ZdD3SuB#U4`##XS8hQl2Oyd3A8f|fMN8xm}whRt@1r^1U zUP2#1Ey~`4hNA+)V5P`=0ZP0Ecm=P=BVEaPwctm=KOlyFyuLNIKJ#09cXabPH?#Ti^nW=ua-)D@ib-fz?w4kLW7h2qVgMVHEH2p>z)O zm}(^+#*u5Z#kKZbcJQ{0SNhr}Bdy?WZ!$b~koxJrSK?$tz@MZ3cGea=kz)$Sv^H#@ zYQSPvKY%}f11gw&R~Ey8xVb?YIF@5J!$Dyj$8h9v(V*#E#m!Ctz)`Hg4Kf76s)^J0_~wSMl}IMun52ChX35M8-Dk|((Q4HRgAAh?@Q=+ z_%7-NTEm4v>yKd*?J9+fBN#}*o`P+csTb_!aVGMeh%-C8T5+a2yEeP3i+Z^ z&)~zYo(|B1XQA_Y;utAm_4EEMj2HW8!Q)tVQV;%8?{M|t3PZ94{8YfKLr1FxR})fK zb>%TI@=&@S2S0&keJBnVUI%}E0My+$81ry=RCGBGexi@W!QW$UZt!a`P*Ra%U4DKK zUL!RCN^Qt~BGtDH**rP9wsUX3f?CYMc>+r>QI_g^D>vt)l?POiS%cUSQf1yYx*x(* z;2ICu4jkHERcSkbvM0mlD>T~i7t2>v+2#f+euGfjyAI20C3L zuonZnp87z9r{S;Dr#n1?+wvdllw!d5v<>XLJ=TG#lAta!aLc0CUd(Skcu`rQQNt>Q-MyIMa; zR6@_PM5PJ>91L<)6kLJ?r3%_Gj!{wY2C!uu+B#-w9lbUU$ofl7!{G%17~sIrt%Ts` z@BVm27`xZsAwTH%+*z89GK^g+UBbC%X*zN+cB;=$ieHn$*s0cD4##eM1c&b*FFwKC zbOi4^{}}Vs@xY1G4>D&RPhL0?!u+LMyeM7IuIS-g`z?6B$c=e;QVyEvhc{QB>9SlR}Nl@|FX*mDexkVcY!{>=L zXwV{w;U%cWAVLG*dg2i+A)e7FcNe|jg*80TC2W0|w|ue8OK=^47ro$ukguZK)ts|e z*ea`Rq5yvM2*D5NS^+PwF$8~Zk&^Nfnjd-DM$fQOp=uSCc)RL<7e#(0HuwszUSYfh zc%O_?bP}Fp|@fpsh?J{5x#)d{wPQVPBsHc?pZ4x=lasPQ^^`8`%Epw$-BmA5 zo%f$~?L1@3rn*d2U2^?MQext)Ay;dY8e134+l%f*)evu(*W1R_ge|7yIlM@oMm#J6StFD#5 zUKdqdqH zQqs|l^r?HB&n(HyF4)v`b&=|MS339%b7!1VQ9nQF*XPge+_LSf`id!&jHqm!Wc=iY zqxMvtvu5SsVR|!h^!M>tRFQxrQgh^l&B~|MAiu`)|046 zSk95+a%NmG!G$i-odthq!QWZ%cXs$YJN&=n4sX%ypcch0;xsuHsfcr8%~myW?K-O= zuItT8yL|>Bv(D{S5_`;sZyRjWply#sX>WLoM6a){-!qAjaVO8C-ACuP!sn~!&Z>zs z+Lfp#j*?>^qur|G`f*#U!0zxXYI1GKsf2NV{)~`yoAxhK5=YUOtF{6p)|8-KJe>e` zY2!-Kt{|O|!b@Oxa-N!8I{ZsQQk!G5PEXjsh>&N`8A{P^?~-h=vrlpTPwhW{1JPLN zZZG2c;4?L8tld+6{)0GDZ&s3TZ>F8fC1|$oT~fN0kT)s`n%zwKI43&0VWAT3G{m{I zIspu~yf!Z7=!c{!4GbHyD+n4EAB{o7?2#4+~6qY1v`o1fK^`fNg? z?S|T#nwyt@|LMh=nyWVsy;WaRbIDON8MO78@Ui71(GDDs{&ZKYhFpoA6HQ3T8FFwj zAurt=53Tzb!5x>v6f|U?B_ykmm>Y9Q=GD2}(D~M(7!|2cew|Eccsn}r%XQ?JrxGXZ z_!#cpZCQhszuyD*S$*v^bX;k7xa_CMR}PiEE@AFkhz|D%@#NS^nqRGMIGQn<+?;VOJNnJqm?+{Z z#~t$gPl4P1JKWWl0k>}%aJx#et`xY+-$ap{WuL&Vc`*;T7q90;uQ)SyG-)pR=IUVs zyafS!(EroEaa=Szh>X4~D^3&Nl8{bN0*u3L(p7Dykl6SLh-Y(!slemcRaioSc=E-a zVaCLW|5$@@R%U))QEob_^`%@B`h%sriFp+>mp;cGk~mqCUCrvobBukP$+1?Bn;7D! zd)R;<&-KQyW$oi}*rANy&G8=`&v3lPFjl%w5SNE>jN~|uV-m-7j)fdwWe7=eDUr*N z-ga3<7q@^Z#=XXI zna9w5$50jb6mRFhyNeskt5BP~!OS^y1REoWYU*zArA9%lRC^ YcUE9k;>v8BR0LN|`-Hz_?Zhnq3uHzgZU6uP literal 0 HcmV?d00001 diff --git a/doc/img/ChannelWindow_top.png b/doc/img/ChannelWindow_top.png new file mode 100644 index 0000000000000000000000000000000000000000..31d84ece0ef47cab515cf8a6073e5d60ff9a7d78 GIT binary patch literal 9647 zcmbVybySpL+vgw%(j^@uDuOgfr?hl;3quUu4I&_dq?CYkOG$T^bayvMcS!8byXWlL z{bSGf?Rt(f&OGzXJy-nV;tE!jm&8OPMT0;fm{K3alpzp=UhvrC88Y}+hzg$qJP}|a zDyk?YD*D3C!PeBm3I>7DMtMgGd}x19-f1uv0#)Um7S0m=^4CO3wL_^uF#s)F-F%{T zeU#aJG%~A(8?E>$iV$G|7SmuIZw=b#Wt6X((a{;-Vy>FAhF^C1ulY38U)Fe{JPSip z8ED~7gU3b5cXV3WsO|ZPL#WPPer63$xY4DH4cNM>3yLUlWlh=eJ{TG)S(ih;5?j^E zAtO9SK0eFIc3h;vD*v8^lZqcf>Lk1>S=`6eY|q5YaMb@hN@@r{D7f<@N*_hP^cQJ< zadI`)u#>>TKC~^yL3nnT_T@S=#%5(KtavQ+g`YSB)l*zHIBn(=bXIK+W!WqXp@S8u z!|hv#o^?9^C}RY*yhw7PE9mXPB!jGcjZ`c5@cG9%X#4w1rs2Z5i_21LE(OTLJG<=4 zy9s2LQz?(eBJqe%!<=^Z3zO>t%MK{SUZd2a4zGpe(iI_#L)%FXEiH`0)teWSv)wz0 zk?Foh~j86V!c$?BpGCOvupBL0VAlK4>{YAWW|w|01|$3%P(N zQJkdY#8Ebpa3QET3kkNg;3*O(aZM*tTWf2WjT1!F0cPX`GkM`^;bi_oQc6xy!w-uH z0(k+E5))Q+o84b<*HxW(=sqU;2f^}xLU%x$=y&7X9yqG2qEx|FIsCQ4b|X>ej;?uf zht15I?MbgRN&EP9G~4Fs>CO8-|+f8=|gpy_-^^1BUR8^<^`d=FCj_~gyspf zbP-nU;J7}iYD6zZ$qpAgzbv6KTGcQ-d`1-B^29eE9~}N*bnG-;ywpdO2-}WP*%!;%0e9rAMuTg{};;Ttk1HHy3zpzE5AP$j4QfHME#K zsKR9Xo}K@OKW~A`ke4AUt-+uKD@bbS2XjHu7kTXV+y}%;@|CqPWrf(kwJ^nI>f0JD zkBIWUG8ZU%E7U)8^MY+_c6kitBt=;$5Y{*`kXYBs-Az}OR{_rx@HlO@X7<^8l zN&vMN<^4fX@`-82c<0j5Alio7c(6=lQQ*b{0t#P#rZmT2?+^88eGs*aCefK1x38cb!@>XB>_8Ry%mN!glYU$eQZPt(@mK-7;7EAXro+AGY`%GZWkXslu^{Jldj1+yS zsiXmN;@WVD7f>*+*w9U~A{VVPLuiapq4y5G})${#J&3GZlSw z`_XRl{gu^~e4Q@6@)2Ke-yzlZ28uDV=oIJgRmN??m**=SQ3v1axqF{cXB`B&FoLi5v(fRK zp_)_f+QS7}2=(>6uBA|{e(L7xSLMy{iq`udtpV52mrTo8UxVN;Ye|N!TIS1$3n|Ta z@2G^eiZI>DzBD1!>1qmz*IvA!(_5%BG)BBAyHsruEr`*u_bWHL((P+}H#C7hJYRBq zNzAY=n13O^5pz6wXT)(1(}_tdq`LKwne&+8Ym+I6)lfn;Gjbuz&;93Q_|)9dXo;2k zmY#cBBqE#z{vt2=#Q}5vEBn6I^I=%PsJ5rgTk?BSa*Eam9`i-iv!`~mBE>2>)PA1$ z#H`r!r0qS)ic2~>9@fL!B)FajpS*Ga(9I|05T5NlLzJ;-S>H9h=2DhijXPaxEq!+6 zi+t0R(GYS2tKX0%3%(&wyp=)i!99)9P%^s|X;ZqErKYv~TCFWZp_;)%zr3U%@^5l^ z^9ko^sx;t5vZ(#7I8;wd#ZMyjg1>!NZ=d5wq>~T)le0PyFBV}<+m`#;) ztG@X|n8ljC0{%pv?oY4ZSm{x!!b*_JMkrG`n=EInN%&pkrhN zm%boG$p0NN2E)OvMR2(n)h`de!^#}4+S=Ofa}Nhc$3x3Tx>z(zOUv*khYlJI(kok|7!t(RqzE|6PblNH|;_89DJ%?Ck8+ z)YisoR!e7Rhz4OHAt4!B>RhZa@$e*oVBixGnN{%%2sDnLNJvQF5fgvdpRIJizuvNU zaL53Gbvl?&06&aah<}%s8nt{v0Qa&7k(LN0_LIn5*&ImnI-k(UQ~d?vw!YpGfQrxU zeZw9V6=ed08ChC>1L2ySoCFnma&jWeIJLULSU{<)tPD{sm@sE2t$VbnzJ?WC zaC@^`l4GN2e3{v5m}aw3$8Ir-RH^MfMU&SZ0i|JN3|n3{)Ya2-UkN0V6}Dm_mSxt_ z(W!IZmDn0gF0HJj=HQ5}w4B1DppXOcmC?Hd|G7G!GT50afmT&jSxx^&Ff%jz{Q2|I z+1YCvnjp)mV*Be8nEX#}VL1G+-c*Tpk?HN#vD4mkR80-H;PpB_9zMR@p~ZL}u1b!q zaJF)(`N&Hq{RVT~xh}ILKt70d!rrdK1TBlH@DGZcTW|AyZ=URZQyN6FvR+@d6A~sN zCjRp$>Xpo00>B3Eo3nIwBLeK}=iyoGvKninr1 zl9G}R4i3{GOp@W`M(2Mg8jjk~AFo6wV*26S9`}Zx{+nD9XF_1eG4IECCOu*S4|a8R zbyEcGl+T}^gi{KHfO?>!qS~lZN3gQCeoIShIF=(PCMlVuXUxdN%p9>lSG{&{Aivb) z-7`37+8s_oF68s`V4;3(eLWyG6?%Vv&wujgmDNIB>^rl;AH~sel9?mJ074*%oYuW( zJ7Wp&%&CO;hHhqPBSvuSd`4jz8P@9@e@}yL z0m{vyn;^@pB-^w!h=ZeTbFr@9MKBB;a|0gNxfrlj_wLNhL}L zJ3DM7=CUETZ8+|tSek0~^%eZLS6;8Z_1mcZHI))_-P!IGHb4bUP2%I@e_DW}iFI#cw(0L;KD=1bBFOOw7!Z^tFo!i_|Ua zu*_MAkB*L(qa-O?7Z)k%=?mBp#|&8%3)C6Cyu73XOhyP{$G@%Ssupc-jJCP* z$>vkV6jLPzW=G4dk6ojZD}Q|44SnZ(@AXC@rN0c;r?9k%d}-^~@orUDKRRlcCeF#C6~0{khJyp~@rg`Cqt|H5O%+j8>~Z$K zd23!dT*F#Z*S6SbxALS=Q|T>ZZw8qMK+#mM6I9Tf?-);ykBxd`-sV^m*xTD*Hl$m! zlcu<>qE=bWC~tal+Aj8wX3O;5UIVNo;kJ7L8k2+3(bY8<;Ik{i3lPJanwsH!6&ii_ z4T6ToMpR79BG#m|f&%*1)>bizUi`EPILAN|*H&*VeU4HRxC;&Fkyv_-?=dlAAO`M- zjh9Ck7n|exDji*24ja7$iCnhf1qGJ12uhQJFc#uJ0|V65)Pc9RUVq2)MeXcZu&}W9 z7V4|}PiE)l-q|g`uXEZ_&e+h_)cgvN>G$u*!a{~I815&)Om=rS&P~^wNo;+)`}+g< z3jD25-`iFI**hbdD4^2B3MTLh4d5ve`5 zTkFCkWYq2mC3z>CuG#G44I0bl;vUu)hl_7a!X;eg3OVdLn&bv%s|u0DEE@@?c5dHR z>-gJ|#;J(|*QuYFnx#Zfr72ZF2URFm+QQk?R3r%NXwLTNZ0u-QG%^*tr{`$tp{>R~ zmM}*23kGZDYa&K%6T_0B zrN-UF?B+N?627}LK*k_$IbQ1~VK*PvD|+?nmH*wp%jlSxj_=emUqeIJPd550Y!(th z;?hUVA)1XI96+ETE`y>o0S~UOu9i18#I39tJTLZ)Ks^J557^!|CuG*gcwg_bPb}oa z57;FGM3{ol<+ppe18WutLIWTlZazMID0B$qR&FDa!;%nmIBbG0+cV4a@*or{l(M|M zjE4deoIBd&?YXzNSL1g466$kBMM6TtV9-Rap`kHZq|>cq+bHhfz{cEs%cfW7BwRA( zxIfDwA}T5+EuG=}aQ`Sl%qz74Ra?$~Vyx5-3kpKvb3Mocp!F#)j~0uZ+s-lsIj5D` z-QArS0~rksjob5r0RaI4)MsQ|oce*FDnI-F-X72?)PsYAUJrMdZfk5Vw2oQC40K1RLOTR`-*2JOL`+7>3vRk4WDCZ4D~bS6QIEw$L1E20*OhJZ><%qu8xxcNz3nHVlDF7uzSc?;F~Xlmr!%aU zC{w)f1h3v}P1aT7rBo-`r%j3W#r2-xzFIzknJW6tE@{+!Ihc-HgByVCIc$h3 zs;atx5C(Y9n?}Y=t*N84w!7Q6J(9`ed(SWQa9eIMHwmwto|%cAJBRD)^V6!)5%~G} zIUVSpFui4BVgl+hhL>if=Fp;YmM>*Hj;phv;-s#wZnVNe#pmJ96~G2WmQfW*ePk^1 zXDvY4%j$KZqN3_HxJ3b3wz9b?VQRWbp);AEpYL_O5#RsQLa^UMU*yGr0 z+>Exf4{u9+d;Q5`qTjq-DCniktUwaFCk~y8`xVaK}-J&GO-y4f20 zSM(tjS+0kRa_`?mSXo&Cd4gyG%xm+W2r4Bjkcnq{{`@%(0l`yR1)8g!+|=!bdM+Yn z{SHGGyX|4BF~2haq&ar1@|v!I4b%$MO-xLFEGB*b-sXpha&&n~!^s&3t~do5MeP01 zktrFmcJC0q7477DrK8 zU?3*T2T5nsm4?;T*0Oq>nFH^o)#Sy)Wi!vxD4DICKDI*({#+)evd)M2luW>9s;tQ* zBPcl*h+D?SqH|My5<$0q{P;qsB`HtS{EVAVx!Uh^o>Tb zZo2q4LUya^$c_#%An`tY_>cz70w{zLAUc3{pRRMJ2Z{n2lXN&k9R0D_?bjsor|!R@ zWCN}P-;U{6keQiz(QOUWbRba;j^3CzdQhgSB2Xh->vp_v8PnRzVw*Cm2A}^?R@Tzf z(=f5Kp2ff=7nwDAcuaY`Ghp;$f_P|yv+hvzBoF| zAP;ayHj)@5L!S$0EzL|7Q6prGJS0ne(A!<(C%M3?2fyu5nKK&|gR24anNW9o=FzCNJKB?frsMyJb7Q#*rw8?i8B@FN7c*uu z`+w<+_(Aq_HbAr8NlH?xSAow2?1_DQcV{tEmc4Tw*oEKm=vV?@(@sSuaaeY(vYH?kIv54bx>G8 z8Z;A=*FXlE`g?_hgoRP_^Z(pR^-TdP1DBF=uqT@4`fovrY;_ts8d?VMSfHfwNJx5s z7CGb=@2bI6Na7q|k3=!t8O?s=&jujZa*luh#cvl`2^{}VE14B^`CH4Y)NyL<0?GEE93Oyb&S?2X%{UN(BQ(yJeW z6qAMd6{|k~_Nza!5gP#+c|}-H`4`|mNTJ+a z@{k47DPUq*orTFTkV(00WEB;0fTs1jTyTY5#1Svq!eD{^{)pk>;W_cr*=-{uBZdFi z1qD;SetlL}RwnHbWH=5GhDo+f7A~g< zvC^=_mnsA_7GHjZ_^S00!rHLRRZC1ZAi8o0LkJJcDL1D>(#womPrU!p2~U+}m(4Fy zUK|GHtAt6~!WK<}u8Y<@i4QCmR^$JPwT}eyQ!vR-!8wGd6;nlTBm~ z2DOTKv=$+>cv?BMw`T=lyz}aK&3z+Q1H89Tw{~=V;IMf*}5SW{c9uA+S?matXF>m(w2Bo zs#}3xRS{WHSqU4@Qv$Nqe*I6B17Z;n^?+9bff!rf+LHW6$e3r)Ea?1qoC=I$fNXF) zUKMX>XxJXh#pX>OWN*oBIDbP!Qx5!5j(l=2ko^4;)j2siCy&wbzHuU_pwOzZGYVGs zf|Z_i(`qZ-+iSF*MeUs|Fv`5h>@%9qV=4uinq4<7O*J zKsn&gg|i2?7=Sw@y8>e;8HS~c@gkPG^I=W*{{RIp;+YLL!4M?Jvk?ru2mu{~u`n3vY;{9@*%u7k+uQw_J&M`pa=N`abPNqe0E7k#?_=HA0Ql0} z_Nz!>Li382_8G7+Hj52CfHHYJFRb!67mplxE{ z;;J5>v;#9+GES=(Z{G(0`0;~Hr=xR9M_;D25aJ!#W0(T}kUN%8i360RESTGln6m>$ zNPII!wq=BB)U&t059VH7ot>TRWn7^6CkiycNQD9n7UeFbCg^wy_l7sx|GCS7yhA0Kv=RDq!7 zeEs_MFc5xtDrBMlrXh6JP6g@(jOV;wTDy%p*$b*IU0q*x#&XAM?2Ui^{3#uidqv?I z;^Vv7PXdMp`uQ70zdXS2`3YC_2O%;^TeM=%U}pURNINhotlL5%AhO z(pl)$Q9FMje9cAt(WJYC7Wk@5Z)ETmEbM7#!u`b-K2@7apD4WpNOnquv#(l&cjKcic2(iz~;}!e5pUd$2$WN9jn18|k zvo@e6Zev9Ae=ZS-1xCBah)-_OHpyN&rmJ>3NBi~2!>=Q`U>Hn`yh1L5H zQw2DyeynL^d-}RJLlw2lw|THw*Cn=XJ^AWF>NqX!$JGD^39E*2zlz73;E`Vw+;(gG z@ce5~zByrpw&FJ$ZBbn_WQ&7UhKvA7zV~qChDx!&|5=To^Rq?&bC2pI)E?G&bceS+ z-QW@9-70418u%)A-7yCIChe>A>MDjj-S0{SE{*Lef+oEuKG<45Gl-s_79o~ZJzJV; z>!jJ>fa%Nuj`7QLh&av|y5lT=peY9^nEcDW27aw$4Ar;o9xd(qIAkbEmwj7rA9pGU z_Wqe4QCKuFctL+QBcbPt)~moFu4G?|2Z1@UvVnKh>iW6K`J` zTRwP#5Yh7WzIRCB!KfAnoz}Z1tnD}1vnX9tQ{ZR#XF-~`9bc)c(QiY{-3v0 o{^w51|JRnve|B2FmfZ@Sy|xs`W5V$Qn>-LHae1*~5yQ{_1OFu8*8l(j literal 0 HcmV?d00001 diff --git a/doc/img/ChannelWindow_top.xcf b/doc/img/ChannelWindow_top.xcf new file mode 100644 index 0000000000000000000000000000000000000000..91e1fedbc16926cf07207557b858d57ea4cd7c1c GIT binary patch literal 35027 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 +The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Beam steering CW plugin GUI](../../../doc/img/BeamsteeringCWMod_plugin.png)

1: Channel output

diff --git a/plugins/channelmimo/interferometer/readme.md b/plugins/channelmimo/interferometer/readme.md index d76e038ec..ec8a67c3b 100644 --- a/plugins/channelmimo/interferometer/readme.md +++ b/plugins/channelmimo/interferometer/readme.md @@ -6,6 +6,8 @@ This MIMO reception only (MI) plugin can be used to study phase difference betwe

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Interferometer plugin GUI](../../../doc/img/Interferometer_plugin.png) The interface is divided in 3 sections that will be detailed next: diff --git a/plugins/channelrx/chanalyzer/readme.md b/plugins/channelrx/chanalyzer/readme.md index 954f0e15b..d46aafd7c 100644 --- a/plugins/channelrx/chanalyzer/readme.md +++ b/plugins/channelrx/chanalyzer/readme.md @@ -24,6 +24,8 @@ The same waveforms can be used to trigger the scope trace

B. General interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Channel Analyzer NG plugin GUI](../../../doc/img/ChAnalyzerNG_plugin.png) The interface is essentially divided in the following sections diff --git a/plugins/channelrx/demodadsb/readme.md b/plugins/channelrx/demodadsb/readme.md index 8237c0d2f..15fd1f990 100644 --- a/plugins/channelrx/demodadsb/readme.md +++ b/plugins/channelrx/demodadsb/readme.md @@ -16,6 +16,8 @@ The ADS-B plugin can send aicraft for display on the [Map Feature](../../feature

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![ADS-B Demodulator plugin settings](../../../doc/img/ADSBDemod_plugin_settings.png)

1: Frequency shift from center frequency of reception value

diff --git a/plugins/channelrx/demodais/readme.md b/plugins/channelrx/demodais/readme.md index cb9104c90..f0b479a5d 100644 --- a/plugins/channelrx/demodais/readme.md +++ b/plugins/channelrx/demodais/readme.md @@ -16,6 +16,8 @@ The AIS specification is ITU-R M.1371-5: https://www.itu.int/dms_pubrec/itu-r/re

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![AIS Demodulator plugin GUI](../../../doc/img/AISDemod_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/demodam/readme.md b/plugins/channelrx/demodam/readme.md index 418dcce9b..ecd202c03 100644 --- a/plugins/channelrx/demodam/readme.md +++ b/plugins/channelrx/demodam/readme.md @@ -6,6 +6,8 @@ This plugin can be used to listen to a narrowband amplitude modulated signal. "N

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![AM Demodulator plugin GUI](../../../doc/img/AMDemod_plugin.png)

1: Frequency shift from center frequency of reception

@@ -40,7 +42,7 @@ If you right click on it it will open a dialog to select the audio output device

7:Bandpass boxcar filter toggle

-Use this button to enable or disable the bandpass boxcar (sharp) filter with low cutoff at 300 Hz and high cutoff at half the RF bandwidth. This may help readability of low signals on air traffic communications but degrades audio on comfortable AM broadcast transmissions. +Use this button to enable or disable the bandpass boxcar (sharp) filter with low cutoff at 300 Hz and high cutoff at half the RF bandwidth. This may help readability of low signals on air traffic communications but degrades audio on comfortable AM broadcast transmissions.

8: RF bandwidth

diff --git a/plugins/channelrx/demodapt/readme.md b/plugins/channelrx/demodapt/readme.md index 0a6fcaee0..dc7f5c27c 100644 --- a/plugins/channelrx/demodapt/readme.md +++ b/plugins/channelrx/demodapt/readme.md @@ -18,6 +18,8 @@ The status of the NOAA POES satellites is available at: https://www.ospo.noaa.go

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![APT Demodulator plugin GUI](../../../doc/img/APTDemod_plugin_settings.png)

1: Frequency shift from center frequency of reception

@@ -69,7 +71,7 @@ This includes: - Whether to automatically save images on LOS. - Whether a combined image including telemetry should be saved. - Whether separate images of channel A and B, without telemetry, should be saved. - - Whether equidistant cylindrical (plate carrée) project images used for the map, should be saved. + - Whether equidistant cylindrical (plate carr�e) project images used for the map, should be saved. - Path to save automatically saved images in. - The minimum number of scanlines required to be in an image, after noise cropping, for it to be automatically saved. - After how many scanlines image processing is applied and updates sent to the map. Lower values require more CPU power. diff --git a/plugins/channelrx/demodatv/readme.md b/plugins/channelrx/demodatv/readme.md index 2419d67da..50119b740 100644 --- a/plugins/channelrx/demodatv/readme.md +++ b/plugins/channelrx/demodatv/readme.md @@ -10,6 +10,8 @@ Experimental modes with smaller number of lines and FPS values can be used in co

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![ATV Demodulator plugin GUI](../../../doc/img/ATVDemod_plugin.png) The interface is divided into three collapsable sections: diff --git a/plugins/channelrx/demodbfm/readme.md b/plugins/channelrx/demodbfm/readme.md index 5bff97055..90b055e0b 100644 --- a/plugins/channelrx/demodbfm/readme.md +++ b/plugins/channelrx/demodbfm/readme.md @@ -6,6 +6,8 @@ This plugin can be used to listen to a Broadcast FM modulated signal (BFM). In a

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![BFM Demodulator plugin GUI](../../../doc/img/BFMDemod_plugin.png) The main three areas are: diff --git a/plugins/channelrx/demodchirpchat/readme.md b/plugins/channelrx/demodchirpchat/readme.md index d4bd871e3..80916e765 100644 --- a/plugins/channelrx/demodchirpchat/readme.md +++ b/plugins/channelrx/demodchirpchat/readme.md @@ -23,6 +23,8 @@ Note: this plugin is officially supported since version 6.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![ChirpChat Demodulator plugin GUI](../../../doc/img/ChirpChatDemod_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/demoddab/readme.md b/plugins/channelrx/demoddab/readme.md index a3085c986..49518887d 100644 --- a/plugins/channelrx/demoddab/readme.md +++ b/plugins/channelrx/demoddab/readme.md @@ -8,6 +8,8 @@ The DAB demodulator uses a sample rate of 2.048MHz.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![DAB Demodulator plugin GUI](../../../doc/img/DABDemod_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/demoddatv/readme.md b/plugins/channelrx/demoddatv/readme.md index d6ab075b5..52d07cd76 100644 --- a/plugins/channelrx/demoddatv/readme.md +++ b/plugins/channelrx/demoddatv/readme.md @@ -18,6 +18,8 @@ The whole bandwidth available to the channel is used. That is it runs at the dev

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![DATV Demodulator plugin GUI](../../../doc/img/DATVDemod_plugin.png)

A: RF settings

diff --git a/plugins/channelrx/demoddsd/readme.md b/plugins/channelrx/demoddsd/readme.md index e4ca43dff..7c8712eaa 100644 --- a/plugins/channelrx/demoddsd/readme.md +++ b/plugins/channelrx/demoddsd/readme.md @@ -52,6 +52,8 @@ For software built from source if you choose to have `mbelib` support you will n

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![DSD Demodulator plugin GUI](../../../doc/img/DSDdemod_plugin.png)

A section: settings

diff --git a/plugins/channelrx/demodfreedv/readme.md b/plugins/channelrx/demodfreedv/readme.md index 4d8d13f40..afaac4609 100644 --- a/plugins/channelrx/demodfreedv/readme.md +++ b/plugins/channelrx/demodfreedv/readme.md @@ -8,6 +8,8 @@ This plugin can be used to demodulate a signal following the [FreeDV digital voi

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![FreeDV Demodulator plugin GUI](../../../doc/img/FreeDVDemod_plugin.png)

1: Frequency shift from center frequency of reception

@@ -21,7 +23,7 @@ Average total power in dB relative to a +/- 1.0 amplitude signal received in the

3: Manual re-synchronization

This works only for the presently disabled 700D mode. Use this push button to force loosing and re-acquiring synchronisation. - +

4: FreeDV mode

Use this combo box to select which FreeDV standard is used. The following are supported: @@ -30,7 +32,7 @@ Use this combo box to select which FreeDV standard is used. The following are su - `1600`: OFDM (16 QPSK carriers) narrowband (1.4 kHz) with 700 b/s compressed voice - `800XA`: FSK-4 narrowband (2 kHz) with 700 b/s compressed voice - `700C`: Another OFDM (14 QPSK carriers) narrowband (1.5 kHz) mode with 700 b/s compressed voice - +

5: Level meter in dB

- top bar (green): average value @@ -86,7 +88,7 @@ The transmitted signal is further decimated by a power of two before being appli - 4: 6 kHz (2400A) or 1 kHz (other modes) - 8: 3 kHz (2400A) or 0.5 kHz (other modes) - 16: 1.5 kHz (2400A) or 0.25 kHz (other modes) - +

9: Spectrum display

This is the spectrum display of the analog signal that enters the modem before AGC and volume control. Controls on the bottom of the panel are identical to the ones of the main spectrum display. It should be optimally centered using the frequency offset control (1) depending on the expected FreeDV mode: diff --git a/plugins/channelrx/demodnfm/readme.md b/plugins/channelrx/demodnfm/readme.md index 8307070ce..f32ec1005 100644 --- a/plugins/channelrx/demodnfm/readme.md +++ b/plugins/channelrx/demodnfm/readme.md @@ -6,6 +6,8 @@ This plugin can be used to listen to a narrowband FM modulated signal. "Narrowba

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![NFM Demodulator plugin GUI](../../../doc/img/NFMdemod_plugin.png)

1: Frequency shift from center frequency of reception value

diff --git a/plugins/channelrx/demodpacket/readme.md b/plugins/channelrx/demodpacket/readme.md index 0d71dbdd6..2c00e91f1 100644 --- a/plugins/channelrx/demodpacket/readme.md +++ b/plugins/channelrx/demodpacket/readme.md @@ -6,6 +6,8 @@ This plugin can be used to demodulate packet radio (APRS/AX.25) data packets. Re

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Packet Demodulator plugin GUI](../../../doc/img/PacketDemod_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/demodpager/readme.md b/plugins/channelrx/demodpager/readme.md index 2292113d3..e4409fe51 100644 --- a/plugins/channelrx/demodpager/readme.md +++ b/plugins/channelrx/demodpager/readme.md @@ -6,6 +6,8 @@ This plugin can be used to demodulate POCSAG pager messages.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Pager Demodulator plugin GUI](../../../doc/img/PagerDemod_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/demodradiosonde/readme.md b/plugins/channelrx/demodradiosonde/readme.md index 5254b227b..f9941962a 100644 --- a/plugins/channelrx/demodradiosonde/readme.md +++ b/plugins/channelrx/demodradiosonde/readme.md @@ -4,12 +4,14 @@ This plugin can be used to demodulate RS41 radiosonde weather balloon signals. Radiosondes typically transmit on 400-406MHz and are in the sky around the world for around 1 hour around 00:00 UTC. -RS41 radiosondes transmit data frames every second, containing position, velocity and PTU (Pressure, Temperature and Humidity) readings. The radios use GFSK modulation, with ±2.4kHz deviation at 4,800 baud. Reed Solomon encoding is used for ECC (Error Checking and Correction). +RS41 radiosondes transmit data frames every second, containing position, velocity and PTU (Pressure, Temperature and Humidity) readings. The radios use GFSK modulation, with �2.4kHz deviation at 4,800 baud. Reed Solomon encoding is used for ECC (Error Checking and Correction). The Radiosonde demodulator can forward received data to the [Radiosone feature](../../feature/radiosonde/readme.md), which can plot charts showing how altitude and PTU vary over time, and also plot the position of the radiosonde on the 2D and 3D maps.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Radiosonde Demodulator plugin GUI](../../../doc/img/RadiosondeDemod_plugin.png)

1: Frequency shift from center frequency of reception

@@ -81,18 +83,18 @@ The received frames table displays information about each radiosonde frame recei * Serial - The serial number of the radiosonde. Double clicking on this column will search for the radiosone on https://sondehub.org/ * Frame - Frame number * Phase - Flight phase: On ground, Ascent and Descent. -* Lat (°) - Latitude in degrees, North positive. Double clicking on this column will search for the radiosonde on the Map. -* Lon (°) - Longitude in degrees, East positive. Double clicking on this column will search for the radiosonde on the Map. +* Lat (�) - Latitude in degrees, North positive. Double clicking on this column will search for the radiosonde on the Map. +* Lon (�) - Longitude in degrees, East positive. Double clicking on this column will search for the radiosonde on the Map. * Alt (m) - Altitude in metres. * Spd (km/h) - Speed over ground in kilometres per hour. * VR (m/s) - Vertical climb rate in metres per second. -* Hdg (°) - Heading in degrees. +* Hdg (�) - Heading in degrees. * P (hPA) - Air pressure in hectopascals. Not all RS41s include a pressure sensor. A value ending with 'U' indicates a uncalibrated estimate and may be inaccurate. -* T (°C) - Air temperature in degrees Celsius. A value ending with 'U' indicates a uncalibrated estimate and may be inaccurate. +* T (�C) - Air temperature in degrees Celsius. A value ending with 'U' indicates a uncalibrated estimate and may be inaccurate. * U (%) - Relative humidity in percent. A value ending with 'U' indicates a uncalibrated estimate and may be inaccurate. * Bat (V) - Battery voltage in Volts. * Bat - Battery status: OK or low. -* PCB (°C) - Temperature of PCB. +* PCB (�C) - Temperature of PCB. * PWM (%) - Humidity sensor heater PWM (Pulse Width Modulation) setting, in percent. * TX (%) - Transmit power in percent. * Max SF - Maximum subframe number. diff --git a/plugins/channelrx/demodssb/readme.md b/plugins/channelrx/demodssb/readme.md index ba07e5e46..8d8c86ab7 100644 --- a/plugins/channelrx/demodssb/readme.md +++ b/plugins/channelrx/demodssb/readme.md @@ -6,6 +6,8 @@ This plugin can be used to listen to a single sideband or double sidebands modul

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![SSB Demodulator plugin GUI](../../../doc/img/SSBDemod_plugin.png) ☞ In order to toggle USB or LSB mode in SSB mode you have to set the "BW" in channel filter cutoff control (9) to a positive (USB) or negative (LSB) value. The above screenshot shows a LSB setup. See the (8) to (10) paragraphs below for details. diff --git a/plugins/channelrx/demodvor/readme.md b/plugins/channelrx/demodvor/readme.md index d037d5930..de46fb5e0 100644 --- a/plugins/channelrx/demodvor/readme.md +++ b/plugins/channelrx/demodvor/readme.md @@ -16,6 +16,8 @@ Note that for aircraft, there is typically a direct line-of-sight to the VOR. Th

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![VOR Demodulator plugin GUI](../../../doc/img/VORDemod_plugin.png)

1: Level meter in dB

diff --git a/plugins/channelrx/demodvorsc/readme.md b/plugins/channelrx/demodvorsc/readme.md index d929eb957..7604ae07f 100644 --- a/plugins/channelrx/demodvorsc/readme.md +++ b/plugins/channelrx/demodvorsc/readme.md @@ -18,6 +18,8 @@ Several instances of this plugin can be created to monitor multiple VORs and col

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![VOR Demodulator plugin GUI](../../../doc/img/VORDemodSC_plugin.png)

1: Frequency shift from center frequency of reception value

diff --git a/plugins/channelrx/demodwfm/readme.md b/plugins/channelrx/demodwfm/readme.md index 67ad663f4..27e3cbb82 100644 --- a/plugins/channelrx/demodwfm/readme.md +++ b/plugins/channelrx/demodwfm/readme.md @@ -6,6 +6,8 @@ This plugin can be used to listen to a wideband or narrowband FM modulated signa

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![WFM Demodulator plugin GUI](../../../doc/img/WFMDemod_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/filesink/readme.md b/plugins/channelrx/filesink/readme.md index e1c4b4e25..9e8089aeb 100644 --- a/plugins/channelrx/filesink/readme.md +++ b/plugins/channelrx/filesink/readme.md @@ -18,6 +18,8 @@ If a filename is given with an extension different of `.sdriq` or `.wav` then th

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![File Sink plugin GUI](../../../doc/img/FileSink_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/freqtracker/readme.md b/plugins/channelrx/freqtracker/readme.md index 6457b9bb3..fbca962d7 100644 --- a/plugins/channelrx/freqtracker/readme.md +++ b/plugins/channelrx/freqtracker/readme.md @@ -8,6 +8,8 @@ This plugin can be used to track the center frequency of a carrier. It will try

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Frequency Tracker plugin GUI](../../../doc/img/FreqTracker_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/localsink/readme.md b/plugins/channelrx/localsink/readme.md index 9a161ef75..498cd2d75 100644 --- a/plugins/channelrx/localsink/readme.md +++ b/plugins/channelrx/localsink/readme.md @@ -16,6 +16,8 @@ Note that because it uses only the channelizer half band filter chain to achieve

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Local sink channel plugin GUI](../../../doc/img/LocalSink.png)

1: Decimation factor

diff --git a/plugins/channelrx/noisefigure/readme.md b/plugins/channelrx/noisefigure/readme.md index b204906e6..1bfb50e03 100644 --- a/plugins/channelrx/noisefigure/readme.md +++ b/plugins/channelrx/noisefigure/readme.md @@ -10,6 +10,8 @@ The noise figure will vary with frequency and gain settings. Typically, the nois

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Noise figure plugin GUI](../../../doc/img/NoiseFigure_plugin.png)

1: Measurement frequency shift from center

diff --git a/plugins/channelrx/radioastronomy/readme.md b/plugins/channelrx/radioastronomy/readme.md index f9756d2a5..a63583f95 100644 --- a/plugins/channelrx/radioastronomy/readme.md +++ b/plugins/channelrx/radioastronomy/readme.md @@ -90,6 +90,8 @@ Where:

1: Settings

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Settings GUI](../../../doc/img/RadioAstronomy_Settings.png)

1.1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/radioclock/readme.md b/plugins/channelrx/radioclock/readme.md index 58c7f7755..987d03032 100644 --- a/plugins/channelrx/radioclock/readme.md +++ b/plugins/channelrx/radioclock/readme.md @@ -17,6 +17,8 @@ Although the atomic clocks used to transmit the timecode are extremely accurate,

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Radio clock plugin GUI](../../../doc/img/RadioClock_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/remotesink/readme.md b/plugins/channelrx/remotesink/readme.md index aa7509aa7..4aeb8c8ce 100644 --- a/plugins/channelrx/remotesink/readme.md +++ b/plugins/channelrx/remotesink/readme.md @@ -10,6 +10,8 @@ The plugin will be built only if the [CM256cc library](https://github.com/f4exb/

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Remote sink channel plugin GUI](../../../doc/img/RemoteSink.png)

1: Decimation factor

diff --git a/plugins/channelrx/sigmffilesink/readme.md b/plugins/channelrx/sigmffilesink/readme.md index f5e1690ef..07aa90a39 100644 --- a/plugins/channelrx/sigmffilesink/readme.md +++ b/plugins/channelrx/sigmffilesink/readme.md @@ -19,6 +19,8 @@ It adds a dependency to the [libsigmf library](https://github.com/f4exb/libsigmf

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![SigMF File Sink plugin GUI](../../../doc/img/SigMFFileSink_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channelrx/udpsink/readme.md b/plugins/channelrx/udpsink/readme.md index b98dbe43b..921e6ae9c 100644 --- a/plugins/channelrx/udpsink/readme.md +++ b/plugins/channelrx/udpsink/readme.md @@ -12,6 +12,8 @@ This plugin is available for Linux and Mac O/S only.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![UDP Sink plugin GUI](../../../doc/img/UDPsink_plugin.png)

1: Frequency shift from center frequency of reception

@@ -30,7 +32,7 @@ Total power in dB relative to a +/- 1.0 amplitude signal sent over UDP. These parameters are set with the basic channel settings dialog. See: [here](https://github.com/f4exb/sdrangel/blob/master/sdrgui/readme.md#6-channels) -The display is in the format `address:audio port/data port` +The display is in the format `address:audio port/data port`

5: Signal sample rate

@@ -48,14 +50,14 @@ Left: combo box to specify the type of samples that are sent over UDP: - `LSB Mono`: AF of the LSB part of a SSB demodulated signal as "mono" (I+Q)*0.7 samples that is one sample per demodulator output sample. This can be used with software that accepts mono type of input. - `USB Mono`: AF of the USB part of a SSB demodulated signal as "mono" (I+Q)*0.7 samples that is one sample per demodulator output sample. This can be used with software that accepts mono type of input. - `AM Mono`: AF of the envelope demodulated signal i.e. channel magnitude or sqrt(I² + Q²) as "mono" samples that is one sample per demodulator output sample. This can be used with software that accepts mono type of input. - - `AM !DC Mono`: Same as above but with a DC block based on magnitude average over a 5 ms period - - `AM BPF Mono`: Same as AM Mono but raw magnitude signal is passed through a bandpass filter with lower cutoff at 300 Hz and higher cutoff at RF bandwidth frequency - + - `AM !DC Mono`: Same as above but with a DC block based on magnitude average over a 5 ms period + - `AM BPF Mono`: Same as AM Mono but raw magnitude signal is passed through a bandpass filter with lower cutoff at 300 Hz and higher cutoff at RF bandwidth frequency + Right: Sample size in bits: - `16 bits`: samples are 16 bit signed with little endian layout (S16LE) - `24 bits`: samples are 32 bit signed with little endian layout (S32LE) using only the 3 less significant bytes. This means that the range is -2²³ to 2²³ - 1 - +

7: Signal bandwidth

The signal is bandpass filtered to this bandwidth (zero frequency centered) before being sent out as raw I/Q samples or before being demodulated for SSB and FM outputs. Thus a 20000 Hz bandwidth for example means +/-10000 Hz around center channel frequency. @@ -64,7 +66,7 @@ When SSB formats are used only the lower half (LSB) or upper half (USB) of the b

8: FM deviation

-This is the maximum expected FM deviation in Hz for NFM demodulated samples. Therefore it is active only for `NFM` types of sample formats. A positive deviation of this amount from the central carrier will result in a sample output value of 32767 (0x7FFF) corresponding to a +1.0 real value. A negative deviation of this amount from the central carrier will result in a sample output value of -32768 (0x8000) corresponding to a -1.0 real value. +This is the maximum expected FM deviation in Hz for NFM demodulated samples. Therefore it is active only for `NFM` types of sample formats. A positive deviation of this amount from the central carrier will result in a sample output value of 32767 (0x7FFF) corresponding to a +1.0 real value. A negative deviation of this amount from the central carrier will result in a sample output value of -32768 (0x8000) corresponding to a -1.0 real value.

9: AGC and audio feedback control

@@ -72,7 +74,7 @@ This is the maximum expected FM deviation in Hz for NFM demodulated samples. The

9.1: Toggle AGC

-It is effective only for AM and SSB. Signal is normalized to +/- 0.5 times the maximum amplitude with a time constant (averaging) of 200 ms. When engaged the squelch gate is fixed at 50 ms. The release time controlled by (15.3) can be increased from the 50 ms default for SSB signals to prevent accidental signal drops due to drops in the voice. +It is effective only for AM and SSB. Signal is normalized to +/- 0.5 times the maximum amplitude with a time constant (averaging) of 200 ms. When engaged the squelch gate is fixed at 50 ms. The release time controlled by (15.3) can be increased from the 50 ms default for SSB signals to prevent accidental signal drops due to drops in the voice.

9.2: Toggle audio feedback

@@ -94,7 +96,7 @@ The changes in the following items only become effective when this button is pre - Audio port (9) - FM deviation (11) -When any item of these items is changed the button is lit in green until it is pressed. +When any item of these items is changed the button is lit in green until it is pressed.

11: Audio volume

@@ -120,11 +122,11 @@ Use the slider to set the squelch power threshold based on channel input power ( Sets the delay after which a signal constantly above the squelch threshold effectively opens the squelch. The same delay is used for squelch release except for SSB where the gate is fixed at 50 ms and this controls the release time only. -The delay in milliseconds is displayed at the right of the button. +The delay in milliseconds is displayed at the right of the button.

14: Spectrum display

-This is the spectrum display of the channel signal after bandpass filtering. Please refer to the Spectrum display description for details. +This is the spectrum display of the channel signal after bandpass filtering. Please refer to the Spectrum display description for details. -This spectrum is centered on the center frequency of the channel (center frequency of reception + channel shift) and is that of a complex signal i.e. there are positive and negative frequencies. The width of the spectrum is proportional of the sample rate. That is for a sample rate of S samples per seconds the spectrum spans from -S/2 to +S/2 Hz. +This spectrum is centered on the center frequency of the channel (center frequency of reception + channel shift) and is that of a complex signal i.e. there are positive and negative frequencies. The width of the spectrum is proportional of the sample rate. That is for a sample rate of S samples per seconds the spectrum spans from -S/2 to +S/2 Hz. diff --git a/plugins/channeltx/filesource/readme.md b/plugins/channeltx/filesource/readme.md index be7ee073d..1173322ec 100644 --- a/plugins/channeltx/filesource/readme.md +++ b/plugins/channeltx/filesource/readme.md @@ -50,6 +50,8 @@ The I/Q samples are copied to the baseband to be transmitted by the sink output

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![File source channel plugin GUI](../../../doc/img/FileSource_plugin.png)

1: Interpolation factor

diff --git a/plugins/channeltx/localsource/readme.md b/plugins/channeltx/localsource/readme.md index 1259484da..83447c219 100644 --- a/plugins/channeltx/localsource/readme.md +++ b/plugins/channeltx/localsource/readme.md @@ -10,6 +10,8 @@ Note that because it uses only the channelizer half band filter chain to achieve

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Local source channel plugin GUI](../../../doc/img/LocalSource.png)

1: Interpolation factor

diff --git a/plugins/channeltx/mod802.15.4/readme.md b/plugins/channeltx/mod802.15.4/readme.md index d7deb8aa0..a518a39a2 100644 --- a/plugins/channeltx/mod802.15.4/readme.md +++ b/plugins/channeltx/mod802.15.4/readme.md @@ -6,6 +6,8 @@ This plugin can be used to transmit IEEE 802.15.4 frames. The 802.15.4 PHY & RF

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![802.15.4 Modulator plugin GUI](../../../doc/img/IEEE_802_15_4_Mod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modais/readme.md b/plugins/channeltx/modais/readme.md index 106aa33af..2453ebb0d 100644 --- a/plugins/channeltx/modais/readme.md +++ b/plugins/channeltx/modais/readme.md @@ -8,6 +8,8 @@ You need an AIS license to transmit on the AIS VHF frequencies (161.975MHz and 1

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![AIS Modulator plugin GUI](../../../doc/img/AISMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modam/readme.md b/plugins/channeltx/modam/readme.md index 10d5e8b01..025cb858a 100644 --- a/plugins/channeltx/modam/readme.md +++ b/plugins/channeltx/modam/readme.md @@ -6,6 +6,8 @@ This plugin can be used to generate a narrowband amplitude modulated signal. "Na

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![AM Modulator plugin GUI](../../../doc/img/AMMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modatv/readme.md b/plugins/channeltx/modatv/readme.md index 653248cad..50592d913 100644 --- a/plugins/channeltx/modatv/readme.md +++ b/plugins/channeltx/modatv/readme.md @@ -10,6 +10,8 @@ In practice 4 MS/s with about 300 points per line is the lowest sample rate that

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![ATV Modulator plugin GUI](../../../doc/img/ATVMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modchirpchat/readme.md b/plugins/channeltx/modchirpchat/readme.md index 46dcfefd4..31c8e6698 100644 --- a/plugins/channeltx/modchirpchat/readme.md +++ b/plugins/channeltx/modchirpchat/readme.md @@ -19,6 +19,8 @@ Note: this plugin is officially supported since version 6.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![ChitpChat Modulator plugin GUI](../../../doc/img/ChirpChatMod_plugin.png)

1: Frequency shift from center frequency of reception

diff --git a/plugins/channeltx/moddatv/readme.md b/plugins/channeltx/moddatv/readme.md index 94b598861..1241dcebb 100644 --- a/plugins/channeltx/moddatv/readme.md +++ b/plugins/channeltx/moddatv/readme.md @@ -15,6 +15,8 @@ DVB-S2 includes: scrambling, BCH encoder, LDPC encoder, bit interleaver and QPSK

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![DATV Modulator plugin GUI](../../../doc/img/DATVMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modfreedv/readme.md b/plugins/channeltx/modfreedv/readme.md index f4ea2cb5d..52dae2126 100644 --- a/plugins/channeltx/modfreedv/readme.md +++ b/plugins/channeltx/modfreedv/readme.md @@ -8,6 +8,8 @@ This plugin can be used to generate a signal following the [FreeDV digital voice

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![FreeDV Modulator plugin GUI](../../../doc/img/FreeDVMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modnfm/readme.md b/plugins/channeltx/modnfm/readme.md index 3a317f1b5..83c599859 100644 --- a/plugins/channeltx/modnfm/readme.md +++ b/plugins/channeltx/modnfm/readme.md @@ -6,6 +6,8 @@ This plugin can be used to generate a narrowband frequency modulated signal. "Na

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![NFM Modulator plugin GUI](../../../doc/img/NFMMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modpacket/readme.md b/plugins/channeltx/modpacket/readme.md index f30f0570b..2ae2496fa 100644 --- a/plugins/channeltx/modpacket/readme.md +++ b/plugins/channeltx/modpacket/readme.md @@ -6,6 +6,8 @@ This plugin can be used to modulate packet radio (APRS/AX.25) data packets.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Packet Modulator plugin GUI](../../../doc/img/PacketMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/modssb/readme.md b/plugins/channeltx/modssb/readme.md index 11a7c70ca..829618a75 100644 --- a/plugins/channeltx/modssb/readme.md +++ b/plugins/channeltx/modssb/readme.md @@ -6,6 +6,8 @@ This plugin can be used to generate a single sideband or double sidebands modula

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![SSB Modulator plugin GUI](../../../doc/img/SSBModulator_plugin.png) ☞ In order to toggle USB or LSB mode in SSB mode you have to set the "BW" in channel filter cutoff control (8) to a positive (USB) or negative (LSB) value. The above screenshot shows a USB setup. See the (7) to (9) paragraphs below for details. diff --git a/plugins/channeltx/modwfm/readme.md b/plugins/channeltx/modwfm/readme.md index ad3f4b0ad..df61d4f61 100644 --- a/plugins/channeltx/modwfm/readme.md +++ b/plugins/channeltx/modwfm/readme.md @@ -6,6 +6,8 @@ This plugin can be used to generate a wideband frequency modulated signal. "Wide

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![WFM Modulator plugin GUI](../../../doc/img/WFMMod_plugin.png)

1: Frequency shift from center frequency of transmission

diff --git a/plugins/channeltx/remotesource/readme.md b/plugins/channeltx/remotesource/readme.md index 63b1a246d..ea86b51a8 100644 --- a/plugins/channeltx/remotesource/readme.md +++ b/plugins/channeltx/remotesource/readme.md @@ -10,6 +10,8 @@ The plugin will be built only if the [CM256cc library](https://github.com/f4exb/

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![Remote source channel plugin GUI](../../../doc/img/RemoteSource.png)

1: Data local address

diff --git a/plugins/channeltx/udpsource/readme.md b/plugins/channeltx/udpsource/readme.md index 5dbcaedc3..3975fd111 100644 --- a/plugins/channeltx/udpsource/readme.md +++ b/plugins/channeltx/udpsource/readme.md @@ -10,6 +10,8 @@ This plugin is available for Linux and Mac O/S only.

Interface

+The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + ![UDP Source plugin GUI](../../../doc/img/UDPsource_plugin.png)

1: Frequency shift from center frequency of reception

@@ -30,7 +32,7 @@ Use this button to switch off the RF on the channel. The background of the butto

5: UDP address and port

-Enter the network interface address and listening port. The display is in the format `address:data port` +Enter the network interface address and listening port. The display is in the format `address:data port`

6: Join multicast group

@@ -57,7 +59,7 @@ Combo box to specify the type of samples that are received and sent in the chann

10: Mono/Stereo input

This toggles switches between 1 channel (mono) and 2 channels (stereo) input samples format. - +

11: Output signal bandwidth

The signal is bandpass filtered to this bandwidth (zero frequency centered) before being sent out in the channel. In SSB modes only half of the filter is used (LSB: lower, USB: upper). Thus to send a signal with 3000 Hz bandwidth a bandwidth of 6000 Hz must be selected. In addition in SSB modes a 300 Hz highpass filter is applied. @@ -72,9 +74,9 @@ this is the AM percentage modulation when a +/- 1.0 amplitude modulating signal

14: Squelch

-The slider sets the squelch power threshold based on channel input power (2). At the right of the slider the value in dB is displayed. +The slider sets the squelch power threshold based on channel input power (2). At the right of the slider the value in dB is displayed. -The button sets the delay after which a signal constantly above the squelch threshold effectively opens the squelch. The same delay is used for squelch release. The delay in milliseconds is displayed at the right of the button. +The button sets the delay after which a signal constantly above the squelch threshold effectively opens the squelch. The same delay is used for squelch release. The delay in milliseconds is displayed at the right of the button.

15: Input and output Gains

@@ -94,7 +96,7 @@ This gauge shows the percentage of deviation from a R/W pointer distance of half There is an automatic correction to try to maintain the half buffer distance between read and write pointers. This adjust the sample rate and therefore some wiggling around the nominal sample rate can occur. This should be hardly noticeable for most modulations but can be problematic with very narrowband modulations like WSPR. -The buffer consists in 512 bytes frames so that a normalized UDP block can be placed in one frame. Half the number of frames is calculated as the sample rate divided by 375. This results in a fixed average delay 0f 341 ms for sample rates of 48 kS/s and above. +The buffer consists in 512 bytes frames so that a normalized UDP block can be placed in one frame. Half the number of frames is calculated as the sample rate divided by 375. This results in a fixed average delay 0f 341 ms for sample rates of 48 kS/s and above.

18: Reset input buffer R/W pointers

@@ -117,10 +119,10 @@ The changes in the following items only become effective when this button is pre - FM deviation (12) - AM percentage (13) -When any item of these items is changed the button is lit in green until it is pressed. +When any item of these items is changed the button is lit in green until it is pressed.

21: Spectrum display

-This is the spectrum display of the channel signal before filtering. Please refer to the Spectrum display description for details. +This is the spectrum display of the channel signal before filtering. Please refer to the Spectrum display description for details. -This spectrum is centered on the center frequency of the channel (center frequency of reception + channel shift) and is that of a complex signal i.e. there are positive and negative frequencies. The width of the spectrum is proportional of the sample rate. That is for a sample rate of S samples per seconds the spectrum spans from -S/2 to +S/2 Hz. +This spectrum is centered on the center frequency of the channel (center frequency of reception + channel shift) and is that of a complex signal i.e. there are positive and negative frequencies. The width of the spectrum is proportional of the sample rate. That is for a sample rate of S samples per seconds the spectrum spans from -S/2 to +S/2 Hz. diff --git a/sdrgui/channel/channelgui.cpp b/sdrgui/channel/channelgui.cpp index 7b274bf85..50a83d37e 100644 --- a/sdrgui/channel/channelgui.cpp +++ b/sdrgui/channel/channelgui.cpp @@ -329,9 +329,14 @@ void ChannelGUI::setDeviceType(DeviceType type) updateIndexLabel(); } +void ChannelGUI::setDisplayedame(const QString& name) +{ + m_displayedName = name; +} + void ChannelGUI::setToolTip(const QString& tooltip) { - m_indexLabel->setToolTip(tooltip); + m_indexLabel->setToolTip(tr("%1 / %2").arg(tooltip).arg(m_displayedName)); } void ChannelGUI::setIndex(int index) diff --git a/sdrgui/channel/channelgui.h b/sdrgui/channel/channelgui.h index 28a8b7434..6a78c8734 100644 --- a/sdrgui/channel/channelgui.h +++ b/sdrgui/channel/channelgui.h @@ -75,6 +75,7 @@ public: void setTitle(const QString& title); void setTitleColor(const QColor& c); void setDeviceType(DeviceType type); + void setDisplayedame(const QString& name); DeviceType getDeviceType() const { return m_deviceType; } void setToolTip(const QString& tooltip); void setIndex(int index); @@ -97,6 +98,7 @@ protected: QString m_helpURL; RollupContents* m_rollupContents; ContextMenuType m_contextMenuType; + QString m_displayedName; protected slots: void shrinkWindow(); diff --git a/sdrgui/channel/readme.md b/sdrgui/channel/readme.md new file mode 100644 index 000000000..339b2c71c --- /dev/null +++ b/sdrgui/channel/readme.md @@ -0,0 +1,165 @@ +

Channel common controls

+ +The channel windows have common top and bottom bars + +![Channel window](../../doc/img/ChannelWindow.png) + +

A: Top bar

+ +![Channel window](../../doc/img/ChannelWindow_top.png) + +

A.1: Index

+ +The format is: + + - Device reference to which the channel is attached. This is the device type and its index. See [device window documentation](../device/readme.md) + - Semicolon separator + - Channel index in device set + +Aditionally when the channel is a single stream channel and attached to a MIMO device: + + - Dot separator + - Stream index + +The tooltip shows the device type to which the channel is attached, its sequence number and serial number of the device if it exists. It also displays the channel type separated by a slash. For example: `HackRF[0] 88869dc3878a51 / SSB Demodulator` + +You may click on this area and drag the window with the mouse. + +

A.2: Common channel settings

+ +Opens a dialog to update the common channel settings + +![Basic channel settings](../../doc/img/BasicChannelSettings.png) + +

A.2.1: Window title

+ +Changes the channel window title + +

A.2.2: Channel color

+ +Changes the color of the window title bar and spectrum overlay. To change the color click on the color square to open a color chooser dialog. The hex rgb value is displayed next to the color square. + +

A.2.3: Frequency scale display type

+ +When the mouse is over the channel window or over the central line in the spectrum a channel parameter is displayed on the frequency scale. This parameter can be: + + - Freq: channel absolute center frequency + - Title: channel window title + - AdSnd: UDP address and send port + - AdRcv: UDP address and receive port + +

A.2.4: Toggle reverse API feature

+ +Use this checkbox to toggle on/off the reverse API feature. With reverse API engaged the changes in the channel settings are forwarded to an API endpoint given by address (5.1.5), port (5.1.6), device index (5.1.7) and channel index (5.1.8) in the same format as the SDRangel REST API channel settings endpoint. With the values of the screenshot the API URL is: `http://127.0.0.1:8888/sdrangel/deviceset/0/channel/0/settings` The JSON payload follows the same format as the SDRangel REST API channel settings. Using the same example this would be: + +``` +{ + "SSBDemodSettings": { + "agc": 0, + "agcClamping": 0, + "agcPowerThreshold": -40, + "agcThresholdGate": 4, + "agcTimeLog2": 7, + "audioBinaural": 0, + "audioDeviceName": "System default device", + "audioFlipChannels": 0, + "audioMute": 0, + "dsb": 0, + "inputFrequencyOffset": 0, + "lowCutoff": 300, + "rfBandwidth": 3000, + "rgbColor": -16711936, + "spanLog2": 3, + "title": "SSB Demodulator", + "volume": 3 + }, + "channelType": "SSBDemod", + "tx": 0 +} +``` +Note that the PATCH method is used. The full set of parameters is sent only when the reverse API is toggled on or a full settings update is done. + +More details on this feature can be found on the corresponding Wiki page. + +

A.2.5: API address

+ +This is the IP address of the API endpoint + +

A.2.6: API port

+ +This is the IP port of the API endpoint + +

A.2.7: Device index

+ +This is the targeted device index + +

A.2.8: Channel index

+ +This is the targeted channel index + +

A.2.9: Cancel changes and exit dialog

+ +Do not make any changes and exit dialog + +

A.2.10: Validate and exit dialog

+ +Validates the data (saves it in the channel marker object) and exits the dialog + +

A.3: Title

+ +This is the default channel title or as set with (A.2.1). + +You may click on this area and drag the window with the mouse. + +

A.4: Help

+ +Clicking on this button opens the documentation about the channel controls in github in the browser. + +

A.5: Move to another workspace

+ +Opens a dialog to choose a destination workspace to move the channel window to. Nothing happens if the same workspace is selected. + +

A.6: Shrink window

+ +Click this button to reduce the window to its minimum size + +

A.7: Hide window

+ +Click this button to hide the channel window + +

A.8: Close window

+ +Click this button to close the window and removes the channel from the device set. + +

A.9: Top size grip

+ +You can drag this gray square to resize the window + +

B: Bottom bar

+ +![Channel window](../../doc/img/ChannelWindow_bottom.png) + +

B.1: Duplicate channel

+ +Creates a new channel with the same settings + +

B.2: Attach channel to another device

+ +Opens a dialog to select the destination device. Nothing happens if the destination device is the same as the current device. + +

B.3: Absolute channel center frequency

+ +This is the absolute frequency in Hz of the channel center. It is the sum of the device center frequency and the channel shift. + +You may click on this area and drag the window with the mouse. + +

B.4: Status message

+ +The status messages appear here if any. + +You may click on this area and drag the window with the mouse. + +

B.5: Bottom size grip

+ +You can drag this gray square to resize the window + diff --git a/sdrgui/device/deviceuiset.cpp b/sdrgui/device/deviceuiset.cpp index 1adb6df0f..4530d1cfd 100644 --- a/sdrgui/device/deviceuiset.cpp +++ b/sdrgui/device/deviceuiset.cpp @@ -298,8 +298,10 @@ void DeviceUISet::loadRxChannelSettings(const Preset *preset, PluginAPI *pluginA qPrintable((*channelRegistrations)[i].m_channelIdURI), qPrintable(channelConfig.m_channelIdURI)); BasebandSampleSink *rxChannel; - (*channelRegistrations)[i].m_plugin->createRxChannel(m_deviceAPI, &rxChannel, &channelAPI); - rxChannelGUI = (*channelRegistrations)[i].m_plugin->createRxChannelGUI(this, rxChannel); + PluginInterface *pluginInterface = (*channelRegistrations)[i].m_plugin; + pluginInterface->createRxChannel(m_deviceAPI, &rxChannel, &channelAPI); + rxChannelGUI = pluginInterface->createRxChannelGUI(this, rxChannel); + rxChannelGUI->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); registerRxChannelInstance(channelAPI, rxChannelGUI); QObject::connect( rxChannelGUI, @@ -424,8 +426,10 @@ void DeviceUISet::loadTxChannelSettings(const Preset *preset, PluginAPI *pluginA qPrintable((*channelRegistrations)[i].m_channelIdURI), qPrintable(channelConfig.m_channelIdURI)); BasebandSampleSource *txChannel; - (*channelRegistrations)[i].m_plugin->createTxChannel(m_deviceAPI, &txChannel, &channelAPI); - txChannelGUI = (*channelRegistrations)[i].m_plugin->createTxChannelGUI(this, txChannel); + PluginInterface *pluginInterface = (*channelRegistrations)[i].m_plugin; + pluginInterface->createTxChannel(m_deviceAPI, &txChannel, &channelAPI); + txChannelGUI = pluginInterface->createTxChannelGUI(this, txChannel); + txChannelGUI->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); registerTxChannelInstance(channelAPI, txChannelGUI); QObject::connect( txChannelGUI, @@ -551,9 +555,10 @@ void DeviceUISet::loadMIMOChannelSettings(const Preset *preset, PluginAPI *plugi qPrintable((*channelRegistrations)[i].m_channelIdURI), qPrintable(channelConfig.m_channelIdURI)); MIMOChannel *mimoChannel; - (*channelRegistrations)[i].m_plugin->createMIMOChannel(m_deviceAPI, &mimoChannel, &channelAPI); - mimoChannelGUI = (*channelRegistrations)[i].m_plugin->createMIMOChannelGUI(this, mimoChannel); - (*channelRegistrations)[i].m_plugin->createMIMOChannel(m_deviceAPI, &mimoChannel, &channelAPI); + PluginInterface *pluginInterface = (*channelRegistrations)[i].m_plugin; + pluginInterface->createMIMOChannel(m_deviceAPI, &mimoChannel, &channelAPI); + mimoChannelGUI = pluginInterface->createMIMOChannelGUI(this, mimoChannel); + mimoChannelGUI->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); registerChannelInstance(channelAPI, mimoChannelGUI); QObject::connect( mimoChannelGUI, diff --git a/sdrgui/device/readme.md b/sdrgui/device/readme.md index d07c77aef..0cddbbcaf 100644 --- a/sdrgui/device/readme.md +++ b/sdrgui/device/readme.md @@ -2,14 +2,13 @@ The device windows have common top and bottom bars - ![Device window](../../doc/img/DeviceWindow.png)

A: Top bar

![Device window top bar](../../doc/img/DeviceWindow_top.png) -

A.1 Devcice type and index

+

A.1 Device type and index

The format is: - Device type: @@ -19,7 +18,7 @@ The format is: - Semicolon separator - Device set index. A "device set" is the set of a device and its corresponding channels -THe tooltip shows the device type, sequence number and serial number of the device if it exists. +The tooltip shows the device type, sequence number and serial number of the device if it exists. You may click on this area and drag the window with the mouse. @@ -185,7 +184,7 @@ You may click on this area and drag the window with the mouse. Clicking on this button opens the documentation about the device controls in github in the browser. -

A.9: Move to a workspace

+

A.9: Move to another workspace

Opens a dialog to choose a destination workspace to move the device window to. Nothing happens if the same workspace is selected. @@ -195,13 +194,13 @@ Click this button to reduce the window to its minimum size

A.11: Close window

-Click this button to close the window and removes the channel from the device set. +Click this button to close the window and removes the device set i.e. the device and all its channels.

A.12: Top size grip

You can drag this gray square to resize the window -

B: Botom bar

+

B: Bottom bar

![Device window bottom bar](../../doc/img/DeviceWindow_bottom.png) diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 99d0495e2..2f663149b 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -2362,6 +2362,7 @@ void MainWindow::channelAddClicked(Workspace *workspace, int deviceSetIndex, int deviceUI->registerRxChannelInstance(channelAPI, gui); gui->setDeviceType(ChannelGUI::DeviceRx); gui->setIndex(channelAPI->getIndexInDeviceSet()); + gui->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); } else if (deviceUI->m_deviceSinkEngine) // sink device => Tx channels { @@ -2374,6 +2375,7 @@ void MainWindow::channelAddClicked(Workspace *workspace, int deviceSetIndex, int deviceUI->registerTxChannelInstance(channelAPI, gui); gui->setDeviceType(ChannelGUI::DeviceTx); gui->setIndex(channelAPI->getIndexInDeviceSet()); + gui->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); } else if (deviceUI->m_deviceMIMOEngine) // MIMO device => all possible channels. Depends on index range { @@ -2393,6 +2395,7 @@ void MainWindow::channelAddClicked(Workspace *workspace, int deviceSetIndex, int gui = pluginInterface->createMIMOChannelGUI(deviceUI, mimoChannel); deviceUI->registerChannelInstance(channelAPI, gui); gui->setIndex(channelAPI->getIndexInDeviceSet()); + gui->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); } else if (channelPluginIndex < nbMIMOChannels + nbRxChannels) // Rx { @@ -2404,6 +2407,7 @@ void MainWindow::channelAddClicked(Workspace *workspace, int deviceSetIndex, int gui = pluginInterface->createRxChannelGUI(deviceUI, rxChannel); deviceUI->registerRxChannelInstance(channelAPI, gui); gui->setIndex(channelAPI->getIndexInDeviceSet()); + gui->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); } else if (channelPluginIndex < nbMIMOChannels + nbRxChannels + nbTxChannels) { @@ -2415,6 +2419,7 @@ void MainWindow::channelAddClicked(Workspace *workspace, int deviceSetIndex, int gui = pluginInterface->createTxChannelGUI(deviceUI, txChannel); deviceUI->registerTxChannelInstance(channelAPI, gui); gui->setIndex(channelAPI->getIndexInDeviceSet()); + gui->setDisplayedame(pluginInterface->getPluginDescriptor().displayedName); } gui->setDeviceType(ChannelGUI::DeviceMIMO);