From d0c50549af13df7362aaf426ce67c8b4f97bad34 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 12 Apr 2021 12:03:33 +0200 Subject: [PATCH] NFM mod: implemented Digital Code Squelch (DCS) --- doc/img/NFMMod_plugin.png | Bin 44087 -> 47454 bytes doc/img/NFMMod_plugin.xcf | Bin 177851 -> 193495 bytes plugins/channeltx/modnfm/CMakeLists.txt | 2 + plugins/channeltx/modnfm/nfmmod.cpp | 3 + plugins/channeltx/modnfm/nfmmoddcs.cpp | 97 ++++++++++++++++++++ plugins/channeltx/modnfm/nfmmoddcs.h | 43 +++++++++ plugins/channeltx/modnfm/nfmmodgui.cpp | 35 ++++++- plugins/channeltx/modnfm/nfmmodgui.h | 6 ++ plugins/channeltx/modnfm/nfmmodgui.ui | 61 ++++++++++++ plugins/channeltx/modnfm/nfmmodsettings.cpp | 10 ++ plugins/channeltx/modnfm/nfmmodsettings.h | 3 + plugins/channeltx/modnfm/nfmmodsource.cpp | 11 +++ plugins/channeltx/modnfm/nfmmodsource.h | 2 + plugins/channeltx/modnfm/readme.md | 12 +++ 14 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 plugins/channeltx/modnfm/nfmmoddcs.cpp create mode 100644 plugins/channeltx/modnfm/nfmmoddcs.h diff --git a/doc/img/NFMMod_plugin.png b/doc/img/NFMMod_plugin.png index ef15850d4b3e2f1f4668e177ecbe1c1246a96797..a40e1473fde466bd22f9b4999b881c840fe543aa 100644 GIT binary patch literal 47454 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

