From 37690807d01b7816df13a8c0b158bfb34c444de6 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Mon, 11 Mar 2013 15:51:44 +0000 Subject: [PATCH] Implementing uploads to PSK Reporter. (Not yet finished.) git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3043 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- PSKReporter.h | 127 ++++++++++++++++++++++++++++++++++++++++ WSJT-X_Users_Guide.docx | Bin 215315 -> 215528 bytes lib/Makefile.MinGW | 5 +- libpskreporter.a | Bin 10738 -> 10782 bytes mainwindow.cpp | 85 +++++++++++++++++++++------ mainwindow.h | 3 +- wsjtx.iss | 2 +- 7 files changed, 200 insertions(+), 22 deletions(-) create mode 100644 PSKReporter.h diff --git a/PSKReporter.h b/PSKReporter.h new file mode 100644 index 000000000..a6c52c488 --- /dev/null +++ b/PSKReporter.h @@ -0,0 +1,127 @@ +#pragma once + +// Main header file for the external interface to the PSK Reporter API +// For documentation see http://psk.gladstonefamily.net/PSKReporterAPI.pdf + +/* + +Copyright (c) 2008 Philip Gladstone + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + */ + + +#ifdef _DLL_OPTION_PSKREPORTER_EXPORT +#define DllImportExport __declspec ( dllexport ) +#else +#define DllImportExport __declspec ( dllimport ) +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +#define REPORTER_SOURCE_MASK 0x07 +#define REPORTER_SOURCE_AUTOMATIC 0x01 +#define REPORTER_SOURCE_LOG 0x02 +#define REPORTER_SOURCE_MANUAL 0x03 +#define REPORTER_SOURCE_TENTATIVE 0x40 +#define REPORTER_SOURCE_TEST 0x80 + +typedef struct { + wchar_t hostname[256]; + wchar_t port[32]; + bool connected; + unsigned int callsigns_sent; + unsigned int callsigns_buffered; + unsigned int callsigns_discarded; + unsigned int last_send_time; + unsigned int next_send_time; + wchar_t last_callsign_queued[24]; + unsigned int bytes_sent; + unsigned int bytes_sent_total; + unsigned int packets_sent; + unsigned int packets_sent_total; +} REPORTER_STATISTICS; + + + + +unsigned long DllImportExport __cdecl ReporterInitialize( + const wchar_t *hostname, + const wchar_t *port +); + +unsigned long DllImportExport __cdecl ReporterSeenCallsign( + const wchar_t *remoteInformation, + const wchar_t *localInformation, + unsigned long flags +); + +unsigned long DllImportExport __cdecl ReporterTickle( +); + +unsigned long DllImportExport __cdecl ReporterGetInformation( + wchar_t *buffer, + unsigned long maxlen +); + +unsigned long DllImportExport __cdecl ReporterGetStatistics( + REPORTER_STATISTICS *buffer, + unsigned long maxlen +); + +unsigned long DllImportExport __cdecl ReporterUninitialize( +); + + +unsigned long DllImportExport __stdcall ReporterInitializeSTD( + const char *hostname, + const char *port +); + +unsigned long DllImportExport __stdcall ReporterSeenCallsignSTD( + const char *remoteInformation, + const char *localInformation, + unsigned long flags +); + +unsigned long DllImportExport __stdcall ReporterTickleSTD( +); + +unsigned long DllImportExport __stdcall ReporterGetInformationSTD( + char *buffer, + unsigned long maxlen +); + +unsigned long DllImportExport __stdcall ReporterGetStatisticsSTD( + REPORTER_STATISTICS *buffer, + unsigned long maxlen +); + +unsigned long DllImportExport __stdcall ReporterUninitializeSTD( +); + +#ifdef __cplusplus +} +#endif + + diff --git a/WSJT-X_Users_Guide.docx b/WSJT-X_Users_Guide.docx index 36eb7e3c45971700cd37264486c3ace025ad3f79..358b48c0a86ff45f7d135042cf5893f68c9ce093 100644 GIT binary patch delta 12576 zcmY*=V^k#$@OE{xZFjS6>t=4YZDVgXZ``n(H*BsATWz*&+ji~yJOB5b7xQ60%`=|{ z&zzY_gPnacriz~{z>u6rP#uNW!+)HyH(IQU|lncU??n}zOk`cIjHK1bdmK|kZt z^|WuO^;zpTOvZoH#<6@C@}8{ltlj$f+?%&}iaN?o`fyOIT6oGfPtL2i-|AX@y9uZR zHx0c@fLn&z50(e3IuZJ|-h!W8{~h`^rqy#J|BNEzKsA4(=k~pKaK(nb9O(%a&mq*> zs8yLrJ$jy0Q6~|c0~{R=k`f_s50OytoEqeVJw$D-p2aqomM#J}w&J65*^&=iqY`~L z1U9uX-gEXg$d$dX*u0)N+p7=`r<=yNp)Hp%zMs{$d=o|a$nrZno5|ED3_|S6 znh7=bO$d4|juR-3YsYNpG5Pk!bORq=%?g?k5<8z~zquDj>qz`1CFeIdGI$?@Gj?b) zNSvgi81KA(*3<0?x86Pp+z4p)H8*dr1t%u=Y(jrL-!Xie!xCBh?N-u%zlTpEdv29{ zlBdHjI{GHmYUjgsvhwxz4KW5w{8lph-SnT9h*u+3)PwkgJrBBk5NiT^ic=$M`wf&Q zJ=8USPFQrVfDjv{Pl=!oV0J}e`s3tu?d(Gwdpa~5rqCB%Ak^5E{I`%rJ~M#N8B9ap zRh29eTVwkidKAR>bnRSY3&(u>9o<&z%a%2k zWz!6bK%UGakz2zb0|-->UK9%f&MO>=BHST4TP75L$6>!Nr57EUH!qYwflr5wYMeA| zLP8ews#&m|EeFdcm(48u_+6bX$5FR<<))>p5u(u2BD;DdMtb_qt`N3II0N~IrGtW} zg+!c1XukSD<_8a|Blp)a%kLc%^b%fh$SSFFPagp!JB?ytrDm_8f?-0g@Hk1qOYYK2 zPtOk4r-?v>X6cLP<8yyFaGcKe+F2hT{jqDUp*ex!yc!}UXSc`_CLsANY;M*6y;mvGZt7<4~q&z?G9FMdqHjoAwyPim~sk+i~OCbusxvjjMEo#o@VUOxAzml+x;H#u|u)F~7WCrI3A3HUx3u1KkzBu_DgFPFycmr?lbFd$L^ z6-ci0r%8ye7j0*{RlnTT#86!at>U;62*CN)TS!f*Oj^TgoJAnIrcf!*|b;NMlcOTM8 z6tc^#xM*B%$Vp=p3VQyEKUCUZpCiPu9}z6bweENBT((8R(jatuZNj;8vqa2Y)#Kj_b@}#pT#c^Y}UOGs_?G$_qWPv!}6B2VCG=j?}qeUnfkNeMW82 zC~a!NG?g9#Gzs{bU)(rHX4d(}XNI$3E8SODf6@KjDm2`+OGT1rdq6e`@gjbsO?BXewp3 zK=i3#a8Io^+9vokyop3^)cT4EsAIW=$K4bg!LD5F2mkphP=YA8N?-FGXFVh1hX%Z> zq}aJ5W0+CSe)UhazX{%2Qy%(5wFyp!nNy1A>xo?#N|1FEe#B0$sr6b^ zGI%t%*RdeZObB5J+6_PZkF2s6X2oy01v{*on?1KNYh3Y?oZ&x7gDsD>itBbvGMD+2M*wboK1jvfpAH(joJ8#bo^j<(O5wLH4|GG5{sr*R`T z+NSHo>PMm*k3Z>7Y1M5dwzgv)6Wj&D%3=xIaW+-gIkt2Dipw$~k?Swd;qr1_q}m=M z4(v~SDBVEms*k_HV-HiwsYgqhyFGIUjeR5f+6^vXJ=*Cg8aL$RqdZixbbnhld7`z( zFh`l%D5{#2749Z!GX+F@DAH7xidBJO(AGA7(MSo9cQpr--pH!fe#ln?;ioaD0k^DHEky?n9@EBm0YtcGp1o=?q zM}iUHWr!;IZ4wP~i&UoU*uOOXwonaT;@(!EbG2qE4v!@bRcITk!vEYgY?RY5kE8R4 zKd>VlCNqYtD5;hhZJkY)5&hBE+OLWFx&u(+dYm-VH8cYq9NY{e(D%PyNBFL7!=rMo z4T^|odRXIB@_49U*{Gj#2d4D**;c_h6Tvab+ znfXPnQVEgfG$@QH>-;bgM&c#f_9L~+HoCc7z%c1}{w*9#F{JKj3q`%%)5Z*6FcUd4U#PKih``xgjQ!MQ zmH-*3y#Cz-dWGlo7~RA}iVDK`535y5n}4*Uk%?GRI;4Fvo1CGVFvR9BgZ0A}WpEs6 zz0qCjDgggR$F?HSnYU_kj^`q~5_+5EBk#qrvbHk(Mhi9>onFH^xT?Q{nyZH=)zGeJ z2(c~|MP{eJ-4aJm8Q&{!9iJ#eG7A^^F^uCPx~0WUL|Q#T))H@4=an8zEj8(Uq=5*@ zq3asS|CyKU)0VKn*1?Q}>`tk~>H6DIDhtI(t(Vd*dfe6ujBVVD2|dXs5{)gg4263^ zU|HwaP<1AcJ!oMM)+*uoVvVA$g*ufLD=5c+fFD-(O^LRUQkpqbB8lfGYUfAbew@}d zOZ;G_34{}UD>$}K38Q5C7`gD^RP#mGsv8*r6qA3JM@*Gkzb{Ep&*A~^dE+ElZsy)W zoX(vDhLHd8)*)D0I`5UNa6D~}*;#Uc#31$4?I4R(R)8`udSCrXP!dwd#D?0EQD!fL-b|~*xK|)4%2u=_ z`C|Owq*+jHy|RRLj7cPdB1|vsG3dmJ25q{B))S-|H6f* z*R7E;r+k)zTMfv6EG$1tT*#TCXaC5ji5P?^yjB3lFA~Dt>L^@{@an%9>0qr#C7!pt zGJ#8aBQmq;;|TF(=X0uHz(UvU6_}ZjX@RM`0+5`APTtR$N~L+|Y@?-1tR&c1T?^#WR1^Ftm^JAvbr4$n5e`Pq2vh^k-&3f4k^UwY`=mQ9*U*`S zw%&*{{Z!RklSoCt$6Ne@bEd=dHPSfhfd=L`*ouIE%|HL7>Ct_XQj4?iv$0ki*J>rH zon!B>4kyaPiTD$WIq@f}9;G&qHQ+SLV~m5N8Es+`r*-4Vk@jTSN4II~`2Gacd2WDY zrEPEI$xX0Rj}nGVf$L&zPWWiFIPMnj3E!TiF;-C9oH7Z408k_=WA*52oyv@U0%VdR zx-V$TaHrj8#BH}7ibrv2mcmMulB!+lRs_yJf}L=MU|#V%l`~Oj>^#fZRYmO6=o#3Q z#io|5YThwR<-T9(4#0I88`-qH zEb*Kzi5w{2Mkb^YSm8)lL}r_@F-b9-)3g)= z0GT2jdVy4v;wC&zcBSXa15>|WqU|!cn&~lNHNNU2HuSh-fz3;?Yl`v-b%@|L{+x99 z)Kiz9+5rRhP!;zrydKx3+@qKc`64^-YYJ$_2u>A7;vOH&Y&RFp3iyG$!5y;QarlG- zm|PK8xL)yAc!aA|ODchUZ~*^58I`w@5I42yHOyQllHj1`B{3nVmZTYjpa_}FNB6yB zLQ_QQ^~j=o4L7z++4!%hDjVRBC&HW!$02VK?vmPF8z8o^UxE+?Ok>g2P9)=Mer(j{ z<;ZcL=+fHw3{($cxQ?oLD8^F0jP9mjvG9*&*rU{AC3#|83S%ntgt~k&3-uPcM9{Ve^IP12}GQgLR;1udsjeW;=7m@{Qmtc4d}SLgMlm z9h5Of9mm6eq(Q&h1Vmwvi;g!!6=F{^i2!Ts3ffHD|aa|AbDWj&&oWoxo0nJw64 zMOqI(Hq~Ee&(P|KhApxAdto42GU_d?TmO%}bl21?6_t3E6jiTn(uU%GK{R%Mcwei& zRZHstydorHwKv)(Q$i5H29E zK7R}yQ>Q`p>dp^ci=>n*_R2LzUuK2->z}C}6QLT9mE%5%P*GQsm;D>*LuVCK8Fuet zKm)Eut;kd#u+s2kll)MX}asY4o!aSIa|OV@eMW#>Oec*cntE zF^F;9+S@W#T*=<%y>B?|&|OB);)t=*wGM{R^_^r|@V!arnMKwi<$nn=r`AHT!6yTT z8@qK(T|8iib#mLGuL|IiE>p)VvY5{&v2|r*o~IIFf84Sxlx^xlG(6{Fsb*GOOt(D(RV=zyPN~jTYxzT-gufXA^ zkKS{JIo>?RGEwr-Nxsv5ErG4W+vB^*N$xINyHuAj(q|7Wu`D;^kG8d&l*aSrM=r+; z22u||{P|beoz318Jj^o?V*g6SzRN^dSJ*F^uWezQKGozN{cr1d%^Uemxog?CN|biD zesN@C@jxaDtXasGdLi_)8?XHr^geu0D%yg=iY zzIh;4Dm8_tNBKJnh^8L>t@GZdpgV&{&x+#kkg+^?m+P7uO^U&$B_WILBm}1xfId*# zsUc&`Nq!yKVue^=BV4K(D>*#EsqnaScfJ%VT?QnCw!lVk>+5$kzfSgZsBd5<%^OMosmzw= zN_}h~>0@!3EeUn0p$e`kT`milbv!P7UwwkYT*#HsBS1y~U9TxG}^lT}~QY zsEAZ(J44Qq%*iBY*pXmuD)UwmN4(%xm|Eo^2Y0lVwN8{bp*kbN;=rVA#I}A^L93T& z>ccm1`7opz!k*jMe<%zPwzNJhLm@*~7`Sc{fvDU)bu7jO%z)JxgBf|BUMBOhjhxow zCIURU`LytON~s@D{r8R&!w$hk)_sqHG0{18(D)S!(s{AFdL8WOwMqrFr>3S|mcH=I z$dUgT`imT!#2WM{m2%3q2bCZdW4c-Xgy<4jjD{)Um4D_BWa3ykEwvn!u(J;QgiKgohsPQ?I_ zd_#AChCTqM#LWndh5L9`ZrVIgH%}jn?FS1XJ-1zniAGnZz;boG;sAbPl|rX4B*s+p zLp=lpD#*o;qjfiavpz~Cnt`Q8Nfka|Z5G*{=<9H6Z+c!EawNzn(dhZH_S@YTVxMO+ ze?bH41c#wMW?`mjA$;+jhe6uR;c3d)wSJHx&-bWvL~0Hg?SZ$mV>Pcd385`of$}3s zt!4ms_c)pkvt=x>v@s0>1G9+hATC^4pQ*>PjyggfU*=Ub*J#>LZfU;dL?Iwt6Eq+W zgIUgLOn9p~>zUjXv~XHX!7t207uo(Q2fuNNz+d7~ocIDT3AM65i)fjClieMLqAKTy z!5wDv_l>T`RFI{R=<`nfvZks zvi@K2&%ytqc?)K@K?9r>u}jnXkS|(Yo;c&j>5?AwFDW-T7#jxSu?y1a@yz^u5GD;! zMvjHMo8OzjaTmXGpq*b;8NVxqX0wPjn4*TgPEmKv7HWKIUM|b|v@QvMtwVepcH+a$ zgriyDC@qFa7PMkgo0!1KXsUcl`Em%&N^=}^E=oSU0U4c7%qf~X+3g~a+4y4TR(3ODQuRVcB{%V8;V`WIdO3nv-y$DErhn4-e? z1j-$Wyp#(I>0kCZPC)p3JYqGACj9Qbcj~}*A5>i5PoUYcKCik5#uTi&ZT{kR6Ar@7 zU8q48OTU%k{XC1fQc0Fe2reHYq4$yqn(Iobq`ROOs}#_~?D!ZHi6k%SvG=5Ypr58z zF8%69d+WgfbG_4m0xze#i_Hoj7zUeFFNg#4A*U!J@Ys7;zX*L+fSWahKevNH0B5<5 zlpuN>j(Pys`}la%iqP`(iNL!gD$4#k7;EfO76|pTJO9!18l(M4pSPTWHmtcJ2J{=E zdYs-+QqH1P!`5pc|^v1BFtwxb={8KS#qC3}ili!d?EU20Em zjjnX>TbWmP&Iy8}k57IW1E3%R$1j%`4a6iohyruc8fPTC9F*R`9=e>zP#)w!nE@3@*RB7lR3`Qd)fQwS@5MlXGm;ODKM^n z*k!QBoY>oxx8bsLePPhAUzh3fg56WH`e3}UU+q@TE0G%>chuAB zvM{LAlly(?owT@e~B|g1!_pxuP7u#!+X76qa%6vh18H&`s-3!4I_S1a^-olPra%4pH_;|5Q1 z6@~G2M0e*g*fmyKYCDj&c=Bkdwrt1%kGn!2v41;3_g4Gv;|`9O-9_E9_Bb-(-*D%~ z79t*ZSZpt{00qj=6DpZha(>675xu(mJs3ECJt8|Oy9E`|T{|MD#ZbF_dV6z!&Gf(SXr)x5*L2&OQ&eIW2uiZB;K>Kh*+Cp317t#8GGMFQN!0x( z+cb|VKdfPZ>ZM4-JvZ7P%D*ZFObuuPWu7gQLA$yv48se|kENCMM z^Im+7$HE5Rq-nD<;BSG?0QEj6|&w4JT#4w zI$$6V_yLAD|I)|<$$gkJ3_xB~l+z^FPE?dIYe{zHfuj z=9|0=fHn-DLWeR8KM_|IVuzRx7p>y3Ij+>@{N*!t9VObWrCWr07;`7 zFx}i}p}u9Gp;&9}`GomBdw@i!Gb70Mc%h3O-0q4^{^2IHAbN-6N2M5&^W*XRZbYJb znn5Ar@h|z-G!_pJcWdUWjo5G!ZrqKCi|oTAk&oxoZ2$vmETeXQu0RX!H`Fdhh}uqN zH&}f#K)mx4lcd$G55vfx_F}wuryN+{U_*%&T5$1S-@{;0uCdReCO)A2r~jF8Y8}G} zrYyt!TEpMVUc)K%Y91gL3DKa=-bE6b{beGj@CbB2CgDn2#3Y$jvbf;Hx?4j<(3Q{Z zPl1)rn?pZ(o5sd+3rgXVtceXZ4LsD7vAe!g>z+j23>SUJC{GOckWgKi1ZkEf}+J$Ri-J-xKi5(G7Rm$(0+GGQ$EN(N1m zZo@DhJ!#WEC|L6lplP&g=1XaT%eu>802Ff%}>$xEh)g(QC^N)}e{HA`BxFcIIfDw@78J;pu`b-M|!Yk|=B}HC-5hw}fpyge# zVC7PV6`yX9$=2SzYn?#yQ#w}u<(hyO%U`;DVk>i0sUst3RI~ns%aBP^{P63wn{~)9%fr&bR%5c>XWXkW zHpEatuHHu~w*Nb$uf)d)_6ng-C?!>dc@kv?#CNQqTASsgT`MpF4F34*na1zocBRvg zyBk#B{6fQJUVSh)vLllviN0t3L-(CS(A&Y0)A){A3qHruT;TxIueT}Pc0$w%CJU%i$$>3}%Rb}NJw?20q9H`wS{06TZV zZ|FE|f5AKlf2&<)>s*k)S5RH-C8prLUGBbakbKm|cGPWt@vKkAutz#=a8|x*n(HZ1 zRsEAE*m*Ma2qeilb@0t|>QsWrn^LXN0O%T*fw;@FOkaV{v#PY0B;Ie5J&$f*3OfQq4~ z=Mz6=gX`M+aaBaZ;{8j)umzOHZ;>%(stx2xD8m$A69NOl4@d&rvYb z>MGp-0!TFDoh4{ZqS3v@Hsun@r!SJpchnQ|vG8bi2)sUc*~ZOa8B*gh5AaZ&t}Utx zxxa2xT!TPx8$^Hpv4^L#MW?etx1_VdG+iONq2iLZ!9qc0WoeKDh{0<~YkZi&?9*V5 zd!t(K|5zW%aKi%KvU8ln9dx?PnhZ#zp!`9|bgPi<%*nR_k@$XOKCkU&Jcaac;6LE= zZfa%Hh>fKn|L^7k6n1 zSuqZl`Asfq3zb!>+TfH+x!+CD*OVEQ#9|BXv@x%GQ++o`rH;IDo|q}=**nh{#F;q_H9}psU&Eck?zkZBK1g7@wIT~55)PmK;m@6 zBkUjKh?5*P6<|B`RmpSpQor(bWmkTd8@?KXcOk@(vc2a6XAYidBpCu99Dh3{DG1;l zG$GP8yIk%&&G8>HU7=YZukssGl%3bJv4cvBEQeqW$uVhq*i|;}8MaJon3m$kd(LWp zkxVThb6ztbg5smWh@{JbS#M6iD->r|MG_FEmzRb0S{x*%4OdaYC^>o!O^?iEWe~+4 z7WAOcT8L%Pvc6v=ejhVi`+B_W&gWr1&1?}^NTFi=N&pd3ZIyM_oJw>9KJ`_{uLu-2Ciya8 z3$~FJgHVxR86a|N%hIVVaSgmttzB1gR8f9zYR`gE&o%k0$ z4MZ4YMGm8sUx_W69-H|Et)SH;rh)H7^Pj#vfF89=m#>K)jBSzZkngN^4vfC?A`?6# zBeuF|L{}ZnzW{-Bo7Cz@$NcgEA>#|FME^zSGEME z4lN@*o365_5@&Na=#1NACzi=1`ipFNU2vZ+n&;!S2Kfe(Cjx30Dqm2_=s9ZB&qxiz ztO8!v8ZOsNe_bNw)Z*{p47f&?*3n*lc+XEk!JhO2vxqmC;^_{a+wgs(@Ae->) zuUrE|Wlc)}aFMP`^?Dd#prAUkIB5VRU}M)+4&10K`U`QHE_QdRQN?+64V{vWa|;Xc zZo+82J9#S-&Cd_j^Aw#u%kCy@ELztj)0N~&e~KR_r7^$9^=iI^LZIcaw6tqm4G4~p zEWSR4P@lyZU=`vqPbcZ$^Sr#D)Q>1t=OvnTHnf$%RpwRQ3H)xdfGmgBd<#o11@l1! z{CLmwuEmkC;z zM82w3yU|~f+)7yQz@5q#g$4l4NX3j!mJ3vLY+usuB624EvbaJhwZfgNV=0c&prE_zZQd?PBG2{WZqPZ;z*DHubZ|p=f17-Q| z@c$DzE%CGfZCp55j>`7?mVH40Ei|~tWsL*16JuGNu#4YgwnPs`e;~!;*xV4%Z$Fiz zOy6szkg{B`vXtCFGPL4jpt?_U_xujJd23m;l1J1KHawhDNVPS~sA}HGdZ~H!xMQ56 zRy0)FV@ZEOviQm__H{dVTLg9wum%f}M4q`if?$dtnC1ei_WY#ADDC zu2svbXVqBLYIz-H=2-6fE|L9|P(|~}ZhxUYOYoyAjlL&LcRGLutN#f&r0fvQY6}=; zj-J(ShpW%V60-`TdBPk>Zxq{RXPZwaXi=Jc&924Z0!8i@>ao~*PRc?3JMWxPq+Vg} zvd1&>LbFlJ$I_?Xc3STp$pf>NFBRMXktYWk|5dWuf1BGEqjs0P48KRv^vVUIGj1{2 zo2ih;$mJmB8AE*{a$We+@G2b28<9yCqUg{6wd-pXd848M9*w>;glFQ9^vo~P8#@K{ zQ!*t+wN@-184I|O3A;DR8Ea+`+caaKmI9|J^u=r_NpAU{QIR#BJklMWW zwEI+NJp%b84dITRemAxU;`$YNcj>166W^QEy`(ap{ZqTNeN1S=L;l-@$zWx}L-J2Y z-avVOilquWO{*tFEWCFt*@4Q>D&?*UpTMPx%G8$G% zG8vT>kPh|M_Ap>X5)=xPz1zK|wiL1+?H*-78$_xLrB}%1$}g_=6dG7=V4a_rGokwM zs8$B6}a$4*;p3<A4aW<2`@1Forr_B3M*r;ma=$Kz7U|S(5fYcsm`+rn z`fXQQGD_Za&RDkE@HJ-%=J}%DPaFT9&o9O<3_{Lq&Gl|LN6KA?Gw}s)PKPr=)WbT$ zt2-V@m&Wn9)db|X&nt0%7vl&_eOlI;C4wV=PO;Zj`0Jm)zLAA8e+@}V;rN!ZFVvai z-C?o-{{SWnd0<@m*I(avB3O@rTYYjDtrG>a delta 12438 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 W87Kw2A_eVH2GSvT$p2Ri@V@}7=8Zc5 diff --git a/lib/Makefile.MinGW b/lib/Makefile.MinGW index 4d7cd6fcd..d89116344 100644 --- a/lib/Makefile.MinGW +++ b/lib/Makefile.MinGW @@ -32,7 +32,7 @@ OBJS1 = pctile.o graycode.o sort.o ssort.o \ entail.o fano232.o gran.o spec9.o sync9.o decode9.o \ fil3.o redsync.o decoder.o grid2n.o n2grid.o timer.o \ decode9a.o getlags.o afc9.o fchisq.o twkfreq.o downsam9.o \ - peakdt9.o symspec2.o + peakdt9.o symspec2.o stdmsg.o libjt9.a: $(OBJS1) ar cr libjt9.a $(OBJS1) @@ -58,7 +58,8 @@ jt9test.exe: $(OBJS5) libjt9.a $(FC) -o jt9test.exe $(OBJS5) libjt9.a ../libfftw3f_win.a OBJS6 = wsjt24d.o wsjt24.o sync24.o decode24.o ps24.o flat1.o \ - xcor24.o slope.o peakup.o interleave24.o genmet24.o + xcor24.o slope.o peakup.o interleave24.o getmet24.o smo.o \ + deep24.o encode4.o chkmsg.o avemsg4.o extract4.o wsjt24d.exe: $(OBJS6) libjt9.a $(FC) -o wsjt24d.exe $(OBJS6) libjt9.a ../libfftw3f_win.a diff --git a/libpskreporter.a b/libpskreporter.a index f479d6aef6b6608788181203abe4f94cf7e07793..ab9185f4544178d2afc8a494c8e162a2be39f27e 100644 GIT binary patch delta 1186 zcmewqJTGK|G`q2Zfw_^9@kAxV*cS{896-#y4TAYf7#KiU&;^1;_!t;KSnM7IOKxFc z0AZOT2$ol1U;tr7pgahx%z$9^2nGiAh>aT#GD(&fWR&RT>nlKkp|Kg%`pF40Vw)E* zhk})4;8G$kVQC80n!x45$i@Hyc8m-RLX#)*iBG=3oIm+6n;@?OPy_^+f!Ja4LwRvV ziOIe!Qj>3U@_NcZ<-iI+@(czCSYR9|jm`)9nSq^w2S^HnSpq&kP|BDR_3=9n+K1A`q_~f@7 z`xqG}C$NZ2KENpqV)3g3$v>PRas$7}W(%%hMz|3MSdG}t4Kt!Z6=cK$DUjwo_8bkM3pO_hB_p((W7Uqwc5oQPiH0JK zFvDuZV=;saSSIfh=Ld#B0>6Yn9W?48lmWx!PvWp((UXWqm}-jERO}(UMiu0*4^rU> z?Iu{XUj;b<9Iq^s{bZpInp_5EwaLO^rW5g%paRoSd3KWpy*9fZ-j}>9T wgFT7pDcd7lfjyzlRl#NiI4r=fc%kZwFamo*ja7#kft<>~$pmb~3Jott0P6n@MqZ$(3v(lP9pT zPUdCjhq75FZ(!k={F7Ngln1DfodHDhgINMVl6P_@yP+_U!2mLsnIWwtqckrY$eg^E zeZk~-R@TXU+`N-z#keQ;aYTcBQfy#gU}y+&D~eCVCrfhfoBWtfbn+WcVa5ZKxYQXB zO!gB6lA8m#(i!1;4Y26F3f4DA6{v6W233$oIb{$Tz$LQTh}Rje*}xKuX7S1PBG@ek z>;J$XiqLO?Rez}{w`4@`^~WG=NE_A|41Aha1xXGB=|vL zAOUkjlteVb4W?Mkzzo0y1(;?7X`}!&!J=7w@?sf?1IlC}4iG2;CNB_xPzDDkZ<2)> z_fFOr;TB^o#^H0z90eq|7-7*YKAB$$;uh?wAxhaEVLP^DC^7kz%3h4*1P+Z&YLN)N T*pi|6 int itone[85]; //Tx audio tones for 85 symbols +int rc; +wchar_t buffer[256]; bool btxok; //True if OK to transmit bool btxMute; double outputLatency; //Latency in seconds @@ -219,27 +221,16 @@ MainWindow::MainWindow(QWidget *parent) : if(ui->actionAFMHot->isChecked()) on_actionAFMHot_triggered(); if(ui->actionBlue->isChecked()) on_actionBlue_triggered(); - /* if(m_pskReporter) { - int rc=0; rc=ReporterInitialize(NULL,NULL); - qDebug() << "A" << m_pskReporter << rc; - - wchar_t buffer[256]; - rc=ReporterGetInformation(buffer,256); - qDebug() << "B" << rc << QString::fromStdWString(buffer); - - const wchar_t* tremote=L"call\0W8WNA\0gridsquare\0EM77\0freq\050280000\0mode\0JT9\0snr\0-17\0\0"; - const wchar_t* tlocal=L"station_callsign\0K1JT\0my_gridsquare\0FN20qi\0programid\0WSJT-X\0\0"; - int flags=REPORTER_SOURCE_AUTOMATIC | REPORTER_SOURCE_TEST; - rc=ReporterSeenCallsign(tremote,tlocal,flags); - rc=ReporterGetInformation(buffer,256); - qDebug() << "C" << rc << QString::fromStdWString(buffer); - rc=ReporterUninitialize(); - qDebug() << "D" << rc; + if(rc==0) { + m_pskReporterInit=true; + } else { + m_pskReporterInit=false; + rc=ReporterGetInformation(buffer,256); + msgBox(QString::fromStdWString(buffer)); + } } - */ - } // End of MainWindow constructor //--------------------------------------------------- MainWindow destructor @@ -471,6 +462,21 @@ void MainWindow::on_actionDeviceSetup_triggered() //Setup Dialog m_paInDevice=dlg.m_paInDevice; m_nDevOut=dlg.m_nDevOut; m_paOutDevice=dlg.m_paOutDevice; + if(dlg.m_pskReporter!=m_pskReporter) { + if(dlg.m_pskReporter) { + int rc=ReporterInitialize(NULL,NULL); + if(rc==0) { + m_pskReporterInit=true; + } else { + m_pskReporterInit=false; + rc=ReporterGetInformation(buffer,256); + msgBox(QString::fromStdWString(buffer)); + } + } else { + rc=ReporterUninitialize(); + m_pskReporterInit=false; + } + } m_pskReporter=dlg.m_pskReporter; if(dlg.m_restartSoundIn) { @@ -995,6 +1001,49 @@ void MainWindow::readFromStdout() //readFromStdout ui->decodedTextBrowser->setTextBackgroundColor(bg); t=t.mid(0,n-2) + " "; ui->decodedTextBrowser->append(t); + QString msg=t.mid(34,22); + bool b=stdmsg_(msg.toAscii().constData()); +// if(m_pskReporterInit and b and !m_diskData) { + if(m_pskReporterInit and b) { + qDebug() << "Uploading to PSK Reporter"; + int i1=msg.indexOf(" "); + QString c2=msg.mid(i1+1); + int i2=c2.indexOf(" "); + QString g2=c2.mid(i2+1,4); + c2=c2.mid(0,i2); + qDebug() << c2 << g2; + QString remote="call," + c2 + ","; + if(g2.mid(0,1).compare("A")>=0 and + g2.mid(0,1).compare("R")<=0 and + g2.mid(1,1).compare("A")>=0 and + g2.mid(1,1).compare("R")<=0 and + g2.mid(2,1).compare("0")>=0 and + g2.mid(2,1).compare("9")<=0 and + g2.mid(3,1).compare("0")>=0 and + g2.mid(3,1).compare("9")<=0) { + remote += "gridsquare," + g2 + ","; + } + wchar_t tremote[256]; + remote.toWCharArray(tremote); + + QString local="station_callsign," + m_myCall + "," + + "my_gridsquare," + m_myGrid + "," + + "programid,WSJT-X,programversion," + rev.mid(6,4); + wchar_t tlocal[256]; + local.toWCharArray(tlocal); + qDebug() << QString::fromWCharArray(tremote,remote.length()); + qDebug() << QString::fromWCharArray(tlocal,local.length()); + /* + const wchar_t* tremote=L"call,W8WNA,gridsquare,EM77,freq,50293000,mode,JT9,snr,-17,,"; + const wchar_t* tlocal=L"station_callsign,K1JT,my_gridsquare,FN20qi,programid,WSJT-X,,"; + int flags=REPORTER_SOURCE_AUTOMATIC | REPORTER_SOURCE_TEST; + rc=ReporterSeenCallsign(tremote,tlocal,flags); + rc=ReporterGetInformation(buffer,256); + qDebug() << "C" << rc << QString::fromStdWString(buffer); + rc=ReporterUninitialize(); + qDebug() << "D" << rc; + */ + } } } } diff --git a/mainwindow.h b/mainwindow.h index a91a9cf7f..2b0cb7146 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -161,6 +161,7 @@ private: bool m_bdecoded; bool m_monitorStartOFF; bool m_pskReporter; + bool m_pskReporterInit; char m_decoded[80]; @@ -238,7 +239,7 @@ void symspec_(int* k, int* ntrperiod, int* nsps, int* ingain, int* nb, void genjt9_(char* msg, int* ichk, char* msgsent, int itone[], int* itext, int len1, int len2); -//void decoder_(int* ntrperiod, int* ndepth, int* mRxLog, float c0[]); +bool stdmsg_(const char* msg); } #endif // MAINWINDOW_H diff --git a/wsjtx.iss b/wsjtx.iss index fedbfb010..5328f3cb7 100644 --- a/wsjtx.iss +++ b/wsjtx.iss @@ -1,6 +1,6 @@ [Setup] AppName=wsjtx -AppVerName=wsjtx Version 0.5 r3037 +AppVerName=wsjtx Version 0.5 r3038 AppCopyright=Copyright (C) 2001-2013 by Joe Taylor, K1JT DefaultDirName=c:\wsjtx DefaultGroupName=wsjtx