3E}at4ds#1DFr+gPNY0NTKHpM$Xn|C?27KRHDs z4arc}-EpL-dcH9vYP*@@Z1z`6(gyJ*-Fo#>HWKTU3sL5d+LTj*<2p<04Zj>~b`~S26X|*F& zWaJAw51;*3WgK(uFxLRB&cN1ys<6AU&pvIUHz3FWG;V-E>s)RGBMXvHZ2*e(TkLbf z+}5O?T5NJV2)8AA$g>y_$q}u8P6C-(P$>#Kiu2-mWZ;n+M$a<=oS7KgiCyYH%xw~~ z!ez{?T7kyJtn89t$i@OEriGdp{P33Bg>T9aQ4Z*vZMF}wYO*Jz^& z_eFd8p`Xhfyyt9W$6*zNhjST?U>};q`_b=+xs_gRirPpt`R@}h0Lmb6C}MCn_G;u$ zi+QiW07J}j1af!?goLi&dkpr(mbw+>lSY<)l39hX1O&%oot`gbpzVqO{@uBVhX~`z z0t$hM_1uQPeD`l+q`|`5i#4k- zstmI>en?zAjvu!zlraq?9XrO63*orIbC8u-B&C3Nfe;28O=7Q4YPJ9QsqSnHhwQeR z4M=G|Elz~cL#yFLqii-Hsxc98>Rfp$f0Vh;*oDR0R(S>7ro*mCCHxoZcF{?LG z=;Jv8tTPRmd3Y@Bc(I+UI=qA821*#+BBYeh0V8Q*_y4i{~k2L z7D@7+V>kPFUP!g^a@ycRpo2w+en4;P-RcT8q;f5iohBBKOwbS zNbtF2(f#weeC=*pdsc)u?=8XKe++ggWEctkB}y70QV`ihOD}ul^kCHjdCv>cwdJkL z^RpBq9aAd#;pIPGu5r-^?z(IH!k3%nR$c8z#D8TFwPe9fh#@N^2uKewdzuT2TwRTAARf>7e)Z@_}N@|f;=aR#yi~Pb?wvh~LkFgpt zr4?G(d`^ARw)^8uLv%)RE$2ZM6^3`4^nARZ!n>FKwZ?A`r!et1x?hD7f-cF_n#4M0 z`If06_Eylj&9{4q^FelbukOe9mF|b%CUXZ}m&nkHy7T>8;--fZ_eGgZ4cf}{``CD_ zT_Q^)svbmWQq3A1j*E2^rx@lFv}69{P)qsjPOQDVix>xcw>Ihd-@=@nToi|AkM3zc zT^E&jJ1fg6GPo_)rT+NG)dA~bM8~*7w*RU_Zq$D=p$^8OK2xWoFmuDWgkgGE7C6d)vrjZU z?kT>7tTEHb>NUBYkY+&Gn74^ql-RFQiy)w*w>5m15#FG%}M&T3F@qbvW?&tMO}j6`}f;mPpjnPfT)Jt{40-`wcO=Ss>$J z+la=nfZ$+E8B`*4(L@Xzh(Zm%Q?b_%F_E~B=`DMT8I)463XIWheQ@^$nL`%8oh0}D zMs}+e*R5+NZN*3ZBEMY9TCjh2lV+&e_7P`VYYXL`)mmoJT?1M}@ya9Lf=6}ASzA^@ zccf9Yxz7G<9Zi2a+V#w_(X0Bi@Xo>C{C?)y-t${x<(VWrg0o|$gUXl=d+_$rIn9^q z1xQOiQc^WcLJ?a;8C^hIIC7>*amS0~WRpb&wQ_YE>hpg2wLRtlHbI6I+|*P?@{2z- zA1H1AZQR^(*bcS3!p7e&R6n6exl8SxCI_Vj?lg>Q8wV3RyC#?xusw=|=Lf^mIL3=1 z0YC>r3`67)vsqUWB*tqwOYwlDfzE|MHW6rsv3MBhhXUvjF$9H3rV(Jp!H9SZp2IF0 zy1I07Ni$bTqrZN&p!(NAaWsD-;eA03HKVE-z?SWlzYV_4OJbl zGF47%9;PK}+LBg2#d^l?H~frC%l|ggGG6GQx%Z{(Qd}O*$37^2le{YtekC}K0MzC zW^C{p5@hKc-#<@!ijkD~7|qL7qKGQ@xq#}w7Mmw=XPp%S)H~ zU9LLb4J#^Z^Neeq)tPQ>U@qIrj2OosF|~D8MJ;{Fe0?zCyKvk~=J2JHkfBINOL&Ob`j05JiLt$Wn{iR3O-OGx1{cxF;5= zc?QWt8G%u-EOU&dndEd#FJK}nU8L4KFh8o`)ri?E&Qf+#Jdjmm2@)o*>!!|wR&2mD zux^Fs`p_#r1a6Mq=b@eewCa%vm$?5z`8@lpAOF%xN1qBc35oI5h6rA+-rAt|_V~}t zDmR0;a9dWXmC_7;jrfN%tqX^K+WaH0{1B|8G9OMEy}Y?NqoDMBDtLL>X;H6%!htH9 ziQ(I41;Ez z3JjLC*Q2gSISLfD&3}lx8l{*(iWyrAuAGQ%{FvZ1qv$gcI4ip}=w%tTx5+!{*izBj z$+)vRVZLrrrH%rBxrWQACmT3<8zs@NK6%0iv%t)D0kG0LF&_x~SXt;hl+Z_YpO>CO zTrJQMpM2G{lP_T`Jp1wCH+?UVe8fnN+Y!^e%J2vRz9*I?wS&se$8o<4gryPCs}&SRikFXS7IChKPH ztq+&yhW0OdE^^*_5NRQz`rh?U(9Q=!G9@kc=5k5;xRL$jj_7I#jTrO=ES#L-COM9v z6>-iO7(CzoVR2!>5k{Ge%*@iZDGDMW3F`ZqGq0g4fGFH7f85{z8?=JDiVtp20u2Ci zrK_vkpD(*}y9h_bT4|39Kk}M_D)kH(yTP=51Z(r(tOE2y+r!oUC2jcjFEClx`ak(J z^?Q~@*W_Sjdb0F@)|nY|kqOV+bCR^bWKUXb#_^aNmb+(JNu8#1veUNjUbQoPet?E% zbgX?%F!A?O$^?_iS;n9XUe<>5Eh&nL3z+%Ch2fci%)Y$~FG7|DJ`+~81HKnA{1@D| zE<;Dq(!dAsm_(8sH1_*3&|@+=;Dy1K^F@7-rW^u?y9fUdUB@SxvCI1&wP>9=vsWng zxxtC2BNu}_vcFdvRoF16!rbAyODHG5YJFU+ABwDs&3|j_YeSn)(c!T;RMdqX(*C?Y z8{Z(8TzB_G{29sa{$u)zFB2Xp?(mQ~pYgM=I^=b*NM6XX!%t1`wXst!*|iV$&|7-# ze)n&lY0LJIt4(Jn&!=?AP^?~lbFUI9mA*T4>Nv&3<7ene(zpuHVzI? zxB-`@F_0buT!?w5CaWJY;-F>-t_Zn#eLcM~5a{yoUY+kNq{`{B$afSH7T$+wZ!~$v zt9RhWVrzKrDsq^IAu}`cxRST5k`iIqghK@|B3=`w&Fgm^3INYIWA_jlou~e>=Amn^#$OmV?K`n~ zW%ir#Oz+0xTTO>v8wafq_CI7-mi!v*C5fn;@M?I?*S z?i;S*I|Qn{!Mv2r_b*3QA|o?x@;|u0CNf8tBzuqC>%(bCoQR-oRnj}&gwM~EPV%D7 zCI%Xr7rU@S!C-|!xj^`0Fw=l%$Dc2t4Wpxm%Z@l81J+C=PHxLlH}a~A))NGxmkTd*3%dn{V#V{#kI|+QwHtYbM2C zrIu1gn`IGxaahqon?d#0%k-8nUEika18y|W_|_fva&2loD{Kdu53~U#bN3ou98obD zcfLi0eDOqVa&jwRfq~6@OzXfHDeH)W=J?)9r{_kVh=MG+FhqoYe;=$YU*k#I5vo^j zi;5YR91#5Zm)@JXy*mp~MhSm{BWLrWi$tKjZ^m7i;GhcIKFp()E8OsEYrvnKao*$zl9uMT$-6?C@vC=|qL_gn}{2@_(~m z7m`h$DmJgKm|9Ksr+2!tzurnC+L+!OV#Rq$_}HQEL6^4d5C3cnE>A*T zXlQ2kJ=iwesHEY}$Aw)ZF6UQo#PvKJzcBw;|8n4*Q|D%R=-1he!_twZ@n2`mulG5m z9*~X+x|Q>}$USW9?Tc@o-WJr7x-vBANH575qkNi9^Isa-CBaG!ohg$*#>%d}(;81# zFF3;Tjsbp1?H~pq;Q=88#wae~>pok=jku~BT2EkZH!9M? zGmrX8A8Z6B%_~#h&|+ynOz%~C^+`m+1Dn>^rav!}Q~K50s56!nD{d!;n;!mth{Zvp zXz45&LFZsS) zh@!pcJ&;y-`1*&Ea+UOx2VPp_&2;4eFeh?W7Uj4y4f;kDxo9QTZpJZ4s-F6_$kC8j zDADbL_doKeC5UG}l3Xj>2u+FQFOHA9bdOPHCN??WEv!rv5i{oL+#w+1T3N{7U^L21 z^~5i>wn@c>GLxM8)8Ys}KAG>=H?>b(oGG;CWTy6~XvZFsN`9Szd$sf)8vCPX zin_Bes4&HOZXx$~EQ%knaI`+Rud1{{^!~3^js~~a`}YOx-*w~NkFlF-st@n+U?ySZ zv-9Pl3NZ|p7xp(zQ#c=sGd}AR#riDkz(*^`6M=c1jqUn$QbJV2Kgee5TzsOfCdQhK z!lwUjoE0u#XmZ&W@Z!wIeaV0{YeVDOA-OOa5`8;@ic_})`T z6}NRXsR{_N{VRJDeC`87SkJM&?XzWJo$6wW3iDp3SNwnTw@J~rbjZ9Kqr7*}I$7$e zL7SSCaS?sI`NxxH^zw|goguZc7BemiAtl1qV-xRYhpxUU_1K*MJz&$jHmcpA#iB;@ zqtR-A7T2}evc=6J#-7I}0p7GFyRIk)5BmrIl?p7_LSL@>D~-P*n6VpS{_x&@8y)Q$ z4n(&IY&Z+SAbtKEh^!lV`pBJ#*+z{C++@EZ_m4)Jy{b^xQp5ugr2PT6dO7gJIL#axmWOQ zoi4T@Qh~tdpiSNytJ{-0M{KP2_Y_UWdBwMfhmMS(vtc;$h@sfxI1qGnKe0+XSXf53 zOR5py{_3iRs?%mu{*PDf2Psz}Yd+Zm5h^3OBJPH554N}5&{QBLUJ z_-W-kufFWg`1ke|zpgVb6#u8RFAs;Rf8*9;4WaC^wh$6Ylr<8PohZAqQ^-E{U9wh` zJqp=rY=vwkOA>=A!q_viuQRsyK0UwpdY}JaS66?y&WxFJzUO@J`*VMm6940HC7>u*Ra86z-4-nTx-c*#11nK5^TFbH@7In%bq1XXi2n0D zfd2+Ze22jgoadrx@QZ-Ww6Vs|3JWM(iNbA=kyBDlVNEg z2SSnNN&h|oh9*cX+d^rrcmUA@d;=`z(Ka?V&?OS`srk-yNJN%@tht6Gp5(?8vSKmw z%An(hlq(>+K~O1j1>uA;GBGKGngKYVZ4l@X)uw1_%86?H*grVDxp)@<)AhyL@m!sA zNGpO|dMKR$f4c;Kj+&YpT#76F)Ru^UDN^8QnkRr!L5U+|Y#<0Ho2P@VPS^s{*3YKe zWgWqRI(KhYswt_9^@KIYloGdcM2piC-ghURhmQuJ-bZ#5Rl|Dd6gbyRN!r9d&L~ zJ5xM|9WeKM99!bgs$D;d7<1tRvi*)yi?G^rteM}h=?3E;gdt91SbST^OfB)f?v@mT zTbo>x&_jCHN`?=bkK_)qMhw_qW=nIEX_Nu6axp4EKz97u#q=J8uFK3EG5T;0zEg6j z#*JX)go3Rr*lFhK6@qYAIm}Od5I&V9R9l=^ABBU^9&%!T3o)L7*n)S^t*8?u@&p*! z*>A#hj|4iRFZU`XiY{^inH{FOAWBu!o~8I-`KU=}Y>R&1mEohLmgo?^&DdfcVmGU_ zOojbrLq}=);SaS~lmFnl&9Jj1C;*U9M!0*E)j#)0je|Ro0kpQVFcc$M!oh77PqyeJaI6L3>n1EEC@~OgFHr3m z$V?CYSbO;A_~kSEn?O3iS_O$c`g1E@4|q8+Z0xj=(l3eyXBL4| z4-|9>-%)9CC@>^q^@^@h@r4_0S>JnY>iyRFSmm*XVDo(93prztUsqwa z0*J=yoh%rj^h@k9gQEr@+n+vt@@Z(;*w_$ad?2andpUV93E6d8uzz(?D7}Ak7 zUTcq(7DgE)9maua0*h9b?0laS7ohCwdGFMF3$J$lZ=ZwbQSwIoIh&uMv*&a2=9q+= zh}iGn;FB1aW%+@ZiRTkZCTsbPr(wwn=N$co#m^^nRLK79QljeP_Y;qp!`(ApIPdFo zp6o^^3sM%Gw7!tvVlri7*O@(T_#lxmAItswG*V{N1qvwn_$96?W&hcjc$O&-#RWsI z8D;8fZ!=EtySo@!WLP0B3(+Xs>(h0y87YP_R*#QmRdewzbE1mGZz$H(Jl|)zN84D^{G`A;^C(l7<}=vM%U;46KluNB;gllgMO}QSsk(P&DStQvY{FsWD$VaCUhY$T z8auM;ZnY}O=2NgRFx!}YS#TFNf7q8uuK^24ff&&zR)G%hY~;?rKc8~eMlSDEID-hAb!cu;Bl#nz$JP9=A*;x(rMEj}Q|v~k z$;MR?_m0Q-`QF1b$-J_h*4(;2qg@+S7bcu_d43l4T)SHpbHPNxg>^wsM~4Jz1=lzS zf0ZA7H%6@6utr9>*~p-;lVW-)OV>QFsNr=&HAbFgvMLb?WxqH2&LtaTW4~!mcucz9 z5qn`b>5-;uY80U5jKpFk&yde-K0YTPe!ko+Pzv}uUw~8ZeEs!*oZRP@_Dl3wi$83B7l zq>z5o0I90ZHB^Y~(y+L(M%A{Gfrn?g@11ddLz9S}lwacfs*2l_AUo8noJ5}a)#hsK zw?lcIVLwqOY(Yk4+c%H8P43}wy_srvR=!2kh4b3ZOv(|pO4{usM#J+GP-I`X%9*ou zgRB~UD3PGnR*wtx^?m=P+i`KtIOeQH+}YY0=|PsLB&x#$Q}K-JBR!FlpJs1&V~-CM zjNPztn6uo=9TM~#=`y4ie_)dbzRyoYj2_s4wK9-@G@uTXOpj}ARf65W;-_>5X7AjyM6W@zNE9)-_B!!jm5Y&1dD4E3Y& zqYuA0O9B?qageR$nzKS}r_FVJ!5-ypUT7c=eGv5FFr&o*(2P)}kU#=g+%+WB2?{ib ze4BdP-_0G0y9J4X;xbpBy#_Pr9 zYYIPN$_kh@?PRo`J*6q{G`oFccZ>LpLE+V!6Q7x7|2eiH9$Ps|zj#U6QX|UL$g&P^ zVav(4PKUcimTEzFHpQ7(+P3(Wu_w2;!Y-$3G@&W8ZHZ70|ELsAZ3tC@(+u!NL+Gij zozMFv#`kko55}opB!)}dy5gdY&x_JesLqP+rK5^dji zY7CS$j-;B`yY!0(kuVS7u|UQ)BF?0Xdab!-Ev+r}dij1C=QWv;)uzw!^6jm8$p=?% z37?`3-^(>H=Ionbi*;Qg`*Ve=Q(!{x$e!~FS=nQu_04F7rlB#(Gk?ETNk^N$sT^B6 z*N}6#w|vNiTgCM8=%pi~a&#lCs0$tENa{x)W9Emac(TQQjiy(QEWXK>>5Z4$o$nI~ z9hmg<4g9U*#b5B$SoW1}+yM-4sKEDerYjj-bl&y*&CJXoK_t&pQV_Q~AenW6AAd2Y zhl`pocw2!iG8sJT#K7x_j$5_^l!^cmA^@i*IeY!xkc*nP2scG)*3~)B;u!4&T%E7t zNhmYhjnCck$fV7w2rD&+AY@QX9ldN;z@b}%vvfT?*!P`?U$V(X<`owY=~}O3MQ$*DIuB`_x(H6p|-tPvQtO!csD>(##-5 z_gYf;`Xap+y;RTTU%g2gpCKF9lr362DjvObVECN+EVbQKWDnv>1m6Y*Vdo?U1x~)WM3n$Y|uZ~?bkI@jmVsGHx!dt`QyEV@2pgFrY`ROs@;e+J+ zZr}%Lf}#I_77XHXIGT1oiz41Rpt~)REFbPi31tHa`4kegA&(D{r2yQ8M7eSIAhYp? zl~x+WHC*GRSO}PH1M7Eobve6W2whW^)m4y(e-pZj|LFMbY;XQ%3@;{;d46zob9+QC z8N_*ntO}~A9G-*^D*s)?>+rCD9A}))MW);i)l|FV!p4x|`=ec^H4m zI>R*~DN}GuBo6oCT-~ z(D?9crcED&r1i{7Ui8n`QG7wJG7#cLJ>=P{i|1OOo8Ke~dD@GoLXUX)Be((+^;lV0 z-T@)dcpdP))jRUc%jp{VLTxq7%h+o3&CV}hz7(`eJ1n8fd)Hv*_z|XW>b`@>QmRtU z{54E3f5505*|KmLs!+bFVO&lp?pYc=NTGgqBknDSy$1)@;yPn~V$nmFCU<-7Q+xYB zoqK&$@%4PXO7V@?Zp^>ymXt|~2fGqvYNYA}5C>VHV6ZC$$^rs_JhiL07@%j5{Cv*} z*cwQtI7H5R6C*dQ@%V@zi(YUe{gPux|NO;|5?2orP+afQr5rhDx*Rq0vfnAC$6mtF z;Z;CDz(tNYn6^SIn7mz-uA770<&GT}p)IPeES zyNcvMA{=@Jg(l;K5Lost0Vz7bGX>r4F`@FZ`$7P!?d|y^F-o9hN2HygL-nL*M6Iu~ z-G2KF_a*M_hhf3JU-av`c}61RAm|&VBnWRTjizsGcx;QQe|8fKmJc8raHJIJm>6r% zkR~Q2O>pb|6CLwtwCuEu%*cI01_TB7`+<-Vg2o+R)KvJ!+}#u?!QEceY_06cXJdm=@_p~*wZ zN7JQ)=VA&RI@*16nOckls6Z{Y=+$OYdf>GoM15c*IFB{3Kl$7WtHfvWu>f#@Ab(huw)A#{!%0Q z7a{>n=Kf3?hS(VY9nBsGY``-9bL>gFVv92W%vj@NQHKkJ8FY%p!%B*`B_*+d%BUo8 zYeG<|-<>}yV2Wl1&swB9091mXd@v^GBaB~>S_^yx!^)nmvV7q4`k*C+s}k%utYh5L z$TPZ7&^CbsiuD}iqE3TuqoAT95o_+((^#+zb{^~Xo-atWdw$QUW`?%LsjI-I%sVE~&BLiys1D1~?Mm-l}lU=bZPWt=a;3q=U zJM#|Hl;G#MvKaNDatmhw76PN$>CBBuFR6GwP&neNvmzhK2#C`op@9$c~H&Zz1 zs1nZ!u5z>pbsSt0TP!AH)(qw5T(L9XrsaFYT?`VWVgzOI`io@GTb{)JMh(bbju%wD zHK9<>C2`DmC|L3>(J8IO$iNiUU0r)uM+f&YTLVXGyGM~;q_JtSDy=iM_PD+NV_*Pg z_vu#Prn{GjiO#^EaYYxm{SOZn*gDL#nfw|WAJ~tW>ido0PfY}|SeA!O>;`Wt*JXSAN3d<4;Cc|dtTXPgVJ5A;&lyuPkf`u<}z5vNp0XQ3= zVtpN*Yw(>AgZX)nceXto+d4nv2t&29#e?dQ5Cq{>C!V; zY=OkiOWQZg*)BLOP#a1*Z-wp6WWM=)ytUioN8y3U7SVinvSd3e(2TNYeSMt((jpMu zr~63;!_WZwOUK6gJdI6JfE%VFnC!t>2}}zNWKzxUgJ=FdF}9+N>~hRJ{&vdedlL|k z1!DV;H@cjLiOJofWLPs!Ql3QAibtlT!E&@-iimxaXTMDD*4hWF~06>AWY6) zZs8EoA25beQ;SyZy37&xrl8=pfuTI+X5oha-7y1mKgUm-bj&jczGQS_*y2h|WJhUe zqoVa4^ZEvN>wp^(QU@?&tPz-66do1G&9F&e4qiW@CF@QqO3qPt>+wIAE#GcrF{Y~` zoi~0My>=(jVO7QSaS~?dX8j`b1@>=89&MSIHg)gR)c?V6HT0Ls@eo2$=#$!9TP(90 zmvN_0zWt29?$?1h$hB*f6@COb4yV*-;6l!bS#3+S`|{JGO| z&`esfx4wmusIBKkpLRJO6&Ul(q97{oh2XigSBWtUx$FR?ka0R2EetG$el^B0e0$s8 zRXd0YEt3yt=*gF(qZP72Q~wKpg)`es`OVYHtCKhG1$-}hZXku5B0KLzX?IKWC8w4F zH9N}*rK;He#Ib45$Ik%|BFq4;nr?@LR^x^7#^puyR8+kEw)X*I24@PEMlEHkz7Wkj z{EGR;JgClr(+LB=7F@4n!b25c(ujzNYFl?;8Gx_8SgHmLrvdGy>Vs9^>h5~6)H6j^ zmL(J~g$)7J0PC^M>>iT*{P`=r&iP`c=vgRyihjl44gDJT|IpB(SG@Y!H+h8nA@YnX zPUUpdKYYsQu5PD8%(O@JlZ#w*s*NadW(P3OpnY+aFD-M>@xk`O4_QUq<}+;dB&c!f z1HM;!VU=v}=-MKsco)AoIaKGkE_b`Gn|-gQwD)f@peC?aEXw`Z&mv>zQ?7s0XD@aO zp!w`Zx<;3mzs~cLJ|eKNePcS z$hUKUq@hC9R{}LV5X3??rij55Y6?_>GQ5}A%S=Oc6~ab%C=M-O63;idU+(zf?8^5! zS@HqT^qXsk7sb5fmFYs0=q0aqNK^?hLQ=4?2E zog2u=ce1GSm5n_d9K;RmbWSn_tLL2p<5Q?17?_yCbJL0mnOXwCMT2e&_}OP+PN1Al zBOY>`L4h&W$Z~z;_P9j_#lyqT)rWCLyz`fKECZj#4BAWFInM%C7?D3s*MApi6@cGv zcVRbN^Vv`hOS1E0)6zSKGs1~?6UH8YqgV1%{B2q1QKkDi!tH?r({Xigx1NO) zKg;IGVEHQSx(AF55+#;fqU!u`^W|pPrV>B)kG_pdz1G~}A}%f6Ze@Jvw=J6&E|lu@ zur*%)n5Psi=}Dlj zX8KuyHl-V*;Ttv#PMy)1_4eC1VU3q~Ao$hicnSYbFD7xrs>k8Q9*N;;&T%@2o392H zn`A7fNpVy3>Y|7*R1S*#Cy<0ocp&7=t+>$l8*##aOMm6~iN*>X?>-7hl+PfH| zvM2@^JE+FT(;y)5>2QYJMTcS6yFMigbjhWBvW7KT3`$iCyo^k@mrZ!#nBP83!TLpt zup-l1Sj^<_#_7G9}B< F{{zd+Aq)Tj literal 44087 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 VEPB;)`~$v^`Dm~Hx<&U;{|6_2vxEQu diff --git a/plugins/channeltx/modnfm/CMakeLists.txt b/plugins/channeltx/modnfm/CMakeLists.txt index a0907f12e..0c4901273 100644 --- a/plugins/channeltx/modnfm/CMakeLists.txt +++ b/plugins/channeltx/modnfm/CMakeLists.txt @@ -3,6 +3,7 @@ project(modnfm) set(modnfm_SOURCES nfmmod.cpp nfmmodbaseband.cpp + nfmmoddcs.cpp nfmmodsource.cpp nfmmodplugin.cpp nfmmodsettings.cpp @@ -12,6 +13,7 @@ set(modnfm_SOURCES set(modnfm_HEADERS nfmmod.h nfmmodbaseband.h + nfmmoddcs.h nfmmodsource.h nfmmodplugin.h nfmmodsettings.h diff --git a/plugins/channeltx/modnfm/nfmmod.cpp b/plugins/channeltx/modnfm/nfmmod.cpp index 4d362b6d0..510602c80 100644 --- a/plugins/channeltx/modnfm/nfmmod.cpp +++ b/plugins/channeltx/modnfm/nfmmod.cpp @@ -260,6 +260,9 @@ void NFMMod::applySettings(const NFMModSettings& settings, bool force) << " m_toneFrequency: " << settings.m_toneFrequency << " m_ctcssIndex: " << settings.m_ctcssIndex << " m_ctcssOn: " << settings.m_ctcssOn + << " m_dcsOn: " << settings.m_dcsOn + << " m_dcsCode: " << settings.m_dcsCode + << " m_dcsPositive: " << settings.m_dcsPositive << " m_channelMute: " << settings.m_channelMute << " m_playLoop: " << settings.m_playLoop << " m_modAFInput " << settings.m_modAFInput diff --git a/plugins/channeltx/modnfm/nfmmoddcs.cpp b/plugins/channeltx/modnfm/nfmmoddcs.cpp new file mode 100644 index 000000000..e54037063 --- /dev/null +++ b/plugins/channeltx/modnfm/nfmmoddcs.cpp @@ -0,0 +1,97 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2021 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 . // +// // +// Source: https://mmi-comm.tripod.com/dcs.html // +/////////////////////////////////////////////////////////////////////////////////// + +#include + +#include "nfmmoddcs.h" + +const float NFMModDCS::m_codeRate = 134.3; //!< bits per second + +NFMModDCS::NFMModDCS() +{ + reset(); +} + +NFMModDCS::~NFMModDCS() +{ +} + +void NFMModDCS::reset() +{ + m_step = 0; +} + +void NFMModDCS::setDCS(int code) +{ + unsigned int dcsCode = code < 0 ? 0 : code > 511 ? 511 : code; // trim invalid values + // Parity bits calculation: + unsigned int p[11]; + p[0] = std::bitset<32>(dcsCode & 0b10011111).count() % 2; // P0 = C0 + C1 + C2 + C3 + C4 + C7 (modulo two addition) + p[1] = (std::bitset<32>(dcsCode & 0b100111110).count()+1) % 2; // P1 = NOT ( C1 + C2 + C3 + C4 + C5 + C8 ) + p[2] = std::bitset<32>(dcsCode & 0b11100011).count() % 2; // P2 = C0 + C1 + C5 + C6 + C7 + p[3] = (std::bitset<32>(dcsCode & 0b111000110).count()+1) % 2; // P3 = NOT ( C1 + C2 + C6 + C7 + C8 ) + p[4] = (std::bitset<32>(dcsCode & 0b100010011).count()+1) % 2; // P4 = NOT ( C0 + C1 + C4 + C8 ) + p[5] = (std::bitset<32>(dcsCode & 0b10111001).count()+1) % 2; // P5 = NOT ( C0 + C3 + C4 + C5 + C7 ) + p[6] = std::bitset<32>(dcsCode & 0b111101101).count() % 2; // P6 = C0 + C2 + C3 + C5 + C6 + C7 + C8 + p[7] = std::bitset<32>(dcsCode & 0b111011010).count() % 2; // P7 = C1 + C3 + C4 + C6 + C7 + C8 + p[8] = std::bitset<32>(dcsCode & 0b110110100).count() % 2; // P8 = C2 + C4 + C5 + C7 + C8 + p[9] = (std::bitset<32>(dcsCode & 0b101101000).count()+1) % 2; // P9 = NOT ( C3 + C5 + C6 + C8 ) + p[10] = (std::bitset<32>(dcsCode & 0b1001111).count()+1) % 2; // P10 = NOT ( C0 + C1 + C2 + C3 + C6 ) + int dcsIndex = 0; + // code: + for (int i = 0; i < 9; i++, dcsIndex++) { + m_dcsWord[dcsIndex] = (dcsCode >> i) & 1; + } + // filler (0x04) + m_dcsWord[dcsIndex++] = 0; + m_dcsWord[dcsIndex++] = 0; + m_dcsWord[dcsIndex++] = 1; + // parity + for (int i = 0; i < 11; i++, dcsIndex++) { + m_dcsWord[dcsIndex] = p[i]; + } + + m_step = 0; +} + +void NFMModDCS::setPositive(bool positive) +{ + m_positive = positive; + m_step = 0; +} + +void NFMModDCS::setSampleRate(int sampleRate) +{ + m_bitPerStep = m_codeRate / sampleRate; + m_step = 0; +} + +int NFMModDCS::next() +{ + int dcsIndex = (int) m_step; + int carrier = (m_dcsWord[dcsIndex] == 1) ? (m_positive ? 1 : -1) : (m_positive ? -1 : 1); + + if (m_step + m_bitPerStep < 23) { + m_step += m_bitPerStep; + } else { + m_step = m_step + m_bitPerStep - 23; + } + + return carrier; +} diff --git a/plugins/channeltx/modnfm/nfmmoddcs.h b/plugins/channeltx/modnfm/nfmmoddcs.h new file mode 100644 index 000000000..10dae1346 --- /dev/null +++ b/plugins/channeltx/modnfm/nfmmoddcs.h @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2021 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 . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef PLUGINS_CHANNELTX_MODNFM_NFMMODDCS_H_ +#define PLUGINS_CHANNELTX_MODNFM_NFMMODDCS_H_ + +class NFMModDCS +{ +public: + NFMModDCS(); + ~NFMModDCS(); + + void reset(); + void setDCS(int code); + void setPositive(bool positive); + void setSampleRate(int sampleRate); + int next(); //!< +1/-1 sample + +private: + int m_shift; //!< current frequency shift: -1 or 1 + int m_dcsWord[23]; //!< current DCS word in transmit order including parity and filler 11 + 3 + 9 + float m_step; + bool m_positive; + float m_bitPerStep; + static const float m_codeRate; +}; + + +#endif // PLUGINS_CHANNELTX_MODNFM_NFMMODDCS_H_ diff --git a/plugins/channeltx/modnfm/nfmmodgui.cpp b/plugins/channeltx/modnfm/nfmmodgui.cpp index 6b22a2589..d17da4c02 100644 --- a/plugins/channeltx/modnfm/nfmmodgui.cpp +++ b/plugins/channeltx/modnfm/nfmmodgui.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "device/deviceuiset.h" #include "plugin/pluginapi.h" @@ -299,10 +300,35 @@ void NFMModGUI::on_ctcss_currentIndexChanged(int index) void NFMModGUI::on_ctcssOn_toggled(bool checked) { + ui->dcsOn->setEnabled(!checked); m_settings.m_ctcssOn = checked; applySettings(); } +void NFMModGUI::on_dcsOn_toggled(bool checked) +{ + ui->ctcssOn->setEnabled(!checked); + m_settings.m_dcsOn = checked; + applySettings(); +} + +void NFMModGUI::on_dcsCode_editingFinished() +{ + bool ok; + int dcsCode = ui->dcsCode->text().toInt(&ok, 8); + + if (ok) + { + m_settings.m_dcsCode = dcsCode; + applySettings(); + } +} + +void NFMModGUI::on_dcsPositive_toggled(bool checked) +{ + m_settings.m_dcsPositive = checked; + applySettings(); +} void NFMModGUI::configureFileName() { @@ -375,7 +401,8 @@ NFMModGUI::NFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam m_audioSampleRate(-1), m_feedbackAudioSampleRate(-1), m_tickCount(0), - m_enableNavTime(false) + m_enableNavTime(false), + m_dcsCodeValidator(QRegExp("[0-7]{1,3}")) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose, true); @@ -431,6 +458,7 @@ NFMModGUI::NFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam ui->ctcss->addItem(QString("%1").arg((double) NFMModSettings::getCTCSSFreq(i), 0, 'f', 1)); } + ui->dcsCode->setValidator(&m_dcsCodeValidator); ui->cwKeyerGUI->setCWKeyer(m_nfmMod->getCWKeyer()); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); @@ -500,6 +528,11 @@ void NFMModGUI::displaySettings() ui->ctcssOn->setChecked(m_settings.m_ctcssOn); ui->ctcss->setCurrentIndex(m_settings.m_ctcssIndex); + ui->dcsOn->setChecked(m_settings.m_dcsOn); + ui->dcsOn->setEnabled(!m_settings.m_ctcssOn); + ui->dcsCode->setText(tr("%1").arg(m_settings.m_dcsCode, 3, 8, QLatin1Char('0'))); + ui->dcsPositive->setChecked(m_settings.m_dcsPositive); + ui->channelMute->setChecked(m_settings.m_channelMute); ui->playLoop->setChecked(m_settings.m_playLoop); diff --git a/plugins/channeltx/modnfm/nfmmodgui.h b/plugins/channeltx/modnfm/nfmmodgui.h index ae4afd841..0f89c78b6 100644 --- a/plugins/channeltx/modnfm/nfmmodgui.h +++ b/plugins/channeltx/modnfm/nfmmodgui.h @@ -18,6 +18,8 @@ #ifndef PLUGINS_CHANNELTX_MODNFM_NFMMODGUI_H_ #define PLUGINS_CHANNELTX_MODNFM_NFMMODGUI_H_ +#include + #include "channel/channelgui.h" #include "dsp/channelmarker.h" #include "util/movingaverage.h" @@ -70,6 +72,7 @@ private: bool m_enableNavTime; NFMModSettings::NFMModInputAF m_modAFInput; MessageQueue m_inputMessageQueue; + QRegExpValidator m_dcsCodeValidator; explicit NFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx, QWidget* parent = 0); virtual ~NFMModGUI(); @@ -107,6 +110,9 @@ private slots: void on_ctcss_currentIndexChanged(int index); void on_ctcssOn_toggled(bool checked); + void on_dcsOn_toggled(bool checked); + void on_dcsCode_editingFinished(); + void on_dcsPositive_toggled(bool checked); void on_feedbackEnable_toggled(bool checked); void on_feedbackVolume_valueChanged(int value); diff --git a/plugins/channeltx/modnfm/nfmmodgui.ui b/plugins/channeltx/modnfm/nfmmodgui.ui index e1f491573..495c90b56 100644 --- a/plugins/channeltx/modnfm/nfmmodgui.ui +++ b/plugins/channeltx/modnfm/nfmmodgui.ui @@ -673,6 +673,67 @@ + + + + DCS + + + + + + + Activate DCS + + + + + + + + + + + 40 + 0 + + + + + 40 + 16777215 + + + + Qt::ClickFocus + + + false + + + DCS code (octal) + + + 023 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + DCS code is positive (1 corresponds to positive frequency shift) + + + Qt::RightToLeft + + + + + + + diff --git a/plugins/channeltx/modnfm/nfmmodsettings.cpp b/plugins/channeltx/modnfm/nfmmodsettings.cpp index b8b245899..886488d33 100644 --- a/plugins/channeltx/modnfm/nfmmodsettings.cpp +++ b/plugins/channeltx/modnfm/nfmmodsettings.cpp @@ -62,6 +62,9 @@ void NFMModSettings::resetToDefaults() m_playLoop = false; m_ctcssOn = false; m_ctcssIndex = 0; + m_dcsOn = false; + m_dcsCode = 0023; + m_dcsPositive = false; m_rgbColor = QColor(255, 0, 0).rgb(); m_title = "NFM Modulator"; m_modAFInput = NFMModInputAF::NFMModInputNone; @@ -113,6 +116,9 @@ QByteArray NFMModSettings::serialize() const s.writeReal(21, m_feedbackVolumeFactor); s.writeBool(22, m_feedbackAudioEnable); s.writeS32(23, m_streamIndex); + s.writeBool(24, m_dcsOn); + s.writeS32(25, m_dcsCode); + s.writeBool(26, m_dcsPositive); return s.final(); } @@ -186,6 +192,10 @@ bool NFMModSettings::deserialize(const QByteArray& data) d.readReal(21, &m_feedbackVolumeFactor, 1.0); d.readBool(22, &m_feedbackAudioEnable, false); d.readS32(23, &m_streamIndex, 0); + d.readBool(24, &m_dcsOn, false); + d.readS32(25, &tmp, 0023); + m_dcsCode = tmp < 0 ? 0 : tmp > 511 ? 511 : tmp; + d.readBool(26, &m_dcsPositive, false); return true; } diff --git a/plugins/channeltx/modnfm/nfmmodsettings.h b/plugins/channeltx/modnfm/nfmmodsettings.h index 2f55f9f16..01c81812f 100644 --- a/plugins/channeltx/modnfm/nfmmodsettings.h +++ b/plugins/channeltx/modnfm/nfmmodsettings.h @@ -51,6 +51,9 @@ struct NFMModSettings bool m_playLoop; bool m_ctcssOn; int m_ctcssIndex; + bool m_dcsOn; + int m_dcsCode; + bool m_dcsPositive; quint32 m_rgbColor; QString m_title; NFMModInputAF m_modAFInput; diff --git a/plugins/channeltx/modnfm/nfmmodsource.cpp b/plugins/channeltx/modnfm/nfmmodsource.cpp index ebe4eb9db..0ab99950f 100644 --- a/plugins/channeltx/modnfm/nfmmodsource.cpp +++ b/plugins/channeltx/modnfm/nfmmodsource.cpp @@ -152,6 +152,8 @@ void NFMModSource::modulateSample() if (m_settings.m_ctcssOn) { t1 = (0.85f * m_bandpass.filter(t) + 0.15f * 0.625f * m_ctcssNco.next()) * 1.2f; + } else if (m_settings.m_dcsOn) { + t1 = (0.9f * m_bandpass.filter(t) + 0.1f * 0.625f * m_dcsMod.next()) * 1.2f; } else { t1 = m_bandpass.filter(t) * 1.2f; } @@ -344,6 +346,7 @@ void NFMModSource::applyAudioSampleRate(int sampleRate) m_bandpass.create(301, sampleRate, 300.0, m_settings.m_afBandwidth); m_toneNco.setFreq(m_settings.m_toneFrequency, sampleRate); m_ctcssNco.setFreq(NFMModSettings::getCTCSSFreq(m_settings.m_ctcssIndex), sampleRate); + m_dcsMod.setSampleRate(sampleRate); m_cwKeyer.setSampleRate(sampleRate); m_cwKeyer.reset(); m_preemphasisFilter.configure(m_preemphasis*sampleRate); @@ -400,6 +403,14 @@ void NFMModSource::applySettings(const NFMModSettings& settings, bool force) m_ctcssNco.setFreq(NFMModSettings::getCTCSSFreq(settings.m_ctcssIndex), m_audioSampleRate); } + if ((settings.m_dcsCode != m_settings.m_dcsCode) || force) { + m_dcsMod.setDCS(settings.m_dcsCode); + } + + if ((settings.m_dcsPositive != m_settings.m_dcsPositive) || force) { + m_dcsMod.setPositive(settings.m_dcsPositive); + } + if ((settings.m_modAFInput != m_settings.m_modAFInput) || force) { if (settings.m_modAFInput == NFMModSettings::NFMModInputAudio) { diff --git a/plugins/channeltx/modnfm/nfmmodsource.h b/plugins/channeltx/modnfm/nfmmodsource.h index 73cf14e20..8f6a6a6c4 100644 --- a/plugins/channeltx/modnfm/nfmmodsource.h +++ b/plugins/channeltx/modnfm/nfmmodsource.h @@ -36,6 +36,7 @@ #include "audio/audiofifo.h" #include "nfmmodsettings.h" +#include "nfmmoddcs.h" class ChannelAPI; @@ -78,6 +79,7 @@ private: NCO m_carrierNco; NCOF m_toneNco; NCOF m_ctcssNco; + NFMModDCS m_dcsMod; float m_modPhasor; //!< baseband modulator phasor Complex m_modSample; diff --git a/plugins/channeltx/modnfm/readme.md b/plugins/channeltx/modnfm/readme.md index 3bf8009c6..3a317f1b5 100644 --- a/plugins/channeltx/modnfm/readme.md +++ b/plugins/channeltx/modnfm/readme.md @@ -248,3 +248,15 @@ This is the audio file play length in time units

23: Play file position slider

This slider can be used to randomly set the current position in the file when file play is in pause state (button 18.3) + +

24: DCS switch

+ +Checkbox to switch on the DCS (Digital Code Squelch) sub-audio modulation. + +

25: DCS code

+ +This is the DCS octal code (0..511 in decimal 0..777 in octal) + +

26: DCS positive modulation

+ +When checked the "1" bits are represented with positive shift frequency and "0" with negative shift. When unchecked (negative modulation) this is the opposite.