From 979c196eb6eaffbfc92518e7cd42d8bfabde9d5e Mon Sep 17 00:00:00 2001 From: Stephen Hicks Date: Fri, 5 Jul 2013 15:00:12 -0500 Subject: [PATCH] Added source file to repo as received from AA6YQ --- .MDT | Bin 0 -> 240 bytes ARRL.DX | 423 ++ App.ico | Bin 0 -> 1078 bytes App2.ico | Bin 0 -> 1078 bytes CLX.cpp | 82 + CLX.h | 181 + COPYING.LESSER.txt | 165 + COPYING.txt | 674 +++ ClockAdj.cpp | 449 ++ ClockAdj.dfm | Bin 0 -> 2510 bytes ClockAdj.h | 118 + ComLib.cpp | 3590 ++++++++++++++++ ComLib.h | 752 ++++ Comm.cpp | 632 +++ Comm.h | 162 + ConvDef.cpp | 393 ++ ConvDef.dfm | Bin 0 -> 1973 bytes ConvDef.h | 105 + EditDlg.cpp | 428 ++ EditDlg.dfm | Bin 0 -> 2717 bytes EditDlg.h | 102 + Fft.cpp | 712 ++++ Fft.h | 68 + FreqDisp.cpp | 205 + FreqDisp.dfm | Bin 0 -> 813 bytes FreqDisp.h | 84 + HISTORY.TXT | 230 + Hamlog5.cpp | 632 +++ Hamlog5.h | 119 + InputWin.cpp | 70 + InputWin.dfm | Bin 0 -> 638 bytes InputWin.h | 50 + LogConv.cpp | 2232 ++++++++++ LogConv.h | 248 ++ LogFile.cpp | 1660 ++++++++ LogFile.h | 287 ++ LogList.cpp | 1169 ++++++ LogList.dfm | Bin 0 -> 3824 bytes LogList.h | 159 + LogSet.cpp | 337 ++ LogSet.dfm | Bin 0 -> 6621 bytes LogSet.h | 138 + Loglink.cpp | 864 ++++ Loglink.h | 123 + MMCG.DEF | 1546 +++++++ MMlink.cpp | 408 ++ MMlink.h | 154 + MacroKey.cpp | 193 + MacroKey.dfm | Bin 0 -> 818 bytes MacroKey.h | 71 + Main.cpp | 9893 ++++++++++++++++++++++++++++++++++++++++++++ Main.dfm | Bin 0 -> 24988 bytes Main.h | 967 +++++ MmcgDlg.cpp | 243 ++ MmcgDlg.dfm | Bin 0 -> 1323 bytes MmcgDlg.h | 78 + Mmtty English.ini | 802 ++++ Mmtty Japanese.ini | 802 ++++ Mmtty.ini | 802 ++++ MyRIG.rcm | 8 + Option.cpp | 1585 +++++++ Option.dfm | Bin 0 -> 25967 bytes Option.h | 393 ++ PlayDlg.cpp | 102 + PlayDlg.dfm | Bin 0 -> 1085 bytes PlayDlg.h | 69 + QsoDlg.cpp | 548 +++ QsoDlg.dfm | Bin 0 -> 5782 bytes QsoDlg.h | 128 + Rtty.cpp | 2620 ++++++++++++ Rtty.h | 933 +++++ Scope.cpp | 407 ++ Scope.dfm | Bin 0 -> 1944 bytes Scope.h | 97 + SendFile.cpp | 108 + SendFile.dfm | Bin 0 -> 926 bytes SendFile.h | 60 + SetHelp.cpp | 193 + SetHelp.dfm | Bin 0 -> 2250 bytes SetHelp.h | 83 + ShortCut.cpp | 408 ++ ShortCut.dfm | Bin 0 -> 1308 bytes ShortCut.h | 74 + Sound.cpp | 1351 ++++++ Sound.h | 171 + TH5Len.cpp | 62 + TH5Len.dfm | Bin 0 -> 2225 bytes TH5Len.h | 71 + TextEdit.cpp | 172 + TextEdit.dfm | Bin 0 -> 1038 bytes TextEdit.h | 69 + TncSet.cpp | 125 + TncSet.dfm | Bin 0 -> 2493 bytes TncSet.h | 81 + TxdDlg.cpp | 58 + TxdDlg.dfm | Bin 0 -> 767 bytes TxdDlg.h | 53 + UserPara.ini | 739 ++++ VerDsp.cpp | 67 + VerDsp.dfm | Bin 0 -> 1041 bytes VerDsp.h | 52 + Wave.cpp | 852 ++++ Wave.h | 191 + _BAK.MDT | Bin 0 -> 240 bytes aa6yq.pro | 82 + country.cpp | 350 ++ country.h | 60 + cradio.cpp | 1074 +++++ cradio.h | 172 + ctnc.cpp | 702 ++++ ctnc.h | 325 ++ digital.txt | 365 ++ eremote.txt | 779 ++++ eupdate.txt | 180 + fir.cpp | 2181 ++++++++++ fir.h | 321 ++ je3hht.pro | 76 + mmcg.cpp | 1525 +++++++ mmcg.h | 81 + mml.h | 67 + mmrp.h | 43 + mmtty.bpr | 103 + mmtty.cbproj | 470 +++ mmtty.cbproj.local | 2 + mmtty.cgl | 19 + mmtty.cpp | 94 + mmtty.map | 6 + mmtty.res | Bin 0 -> 1636 bytes mmtty.tds | Bin 0 -> 10092544 bytes mmtty.txt | 875 ++++ mmtty_Icon.ico | Bin 0 -> 1078 bytes mmttylog.txt | 700 ++++ mmw.h | 46 + my.res | Bin 0 -> 1384 bytes radioset.cpp | 562 +++ radioset.dfm | Bin 0 -> 4669 bytes radioset.h | 127 + remote.txt | 742 ++++ temp.txt | 833 ++++ test.pro | 76 + tty23.pro | 69 + tty300.pro | 72 + update.txt | 417 ++ 143 files changed, 59128 insertions(+) create mode 100644 .MDT create mode 100644 ARRL.DX create mode 100644 App.ico create mode 100644 App2.ico create mode 100644 CLX.cpp create mode 100644 CLX.h create mode 100644 COPYING.LESSER.txt create mode 100644 COPYING.txt create mode 100644 ClockAdj.cpp create mode 100644 ClockAdj.dfm create mode 100644 ClockAdj.h create mode 100644 ComLib.cpp create mode 100644 ComLib.h create mode 100644 Comm.cpp create mode 100644 Comm.h create mode 100644 ConvDef.cpp create mode 100644 ConvDef.dfm create mode 100644 ConvDef.h create mode 100644 EditDlg.cpp create mode 100644 EditDlg.dfm create mode 100644 EditDlg.h create mode 100644 Fft.cpp create mode 100644 Fft.h create mode 100644 FreqDisp.cpp create mode 100644 FreqDisp.dfm create mode 100644 FreqDisp.h create mode 100644 HISTORY.TXT create mode 100644 Hamlog5.cpp create mode 100644 Hamlog5.h create mode 100644 InputWin.cpp create mode 100644 InputWin.dfm create mode 100644 InputWin.h create mode 100644 LogConv.cpp create mode 100644 LogConv.h create mode 100644 LogFile.cpp create mode 100644 LogFile.h create mode 100644 LogList.cpp create mode 100644 LogList.dfm create mode 100644 LogList.h create mode 100644 LogSet.cpp create mode 100644 LogSet.dfm create mode 100644 LogSet.h create mode 100644 Loglink.cpp create mode 100644 Loglink.h create mode 100644 MMCG.DEF create mode 100644 MMlink.cpp create mode 100644 MMlink.h create mode 100644 MacroKey.cpp create mode 100644 MacroKey.dfm create mode 100644 MacroKey.h create mode 100644 Main.cpp create mode 100644 Main.dfm create mode 100644 Main.h create mode 100644 MmcgDlg.cpp create mode 100644 MmcgDlg.dfm create mode 100644 MmcgDlg.h create mode 100644 Mmtty English.ini create mode 100644 Mmtty Japanese.ini create mode 100644 Mmtty.ini create mode 100644 MyRIG.rcm create mode 100644 Option.cpp create mode 100644 Option.dfm create mode 100644 Option.h create mode 100644 PlayDlg.cpp create mode 100644 PlayDlg.dfm create mode 100644 PlayDlg.h create mode 100644 QsoDlg.cpp create mode 100644 QsoDlg.dfm create mode 100644 QsoDlg.h create mode 100644 Rtty.cpp create mode 100644 Rtty.h create mode 100644 Scope.cpp create mode 100644 Scope.dfm create mode 100644 Scope.h create mode 100644 SendFile.cpp create mode 100644 SendFile.dfm create mode 100644 SendFile.h create mode 100644 SetHelp.cpp create mode 100644 SetHelp.dfm create mode 100644 SetHelp.h create mode 100644 ShortCut.cpp create mode 100644 ShortCut.dfm create mode 100644 ShortCut.h create mode 100644 Sound.cpp create mode 100644 Sound.h create mode 100644 TH5Len.cpp create mode 100644 TH5Len.dfm create mode 100644 TH5Len.h create mode 100644 TextEdit.cpp create mode 100644 TextEdit.dfm create mode 100644 TextEdit.h create mode 100644 TncSet.cpp create mode 100644 TncSet.dfm create mode 100644 TncSet.h create mode 100644 TxdDlg.cpp create mode 100644 TxdDlg.dfm create mode 100644 TxdDlg.h create mode 100644 UserPara.ini create mode 100644 VerDsp.cpp create mode 100644 VerDsp.dfm create mode 100644 VerDsp.h create mode 100644 Wave.cpp create mode 100644 Wave.h create mode 100644 _BAK.MDT create mode 100644 aa6yq.pro create mode 100644 country.cpp create mode 100644 country.h create mode 100644 cradio.cpp create mode 100644 cradio.h create mode 100644 ctnc.cpp create mode 100644 ctnc.h create mode 100644 digital.txt create mode 100644 eremote.txt create mode 100644 eupdate.txt create mode 100644 fir.cpp create mode 100644 fir.h create mode 100644 je3hht.pro create mode 100644 mmcg.cpp create mode 100644 mmcg.h create mode 100644 mml.h create mode 100644 mmrp.h create mode 100644 mmtty.bpr create mode 100644 mmtty.cbproj create mode 100644 mmtty.cbproj.local create mode 100644 mmtty.cgl create mode 100644 mmtty.cpp create mode 100644 mmtty.map create mode 100644 mmtty.res create mode 100644 mmtty.tds create mode 100644 mmtty.txt create mode 100644 mmtty_Icon.ico create mode 100644 mmttylog.txt create mode 100644 mmw.h create mode 100644 my.res create mode 100644 radioset.cpp create mode 100644 radioset.dfm create mode 100644 radioset.h create mode 100644 remote.txt create mode 100644 temp.txt create mode 100644 test.pro create mode 100644 tty23.pro create mode 100644 tty300.pro create mode 100644 update.txt diff --git a/.MDT b/.MDT new file mode 100644 index 0000000000000000000000000000000000000000..e8d15f358482d5013820c9fa14ed92f8debb29de GIT binary patch literal 240 dcmebE_3?LCaB&QAR0vBgGSo9LkYX6l003sX1l<4t literal 0 HcmV?d00001 diff --git a/ARRL.DX b/ARRL.DX new file mode 100644 index 0000000..05faa26 --- /dev/null +++ b/ARRL.DX @@ -0,0 +1,423 @@ +! ARRL DXCC COUNTRIES LIST For MMLOG +! +AP ;AP-AS,6P-6S ;PAKISTAN ;AS ;E +!A1 ;A1 ;ABU AIL ;AS +A2 ;A2,8O ;BOTSWANA ;AF ;B +A3 ;A3 ;TONGA ;OC ;N +A4 ;A4 ;OMAN ;AS ;D +A5 ;A5 ;BHUTAN ;AS ;F +A6 ;A6 ;UNITED ARAB ;AS ;D +A7 ;A7 ;QATAR ;AS ;C +A9 ;A9 ;BAHRAIN ;AS ;C +BV9P ;BV9P\,BQ9P\ ;PRATAS IS. ;AS ;H +BV ;BV ;TAIWAN ;AS ;H +BS7 ;BS7H\ ;SCARBOROUGH REEF ;AS ;H +BY ;BA-BZ,3H-3U,B1-B9 ;CHINA ;AS ;H +CE0X ;CE0X,XQ0X-XR0X,CE0AA ;SAN FELIX IS. ;SA ;R +CE0Z ;CE0Z,CE0I,CE0OGZ,XQ0Z-XR0Z,XQ0I-XR0I,CE0/JA7XYE; FERNANDEZ ;SA ;R +CE0 ;CE0,XQ0-XR0 ;EASTER IS. ;SA ;T +CE ;CA-CE,XQ-XR,3G ;CHILE ;SA ;Q +CM ;CL-CM,CO,T4 ;CUBA ;NA ;R +CN ;CN,5C-5G ;MOROCCO ;AF ;Z +CP ;CP ;BOLIVIA ;SA ;Q +CT3 ;CS3,CT3,CR9 ;MADEIRAI IS.(PORTUGAL) ;AF ;Z +CU ;CU ;AZORES IS.(PORTUGAL) ;EU ;Z +CT ;CQ-CU ;PORTUGAL ;EU ;Z +CY9 ;CY9,CY0SPI ;ST PAUL IS. ;NA ;Q +CY0 ;CY0 ;SABLE IS. ;NA ;Q +CX ;CV-CX ;URUGUAY ;SA ;P +C2 ;C2 ;NAURU ;OC ;M +C3 ;C3 ;ANDORRA ;EU ;A +C5 ;C5 ;THE GAMBIA ;AF ;Z +C6 ;C6 ;BAHAMA IS. ;NA ;R +C8 ;C8-C9 ;MOZAMBIQUE ;AF ;B +DL ;DA-DR,Y2-Y9 ;GERMANY ;EU ;A +DU ;DU-DZ,4D-4I ;PHILIPPINES ;OC ;H +D2 ;D2-D3 ;ANGOLA ;AF ;A +D4 ;D4 ;CAPE VERDE ;AF ;A +D6 ;D6 ;COMOROS ;AF ;C +EA6 ;EA6-EH6,AM6-AO6 ;BALEARIC ;EU ;A +EA8 ;EA8-EH8,AM8-AO8 ;CANARY ;AF ;A +EA9 ;EA9-EH9,AM9-AO9 ;CEUTA & MELILLA(SPAIN) ;AF ;A +EA ;EA-EH,AM-AO ;SPAIN ;EU ;A +EI ;EI-EJ ;IRELAND ;EU ;Z +EK ;EK ;ARMENIA (ex UG) ;AS ;D +EL ;EL,5L-5M,A8,D5,6Z ;LIBERIA ;AF ;Z +EP ;EP-EQ,HN,9B-9D ;IRAN ;AS ;c +ER ;ER ;MOLDOVA (ex UO) ;EU ;C +ES ;ES ;ESTONIA ;EU ;C +ET ;ET,9E-9F ;ETHIOPIA ;AF ;C +EU ;EU-EW ;BELARUS (ex UC) ;EU ;C +EX ;EX ;KYRGYZSTAN (ex UM) ;AS ;F +EY ;EY ;TAJIKISTAN (ex UJ) ;AS ;F +EZ ;EZ ;TURKMENISTAN (ex UH) ;AS ;F +E4 ;E4 ;PALESTINE ;AS ;B +E3 ;E3 ;ERITREA ;AF ;C +FG ;FG ;GUADELOUPE ;NA ;Q +FH ;FH ;MAYOTTE ;AF ;C +FJ ;FJ,FS ;SAINT MARTIN ;NA ;Q +FK ;FK,TX8 ;NEW CALEDONIA ;OC ;L +FM ;FM ;MARTINIQUE ;NA ;Q +FO/C ;FO0X,FO0AAA ;CLIPPERTON IS. ;NA ;T +FO ;FO ;FRENCH POLYNESIA ;OC ;W +FO/A ;FO ;AUSTRAL IS ;OC ;W +FO/M ;FO ;MARQUESAS IS ;OC ;W +FP ;FP ;ST.PIERRE & MIQUELON IS. ;NA ;Q +FR/J ;FR*/J,FR*/E ;JUAN DE NOVA & EUROPA IS. ;AF ;C +FR/G ;FR*/G ;GLORIOSO IS. ;AF ;C +FR/T ;FR*/T ;TROMELIN ;AF ;C +FR ; ;REUNION IS. ;AF ;C +FR/? ;FR ;REUNION IS. /GLORIOSO IS. /JUAN DE NOVA & EUROPA ;AF ;C +FT5W ;FT8W,FT2W,FT4W,FT5W,FT0W ;CROZET IS. ;AF ;C +FT5X ;FT8X,FT2X,FT4X,FT5X,FT0X ;KERGUELEN IS. ;AF ;E +FT5Z ;FT8Z,FT2Z,FT4Z,FT5Z,FT0Z ;AMSTERDAM & ST PAUL IS. ;AF ;E +FW ;FW ;WALLIS & FUTUNA IS. ;OC ;M +FY ;FY ;FRENCH GUIANA ;SA ;P +F ;F,HW-HY,TM,TO-TQ ;FRANCE ;EU ;A +GD ;GD,GT,MA6-MB6,2A6,MD ;ISLE OF MAN ;EU ;Z +GI ;GI,GN,MA5-MB5,2A5,MI ;NORTHERN IRELAND ;EU ;Z +GJ ;GH,GJ,MA7-MB7,2A7,MJ ;JERSEY ;EU ;Z +GM ;GM,GS,MA3-MB3,2A3,MM ;SCOTLAND ;EU ;Z +GU ;GU,GP,MA8-MB8,2A8,MG ;GUERNSEY ;EU ;Z +GW ;GW,GC,MA4-MB4,2A4,MW ;WALES,U.K ;EU ;Z +G ;G,2,M ;ENGLAND(U.K) ;EU ;Z +HA ;HA,HG ;HUNGARY ;EU ;A +HB0 ;HB0,HE0 ;LIECHTENSTEIN ;EU ;A +HB ;HB,HE,4U1VIC ;SWITZERLAND ;EU ;A +HC8 ;HC8-HD8 ;GALAPAGOS IS.(ECUADOR) ;SA ;R +HC ;HC,HD ;ECUADOR ;SA ;R +HH ;HH,4V ;HAITI ;NA ;R +HI ;HI ;DOMINICAN REPUBLIC ;NA ;R +HK0/M ;HK0M,5J0M,HK0TU ;MALPELO IS. ;NA ;R +HK0/A ;HK0,5J0 ;SAN ANDRES ;NA ;R +HK ;HJ-HK,5J-5K ;COLOMBIA ;SA ;R +HL ;HL,DS-DT,6K-6N,D7-D9,KL9 ;REPUBLIC OF KOREA (SOUTH KOREA) ;AS ;I +HP ;HO-HP,3E-3F,H3,H8-H9 ;PANAMA ;NA ;R +HR ;HQ-HR ;HONDURAS ;NA ;S +HS ;HS,E2 ;THAILAND ;AS ;G +HV ;HV ;VATICAN ;EU ;A +HZ ;HZ,7Z-8Z ;SAUDI ARABIA ;AS ;C +H40 ;H40 ;TEMOTU IS ;OC ;L +H4 ;H4 ;SOLOMON IS. ;OC ;L +IS ;IS,IM0,IU0 ;SARDINIA ;EU ;A +I ;I ;ITALY ;EU ;A +JD1/M ;JD1YAA,JD1BIY ;MINAMI TORISHIMA ;OC ;I +JD1 ;JD1BIC ;OGASAWARA ;AS ;I +JD1/? ;JD1 ;OGASAWARA, /MINAMI TORISHIMA ;I +JA ;JA-JS,7J-7N,8J-8N ;JAPAN ;AS ;I +JT ;JT-JV ;MONGOLIA ;AS ;H +JW ;JW ;SVALBARD IS. ;EU ;A +JX ;JX ;JA MAYEN IS. ;EU ;Z +JY ;JY ;JORDAN ;AS ;B +J2 ;J2 ;DJIBOUTI ;AF ;C +J3 ;J3 ;GRENADA ;NA ;Q +J5 ;J5 ;GUINEA-BISSAU ;AF ;Z +J6 ;J6 ;ST LUCIA ;NA ;Q +J7 ;J7 ;DOMINICA ;NA ;Q +J8 ;J8 ;ST VINCENT & DEPENDENCIES ;NA ;Q +KC4 ;8J1R?\,R1A,FB8Y,CE9A,ZL5,Y88,Y90ANT,ZS8BBB,ZS8AAA,KC4AAC,KC4USV,Y73SOP,KC4AAA,KC4USB,KC4USX,3G9A,3Y9WT,8J1RY,AT0A,IA0PS,OR4,XS7ANT,Y83ANT,ZL0AIC,ZS7ANT,VK0DS,KC4AAE ;ANTARCTICA ;AN +KC6 ;T8,KC6??\ ;(WESTERN CAROLINE IS.) BELAU ;OC ;I +KG4 ;KG4??\ ;GUANTANAMO BAY ;NA ;R +KH0 ;AH0,KH0,NH0,WH0 ;MARIANA IS. ;OC ;K +KH1 ;AH1,KH1,NH1,WH1 ;BAKER & HOWLAND IS. ;OC ;X +KH2 ;AH2,KH2,NH2,WH2 ;GUAM ;OC ;K +KH3 ;AH3,KH3,NH3,WH3 ;JOHNSTON IS. ;OC ;X +KH4 ;AH4,KH4,NH4,WH4 ;MIDWAY IS. ;OC ;M +KH5K ;AH5K,KH5K,NH5K,WH5K ;KINGMAN REEF ;OC ;W +KH5 ;AH5,KH5,NH5,WH5 ;PALMYRA & JARVIS ;OC ;W +KH7K ;AH7K,KH7K,NH7K,WH7K ;KURE IS. ;OC ;M +KH6 ;AH6-AH7,KH6-KH7,NH6-NH7,WH6-WH7 ;HAWAIIAN IS. ;OC ;W +KH8 ;AH8,KH8,NH8,WH8 ;AMERICAN SAMOA ;OC ;W +KH9 ;AH9,KH9,NH9,WH9 ;WAKE IS. ;OC ;L +KL7 ;AL,KL0-KL8,NL,WL ;ALASKA ;NA ;W +KP1 ;KP1,NP1,WP1 ;NAVASSA IS. ;NA ;Q +KP2 ;KP2,NP2,WP2 ;AM.VIRGIN IS. ;NA ;Q +KP4 ;KP3-KP4,NP3-NP4,WP3-WP4 ;PUERTO RICO ;NA ;Q +KP5 ;KP5,NP5,WP5 ;DESECHEO IS. ;NA ;Q +W ;AA6-AK6,K6,N6,W6,K?6,N?6,W?6 ;U.S.A. ;NA ;U +W ;AA7-AK7,K7,N7,W7,K?7,N?7,W?7 ;U.S.A. ;NA ;T +W ;AA0-AK0,K0,N0,W0,K?0,N?0,W?0,AA5-AK5,K5,N5,W5,K?5,N?5,W?5,AA9-AK9,K9,N9,W9,K?9,N?9,W?9 ;U.S.A. ;NA ;S +W ;AA-AL,K,N,W,4U1WB ;U.S.A. ;NA ;R +LA ;LA-LN ;NORWAY ;EU ;A +LU ;LO-LW,AY-AZ,L2-L9 ;ARGENTINA ;SA ;P +LX ;LX ;LUXEMBOURG ;EU ;A +LY ;LY ;LITHUANIA ;EU ;C +LZ ;LZ ;BULGARIA ;EU ;B +OA ;OA-OC,4T ;PERU ;SA ;R +OD ;OD ;LEBANON ;AS ;B +OE ;OE ;AUSTRIA ;EU ;A +OH0 ;OH0,OF0 ;ALAND IS. ;EU ;B +OJ0 ;OJ0 ;MARKET REEF ;EU ;B +OH ;OF-OJ ;FINLAND ;EU ;B +OK ;OK-OL ;CZECH REPUBLIC ;EU ;A +OM ;OM ;SLOVAK REPUBLIC ;EU ;A +ON ;ON-OT ;BELGIUM ;EU ;A +OX ;OX ;GREENLAND ;NA ;Q +OY ;OY ;FAROES ;EU ;Z +OZ ;OU-OZ,XP,5P-5Q ;DENMARK ;EU ;A +PJ8 ;PJ5-PJ8,PJ0J,PJ1F ;SINT MAARTEN ;NA ;Q +PJ9 ;PJ ;NETHERLANDS ANTILLES ;SA ;Q +PA ;PA-PI ;NETHERLANDS ;EU ;A +PY0/S ;PP0S-PY0S,ZV0S-ZZ0S,PY0DX,PT0MI,PS0WH-PT0WH,PY0RO,PW0PP,PP0ZS-PY0ZS ;ST PETER ;SA ;P +PY0/T ;PP0T-PY0T,ZV0T-ZZ0T ;TRINDADE ;SA ;P +PY0 ;PP0-PY0,ZV0-ZZ0 ;FERNANDO DE NORONHA ;SA ;P +PY ;PP-PY,ZV-ZZ ;BRAZIL ;SA ;P +PZ ;PZ ;SURINAM ;SA ;Q +P2 ;P2 ;PAPUA NEW GUINEA ;OC ;K +P4 ;P4 ;ARUBA ;SA ;Q +P5 ;P5-P9,HM ;NORTH KOREA (DPRK) ;AS ;I +R1/MVI ;4J1FS,R1M,*/MVI,MVI/* ;MALYJ VYSOTSKIJ IS. (ex 4J1) ;EU ;C +R1/FJL ;R1F,*/FJL,FJL/* ;FRANZ JOSEPH LAND (ex UA1/4K2) ;EU ;C +SM ;SA-SM,7S-8S ;SWEDEN ;EU ;A +SP ;SN-SR,HF,3Z ;POLAND ;EU ;A +!ST0 ;ST0,6T0-6U0 ;SOUTHEN SUDAN ;AF ;B +ST ;ST,6T-6U ;SUDAN ;AF ;B +SU ;SU,6A-6B ;EGYPT ;AF ;B +SV/A ;SY1MA,SV*/A,*/SV/A ;MT ATHOS ;EU ;B +SV5 ;SV5-SZ5,J45 ;DODECANESE IS. ;EU ;B +SV9 ;SV9-SZ9,J49 ;CRETE ;EU ;B +SV ;SV-SZ,J4 ;GREECE ;EU ;B +S2 ;S2-S3 ;BANGLADESH ;AS ;F +S5 ;S5 ;SLOVENIA (ex YU3) ;EU ;A +S7 ;S7 ;SEYCHELLES ;AF ;C +S9 ;S9 ;SAO TOME & PRINCIPE ;AF ;B +S0 ;S0 ;WESTERN SAHARA ;AF ;Z +TA ;TA1-TC1,YM1 ;TURKEY (EU) ;EU ;C +TA ;TA2-TA9,TB2-TB9,TC2-TC9,YM2-YM9;TURKEY (AS) ;AS ;C +TF ;TF ;ICELAND ;EU ;Z +TG ;TG,TD ;GUATEMALA ;NA ;S +TI9 ;TI9,TE9 ;COCOS IS. ;NA ;S +TI ;TI,TE ;COSTA RICA ;NA ;S +TJ ;TJ ;CAMEROON ;AF ;A +TK ;TK ;CORSICA ;EU ;A +TL ;TL ;CENTRAL AFRICAN REP ;AF ;A +TN ;TN ;CONGO ;AF ;A +TR ;TR ;GABON ;AF ;A +TT ;TT ;CHAD ;AF ;A +TU ;TU ;IVORY COAST ;AF ;Z +TY ;TY ;BENIN ;AF ;Z +TX0 ;TX0 ;CHESTERFIELD IS. ;OC ;L +TZ ;TZ ;MALI ;AF ;Z +T2 ;T2 ;TUVALU ;OC ;M +T30 ;T30 ;WEST KIRIBATI(GILBERT IS.) ;OC ;X +T31 ;T31 ;CENTRAL KIRIBATI(BRITISH PHOENIX IS.) ;OC ;X +T32 ;T32 ;EAST KIRIBATI(LINE IS.) ;OC ;W +T33 ;T33 ;BANABA IS(OCEAN IS.) ;OC ;M +T5 ;T5,6O ;SOMALIA ;AF ;C +T7 ;T7 ;SAN MARINO ;EU ;A +T9 ;T9 ;BOSNIA-HERZEGOVINA (ex YU4,4N4) ;EU ;A +UJ ;UJ-UM ;UZBEKISTAN (ex UI) ;AS ;E +UN ;UN-UQ ;KAZAKHSTAN (ex UL) ;AS ;E +UR ;UR-UZ,EM-EO ;UKRAINE (ex UB) ;EU ;B +UA2 ;U?2,R?2 ;KALININGRAD ;EU ;C +UA/EU ;U?1-U?6,R?1-R?6,U1-U6,R1-R6 ;EUROPEAN RUSSIA ;EU ;C +UA/AS ;U?9,R?9,U9,R9 ;ASIATIC RUSSIA ;AS ;E +UA/AS ;U?8,U?0,R?8,R?0,U8,U0,R8,R0 ;ASIATIC RUSSIA ;AS ;I +VE ;VA7-VG7,VX7,CF7-CK7,XJ7-XO7,VY1 ;CANADA ;NA ;U +VE ;VA6-VG6,VX6,CF6-CK6,XJ6-XO6,VA5-VG5,VX5,CF5-CK5,XJ5-XO5 ;CANADA ;NA ;T +VE ;VA4-VG4,VX4,CF4-CK4,XJ4-XO4 ;CANADA ;NA ;S +VE ;VA3-VG3,VX3,CF3-CK3,XJ3-XO3,VA2-VG2,VX2,CF2-CK2,XJ2-XO2 ;CANADA ;NA ;R +VE ;VA-VG,VO,VX-VY,CF-CK,CY-CZ,XJ-XO ;CANADA ;NA ;Q +VK9L ;VK9L,AX9L ;LORD HOWE IS. ;OC ;L +VK9M ;VK9JW,VK9ZR,VK9MR,VK9ZM ;MELLISH REEF ;OC ;K +VK9N ;VK9N,AX9N ;NORFOLK IS. ;OC ;L +VK9W ;VK9Z,AX9Z,VK9TR ;WILLIS IS. ;OC ;K +VK9X ;VK9X,AX9X ;CHRISTMAS IS. ;OC ;H +VK9C ;VK9Y,AX9Y,VK9WB,VK9EW ;COCOS-KEELING IS. ;OC ;H +VK9? ;VK9 ;COCOS-KEELING IS., /LORD HOWE IS., /MELLISH IS., /NORFOLK IS., /WILLIS IS., /CHRISTMAS IS. ;OC ;K +VK0/M ;VK0AE,VK0GC,VK0WH ;MACQUARIE ;OC ;K +VK0/H ;VK0HM,VK0HI,VK0CW,VK0DA,VK0IR ;HEARD IS. ;AF ;E +VK0/? ;VK0 ;HEARD IS., /MACQUARIE IS. +VK ;VH-VN,VZ,AX ;AUSTRALIA ;OC ;K +VP2E ;VP2E,VP25E ;ANGUILLA ;NA ;Q +VP2M ;VP2M ;MONTSERRAT ;NA ;Q +VP2V ;VP2V ;BRITISH VIRGIN IS. ;NA ;Q +VP5 ;VP5 ;TURKS & CAICOS IS. ;NA ;R +VP8/G ;VP8BUB,VP8CDJ,VP8SGP ;SOUTH GEORGIA ;SA ;P +VP8/O ;LU1Z,VP8BXK ;SOUTH ORKNEY ;SA ;P +VP8/S ;LU2Z,4K1F,CX0XY,HF0POL,LU5ZI,ZX0ECF,VP8CQS,VP8CQR,LZ0A ;SOUTH SHETLAND ;SA ;P +VP8/SW ;VP8SSI ;SOUTH SANDWICH IS. ;SA ;P +VP8 ;VP8CSA ;FALKLAND IS. ;SA ;Q +VP8/? ;VP8,LU?Z ;FALKLAND IS., /SOUTH GEORGIA IS., /SOUTH ORKNEY IS., /SOUTH SANDWICH IS., /SOUTH SHETLAND IS. ;SA ;P +VP9 ;VP9 ;BERMUDA IS. ;NA +VQ9 ;VQ9 ;CHAGOS IS. ;AF ;E +VR6 ;VR6,VP6 ;PITCAIRN IS. ;OC ;U +VR2 ;VS6,VS96,VS97,VR97,VR98,VR2 ;HONG KONG ;AS ;H +VU/A ;VU2JPS ;ANDAMAN & NICOBAR IS. ;AS ;e +VU/L ; ;LACCADIVE IS. ;AS ;e +VU ; ;INDIA ;AS ;e +VU/? ;VT-VW,AT-AW,8T-8Y ;INDIA, /ANDAMAN & NICOBAR IS., /LACCADIVE IS. ;AS ;e +V2 ;V2 ;ANTIGUA & BARBUDA ;NA ;Q +V3 ;V3 ;BELIZE ;NA ;S +V4 ;V4 ;ST KITTS & NEVIS ;NA ;Q +V5 ;V5 ;NAMIBIA ;AF ;B +V6 ;V6 ;MICRONESIA(E CAROLINE IS.) ;OC ;L +V7 ;V7 ;MARSHALL IS. ;OC ;M +V8 ;V8 ;BRUNEI ;OC ;H +XF4 ;XA4-XI4,4A4-4C4,6D4-6J4 ;REVILLA GIGEDO ;NA ;T +XE ;XA-XI,4A-4C,6D-6J ;MEXICO ;NA ;S +XT ;XT ;BURKINA-FASO ;AF ;Z +XU ;XU ;CAMBODIA ;AS ;G +XV ;XV,3W ;VIETNAM ;AS ;G +XW ;XW ;LAOS ;AS ;G +XX9 ;XX9 ;MACAO ;AS ;H +XZ ;XY-XZ,1Z ;MYANMAR ;AS ;f +YA ;YA,T6 ;AFGHANISTAN ;AS ;d +YB ;YB-YH,JZ,PK-PO,7A-7I,8A-8I ;INDONESIA ;OC ;H +YI ;YI ;IRAQ ;AS ;C +YJ ;YJ ;VANUATU ;OC ;L +YK ;YK,6C ;SYRIA ;AS ;B +YL ;YL,UQ ;LATVIA ;EU ;C +YN ;YN,HT,H6-H7 ;NICARAGUA ;NA ;S +YO ;YO-YR ;ROMANIA ;EU ;B +YS ;YS,HU ;EL SALVADOR ;NA ;S +YU ;YT,YU,YZ,4N-4O ;YUGOSLAVIA ;EU ;A +YV0 ;YV0-YY0,4M0 ;AVES IS. ;NA ;Q +YV ;YV-YY,4M ;VENEZUELA ;SA ;Q +ZA ;ZA ;ALBANIA ;EU ;A +ZB ;ZB ;GIBRALTAR ;EU ;A +ZC ;ZC ;UK SOVEREIGN BASES ON CYPRUS ;AS ;B +ZD7 ;ZD7 ;ST HELENA ;AF ;Z +ZD8 ;ZD8 ;ASCENSION IS. ;AF ;Z +ZD9 ;ZD9 ;TRISTAN DE CUNHA & GOUGH IS. ;AF ;Z +ZF ;ZF ;CAYMAN IS. ;NA ;R +ZK1/N ;ZK1CQ,ZK1RS,ZK1BY,ZK1WL,ZK1XP,ZK1XY ;NORTH COOK IS. ;OC ;W +ZK1/S ; ;SOUTH COOK IS ;OC ;W +ZK1/? ;ZK1 ;NORTH COOK IS., /SOUTH COOK IS. ;OC ;W +ZK2 ;ZK2 ;NIUE ;OC ;X +ZK3 ;ZK3 ;TOKELAU IS. ;OC ;X +ZL7 ;ZL7-ZM7 ;CHATHAM IS. ;OC ;M +ZL8 ;ZL8-ZM8 ;KERMADEC IS. ;OC ;M +ZL9 ;ZL9-ZM9 ;AUKLAND & CAMPBELL IS. ;OC ;M +ZL ;ZL-ZM ;NEW ZEALAND ;OC ;M +ZP ;ZP ;PARAGUAY ;SA ;Q +ZS8 ;ZS8MI,ZT8M-ZU8M,ZR8M,ZS8IR ;PRINCE EDWARD & MARION IS. ;AF ;B +!ZS9 ;ZS9 ;WALVIS BAY ;AF +ZS ;ZR-ZU ;REP OF SOUTH AFRICA ;AF ;B +Z2 ;Z2 ;ZIMBABWE ;AF ;B +Z3 ;Z3 ;MACEDONIA (ex YU5,4N5) ;EU ;A +1A0 ;1A0 ;SOVEREIGN MILLITARY ORDER OF MALTA ;EU ;A +1S ;1S,9M0,9M6OO ;SPRATLY IS. ;AS ;H +3A ;3A ;MONACO ;EU ;A +3B6 ;3B6-3B7 ;AGALEGA & ST BRANDON IS. ;AF ;C +3B8 ;3B8 ;MAURITIUS IS. ;AF ;C +3B9 ;3B9 ;RODRIGUEZ IS. ;AF ;C +3C0 ;3C0 ;ANNOBON IS. ;AF ;A +3C ;3C ;EQUATORIAL GUINEA ;AF ;A +3D2/C ;3D2CR,3D2WV,3D2HL,3D2VT,3D2AM,3D2CU,3D2CT ;CONWAY REEF ;OC ;M +3D2/R ;3D2XX,3D2RJ,3D2XV,3D2XR,3D2AP,3D2RO,3D2OQ,3D2RW ;ROTUMA IS ;OC ;M +3D2 ;3D2 ;FIJI IS. ;OC ;M +3DA ;3DA ;SWAZILAND ;AF ;B +3V ;3V,TS ;TUNISIA ;AF ;A +3X ;3X ;GUINEA ;AF ;Z +3Y ;3Y1VC,3Y5X ;BOUVET ;AF ;Z +3Y/P ;3Y1EE,3Y2GV ;PETER 1 IS. ;AN ;S +3Y/? ;3Y ;BOUVET, /PETER 1 IS. ;AF,AN +4J ;4J-4K ;AZERBAIJAN (ex UD) ;AS ;F +4L ;4L ;GEORGIA (ex UF) ;AS ;F +4S ;4P-4S ;SRI LANKA ;AS ;e +4U1/U ;4U1U,4U43-4U44,4U45UN ;UN HEADQUATERS NEW YORK ;NA ;R +4U1/I ;4U?ITU ;ITU GENEVA ;EU ;A +4U1/? ;4U ;UN HEADQUATERS NEW YORK, /ITU GENEVA, etc +!4W ;4W ;YEMEN :AS +4W ;4W ;EAST TIMOR ;OC ;H +4X ;4X,4Z ;ISRAEL ;AS ;B +5A ;5A ;LIBYA ;AF ;B +5B ;5B,C4,H2,P3 ;CYPRUS ;AS ;B +5H ;5H-5I ;TANZANIA ;AF ;C +5N ;5N-5O ;NIGERIA ;AF ;A +5R ;5R-5S,6X ;MADAGASCAR ;AF ;C +5T ;5T ;MAURITANIA ;AF ;Z +5U ;5U ;NIGER ;AF ;A +5V ;5V ;TOGO ;AF ;Z +5W ;5W ;WESTERN SAMOA ;OC ;X +5X ;5X ;UGANDA ;AF ;C +5Y ;5Y-5Z ;KENYA ;AF ;C +6W ;6V-6W ;SENEGAL ;AF ;Z +6Y ;6Y ;JAMAICA ;NA ;R +7O ;7O ;REP OF YEMEN ;AS ;C +7P ;7P ;LESOTHO ;AF ;B +7Q ;7Q ;MALAWI ;AF ;B +7X ;7T-7Y ;ALGERIA ;AF ;Z +8P ;8P ;BARBADOS ;NA ;Q +8Q ;8Q ;MALDIVES ;AS,AF ;E +8R ;8R ;GUYANA ;SA ;P +9A ;9A ;CROATIA (ex YU2) ;EU ;A +9G ;9G ;GHANA ;AF ;Z +9H ;9H ;MALTA ;EU ;A +9J ;9I-9J ;ZAMBIA ;AF ;B +9K ;9K ;KUWAIT ;AS ;C +9L ;9L ;SIERRA LEONE ;AF ;Z +9M2 ;9M2,9M4,9W2,9W4 ;WEST MALAYSIA ;AS ;H +9M6 ;9M6,9M8,9W6,9W8 ;EAST MALAYSIA ;OC ;H +9N ;9N ;NEPAL ;AS ;e +9Q ;9O-9T ;ZAIRE ;AF ;B +9U ;9U ;BURUNDI ;AF ;B +9V ;9V,S6 ;SINGAPORE ;AS ;H +9X ;9X ;RWANDA ;AF ;B +9Y ;9Y-9Z ;TRINIDAD & TOBAGO ;SA ;Q +$END +!---------------------------------------------------------------------------- +!ƒtƒ@ƒCƒ‹‚ÌŒ`Ž® +! ƒJƒ“ƒgƒŠ–¼ ; ƒJƒ“ƒgƒŠŽ¯•ÊŽq ; ‚p‚s‚g ; ‘å—¤–¼ ; ƒ^ƒCƒ€ƒ][ƒ“ +! +!œ@s‚Ìæ“ª‚̂̓Rƒƒ“ƒgƒR[ƒh,<$>‚ÍI—¹ƒR[ƒh +!œ@ƒJƒ“ƒgƒŠ–¼‚Í‚W•¶ŽšˆÈ“àB +!œ@ƒJƒ“ƒgƒŠŽ¯•ÊŽq‚Í<,>‚Å‹æØ‚Á‚Ä•¡”ŒÂ‹Lq‰ÂB +!œ@‚p‚s‚g‚Í”CˆÓ‚Ì•¶Žš—ñ +!œ@‘å—¤–¼‚Í NA, SA, EU, OC, AF, AS, AN +!œ ƒ^ƒCƒ€ƒ][ƒ“‚ÍA`ZiJ‚𜂭j‚Å‹Lq‚·‚éB¬•¶Žš‚Í{‚R‚O•ª +!œ º°ÄÞ‚Í”CˆÓ‚̈ʒu‚É‚ ‚Á‚Ä‚à—Ç‚¢ +!œ@‚Ps‚Q‚T‚T•¶ŽšˆÈ“àB +!œ@’è‹`‚·‚ésiƒRƒƒ“ƒgs‚𜂭j‚ÍÅ‘å‚T‚P‚Qs‚܂Š+!œ@‚±‚̃tƒ@ƒCƒ‹‚ðƒlƒbƒg“™‚Å—¬’Ê‚³‚¹‚éꇂÍAÅŒã‚Ì•ÏX—š—ð‚ɒljÁ‹LÚ‚·‚é +! ‚±‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B +! +!ƒJƒ“ƒgƒŠŽ¯•ÊŽq +! 1.ƒvƒŠƒtƒBƒbƒNƒXiƒR[ƒ‹ƒTƒCƒ“j‚Ì—…—ñ +! 9M2,9M4,9W2,9W4 +! JD1YAA,JD1BIY +! ¦ ƒR[ƒ‹ƒTƒCƒ“‚ª’Z‚¢ê‡‚ÍI’[‹L†i\j‚ð•t‰Á‚µ‚½‚Ù‚¤‚ª—Ç‚¢ +! BV9P ¨ BV9PA‚àŠÜ‚Ü‚ê‚é +! BV9P\ ¨ BV9P‚Ì‚Ý +! +! 2.”͈͂̎w’è +! DA-DR,Y2-Y9 +! EA6-EH6,AM6-AO6 +! ”͈͓͂¯‚¶ˆÊ’u‚Ì‚Pƒ–Š‚Ì‚Ý‚ð¸‡‚Å‹Lq +! JA-JS EA6-EH6 OK +! JS-JA(~‡) EA6-EH7(‚Qƒ–Š) NG +! +! 3.ƒƒCƒ‹ƒhƒJ[ƒhi”͈͂̕¡‡‰Âj +! U?1-U?6,R?1-R?6 +! SV*/A,*/SV/A +! =‚·‚ׂĂ̕¶Žš, <*>=‚·‚ׂĂ̕¶Žš—ñ +! +! 4.ʼn‚É’è‹`‚µ‚½‚Ù‚¤‚ª—D悳‚ê‚é +! JD1/M ;JD1YAA ; MINAMI TORISHIMA ;OC +! JA ;JA-JS ; JAPAN ;AS +! ã‹L‚Ì—á‚Å‚ÍJD1YAA‚ÍJA-JS‚É‚àŠÜ‚Ü‚ê‚邪A‚»‚Ì‘O‚ÉJD1/M‚Ì’è‹` +! ‚ª‚ ‚é‚̂ł»‚¿‚炪—D悳‚ê‚é +! +!<<<•ÏX—š—ð>>> +! Jan 15, 1996 - BV9P’ljÁ JE3HHT +! Feb 15, 1996 - BS7H’ljÁ JE3HHT +! Aug. 4, 1998 - VR98’ljÁ@JQ3UDL +! Aug. 4, 1998 - TA(AS)•ÏX@JQ3UDL +! Nov. 15, 1998 - BQ9P’ljÁ@JQ3UDL +! Feb. 7, 1999 - FO0/M’ljÁ@JQ3UDL +! Feb. 7, 1999 - FO0/A’ljÁ@JQ3UDL +! Feb. 7, 1999 - H40’ljÁ@JQ3UDL +! Jul. 10, 1999 - E4’ljÁ@ JQ3UDL +! Nov. 15. 1999 - 9M6OO’ljÁ JQ3UDL +! Nov. 20. 1999 - B1-B9’ljÁ JQ3UDL +! Jan. 06. 2000 - ST0íœ JE3HHT +! Feb. 15. 2000 - VR6‚ÉVP6’ljÁ JE3HHT +! Mar. 03. 2000 - FO0X‚ÉFO0AAA’ljÁ JE3HHT +! Mar. 20. 2000 - FO0X=>FO/C,FO0/M=>FO/M,FO0/A=>FO/A‚É•ÏX JQ3UDL +! Mar. 20. 2000 - 4W’ljÁ JQ3UDL +! Mar. 21. 2000 - TX0’ljÁ JE3HHT +! Jan. 07. 2001 - P2‚͈͕̔ÏX JQ3UDL +! Jan. 08. 2001 - KG4”͈͕ÏX JQ3UDL +! Jan. 08. 2001 - LZ0A’ljÁ JQ3UDL + \ No newline at end of file diff --git a/App.ico b/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..f3368fd3e8c1fa260c9fa5715e1a83c8fe7d0b1c GIT binary patch literal 1078 zcmc(d&27Ul429{m=gK4aRAh{frZsZ%3f;gSK!DchQC9;7*pK>g8pA~bz5&8N_GO>Rn}lf9q0y2&|g?(F+4Ml!c1q!N%+v5Gj@h#lW!AP<^iWENfr~xTJ;Qx$(C4r bCNw2CWb>sxvG5g`j*Dwx(ZT|L{SE!SYhReFF*T!SUsk&rT<!ObvA@}k4sa}. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "math.h" +#include "CLX.h" + +///---------------------------------------------------------------- +/// •¡‘f”‰‰ŽZƒNƒ‰ƒX +void CLX::Div(const CLX &ref) +{ + double R, J, D; + R = r * ref.r + j * ref.j; + J = j * ref.r - r * ref.j; + D = ref.r * ref.r + ref.j * ref.j; + if( D ){ + r = R/D; + j = J/D; + } + else { + r = R >= 0 ? 1e100 : -1e100; + j = J >= 0 ? 1e100 : -1e100; + } +} + +CLX CLX::Sqrt(void) +{ + CLX a; + + double R, ST; + R = sqrt(sqrt(r*r + j*j)); + ST = 0; + if( r ) ST = atan2(j, r)/2.0; + a.r = R*cos(ST); + a.j = R*sin(ST); + return a; +} + +CLX operator+(const double R, const CLX &ref) +{ + CLX a(R); + a+=ref; + return a; +} +CLX operator-(const double R, const CLX &ref) +{ + CLX a(R); + a-=ref; + return a; +} +CLX operator*(const double R, const CLX &ref) +{ + CLX a(R); + a*=ref; + return a; +} +CLX operator/(const double R, const CLX &ref) +{ + CLX a(R); + a/=ref; + return a; +} +#pragma package(smart_init) diff --git a/CLX.h b/CLX.h new file mode 100644 index 0000000..2c8ff3e --- /dev/null +++ b/CLX.h @@ -0,0 +1,181 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef CLXH +#define CLXH +//--------------------------------------------------------------------------- +///---------------------------------------------------------------- +/// •¡‘f”‰‰ŽZƒNƒ‰ƒX +class CLX { +public: + double r; + double j; + inline CLX(void){}; + inline CLX(const double R){ + r = R; + j = 0; + }; + inline CLX(const double R, const double J){ + r = R; + j = J; + }; + inline CLX(CLX &ref){ + r = ref.r; + j = ref.j; + }; + inline void Add(const CLX &ref){ + r += ref.r; + j += ref.j; + }; + inline void Add(const double &R){ + r += R; + }; + inline void Sub(const CLX &ref){ + r -= ref.r; + j -= ref.j; + }; + inline void Sub(const double &R){ + r -= R; + }; + inline double Abs(void){ + return sqrt(r * r + j * j); + }; + inline double vAbs(void){ + return r * r + j * j; + }; + inline void Mul(CLX &z, const CLX &ref){ + z.r = r * ref.r - j * ref.j; + z.j = r * ref.j + j * ref.r; + } + inline void Mul(const CLX &ref){ + CLX z; + z.r = r * ref.r - j * ref.j; + z.j = r * ref.j + j * ref.r; + r = z.r; j = z.j; + }; + void Div(const CLX &ref); + inline void Mul(const double &R){ + r *= R; j *= R; + } + inline void Div(const double &R){ + r /= R; j /= R; + } + CLX Sqrt(void); + inline void PhDiff(CLX &z, const CLX &ref){ + z.r = r * ref.r + j * ref.j; + z.j = j * ref.r - r * ref.j; + + }; + inline double Phase(void){ + if( r && j ){ + return atan2(j, r); + } + else { + return 0; + } + }; + inline BOOL IsSame(const CLX &ref){ + return ((r == ref.r) && (j == ref.j)); + }; + inline CLX& operator=(const CLX &ref){ + if( this != &ref ){ + r = ref.r; + j = ref.j; + } + return *this; + }; + inline CLX& operator+=(const CLX &ref){ + Add(ref); + return *this; + }; + inline CLX& operator+=(const double R){ + Add(R); + return *this; + }; + inline CLX& operator-=(const CLX &ref){ + Sub(ref); + return *this; + }; + inline CLX& operator-=(const double R){ + Sub(R); + return *this; + }; + inline CLX& operator*=(const CLX &ref){ + Mul(ref); + return *this; + }; + inline CLX& operator*=(const double R){ + Mul(R); + return *this; + }; + inline CLX& operator/=(const CLX &ref){ + Div(ref); + return *this; + }; + inline CLX& operator/=(const double R){ + Div(R); + return *this; + }; + inline CLX operator+(const CLX &ref) const { + CLX a(r, j); + a+=ref; + return a; + }; + inline CLX operator+(const double R) const { + CLX a(r, j); + a+=R; + return a; + }; + inline CLX operator-(const CLX &ref) const { + CLX a(r, j); + a-=ref; + return a; + }; + inline CLX operator-(const double R) const { + CLX a(r, j); + a-=R; + return a; + }; + inline CLX operator*(const CLX &ref) const { + CLX a(r, j); + a*=ref; + return a; + }; + inline CLX operator*(const double R) const { + CLX a(r, j); + a*=R; + return a; + }; + inline CLX operator/(const CLX &ref) const { + CLX a(r, j); + a/=ref; + return a; + }; + inline CLX operator/(const double R) const { + CLX a(r, j); + a/=R; + return a; + }; + friend CLX operator+(const double R, const CLX &ref); + friend CLX operator-(const double R, const CLX &ref); + friend CLX operator*(const double R, const CLX &ref); + friend CLX operator/(const double R, const CLX &ref); +}; +#endif diff --git a/COPYING.LESSER.txt b/COPYING.LESSER.txt new file mode 100644 index 0000000..02bbb60 --- /dev/null +++ b/COPYING.LESSER.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. \ No newline at end of file diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..20d40b6 --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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, either 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 for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/ClockAdj.cpp b/ClockAdj.cpp new file mode 100644 index 0000000..b3705fe --- /dev/null +++ b/ClockAdj.cpp @@ -0,0 +1,449 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ClockAdj.h" +#include "Main.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TClockAdjDlg *ClockAdjDlg; +static int s_Gain = 0x0108; +//--------------------------------------------------------------------- +__fastcall TClockAdjDlg::TClockAdjDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + pBitmap = new Graphics::TBitmap(); + pBitmap->Width = PaintBox->Width; + pBitmap->Height = PaintBox->Height; +// pBitmap->Palette = MmttyWd->UsrPal; + + switch(SampType){ + case 0: + UpDown->Max = 11599; + UpDown->Min = 10000; + break; + case 1: + UpDown->Max = 9999; + UpDown->Min = 7000; + break; + case 2: + UpDown->Max = 6999; + UpDown->Min = 5000; + break; + case 3: + UpDown->Max = 12500; + UpDown->Min = 11600; + break; + } + TRect rc; + int XL = 0; + int XR = pBitmap->Width - 1; + int YT = 0; + int YB = pBitmap->Height - 1; + rc.Left = XL; + rc.Right = XR; + rc.Top = YT; + rc.Bottom = YB+1; + TCanvas *cp = pBitmap->Canvas; + cp->Brush->Color = clBlack; + cp->FillRect(rc); + + m_CursorX = XR - 20; + + pDem = NULL; + pTick = NULL; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + cp->Font->Name = ((TForm *)AOwner)->Font->Name; + cp->Font->Charset = ((TForm *)AOwner)->Font->Charset; + cp->Font->Color = clWhite; + cp->Font->Size = 10; + int FH = cp->TextHeight("A"); + int Y = 5; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "Calibrating the Sound Card with a Time Standard Broadcast Station"; +// "Adjust Sampling Frequency using an off-air time signal"; +// Caption = "Adjust Sampling freq. (Recive WWV tick sound on Mark freq.)"; + CancelBtn->Caption = "Cancel"; + + cp->TextOut(10, Y, "1.Tune your radio to WWV or another 1-second tick standard. Set the radio display"); Y+=FH; + cp->TextOut(10, Y, " to the carrier frequency."); Y+=FH; + cp->TextOut(10, Y, "2.Wait for about three minutes. If you are using 11025 Hz. calibration, you should"); Y+=FH; + cp->TextOut(10, Y, " see two lines of marks (vertical or slanted), corresponding to the 1-second tick"); Y+=FH; + cp->TextOut(10, Y, " sound bursts transmitted by the time-standard broadcast station. You will see only"); Y+=FH; + cp->TextOut(10, Y, " one line with 8000 Hz. or 6000 Hz."); Y+=FH; + cp->TextOut(10, Y, "3.Right-click to move the vertical green line to the tick line. This allows you to"); Y+=FH; + cp->TextOut(10, Y, " compare the tick line to vertical."); Y+=FH; + cp->TextOut(10, Y, "4.Left-click a low tick burst mark (bottom one if possible), and move the cursor to"); Y+=FH; + cp->TextOut(10, Y, " the top of the line. You will see a yellow line on the display."); Y+=FH; + cp->TextOut(10, Y, "5.Overlay the yellow line with the tick mark line, and left-click a high burst mark"); Y+=FH; + cp->TextOut(10, Y, " (top one if possible)."); Y+=FH; + cp->TextOut(10, Y, "6.This will automatically put the correct clock frequency in the adjust window."); Y+=FH; + cp->TextOut(10, Y, "7.Click OK to leave the setup display and to memorize the new value."); Y+=FH; + cp->TextOut(10, Y, "8.Restart MMTTY for the new clock value to take effect."); + +#if 0 + cp->TextOut(10, 10, "1.Receive WWV in AM or SSB mode. Tune the radio to the carrier frequency."); + cp->TextOut(10, 30, "2.Let this adjustment display run for a few minutes, and look for one or two"); + cp->TextOut(10, 50, " almost-vertical lines of dots. If you do not see this, wait for up to ten minutes."); + cp->TextOut(10, 70, "3.If your sound card clock is far out of adjustment, the lines will be very slanted."); + cp->TextOut(10, 90, "4.Click the 1st point on the slanted line."); + cp->TextOut(10,110, "5.And then click the 2nd point on the same line. The value of clock will be revised"); + cp->TextOut(10,130, " automatically. If there is distance of 1st point and 2nd point, precision is better."); + cp->TextOut(10,160, "If the first degree of slant is very big, please repeat once again, because an error"); + cp->TextOut(10,180, "remains a little."); + cp->TextOut(10,200, "WWV - 2.5, 5, 10MHz // GBR - 60KHz // RWM - 4.996, 9.996, 14.996MHz"); + cp->TextOut(10,240, "Left click - Start adjustment"); + cp->TextOut(10,260, "Right click - Move vertical cursor"); +#endif + } + else { + cp->TextOut(10, Y, "1.JJY‚ðAM‚Ü‚½‚ÍSSB‚ÅŽóM‚µA‚±‚̉æ–ʂ̉º‚É‚ ‚éMark‚É1000Hz‚Ü‚½‚Í"); Y+=FH; + cp->TextOut(10, Y, " 1600Hz‚ðݒ肵‚Ü‚·."); Y+=FH; + cp->TextOut(10, Y, "2.SSB‚Ìꇂ͂P•bƒ`ƒbƒN‰¹‚ªMark‚Éd‚È‚é‚æ‚¤‚ÉŽóMŽü”g”‚ð’²®‚µ‚Ü‚·."); Y+=FH; + cp->TextOut(10, Y, "3.‚µ‚΂炭ŽóM‚µ‚Äc‚Ü‚½‚͎΂߃‰ƒCƒ“‚ª•\ަ‚³‚ê‚é‚Ì‚ð‘Ò‚¿‚Ü‚·i”•ªj."); Y+=FH; + cp->TextOut(10, Y, "4.ü‚ª‚’¼‚Ìꇂ̓NƒƒbƒN’l‚ͳŠm‚Å‚·BŽÎ‚߂ɂȂÁ‚Ä‚¢‚éꇂÍA"); Y+=FH; + cp->TextOut(10, Y, " ‚»‚̎΂ßü‚Ìʼn‚Ì’[“_‚ðƒNƒŠƒbƒN‚µ‚Ü‚·."); Y+=FH; + cp->TextOut(10, Y, "5.X‚É“¯‚¶ŽÎ‚ßü‚Ì”½‘Α¤‚Ì’[“_‚ðƒNƒŠƒbƒN‚·‚邯ƒNƒƒbƒN’l‚ªŽ©“®“I‚É"); Y+=FH; + cp->TextOut(10, Y, " ݒ肳‚ê‚Ü‚·.i2“_ŠÔ‚Ì‹——£‚ª’·‚¢‚Ù‚¤‚ª³Šm‚Å‚·j"); Y+=FH; + cp->TextOut(10, Y, "ŒXŽÎ‚ª”ñí‚ɑ傫‚¢ê‡Aã‹L‚̎葱‚«‚ð‚à‚¤ˆê“xŒJ‚è•Ô‚µ‚ĉº‚³‚¢."); Y+=FH+FH; + cp->TextOut(10, Y, "JJY‚Ì‘ã‚í‚è‚ÉAJMH,JMG‚ȂǂÌFAX•ú‘—‚Ì0.5•b–ˆ‚̃fƒbƒhƒZƒNƒ^‚ð—˜—p‚µ‚Ä‚à"); Y+=FH; + cp->TextOut(10, Y, "OK‚̂悤‚Å‚·."); Y+=FH; + cp->TextOut(10, Y, "¶ƒNƒŠƒbƒN - ’²®‚ÌŠJŽn"); Y+=FH; + cp->TextOut(10, Y, "‰EƒNƒŠƒbƒN - ‚’¼ƒJ[ƒ\ƒ‹ˆÚ“®"); + } + m_agcMax = 8192; + m_agcMin = 0; + m_agcSumMax = 8192 * AGCAVG; + m_Point = 0; +// SBHelp->Visible = !JanHelp.IsEmpty(); + SBHelp->Visible = FALSE; +} +//--------------------------------------------------------------------- +__fastcall TClockAdjDlg::~TClockAdjDlg() +{ + pDem = NULL; + pTick = NULL; + pBitmap->Palette = NULL; + delete pBitmap; + pBitmap = NULL; +} +//--------------------------------------------------------------------------- +// Œ»Ý‚̘_—ƒpƒŒƒbƒg‚ð•Ô‚·iTControl::GetPalette‚̃I[ƒoƒ‰ƒCƒhŠÖ”j +HPALETTE __fastcall TClockAdjDlg::GetPalette(void) +{ + pBitmap->Palette = MmttyWd->UsrPal; + return MmttyWd->UsrPal; +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::UpdateTB(void) +{ + TBGAIN->Enabled = !SBAGC->Down; + LG->Font->Color = SBAGC->Down ? clGrayText : clBlack; +} +//--------------------------------------------------------------------- +void __fastcall TClockAdjDlg::UpdatePPM(void) +{ + int d = ((UpDown->Position - SampBase) * 1000000.0 / SampBase) + 0.5; + + char bf[64]; + sprintf(bf, "%d ppm", d); + LPPM->Caption = bf; +} +//--------------------------------------------------------------------- +int __fastcall TClockAdjDlg::Execute(TSound *p, double &Samp) +{ + pSound = p; + pDem = &p->FSKDEM; + pTick = &pDem->Tick; + pTick->m_Samp = int(Samp); + InitColorTable(clBlack, clWhite); + MmttyWd->ReqPaletteChange(); + if( (Samp > UpDown->Max) || (Samp < UpDown->Max) ){ + Samp = SampFreq; + } + EditClock->Text = int(Samp); + UpDown->Position = SHORT(Samp); + pDem->Tick.Init(); + pDem->m_Tick = 1; + m_DisEvent++; + double SaveMarkFreq = pDem->GetMarkFreq(); + double SaveSpaceFreq = pDem->GetSpaceFreq(); + int SaveAFC = sys.m_AFC; + int SaveBPF = pSound->m_bpf; + int SaveType = pSound->FSKDEM.m_type; + pSound->m_bpf = 0; + sys.m_AFC = 0; + if( SaveType == 2 ) pSound->FSKDEM.m_type = 0; + UDMark->Position = 1000; + pDem->SetMarkFreq(1000.0); + pDem->SetSpaceFreq(1200.0); + TBGAIN->Position = s_Gain & 0x00ff; + SBAGC->Down = s_Gain & 0xff00 ? 1 : 0; + UpdateTB(); + m_DisEvent--; + UpdatePPM(); + int r = ShowModal(); + InitColorTable(sys.m_ColorLow, sys.m_ColorHigh); + s_Gain = (s_Gain & 0x00ff) | (SBAGC->Down ? 0x0100 : 0); + pDem->m_Tick = 0; + pDem->SetMarkFreq(SaveMarkFreq); + pDem->SetSpaceFreq(SaveSpaceFreq); + sys.m_AFC = SaveAFC; + pSound->m_bpf = SaveBPF; + pSound->FSKDEM.m_type = SaveType; + MmttyWd->ReqPaletteChange(); + if( r == IDOK ){ + Samp = UpDown->Position; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------- +void __fastcall TClockAdjDlg::TimerTimer(TObject *Sender) +{ + if( pBitmap == NULL ) return; + if( pDem == NULL ) return; + if( pTick == NULL ) return; + + int *p = pTick->GetData(); + if( p == NULL ) return; + + TCanvas *tp = pBitmap->Canvas; + TRect rc; + int XL = 0; + int XR = pBitmap->Width - 1; + int YT = 0; + int YB = pBitmap->Height - 1; + rc.Left = XL; + rc.Right = XR; + rc.Top = YT; + rc.Bottom = YB+1; + + TRect src(rc); + src.Bottom--; + rc.Top++; + tp->CopyRect(rc, tp, src); + + int mx = -MAXINT; + int mi = MAXINT; + int x, xx, d; + double k1 = 16384.0/double(m_agcMax - m_agcMin); + double k2; + if( SBAGC->Down ){ + k2 = 128.0 / 16384.0; + } + else { + k2 = (128.0 * (s_Gain & 0x00ff)) / (4096 * 16); + } + for( x = 0; x < XR; x++){ + xx = (x * pTick->m_Samp)/pBitmap->Width; + d = p[xx]; + if( mx < d ) mx = d; + if( mi > d ) mi = d; + if( SBAGC->Down ){ + d -= m_agcMin; + if( m_agcMax > 0 ) d = double(d) * k1; + } + d = double(d) * k2; + + if( d >= 128 ) d = 127; + if( d <= 0 ) d = 0; + tp->Pixels[x][0] = TColor(ColorTable[127-d] | sys.d_PaletteMask); + } + m_agcSumMax -= m_agcMax; + m_agcSumMax += mx; + if( m_agcSumMax < (4096*AGCAVG) ) m_agcSumMax = (4096*AGCAVG); + m_agcMax = m_agcSumMax / AGCAVG; + m_agcMin = mi; + if( m_agcMin > 2048 ) m_agcMin = 2048; + m_PointY++; + PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap); + PaintCursor(); +#if 0 + PaintBox->Canvas->Font->Color = clWhite; + char bf[128]; + sprintf(bf, "curMax:%d", mx); + PaintBox->Canvas->TextOut( 500, 200, bf ); + sprintf(bf, "agcMax:%d", m_agcMax); + PaintBox->Canvas->TextOut( 500, 220, bf ); + sprintf(bf, "agcMin:%d", m_agcMin); + PaintBox->Canvas->TextOut( 500, 240, bf ); + sprintf(bf, "SumMax:%d", m_agcSumMax); + PaintBox->Canvas->TextOut( 500, 260, bf ); +#endif +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::DrawMessage(LPCSTR p) +{ + int xr = PaintBox->Canvas->TextWidth(p); + int xl = (PaintBox->Width - xr)/2; + xr += xl; + int FH = PaintBox->Canvas->TextHeight(p); + int VC = PaintBox->Height - FH; + PaintBox->Canvas->Pen->Color = clWhite; + PaintBox->Canvas->Brush->Color = clBlack; + PaintBox->Canvas->RoundRect(xl-10, VC-FH, xr+10, VC+FH, 10, 10); + PaintBox->Canvas->Font->Color = clWhite; + PaintBox->Canvas->TextOut(xl, VC-FH/2, p); +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::PaintCursor(void) +{ + PaintBox->Canvas->Pen->Color = clLime; + PaintBox->Canvas->Pen->Style = psDot; + PaintBox->Canvas->MoveTo(m_CursorX, 0); + int rop = ::SetROP2(PaintBox->Canvas->Handle, R2_MASKPENNOT); + PaintBox->Canvas->LineTo(m_CursorX, pBitmap->Height - 1); + ::SetROP2((HDC)PaintBox->Canvas, rop); + if( m_Point ){ + PaintBox->Canvas->Pen->Color = clYellow; + PaintBox->Canvas->Pen->Style = psSolid; + PaintBox->Canvas->MoveTo(m_PointX, m_PointY); + ::SetROP2(PaintBox->Canvas->Handle, R2_MASKPENNOT); + PaintBox->Canvas->LineTo(m_PointX2, m_PointY2); + ::SetROP2((HDC)PaintBox->Canvas, rop); + char bf[256]; + if( Font->Charset != SHIFTJIS_CHARSET ){ + sprintf( bf, "OK : Left button, Cancel : Right button Clock=%.1lf", GetPointSamp()); + } + else { + sprintf( bf, "Œˆ’è : ¶ƒ{ƒ^ƒ“, ’†Ž~ : ‰Eƒ{ƒ^ƒ“ Clock=%.1lf", GetPointSamp()); + } + DrawMessage(bf); + if( PaintBox->Cursor != crCross ) PaintBox->Cursor = crCross; + } + else { + if( PaintBox->Cursor != crDefault ) PaintBox->Cursor = crDefault; + } +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::UpDownClick(TObject *Sender, TUDBtnType Button) +{ + if( pTick == NULL ) return; + + pTick->m_Samp = UpDown->Position; + UpdatePPM(); +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::PaintBoxPaint(TObject *Sender) +{ + PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap); + PaintCursor(); +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::PaintBoxMouseUp(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + if( Button == mbLeft ){ + if( m_Point ){ + m_Point = 0; + if( m_PointY2 != m_PointY ){ + int newc = int(GetPointSamp() + 0.5); + pTick->m_Samp = newc; + UpDown->Position = SHORT(newc); + ModalResult = mrOk; + } + } + else { + m_PointX2 = m_PointX = X; + m_PointY2 = m_PointY = Y; + m_Point = 1; + } + } + else if( m_Point ){ + m_Point = 0; + } + else { + m_CursorX = X; + } + PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap); + PaintCursor(); +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::MarkFreqChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + int dd; + if( sscanf(AnsiString(MarkFreq->Text).c_str(), "%lu", &dd ) == 1){ //JA7UDE 0428 + if( (dd >= 300) && (dd <= 2700) ){ + m_DisEvent++; + UDMark->Position = SHORT(dd); + pDem->SetMarkFreq(dd); + pDem->SetSpaceFreq(dd + 200); + m_DisEvent--; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::TBGAINChange(TObject *Sender) +{ + s_Gain = (s_Gain & 0xff00) | TBGAIN->Position; +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::UDMarkClick(TObject *Sender, TUDBtnType Button) +{ + if( m_DisEvent ) return; + + pDem->SetMarkFreq(UDMark->Position); + pDem->SetSpaceFreq(UDMark->Position + 200); +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::SBAGCClick(TObject *Sender) +{ + UpdateTB(); +} +//--------------------------------------------------------------------------- +double __fastcall TClockAdjDlg::GetPointSamp(void) +{ + if( m_PointY == m_PointY2 ) return pTick->m_Samp; + double d = (m_PointX2 - m_PointX); + d = d * pTick->m_Samp / pBitmap->Width; + d /= (m_PointY - m_PointY2); + d += pTick->m_Samp; + return d; +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::PaintBoxMouseMove(TObject *Sender, + TShiftState Shift, int X, int Y) +{ + if( m_Point ){ + m_PointX2 = X; + m_PointY2 = Y; + PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap); + PaintCursor(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TClockAdjDlg::SBHelpClick(TObject *Sender) +{ +#if 1 + ShowHtmlHelp(); +#else + ShowHelp(25); +#endif +} +//--------------------------------------------------------------------------- diff --git a/ClockAdj.dfm b/ClockAdj.dfm new file mode 100644 index 0000000000000000000000000000000000000000..63c84a077af87d6679bdef5e339f51cd8ef4907f GIT binary patch literal 2510 zcmcguO>E;t6rR|Lf0DG@mQ%%nNN`{!cIB2IEkDwdIL%L+#8K@oaDu5lO-v^%I*H}Kfb7sf!j%RMJrvsU zIYz2>95sE2=}0wU5c`yDJpllCJNZ1hn|zsk%AT|2i)8HliUUN9?>~r94Lk|<+3z*5 znf!GAZbI1?e}3|@@nI6Mk@#|C{9@m;u7awGeMI68@<-!XzFlBJrSGr!UObj(Qpu#4 zhN|x3Moe1JMb#E1@pW?y!wALdhTZA5oc*r-y4k58+Ivn}EORH7IbrCYR`{GiknZdJ zZ2%`|izNlT46Y?lCpBOs-x%K-KNw#dVhhf_0@f|;nIVEPveJy`+K@(mngn${ptc(# zL`)Vg3d_ULC$a59mN6xu14@v>-#l$?=+6+2hA8Y3cPzb8cF=52SlR@N(}TwdE8OmI z9i(C^gM6z{;%ShsD)ZnsGYOOu*AA?D?+O*~aTOQtk6(5#_F;IMdl!4dVPE*Zcft47 z+*hklV`}?vAuSI=zxJ$Q7_}gn08n-803ok2jblnmcB9@l#f~QhPUi3uneB2NV|vES zQJ|OGA)N+Y;-Q&T$N^-w%c|hj`oQk~Yq9@Wh^<_4{0WL`19Vn9q!UP1WG)Y3$Ye}Q zLt7VPdrZ$dOj1qDN2*0wb-Jf&ne*f0Jc&}TEeL-l2)8oAkLD@Nc@^8xC;vOK3nD3Y zql0iDg8oeeZDm1kXF)%f2VJ=NUm{*QcMp|9If)t+dtg}+^_Cy`$Cy=KCO}2RK370> z=4EFcur478{e6MZOP2{r)`8kYCvb{mz0#*1#D^$iFH%8s;4we%66+Az?z#zyi_$(M z5MGpcVdp7ZASmKXJxkqIiEVS1VAd+%Nj^(fu%rc6A+4n$BnX$dC}o7pb;ls;cR3e+nri)_Lod`4Z%7Wk8;spRZ=eypd4w>S~g?rINt zAro_3?M_hI%ax73?}jv@CvmOY->W@;Lpwy!vj{%d7p&!C+Ip2@+O|?*kAfyWBZ_zk zB)p2Wkt6B#D59>(Zu#mCUrqN_THDI)H*0{90g`~l(s literal 0 HcmV?d00001 diff --git a/ClockAdj.h b/ClockAdj.h new file mode 100644 index 0000000..66458e2 --- /dev/null +++ b/ClockAdj.h @@ -0,0 +1,118 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef ClockAdjH +#define ClockAdjH +//---------------------------------------------------------------------------- +/* JA7UDE 0428 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +#include "Comlib.h" +#include "sound.h" +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +#define AGCAVG 4 +//---------------------------------------------------------------------------- +class TClockAdjDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TPanel *Panel; + TPaintBox *PaintBox; + TEdit *EditClock; + TLabel *Label1; + TUpDown *UpDown; + TTimer *Timer; + TComboBox *MarkFreq; + TLabel *Label2; + TLabel *LPPM; + TTrackBar *TBGAIN; + TUpDown *UDMark; + TSpeedButton *SBAGC; + TLabel *LG; + TSpeedButton *SBHelp; + void __fastcall TimerTimer(TObject *Sender); + void __fastcall UpDownClick(TObject *Sender, TUDBtnType Button); + void __fastcall PaintBoxPaint(TObject *Sender); + void __fastcall PaintBoxMouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + + void __fastcall MarkFreqChange(TObject *Sender); + void __fastcall TBGAINChange(TObject *Sender); + + void __fastcall UDMarkClick(TObject *Sender, TUDBtnType Button); + void __fastcall SBAGCClick(TObject *Sender); + void __fastcall PaintBoxMouseMove(TObject *Sender, TShiftState Shift, int X, + int Y); + + void __fastcall SBHelpClick(TObject *Sender); +private: + Graphics::TBitmap *pBitmap; + TSound *pSound; + CFSKDEM *pDem; + CTICK *pTick; + + int m_DisEvent; + + int m_agcMin; + int m_agcMax; + int m_agcSumMax; + + DYNAMIC HPALETTE __fastcall GetPalette(void); + void __fastcall UpdateTB(void); + void __fastcall UpdatePPM(void); + void __fastcall PaintCursor(void); + int m_CursorX; + + void __fastcall DrawMessage(LPCSTR p); + double __fastcall GetPointSamp(void); + int m_Point; + int m_PointX; + int m_PointY; + int m_PointX2; + int m_PointY2; + + AnsiString m_Help; +public: + virtual __fastcall TClockAdjDlg(TComponent* AOwner); + __fastcall TClockAdjDlg::~TClockAdjDlg(); + + int __fastcall Execute(TSound *p, double &Samp); +}; +//---------------------------------------------------------------------------- +//extern TClockAdjDlg *ClockAdjDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/ComLib.cpp b/ComLib.cpp new file mode 100644 index 0000000..048053d --- /dev/null +++ b/ComLib.cpp @@ -0,0 +1,3590 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ComLib.h" +#include "rtty.h" +#include "LogFile.h" +//--------------------------------------------------------------------------- +enum TFontPitch { fpDefault, fpVariable, fpFixed }; //JA7UDE 0427 +//--------------------------------------------------------------------------- +//#define SYSMB 1 // MessageBox 0-Application, 1-System +// +char BgnDir[256]; // ‹N“®ƒfƒBƒŒƒNƒgƒŠ +char LogDir[256]; // ŽóM‹L˜^‚̃fƒBƒŒƒNƒgƒŠ +char OutFileDir[256]; // ƒeƒLƒXƒg‘—Mƒtƒ@ƒCƒ‹‚̃fƒBƒGƒNƒgƒŠ +char MMLogDir[256]; // MMLOGƒtƒ@ƒCƒ‹‚̃fƒBƒŒƒNƒgƒŠ +char ExtLogDir[256]; // ƒGƒNƒXƒ|[ƒgƒtƒ@ƒCƒ‹‚̃fƒBƒŒƒNƒgƒŠ +char RecDir[256]; // ˜^‰¹ƒtƒ@ƒCƒ‹‚̃fƒBƒŒƒNƒgƒŠ +AnsiString JanHelp; + +int WinNT; +int WinVista; //AA6YQ 1.66G + +int FSKCount; +int FSKCount1; +int FSKCount2; +int FSKDeff; + +double SampFreq = 11025.0; // ƒTƒ“ƒvƒŠƒ“ƒOŽü”g” +double SampBase = 11025.0; +double DemSamp = 11025.0*0.5; +int DemOver = 1; +int SampType = 0; +int SampSize = 1024; +int FFT_SIZE=2048; + +SYSSET sys; +LCID lcid; // ƒƒP[ƒ‹î•ñ +DWORD ColorTable[128]; +int DisPaint; +int Remote; +//--------------------------------------------------------------------------- +void __fastcall ShowHtmlHelp(LPCSTR pContext) +{ + char bf[512]; + + sprintf(bf, "%s%s", BgnDir, sys.m_HTMLHelp.c_str()); + FILE *fp; + if( (fp = fopen(bf, "rb"))!=NULL ){ + fclose(fp); + + HWND hd; + if( Screen->ActiveForm != NULL ){ + hd = Screen->ActiveForm->Handle; + } + else { + hd = Application->MainForm->Handle; + } + + if( !strcmpi(GetEXT(bf), "HLP") ){ + ::WinHelp(hd, bf, HELP_FINDER, 0); + } + else if( !strcmpi(GetEXT(bf), "CHM") ){ + if( pContext ){ + char cmd[512]; + sprintf(cmd, "HH.EXE %s::/%s", bf, pContext); + ::WinExec(cmd, SW_SHOWDEFAULT); + } + else { + ::ShellExecute(hd, "open", bf, NULL, NULL, SW_SHOWDEFAULT); + } + } + else { + CWebRef WebRef; + WebRef.ShowHTML(bf); + } + } + else if((sys.m_WinFontCharset != SHIFTJIS_CHARSET )){ + ErrorMB( "'%s' was not found.\r\n\r\nPlease search in the MMTTY English Web Site.", sys.m_HTMLHelp.c_str()); + } + else { + ErrorMB( "'%s'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ.\r\n\r\nMMTTY English Web Site ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚µ‚ĉº‚³‚¢.", sys.m_HTMLHelp.c_str()); + } +} +#if 0 // Delete by JE3HHT on 29.Sep.2010 +void ShowHelp(int index) +{ + if( !JanHelp.IsEmpty() ){ + HWND hd; + if( Screen->ActiveForm != NULL ){ + hd = Screen->ActiveForm->Handle; + } + else { + hd = Application->MainForm->Handle; + } + if( index != -1 ){ + ::WinHelp(hd, JanHelp.c_str(), HELP_CONTEXT, index); + } + else { + ::WinHelp(hd, JanHelp.c_str(), HELP_FINDER, 0); + } + } +} +#endif +//--------------------------------------------------------------------------- +void InitSampType(void) +{ + if( SampFreq >= 11600.0 ){ + SampType = 3; + SampBase = 12000.0; + DemSamp = SampFreq * 0.5; + DemOver = 1; + FFT_SIZE = 2048; + SampSize = (12000*1024)/11025; + } + else if( SampFreq >= 10000.0 ){ + SampType = 0; + SampBase = 11025.0; + DemSamp = SampFreq * 0.5; + DemOver = 1; + FFT_SIZE = 2048; + SampSize = 1024; + } + else if( SampFreq >= 7000.0 ){ + SampType = 1; + SampBase = 8000.0; + DemSamp = SampFreq; + DemOver = 0; + FFT_SIZE = 1024; + SampSize = (8000*1024)/11025; + } + else if( SampFreq >= 5000.0 ){ + SampType = 2; + SampBase = 6000.0; + DemSamp = SampFreq; + DemOver = 0; + FFT_SIZE = 1024; + SampSize = (6000*1024)/11025; + } +} +//--------------------------------------------------------------------------- +int IsFile(LPCSTR pName) +{ + if( FileExists( pName ) ) //JA7UDE 0428 + return 1; + else + return 0; + /* + FILE *fp; + fp = fopen(pName, "rb"); + if( fp != NULL ){ + fclose(fp); + return 1; + } + else { + return 0; + } + */ +} +//--------------------------------------------------------------------------- +int SetTimeOffsetInfo(int &Hour, int &Min) +{ + TIME_ZONE_INFORMATION tz; + + int off; + switch(GetTimeZoneInformation(&tz)){ + case TIME_ZONE_ID_STANDARD: + off = tz.StandardBias; + break; + case TIME_ZONE_ID_DAYLIGHT: + off = tz.DaylightBias; + break; + default: + return FALSE; + } + if( off >= 0 ){ + Hour = -(off / 60); + Min = (off % 60); + } + else { + off = -off; + Hour = off / 60; + Min = off % 60; + } + return TRUE; +} +//--------------------------------------------------------------------------- +void AddjustOffset(SYSTEMTIME *tp) +{ + if( sys.m_TimeOffset || sys.m_TimeOffsetMin ){ +//typedef struct _SYSTEMTIME { /* st */ +// WORD wYear; +// WORD wMonth; +// WORD wDayOfWeek; +// WORD wDay; +// WORD wHour; +// WORD wMinute; +// WORD wSecond; +// WORD wMilliseconds; +//} SYSTEMTIME; + + + LPCSTR mt; + int Hour = tp->wHour; + int Min = tp->wMinute; + Min += sys.m_TimeOffsetMin; + if( Min >= 60 ){ + Hour++; + Min -= 60; + } + else if( Min < 0 ){ + Hour--; + Min += 60; + } + tp->wMinute = WORD(Min); + Hour += sys.m_TimeOffset; + if( Hour >= 24 ){ + tp->wHour = WORD(Hour - 24); + tp->wDay++; + if( tp->wYear % 4 ){ + mt = MONN; + } + else { + mt = MONU; + } + if( tp->wDay > mt[tp->wMonth] ){ + tp->wDay = 1; + tp->wMonth++; + if( tp->wMonth > 12 ){ + tp->wMonth = 1; + tp->wYear++; + } + } + } + else if( Hour < 0 ){ + tp->wHour = WORD(Hour + 24); + tp->wDay--; + if( tp->wDay < 1 ){ + tp->wMonth--; + if( tp->wMonth < 1 ){ + tp->wMonth = 12; + tp->wYear--; + } + if( tp->wYear % 4 ){ + tp->wDay = MONN[tp->wMonth]; + } + else { + tp->wDay = MONU[tp->wMonth]; + } + } + } + else { + tp->wHour = WORD(Hour); + } + } +} +//--------------------------------------------------------------------------- +void GetUTC(SYSTEMTIME *tp) +{ + ::GetSystemTime(tp); + AddjustOffset(tp); +} +//--------------------------------------------------------------------------- +void GetLocal(SYSTEMTIME *tp) +{ + ::GetLocalTime(tp); + AddjustOffset(tp); +} +//--------------------------------------------------------------------------- +LPSTR StrDupe(LPCSTR s) +{ + LPSTR p = new char[strlen(s)+1]; + strcpy(p, s); + return p; +} + +//--------------------------------------------------------------------------- +void InitColorTable(TColor cl, TColor ch) +{ + int br = (ch & 0x000000ff); + int bg = (ch & 0x0000ff00) >> 8; + int bb = (ch & 0x00ff0000) >> 16; + int er = (cl & 0x000000ff); + int eg = (cl & 0x0000ff00) >> 8; + int eb = (cl & 0x00ff0000) >> 16; + + int brw = er - br + 1; + int bgw = eg - bg + 1; + int bbw = eb - bb + 1; + int r, g, b; + + ColorTable[0] = DWORD( br | (bg<<8) | (bb<<16) ); + int i; + for( i = 1; i < 127; i++ ){ + r = (br + (i * brw/128)) & 0x000000ff; + g = (bg + (i * bgw/128)) & 0x000000ff; + b = (bb + (i * bbw/128)) & 0x000000ff; + ColorTable[i] = DWORD( r | (g<<8) | (b<<16) ); + } + ColorTable[127] = DWORD( er | (eg<<8) | (eb<<16) ); +} + +const DEFKEYTBL KEYTBL[]={ + { VK_F1, "F1" }, + { VK_F2, "F2" }, + { VK_F3, "F3" }, + { VK_F4, "F4" }, + { VK_F5, "F5" }, + { VK_F6, "F6" }, + { VK_F7, "F7" }, + { VK_F8, "F8" }, + { VK_F9, "F9" }, + { VK_F10, "F10" }, + { VK_F11, "F11" }, + { VK_F12, "F12" }, + + { VK_LEFT, "©"}, + { VK_RIGHT, "¨"}, + { VK_UP, "ª"}, + { VK_DOWN, "«"}, + { VK_PRIOR, "PageUp"}, + { VK_NEXT, "PageDown"}, + { VK_HOME, "Home" }, + { VK_END, "End" }, + { VK_INSERT, "Insert" }, + { VK_DELETE, "Delete" }, + { VK_HELP, "Help" }, + { VK_ESCAPE, "ESC" }, + { VK_PAUSE, "PAUSE" }, + + + { VK_F1 | 0x400, "Shift+F1" }, + { VK_F2 | 0x400, "Shift+F2" }, + { VK_F3 | 0x400, "Shift+F3" }, + { VK_F4 | 0x400, "Shift+F4" }, + { VK_F5 | 0x400, "Shift+F5" }, + { VK_F6 | 0x400, "Shift+F6" }, + { VK_F7 | 0x400, "Shift+F7" }, + { VK_F8 | 0x400, "Shift+F8" }, + { VK_F9 | 0x400, "Shift+F9" }, + { VK_F10 | 0x400, "Shift+F10" }, + { VK_F11 | 0x400, "Shift+F11" }, + { VK_F12 | 0x400, "Shift+F12" }, + + { VK_LEFT | 0x400, "Shift+©"}, + { VK_RIGHT | 0x400, "Shift+¨"}, + { VK_UP | 0x400, "Shift+ª"}, + { VK_DOWN | 0x400, "Shift+«"}, + { VK_PRIOR | 0x400, "Shift+PageUp"}, + { VK_NEXT | 0x400, "Shift+PageDown"}, + { VK_HOME | 0x400, "Shift+Home" }, + { VK_END | 0x400, "Shift+End" }, + { VK_INSERT | 0x400, "Shift+Insert" }, + { VK_DELETE | 0x400, "Shift+Delete" }, + { VK_HELP | 0x400, "Shift+Help" }, + { VK_ESCAPE | 0x400, "Shift+ESC" }, + { VK_PAUSE | 0x400, "Shift+PAUSE" }, + + { VK_F1 | 0x100, "Ctrl+F1" }, + { VK_F2 | 0x100, "Ctrl+F2" }, + { VK_F3 | 0x100, "Ctrl+F3" }, + { VK_F4 | 0x100, "Ctrl+F4" }, + { VK_F5 | 0x100, "Ctrl+F5" }, + { VK_F6 | 0x100, "Ctrl+F6" }, + { VK_F7 | 0x100, "Ctrl+F7" }, + { VK_F8 | 0x100, "Ctrl+F8" }, + { VK_F9 | 0x100, "Ctrl+F9" }, + { VK_F10 | 0x100, "Ctrl+F10" }, + { VK_F11 | 0x100, "Ctrl+F11" }, + { VK_F12 | 0x100, "Ctrl+F12" }, + { '1' | 0x100, "Ctrl+1" }, + { '2' | 0x100, "Ctrl+2" }, + { '3' | 0x100, "Ctrl+3" }, + { '4' | 0x100, "Ctrl+4" }, + { '5' | 0x100, "Ctrl+5" }, + { '6' | 0x100, "Ctrl+6" }, + { '7' | 0x100, "Ctrl+7" }, + { '8' | 0x100, "Ctrl+8" }, + { '9' | 0x100, "Ctrl+9" }, + { '0' | 0x100, "Ctrl+0" }, + { 'A' | 0x100, "Ctrl+A" }, + { 'B' | 0x100, "Ctrl+B" }, + { 'C' | 0x100, "Ctrl+C" }, + { 'D' | 0x100, "Ctrl+D" }, + { 'E' | 0x100, "Ctrl+E" }, + { 'F' | 0x100, "Ctrl+F" }, + { 'G' | 0x100, "Ctrl+G" }, +// { 'H' | 0x100, "Ctrl+H" }, +// { 'I' | 0x100, "Ctrl+I" }, + { 'K' | 0x100, "Ctrl+K" }, + { 'L' | 0x100, "Ctrl+L" }, +// { 'M' | 0x100, "Ctrl+M" }, + { 'N' | 0x100, "Ctrl+N" }, + { 'O' | 0x100, "Ctrl+O" }, + { 'P' | 0x100, "Ctrl+P" }, + { 'Q' | 0x100, "Ctrl+Q" }, + { 'R' | 0x100, "Ctrl+R" }, + { 'S' | 0x100, "Ctrl+S" }, + { 'T' | 0x100, "Ctrl+T" }, + { 'U' | 0x100, "Ctrl+U" }, + { 'V' | 0x100, "Ctrl+V" }, + { 'W' | 0x100, "Ctrl+W" }, + { 'X' | 0x100, "Ctrl+X" }, + { 'Y' | 0x100, "Ctrl+Y" }, + { 'Z' | 0x100, "Ctrl+Z" }, + + { VK_LEFT | 0x100, "Ctrl+©"}, + { VK_RIGHT | 0x100, "Ctrl+¨"}, + { VK_UP | 0x100, "Ctrl+ª"}, + { VK_DOWN | 0x100, "Ctrl+«"}, + { VK_PRIOR | 0x100, "Ctrl+PageUp"}, + { VK_NEXT | 0x100, "Ctrl+PageDown"}, + { VK_HOME | 0x100, "Ctrl+Home" }, + { VK_END | 0x100, "Ctrl+End" }, + { VK_INSERT | 0x100, "Ctrl+Insert" }, + { VK_DELETE | 0x100, "Ctrl+Delete" }, + { VK_HELP | 0x100, "Ctrl+Help" }, + { VK_ESCAPE | 0x100, "Ctrl+ESC" }, + + { VK_F1 | 0x200, "Alt+F1" }, + { VK_F2 | 0x200, "Alt+F2" }, + { VK_F3 | 0x200, "Alt+F3" }, + { VK_F4 | 0x200, "Alt+F4" }, + { VK_F5 | 0x200, "Alt+F5" }, + { VK_F6 | 0x200, "Alt+F6" }, + { VK_F7 | 0x200, "Alt+F7" }, + { VK_F8 | 0x200, "Alt+F8" }, + { VK_F9 | 0x200, "Alt+F9" }, + { VK_F10 | 0x200, "Alt+F10" }, + { VK_F11 | 0x200, "Alt+F11" }, + { VK_F12 | 0x200, "Alt+F12" }, + { '1' | 0x200, "Alt+1" }, + { '2' | 0x200, "Alt+2" }, + { '3' | 0x200, "Alt+3" }, + { '4' | 0x200, "Alt+4" }, + { '5' | 0x200, "Alt+5" }, + { '6' | 0x200, "Alt+6" }, + { '7' | 0x200, "Alt+7" }, + { '8' | 0x200, "Alt+8" }, + { '9' | 0x200, "Alt+9" }, + { '0' | 0x200, "Alt+0" }, + { 'A' | 0x200, "Alt+A" }, + { 'B' | 0x200, "Alt+B" }, + { 'C' | 0x200, "Alt+C" }, + { 'D' | 0x200, "Alt+D" }, + { 'E' | 0x200, "Alt+E" }, + { 'F' | 0x200, "Alt+F" }, + { 'G' | 0x200, "Alt+G" }, + { 'H' | 0x200, "Alt+H" }, + { 'I' | 0x200, "Alt+I" }, + { 'K' | 0x200, "Alt+K" }, + { 'L' | 0x200, "Alt+L" }, + { 'M' | 0x200, "Alt+M" }, + { 'N' | 0x200, "Alt+N" }, + { 'O' | 0x200, "Alt+O" }, + { 'P' | 0x200, "Alt+P" }, + { 'Q' | 0x200, "Alt+Q" }, + { 'R' | 0x200, "Alt+R" }, + { 'S' | 0x200, "Alt+S" }, + { 'T' | 0x200, "Alt+T" }, + { 'U' | 0x200, "Alt+U" }, + { 'V' | 0x200, "Alt+V" }, + { 'W' | 0x200, "Alt+W" }, + { 'X' | 0x200, "Alt+X" }, + { 'Y' | 0x200, "Alt+Y" }, + { 'Z' | 0x200, "Alt+Z" }, + + { VK_LEFT | 0x200, "Alt+©"}, + { VK_RIGHT | 0x200, "Alt+¨"}, + { VK_UP | 0x200, "Alt+ª"}, + { VK_DOWN | 0x200, "Alt+«"}, + { VK_PRIOR | 0x200, "Alt+PageUp"}, + { VK_NEXT | 0x200, "Alt+PageDown"}, + { VK_HOME | 0x200, "Alt+Home" }, + { VK_END | 0x200, "Alt+End" }, + { VK_INSERT | 0x200, "Alt+Insert" }, + { VK_DELETE | 0x200, "Alt+Delete" }, + { VK_HELP | 0x200, "Alt+Help" }, + { VK_ESCAPE | 0x200, "Alt+ESC" }, + { VK_PAUSE | 0x200, "Alt+PAUSE" }, + { 0, "" }, +}; +//--------------------------------------------------------------------------- +LPCSTR ToDXKey(LPCSTR s) +{ + if( (sys.m_WinFontCharset != SHIFTJIS_CHARSET) && *s ){ + LPSTR p; + static char bf[32]; + strcpy(bf, s); + if( (p = strstr(bf, "©"))!=NULL ){ + strcpy(p, "ArrowLeft"); + return bf; + } + else if( (p = strstr(bf, "¨"))!=NULL ){ + strcpy(p, "ArrowRight"); + return bf; + } + else if( (p = strstr(bf, "«"))!=NULL ){ + strcpy(p, "ArrowDown"); + return bf; + } + else if( (p = strstr(bf, "ª"))!=NULL ){ + strcpy(p, "ArrowUp"); + return bf; + } + } + return s; +} +//--------------------------------------------------------------------------- +LPCSTR ToJAKey(LPCSTR s) +{ + if( (sys.m_WinFontCharset != SHIFTJIS_CHARSET) && *s ){ + LPSTR p; + static char bf[32]; + strcpy(bf, s); + if( (p = strstr(bf, "ArrowLeft"))!=NULL ){ + strcpy(p, "©"); + return bf; + } + else if( (p = strstr(bf, "ArrowRight"))!=NULL ){ + strcpy(p, "¨"); + return bf; + } + else if( (p = strstr(bf, "ArrowDown"))!=NULL ){ + strcpy(p, "«"); + return bf; + } + else if( (p = strstr(bf, "ArrowUp"))!=NULL ){ + strcpy(p, "ª"); + return bf; + } + } + return s; +} +//--------------------------------------------------------------------------- +LPCSTR GetKeyName(WORD Key) +{ + int i; + for( i = 0; KEYTBL[i].Key; i++ ){ + if( Key == KEYTBL[i].Key ){ + break; + } + } + return ToDXKey(KEYTBL[i].pName); +} +//--------------------------------------------------------------------------- +WORD GetKeyCode(LPCSTR pName) +{ + LPCSTR p = ToJAKey(pName); + int i; + for( i = 0; KEYTBL[i].Key; i++ ){ + if( !strcmp(p, KEYTBL[i].pName) ) break; + } + return KEYTBL[i].Key; +} +//--------------------------------------------------------------------------- +LPCSTR __fastcall ConvAndChar(LPSTR t, LPCSTR p) +{ + LPSTR s = t; + + while(*p){ + if( *p == '&' ){ + *t++ = *p; + } + *t++ = *p++; + } + *t = 0; + return s; +} +//--------------------------------------------------------------------------- +int SetTBValue(double d, double dmax, int imax) +{ + if( d ){ + int dd = int(sqrt(d * dmax * dmax / imax) + 0.5); + if( dd > imax ) dd = imax; + return dd; + } + else { + return 0; + } +} + +double GetTBValue(int d, double dmax, int imax) +{ + return (d * d) * imax/ (dmax * dmax); +} + +LPUSTR jstrupr(LPUSTR s) +{ + LPUSTR p = s; + int kf; + + for( kf = 0; *p; p++ ){ + if( kf ){ + kf = 0; + } + else if( _mbsbtype((unsigned char *)p, 0) == _MBC_LEAD ){ + kf = 1; + } + else { + *p = (unsigned char)toupper(*p); + } + } + return s; +} +/*#$% +=============================================================== + Žž‚ð’²®‚·‚é +--------------------------------------------------------------- + t : Žž(UTC) + c : Žž·ƒR[ƒh +--------------------------------------------------------------- + ƒ[ƒJƒ‹ƒ^ƒCƒ€ +--------------------------------------------------------------- + A-Z + a-z +30min +=============================================================== +*/ +WORD AdjustRolTimeUTC(WORD tim, char c) +{ + const char tdf[]={ +/* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z */ + 1,2,3,4,5,6,7,8,9,9,10,11,12,23,22,21,20,19,18,17,16,15,14,13,12,0 + }; + int cc; + + cc = toupper(c); + if( (cc >= 'A')&&(cc <= 'Z') ){ + // JST to UTC +#if 0 + if( tim >= (9*60*30) ){ + tim -= WORD(9 * 60 * 30); + } + else { + tim += WORD(15 * 60 * 30); + } +#endif + tim /= WORD(30); + tim += WORD(tdf[cc-'A'] * 60); + if( c >= 'a' ) tim += WORD(30); + while( tim >= (24 * 60) ){ + tim -= WORD(24 * 60); + } + tim *= WORD(30); + if( !tim ) tim++; + } + else { + tim = 0; + } + return tim; +} +///---------------------------------------------------------------- +/// ƒEƒBƒ“ƒhƒE‚ðƒNƒ‰ƒCƒAƒ“ƒgƒZƒ“ƒ^[‚É‚·‚é +void FormCenter(TForm *tp, int XW, int YW) +{ + int top = (YW - tp->Height)/2; + int left = (XW - tp->Width)/2; + if( top < 0 ) top = 0; + if( left < 0 ) left = 0; + tp->Top = top; + tp->Left = left; +} +//--------------------------------------------------------------------------- +void __fastcall SetGroupEnabled(TGroupBox *gp) +{ + int enb = gp->Enabled; + TControl *tp; + int i; + for( i = 0; i < gp->ControlCount; i++ ){ + tp = gp->Controls[i]; + if( tp != NULL ){ + tp->Enabled = enb; + if( tp->ClassNameIs("TGroupBox") ){ + SetGroupEnabled((TGroupBox *)tp); + } + } + } + gp->Font->Color = gp->Enabled ? clBlack : clGrayText; + for( i = 0; i < gp->ControlCount; i++ ){ + tp = gp->Controls[i]; + if( tp != NULL ){ + if( tp->ClassNameIs("TComboBox") ){ + ((TComboBox *)tp)->SelLength = 0; + } + } + } +} +//--------------------------------------------------------------------------- +void SetButtonCaption(TSpeedButton *tb, AnsiString &as, int maxlen, int fontsize, TColor col) +{ + char bf[256]; + ConvAndChar(bf, as.c_str()); + int len = strlen(as.c_str()); + if( (!len) || (len <= maxlen) ){ + fontsize = fontsize + sys.m_BtnFontAdjSize; + } + else { + int size = fontsize * maxlen * 1.1 / len; + if( size < 6 ) size = 6; + fontsize = size + sys.m_BtnFontAdjSize; + } + tb->Font->Size = fontsize; + tb->Font->Color = col; +// if( tb->Caption != bf ) tb->Caption = bf; + tb->Caption = bf; +} +/*#$% +======================================================== + ÅŒã‚Ì•¶ŽšƒR[ƒh‚ð•Ô‚· +-------------------------------------------------------- + p : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ +-------------------------------------------------------- + •¶ŽšƒR[ƒh +-------------------------------------------------------- +======================================================== +*/ +char *lastp(char *p) +{ + if( *p ){ + for( ; *p; p++ ); + p--; + return(p); + } + else { + return(p); + } +} +/*#$% +======================================================== + ––”ö‚̃Xƒy[ƒX‚Æ‚s‚`‚a‚ðŽæ‚é +-------------------------------------------------------- + s : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ +-------------------------------------------------------- + •¶Žš—ñ‚̃|ƒCƒ“ƒ^ +-------------------------------------------------------- +======================================================== +*/ +char *clipsp(char *s) +{ + char *p; + + if( *s ){ + for( p = lastp(s); p >= s; p-- ){ + if( (*p == ' ')||(*p == 0x09) ){ + *p = 0; + } + else { + break; + } + } + } + return(s); +} +//--------------------------------------------------------------------------- +LPCSTR _strdmcpy(LPSTR t, LPCSTR p, char c) +{ + for( ; *p && (*p != c); p++, t++ ) *t = *p; + *t = 0; + if( *p == c ) p++; + return(p); +} +const char *StrDlmCpy(char *t, const char *p, char Dlm, int len) +{ + const char _tt1[]="[{(¢<"; + const char _tt2[]="]})£>"; + const char *pp; + int r = FALSE; + + char Key; + if( (pp = strchr(_tt2, Dlm))!=NULL ){ + Key = _tt1[pp - _tt2]; + } + else { + Key = 0; + } + int f, k; + for( f = k = 0; *p; p++ ){ + if( k ){ // Š¿Žš‚QƒoƒCƒg–Ú + k = 0; + } + else if( _mbsbtype((const unsigned char *)p, 0) == _MBC_LEAD ){ // Š¿Žš‚PƒoƒCƒg–Ú + k = 1; + } + else if( *p == Key ){ + f++; + } + else if( *p == Dlm ){ + if( f ){ + f--; + } + else { + r = TRUE; + p++; + break; + } + } + if( len ){ + *t++ = *p; + len--; + } + } + *t = 0; + return (r == TRUE) ? p : NULL; +} + +const char *StrDlmCpyK(char *t, const char *p, char Dlm, int len) +{ + const char _tt1[]="[{(¢<"; + const char _tt2[]="]})£>"; + const char *pp; + int r = FALSE; + + char Key; + if( (pp = strchr(_tt2, Dlm))!=NULL ){ + Key = _tt1[pp - _tt2]; + } + else { + Key = 0; + } + int f, k; + for( f = k = 0; *p; p++ ){ + if( k ){ // Š¿Žš‚QƒoƒCƒg–Ú + k = 0; + } + else if( _mbsbtype((const unsigned char *)p, 0) == _MBC_LEAD ){ // Š¿Žš‚PƒoƒCƒg–Ú + k = 1; + } + else if( (pp = strchr(_tt1, *p))!=NULL ){ + Key = _tt2[pp - _tt1]; + f++; + } + else if( f && (*p == Key) ){ + f--; + Key = 0; + } + else if( *p == Dlm ){ + if( !f ){ + r = TRUE; + p++; + break; + } + } + if( len ){ + *t++ = *p; + len--; + } + } + *t = 0; + return (r == TRUE) ? p : NULL; +} +//--------------------------------------------------------------------------- +void StrCopy(LPSTR t, LPCSTR s, int n) +{ + for( ; *s && n; n--, s++, t++){ + *t = *s; + } + *t = 0; +} +//--------------------------------------------------------------------------- +char LastC(LPCSTR p) +{ + char c = 0; + + if( *p ){ + c = *(p + strlen(p) - 1); + } + return c; +} + +/*#$% +======================================================== + Šg’£Žq‚𓾂é +-------------------------------------------------------- + p : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ +-------------------------------------------------------- + •¶ŽšƒR[ƒh +-------------------------------------------------------- +======================================================== +*/ +LPCSTR GetEXT(LPCSTR Fname) +{ + if( *Fname ){ + LPCSTR p = Fname + (strlen(Fname) - 1); + for( ; p > Fname; p-- ){ + if( *p == '.' ) return p+1; + } + } + return ""; +} + +void SetEXT(LPSTR pName, LPSTR pExt) +{ + if( *pName ){ + LPSTR p; + + for( p = &pName[strlen(pName)-1]; p >= pName; p-- ){ + if( *p == '.' ){ + strcpy(p, pExt); + return; + } + } + strcat(pName, pExt); + } +} + +void SetCurDir(LPSTR t, int size) +{ + if( !::GetCurrentDirectory(size-1, t) ){ + *t = 0; + } + else { + if( LastC(t) != '\\' ){ + strcat(t, "\\"); + } + } +} + +void SetDirName(LPSTR t, LPCSTR pName) +{ + char drive[_MAX_DRIVE]; + char dir[_MAX_DIR]; + char name[_MAX_FNAME]; + char ext[_MAX_EXT]; + AnsiString Dir; + + ::_splitpath( pName, drive, dir, name, ext ); + Dir = drive; + Dir += dir; + strncpy(t, Dir.c_str(), 128); +} + +LPCSTR StrDbl(double d) +{ + static char bf[64]; + LPSTR p; + + sprintf(bf, "%lf", d); + for( p = &bf[strlen(bf)-1]; p >= bf; p-- ){ + if( (*p == '0')&&(*(p-1)!='.') ){ + *p = 0; + } + else { + break; + } + } + return bf; +} + +LPCSTR StrDblE(double d) +{ + static char bf[32]; + + sprintf(bf, "%le", d); + return bf; +} + +double ReadDoubleIniFile(TMemIniFile *p, LPCSTR c1, LPCSTR c2, double d) +{ + AnsiString cs = StrDblE(d); + AnsiString rs = p->ReadString(c1, c2, cs); + if( sscanf(rs.c_str(), "%lf", &d) != 1 ) d = 0.0; + return d; +} + +void WriteDoubleIniFile(TMemIniFile *p, LPCSTR c1, LPCSTR c2, double d) +{ + AnsiString cs = StrDblE(d); + p->WriteString(c1, c2, cs); +} + +///---------------------------------------------------------------- +/// ƒRƒƒ“ƒg‚ðíœiƒXƒy[ƒX‚¨‚æ‚Ñ‚s‚`‚a‚àíœj +/// +void ClipLF(LPSTR sp) +{ + for( ; *sp; sp++ ){ + if( (*sp == LF)||(*sp == CR) ){ + *sp = 0; + break; + } + } +} + +LPSTR FillSpace(LPSTR s, int n) +{ + LPSTR p = s; + int i = 0; + for( ; *p && (i < n); i++, p++ ); + for( ; i < n; i++, p++ ){ + *p = ' '; + } + *p = 0; + return s; +} +///---------------------------------------------------------------- +/// ƒzƒƒCƒgƒXƒy[ƒX‚̃XƒLƒbƒv +/// +LPSTR SkipSpace(LPSTR sp) +{ + for( ; *sp; sp++ ){ + if( (*sp != ' ')&&(*sp != TAB) ) break; + } + return sp; +} + +LPCSTR SkipSpace(LPCSTR sp) +{ + for( ; *sp; sp++ ){ + if( (*sp != ' ')&&(*sp != TAB) ) break; + } + return sp; +} + +///---------------------------------------------------------------- +/// ƒfƒŠƒ~ƒbƒ^•ª‰ð‚ðs‚¤ +/// +LPSTR StrDlm(LPSTR &t, LPSTR p) +{ + return StrDlm(t, p, ','); +} + +///---------------------------------------------------------------- +/// ƒfƒŠƒ~ƒbƒ^•ª‰ð‚ðs‚¤ +/// +LPSTR StrDlm(LPSTR &t, LPSTR p, char c) +{ + int f, k; + LPSTR d1=NULL; + LPSTR d2=NULL; + + t = p; + f = k = 0; + while(*p){ + if( k ){ // Š¿Žš‚QƒoƒCƒg–Ú + k = 0; + } + else if( _mbsbtype((const unsigned char *)p, 0) == _MBC_LEAD ){ // Š¿Žš‚PƒoƒCƒg–Ú + k = 1; + } + else if( *p == 0x22 ){ + if( !f ){ + if( d1 == NULL ) d1 = p+1; + f++; + } + else { + d2 = p; + f--; + } + } + else if( !f && (*p == c) ){ + *p = 0; + p++; + break; + } + p++; + } + if( (d1!=NULL)&&(d2!=NULL) ){ + if( ((t+1)==d1) && ( ((p-2)==d2)||((p-1)==d2) ) ){ + t = d1; + *d2 = 0; + } + } + return(p); +} + +///---------------------------------------------------------------- +/// +void ChgString(LPSTR t, char a, char b) +{ + for( ; *t; t++ ){ + if( *t == a ) *t = b; + } +} + +///---------------------------------------------------------------- +/// +void DelChar(LPSTR t, char a) +{ + for( ; *t; t++ ){ + if( *t == a ){ + strcpy(t, t+1); + t--; + } + } +} + +/*#$% +======================================================== + ƒfƒVƒ}ƒ‹ƒAƒXƒL[‚ð”’l‚ɕϊ·‚·‚é +-------------------------------------------------------- + p : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ + n : •ÏŠ·Œ…” +-------------------------------------------------------- + ”’l +-------------------------------------------------------- +======================================================== +*/ +int atoin(const char *p, int n) +{ + int d; + + for( d = 0; *p && n; p++, n-- ){ + d *= 10; + d += (*p & 0x0f); + } + return(d); +} +/*#$% +======================================================== + ‚P‚UiƒAƒXƒL[‚ð”’l‚ɕϊ·‚·‚é +-------------------------------------------------------- + p : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ + n : •ÏŠ·Œ…” +-------------------------------------------------------- + ”’l +-------------------------------------------------------- +======================================================== +*/ +int htoin(const char *p, int n) +{ + if( *p == 'x' ) return 0; + int d; + + for( d = 0; *p && n; p++, n-- ){ + d = d << 4; + d += (*p & 0x0f); + if( *p >= 'A' ) d += 9; + } + return(d); +} +///---------------------------------------------------------------- +HWND GetMBHandle(int &flag) +{ + HWND hd; + if( Screen->ActiveForm != NULL ){ + hd = Screen->ActiveForm->Handle; + } + else { + hd = NULL; + } + flag = MB_SETFOREGROUND; + if( Remote ) flag |= MB_TOPMOST; + flag |= (hd == NULL) ? MB_TASKMODAL : MB_APPLMODAL; + return hd; +} +///---------------------------------------------------------------- +/// ƒƒbƒZ[ƒW‚Ì•\ަ +/// +void InfoMB(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + + int flag; + HWND hd = GetMBHandle(flag); + DisPaint = TRUE; + flag |= (MB_OK | MB_ICONINFORMATION); + Application->NormalizeTopMosts(); + ::MessageBox(hd, bf, "MMTTY", flag); + Application->RestoreTopMosts(); + DisPaint = FALSE; +} +///---------------------------------------------------------------- +/// ƒGƒ‰[ƒƒbƒZ[ƒW‚Ì•\ަ +/// +void ErrorMB(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + + int flag; + HWND hd = GetMBHandle(flag); + DisPaint = TRUE; + flag |= (MB_OK | MB_ICONEXCLAMATION); + Application->NormalizeTopMosts(); + ::MessageBox(hd, bf, (sys.m_WinFontCharset != SHIFTJIS_CHARSET) ? "Error":"´×°", flag); + Application->RestoreTopMosts(); + DisPaint = FALSE; +} + +///---------------------------------------------------------------- +/// ŒxƒƒbƒZ[ƒW‚Ì•\ަ +/// +void WarningMB(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + + int flag; + HWND hd = GetMBHandle(flag); + DisPaint = TRUE; + flag |= (MB_OK | MB_ICONEXCLAMATION); + Application->NormalizeTopMosts(); + ::MessageBox(hd, bf, (sys.m_WinFontCharset != SHIFTJIS_CHARSET)?"Warning":"Œx", flag); + Application->RestoreTopMosts(); + DisPaint = FALSE; +} + +///---------------------------------------------------------------- +/// ŽÀs‘I‘ðƒƒbƒZ[ƒW‚Ì•\ަ +/// +int YesNoMB(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + + int flag; + HWND hd = GetMBHandle(flag); + DisPaint = TRUE; + if( Screen->ActiveForm != NULL ) NormalWindow(Screen->ActiveForm); + flag |= (MB_YESNO | MB_ICONQUESTION); + Application->NormalizeTopMosts(); + int r = ::MessageBox(hd, bf, "MMTTY", flag); + Application->RestoreTopMosts(); + DisPaint = FALSE; + return r; +} + +///---------------------------------------------------------------- +/// ŽÀs‘I‘ðƒƒbƒZ[ƒW‚Ì•\ަ +/// +int YesNoCancelMB(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + + int flag; + HWND hd = GetMBHandle(flag); + DisPaint = TRUE; + flag |= (MB_YESNOCANCEL | MB_ICONQUESTION); + Application->NormalizeTopMosts(); + int r = ::MessageBox(hd, bf, "MMTTY", flag); + Application->RestoreTopMosts(); + DisPaint = FALSE; + return r; +} + +///---------------------------------------------------------------- +/// ŽÀs‘I‘ðƒƒbƒZ[ƒW‚Ì•\ަ +/// +int OkCancelMB(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + + int flag; + HWND hd = GetMBHandle(flag); + DisPaint = TRUE; + flag |= (MB_OKCANCEL | MB_ICONQUESTION); + Application->NormalizeTopMosts(); + int r = ::MessageBox(hd, bf, "MMTTY", flag); + Application->RestoreTopMosts(); + DisPaint = FALSE; + return r; +} +int RemoveL2(LPSTR t, LPSTR ss, LPCSTR pKey, int size) +{ + char c; + int k; + LPCSTR pp; + LPSTR s; + const char _tt1[]="[{(¢<"; + const char _tt2[]="]})£>"; + + int len = strlen(pKey); + char ac = ';'; + for( k = 0, s = ss; *s; s++ ){ + if( k ){ // Š¿Žš‚QƒoƒCƒg–Ú + k = 0; + ac = 0x1e; + } + else if( _mbsbtype((const unsigned char *)s, 0) == _MBC_LEAD ){ // Š¿Žš‚PƒoƒCƒg–Ú + k = 1; + if( (len >= 2) && (strchr(" ,./;:*\t[{(¢<]})£>", ac)!=NULL) && (!strnicmp(s, pKey, len)) ){ + pp = s + len; + if( (pp = strchr(_tt1, *pp))!=NULL ){ + c = _tt2[pp - _tt1]; + if( *(s+len+1) ){ + StrDlmCpy(t, s+len+1, c, size); + if( *t ){ + strcpy((ac == ' ')?(s-1):s, s+len+2+strlen(t)); + return TRUE; + } + } + } + } + } + else if( (strchr(" ,./;:*\t\x1e[{(¢<]})£>", ac)!=NULL) && (!strnicmp(s, pKey, len)) ){ + pp = s + len; + if( (pp = strchr(_tt1, *pp))!=NULL ){ + c = _tt2[pp - _tt1]; + if( *(s+len+1) ){ + StrDlmCpy(t, s+len+1, c, size); + if( *t ){ + strcpy((ac == ' ')?(s-1):s, s+len+2+strlen(t)); + return TRUE; + } + } + } + ac = *s; + } + else { + ac = *s; + } + } + return FALSE; +} + +void AddL2(LPSTR t, LPCSTR pKey, LPCSTR s, UCHAR c1, UCHAR c2, int size) +{ + if( *s ){ + int len = strlen(t); + int lenkey = strlen(pKey); + int lenData = strlen(s); + if( (len + lenkey + lenData + 2) < size ){ + t += len; + if( len ) *t++ = ' '; + if( *pKey ){ + strcpy(t, pKey); + t += lenkey; + } + *t++ = c1; + strcpy(t, s); + t += lenData; + *t++ = c2; + *t = 0; + } + } +} +///---------------------------------------------------------------- +/// ”Žš‚ªŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©’²‚ׂé +/// +int IsNumbs(LPCSTR p) +{ + for( ; *p; p++ ){ + if( isdigit(*p) ) return 1; + } + return 0; +} +///---------------------------------------------------------------- +/// ”Žš‚ªŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©’²‚ׂé +/// +int IsAlphas(LPCSTR p) +{ + for( ; *p; p++ ){ + if( isalpha(*p) ) return 1; + } + return 0; +} +///---------------------------------------------------------------- +/// RST‚©‚Ç‚¤‚©’²‚ׂé +/// +int IsRST(LPCSTR p) +{ + if( strlen(p) < 3 ) return 0; + if( (*p < '1') || (*p > '5') ) return 0; + p++; + if( (*p < '1') || (*p > '9') ) return 0; + p++; + if( (*p < '1') || (*p > '9') ) return 0; + return 1; +} +///---------------------------------------------------------------- +int IsCallChar(char c) +{ + if( !isalpha(c) && !isdigit(c) && (c != '/') ) return 0; + if( islower(c) ) return 0; + return 1; +} +///---------------------------------------------------------------- +/// ƒR[ƒ‹ƒTƒCƒ“‚©‚Ç‚¤‚©’²‚ׂé +/// +int IsCall(LPCSTR p) +{ + int l = strlen(p); + if( l > 16 ) return 0; + if( l < 3 ) return 0; + if( isdigit(*p) ){ // 擪‚ª”Žš + if( l <= 3 ) return 0; // 3•¶ŽšˆÈ‰º‚ÌŽžNG + if( isdigit(*(p+1)) ) return 0; // 2•¶Žš–Ú‚ª”Žš‚ÌŽžNG + } + if( isdigit(LastC(p)) ){ // Ōオ”Žš + if( l <= 4 ) return 0; // ‚S•¶ŽšˆÈ‰º‚ÌŽžNG +// if( !strchr(p, '/')==NULL ) return0; // /‚ªŠÜ‚Ü‚ê‚Ä‚¢‚È‚¢ŽžNG +// if( p[l-2] != '/' ) return 0; // ÅŒã‚Ì‚P‚‘O‚ª/ˆÈŠO‚ÌŽžNG + } + int i; + for( i = 0; i < l-1; i++, p++ ){ + if( isdigit(*p) ) return 1; // ”Žš‚ªŠÜ‚Ü‚ê‚Ä‚¢‚ê‚ÎOK + } + return 0; +} +///---------------------------------------------------------------- +/// –¼‘O‚©‚Ç‚¤‚©’²‚ׂé +/// +int IsName(LPCSTR p) +{ + if( strlen(p) >= MLNAME ) return 0; + for( ; *p; p++ ){ + if( !isalpha(*p) ) return 0; + } + return 1; +} +/*#$% +====================================================== + ‚i‚`‚Æ‚c‚w‚Ì‹æ•Ê‚ð‚·‚é +------------------------------------------------------ + s : ƒR[ƒ‹ƒTƒCƒ“•¶Žš—ñ‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + 1 : JA + 0 : DX (JD1 INCLUDEED) +------------------------------------------------------ +====================================================== +*/ +int IsJA(const char *s) +{ + if( (!strcmp(s, "8J1RL"))||(!strcmp(s, "8J1RM"))||(strstr(s, "/JD1")!=NULL) ){ + return(0); + } + else if( strchr(s, '/') ){ + char bf[MLCALL+1]; + StrCopy(bf, s, MLCALL); + char *p; + char *t; + for( p = bf; *p; ){ + p = StrDlm(t, p, '/'); + if( *t ){ + if( (strlen(t) >= 2) && isdigit((unsigned char)LastC(t)) ){ + if( *t == 'J' ){ + t++; + if( *t == 'D' ) return(0); + if( (*t >= 'A')&&(*t <= 'S' ) ) return(1); + } + else if( *t == '7' ){ + t++; + if( (*t >= 'J')&&(*t <= 'N' ) ) return(1); + } + else if( *t == '8' ){ + t++; + if( (*t >= 'J')&&(*t <= 'N' ) ) return(1); + } + else { + return 0; + } + } + } + } + } + if( *s == 'J' ){ + s++; + if( *s == 'D' ) return(0); + if( (*s >= 'A')&&(*s <= 'S' ) ) return(1); + } + else if( *s == '7' ){ + s++; + if( (*s >= 'J')&&(*s <= 'N' ) ) return(1); + } + else if( *s == '8' ){ + s++; + if( (*s >= 'J')&&(*s <= 'N' ) ) return(1); + } + return(0); +} +/*#$% +====================================================== + ƒR[ƒ‹ƒTƒCƒ“‚ðƒNƒŠƒbƒv‚·‚é +------------------------------------------------------ + s : ƒR[ƒ‹ƒTƒCƒ“•¶Žš—ñ‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + ƒNƒŠƒbƒvƒR[ƒ‹‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +LPCSTR ClipCall(LPCSTR s) +{ + static char bf[MLCALL+1]; + LPCSTR p1, p2; + + if( (p1=strchr(s, '/'))!=NULL ){ + if( (p2=strchr(p1+1, '/'))!=NULL ){ /* ‚R•ªŠ„ */ + if( (int(strlen(p2+1)) < int((p2 - p1)+1)) || (!IsCall(p2+1)) ){ /* ÅŒã‚æ‚è“r’†‚ª’·‚¢ */ + if( ((p2-p1) < (p1-s))||(!IsCall(p1+1)) ){ /* “r’†‚æ‚èʼn‚ª’·‚¢ */ + StrCopy(bf, s, MLCALL); + *strchr(bf, '/') = 0; + return(bf); + } + else { + strcpy(bf, p1+1); + *strchr(bf, '/') = 0; + return(bf); + } + } + else if( int(strlen(p2+1)) < int((p1 - s)+1) ){ /* ÅŒã‚æ‚èʼn‚ª’·‚¢ */ + StrCopy(bf, s, MLCALL); + *strchr(bf, '/') = 0; + return(bf); + } + else { + return(p2+1); + } + } + else { /* ‚Q•ªŠ„ */ + if( (int(strlen(p1+1)) < int((p1 - s)+1)) || (!IsCall(p1+1)) ){ + StrCopy(bf, s, MLCALL); + *strchr(bf, '/') = 0; + return(bf); + } + else { + return(p1+1); + } + } + } + else { + return(s); + } +} + +/*#$% +====================================================== + ƒ|[ƒ^ƒuƒ‹•\‹L‚𒲂ׂé +------------------------------------------------------ + p : ƒR[ƒ‹ƒTƒCƒ“•¶Žš—ñ‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + ”’l‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +static LPSTR chkptb(LPSTR p) +{ + if( *p ){ + p = lastp(p); + if( isdigit(*p) && ((*(p-1))=='/') ){ + return(p); + } + } + return(NULL); +} + +/*#$% +====================================================== + ƒ|[ƒ^ƒuƒ‹•\‹L‚Ì“ü‚ê‘Ö‚¦ +------------------------------------------------------ + s : ƒR[ƒ‹ƒTƒCƒ“•¶Žš—ñ‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +------------------------------------------------------ + Œ³‚Ì•¶Žš—ñ‚ð”j‰ó‚·‚é +====================================================== +*/ +void chgptb(LPSTR s) +{ + LPSTR p, t; + + if( (p = chkptb(s))!=NULL ){ + t = p; + for( p--; p > s; p-- ){ + if( isdigit(*p) ){ + *p = *t; + t--; + *t = 0; + break; + } + } + } +} + +/*#$% +====================================================== + ƒR[ƒ‹ƒTƒCƒ“‚©‚çƒJƒ“ƒgƒŠ‚ÌŒ³‚ðƒNƒŠƒbƒv‚·‚é +------------------------------------------------------ + s : ƒR[ƒ‹ƒTƒCƒ“•¶Žš—ñ‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + ƒJƒ“ƒgƒŠ‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +LPCSTR ClipCC(LPCSTR s) +{ + static char bf[MLCALL+1]; + LPSTR p, t; + + StrCopy(bf, s, MLCALL); + chgptb(bf); /* ƒ|[ƒ^ƒuƒ‹•\‹L‚Ì“ü‚ê‘Ö‚¦ */ + for( p = bf; *p; ){ + if( *p ){ + p = StrDlm(t, p, '/'); + if( (strlen(t) > 1) && (isdigit(*t) || isdigit(LastC(t))) ) return(t); + } + } + for( p = bf; *p; ){ + if( *p ){ + p = StrDlm(t, p, '/'); + if( (strlen(t) > 1) && (*t!='Q') && strcmp(t, "MM") ) return(t); + } + } + return ClipCall(s); +} + +///---------------------------------------------------------------- +/// •¶Žš—ñ•ÏŠ· +/// +void Yen2CrLf(AnsiString &ws, AnsiString cs) +{ + ws = ""; + LPCSTR p; + int f; + int dlm = 0; + + p = cs.c_str(); + if( *p == 0x22 ){ + p++; + dlm++; + } + for( f = 0; *p; p++ ){ + if( f ){ + f = 0; + ws += *p; + } + else if( _mbsbtype((const unsigned char *)p, 0) == _MBC_LEAD ){ + f = 1; + ws += *p; + } + else if( *p == '\\' ){ + switch(*(p+1)){ + case 'r': + ws += "\r"; + p++; + break; + case 'n': + ws += "\n"; + p++; + break; + case '\\': + ws += "\\"; + p++; + break; + default: + p++; + ws += *p; + break; + } + } + else if( !dlm || (*p!=0x22) || *(p+1) ){ + ws += *p; + } + } +} + +void CrLf2Yen(AnsiString &ws, AnsiString cs) +{ + ws = "\x22"; + LPCSTR p; + + for( p = cs.c_str(); *p; p++ ){ + if( *p == 0x0d ){ + ws += "\\r"; + } + else if( *p == 0x0a ){ + ws += "\\n"; + } + else if( *p == '\\' ){ + ws += "\\\\"; + } + else { + ws += *p; + } + } + ws += "\x22"; +} + + +//--------------------------------------------------------------------------- +// ƒŠƒXƒg‚Ö‚Ì’èŒ^ƒƒbƒZ[ƒW‚Ì“o˜^ií‚ÉÅV‚ªæ“ª‚ɂȂéj +void EntryMsg(AnsiString ttl, AnsiString as, WORD Key) +{ + if( ttl.IsEmpty() ) return; + if( as.IsEmpty() ) return; + int i, j; + + // ŒŸõ + for( i = 0; i < MSGLISTMAX; i++ ){ + if( sys.m_MsgName[i].IsEmpty() ) break; + if( sys.m_MsgName[i] == ttl ) break; + } + // ˆê’v‚µ‚½‚à‚Ì‚ðíœ + for( j = i; j < (MSGLISTMAX - 1); j++ ){ + if( sys.m_MsgName[j].IsEmpty() ) break; + sys.m_MsgList[j] = sys.m_MsgList[j+1]; + sys.m_MsgName[j] = sys.m_MsgName[j+1]; + sys.m_MsgKey[j] = sys.m_MsgKey[j+1]; + } + // ‘S‘Ì‚ð‚P‚ÂŒã‚ë‚É‚¸‚ç‚· + for( j = MSGLISTMAX - 1; j > 0; j-- ){ + sys.m_MsgList[j] = sys.m_MsgList[j-1]; + sys.m_MsgName[j] = sys.m_MsgName[j-1]; + sys.m_MsgKey[j] = sys.m_MsgKey[j-1]; + } + sys.m_MsgName[0] = ttl; + sys.m_MsgList[0] = as; + sys.m_MsgKey[0] = Key; +} + +//--------------------------------------------------------------------------- +// ƒRƒ“ƒ{‚a‚n‚w‚É•¶Žš—ñ‚ðÝ’è‚·‚é +void SetComboBox(TComboBox *pCombo, LPCSTR pList) +{ + pCombo->Clear(); + LPSTR s = strdup(pList); + LPSTR p = s; + LPSTR t; + while(*p){ + p = StrDlm(t, p); + clipsp(t); + t = SkipSpace(t); + if( *t ) pCombo->Items->Add(t); + } + free(s); +} + +//--------------------------------------------------------------------------- +// ƒRƒ“ƒ{‚a‚n‚w‚É•¶Žš—ñ‚ðÝ’è‚·‚é +void GetComboBox(AnsiString &as, TComboBox *pCombo) +{ + as = ""; + int i; + for( i = 0; i < pCombo->Items->Count; i++ ){ + if( i ) as += ','; + as += pCombo->Items->Strings[i]; + } +} +//--------------------------------------------------------------------------- +// ƒOƒŠƒbƒh‚ÌŠÔŠu‚ðÝ’è‚·‚é +void SetGridWidths(TStringGrid *pGrid, LPCSTR pList) +{ + LPSTR s = strdup(pList); + LPSTR p = s; + LPSTR t; + int i; + for( i = 0; (i < pGrid->ColCount) && *p; i++ ){ + p = StrDlm(t, p); + clipsp(t); + t = SkipSpace(t); + if( *t ){ + int w = atoin(t, -1); + pGrid->ColWidths[i] = w; + } + } + free(s); +} +//--------------------------------------------------------------------------- +// ƒOƒŠƒbƒh‚ÌŠÔŠu‚ð“ǂ݂±‚Þ +void GetGridWidths(AnsiString &as, TStringGrid *pGrid) +{ + as = ""; + int i; + for( i = 0; i < pGrid->ColCount; i++ ){ + if( i ) as += ','; + as += pGrid->ColWidths[i]; + } +} + +int FontStyle2Code(TFontStyles style) +{ + int code = 0; + + TFontStyles fa; + TFontStyles fb; + + fa << fsBold; + fb << fsBold; + fa *= style; + if( fa == fb ) code |= FSBOLD; + fa >> fsBold; + fb >> fsBold; + fa << fsItalic; + fb << fsItalic; + fa *= style; + if( fa == fb ) code |= FSITALIC; + return code; +} + +TFontStyles Code2FontStyle(int code) +{ + TFontStyles fs; + + if( code & FSBOLD ) fs << fsBold; + if( code & FSITALIC ) fs << fsItalic; + return fs; +} + +static int FontZH; +static int FontZW; +static int FontZOX; +static int FontZOY; + +LPCSTR GetZeroCode(void) +{ + static char bf[3]; + bf[2] = 0; + switch(sys.m_FontCharset){ + case SHIFTJIS_CHARSET: + bf[0] = 0x83; + bf[1] = 0xd3; + break; + case HANGEUL_CHARSET: + bf[0] = 0xa8; // 0xa9 + bf[1] = 0xaa; + break; + case CHINESEBIG5_CHARSET: // ‘ä˜p + bf[0] = 0xa3; + bf[1] = 0x58; + break; + case 134: // ’†‘ŒêŠÈ—ª + bf[0] = 0xa6; + bf[1] = 0xd5; + break; + default: + bf[0] = char('Ø'); + bf[1] = 0; + break; + } + return bf; +} + +void DrawChar(TCanvas *pCanvas, int x, int y, char c) +{ + char bf[3]; + bf[1] = 0; + int size = 0; + if( (c == '0') && sys.m_FontZero ){ + strcpy(bf, GetZeroCode()); + if( bf[1] ){ + size = pCanvas->Font->Size; + pCanvas->Font->Size = size * 7 / 8; + x += FontZOX; + y += FontZOY; + } + } + else { + bf[0] = c; + } + + ::SetBkMode(pCanvas->Handle, TRANSPARENT); + pCanvas->TextOut(x, y, bf); + if( size ){ + pCanvas->Font->Size = size; + } +} + +//--------------------------------------------------------------------------- +void TopWindow(TForm *tp) +{ + if( tp->FormStyle == fsStayOnTop ){ + ::SetWindowPos(tp->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); + } +} +void NormalWindow(TForm *tp) +{ + if( tp->FormStyle == fsStayOnTop ){ + ::SetWindowPos(tp->Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); + } +} +//--------------------------------------------------------------------------- +// ƒƒCƒ“‰æ–Ê•\ަˆ—ƒNƒ‰ƒX +CPrintText::CPrintText() +{ + pPaintBox = NULL; + pCanvas = NULL; + pBitmap = NULL; + + m_TX = 0; + + m_Scroll = 0; + m_Top = 0; + m_Line = 0; + m_Col = 0; + m_Count = 0; + m_WriteLine = 0; + m_DisEvent = 0; + m_fp = NULL; + memset(pList, 0, sizeof(pList)); + memset(pColList, 0, sizeof(pColList)); +} + +CPrintText::~CPrintText() +{ + int i; + for( i = 0; i < TEXTLINEMAX; i++ ){ + if( pList[i] != NULL ) delete[] pList[i]; //JA7UDE 0428 + pList[i] = NULL; + if( pColList[i] != NULL ) delete[] pColList[i]; //JA7UDE 0428 + pColList[i] = NULL; + } +} + +void CPrintText::Clear(void) +{ + m_Top = 0; + m_Line = 0; + m_Col = 0; + m_Count = 0; + m_WriteLine = 0; + + int i; + for( i = 0; i < TEXTLINEMAX; i++ ){ + *pList[i] = char(i ? -1 : 0); + } + for( i = 0; i < TEXTLINEMAX; i++ ){ + *pColList[i] = 0; + } + if( pScroll != NULL ) pScroll->Enabled = FALSE; + if( pPaintBox != NULL ) pPaintBox->Invalidate(); +} + +void CPrintText::CursorOff(void) +{ + if( m_Cursor ){ + DrawCursor(0); + } +} + +void CPrintText::CursorOn() +{ + if( m_Cursor ){ + DrawCursor(1); + } +} + +void CPrintText::DrawCursor(int sw) +{ + if( GetPos(m_Line) != m_WriteLine ) return; + + TRect rc; + + rc.Left = m_Col * m_FW + 1; + rc.Right = rc.Left + m_FW - 1; + rc.Bottom = (m_Line * m_FH) + m_FH - 1; + rc.Top = rc.Bottom - 3; + + if( sw ){ + pCanvas->Brush->Color = sys.m_ColorRX; + pCanvas->FillRect(rc); + } + else { + if( pBitmap != NULL ){ + pCanvas->Brush->Bitmap = pBitmap; + } + else { + pCanvas->Brush->Color = sys.m_ColorRXBack; + } + pCanvas->FillRect(rc); +// pCanvas->Font->Color = sys.m_ColorRX; + if( (pList[m_WriteLine] != NULL) && (*pList[m_WriteLine]!=-1) ){ + LPSTR p = pList[m_WriteLine]; + LPSTR pc = pColList[m_WriteLine]; + if( int(strlen(p)) > m_Col ){ + pCanvas->Font->Color = pc[m_Col] ? sys.m_ColorRXTX : sys.m_ColorRX; + DrawChar(pCanvas, m_Col * m_FW, m_Line * m_FH, p[m_Col]); + } + } + } +} + +void CPrintText::SetCursor(int sw) +{ + if( m_Cursor != sw ){ + DrawCursor(sw); + m_Cursor = sw; + } +} + +void CPrintText::AdjZero(void) +{ + if( pCanvas == NULL ) return; + + LPCSTR p = GetZeroCode(); + if( sys.m_FontZero && (*(p+1)) ){ + pCanvas->Font->Size = sys.m_FontSize * 7 / 8; + FontZH = pCanvas->TextHeight(p) + sys.m_FontAdjY; + FontZW = pCanvas->TextWidth(p) + sys.m_FontAdjX; + FontZOX = (m_FW - FontZW)/2; + FontZOY = (m_FH - FontZH)/2; + } + pCanvas->Font->Size = sys.m_FontSize; +} + +void CPrintText::SetPaintBox(TPaintBox *tp, TScrollBar *sp) +{ + pPaintBox = tp; + pScroll = sp; + + pScroll->Align = alRight; + pScroll->EnableAlign(); + pCanvas = pPaintBox->Canvas; + + if( !sys.m_FontName.IsEmpty() ){ + pPaintBox->Font->Name = sys.m_FontName; + pCanvas->Font->Name = sys.m_FontName; + } + pPaintBox->Font->Charset = BYTE(sys.m_FontCharset); + pCanvas->Font->Charset = BYTE(sys.m_FontCharset); + + TFontStyles fs = Code2FontStyle(sys.m_FontStyle); + pPaintBox->Font->Style = fs; + pCanvas->Font->Style = fs; + + pPaintBox->Font->Pitch = fpFixed; + pCanvas->Font->Pitch = fpFixed; + LPCSTR p = GetZeroCode(); + if( sys.m_FontZero && (*(p+1)) ){ + pPaintBox->Font->Size = sys.m_FontSize * 7 / 8; + pCanvas->Font->Size = sys.m_FontSize * 7 / 8; + FontZH = pCanvas->TextHeight(p) + sys.m_FontAdjY; + FontZW = pCanvas->TextWidth(p) + sys.m_FontAdjX; + } + + pPaintBox->Font->Size = sys.m_FontSize; + pCanvas->Font->Size = sys.m_FontSize; + + m_FH = pCanvas->TextHeight("M") + sys.m_FontAdjY; + m_FW = pCanvas->TextWidth("M") + sys.m_FontAdjX; + if( sys.m_FontZero && (*(p+1)) ){ + FontZOX = (m_FW - FontZW)/2; + FontZOY = (m_FH - FontZH)/2; + } + m_LineMax = pPaintBox->Height / m_FH; + int OldColMax = m_ColMax; + if( Remote ){ + m_ColMax = 80; + } + else { + m_ColMax = pPaintBox->Width / m_FW; + } + m_DestRC.Left = 0; m_DestRC.Right = pPaintBox->Width - 1; + m_SourceRC.Left = 0; m_SourceRC.Right = pPaintBox->Width - 1; + m_FillRC.Left = 0; m_FillRC.Right = pPaintBox->Width - 1; + + m_DestRC.Top = 0; m_DestRC.Bottom = m_FH * (m_LineMax - 1); + m_SourceRC.Top = m_FH; m_SourceRC.Bottom = m_FH * m_LineMax; + m_FillRC.Top = m_FH * (m_LineMax - 1); m_FillRC.Bottom = m_FH * m_LineMax; + if( pBitmap != NULL ){ + pCanvas->Brush->Bitmap = pBitmap; + } + else { + pCanvas->Brush->Color = sys.m_ColorRXBack; + } + + if( m_ColMax != OldColMax ){ + int i; + int CopyLen = (m_ColMax > OldColMax) ? OldColMax : m_ColMax; + for( i = 0; i < TEXTLINEMAX; i++ ){ + if( pList[i] != NULL ){ + LPSTR p = new char[m_ColMax + 1]; + StrCopy(p, pList[i], CopyLen); + delete pList[i]; + pList[i] = p; + + p = new char[m_ColMax + 1]; + memcpy(p, pColList[i], CopyLen); + delete pColList[i]; + pColList[i] = p; + } + else { + pList[i] = new char[m_ColMax + 1]; + *pList[i] = char(i ? -1 : 0); + pColList[i] = new char[m_ColMax + 1]; + *pColList[i] = 0; + } + } + } + if( m_Col >= m_ColMax ){ + m_Col = m_ColMax - 1; + } + if( m_Count >= m_LineMax ){ + m_Line = m_LineMax - 1; + m_Top = AdjustPos(m_WriteLine - m_LineMax + 1); + if( GetPos(m_Line+1) == m_WriteLine ){ + m_DisEvent++; + pScroll->Max = m_Count - m_LineMax + 1; + pScroll->Position = pScroll->Max; + pScroll->LargeChange = WORD(m_LineMax * 2 / 3); + pScroll->SmallChange = 1; + pScroll->Enabled = TRUE; + m_DisEvent--; + } + } + else { + m_Line = m_WriteLine; + m_Top = 0; + pScroll->Enabled = FALSE; + } + pPaintBox->Invalidate(); +} + +void CPrintText::Scroll(void) +{ + if( !pPaintBox->Visible ) return; + +#if 1 + if( ::GetForegroundWindow() != Application->MainForm->Handle ){ + pPaintBox->Invalidate(); +// Application->MainForm->Caption = "Invalidate"; + } + else { + pCanvas->CopyRect(m_DestRC, pCanvas, m_SourceRC); + pCanvas->FillRect(m_FillRC); +// Application->MainForm->Caption = "CopyRect"; + } +#else + pCanvas->CopyRect(m_DestRC, pCanvas, m_SourceRC); + pCanvas->FillRect(m_FillRC); +#endif +} + +//------------------------------------------ +// 0: / ‚Å•ª—£‚µ‚È‚¢ +// 1: / ‚Å•ª—£ +void CPrintText::GetText(LPSTR t, int x, int y, int sw) +{ + char *bp = new char[m_ColMax * 3 + 1]; + + *t = 0; + int col = (x / m_FW) + m_ColMax; + int line = y / m_FH; + + int pos = GetPos(line); + + memset(bp, 0, m_ColMax * 3 + 1); + + memcpy(bp, pList[GetBefore(pos)], m_ColMax); + if( (*bp == -1) || ((int)strlen(bp) < m_ColMax) ){ + memset(bp, 0, m_ColMax); + } + + memcpy(bp+m_ColMax, pList[pos], m_ColMax); + if( bp[m_ColMax] == -1 ) bp[m_ColMax] = 0; + int len = strlen(&bp[m_ColMax]); + memset(&bp[m_ColMax + len], 0, m_ColMax - len); + + memcpy(bp+m_ColMax+m_ColMax, pList[GetNext(pos)], m_ColMax); + if( bp[m_ColMax+m_ColMax] == -1 ){ + bp[m_ColMax+m_ColMax] = 0; + } + + LPSTR p; + for( p = &bp[col]; p >= bp; p-- ){ + if( !isalpha(*p) && !isdigit(*p) && ((*p != '/')||sw) && ((sw != 2) || (*p != ':')) ){ + break; + } + } + p++; + if( isalpha(*p) || isdigit(*p) ){ + strcpy(t, p); + for( p = t; *p; p++ ){ + if( !isalpha(*p) && !isdigit(*p) && ((*p != '/')||sw) && ((sw != 2) || (*p != ':')) ){ + *p = 0; + break; + } + } + } + delete bp; +} + +//------------------------------------------ +int CPrintText::GetText(LPSTR t, int y) +{ + if( y > m_Count ) return 0; + + y = AdjustPos(m_WriteLine - y); + if( *pList[y] ){ + if( *pColList[y] ){ + return 0; + } + else { + strcpy(t, pList[y]); + } + } + else { + *t = 0; + } + return 1; +} + +void CPrintText::ShiftText(int x, int y) +{ + CRTTY rtty; + + int col = x / m_FW; + int line = y / m_FH; + + int pos = GetPos(line); + + LPSTR s = pList[pos]; + if( *s == -1 ) return; + if( (int)strlen(s) <= col ) return; + + LPSTR p; + for( p = &s[col-1]; p >= s; p-- ){ + if( *p != ' ' ){ + *p = rtty.InvShift(*p); + } + else { + break; + } + } + for( p = &s[col]; *p; p++ ){ + if( *p != ' ' ){ + *p = rtty.InvShift(*p); + } + else { + break; + } + } + pPaintBox->Invalidate(); +} + +void CPrintText::GetString(AnsiString &as) +{ + as = ""; + + LPSTR p; + int l = m_WriteLine; + if( m_Count < TEXTLINEMAX ){ + l = m_WriteLine - m_Count - 1; + } + l = AdjustPos(l); + do { + l = GetNext(l); + p = pList[l]; + if( *p != -1 ){ + as += pList[l]; + as += "\r\n"; + } + }while((l != m_WriteLine)); +} + +void CPrintText::PaintCanvas(void) +{ + if( pCanvas == NULL ) return; + + CursorOff(); + int i, j, x, y; + LPSTR p, pc; +// pCanvas->Font->Color = sys.m_ColorRX; + for( y = i = 0; i <= m_Line; i++, y += m_FH ){ + p = pList[GetPos(i)]; + pc = pColList[GetPos(i)]; + if( *p != -1 ){ + for( x = j = 0; j < m_ColMax; j++, x += m_FW, p++, pc++ ){ + if( *p ){ + pCanvas->Font->Color = *pc ? sys.m_ColorRXTX : sys.m_ColorRX; + DrawChar(pCanvas, x, y, *p); + } + else { + break; + } + } + } + else { + break; + } + } + CursorOn(); +} + +void CPrintText::IncCount(void) +{ + m_WriteLine = GetNext(m_WriteLine); + *(pList[m_WriteLine]) = 0; + *(pList[GetNext(m_WriteLine)]) = -1; + if( m_Count < TEXTLINEMAX ){ + m_Count++; + if( m_Count >= m_LineMax ){ + if( GetPos(m_Line+1) == m_WriteLine ){ + m_DisEvent++; + pScroll->Max = m_Count - m_LineMax + 1; + pScroll->Position = pScroll->Max; + pScroll->LargeChange = WORD(m_LineMax * 2 / 3); + pScroll->SmallChange = 1; + pScroll->Enabled = TRUE; + m_DisEvent--; + } + } + } + if( m_Count >= m_LineMax ){ + if( GetPos(m_Line+1) == m_WriteLine ){ + m_Top = GetNext(m_Top); + } + } +} + +void CPrintText::ScrollBarChange(void) +{ + if( m_DisEvent ) return; + + int n = pScroll->Max - pScroll->Position; + if( n > (TEXTLINEMAX - m_LineMax - 1) ) n = TEXTLINEMAX - m_LineMax - 1; + m_Top = m_WriteLine - m_LineMax - n + 1; + while( m_Top < 0 ) m_Top += TEXTLINEMAX; + while( m_Top >= TEXTLINEMAX ) m_Top -= TEXTLINEMAX; + if( pScroll->Max == pScroll->Position ){ + m_DisEvent++; + int max = m_Count - m_LineMax + 1; + pScroll->SetParams(max, 0, max); + m_DisEvent--; + } + pPaintBox->Invalidate(); +} + +void CPrintText::ScrollBarUp(int page) +{ + if( pScroll->Enabled == TRUE ){ + if( pScroll->Position ){ + int n; + if( page == 0 ){ + n = 1; + } + else if( page == 1 ){ + n = m_LineMax/2; + } + else { + n = pScroll->Position; + } + if( pScroll->Position < n ) n = pScroll->Position; + pScroll->Position = pScroll->Position - n; + } + } +} + +void CPrintText::ScrollBarDown(int page) +{ + if( pScroll->Enabled == TRUE ){ + if( pScroll->Position != pScroll->Max ){ + int n; + if( page == 0 ){ + n = 1; + } + else if( page == 1 ){ + n = m_LineMax/2; + } + else { + n = pScroll->Max - pScroll->Position; + } + if( (pScroll->Position + n) > pScroll->Max ) n = pScroll->Max - pScroll->Position; + pScroll->Position = pScroll->Position + n; + } + } +} + +void CPrintText::TrigTimeStampImm(LPCSTR pName) +{ + if( m_fp == NULL ) return; + + m_TimeStampTrig = 0; + m_TrigName = pName; + if( sys.m_TimeStampUTC ){ + GetUTC(&m_TrigTime); + } + else { + GetLocal(&m_TrigTime); + } + m_TimeStampTrig = 1; + + if( m_Col ){ + WriteFile("\r\n"); + } + WriteTimeStamp(); +} + +void CPrintText::TrigTimeStamp(LPCSTR pName, int sw) +{ + if( !sw && (m_fp == NULL) ) return; + + m_TimeStampTrig = 0; + m_TrigName = pName; + if( sys.m_TimeStampUTC ){ + GetUTC(&m_TrigTime); + } + else { + GetLocal(&m_TrigTime); + } + m_TimeStampTrig = 1; + if( sw ){ + m_TimeStampTrig = 0; + char bf[256]; + LPCSTR p; + + if( m_Col ){ + PutChar(0x0d); + PutChar(0x0a); + } + sprintf(bf, "<%02u%02u%02u %02u:%02u:%02u %s>\r\n", + m_TrigTime.wYear % 100, m_TrigTime.wMonth, m_TrigTime.wDay, + m_TrigTime.wHour, m_TrigTime.wMinute, m_TrigTime.wSecond, + m_TrigName.c_str() + ); + for( p = bf; *p; p++ ){ + PutChar(*p); + } + } + else if( !m_Col ){ + WriteTimeStamp(); + } +} + +void CPrintText::WriteTimeStamp(void) +{ + if( m_fp == NULL ) return; + + char bf[256]; + + if( m_TimeStampTrig ){ + m_TimeStampTrig = 0; + sprintf(bf, "<%02u%02u%02u %02u:%02u:%02u %s>\r\n", + m_TrigTime.wYear % 100, m_TrigTime.wMonth, m_TrigTime.wDay, + m_TrigTime.wHour, m_TrigTime.wMinute, m_TrigTime.wSecond, + m_TrigName.c_str() + ); + WriteFile(bf); + } +//typedef struct _SYSTEMTIME { /* st */ +// WORD wYear; +// WORD wMonth; +// WORD wDayOfWeek; +// WORD wDay; +// WORD wHour; +// WORD wMinute; +// WORD wSecond; +// WORD wMilliseconds; +//} SYSTEMTIME; +} + +void CPrintText::WriteFile(LPCSTR p) +{ + if( m_fp == NULL ) return; + + for( ; *p; p++ ){ + WriteFile(*p); + } +} + +void CPrintText::WriteFile(char c) +{ + if( m_fp != NULL ){ + fputc(c & 0x007f, m_fp); + } +} + +void CPrintText::PutChar(char c) +{ + int show = (GetPos(m_Line) == m_WriteLine) ? 1 : 0; + + CursorOff(); + if( c == 0x0a ){ + if( m_Scroll != 'o' ){ + WriteFile("\r\n"); + WriteTimeStamp(); + IncCount(); + m_Col = 0; + if( show ){ + m_Line++; + if( m_Line >= m_LineMax ){ + m_Line--; + Scroll(); + } + m_Scroll = c; + } + } + else { + m_Scroll = 0; + } + } + else if( c == 0x0d ){ + if( m_Scroll != 'o' ){ + m_Col = 0; + m_Scroll = c; + } + } + else if( c ){ + if( m_Scroll ){ + if( m_Scroll == 0x0d ){ + PutChar(0x0a); + CursorOff(); + m_Scroll = 0; + } + m_Col = 0; + m_Scroll = 0; + } + LPSTR pt = pList[m_WriteLine]; + WriteFile(c); + pt[m_Col] = c; + pt[m_Col + 1] = 0; + LPSTR pc = pColList[m_WriteLine]; + pc[m_Col] = BYTE(m_TX); + if( show ){ + pCanvas->Font->Color = m_TX ? sys.m_ColorRXTX : sys.m_ColorRX; + DrawChar(pCanvas, m_Col * m_FW, m_Line * m_FH, c); + } + m_Col++; + if( m_Col >= m_ColMax ){ + m_Col = 0; + IncCount(); + if( show ){ + m_Line++; + if( m_Line >= m_LineMax ){ + WriteFile("\r\n"); + WriteTimeStamp(); + m_Line--; + Scroll(); + } + m_Scroll = 'o'; + } + } + } + CursorOn(); +} + +void CPrintText::MakeLogName(void) +{ + char bf[256]; + +//typedef struct _SYSTEMTIME { /* st */ +// WORD wYear; +// WORD wMonth; +// WORD wDayOfWeek; +// WORD wDay; +// WORD wHour; +// WORD wMinute; +// WORD wSecond; +// WORD wMilliseconds; +//} SYSTEMTIME; + + SYSTEMTIME st; + + GetLocal(&st); + sprintf(bf, "%s%02u%02u%02u.txt", LogDir, st.wYear % 100, st.wMonth, st.wDay); + sys.m_LogName = bf; +} + +void CPrintText::OpenLogFile(void) +{ + CloseLogFile(); + if( sys.m_LogName.IsEmpty() ) return; + if( !sys.m_log ) return; + + m_fp = fopen(sys.m_LogName.c_str(), "ab"); + if( m_fp == NULL ){ + ErrorMB( "%s ‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", sys.m_LogName.c_str() ); + return; + } + fprintf(m_fp, "\r\n"); +} + +void CPrintText::CloseLogFile(void) +{ + if( m_fp != NULL ){ + if( fclose(m_fp) ){ + m_fp = NULL; + ErrorMB( "%s ‚ª³‚µ‚­ì¬‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", sys.m_LogName.c_str() ); + } + m_fp = NULL; + } +} + +//--------------------------------------------------------------------------- +// ƒL[“ü—͉æ–Ê•\ަˆ—ƒNƒ‰ƒX +CFifoEdit::CFifoEdit() +{ + pPaintBox = NULL; + pCanvas = NULL; + pScroll = NULL; + pBitmap = NULL; + + m_DispTop = 0; + m_Line = 0; + m_WriteLine = 0; + m_WriteCol = 0; + m_ReadLine = 0; + m_ReadCol = 0; + m_DisEvent = 0; + m_Cursor = 1; + memset(pList, 0, sizeof(pList)); +} + +CFifoEdit::~CFifoEdit() +{ + int i; + for( i = 0; i < FIFOLINEMAX; i++ ){ + if( pList[i] != NULL ) delete[] pList[i]; + pList[i] = NULL; + } +} + +void CFifoEdit::CursorOff(void) +{ + if( m_Cursor ){ + DrawCursor(0); + } +} + +void CFifoEdit::CursorOn() +{ + if( m_Cursor ){ + DrawCursor(1); + } +} + +void CFifoEdit::DrawCursor(int sw) +{ + if( m_WriteLine > (m_DispTop + m_Line) ) return; + + TRect rc; + + rc.Left = m_WriteCol * m_FW + 1; + rc.Right = rc.Left + m_FW - 1; + rc.Bottom = (m_Line * m_FH) + m_FH - 1; + rc.Top = rc.Bottom - 3; + + if( sw ){ + pCanvas->Brush->Color = sys.m_ColorIN; + pCanvas->FillRect(rc); + } + else { + if( pBitmap != NULL ){ + pCanvas->Brush->Bitmap = pBitmap; + } + else { + pCanvas->Brush->Color = sys.m_ColorINBack; + } + pCanvas->FillRect(rc); + pCanvas->Font->Color = sys.m_ColorIN; + if( m_WriteLine >= FIFOLINEMAX ) return; + if( (pList[m_WriteLine] != NULL) && (*pList[m_WriteLine]!=-1) ){ + LPSTR p = pList[m_WriteLine]; + if( int(strlen(p)) > m_WriteCol ){ + DrawChar(pCanvas, m_WriteCol * m_FW, m_Line * m_FH, p[m_WriteCol]); + } + } + } +} + +void CFifoEdit::SetCursor(int sw) +{ + if( m_Cursor != sw ){ + DrawCursor(sw); + m_Cursor = sw; + } +} + +void CFifoEdit::SetPaintBox(TPaintBox *tp, TScrollBar *sp) +{ + pPaintBox = tp; + pScroll = sp; + + pScroll->Align = alRight; + pScroll->EnableAlign(); + pCanvas = pPaintBox->Canvas; + + if( !sys.m_FontName.IsEmpty() ){ + pPaintBox->Font->Name = sys.m_FontName; + pCanvas->Font->Name = sys.m_FontName; + } + + TFontStyles fs = Code2FontStyle(sys.m_FontStyle); + pPaintBox->Font->Style = fs; + pCanvas->Font->Style = fs; + + pPaintBox->Font->Charset = BYTE(sys.m_FontCharset); + pCanvas->Font->Charset = BYTE(sys.m_FontCharset); + pPaintBox->Font->Pitch = fpFixed; + pCanvas->Font->Pitch = fpFixed; + pPaintBox->Font->Size = sys.m_FontSize; + pCanvas->Font->Size = sys.m_FontSize; + + m_FH = pCanvas->TextHeight("M") + sys.m_FontAdjY; + m_FW = pCanvas->TextWidth("M") + sys.m_FontAdjX; + + m_LineMax = pPaintBox->Height / m_FH; + int OldColMax = m_ColMax; + if( Remote ){ + m_ColMax = 80; + } + else { + m_ColMax = pPaintBox->Width / m_FW; + } + m_DestRC.Left = 0; m_DestRC.Right = pPaintBox->Width - 1; + m_SourceRC.Left = 0; m_SourceRC.Right = pPaintBox->Width - 1; + m_FillRC.Left = 0; m_FillRC.Right = pPaintBox->Width - 1; + + m_DestRC.Top = 0; m_DestRC.Bottom = m_FH * (m_LineMax - 1); + m_SourceRC.Top = m_FH; m_SourceRC.Bottom = m_FH * m_LineMax; + m_FillRC.Top = m_FH * (m_LineMax - 1); m_FillRC.Bottom = m_FH * m_LineMax; + if( pBitmap != NULL ){ + pCanvas->Brush->Bitmap = pBitmap; + } + else { + pCanvas->Brush->Color = sys.m_ColorINBack; + } + + if( OldColMax != m_ColMax ){ + int i; + int CopyLen = (m_ColMax > OldColMax) ? OldColMax : m_ColMax; + for( i = 0; i < FIFOLINEMAX; i++ ){ + if( pList[i] != NULL ){ + LPSTR p = new char[m_ColMax + 1]; + StrCopy(p, pList[i], CopyLen); + delete pList[i]; + pList[i] = p; + } + else { + pList[i] = new char[m_ColMax + 1]; + *pList[i] = 0; + } + } + } + if( m_WriteCol >= m_ColMax ){ + m_WriteCol = m_ColMax - 1; + } + if( m_WriteLine >= m_LineMax ){ + m_Line = m_LineMax - 1; + m_DispTop = m_WriteLine - m_LineMax + 1; + } + else { + m_Line = m_WriteLine; + m_DispTop = 0; + } + UpdateScroll(); + pPaintBox->Invalidate(); +} + +void CFifoEdit::Scroll(void) +{ + pCanvas->CopyRect(m_DestRC, pCanvas, m_SourceRC); + pCanvas->FillRect(m_FillRC); +} + +void CFifoEdit::PaintCanvas(void) +{ + if( pCanvas == NULL ) return; + + CursorOff(); + int i, j, x, y, line; + LPSTR p; + line = m_DispTop; + for( i = y = 0; i <= m_Line; i++, line++, y += m_FH ){ + if( line >= FIFOLINEMAX ) break; + p = pList[line]; + for( x = j = 0; j < m_ColMax; j++, x += m_FW, p++ ){ + if( *p ){ + ::SetBkMode(pCanvas->Handle, TRANSPARENT); + if( (line < m_ReadLine) || + ((line == m_ReadLine) && (j < m_ReadCol) ) + ){ + pCanvas->Font->Color = sys.m_ColorINTX; + } + else { + pCanvas->Font->Color = sys.m_ColorIN; + } + DrawChar(pCanvas, x, y, *p); + } + else { + break; + } + } + } + CursorOn(); +} + +void CFifoEdit::ScrollBarChange(void) +{ + if( m_DisEvent ) return; + + int n = pScroll->Max - pScroll->Position; + m_DispTop = m_WriteLine - m_LineMax - n + 1; + if( m_DispTop < 0 ) m_DispTop = 0; + if( m_DispTop > (m_WriteLine - m_LineMax) ) m_DispTop = m_WriteLine - m_LineMax + 1; + if( pScroll->Max == pScroll->Position ){ // ÅIs‚ÌŽž + m_DisEvent++; + int max = m_WriteLine - m_LineMax + 1; + pScroll->SetParams(max, 0, max); + m_DisEvent--; + } + pPaintBox->Invalidate(); +} + +void CFifoEdit::ScrollBarUp(int page) +{ + if( pScroll->Enabled == TRUE ){ + if( pScroll->Position ){ + int n; + if( page == 0 ){ + n = 1; + } + else if( page == 1 ){ + n = m_LineMax/2; + } + else { + n = pScroll->Position; + } + if( pScroll->Position < n ) n = pScroll->Position; + pScroll->Position = pScroll->Position - n; + } + } +} + +void CFifoEdit::ScrollBarDown(int page) +{ + if( pScroll->Enabled == TRUE ){ + if( pScroll->Position != pScroll->Max ){ + int n; + if( page == 0 ){ + n = 1; + } + else if( page == 1 ){ + n = m_LineMax/2; + } + else { + n = pScroll->Max - pScroll->Position; + } + if( (pScroll->Position + n) > pScroll->Max ) n = pScroll->Max - pScroll->Position; + pScroll->Position = pScroll->Position + n; + } + } +} + +//--------------------------------------------------------------- +// ƒXƒNƒ[ƒ‹ƒo[‚ÌXV +void CFifoEdit::UpdateScroll(void) +{ + m_DisEvent++; + if( m_WriteLine >= m_LineMax ){ + int max = m_WriteLine - m_LineMax + 1; + pScroll->SetParams(max, 0, max); + pScroll->LargeChange = WORD(m_LineMax * 2 / 3); + pScroll->SmallChange = 1; + pScroll->Enabled = TRUE; + } + else if( pScroll->Enabled ){ + pScroll->Enabled = FALSE; + } + m_DisEvent--; +} +//--------------------------------------------------------------- +// ‚·‚ׂăNƒŠƒA‚·‚é +void CFifoEdit::Clear(void) +{ + m_Line = 0; // ‰æ–Ê“à‚ÌsˆÊ’u + + m_DispTop = 0; // •\ަƒgƒbƒvs‚̈ʒu + + m_WriteLine = 0; // ‘‚«‚±‚Ýs‚̈ʒu + m_WriteCol = 0; // ‘‚«‚±‚݃Jƒ‰ƒ€ˆÊ’u + + m_ReadLine = 0; // Žæ‚肾‚µs‚̈ʒu + m_ReadCol = 0; // Žæ‚肾‚µƒJƒ‰ƒ€ˆÊ’u + + int i; + for( i = 0; i < FIFOLINEMAX; i++ ){ + memset(pList[i], 0, m_ColMax); + } + if( pScroll != NULL ) pScroll->Enabled = FALSE; + if( pPaintBox != NULL ) pPaintBox->Invalidate(); +} + +//--------------------------------------------------------------- +// 擪‚©‚ç‚Ì•¶Žš—ñ‚ð”ñ”j‰ó‚ÅŽæ‚èo‚· +void CFifoEdit::GetString(AnsiString &as) +{ + as = ""; + for( int i = 0; i <= m_WriteLine; i++ ){ + if( i ) as += "\r\n"; + if( i >= FIFOLINEMAX ) break; + if( *pList[i] ) as += pList[i]; + } +} +//--------------------------------------------------------------- +// Žæ‚肾‚µ‰Â”\‚È•¶Žš”‚𓾂é +int CFifoEdit::GetLen(void) +{ + int mr = m_ReadLine; + int n = 0; + while(mr < m_WriteLine){ + n += strlen(pList[mr]); + mr++; + } + n += (m_WriteCol - m_ReadCol); + return n; +} +//--------------------------------------------------------------- +// ÅŒã‚Ì•¶Žš‚𓾂é +char CFifoEdit::GetLastChar(void) +{ + if( m_ReadLine > m_WriteLine ) return 0; // ‘—o•¶Žš‚È‚µ + if( m_ReadLine == m_WriteLine ){ // “¯ˆês‚ÌŽž + if( m_WriteCol <= m_ReadCol ) return 0; // ‘—o•¶Žš‚È‚µ + } + if( !m_WriteCol ) return 0x0a; + + LPSTR p; + p = pList[m_WriteLine]; + p += m_WriteCol - 1; + return *p; +} +//--------------------------------------------------------------- +// ƒXƒy[ƒX‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©’²‚ׂé +int CFifoEdit::IsSAS(int sw) +{ + if( m_ReadLine > m_WriteLine ) return 1; // ‘—o•¶Žš‚È‚µ + if( m_ReadLine == m_WriteLine ){ // “¯ˆês‚ÌŽž + if( m_WriteCol <= m_ReadCol ) return 1; // ‘—o•¶Žš‚È‚µ + } + if( m_ReadLine < m_WriteLine ) return 1; // •¡”s‚̂Ƃ« + + + LPSTR p; + p = pList[m_ReadLine]; + p += m_ReadCol; + if( sw ){ + for( ; *p; p++ ){ + if( *p == '\\' ) return 1; + } + return 0; + } + if( !*p ) return 1; + for( ; *p; p++ ){ + if( *p == ' ' ) return 1; + if( *p == '\\' ) return 1; + } + return 0; +} +//--------------------------------------------------------------- +// 擪‚Ìˆê•¶Žš‚ðŽæ‚èo‚· +char CFifoEdit::GetChar(void) +{ + LPSTR p; + char c; + + if( m_ReadLine > m_WriteLine ) return -1; // ‘—o•¶Žš‚È‚µ + if( m_ReadLine == m_WriteLine ){ // “¯ˆês‚ÌŽž + if( m_WriteCol <= m_ReadCol ) return -1; // ‘—o•¶Žš‚È‚µ + } + + p = pList[m_ReadLine]; + p += m_ReadCol; + + if( !*p ){ // ‰üs + if( m_ReadCol ){ + c = *(p-1); + if( ((c == '_')||(c == '~')) && (m_ReadCol == m_ColMax) ){ + m_ReadLine++; + m_ReadCol = 0; + return 0; + } + } + c = 0x0d; + m_ReadLine++; + m_ReadCol = 0; + } + else { + if( *p == '%' ){ // “ÁŽê‹L† + if( (m_ReadLine >= m_WriteLine) && (m_WriteCol <= (m_ReadCol + 1)) ){ + return 0; // ‘—M•Û—¯ + } + } + c = *p; + if( (m_ReadLine >= m_DispTop) && (m_ReadLine <= (m_DispTop + m_ColMax - 1)) ){ + pCanvas->Font->Color = sys.m_ColorINTX; + ::SetBkMode(pCanvas->Handle, TRANSPARENT); + DrawChar(pCanvas, m_ReadCol * m_FW, (m_ReadLine - m_DispTop) * m_FH, c); + } + m_ReadCol++; + } + return c; +} + +//--------------------------------------------------------------- +// 擪‚Ìˆê•¶Žš‚Ì”ñ”j‰ó‚ÉŽæ‚èo‚· +LPCSTR CFifoEdit::GetCurLine(void) +{ + return pList[m_WriteLine]; +} + +//--------------------------------------------------------------- +// ƒoƒbƒNƒXƒy[ƒXˆ— +int CFifoEdit::BackSpace(void) +{ + if( m_ReadLine > m_WriteLine ) return FALSE; // ‘—o•¶Žš‚È‚µ + if( m_ReadLine == m_WriteLine ){ // “¯ˆês‚ÌŽž + if( m_WriteCol <= m_ReadCol ) return FALSE; // ‘—o•¶Žš‚È‚µ + } + if( m_WriteCol ){ + m_WriteCol--; + } + else { + m_WriteLine--; + if( m_DispTop ){ + m_DispTop--; + } + else { + m_Line--; + } + m_WriteCol = strlen(pList[m_WriteLine]); + if( m_WriteCol >= m_ColMax ) m_WriteCol--; + UpdateScroll(); + } + LPSTR p = pList[m_WriteLine]; + p += m_WriteCol; + *p = 0; + pPaintBox->Invalidate(); + return TRUE; +} + +//--------------------------------------------------------------- +// 1sƒoƒbƒNƒXƒy[ƒXˆ— +int CFifoEdit::LineBackSpace(void) +{ + if( m_ReadLine > m_WriteLine ) return FALSE; // ‘—o•¶Žš‚È‚µ + if( m_ReadLine == m_WriteLine ){ // “¯ˆês‚ÌŽž + if( m_WriteCol <= m_ReadCol ) return FALSE; // ‘—o•¶Žš‚È‚µ + } + + if( m_WriteCol ){ + while(m_WriteCol){ + if( BackSpace() == FALSE ) return FALSE; + } + return TRUE; + } + else { + return BackSpace(); + } +} + +//--------------------------------------------------------------- +// 擪‚Ì‚Ps‚ð–•Á‚·‚é +int CFifoEdit::DeleteTop(void) +{ + if( m_ReadLine ){ // ‘—oÏ‚Ý + int i; + for( i = 0; i < (FIFOLINEMAX - 1); i++ ){ + strcpy(pList[i], pList[i+1]); + } + *pList[i] = 0; + m_ReadLine--; + m_WriteLine--; + if( m_WriteLine <= (m_DispTop + m_Line) ){ + m_DispTop--; + } + else { + pPaintBox->Invalidate(); + } + return TRUE; + } + else { + return FALSE; + } +} + +void CFifoEdit::PutChar(char c) +{ + int show = (m_WriteLine > (m_DispTop + m_Line)) ? 0 : 1; + + if( show && (c == 0x08) ){ // BS‚ÌŽž + if( BackSpace() == TRUE ) return; + c = 'X'; + } + if( m_WriteLine >= FIFOLINEMAX ){ // ƒoƒbƒtƒ@ƒtƒ‹‚ÌŽž + if( DeleteTop() == FALSE ) return; + } + CursorOff(); + if( c != 0x0a ){ // LF‚͈—‚µ‚È‚¢ + if( c == 0x0d ){ + m_WriteLine++; + m_WriteCol = 0; + if( show ){ // •\ަ’†‚ÌŽž + m_Line++; + if( m_Line >= m_LineMax ){ + m_Line--; + Scroll(); + m_DispTop++; + UpdateScroll(); + } + } + } + else { + LPSTR pt = pList[m_WriteLine]; + pt[m_WriteCol] = c; + pt[m_WriteCol + 1] = 0; + if( show ){ + pCanvas->Font->Color = sys.m_ColorIN; + ::SetBkMode(pCanvas->Handle, TRANSPARENT); + DrawChar(pCanvas, m_WriteCol * m_FW, m_Line * m_FH, c); + } + m_WriteCol++; + if( m_WriteCol >= m_ColMax ){ + m_WriteCol = 0; + m_WriteLine++; + if( show ){ // •\ަ’†‚ÌŽž + m_Line++; + if( m_Line >= m_LineMax ){ + m_Line--; + Scroll(); + m_DispTop++; + UpdateScroll(); + } + } + } + } + } + CursorOn(); +} + +void CFifoEdit::PutText(LPCSTR p) +{ + for( ; *p; p++ ){ + if( *p != 0x0a ){ + PutChar(*p); + } + } +} + +///---------------------------------------------------------------- +/// CAlignƒNƒ‰ƒX +void CAlign::InitControl(TControl *p, TControl *pB, TFont *pF /*= NULL*/) +{ + tp = p; + OTop = p->Top; + OLeft = p->Left; + OWidth = p->Width; + OHeight = p->Height; + if( pF != NULL ){ + fp = pF; + OFontHeight = pF->Height; + } + + BTop = pB->Top; + BLeft = pB->Left; + BWidth = pB->ClientWidth; + BHeight = pB->ClientHeight; +} + +void CAlign::InitControl(TControl *p, RECT *rp, TFont *pF /*= NULL*/) +{ + tp = p; + OTop = p->Top; + OLeft = p->Left; + OWidth = p->Width; + OHeight = p->Height; + if( pF != NULL ){ + fp = pF; + OFontHeight = pF->Height; + } + + BTop = rp->top; + BLeft = rp->left; + BWidth = rp->right - rp->left + 1; + BHeight = rp->bottom - rp->top + 1; +} + +void CAlign::NewAlign(TControl *pB) +{ + double Sx = double(pB->ClientWidth)/double(BWidth); + double Sy = double(pB->ClientHeight)/double(BHeight); + tp->SetBounds(int(OLeft * Sx), int(OTop * Sy), int(OWidth * Sx), int(OHeight * Sy)); + if( fp != NULL ){ + if( Sx > Sy ) Sx = Sy; + fp->Height = int(OFontHeight * Sx) - sys.m_FontAdjSize; + m_FontAdj = Sx; + if( tp->ClassNameIs("TComboBox") ){ + ((TComboBox *)tp)->SelLength = 0; + } + } +} + +void CAlign::NewAlign(TControl *pB, double hx) +{ + double Sx = double(pB->ClientWidth)/double(BWidth); + double Sy = double(pB->ClientHeight)/double(BHeight); + Sy *= hx; + tp->SetBounds(int(OLeft * Sx), int(OTop * Sy), int(OWidth * Sx), int(OHeight * Sy)); + if( fp != NULL ){ + if( Sx > Sy ) Sx = Sy; + fp->Height = int(OFontHeight * Sx) - sys.m_FontAdjSize; + m_FontAdj = Sx; + if( tp->ClassNameIs("TComboBox") ){ + ((TComboBox *)tp)->SelLength = 0; + } + } +} + +void CAlign::NewFont(AnsiString &FontName, BYTE Charset, TFontStyles fs) +{ + if( fp != NULL ){ + fp->Name = FontName; + fp->Charset = Charset; + fp->Style = fs; + if( tp->ClassNameIs("TComboBox") ){ + ((TComboBox *)tp)->SelLength = 0; + } + } +} +///---------------------------------------------------------------- +/// CAlignListƒNƒ‰ƒX +CAlignList::CAlignList(void) +{ + Max = 0; + Cnt = 0; + AlignList = NULL; +} + +CAlignList::~CAlignList(){ + if( AlignList != NULL ){ + for( int i = 0; i < Cnt; i++ ){ + delete AlignList[i]; + } + delete[] AlignList; + AlignList = NULL; + } +} + +void CAlignList::Alloc(void) +{ + if( Cnt >= Max ){ + Max = Max ? Max * 2 : 16; + CAlign **np = (CAlign **)new BYTE[sizeof(CAlign*) * Max]; + if( AlignList != NULL ){ + for( int i = 0; i < Cnt; i++ ){ + np[i] = AlignList[i]; + } + delete[] AlignList; + } + AlignList = np; + } + AlignList[Cnt] = new CAlign; +} +void CAlignList::EntryControl(TControl *tp, TControl *pB, TFont *pF /*= NULL*/) +{ + Alloc(); + AlignList[Cnt]->InitControl(tp, pB, pF); + Cnt++; +} + +void CAlignList::EntryControl(TControl *tp, RECT *rp, TFont *pF /*= NULL*/){ + Alloc(); + AlignList[Cnt]->InitControl(tp, rp, pF); + Cnt++; +} + +void CAlignList::NewAlign(TControl *pB) +{ + if( AlignList == NULL ) return; + for( int i = 0; i < Cnt; i++ ){ + AlignList[i]->NewAlign(pB); + } +} + +double CAlignList::GetFontAdj(TControl *pB) +{ + for( int i = 0; i < Cnt; i++ ){ + if( AlignList[i]->GetControl() == pB ){ + return AlignList[i]->GetFontAdj(); + } + } + return 1.0; +} + +void CAlignList::NewAlign(TControl *pB, TControl *pS, double hx) +{ + for( int i = 0; i < Cnt; i++ ){ + if( AlignList[i]->GetControl() == pS ){ + AlignList[i]->NewAlign(pB, hx); + break; + } + } +} +void CAlignList::NewFont(AnsiString &FontName, BYTE Charset, TFontStyles fs) +{ + if( AlignList == NULL ) return; + for( int i = 0; i < Cnt; i++ ){ + AlignList[i]->NewFont(FontName, Charset, fs); + } +} + +///---------------------------------------------------------------- +/// CAlignGridƒNƒ‰ƒX +void CAlignGrid::InitGrid(TStringGrid *p) +{ + BWidth = p->Width; + BHeight = p->Height; + BRowHeight = p->DefaultRowHeight; + Max = p->ColCount; + bp = new int[Max]; + for( int i = 0; i < Max; i++ ){ + bp[i] = p->ColWidths[i]; + } +} + +void CAlignGrid::NewAlign(TStringGrid *p) +{ + double Sx = double(p->Width)/double(BWidth); + double Sy = double(p->Height)/double(BHeight); + p->DefaultRowHeight = int(BRowHeight * Sy); + for( int i = 0; (i < Max) && (i < p->ColCount); i++ ){ + p->ColWidths[i] = int(bp[i] * Sx); + } +} + + +///------------------------------------------------------ +/// +///CWebRef ƒNƒ‰ƒX +/// +void MakeCommand(LPSTR t, LPCSTR s, LPCSTR p) +{ + for( ;*s; s++ ){ + if( *s == '%' ){ + s++; + if( *s == '%' ){ + *t++ = '%'; + } + else if( (p != NULL) && (*s == '1') ){ + strcpy(t, p); + t += strlen(t); + p = NULL; + } + } + else { + *t++ = *s; + } + } + *t = 0; + if( p != NULL ){ + *t++ = ' '; + strcpy(t, p); + } +} + +CWebRef::CWebRef() +{ + HTML = ""; + + HKEY hkey=NULL; /* ƒI[ƒvƒ“ ƒL[‚̃nƒ“ƒhƒ‹ */ + + char bf[512], name[512]; + ULONG namelen, len; + if( !RegOpenKeyEx(HKEY_CLASSES_ROOT, "http", 0, KEY_READ, &hkey) ){ + if( !RegOpenKeyEx(hkey, "shell", 0, KEY_READ, &hkey) ){ + if( !RegOpenKeyEx(hkey, "open", 0, KEY_READ, &hkey) ){ + if( !RegOpenKeyEx(hkey, "command", 0, KEY_READ, &hkey) ){ + namelen = sizeof(name); + len = sizeof(bf); + if( !::RegEnumValue(hkey, 0, name, &namelen, NULL, + NULL, (LPBYTE)bf, &len) ){ + HTML = bf; + } + } + } + } + } + ::RegCloseKey(hkey); +} + +void CWebRef::ShowHTML(LPCSTR url) +{ + char cmd[1024]; + MakeCommand(cmd, HTML.c_str(), url); + ::WinExec(cmd, SW_SHOWDEFAULT); +} + + +///------------------------------------------------------ +/// +///CWaitCursor ƒNƒ‰ƒX +/// +CWaitCursor::CWaitCursor() +{ + sv = Screen->Cursor; + Screen->Cursor = crHourGlass; +} + +CWaitCursor::~CWaitCursor() +{ + Screen->Cursor = sv; +} + +void CWaitCursor::Delete(void) +{ + Screen->Cursor = sv; +} + +void CWaitCursor::Wait(void) +{ + Screen->Cursor = crHourGlass; +} + +///------------------------------------------------------- +/// CRecentMenuƒNƒ‰ƒX + +CRecentMenu::CRecentMenu() +{ + InsPos = 0; + Max = RECMENUMAX; + int i; + for( i = 0; i < RECMENUMAX; i++ ){ + Caption[i] = ""; + Items[i] = NULL; + } + Items[i] = NULL; +} +void CRecentMenu::Init(int pos, TMenuItem *pmenu, int max) +{ + InsPos = pos; + pMenu = pmenu; + Max = max; +} +void CRecentMenu::Init(TMenuItem *pi, TMenuItem *pmenu, int max) +{ + Init(pmenu->IndexOf(pi), pmenu, max); +} +int CRecentMenu::GetCount(void) +{ + int i, n; + for( i = n = 0; i < RECMENUMAX; i++, n++ ){ + if( Caption[i].IsEmpty() ) break; + } + return n; +} +LPCSTR CRecentMenu::GetItemText(int n) +{ + if( (n >= 0) && (n < RECMENUMAX) ){ + return Caption[n].c_str(); + } + else { + return NULL; + } +} +void CRecentMenu::SetItemText(int n, LPCSTR p) +{ + if( (n >= 0) && (n < RECMENUMAX) ){ + Caption[n] = p; + } +} +int CRecentMenu::IsAdd(LPCSTR pNew) +{ + return strcmp(Caption[0].c_str(), pNew); +} +void CRecentMenu::Add(LPCSTR pNew) +{ + if( !IsAdd(pNew) ) return; + int i; + for( i = 1; i < RECMENUMAX; i++ ){ + if( !strcmp(pNew, Caption[i].c_str()) ){ + for( ; i < (RECMENUMAX - 1); i++ ){ + Caption[i] = Caption[i+1]; + } + Caption[i] = ""; + break; + } + } + for( i = RECMENUMAX - 1; i > 0; i-- ){ + Caption[i] = Caption[i-1]; + } + Caption[0] = pNew; +} +void CRecentMenu::Delete(LPCSTR pName) +{ + int i; + for( i = 0; i < RECMENUMAX; i++ ){ + if( !strcmp(pName, Caption[i].c_str()) ){ + for( ; i < (RECMENUMAX - 1); i++ ){ + Caption[i] = Caption[i+1]; + } + Caption[i] = ""; + break; + } + } +} +void CRecentMenu::ExtFilter(LPCSTR pExt) +{ + int i, j; + + for( i = 0; i < RECMENUMAX; i++ ){ + if( (!Caption[i].IsEmpty()) && strcmpi(GetEXT(Caption[i].c_str()), pExt) ){ + for( j = i; j < (RECMENUMAX - 1); j++ ){ + Caption[j] = Caption[j+1]; + } + Caption[j] = ""; + i--; + } + } +} +void CRecentMenu::Clear(void) +{ + Delete(); + for( int i = 0; i < RECMENUMAX; i++ ){ + Caption[i] = ""; + } +} +void CRecentMenu::Insert(TObject *op, Classes::TNotifyEvent pEvent) +{ + int n = GetCount(); + int i; + int pos = InsPos; + if( n > Max ) n = Max; + char bf[256]; + for( i = 0; i < n; i++, pos++ ){ + Items[i] = new TMenuItem((TComponent *)op); + sprintf(bf, "&%d %s", (i + 1) % 10, Caption[i].c_str()); + Items[i]->Caption = bf; + Items[i]->OnClick = pEvent; + pMenu->Insert(pos, Items[i]); + } + if( n ){ + Items[i] = new TMenuItem((TComponent *)op); + Items[i]->Caption = "-"; + Items[i]->OnClick = NULL; + pMenu->Insert(pos, Items[n]); + } +} +void CRecentMenu::Delete(void) +{ + for( int i = 0; i < RECMENUMAX+1; i++ ){ + if( Items[i] != NULL ){ + pMenu->Delete(InsPos); + Items[i] = NULL; + } + } +} +int CRecentMenu::FindItem(TMenuItem *mp) +{ + for( int i = 0; i < RECMENUMAX; i++ ){ + if( Items[i] == mp ){ + return i; + } + } + return -1; +} +LPCSTR CRecentMenu::FindItemText(TMenuItem *mp) +{ + return GetItemText(FindItem(mp)); +} + +void KeyEvent(const short *p) +{ + for( ; *p; p++ ){ + keybd_event(BYTE(*p), 0, *p&0x8000 ? KEYEVENTF_KEYUP : 0, 0); + } +} + diff --git a/ComLib.h b/ComLib.h new file mode 100644 index 0000000..22deafc --- /dev/null +++ b/ComLib.h @@ -0,0 +1,752 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef ComLibH +#define ComLibH +/* JA7UDE 0427 */ +#include +#include +#include //JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include + +#define VERID "Ver1.68" //AA6YQ 1.65D->1.66G, JE3HHT 1.67 +#define VERBETA "A" +#define VERTTL2 "MMTTY "VERID VERBETA +#define VERTTL VERTTL2" (C) JE3HHT 2000-2010." + +#define SETUPTITLE "Setup MMTTY "VERID VERBETA //AA6YQ 1.66C +#define SETUPTITLEREMOTE "Setup "VERID VERBETA //AA6YQ 1.66C + +#define SHIFTL 10 +#define MARKL 300 +#define SPACEH 2700 +#define XYCOLLECT 512 // XY-Scope ‚̃f[ƒ^ŽûWƒTƒCƒY + +#define REMMENU 1 +#define REMCTRL 2 +#define REMSHOWOFF 4 +#define REMNOMOVE 8 +#define REMNOPTT 16 +#define REMNOCNV 32 +#define REMVIATX 64 +#define REMDISFOCUS 128 +#define REMDISSHARED 256 +#define REMDISSTAYONTOP 512 + +#define FSBOLD 1 +#define FSITALIC 2 + +enum { + txSound, + txTXD, + txTXDOnly, +}; + +extern int WinNT; +extern int WinVista; //AA6YQ 1.66G + +extern int FSKCount; +extern int FSKCount1; +extern int FSKCount2; +extern int FSKDeff; + +extern LCID lcid; // ƒƒP[ƒ‹î•ñ +extern int DisPaint; +extern int Remote; + +extern double SampFreq; // ƒTƒ“ƒvƒŠƒ“ƒOŽü”g” +extern double SampBase; +extern double DemSamp; +extern int SampType; +extern int DemOver; +extern int FFT_SIZE; +extern int SampSize; + +extern char BgnDir[256]; +extern char LogDir[256]; +extern char OutFileDir[256]; +extern char MMLogDir[256]; +extern char ExtLogDir[256]; +extern char RecDir[256]; // ˜^‰¹ƒtƒ@ƒCƒ‹‚̃fƒBƒŒƒNƒgƒŠ + +extern AnsiString JanHelp; + +extern const char MONN[]; +extern const char MONU[]; + +#ifndef LPCUSTR +typedef const unsigned char * LPCUSTR; +typedef unsigned char * LPUSTR; +#endif + +extern DWORD ColorTable[128]; + +#define ABS(c) (((c)<0)?(-(c)):(c)) +#define AN(p) (sizeof(p)/sizeof(*(p))) +#define CR 0x0d +#define LF 0x0a +#define TAB '\t' + +typedef struct { + WORD Key; + LPCSTR pName; +}DEFKEYTBL; +extern const DEFKEYTBL KEYTBL[]; + +enum { + kkRcvLog, + kkFileOut, + kkSaveRx, + + kkOpenLog, + kkFlush, + + kkRecTime, + kkRec, + kkPlay, + kkPlayPos, // Ctrl+A + kkPlayStop, + kkScope, + kkLogList, + kkQSOData, + kkOption, + kkLogOption, + kkPanel, + kkExtCmd1, + kkExtCmd2, + kkExtCmd3, + kkExtCmd4, + kkExtReset, + kkExtSusp, + + kkFIG, + kkUOS, + kkTX, // F9 + kkTXOFF, // F8 + kkQSO, + kkCall, // Ctrl+C + kkName, // Ctrl+N + kkQTH, // Ctrl+Q + kkRST, // Ctrl+R + kkFind, // Ctrl+F + kkClear, // F1 + + kkInUp, + kkInDown, + kkInPUp, + kkInPDown, + kkInHome, + kkInEnd, + kkRxUp, + kkRxDown, + kkRxPUp, + kkRxPDown, + kkRxHome, + kkRxEnd, + + kkCharWaitLeft, + kkCharWaitRight, + kkDiddleWaitLeft, + kkDiddleWaitRight, + + kkInHeightUp, + kkInHeightDown, + + kkMyRST, + kkInitBox, + + kkTxLTR, + kkTxFIG, + + kkDecShift, + kkIncShift, + kkToggleShift, + kkClrRxWindow, + kkFreq, + kkRun, + kkPaste, + kkTNC, + kkMac, + kkEntTX, + kkWordWrap, + kkOnQSO, + kkOffQSO, + kkCAPTURE, + + kkPro1, + kkPro2, + kkPro3, + kkPro4, + kkPro5, + kkPro6, + kkPro7, + kkPro8, + kkProDef, + kkProRet, + + kkCList, + kkEOF, +}; +#define MSGLISTMAX 64 +typedef struct { + WORD m_SysKey[kkEOF]; + + int m_SoundPriority; + int m_SoundDevice; + int m_SoundOutDevice; //AA6YQ 1.66 + int m_SoundStereo; + int m_SoundFifoRX; + int m_SoundFifoTX; + AnsiString m_SoundMMW; + + AnsiString m_Call; + AnsiString m_User[16]; + AnsiString m_UserName[16]; + WORD m_UserKey[16]; + WORD m_UserEditKey[16]; + TColor m_UserCol[16]; + int m_UserTimer[16]; + int m_SBFontSize; + int m_SBINFontSize; + + AnsiString m_FontName; + int m_FontAdjX; + int m_FontAdjY; + int m_FontSize; + int m_FontCharset; + int m_FontZero; + int m_FontStyle; + + int m_FontAdjSize; + int m_BtnFontAdjSize; + + int m_WindowState; + + AnsiString m_MsgName[MSGLISTMAX]; + AnsiString m_MsgList[MSGLISTMAX]; + WORD m_MsgKey[MSGLISTMAX]; + + AnsiString m_InBtn[4]; + AnsiString m_InBtnName[4]; + WORD m_InBtnKey[4]; + TColor m_InBtnCol[4]; + int m_MacroImm; + + AnsiString m_ExtCmd[4]; + + AnsiString m_TxRxName; + int m_TxRxInv; + int m_txuos; + int m_dblsft; + + int m_lmsbpf; + + double m_DefMarkFreq; + double m_DefShift; + int m_DefStopLen; // 0-1Bit, 1-1.42 + + int m_echo; + + int m_AFC; + int m_FixShift; + int m_AFCSQ; + double m_AFCTime; + double m_AFCSweep; + int m_AFCNet; + + int m_TxNet; + int m_Rev; + int m_TxDisRev; + + double m_LimitGain; + + int m_log; + int m_logTimeStamp; + int m_ShowTimeStamp; + int m_TimeStampUTC; + int m_AutoTimeOffset; + int m_TimeOffset; + int m_TimeOffsetMin; + int m_LogLink; + + AnsiString m_LogName; + + int m_TxPort; // 0-Sound, 1-DTR, 2-TXD + int m_TxdStop; + int m_TxdJob; + int m_TxFixShift; + int m_CodeSet; + int m_DisTX; + + int m_Palette; + DWORD d_PaletteMask; + + int m_XYInv; + + TColor m_ColorRXBack; + TColor m_ColorRX; + TColor m_ColorRXTX; + TColor m_ColorINBack; + TColor m_ColorIN; + TColor m_ColorINTX; + + TColor m_ColorLow; + TColor m_ColorHigh; + + TColor m_ColorXY; + + AnsiString m_WinFontName; + BYTE m_WinFontCharset; + int m_WinFontStyle; + AnsiString m_BtnFontName; + BYTE m_BtnFontCharset; + int m_BtnFontStyle; + + int m_FFTGain; + int m_FFTResp; + double m_SampFreq; + double m_TxOffset; + + AnsiString m_HTMLHelp; + AnsiString m_Help; + AnsiString m_HelpLog; + AnsiString m_HelpDigital; + AnsiString m_HelpFontName; + BYTE m_HelpFontCharset; + int m_HelpFontSize; + int m_HelpNotePad; + + int m_CharLenFile; + int m_DisWindow; + int m_StayOnTop; + int m_MemWindow; + + int m_LWait; + AnsiString m_LogGridWidths; + AnsiString m_QSOGridWidths; + + int m_DefFix45; +}SYSSET; + +extern SYSSET sys; + +#define TEXTLINEMAX 512 +class CPrintText +{ +private: + TPaintBox *pPaintBox; + TScrollBar *pScroll; + TCanvas *pCanvas; + Graphics::TBitmap *pBitmap; + + LPSTR pList[TEXTLINEMAX]; + LPSTR pColList[TEXTLINEMAX]; + + int m_jisfont; + + int m_Top; + int m_Line; + int m_WriteLine; + int m_Col; + int m_Count; + + int m_FH; + int m_FW; + int m_LineMax; + int m_ColMax; + + int m_Scroll; + + TRect m_DestRC; + TRect m_SourceRC; + TRect m_FillRC; + + int m_Cursor; + int m_DisEvent; + + int m_TX; + + int m_TimeStampTrig; + SYSTEMTIME m_TrigTime; + AnsiString m_TrigName; + + FILE *m_fp; + + void Scroll(void); + void DrawCursor(int sw); + void CursorOff(void); + void CursorOn(); + void WriteTimeStamp(void); + +public: + CPrintText(); + ~CPrintText(); + + inline void SetTX(int sw){ + m_TX = sw; + }; + inline void SetBitmap(Graphics::TBitmap *p){ + pBitmap = p; + }; + inline int GetPos(int n){ + n += m_Top; + if( n >= TEXTLINEMAX ) n -= TEXTLINEMAX; + return n; + }; + inline int GetNext(int n){ + n++; + if( n >= TEXTLINEMAX ) n = 0; + return n; + }; + inline int GetBefore(int n){ + n--; + if( n < 0 ) n = TEXTLINEMAX - 1; + return n; + }; + inline int AdjustPos(int n){ + while( n < 0 ) n+= TEXTLINEMAX; + while( n >= TEXTLINEMAX ) n -= TEXTLINEMAX; + return n; + }; + void Clear(); + + void IncCount(void); + void SetPaintBox(TPaintBox *tp, TScrollBar *sp); + void AdjZero(void); + + void PutChar(char c); + void GetString(AnsiString &as); + void PaintCanvas(void); + void SetCursor(sw); + void GetText(LPSTR t, int x, int y, int sw); + int GetText(LPSTR t, int y); + void ShiftText(int x, int y); + + void ScrollBarChange(void); + void ScrollBarUp(int page); + void ScrollBarDown(int page); + void WriteFile(char c); + void WriteFile(LPCSTR p); + void MakeLogName(void); + void OpenLogFile(void); + void CloseLogFile(void); + void TrigTimeStamp(LPCSTR pName, int sw = 0); + void TrigTimeStampImm(LPCSTR pName); +}; + +#define FIFOLINEMAX 128 +class CFifoEdit +{ + TPaintBox *pPaintBox; + TScrollBar *pScroll; + TCanvas *pCanvas; + Graphics::TBitmap *pBitmap; + + LPSTR pList[FIFOLINEMAX]; + + int m_Line; // ‰æ–Ê“à‚ÌsˆÊ’u + + int m_DispTop; // •\ަƒgƒbƒvs‚̈ʒu + int m_DispLast; // •\ަÅIs‚̈ʒu + + int m_WriteLine; // ‘‚«‚±‚Ýs‚̈ʒu + + int m_ReadLine; // Žæ‚肾‚µs‚̈ʒu + int m_ReadCol; // Žæ‚肾‚µƒJƒ‰ƒ€ˆÊ’u + + int m_FH; + int m_FW; + int m_LineMax; + + TRect m_DestRC; + TRect m_SourceRC; + TRect m_FillRC; + + int m_Cursor; + int m_DisEvent; +public: + int m_ColMax; + int m_WriteCol; // ‘‚«‚±‚݃Jƒ‰ƒ€ˆÊ’u +private: + void Scroll(void); + void DrawCursor(int sw); + void CursorOff(void); + void CursorOn(); + int DeleteTop(void); + void UpdateScroll(void); + int BackSpace(void); + +public: + CFifoEdit(); + ~CFifoEdit(); + + inline void SetBitmap(Graphics::TBitmap *p){ + pBitmap = p; + }; + void Clear(void); + void GetString(AnsiString &as); + + int GetLen(void); + char GetChar(void); + LPCSTR GetCurLine(void); + char GetLastChar(void); + + + void SetPaintBox(TPaintBox *tp, TScrollBar *sp); + void PutChar(char c); + void PutText(LPCSTR p); + void PaintCanvas(void); + void SetCursor(sw); + void ScrollBarChange(void); + void ScrollBarUp(int page); + void ScrollBarDown(int page); + int LineBackSpace(void); + int IsSAS(int sw); +}; + +///--------------------------------------------------------- +/// ƒRƒ“ƒgƒ[ƒ‹‚̃Aƒ‰ƒCƒ“‚ÌŠÇ—ƒNƒ‰ƒX +class CAlign +{ +public: + int BTop, BLeft; + int BWidth, BHeight; + int OTop, OLeft; + int OWidth, OHeight; + int OFontHeight; + double m_FontAdj; + + TControl *tp; + TFont *fp; +public: + inline CAlign(void){ + tp = NULL; + fp = NULL; + m_FontAdj = 1.0; + }; + inline ~CAlign(){ + }; + void InitControl(TControl *p, TControl *pB, TFont *pF = NULL); + void InitControl(TControl *p, RECT *rp, TFont *pF = NULL); + void NewAlign(TControl *pB); + inline double GetFontAdj(void){return fabs(m_FontAdj);}; + inline TControl *GetControl(void){return tp;}; + void NewAlign(TControl *pB, double hx); + void NewFont(AnsiString &FontName, BYTE Charset, TFontStyles fs); +}; + +///--------------------------------------------------------- +/// ƒRƒ“ƒgƒ[ƒ‹‚̃Aƒ‰ƒCƒ“‚ÌŠÇ—ƒNƒ‰ƒX +class CAlignList +{ +private: + int Max; + int Cnt; + CAlign **AlignList; + void Alloc(void); +public: + CAlignList(void); + ~CAlignList(); + void EntryControl(TControl *tp, TControl *pB, TFont *pF = NULL); + void EntryControl(TControl *tp, RECT *rp, TFont *pF = NULL); + void NewAlign(TControl *pB); + double GetFontAdj(TControl *pB); + void NewAlign(TControl *pB, TControl *pS, double hx); + void NewFont(AnsiString &FontName, BYTE Charset, TFontStyles fs); +}; + +class CAlignGrid +{ +private: + int BWidth; + int BHeight; + int BRowHeight; + + int Max; + int *bp; +public: + inline CAlignGrid(void){ + Max = 0; + bp = NULL; + }; + inline ~CAlignGrid(){ + if( bp != NULL ){ + delete bp; + } + }; + void InitGrid(TStringGrid *p); + void NewAlign(TStringGrid *p); +}; + +class CWebRef +{ +private: + AnsiString HTML; +public: + CWebRef(); + inline bool IsHTML(void){ + return !HTML.IsEmpty(); + }; + void ShowHTML(LPCSTR url); +}; + +class CWaitCursor +{ +private: + TCursor sv; +public: + CWaitCursor(); + ~CWaitCursor(); + void Delete(void); + void Wait(void); +}; + +///------------------------------------------------------- +/// CRecentMenuƒNƒ‰ƒX +#define RECMENUMAX 4 // ˆ—‚Å‚«‚éÅ‘å‚Ì” +class CRecentMenu +{ +private: +public: + int InsPos; // ƒƒjƒ…[‘}“üˆÊ’u‚̔Ԇ + int Max; // ˆ—‚·‚é” + AnsiString Caption[RECMENUMAX]; + TMenuItem *pMenu; + TMenuItem *Items[RECMENUMAX+1]; + +public: + CRecentMenu(); + void Init(int pos, TMenuItem *pmenu, int max); + void Init(TMenuItem *pi, TMenuItem *pmenu, int max); + int GetCount(void); + LPCSTR GetItemText(int n); + void SetItemText(int n, LPCSTR p); + int IsAdd(LPCSTR pNew); + void Add(LPCSTR pNew); + void ExtFilter(LPCSTR pExt); + void Clear(void); + void Insert(TObject *op, Classes::TNotifyEvent pEvent); + void Delete(void); + void Delete(LPCSTR pName); + int FindItem(TMenuItem *mp); + LPCSTR FindItemText(TMenuItem *mp); +}; + +void __fastcall ShowHtmlHelp(LPCSTR pContext = NULL); +//void ShowHelp(int index); +void InitSampType(void); +LPCSTR __fastcall ConvAndChar(LPSTR t, LPCSTR p); + +void GetUTC(SYSTEMTIME *tp); +void GetLocal(SYSTEMTIME *tp); +LPSTR StrDupe(LPCSTR s); + +void InitColorTable(TColor cl, TColor ch); +LPCSTR GetKeyName(WORD Key); +WORD GetKeyCode(LPCSTR pName); +LPCSTR ToDXKey(LPCSTR s); +LPCSTR ToJAKey(LPCSTR s); + +int SetTBValue(double d, double dmax, int imax); +double GetTBValue(int d, double dmax, int imax); +LPUSTR jstrupr(LPUSTR s); +inline LPSTR jstrupr(LPSTR s){return (LPSTR)jstrupr(LPUSTR(s));}; + +int IsFile(LPCSTR pName); +int SetTimeOffsetInfo(int &Hour, int &Min); +WORD AdjustRolTimeUTC(WORD tim, char c); +void __fastcall SetGroupEnabled(TGroupBox *gp); +void SetButtonCaption(TSpeedButton *tb, AnsiString &as, int maxlen, int fontsize, TColor col); +void FormCenter(TForm *tp, int XW, int YW); +char *lastp(char *p); +char *clipsp(char *s); +LPCSTR _strdmcpy(LPSTR t, LPCSTR p, char c); +const char *StrDlmCpy(char *t, const char *p, char Dlm, int len); +const char *StrDlmCpyK(char *t, const char *p, char Dlm, int len); +void StrCopy(LPSTR t, LPCSTR s, int n); +char LastC(LPCSTR p); +LPCSTR GetEXT(LPCSTR Fname); +void SetEXT(LPSTR pName, LPSTR pExt); +void SetCurDir(LPSTR t, int size); +void SetDirName(LPSTR t, LPCSTR pName); +LPCSTR StrDbl(double d); +LPCSTR StrDblE(double d); +double ReadDoubleIniFile(TMemIniFile *p, LPCSTR c1, LPCSTR c2, double d); +void WriteDoubleIniFile(TMemIniFile *p, LPCSTR c1, LPCSTR c2, double d); +void ClipLF(LPSTR sp); +LPSTR FillSpace(LPSTR s, int n); +LPSTR SkipSpace(LPSTR sp); +LPCSTR SkipSpace(LPCSTR sp); +LPSTR StrDlm(LPSTR &t, LPSTR p); +LPSTR StrDlm(LPSTR &t, LPSTR p, char c); +void ChgString(LPSTR t, char a, char b); +void DelChar(LPSTR t, char a); +int atoin(const char *p, int n); +int htoin(const char *p, int n); +void InfoMB(LPCSTR fmt, ...); +void ErrorMB(LPCSTR fmt, ...); +void WarningMB(LPCSTR fmt, ...); +int YesNoMB(LPCSTR fmt, ...); +int YesNoCancelMB(LPCSTR fmt, ...); +int OkCancelMB(LPCSTR fmt, ...); + +int RemoveL2(LPSTR t, LPSTR ss, LPCSTR pKey, int size); +void AddL2(LPSTR t, LPCSTR pKey, LPCSTR s, UCHAR c1, UCHAR c2, int size); + +void Yen2CrLf(AnsiString &ws, AnsiString cs); +void CrLf2Yen(AnsiString &ws, AnsiString cs); + +void EntryMsg(AnsiString ttl, AnsiString as, WORD Key); //JA7UDE 0428 +void SetComboBox(TComboBox *pCombo, LPCSTR pList); +void GetComboBox(AnsiString &as, TComboBox *pCombo); +void SetGridWidths(TStringGrid *pGrid, LPCSTR pList); +void GetGridWidths(AnsiString &as, TStringGrid *pGrid); + +int IsNumbs(LPCSTR p); +int IsAlphas(LPCSTR p); +int IsRST(LPCSTR p); +int IsCallChar(char c); +int IsCall(LPCSTR p); +int IsName(LPCSTR p); +int IsJA(const char *s); +LPCSTR ClipCall(LPCSTR s); +LPCSTR ClipCC(LPCSTR s); + +/* JA7UDE 0427 +inline LPUSTR StrDlm(LPUSTR &t, LPUSTR p, char c){return (LPUSTR)StrDlm(LPSTR(t), LPSTR(p), c);}; +inline LPUSTR StrDlm(LPUSTR &t, LPUSTR p){return (LPUSTR)StrDlm(LPSTR(t), LPSTR(p));}; +inline LPUSTR StrDlm(LPUSTR &t, LPSTR p, char c){return (LPUSTR)StrDlm(LPSTR(t), p, c);}; +inline LPUSTR StrDlm(LPUSTR &t, LPSTR p){return (LPUSTR)StrDlm(LPSTR(t), p);}; +*/ + +void TopWindow(TForm *tp); +void NormalWindow(TForm *tp); + +int FontStyle2Code(TFontStyles style); +TFontStyles Code2FontStyle(int code); + +void KeyEvent(const short *p); +#endif + diff --git a/Comm.cpp b/Comm.cpp new file mode 100644 index 0000000..4d14584 --- /dev/null +++ b/Comm.cpp @@ -0,0 +1,632 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Comm.h" +#include "ComLib.h" + +#define WAITSTAT 0 + +#define DEFFSOUND 3 + +COMMPARA COMM; +void InitCOMMPara(void) +{ + COMM.change = 1; +} + +__fastcall CComm::CComm(bool CreateSuspended) + : TThread(CreateSuspended) +{ + m_CreateON = FALSE; // ƒNƒŠƒGƒCƒgƒtƒ‰ƒO + m_Command = 0; + m_fHnd = NULL; // ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹ + m_inv = 0; + m_Execute = 0; + m_txwp = m_txrp = m_txcnt = 0; + m_TxEnb = 0; + + m_figout = 0; + m_idle = 0; + m_WaitTimerCount = 0; + m_nextcount = 0; + + pMod = NULL; + m_pEXT = NULL; +} + +void __fastcall CComm::WaitTXD(int w) +{ + if( w ){ +#if 0 + ULONG tim = ::GetTickCount(); + ULONG w = ((pMod->m_ReCount*(pMod->m_BitLen + 1.5) ) + (w * pMod->m_ReCount/3)) * 1000 / SampFreq; + tim += w; + if( w > 10 )::Sleep(w - 10); + while(tim >= ::GetTickCount()) ::Sleep(0); +#else + ::Sleep(((pMod->m_ReCount*(pMod->m_BitLen + 1.5) ) + (w * pMod->m_ReCount/3)) * 1000 / SampFreq); +#endif + } +} + +void __fastcall CComm::NextBuf(void) +{ + m_txrp++; + if( m_txrp >= COMM_TXBUFSIZE ){ + m_txrp = 0; + } + m_txcnt--; + FSKCount1++; + FSKCount--; +} + +void __fastcall CComm::EnbTX(int sw) +{ + m_TxEnb = 0; + if( !sw ){ + FSKCount1 = 1000; + FSKCount2 = 0; + } + else { + m_WaitTimerCount = 4; + m_FirstGaurd = TRUE; + FSKCount1 = 0; + FSKCount2 = 0; + FSKDeff = 0; + } + m_txwp = m_txrp = m_txcnt = 0; + FSKCount = 0; + m_figout = 0; + m_idle = 0; + m_TxEnb = sw; +} + +void __fastcall CComm::Timer(void) +{ + if( m_CreateON ){ + if( sys.m_TxPort ){ + if( m_fHnd == NULL ) return; + if( !m_TxEnb ) return; + if( m_DisDiddle != pMod->m_DisDiddle ){ + m_DisDiddle = pMod->m_DisDiddle; + } + } + } +} +//----------------------------------------------------------------- +// DTR‚Å•„†‘—M—p +void __fastcall CComm::OutData(BYTE d) +{ + const BYTE tbl[]={ + 0x00, 0x10, 0x08, 0x18, // 00000 10000 01000 11000 + 0x04, 0x14, 0x0c, 0x1c, // 00100 10100 01100 11100 + 0x02, 0x12, 0x0a, 0x1a, // 00010 10010 01010 11010 + 0x06, 0x16, 0x0e, 0x1e, // 00110 10110 01110 11110 + 0x01, 0x11, 0x09, 0x19, // 00001 10001 01001 11001 + 0x05, 0x15, 0x0d, 0x1d, // 00101 10101 01101 11101 + 0x03, 0x13, 0x0b, 0x1b, // 00011 10011 01011 11011 + 0x07, 0x17, 0x0f, 0x1f, // 00111 10111 01111 11111 + }; + if( m_CreateON == FALSE ) return; + + if( pMod->m_BitLen <= 6 ){ + d = tbl[d & 0x001f]; + } + + if( sys.m_TxdJob >= 2 ){ + if( m_nextcount ){ + while( m_nextcount >= ::GetTickCount() ){ + if( m_Command == COMM_CLOSE ) return; + ::Sleep(1); + } + } + m_nextcount = ::GetTickCount() + m_addcount; + } + if( m_pEXT != NULL ){ + m_pEXT->PutChar(d); + } + else { + TransmitCommChar(m_fHnd, d); + } +#if BITDEBUG + m_bitCountA = GetTickCount() - m_bitCount; + m_bitCount = GetTickCount(); +#endif +} +//--------------------------------------------------------------------------- +void __fastcall CComm::Execute() +{ + m_Execute = 1; + int BitLen = pMod->m_BitLen; + //---- ƒXƒŒƒbƒh‚̃R[ƒh‚ð‚±‚±‚É‹Lq ---- +// Priority = tpLower; + while(1){ +_try:; + if( Terminated == TRUE ){ + return; + } + if( m_Command == COMM_CLOSE ){ + m_Command = 0; + return; + } + if( m_CreateON == TRUE ){ + if( !m_TxEnb ){ + ::Sleep(10); + } + else if( !TxBusy() ){ + if( m_FirstGaurd ){ // ʼn‚̃K[ƒhŽžŠÔ‚ÌŠm•Û + m_FirstGaurd = 0; + ::Sleep(250); + if( m_DisDiddle == -1 ) m_DisDiddle = 0; + } + else if( m_txcnt && (FSKDeff <= DEFFSOUND) ){ // ‘—Mƒf[ƒ^‚ ‚è + m_DisDiddle = pMod->m_DisDiddle; + m_Data = m_txbuf[m_txrp]; + if( m_figout && (m_fig == 0x1b) && (m_Data != 0x1f) ){ + m_Data = 0x1b; + } + else { + switch(m_Data){ + case 0xff: // Mark + ::Sleep((pMod->m_ReCount * 3 * 1000) / SampFreq); + NextBuf(); + goto _try; + case 0xfe: // ƒLƒƒƒŠƒA’f‘± + NextBuf(); + goto _try; + case 0xfd: // disable diddle + m_DisDiddle = 0; + NextBuf(); + goto _try; + case 0xfc: // enable diddle + m_DisDiddle = 1; + NextBuf(); + goto _try; + case 0x1b: + case 0x1f: + m_fig = m_Data; + break; + } + NextBuf(); + } + m_figout = 0; + if( !pMod->m_CharWaitDiddle ){ + WaitTXD(pMod->m_CharWait); + } + m_WaitTimerCount = 4; + OutData(m_Data); + } + else if( (BitLen < 6) && ((FSKDeff > DEFFSOUND) || (pMod->m_diddle && !m_DisDiddle)) ){ + if( FSKDeff > DEFFSOUND ){ + WaitTXD(pMod->m_CharWait); + } + else if( (sys.m_LWait == 2) || !pMod->m_WaitTimer || m_WaitTimerCount ){ + if( !pMod->m_CharWaitDiddle ){ + if( sys.m_LWait == 2 ){ + WaitTXD(pMod->m_CharWait); + } + else if( pMod->m_DiddleWait ){ + WaitTXD(pMod->m_DiddleWait); + } + } + } + m_idle = 1; + switch(pMod->m_diddle){ + case 1: // BLK + if( pMod->m_RandomDiddle && !(rand() & 3) ){ + m_Data = 0x1f; + if( pMod->m_BitLen <= 6 ) m_figout = 1; + } + else { + m_Data = 0x00; + } + break; + default: // LTR + if( pMod->m_RandomDiddle && !(rand() & 3) ){ + m_Data = 0x00; + } + else { + m_Data = 0x1f; + if( pMod->m_BitLen <= 6 ) m_figout = 1; + } + break; + } + if( m_WaitTimerCount ) m_WaitTimerCount--; + OutData(m_Data); + } + else { + if( !m_idle ){ + ::Sleep((pMod->m_ReCount * pMod->m_BitLen)*1000/SampFreq); + } + m_idle = 1; + } + ::Sleep(10); + } + else { + ::Sleep(1); + } + } + else { + ::Sleep(10); + } + } +} +/*#$% +============================================================== + ’ÊM‰ñü‚ðƒNƒ[ƒY‚·‚é +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- +============================================================== +*/ +void __fastcall CComm::Close(void) +{ + if( m_CreateON == TRUE ){ + if( m_Execute ){ + m_TxEnb = 0; + m_Command = COMM_CLOSE; // ƒXƒŒƒbƒhI—¹ƒRƒ}ƒ“ƒh + Priority = tpNormal; //ƒXƒŒƒbƒh‚Í’Êí‚Ì—Dæ“x‚Å‚ ‚é +#if 0 + DWORD tim = GetTickCount(); + while( m_Command && (GetTickCount() < (tim + 3000)) ){ // ƒXƒŒƒbƒhI—¹‘Ò‚¿ + ::Sleep(1); + } +#else + WaitFor(); +#endif + FSKCount1+=1000; + } + if( m_pEXT != NULL ){ + delete m_pEXT; + m_pEXT = NULL; + } + else { + ::CloseHandle(m_fHnd); + } + m_CreateON = FALSE; + } +} +void __fastcall CComm::ReqClose(void) +{ + if( m_CreateON == TRUE ){ + if( m_Execute ){ + m_TxEnb = 0; + m_Command = COMM_CLOSE; // ƒXƒŒƒbƒhI—¹ƒRƒ}ƒ“ƒh + Priority = tpNormal; //ƒXƒŒƒbƒh‚Í’Êí‚Ì—Dæ“x‚Å‚ ‚é + FSKCount1+=1000; + } + } +} +void __fastcall CComm::WaitClose(void) +{ + if( m_CreateON == TRUE ){ + if( m_Execute && m_Command ){ +#if 0 + DWORD tim = GetTickCount(); + while( GetTickCount() < (tim + 3000) ){ // 1[s]‚̃EƒGƒCƒg + if( !m_Command ) break; + ::Sleep(1); + } +#else + WaitFor(); +#endif + } + if( m_pEXT != NULL ){ + delete m_pEXT; + m_pEXT = NULL; + } + else { + ::CloseHandle(m_fHnd); + } + m_CreateON = FALSE; + } +} +/*#$% +============================================================== + ’ÊM‰ñü‚ðƒI[ƒvƒ“‚·‚é +-------------------------------------------------------------- +PortName : ‰ñü‚Ì–¼‘O +pCP : COMMPARA‚̃|ƒCƒ“ƒ^iƒkƒ‹‚ÌŽž‚̓fƒtƒHƒ‹ƒg‚ʼnŠú‰»j +RBufSize : ŽóMƒoƒbƒtƒ@‚̃TƒCƒY(default=2048) +TBufSize : ‘—Mƒoƒbƒtƒ@‚̃TƒCƒY(default=2048) +-------------------------------------------------------------- +TRUE/FALSE +-------------------------------------------------------------- +============================================================== +*/ +BOOL __fastcall CComm::Open(LPCTSTR PortName, int inv, COMMPARA *cp) +{ + + if( m_CreateON == TRUE ) Close(); + m_Execute = 0; + m_fHnd = ::CreateFile( PortName, GENERIC_READ | GENERIC_WRITE, + 0, NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL + ); + if( m_fHnd == INVALID_HANDLE_VALUE ){ + m_pEXT = new CEXTFSK(PortName); + if( m_pEXT->IsLib() ){ + LONG para; + if( cp != NULL ){ + para = (cp->Baud << 16); + para |= cp->Stop; + para |= (cp->BitLen << 2); + } + else { + para = (45 << 16); + } + m_pEXT->Open(para); + m_CreateON = TRUE; + return TRUE; + } + else { + delete m_pEXT; + m_pEXT = NULL; + } + return FALSE; + } + m_inv = inv; + // setup device buffers + if( ::SetupComm( m_fHnd, DWORD(1024), DWORD(2) ) == FALSE ){ + ::CloseHandle(m_fHnd); + return FALSE; + } + + // purge any information in the buffer + ::PurgeComm( m_fHnd, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR ); + + // set up for overlapped I/O + COMMTIMEOUTS TimeOut; + + TimeOut.ReadIntervalTimeout = 0xffffffff; + TimeOut.ReadTotalTimeoutMultiplier = 0; + TimeOut.ReadTotalTimeoutConstant = 0; + TimeOut.WriteTotalTimeoutMultiplier = 0; + TimeOut.WriteTotalTimeoutConstant = 20000; +// TimeOut.WriteTotalTimeoutConstant = 1; + if( !::SetCommTimeouts( m_fHnd, &TimeOut ) ){ + ::CloseHandle( m_fHnd ); + return FALSE; + } + ::GetCommState( m_fHnd, &m_dcb ); + m_dcb.BaudRate = (cp != NULL) ? cp->Baud : 9600; + m_dcb.fBinary = TRUE; + m_dcb.ByteSize = BYTE((cp != NULL) ? cp->BitLen : 8); + m_dcb.Parity = BYTE((cp != NULL) ? cp->Parity : NOPARITY); + m_dcb.StopBits = BYTE((cp != NULL ) ? cp->Stop : ONESTOPBIT); +// Application->MainForm->Caption = int(cp ? cp->Stop == TWOSTOPBITS : FALSE); + m_dcb.XonChar = 0x11; // XON + m_dcb.XoffChar = 0x13; // XOFF + m_dcb.fParity = 0; + m_dcb.fOutxCtsFlow = FALSE; + m_dcb.fInX = m_dcb.fOutX = FALSE; + m_dcb.fOutxDsrFlow = FALSE; + m_dcb.EvtChar = 0x0d; + + m_dcb.fRtsControl = m_inv ? RTS_CONTROL_ENABLE : RTS_CONTROL_DISABLE; // ‘—M‹ÖŽ~ + m_dcb.fDtrControl = m_inv ? DTR_CONTROL_ENABLE : DTR_CONTROL_DISABLE; // ‘—M‹ÖŽ~ + +// m_dcb.fTXContinueOnXoff = TRUE; + m_dcb.XonLim = USHORT(1024/4); // 1/4 of RBufSize + m_dcb.XoffLim = USHORT(1024*3/4); // 3/4 of RBufSize + m_dcb.DCBlength = sizeof( DCB ); + + if( m_dcb.StopBits != ONESTOPBIT ){ + m_addcount = DWORD((1000.0/double(m_dcb.BaudRate)) * double(m_dcb.ByteSize + 2.7)); + } + else { + m_addcount = DWORD((1000.0/double(m_dcb.BaudRate)) * double(m_dcb.ByteSize + 2.2)); + } +#if 0 // debug + m_dcb.BaudRate = 9600; + m_dcb.ByteSize = 8; +#endif + + if( !::SetCommState( m_fHnd, &m_dcb ) ){ + ::CloseHandle( m_fHnd ); + return FALSE; + } + + // get any early notifications + if( !::SetCommMask( m_fHnd, EV_RXFLAG ) ){ + ::CloseHandle(m_fHnd); + return FALSE; + } + m_CreateON = TRUE; + return TRUE; +} +//----------------------------------------------------------------- +// PTTØ‚è‘Ö‚¦—p +void __fastcall CComm::SetTXRX(int sw) +{ + if( m_CreateON == FALSE ) return; + + if( m_inv ) sw = sw ? 0 : 1; + if( m_pEXT != NULL ){ + m_pEXT->SetPTT(sw); + } + else if( sw ){ + ::EscapeCommFunction(m_fHnd, SETRTS); + ::EscapeCommFunction(m_fHnd, SETDTR); + } + else { + ::EscapeCommFunction(m_fHnd, CLRRTS); + ::EscapeCommFunction(m_fHnd, CLRDTR); + } +} +#if 0 +//----------------------------------------------------------------- +// DTR‚Å•„†‘—M—p +void __fastcall CComm::SetDTR(int sw) +{ + if( m_CreateON == FALSE ) return; + + if( sw ){ + ::EscapeCommFunction(m_fHnd, SETDTR); + } + else { + ::EscapeCommFunction(m_fHnd, CLRDTR); + } +} +#endif +//----------------------------------------------------------------- +// ‘—MƒrƒW[‚©‚Ç‚¤‚©’²‚ׂé TRUE : ‘—MƒrƒW[ó‘Ô +int __fastcall CComm::TxBusy(void) +{ + if( m_CreateON == FALSE ) return 0; + + if( m_pEXT != NULL ){ + return m_pEXT->IsTxBusy(); + } + else { + COMSTAT ComStat; + DWORD dwErrorFlags; + + ClearCommError( m_fHnd, &dwErrorFlags, &ComStat ); + return ComStat.fTxim; + } +} + +/*#$% +============================================================== + ’ÊM‰ñü‚Ƀf[ƒ^‚ð‘—M‚·‚é +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- +============================================================== +*/ +void __fastcall CComm::PutChar(BYTE c) +{ + if( (m_CreateON == TRUE) && m_Execute ){ + if( m_txcnt < COMM_TXBUFSIZE ){ + m_txbuf[m_txwp] = c; + m_txwp++; + if( m_txwp >= COMM_TXBUFSIZE ) m_txwp = 0; + m_txcnt++; + m_idle = 0; + FSKCount++; + } + } +} + +#if 0 +/*#$% +============================================================== + ŽóMƒoƒbƒtƒ@“à‚ÌŠi”[ƒf[ƒ^’·‚𓾂é +-------------------------------------------------------------- +-------------------------------------------------------------- + ƒf[ƒ^‚Ì’·‚³ +-------------------------------------------------------------- +============================================================== +*/ +DWORD CComm::RecvLen(void) +{ + if( m_pEXT != NULL ){ + return m_pEXT->IsEmpty(0) ? 0 : 1; + } + else { + COMSTAT ComStat; + DWORD dwErrorFlags; + + ::ClearCommError( m_fHnd, &dwErrorFlags, &ComStat ); + return ComStat.cbInQue; + } +} +#endif + +/******************************************************************* + EXTFSK.DLL +*******************************************************************/ +__fastcall CEXTFSK::CEXTFSK(LPCSTR pName) +{ + char Name[128]; + sprintf(Name, "%s.%s", pName, strcmpi(pName, "EXTFSK") ? "fsk" : "dll"); + fextfskOpen = NULL; + fextfskClose = NULL; + fextfskIsTxBusy = NULL; + fextfskPutChar = NULL; + fextfskSetPTT = NULL; + + m_hLib = ::LoadLibrary(Name); + if( m_hLib != NULL ){ + fextfskOpen = (extfskOpen)GetProc("_extfskOpen"); + fextfskClose = (extfskClose)GetProc("_extfskClose"); + fextfskIsTxBusy = (extfskIsTxBusy)GetProc("_extfskIsTxBusy"); + fextfskPutChar = (extfskPutChar)GetProc("_extfskPutChar"); + fextfskSetPTT = (extfskSetPTT)GetProc("_extfskSetPTT"); + } +} + +//--------------------------------------------------------------------- +__fastcall CEXTFSK::~CEXTFSK() +{ + if( m_hLib != NULL ){ + Close(); + ::FreeLibrary(m_hLib); + m_hLib = NULL; + } +} + +//--------------------------------------------------------------------- +FARPROC CEXTFSK::GetProc(LPCSTR pName) +{ + FARPROC fn = ::GetProcAddress(m_hLib, pName+1); + if( fn == NULL ){ + fn = ::GetProcAddress(m_hLib, pName); + } + return fn; +} + +long __fastcall CEXTFSK::Open(long para) +{ + if( !m_hLib || !fextfskOpen ) return FALSE; + return fextfskOpen(para); +} + +void __fastcall CEXTFSK::Close(void) +{ + if( !m_hLib || !fextfskClose ) return; + fextfskClose(); +} + +long __fastcall CEXTFSK::IsTxBusy(void) +{ + if( !m_hLib || !fextfskIsTxBusy ) return FALSE; + return fextfskIsTxBusy(); +} + +void __fastcall CEXTFSK::PutChar(BYTE c) +{ + if( !m_hLib || !fextfskPutChar ) return; + fextfskPutChar(c); +} + +void __fastcall CEXTFSK::SetPTT(long tx) +{ + if( !m_hLib || !fextfskSetPTT ) return; + fextfskSetPTT(tx); +} + + diff --git a/Comm.h b/Comm.h new file mode 100644 index 0000000..cd86dbf --- /dev/null +++ b/Comm.h @@ -0,0 +1,162 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +///---------------------------------------------------------- +/// ‚q‚r‚Q‚R‚Q‚b’ÊMƒNƒ‰ƒX +/// +/// (C) JE3HHT Makoto.Mori +/// +//--------------------------------------------------------------------------- +#ifndef CommH +#define CommH +#include "rtty.h" +//--------------------------------------------------------------------------- +#include +//--------------------------------------------------------------------------- +#define CR 0x0d +#define LF 0x0a +#define COMM_CLOSE 1 + +typedef struct { + int change; + + int Baud; + int BitLen; + int Stop; + int Parity; +}COMMPARA; +extern COMMPARA COMM; + +typedef long (__stdcall *extfskOpen)(long para); +typedef void (__stdcall *extfskClose)(void); +typedef long (__stdcall *extfskIsTxBusy)(void); +typedef void (__stdcall *extfskPutChar)(BYTE c); +typedef void (__stdcall *extfskSetPTT)(long tx); + +class CEXTFSK +{ +private: + //HANDLE m_hLib; + HINSTANCE m_hLib; //JA7UDE 0427 + extfskOpen fextfskOpen; + extfskClose fextfskClose; + extfskIsTxBusy fextfskIsTxBusy; + extfskPutChar fextfskPutChar; + extfskSetPTT fextfskSetPTT; +private: + FARPROC GetProc(LPCSTR pName); + +public: + __fastcall CEXTFSK(LPCSTR pName); + __fastcall ~CEXTFSK(); + long __fastcall IsLib(void){return m_hLib != NULL;}; + long __fastcall Open(long para); + void __fastcall Close(void); + long __fastcall IsTxBusy(void); + void __fastcall PutChar(BYTE c); + void __fastcall SetPTT(long tx); +}; + +#define COMM_TXBUFSIZE MODBUFMAX +class CComm : public TThread +{ +public: + BOOL m_CreateON; // ƒNƒŠƒGƒCƒgƒtƒ‰ƒO + volatile int m_Command; + int m_Execute; + DCB m_dcb; // ‚c‚b‚a + HANDLE m_fHnd; // ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹ + int m_inv; + + int m_TxEnb; + char m_txbuf[COMM_TXBUFSIZE]; + int m_txcnt; + int m_txwp; + int m_txrp; + + int m_idle; + + BYTE m_Data; + BYTE m_fig; + int m_DisDiddle; + int m_FirstGaurd; + + int m_WaitTimerCount; + + int m_figout; + CFSKMOD *pMod; + + DWORD m_nextcount; + DWORD m_addcount; +#if BITDEBUG + int m_bitCount; + int m_bitCountA; +#endif + + CEXTFSK *m_pEXT; +protected: + void virtual __fastcall Execute(); +private: + void __fastcall NextBuf(void); + void __fastcall WaitTXD(int w); + void __fastcall OutData(BYTE d); +public: + __fastcall CComm(bool CreateSuspended); + __fastcall ~CComm(){ + Close(); + }; + inline BOOL __fastcall IsOpen(void){ + return m_CreateON; + }; + inline void __fastcall SetInv(int inv){m_inv = inv;}; + BOOL __fastcall Open(LPCTSTR PortName, int inv, COMMPARA *cp); + void __fastcall Close(void); + void __fastcall ReqClose(void); + void __fastcall WaitClose(void); + void __fastcall SetTXRX(int sw); +// void __fastcall SetDTR(int sw); + int __fastcall TxBusy(void); +// void Out(BYTE d); + void __fastcall PutChar(BYTE c); + void __fastcall EnbTX(int sw); + void __fastcall Timer(void); + inline __fastcall GetBufCount(void){ + return m_txcnt; + }; + void __fastcall DisDiddle(int sw){ + m_DisDiddle = sw; + }; + void __fastcall InitTxBuf(void){ + m_txwp = m_txrp = m_txcnt = 0; + FSKCount1 = 0; + FSKCount2 = 0; + FSKCount = 0; + FSKDeff = 0; + }; +// DWORD RecvLen(void); +}; + +void InitCOMMPara(void); +#endif + + + + + + diff --git a/ConvDef.cpp b/ConvDef.cpp new file mode 100644 index 0000000..179b4f0 --- /dev/null +++ b/ConvDef.cpp @@ -0,0 +1,393 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ConvDef.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TConvDefDlg *ConvDefDlg; +//--------------------------------------------------------------------- +__fastcall TConvDefDlg::TConvDefDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "Define Conversion"; + ConvSel->Caption = "Delimiter Type"; + ConvSel->Items->Strings[0] = "comma(,)"; + ConvSel->Items->Strings[1] = "TAB"; + ConvSel->Items->Strings[2] = "NONE"; + LConv->Caption = "Conv."; + CheckDBL->Caption = "Double"; + GrpRef->Caption = "Ref."; + SBBack->Caption = "<"; + SBNext->Caption = ">"; + CancelBtn->Caption = "Cancel"; + InitBtn->Caption = "All Del"; + UpBtn->Caption = "Up"; + DownBtn->Caption = "Down"; + InitMax->Caption = "Init Max"; + } + + Grid->RowCount = TEXTCONVMAX + 1; + m_Mode = 0; + m_Bgn = m_End = m_Cur = 0; + m_DisEvent = 0; +} +//--------------------------------------------------------------------- +void __fastcall TConvDefDlg::UpdateUI(int n) +{ + SBBack->Enabled = m_Cur > m_Bgn ? TRUE : FALSE; + SBNext->Enabled = m_Cur < m_End ? TRUE : FALSE; + UpBtn->Enabled = (n > 0) ? TRUE : FALSE; + DownBtn->Enabled = (n < TEXTCONVMAX - 1) ? TRUE : FALSE; + CheckDBL->Enabled = m_Mode && (ConvSel->ItemIndex < 2); +} +//--------------------------------------------------------------------- +void __fastcall TConvDefDlg::GridDrawCell(TObject *Sender, int Col, int Row, + TRect &Rect, TGridDrawState State) +{ + char bf[1024]; + SDMMLOG sd; + + Grid->Canvas->FillRect(Rect); + int X = Rect.Left + 4; + int Y = Rect.Top + 2; + + if( Row ){ + Row--; + bf[0] = 0; + switch(Col){ + case 0: // Key + strcpy(bf, Conv[Row].Key.c_str()); + break; + case 1: // Size + if( !Conv[Row].Key.IsEmpty() && (Conv[Row].Key != "%EOD") ){ + sprintf(bf, "%u", Conv[Row].w); + } + break; + case 2: // Data + if( m_Mode ){ + if( !Conv[Row].Key.IsEmpty() && (Conv[Row].Key != "%EOD") ){ + Log.GetData(&sd, m_Cur); + MMLOG2Text(bf, &sd, Conv[Row].Key); + } + } + else { + strcpy(bf, m_line[Row].c_str()); + } + break; + } + Grid->Canvas->TextOut(X, Y, bf); + } + else if( Font->Charset != SHIFTJIS_CHARSET ){ + LPCSTR _tte[]={ + "Conv.","Max","Ref.", + }; + Grid->Canvas->TextOut(X, Y, _tte[Col]); + } + else { // ƒ^ƒCƒgƒ‹ + LPCSTR _tt[]={ + "•ÏŠ·Ž®","Max","ŽQÆ", + }; + Grid->Canvas->TextOut(X, Y, _tt[Col]); + } +} +//--------------------------------------------------------------------- +void __fastcall TConvDefDlg::SetupComBox(void) +{ + m_DisEvent++; + ConvText->Clear(); + int i; + for( i = 0; ConvTbl[i] != NULL; i++ ){ + ConvText->Items->Add(ConvTbl[i]); + } + m_DisEvent--; +} +//--------------------------------------------------------------------- +int __fastcall TConvDefDlg::Execute(TCONV *tp, int &delm, int &utc, int &dbl, int b, int e) +{ + m_DisEvent++; + int i; + for( i = 0; i < TEXTCONVMAX; i++ ){ + Conv[i].Key = tp[i].Key; + Conv[i].w = tp[i].w; + } + m_Mode = 1; + m_Cur = m_Bgn = b; + m_End = e; + CheckUTC->Checked = utc; + ConvSel->ItemIndex = delm; + CheckDBL->Checked = dbl; + SetupComBox(); + ConvText->Text = Conv[0].Key; + UpdateUI(Grid->Row - 1); + m_DisEvent--; + if( ShowModal() == IDOK ){ + for( i = 0; i < TEXTCONVMAX; i++ ){ + tp[i].Key = Conv[i].Key; + tp[i].w = Conv[i].w; + } + delm = ConvSel->ItemIndex; + utc = CheckUTC->Checked; + dbl = CheckDBL->Checked; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------- +int __fastcall TConvDefDlg::Execute(TCONV *tp, int &delm, int &utc, int &dbl, LPCSTR pName) +{ + m_DisEvent++; + int i; + for( i = 0; i < TEXTCONVMAX; i++ ){ + Conv[i].Key = tp[i].Key; + Conv[i].w = tp[i].w; + } + m_Mode = 0; + CheckUTC->Checked = utc; + ConvSel->ItemIndex = delm; + CheckDBL->Checked = dbl; + SetupComBox(); + ConvText->Text = Conv[0].Key; + LoadText(pName); + UpdateUI(Grid->Row - 1); + UpdateLine(); + m_DisEvent--; + if( ShowModal() == IDOK ){ + for( i = 0; i < TEXTCONVMAX; i++ ){ + tp[i].Key = Conv[i].Key; + tp[i].w = Conv[i].w; + } + delm = ConvSel->ItemIndex; + utc = CheckUTC->Checked; + dbl = CheckDBL->Checked; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------- +void __fastcall TConvDefDlg::LoadText(LPCSTR pName) +{ + FILE *fp; + char bf[2048]; + + m_Cur = m_Bgn = m_End = 0; + if( (fp = fopen(pName, "rt")) != NULL ){ + while(!feof(fp)){ + if( fgets(bf, sizeof(bf), fp) != NULL ){ + ClipLF(bf); + m_text[m_End] = bf; + m_End++; + if( m_End >= PREREADMAX ) break; + } + } + fclose(fp); + } + if( m_End ) m_End--; +} +//--------------------------------------------------------------------- +void __fastcall TConvDefDlg::UpdateLine(void) +{ + char rbf[2048]; + + StrCopy(rbf, m_text[m_Cur].c_str(), 2043); + + char bf[512]; + char dlm = ConvSel->ItemIndex ? TAB : ','; + LPSTR p, t; + + int i; + p = rbf; + for( i = 0; i < TEXTCONVMAX; i++ ){ + if( ConvSel->ItemIndex == 2 ){ + StrCopy(bf, p, Conv[i].w); + p += strlen(bf); + t = bf; + } + else { + p = StrDlm(t, p, dlm); + } + clipsp(t); + t = SkipSpace(t); + m_line[i] = t; + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::ConvTextChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + m_DisEvent++; + if( Grid->Row ){ + int Row = Grid->Row - 1; + Conv[Row].Key = ConvText->Text; + Grid->Invalidate(); + } + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::GridSelectCell(TObject *Sender, int Col, int Row, + bool &CanSelect) +{ + if( m_DisEvent ) return; + + m_DisEvent++; + if( Row ){ + Row--; + ConvText->Text = Conv[Row].Key; + UpdateUI(Row); + } + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::SBBackClick(TObject *Sender) +{ + if( m_Cur > m_Bgn ){ + m_Cur--; + UpdateUI(Grid->Row - 1); + if( !m_Mode ) UpdateLine(); + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::SBNextClick(TObject *Sender) +{ + if( m_Cur < m_End ){ + m_Cur++; + UpdateUI(Grid->Row - 1); + if( !m_Mode ) UpdateLine(); + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::GridGetEditText(TObject *Sender, int ACol, + int ARow, AnsiString &Value) +{ + char bf[512]; + + if( ARow ) ARow--; + bf[0] = 0; + switch(ACol){ + case 0: // Key + strcpy(bf, Conv[ARow].Key.c_str()); + break; + case 1: // Size + if( !Conv[ARow].Key.IsEmpty() && (Conv[ARow].Key != "%EOD") ){ + sprintf(bf, "%u", Conv[ARow].w); + } + break; + case 2: // Data + break; + } + Value = bf; +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::GridSetEditText(TObject *Sender, int ACol, + int ARow, const AnsiString Value) +{ + int d; + + if( ARow ) ARow--; + switch(ACol){ + case 0: // Key + Conv[ARow].Key = Value; + Grid->Invalidate(); + break; + case 1: // Size + sscanf(Value.c_str(), "%u", &d); + if( (d >= 0) && (d<=256) ){ + Conv[ARow].w = d; + if( !m_Mode ){ + UpdateLine(); + Grid->Invalidate(); + } + } + break; + case 2: // Data + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::InitBtnClick(TObject *Sender) +{ + if( YesNoMB( ( Font->Charset != SHIFTJIS_CHARSET ) ? "Delete All setup. Are you sure?":"‚·‚ׂĂ̒è‹`‚ðÁ‹Ž‚µ‚Ü‚·‚©H" ) == IDYES ){ + for( int i = 0; i < TEXTCONVMAX; i++ ){ + Conv[i].Key = ""; + Conv[i].w = 0; + } + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::UpBtnClick(TObject *Sender) +{ + int n = Grid->Row - 1; + if( n ){ + TCONV td = Conv[n]; + Conv[n] = Conv[n-1]; + Conv[n-1] = td; + Grid->Row--; + UpdateUI(Grid->Row - 1); + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::DownBtnClick(TObject *Sender) +{ + int n = Grid->Row - 1; + + if( n < (TEXTCONVMAX - 1) ){ + TCONV td = Conv[n]; + Conv[n] = Conv[n+1]; + Conv[n+1] = td; + Grid->Row++; + UpdateUI(Grid->Row - 1); + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::InitMaxClick(TObject *Sender) +{ + if( YesNoMB( ( Font->Charset != SHIFTJIS_CHARSET )?"Delete All Length. Are you sure?":"‚·‚ׂĂ̕¶Žš—ñ’·‚̧ŒÀ‚𖳂­‚µ‚Ü‚·‚©H" ) == IDYES ){ + for( int i = 0; i < TEXTCONVMAX; i++ ){ + Conv[i].w = 0; + } + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TConvDefDlg::ConvSelClick(TObject *Sender) +{ + UpdateUI(Grid->Row-1); + if( !m_Mode ){ + UpdateLine(); + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- diff --git a/ConvDef.dfm b/ConvDef.dfm new file mode 100644 index 0000000000000000000000000000000000000000..8ebf9f5f0efb6f36a618cf051369a0d331191572 GIT binary patch literal 1973 zcmah}OKcle6dljl^E@-ohi*#6qJb@Hl_h0E>v8P3actK!O%_Oy@yv@o%J@Aq^W3;d zEaKVFMoRc~&yt_ALtP*tu>i3_tdOV>Y$`z)Y}mpA-e*3Eqn3^R?)#i`@44sBzq(|b zo%U93tzK(2q}An*fh5`8`l?}@7~QGC-C8iv^JTFGcZu>?Qfxey1EY#V4~7=G8$eL* zM>XFG@Bo<3nD`i}7ash0|6xqx>cQ*rVLbfc$>C1L419>lI`juaqP$fwM7-^LWTs%)*r!j;(kr?#FF`z!Ns4au-KF%M>h*vE_ykB9kTuL%kdNh*+*e%TmX=9l4`e{J`74NrWn^sHkee3T`2JyIg?3cG98^r z60oZiLNF?IHmU>(ssAi+srBUf8|m}Q*>kzG0cf9`NkBAX6MIh3gAonnLfLlu9o8UO z%E2|$K`spD30BV$sN$lQ5tSZ(@$1)*&QQoXMM07b+agrBK_m3NBL87-k&C>7k|0oi zDkLQ+7Yk(*2PU2%A}d;*>gv%rlBIGF?~CmhL5Eu@GL{CI-`Ij7Y554I@j4FQX0blN z=@DI~yV?M+d9=l7K=0eb$*6CKj=M)=DbHM9=%5B9>>_I>SYoN4+NgAp1q0|369xfT zWT$yd-&*r;Pi<(lBHs9@pnN3B*OfnLDk*q8*;iId<^HD*q#5dy)<97~!fA8nn6IHWsRFkDH{%7CM zzC2~SQkG{WNhV1&{S1I6^2z+1?wp&`EJgKw>-d|)qr5w6&X7ROF_dnP=kS$d>FEUW z!Dl%*$iQ`uG6xN6cpuG!pF9)%^BlaKfmafod3aXPrZW}B6(33EmuJ9h^z!k&`+wj2 zDreDhmIN+gq4PO}?jD~{wzzGZf@mrxWHp_T?bOxJWnEC{<(xw2!+r*=R&AXD>!x5^ U=fS{Bvv1%1VfI@NXwc8ce_!c!p8x;= literal 0 HcmV?d00001 diff --git a/ConvDef.h b/ConvDef.h new file mode 100644 index 0000000..568f538 --- /dev/null +++ b/ConvDef.h @@ -0,0 +1,105 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef ConvDefH +#define ConvDefH +//---------------------------------------------------------------------------- +/* JA7UDE 0428 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +//---------------------------------------------------------------------------- +#include "LogConv.h" +//---------------------------------------------------------------------------- +#define PREREADMAX 100 +class TConvDefDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TStringGrid *Grid; + TComboBox *ConvText; + TLabel *LConv; + TGroupBox *GrpRef; + TSpeedButton *SBBack; + TSpeedButton *SBNext; + TRadioGroup *ConvSel; + TButton *InitBtn; + TButton *UpBtn; + TButton *DownBtn; + TButton *InitMax; + TCheckBox *CheckUTC; + TCheckBox *CheckDBL; + void __fastcall GridDrawCell(TObject *Sender, int Col, int Row, TRect &Rect, + TGridDrawState State); + void __fastcall ConvTextChange(TObject *Sender); + void __fastcall GridSelectCell(TObject *Sender, int Col, int Row, + bool &CanSelect); + void __fastcall SBBackClick(TObject *Sender); + void __fastcall SBNextClick(TObject *Sender); + + + void __fastcall GridGetEditText(TObject *Sender, int ACol, int ARow, + AnsiString &Value); + void __fastcall GridSetEditText(TObject *Sender, int ACol, int ARow, + const AnsiString Value); + void __fastcall InitBtnClick(TObject *Sender); + void __fastcall UpBtnClick(TObject *Sender); + void __fastcall DownBtnClick(TObject *Sender); + void __fastcall InitMaxClick(TObject *Sender); + void __fastcall ConvSelClick(TObject *Sender); +private: + TCONV Conv[TEXTCONVMAX]; + + int m_Mode; + int m_DisEvent; + + int m_Bgn; + int m_End; + int m_Cur; + + void __fastcall UpdateUI(int n); + void __fastcall SetupComBox(void); + + AnsiString m_text[PREREADMAX]; + AnsiString m_line[TEXTCONVMAX]; + + void __fastcall LoadText(LPCSTR pName); + void __fastcall UpdateLine(void); + +public: + virtual __fastcall TConvDefDlg(TComponent* AOwner); + + int __fastcall Execute(TCONV *tp, int &delm, int &utc, int &dbl, int b, int e); + int __fastcall Execute(TCONV *tp, int &delm, int &utc, int &dbl, LPCSTR pName); +}; +//---------------------------------------------------------------------------- +//extern TConvDefDlg *ConvDefDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/EditDlg.cpp b/EditDlg.cpp new file mode 100644 index 0000000..0c98cb5 --- /dev/null +++ b/EditDlg.cpp @@ -0,0 +1,428 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "EditDlg.h" +#include "MacroKey.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TEditDlgBox *EditDlgBox; +//--------------------------------------------------------------------- +__fastcall TEditDlgBox::TEditDlgBox(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + Memo->Font->Name = sys.m_BtnFontName; + Memo->Font->Charset = sys.m_BtnFontCharset; + m_JobSel = 0; + m_DisEvent = 0; + m_CurIndex = -1; + m_MacroSet = 0; + + ShortCutName->Clear(); + int i; + ShortCutName->Items->Add("NULL"); + for( i = 0; KEYTBL[i].Key; i++ ){ + ShortCutName->Items->Add(ToDXKey(KEYTBL[i].pName)); + } + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "Assign Macro"; + CancelBtn->Caption = "Cancel"; + LShort->Caption = "ShortCut"; + LEntryName->Caption = "Name"; + DelBtn->Caption = "Del"; + NewNameBtn->Caption = "New Name"; + TxBtn->Caption = "TX(F9)"; + } +// SBHelp->Visible = !JanHelp.IsEmpty(); + SBHelp->Visible = FALSE; + TxBtn->Enabled = !(sys.m_DisTX&1); +} +//--------------------------------------------------------------------- +int __fastcall TEditDlgBox::Execute(AnsiString &as, WORD &nKey, TColor *pcol, int *Intval, int set) +{ + m_MacroSet = set; + m_DisEvent++; + if( ButtonName->Text.IsEmpty() ){ + ButtonName->Visible = FALSE; + LEntryName->Visible = FALSE; + } + else { + ButtonName->Visible = TRUE; + } + EntryName->Visible = FALSE; + DelBtn->Visible = FALSE; + NewNameBtn->Visible = FALSE; + Memo->Text = as; + if( pcol != NULL ){ + PanelCol->Visible = TRUE; + LCol->Visible = TRUE; + PanelCol->Color = *pcol; + } + if( Intval != NULL ){ + LMInt->Visible = TRUE; + EMInt->Visible = TRUE; + UDInt->Visible = TRUE; + LMUN->Visible = TRUE; + UDInt->Position = SHORT(*Intval); + } + ShortCutName->Text = GetKeyName(nKey); + if( ShowModal() == IDOK ){ + as = Memo->Text; + nKey = GetKeyCode(AnsiString(ShortCutName->Text).c_str()); //JA7UDE 0428 + if( pcol != NULL ){ + *pcol = PanelCol->Color; + } + if( Intval != NULL ){ + *Intval = UDInt->Position; + } + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------- +void __fastcall TEditDlgBox::UpdateUI(void) +{ + if( EntryName->Visible != FALSE ){ + NewNameBtn->Enabled = (m_CurIndex >= 0) ? TRUE : FALSE; + DelBtn->Enabled = (m_CurIndex >= 0) ? TRUE : FALSE; + OKBtn->Enabled = ((!EntryName->Text.IsEmpty()) && (!Memo->Text.IsEmpty()) && Memo->Modified) ? TRUE : FALSE; + } +} +//--------------------------------------------------------------------- +int __fastcall TEditDlgBox::EditMsg(void) +{ + Caption = (Font->Charset != SHIFTJIS_CHARSET) ? "Edit Message":"’èŒ^ƒƒbƒZ[ƒW‚Ì•ÒW"; + + ButtonName->Visible = FALSE; + EntryName->Visible = TRUE; + DelBtn->Visible = TRUE; + NewNameBtn->Visible = TRUE; + + if(Font->Charset != SHIFTJIS_CHARSET){ + CancelBtn->Caption = "Close"; + OKBtn->Caption = "Assign"; + } + else { + CancelBtn->Caption = "•‚¶‚é"; + OKBtn->Caption = "“o˜^"; + } + + UpdateList(); +// EntryName->SetFocus(); + Memo->Clear(); + if( !sys.m_MsgName[0].IsEmpty() ){ + Memo->Text = sys.m_MsgList[0]; + m_CurIndex = 0; + } + UpdateUI(); + m_MacroSet = 0; + if( ShowModal() == IDOK ){ + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::UpdateList(void) +{ + m_DisEvent++; + EntryName->Clear(); + int i; + for( i = 0; i < MSGLISTMAX; i++ ){ + if( sys.m_MsgName[i].IsEmpty() ) break; + EntryName->Items->Add(sys.m_MsgName[i]); + } + if( !sys.m_MsgName[0].IsEmpty() ){ + EntryName->Text = sys.m_MsgName[0]; + } + ShortCutName->Text = GetKeyName(sys.m_MsgKey[0]); + m_DisEvent--; +} + +void __fastcall TEditDlgBox::EntryNameChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + m_DisEvent++; + AnsiString ttl = EntryName->Text; + AnsiString as; + m_CurIndex = -1; + ShortCutName->Text = "NULL"; + int i; + for( i = 0; i < MSGLISTMAX; i++ ){ + if( sys.m_MsgName[i].IsEmpty() ) break; + if( sys.m_MsgName[i] == ttl ){ + as = sys.m_MsgList[i]; + Memo->Clear(); + Memo->Text = as; + m_CurIndex = i; + ShortCutName->Text = GetKeyName(sys.m_MsgKey[i]); + break; + } + } + if( (m_CurIndex == -1) && (!EntryName->Text.IsEmpty()) && (!Memo->Text.IsEmpty()) ) Memo->Modified = TRUE; + UpdateUI(); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::NewNameBtnClick(TObject *Sender) +{ + //AnsiString ttl = EntryName->Text; //JA7UDE 0428 + UnicodeString ttl = EntryName->Text; //JA7UDE 0428 + if( InputQuery("MMTTY", (Font->Charset != SHIFTJIS_CHARSET) ? "Input Name":"“o˜^–¼iƒƒbƒZ[ƒW‚̕ʖ¼j‚ð“ü—Í", ttl) == TRUE ){ + if( ttl.IsEmpty() ){ + ttl = "–³‘è"; + } + sys.m_MsgName[m_CurIndex] = ttl; + EntryName->Text = ttl; + } + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::DelBtnClick(TObject *Sender) +{ + if( YesNoMB((Font->Charset != SHIFTJIS_CHARSET)?"Delete [%s]. Are you sure?":"[%s]‚ðƒŠƒXƒg‚©‚ç휂µ‚Ü‚·.\r\n\r\n‚æ‚낵‚¨‚Ü‚Á‚©H", EntryName->Text.c_str()) == IDYES ){ + int i; + for( i = m_CurIndex; i < (MSGLISTMAX - 1); i++ ){ + if( sys.m_MsgName[i].IsEmpty() ) break; + sys.m_MsgList[i] = sys.m_MsgList[i+1]; + sys.m_MsgName[i] = sys.m_MsgName[i+1]; + sys.m_MsgKey[i] = sys.m_MsgKey[i+1]; + } + sys.m_MsgName[i] = ""; + sys.m_MsgList[i] = ""; + sys.m_MsgKey[i] = 0; + if( m_CurIndex ) m_CurIndex--; + if( m_CurIndex >= 0 ){ + EntryName->Text = sys.m_MsgName[m_CurIndex]; + Memo->Text = sys.m_MsgList[m_CurIndex]; + ShortCutName->Text = GetKeyName(sys.m_MsgKey[m_CurIndex]); + } + else { + EntryName->Text = ""; + Memo->Clear(); + ShortCutName->Text = ""; + } + UpdateList(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::MemoChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::OKBtnClick(TObject *Sender) +{ + if( EntryName->Visible == FALSE ){ + ModalResult = mrOk; + return; + } + if( EntryName->Text.IsEmpty() ) return; + if( Memo->Text.IsEmpty() ) return; + if( YesNoMB((Font->Charset != SHIFTJIS_CHARSET)?"Assign text to [%s]. Are you sure?":"[%s]‚ÉŒ»Ý‚̃eƒLƒXƒg‚ð’è‹`‚µ‚Ü‚·.\r\n\r\n‚æ‚낵‚¨‚Ü‚Á‚©H", EntryName->Text.c_str()) == IDYES ){ + EntryMsg(AnsiString(EntryName->Text), AnsiString(Memo->Text), GetKeyCode(AnsiString(ShortCutName->Text).c_str())); //JA7UDE 0428 + Memo->Modified = FALSE; + } + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::ShortCutNameChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + Memo->Modified = TRUE; + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::TxBtnClick(TObject *Sender) +{ + if( Memo->Text.IsEmpty() ) return; + if( sys.m_DisTX&1 ) return; + + m_JobSel = 1; + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + switch(Key){ + case VK_F9: + Key = 0; + TxBtnClick(NULL); + break; + case VK_ESCAPE: + Key = 0; + ModalResult = mrCancel; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::FormKeyUp(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + switch(Key){ + case VK_F9: + Key = 0; + break; + case VK_ESCAPE: + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::ClearBtnClick(TObject *Sender) +{ + if( YesNoMB((Font->Charset != SHIFTJIS_CHARSET)?"Clear text and shortcut. Are you sure?":"ƒeƒLƒXƒg‚ƃVƒ‡[ƒgƒJƒbƒg‚ð‰Šú‰»‚µ‚Ü‚·.\r\n\r\n‚æ‚낵‚¨‚Ü‚Á‚©H") == IDYES ){ + Memo->Text = ""; + ShortCutName->Text = "NULL"; + UDInt->Position = 0; + } +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::PanelColClick(TObject *Sender) +{ + ColorDialog->Color = PanelCol->Color; + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PanelCol->Color = ColorDialog->Color; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +int __fastcall TEditDlgBox::CheckLast(LPCSTR s, char c) +{ + LPCSTR p = s + strlen(s) - 1; + for( ; p >= s; p-- ){ + if( *p == c ) return 1; + if( isalpha(*p) || (*p == '%') ) return 0; + } + return 0; +} +//--------------------------------------------------------------------------- +int __fastcall TEditDlgBox::CheckTop(LPCSTR s, char c) +{ + LPCSTR p = s; + for( ; *p; p++ ){ + if( *p == c ) return 1; + if( isalpha(*p) || (*p == '%') ) return 0; + } + return 0; +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::DeleteSpace(void) +{ + AnsiString ws = Memo->Text.c_str(); + LPSTR p = ws.c_str(); + AnsiString as; + LPSTR bp = new char[strlen(p)+1]; + + LPSTR t = bp; + for( ; *p; p++ ){ + if( *p != CR ){ + if( *p == LF ){ + *t = 0; + clipsp(bp); + if( *bp ) as += bp; + as += "\r\n"; + t = bp; + } + else { + *t++ = *p; + } + } + } + *t = 0; + if( *bp ){ + clipsp(bp); + if( *bp ) as += bp; + } + p = as.c_str(); + t = lastp(p); + if( (*t == LF)||(*t == CR) ){ + for( ; t >= p; t-- ){ + if( (*t == LF)||(*t == CR) ){ + *t = 0; + } + else { + break; + } + } + t++; + *t++ = CR; + *t = LF; + } + Memo->Text = p; + Memo->Modified = TRUE; + delete bp; +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::ComBtnClick(TObject *Sender) +{ + TMacroKeyDlg *pBox = new TMacroKeyDlg(this); + AnsiString as, bs; + LPCSTR p; + int r = pBox->Execute(as, m_MacroSet); + switch(r){ + case 1: + Memo->SetFocus(); + for( p = as.c_str(); *p; p++ ){ + ::PostMessage(Memo->Handle, WM_CHAR, *p, 0); + } + break; + case 2: // ÅŒã‚ɒljÁ + bs = Memo->Text; + if( !CheckLast(bs.c_str(), *as.c_str()) ){ + bs += as.c_str(); + Memo->Text = bs; + Memo->Modified = TRUE; + } + break; + case 3: // 擪‚ɒljÁ + if( !CheckTop(AnsiString(Memo->Text).c_str(), *as.c_str()) ){ //JA7UDE 0428 + as += Memo->Text.c_str(); + Memo->Text = as.c_str(); + Memo->Modified = TRUE; + } + break; + case -1: // s––‚̃Xƒy[ƒX‚ðíœ + DeleteSpace(); + break; + } + delete pBox; + UpdateUI(); + Memo->SetFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TEditDlgBox::SBHelpClick(TObject *Sender) +{ + ShowHtmlHelp(); +} +//--------------------------------------------------------------------------- diff --git a/EditDlg.dfm b/EditDlg.dfm new file mode 100644 index 0000000000000000000000000000000000000000..5a1ae4ed85b709d9d98ac74ff12814a756a51e6a GIT binary patch literal 2717 zcmbtWOOM-B6uzqnB#bkt2(L}CGjcJOqdw5uvlCY`)A_CUJ=C%KcDI=+$Z>12e& zYk}CXssuua1v?}bY>3xw2v!3L@7iVf_L!tuTKbta(*m4z)ozwdnKeCOP|Fp%A- zx9ocRjcV^MGB-ap5VHGCvtTzyZdCWiRXR7a%Y2(0Me?6Ww&_gr3RN16NMJ>$9#OSH zSa%(dj@6noi(KkoDj1hp|$abwwB-kQr1(UBk(@JBM8!%@-U- zB<7{{Xz;vjZtsLkFh$#%5i+VCM-lb0Rox@rjKlrH;ks#5ms7as(mdnb?ej)0R=QT} zSxkyIY*UBe z_98ta$_XNa!L4xUHOC*4cvNsnS0&~`QK*au^Dp(ZU`*P{!dra3cz^NbqR^ou$2%Y) z&`VOrFCnDZ9WtePc8ceo#K#`uJqIHz(IP*eQ!1W2_Ep94pe@h);eQP-tTkaejI7ge z*$hZ+O-Wo)yxDPKzJ~NDDz`d~@~xZ8{>a224IDCY{4r6DSPs8NNVjWrI-oG)^_BT@ zo29d#_+I`IrFFafbZ%_Ha3Q0mBFY)>h9F4EQ+wk2QXTUvetA9R6%Drql|gq7MxST$ z^1>?xj+K~2VT+i-yC9pLE85Qfi?)mmFQ=`@25Rj%%Fy3snY)^1?z8jg;5MS_?zHZP z4$Q)*Co>~dvm|aU)2-%FvFD;4lD4~&&aJE+(l)pR3q5-B;YYvy^v#RSTURo=e;6wU zLtg1Xt>zIY5R6F!{tF{41MwdjlP=0uO0g0SZ1)|Xcp5v4mF6M$#@q9IdtlGX;VP!l`y137d8W`(ukKUx#P^`#RnN>LANLLICT6` znB{KSB>X=+QY#|UaNCMtb21Kd@Cr-U;n;=aRXARQ z;|3fzO)T%2aN3PeH%wUF#gc(xE{M`5J^6B)cd=CvJ&85=9#$;KfLJL?qPhhRmZZN3 YGY2+$e6I+v#5GHhq_OsSB?rO$4abo#rT_o{ literal 0 HcmV?d00001 diff --git a/EditDlg.h b/EditDlg.h new file mode 100644 index 0000000..edb0698 --- /dev/null +++ b/EditDlg.h @@ -0,0 +1,102 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef EditDlgH +#define EditDlgH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ComLib.h" +#include +#include +//---------------------------------------------------------------------------- +class TEditDlgBox : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TMemo *Memo; + TLabel *LEntryName; + TComboBox *EntryName; + TButton *DelBtn; + TButton *NewNameBtn; + TEdit *ButtonName; + TLabel *LShort; + TComboBox *ShortCutName; + TButton *TxBtn; + TButton *ClearBtn; + TPanel *PanelCol; + TColorDialog *ColorDialog; + TLabel *LCol; + TLabel *LMInt; + TUpDown *UDInt; + TLabel *LMUN; + TComboBox *EMInt; + TButton *ComBtn; + TSpeedButton *SBHelp; + void __fastcall EntryNameChange(TObject *Sender); + void __fastcall NewNameBtnClick(TObject *Sender); + void __fastcall DelBtnClick(TObject *Sender); + void __fastcall MemoChange(TObject *Sender); + void __fastcall OKBtnClick(TObject *Sender); + + + void __fastcall ShortCutNameChange(TObject *Sender); + void __fastcall TxBtnClick(TObject *Sender); + + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall ClearBtnClick(TObject *Sender); + void __fastcall PanelColClick(TObject *Sender); + void __fastcall ComBtnClick(TObject *Sender); + void __fastcall SBHelpClick(TObject *Sender); +private: + int m_DisEvent; + int m_CurIndex; + int m_MacroSet; + + void __fastcall UpdateList(void); + void __fastcall UpdateUI(void); + + int __fastcall CheckLast(LPCSTR s, char c); + int __fastcall CheckTop(LPCSTR s, char c); + void __fastcall DeleteSpace(void); + +public: + virtual __fastcall TEditDlgBox(TComponent* AOwner); + int __fastcall Execute(AnsiString &as, WORD &nKey, TColor *pcol, int *Intval, int set); + int __fastcall EditMsg(void); + + int m_JobSel; +}; +//---------------------------------------------------------------------------- +//extern TEditDlgBox *EditDlgBox; +//---------------------------------------------------------------------------- +#endif diff --git a/Fft.cpp b/Fft.cpp new file mode 100644 index 0000000..e84e73c --- /dev/null +++ b/Fft.cpp @@ -0,0 +1,712 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#include +#pragma hdrstop + +#include +#include "fft.h" +#include "ComLib.h" + +#define PI 3.1415926535897932384626433832795 +#define PI2 (2*PI) + +#define SCALEADJ_1 (-5.5) +#define SCALEADJ_2 (-6.5) +#define SCALEADJ_3 (-7.8) +#define SCALEADJ_4 (-9.0) +#define LOGADJ (2.81458e4) + +#define SCALEPOW_1 (1.0/4.0) +#define SCALEPOW_ADJ_1 0.0018 +#define SCALEPOW_2 (1.0/5.0) +#define SCALEPOW_ADJ_2 0.008 +#define SCALEPOW_3 (1.0/6.0) +#define SCALEPOW_ADJ_3 0.022 +#define SCALEPOW_4 (1.0/7.0) +#define SCALEPOW_ADJ_4 0.048 +//------------------------------------------------- +// ‚e‚e‚sˆ—ƒNƒ‰ƒX +CFFT::CFFT() +{ + m_FFTDIS = 0; + memset(m_fft, 0, sizeof(m_fft)); + m_CollectFFTBuf = new double[FFT_BUFSIZE]; + memset(m_CollectFFTBuf, 0, sizeof(double)*FFT_BUFSIZE); + m_CollectFFT = 0; + m_CollectFFTCount = 0; + m_tWindow = new double[FFT_BUFSIZE]; + //m_tSinCos = new double[FFT_BUFSIZE/2]; + m_tSinCos = new double[FFT_BUFSIZE/2+8]; //JA7UDE 0428 + m_Work = new int[SQRT_FFT_SIZE+2]; + memset(m_Work, 0, sizeof(int[SQRT_FFT_SIZE+2])); + pStgBuf = new double[FFT_BUFSIZE]; + m_Work[0] = 0; + makewt(FFT_SIZE/4, m_Work, m_tSinCos); + makect(FFT_SIZE/4, m_Work, m_tSinCos + m_Work[0]); + for(int i = 0; i < FFT_SIZE; i++){ + pStgBuf[i] = 1.0; + m_tWindow[i] = (0.5 - 0.5*cos( (PI2*i)/(FFT_SIZE-1) )); //ƒnƒjƒ“ƒO‘‹ + } + m_StgSize = 1; + m_StgScale = 1.0; + m_StgK = 0.0; + m_StgSW = FALSE; + m_CollectFlag = 0; +} + +//------------------------------------------------- +// ‚e‚e‚sˆ—ƒNƒ‰ƒX‚ÌĉŠú‰» +void CFFT::InitFFT(void) +{ + m_CollectFFT = 0; + m_CollectFFTCount = 0; + memset(m_CollectFFTBuf, 0, sizeof(double)*FFT_SIZE); + m_CollectFFT = 0; + m_CollectFFTCount = 0; + memset(m_Work, 0, sizeof(int[SQRT_FFT_SIZE+2])); + makewt(FFT_SIZE/4, m_Work, m_tSinCos); + makect(FFT_SIZE/4, m_Work, m_tSinCos + m_Work[0]); + for(int i = 0; i < FFT_SIZE; i++){ + pStgBuf[i] = 1.0; + m_tWindow[i] = (0.5 - 0.5*cos( (PI2*i)/(FFT_SIZE-1) )); //ƒnƒjƒ“ƒO‘‹ + } + m_StgSize = 1; + m_StgScale = 1.0; + m_StgK = 0.0; + m_StgSW = FALSE; + m_CollectFlag = 0; +} + +//------------------------------------------------- +CFFT::~CFFT() +{ + if( m_CollectFFTBuf ){ + delete[] m_CollectFFTBuf; + m_CollectFFTBuf = NULL; + } + if(pStgBuf){ + delete[] pStgBuf; + pStgBuf = NULL; + } + if(m_Work){ + delete[] m_Work; + m_Work = NULL; + } + if(m_tSinCos){ + delete[] m_tSinCos; + m_tSinCos = NULL; + } + if(m_tWindow){ + delete[] m_tWindow; + m_tWindow = NULL; + } +} + +//------------------------------------------------- +// ƒf[ƒ^ŽûWiƒXƒŒƒbƒhŠO‚ÅŽÀs‚·‚éj +void CFFT::TrigFFT(void) +{ + m_CollectFFTCount = 0; + m_CollectFFT = 0; // ŽŸ‚ÌŽûW‚ðƒgƒŠƒK +} +//------------------------------------------------- +// ƒf[ƒ^ŽûWiƒXƒŒƒbƒh“à‚ÅŽÀs‚·‚éj +void CFFT::CollectFFT(double *lp, int size) +{ + if( !m_CollectFFT ){ + if( (size + m_CollectFFTCount) > FFT_SIZE ){ + size = FFT_SIZE - m_CollectFFTCount; + } + memcpy(&m_CollectFFTBuf[m_CollectFFTCount], lp, sizeof(double)*size); + m_CollectFFTCount += size; + if( m_CollectFFTCount >= FFT_SIZE ){ + m_CollectFFTCount = 0; + m_CollectFFT = 1; + } + } +} +//------------------------------------------------- +// ƒf[ƒ^ŽûWiƒXƒŒƒbƒhŠO‚ÅŽÀs‚·‚éj +void CFFT::CalcFFT(int size, double gain, int stg) +{ + Calc(m_CollectFFTBuf, size, gain, stg, m_fft); +} + +void CFFT::makewt(int nw, int *ip, double *w) +{ + int nwh, j; + double delta, x, y; + + ip[0] = nw; + ip[1] = 1; + if(nw > 2){ + nwh = nw >> 1; + delta = atan(1.0) / nwh; + w[0] = 1; + w[1] = 0; + w[nwh] = cos(delta * nwh); + w[nwh + 1] = w[nwh]; + for(j = 2; j < nwh; j += 2){ + x = cos(delta * j); + y = sin(delta * j); + w[j] = x; + w[j + 1] = y; + w[nw - j] = y; + w[nw - j + 1] = x; + } + bitrv2(nw, ip + 2, w); + } +} +//------------------------------------------------- +// ƒf[ƒ^‚̈—‰» +void CFFT::makect(int nc, int *ip, double *c) +{ + int nch, j; + double delta; + + ip[1] = nc; + if(nc > 1){ + nch = nc >> 1; + delta = atan(1.0) / nch; + c[0] = cos(delta * nch); + c[nch] = 0.5 * c[0]; + for(j = 1; j < nch; j++){ + c[j] = 0.5 * cos(delta * j); + c[nc - j] = 0.5 * sin(delta * j); + } + } +} +//------------------------------------------------- +// ƒf[ƒ^‚̈—‰» +void CFFT::bitrv2(int n, int *ip, double *a) +{ + int j, j1, k, k1, l, m, m2; + double xr, xi; + + ip[0] = 0; + l = n; + m = 1; + while((m << 2) < l){ + l >>= 1; + for (j = 0; j < m; j++) { + ip[m + j] = ip[j] + l; + } + m <<= 1; + } + if((m << 2) > l){ + for (k = 1; k < m; k++) { + for (j = 0; j < k; j++) { + j1 = (j << 1) + ip[k]; + k1 = (k << 1) + ip[j]; + xr = a[j1]; + xi = a[j1 + 1]; + a[j1] = a[k1]; + a[j1 + 1] = a[k1 + 1]; + a[k1] = xr; + a[k1 + 1] = xi; + } + } + } else { + m2 = m << 1; + for(k = 1; k < m; k++){ + for(j = 0; j < k; j++){ + j1 = (j << 1) + ip[k]; + k1 = (k << 1) + ip[j]; + xr = a[j1]; + xi = a[j1 + 1]; + a[j1] = a[k1]; + a[j1 + 1] = a[k1 + 1]; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m2; + k1 += m2; + xr = a[j1]; + xi = a[j1 + 1]; + a[j1] = a[k1]; + a[j1 + 1] = a[k1 + 1]; + a[k1] = xr; + a[k1 + 1] = xi; + } + } + } +} +//------------------------------------------------- +void CFFT::cftfsub(int n, double *a, double *w) +{ + int j, j1, j2, j3, l; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + l = 2; + if(n > 8){ + cft1st(n, a, w); + l = 8; + while((l << 2) < n){ + cftmdl(n, l, a, w); + l <<= 2; + } + } + if((l << 2) == n){ + for(j = 0; j < l; j += 2){ + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x0r - x2r; + a[j2 + 1] = x0i - x2i; + a[j1] = x1r - x3i; + a[j1 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + } + } else { + for(j = 0; j < l; j += 2){ + j1 = j + l; + x0r = a[j] - a[j1]; + x0i = a[j + 1] - a[j1 + 1]; + a[j] += a[j1]; + a[j + 1] += a[j1 + 1]; + a[j1] = x0r; + a[j1 + 1] = x0i; + } + } +} +//------------------------------------------------- +void CFFT::cft1st(int n, double *a, double *w) +{ + int j, k1, k2; + double wk1r, wk1i, wk2r, wk2i, wk3r, wk3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + x0r = a[0] + a[2]; + x0i = a[1] + a[3]; + x1r = a[0] - a[2]; + x1i = a[1] - a[3]; + x2r = a[4] + a[6]; + x2i = a[5] + a[7]; + x3r = a[4] - a[6]; + x3i = a[5] - a[7]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[4] = x0r - x2r; + a[5] = x0i - x2i; + a[2] = x1r - x3i; + a[3] = x1i + x3r; + a[6] = x1r + x3i; + a[7] = x1i - x3r; + wk1r = w[2]; + x0r = a[8] + a[10]; + x0i = a[9] + a[11]; + x1r = a[8] - a[10]; + x1i = a[9] - a[11]; + x2r = a[12] + a[14]; + x2i = a[13] + a[15]; + x3r = a[12] - a[14]; + x3i = a[13] - a[15]; + a[8] = x0r + x2r; + a[9] = x0i + x2i; + a[12] = x2i - x0i; + a[13] = x0r - x2r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[10] = wk1r * (x0r - x0i); + a[11] = wk1r * (x0r + x0i); + x0r = x3i + x1r; + x0i = x3r - x1i; + a[14] = wk1r * (x0i - x0r); + a[15] = wk1r * (x0i + x0r); + k1 = 0; + for(j = 16; j < n; j += 16){ + k1 += 2; + k2 = k1 << 1; + wk2r = w[k1]; + wk2i = w[k1 + 1]; + wk1r = w[k2]; + wk1i = w[k2 + 1]; + wk3r = wk1r - 2 * wk2i * wk1i; + wk3i = 2 * wk2i * wk1r - wk1i; + x0r = a[j] + a[j + 2]; + x0i = a[j + 1] + a[j + 3]; + x1r = a[j] - a[j + 2]; + x1i = a[j + 1] - a[j + 3]; + x2r = a[j + 4] + a[j + 6]; + x2i = a[j + 5] + a[j + 7]; + x3r = a[j + 4] - a[j + 6]; + x3i = a[j + 5] - a[j + 7]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j + 4] = wk2r * x0r - wk2i * x0i; + a[j + 5] = wk2r * x0i + wk2i * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j + 2] = wk1r * x0r - wk1i * x0i; + a[j + 3] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j + 6] = wk3r * x0r - wk3i * x0i; + a[j + 7] = wk3r * x0i + wk3i * x0r; + wk1r = w[k2 + 2]; + wk1i = w[k2 + 3]; + wk3r = wk1r - 2 * wk2r * wk1i; + wk3i = 2 * wk2r * wk1r - wk1i; + x0r = a[j + 8] + a[j + 10]; + x0i = a[j + 9] + a[j + 11]; + x1r = a[j + 8] - a[j + 10]; + x1i = a[j + 9] - a[j + 11]; + x2r = a[j + 12] + a[j + 14]; + x2i = a[j + 13] + a[j + 15]; + x3r = a[j + 12] - a[j + 14]; + x3i = a[j + 13] - a[j + 15]; + a[j + 8] = x0r + x2r; + a[j + 9] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j + 12] = -wk2i * x0r - wk2r * x0i; + a[j + 13] = -wk2i * x0i + wk2r * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j + 10] = wk1r * x0r - wk1i * x0i; + a[j + 11] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j + 14] = wk3r * x0r - wk3i * x0i; + a[j + 15] = wk3r * x0i + wk3i * x0r; + } +} +//------------------------------------------------- +void CFFT::cftmdl(int n, int l, double *a, double *w) +{ + int j, j1, j2, j3, k, k1, k2, m, m2; + double wk1r, wk1i, wk2r, wk2i, wk3r, wk3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + m = l << 2; + for(j = 0; j < l; j += 2){ + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x0r - x2r; + a[j2 + 1] = x0i - x2i; + a[j1] = x1r - x3i; + a[j1 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + } + wk1r = w[2]; + for(j = m; j < l + m; j += 2){ + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x2i - x0i; + a[j2 + 1] = x0r - x2r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * (x0r - x0i); + a[j1 + 1] = wk1r * (x0r + x0i); + x0r = x3i + x1r; + x0i = x3r - x1i; + a[j3] = wk1r * (x0i - x0r); + a[j3 + 1] = wk1r * (x0i + x0r); + } + k1 = 0; + m2 = m << 1; + for(k = m2; k < n; k += m2){ + k1 += 2; + k2 = k1 << 1; + wk2r = w[k1]; + wk2i = w[k1 + 1]; + wk1r = w[k2]; + wk1i = w[k2 + 1]; + wk3r = wk1r - 2 * wk2i * wk1i; + wk3i = 2 * wk2i * wk1r - wk1i; + for(j = k; j < l + k; j += 2){ + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j2] = wk2r * x0r - wk2i * x0i; + a[j2 + 1] = wk2r * x0i + wk2i * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * x0r - wk1i * x0i; + a[j1 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r - wk3i * x0i; + a[j3 + 1] = wk3r * x0i + wk3i * x0r; + } + wk1r = w[k2 + 2]; + wk1i = w[k2 + 3]; + wk3r = wk1r - 2 * wk2r * wk1i; + wk3i = 2 * wk2r * wk1r - wk1i; + for(j = k + m; j < l + (k + m); j += 2){ + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j2] = -wk2i * x0r - wk2r * x0i; + a[j2 + 1] = -wk2i * x0i + wk2r * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * x0r - wk1i * x0i; + a[j1 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r - wk3i * x0i; + a[j3 + 1] = wk3r * x0i + wk3i * x0r; + } + } +} +//--------------------------------------------------------------------------- +void CFFT::Calc(double * InBuf, int size, double gain, int stg, int* OutBuf) +{ + if( m_FFTDIS ) return; // for math error + m_FFTDIS++; + int i; + + if( stg > 1 ){ + m_StgSW = TRUE; + } + else { + m_StgSW = FALSE; + } + m_StgSize = stg; + if( stg ){ + m_StgScale = 1.0 / double(m_StgSize); + m_StgK = 1.0 - m_StgScale; + } + else { + m_StgScale = 1.0; + m_StgK = 0.0; + } + double *dp = InBuf; + for(i=0; i < FFT_SIZE; i++, dp++){ + if( *dp > 32768.0 ){ + *dp = 32768.0; + } + else if( *dp < -32768.0 ){ + *dp = -32768.0; + } + (*dp) *= m_tWindow[i]; + } + bitrv2(FFT_SIZE, m_Work + 2, InBuf); + cftfsub(FFT_SIZE, InBuf, m_tSinCos); + rftfsub(FFT_SIZE, InBuf, m_Work[1], m_tSinCos + m_Work[0]); + for( i = 0, dp = pStgBuf; i <= size; i++, dp+=2 ){ + OutBuf[i] = int((gain * (*dp))); + } + m_FFTDIS--; +} +//--------------------------------------------------------------------------- +void CFFT::rftfsub(int n, double *a, int nc, double *c) +{ + int j, k, kk, ks, m; + double wkr, wki, xr, xi, yr, yi; + double d; + + ks = (nc << 2) / n; + kk = 0; + m = n >> 1; + j = n - 2; + if(m_StgSW){ + for (k = 2; k <= m; k += 2, j -= 2 ){ + kk += ks; + wkr = 0.5 - c[nc - kk]; + wki = c[kk]; + xr = a[k] - a[j]; + xi = a[k + 1] + a[j + 1]; + yr = wkr * xr - wki * xi; + yi = wkr * xi + wki * xr; + a[k] -= yr; + xi = a[k]*a[k]; + a[k+1] -= yi; + xi += ( a[k+1]*a[k+1]); + a[j] += yr; + xr = a[j]*a[j]; + a[j+1] -= yi; + xr += (a[j+1]*a[j+1]); + if( xi <= 0 ) xi = 0.0001; + if( xi >= 1e38 ) xi = 1e38; + if( xr <= 0 ) xr = 0.0001; + if( xr >= 1e38 ) xr = 1e38; + if( FFT_SIZE == 1024 ){ + xi *= 4; + xr *= 4; + } + switch(sys.m_FFTGain){ + case 0: + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*(log10(xi+LOGADJ) + SCALEADJ_1); + pStgBuf[j] = m_StgK*pStgBuf[j] + m_StgScale*(log10(xr+LOGADJ) + SCALEADJ_1); + break; + case 1: + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*(log10(xi+LOGADJ) + SCALEADJ_2); + pStgBuf[j] = m_StgK*pStgBuf[j] + m_StgScale*(log10(xr+LOGADJ) + SCALEADJ_2); + break; + case 2: + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*(log10(xi+LOGADJ) + SCALEADJ_3); + pStgBuf[j] = m_StgK*pStgBuf[j] + m_StgScale*(log10(xr+LOGADJ) + SCALEADJ_3); + break; + case 3: + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*(log10(xi+LOGADJ) + SCALEADJ_4); + pStgBuf[j] = m_StgK*pStgBuf[j] + m_StgScale*(log10(xr+LOGADJ) + SCALEADJ_4); + break; + case 4: + d = xi * 32e-10; + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*d; + d = xr * 32e-10; + pStgBuf[j] = m_StgK*pStgBuf[j] + d; + break; + case 5: + d = xi * 96e-10; + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*d; + d = xr * 96e-10; + pStgBuf[j] = m_StgK*pStgBuf[j] + d; + break; + case 6: + d = xi * 256e-10; + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*d; + d = xr * 256e-10; + pStgBuf[j] = m_StgK*pStgBuf[j] + d; + break; + default: + d = xi * 256e-10; + pStgBuf[k] = m_StgK*pStgBuf[k] + m_StgScale*d; + d = xr * 256e-10; + pStgBuf[j] = m_StgK*pStgBuf[j] + d; + break; + } + } + } + else { + for (k = 2; k <= m; k += 2, j -= 2 ){ + kk += ks; + wkr = 0.5 - c[nc - kk]; + wki = c[kk]; + xr = a[k] - a[j]; + xi = a[k + 1] + a[j + 1]; + yr = wkr * xr - wki * xi; + yi = wkr * xi + wki * xr; + a[k] -= yr; + xi = a[k]*a[k]; + a[k+1] -= yi; + xi += ( a[k+1]*a[k+1]); + a[j] += yr; + xr = a[j]*a[j]; + a[j+1] -= yi; + xr += (a[j+1]*a[j+1]); + if( xi <= 0 ) xi = 0.0001; + if( xi >= 1e38 ) xi = 1e38; + if( xr <= 0 ) xr = 0.0001; + if( xr >= 1e38 ) xr = 1e38; + if( FFT_SIZE == 1024 ){ + xi *= 4; + xr *= 4; + } + switch(sys.m_FFTGain){ + case 0: + pStgBuf[k] = log10(xi+LOGADJ)+SCALEADJ_1; + pStgBuf[j] = log10(xr+LOGADJ)+SCALEADJ_1; + break; + case 1: + pStgBuf[k] = log10(xi+LOGADJ)+SCALEADJ_2; + pStgBuf[j] = log10(xr+LOGADJ)+SCALEADJ_2; + break; + case 2: + pStgBuf[k] = log10(xi+LOGADJ)+SCALEADJ_3; + pStgBuf[j] = log10(xr+LOGADJ)+SCALEADJ_3; + break; + case 3: + pStgBuf[k] = log10(xi+LOGADJ)+SCALEADJ_4; + pStgBuf[j] = log10(xr+LOGADJ)+SCALEADJ_4; + break; + case 4: + pStgBuf[k] = xi * 32e-10; + pStgBuf[j] = xr * 32e-10; + break; + case 5: + pStgBuf[k] = xi * 96e-10; + pStgBuf[j] = xr * 96e-10; + break; + case 6: + pStgBuf[k] = xi * 256e-10; + pStgBuf[j] = xr * 256e-10; + break; + default: + pStgBuf[k] = xi * 256e-10; + pStgBuf[j] = xr * 256e-10; + break; + } + } + } + pStgBuf[FFT_SIZE/2] = pStgBuf[(FFT_SIZE/2) - 2]; +} + diff --git a/Fft.h b/Fft.h new file mode 100644 index 0000000..779635e --- /dev/null +++ b/Fft.h @@ -0,0 +1,68 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef FFT_H +#define FFT_H +//--------------------------------------------------------------------------- +#define FFT_BUFSIZE 2048 +#define SQRT_FFT_SIZE 46//sqrt(2048) + +class CFFT +{ +public: + CFFT(); + virtual ~CFFT(); + void InitFFT(void); + + int m_CollectFFT; + void CollectFFT(double *lp, int size); + void CalcFFT(int size, double gain, int stg); + void TrigFFT(void); + void ClearBuf(void){ + memset(m_fft, 0, sizeof(m_fft)); + memset(pStgBuf, 0, sizeof(double[FFT_BUFSIZE])); + TrigFFT(); + }; + int m_FFTDIS; + int m_fft[2048]; +private: + void Calc(double * InBuf, int size, double gain, int stg, int* OutBuf); + BOOL m_StgSW; + int m_StgSize; + double m_StgScale; + double m_StgK; + + int m_CollectFlag; + int m_CollectFFTCount; + double *m_CollectFFTBuf; + + double *m_tSinCos; + double *m_tWindow; + double *pStgBuf; + int *m_Work; + void makewt(int nw, int *ip, double *w); + void makect(int nc, int *ip, double *c); + void bitrv2(int n, int *ip, double *a); + void cftfsub(int n, double *a, double *w); + void rftfsub(int n, double *a, int nc, double *c); + void cft1st(int n, double *a, double *w); + void cftmdl(int n, int l, double *a, double *w); +}; + +#endif diff --git a/FreqDisp.cpp b/FreqDisp.cpp new file mode 100644 index 0000000..c24aee9 --- /dev/null +++ b/FreqDisp.cpp @@ -0,0 +1,205 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "FreqDisp.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TFreqDispDlg *FreqDispDlg; +//--------------------------------------------------------------------- +__fastcall TFreqDispDlg::TFreqDispDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + + m_H1 = NULL; + m_Tap1 = 0; + m_Over1 = 1; + m_H2 = NULL; + m_Tap2 = 0; + m_Over2 = 1; + m_Max = 0; + + pBitmap = new Graphics::TBitmap(); + pBitmap->Width = PaintBox->Width; + pBitmap->Height = PaintBox->Height; + if( Font->Charset != SHIFTJIS_CHARSET ){ + CancelBtn->Caption = "Close"; + BwBtn->Caption = "Width"; + Caption = "frequency characteristic"; + } +} +__fastcall TFreqDispDlg::~TFreqDispDlg() +{ + delete pBitmap; +} +//--------------------------------------------------------------------- +void __fastcall TFreqDispDlg::Execute(const double *H, int Tap, int Over) +{ + m_type = 0; + m_H1 = H; + m_Tap1 = Tap; + m_Over1 = Over; + m_Tap2 = 0; + ShowModal(); +} +//--------------------------------------------------------------------- +void __fastcall TFreqDispDlg::Execute(const double *H1, const double *H2, int Tap, int Over) +{ + m_type = 0; + m_H1 = H1; + m_Tap1 = Tap; + m_Over1 = Over; + m_H2 = H2; + m_Tap2 = Tap; + m_Over2 = Over; + ShowModal(); +} +//--------------------------------------------------------------------- +void __fastcall TFreqDispDlg::Execute(const double *H1, int Tap1, const double *H2, int Tap2, int Over) +{ + m_type = 4; + m_H1 = H1; + m_Tap1 = Tap1; + m_Over1 = Over; + m_H2 = H2; + m_Tap2 = Tap2; + m_Over2 = Over; + ShowModal(); +} +//--------------------------------------------------------------------- +void __fastcall TFreqDispDlg::Execute(double a10, double b11, double b12, double a20, double b21, double b22, int Over) +{ + m_type = 1; + m_Over1 = Over; + m_a10 = a10; + m_b11 = b11; + m_b12 = b12; + m_a20 = a20; + m_b21 = b21; + m_b22 = b22; + ShowModal(); +} +//--------------------------------------------------------------------- +void __fastcall TFreqDispDlg::Execute(CIIR *ip, int Over, double max) +{ + m_type = 2; + m_piir = ip; + m_Over1 = Over; + m_Max = max; + ShowModal(); +} +//--------------------------------------------------------------------- +void __fastcall TFreqDispDlg::Execute(const double *H, int Tap, int Over, double max) +{ + m_type = 3; + m_H1 = H; + m_Tap1 = Tap; + m_Over1 = Over; + m_Tap2 = 0; + m_Max = max; + ShowModal(); +} +//--------------------------------------------------------------------- +void __fastcall TFreqDispDlg::PaintBoxPaint(TObject *Sender) +{ + if( m_type == 0 ){ // FIR + if( Timer->Enabled ){ + memcpy(m_HT, m_H1, sizeof(double)*(m_Tap1+1)); + DrawGraph(pBitmap, m_HT, m_Tap1, m_Over1, m_Max, 1, clBlue); + if( m_Tap2 ){ + memcpy(m_HT, m_H2, sizeof(double)*(m_Tap2+1)); + DrawGraph(pBitmap, m_HT, m_Tap2, m_Over1, m_Max, 0, clRed); + } + } + else { + DrawGraph(pBitmap, m_H1, m_Tap1, m_Over1, m_Max, 1, clBlue); + if( m_Tap2 ){ + DrawGraph(pBitmap, m_H2, m_Tap2, m_Over2, m_Max, 0, clRed); + } + } + } + else if( m_type == 1 ){ // IIR Tank + DrawGraphIIR(pBitmap, m_a10, 0, 0, -m_b11, -m_b12, m_Over1, m_Max, 1, clBlue); + DrawGraphIIR(pBitmap, m_a20, 0, 0, -m_b21, -m_b22, m_Over1, m_Max, 0, clRed); + } + else if( m_type == 2 ){ // IIR +#if 1 + DrawGraphIIR(pBitmap, m_piir, m_Over1, m_Max, 1, clBlue); +#else + CIIR iir; + iir.MakeIIR(2600, SampFreq, 10, 0, 0); + m_Max = 6000.0; + DrawGraphIIR(pBitmap, &iir, 1, m_Max, 1, clBlue); +#endif + } + else if( m_type == 3 ){ // FIR-Avg + DrawGraph(pBitmap, m_H1, m_Tap1, m_Over1, m_Max, 1, clBlue); + } + else if( m_type == 4 ){ // two-FIR + DrawGraph2(pBitmap, m_H1, m_Tap1, m_H2, m_Tap2, m_Over1, m_Max, 1, clBlue); + } + PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap); +} +//--------------------------------------------------------------------------- +void __fastcall TFreqDispDlg::BwBtnClick(TObject *Sender) +{ + if( m_type >= 2 ){ + switch(m_Max){ + case 100: + m_Max = 200; + break; + case 200: + m_Max = 400; + break; + case 400: + m_Max = 800; + break; + case 800: + m_Max = 3000; + break; + default: + m_Max = 100; + break; + } + } + else { + switch(m_Max){ + case 3000: + m_Max = 4000; + break; + case 4000: + m_Max = 6000; + break; + case 6000: + m_Max = 2000; + break; + default: + m_Max = 3000; + break; + } + } + PaintBoxPaint(NULL); +} +//--------------------------------------------------------------------------- diff --git a/FreqDisp.dfm b/FreqDisp.dfm new file mode 100644 index 0000000000000000000000000000000000000000..6b7aaf955b702d63dfc798a4d9238fd2a1c3746b GIT binary patch literal 813 zcmZXS&u`N(6vrKh#A(y99VT&vKLDZKIW6hB28}i}5ko>6xQR(EJiALgR*p0$gg}#6 zj~qC2hC7_N@po|Kjs%X~cKo>5&$8e5``+jIR~w|g(cZmol*HYGeXz52%?2Qidpn)9 zSCW%1t)^X8_jOzn@r4@8-hGLg?2LEgCPQp`kwLOhjJaCf_wbx^;m zk6t`{^YfxOzj*uk{6i;XlyKQ6w3tZy#PZGgkmhn?&tRt~xV#lka9I(Fwvv9-OYcO< zqp-g_O7_yWxfV>6sFSfn%5!m+l9}}Ng;9k+TKY7=$Hd*7vw3-AF6yMdUytj7QP3s( zz>7sin_AJ;sYtSt5FV=HNZF1{%4L#a)tEaK1Hp-_Pr0`d(-~n^Ov;F76Zp8@*e{JY z0ZM~YDFttZm}i6qk{f2*P%|4^j_wp5xyzL6u6fy7V{;c@=AY)@{ktN^Y(%P4CL#1v zJRUZ%AppQlW6TM2^s4nCXyhR<>Wbr1-i|D1m(hYF2Q&5J--#uZ7mPTe28tBW36*;CZkQaWxprSzDTj$Y9o$74ov&x@J~Kf}zvX{kJO`FCw* MW?#)ek1bW|Z$`lZ@c;k- literal 0 HcmV?d00001 diff --git a/FreqDisp.h b/FreqDisp.h new file mode 100644 index 0000000..698479b --- /dev/null +++ b/FreqDisp.h @@ -0,0 +1,84 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef FreqDispH +#define FreqDispH +//---------------------------------------------------------------------------- +/* JA7UDE 0428 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +//---------------------------------------------------------------------------- +#include "fir.h" +//---------------------------------------------------------------------------- +class TFreqDispDlg : public TForm +{ +__published: + TButton *CancelBtn; + TPanel *Panel; + TPaintBox *PaintBox; + TTimer *Timer; + TButton *BwBtn; + void __fastcall PaintBoxPaint(TObject *Sender); + + void __fastcall BwBtnClick(TObject *Sender); +private: + Graphics::TBitmap *pBitmap; + + int m_type; + double m_a10, m_a20; + double m_b11, m_b12; + double m_b21, m_b22; + + CIIR *m_piir; + + const double *m_H1; + int m_Tap1; + int m_Over1; + const double *m_H2; + int m_Tap2; + int m_Over2; + + double m_HT[TAPMAX+1]; +public: + virtual __fastcall TFreqDispDlg(TComponent* AOwner); + __fastcall ~TFreqDispDlg(); + + void __fastcall Execute(const double *H, int Tap, int Over); + void __fastcall Execute(const double *H1, const double *H2, int Tap, int Over); + void __fastcall Execute(const double *H1, int Tap1, const double *H2, int Tap2, int Over); + void __fastcall Execute(double a10, double b11, double b12, double a20, double b21, double b22, int Over); + void __fastcall Execute(CIIR *ip, int Over, double max); + void __fastcall Execute(const double *H, int Tap, int Over, double max); + + int m_Max; +}; +//---------------------------------------------------------------------------- +//extern TFreqDispDlg *FreqDispDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/HISTORY.TXT b/HISTORY.TXT new file mode 100644 index 0000000..94d7519 --- /dev/null +++ b/HISTORY.TXT @@ -0,0 +1,230 @@ +MMTTY‚Ì•ÏX—š—ð + +[V1.00 2000-06-30] +‰‰ñŒöŠJ + +[V1.01 -> V1.10 2000-07-08] +ƒTƒEƒ“ƒhƒJ[ƒh‚̃oƒbƒtƒ@ƒTƒCƒYÝ’è‚ð’ljÁ +ƒ}ƒjƒ…ƒAƒ‹‚̈ꕔ‹LÚ˜R‚ê‚ðC³ +‘—M‰æ–ʂ̃TƒCƒY‚ðINIƒtƒ@ƒCƒ‹‚É‹L‰¯ +ƒƒO‹@”\‚ð’ljÁ +ˆê•”‚Ì256FƒrƒfƒIƒAƒ_ƒvƒ^‚ÅWaterFall‚ª³‚µ‚­•\ަ‚Å‚«‚È‚¢ƒoƒO‚ðC³ +‘O’uƒtƒBƒ‹ƒ^‚ð’ljÁ +Ý’è‰æ–ʂɃtƒBƒ‹ƒ^“Á«•\ަ‚̒ljÁ +ƒƒCƒ“‰æ–Ê‚ÉÏ•ªŠíiLPFj‚ÌÝ’èƒ{ƒbƒNƒX‚ð”z’u +WaterFall,ŽóM‰æ–Ê,‘—M‰æ–Ê‚ÌF‚ÌÝ’è‚ð’ljÁ +V‚µ‚¢ƒƒOƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“‚ðŽÀsŒã‚ÉŒŸõ‚ª‚Å‚«‚È‚­‚È‚éƒoƒO‚ðC³ +FSK‘—M‚̑ΉžiTnx JA7DHJj +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^“ü—Í•”‚É“K‰žƒtƒBƒ‹ƒ^iLMSj‚ð“ü‚ê‚ê‚邿‚¤‚É‚µ‚½ +FSK(TXD)o—͂̑—oƒrƒbƒg‚ª‹t‡‚ɂȂÁ‚Ä‚¢‚½ƒoƒO‚ðC³iTnx JA7DHJj +‚»‚Ì‘¼Aׂ©‚¢“_‚ÌC³‚Ǝ኱‚Ì‹@”\’ljÁ + +[V1.11 -> V1.20 2000-07-13] +PTT§Œäƒ|[ƒg‚ÉCOM5`COM8‚ð’ljÁ(Tnx JH3XDO) +ƒ}ƒNƒ‚¨‚æ‚Ñ’èŒ^ƒƒbƒZ[ƒW‚̕ϊ·Žq‚Éu%gv‚Æu%fv‚ð’ljÁ +QSOƒƒO‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚ւ̃GƒNƒXƒ|[ƒg‹@”\‚ð’ljÁ +QSOƒƒO‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚©‚ç‚̃Cƒ“ƒ|[ƒg‹@”\‚ð’ljÁ +FSK(TXD)‰^—pŽž‚Ì‘—ŽóØ‚è‘Ö‚¦‚̃oƒO‚ÌC³(Tnx JA1FQI) +•¶ŽšƒEƒCƒGƒgADiddleƒEƒGƒCƒg‚ð’ljÁ(Tnx JA1IQV) +•\ަƒƒjƒ…[‚ÉuŽóM‰æ–ʂ̃NƒŠƒAv‚ð’ljÁ(Tnx JG3LGD) +LMS“®ì‚̉ü‘P +V1.14‚Å”­¶‚µ‚½‚ ‚éðŒ‚Å‹N“®‚Å‚«‚È‚­‚È‚éƒoƒO‚ÌC³ +ƒ}ƒNƒƒ{ƒ^ƒ“‚̃Vƒ‡[ƒgƒJƒbƒgƒL[‚ÌŠ„‚è“–‚Ä(Tnx JA1IQV) +Ž©“®‚ÅŽóM‚É–ß‚éÛ‚Ì”÷–­‚ȃ^ƒCƒ~ƒ“ƒO‚ðC³ +LOG200ƒf[ƒ^ƒtƒ@ƒCƒ‹‚Æ‚Ì‘ŠŒÝ•ÏŠ·‚ð’ljÁ +‚w‚xƒXƒR[ƒv•\ަ‚ð’ljÁ(Tnx JA1IQV) +Žü”g”•Ù•ÊŠí‚̃fƒtƒHƒ‹ƒg‚ðFIRŒ^BPF‚©‚çIIRŒ^‹¤UŠí‚É•ÏX +XYƒXƒR[ƒvAƒ}[ƒNŽü”g”‚ð…•½‚É‚µ‚½(Tnx JA1IQV) +XYƒXƒR[ƒv•\ަ‚ð‰ü‘P +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÉƒŠƒ~ƒbƒ^ƒAƒ“ƒv‚ð’ljÁ(Tnx 7L1CUH, JA1IQV) +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÌAGC‹@”\‚ð”pŽ~ + +[V1.21 -> V1.30 2000-07-23] +ƒTƒEƒ“ƒh‚Ì‹L˜^‚ÆÄ¶‹@”\‚ð’ljÁiTnx 7L1CUHj +IIRŒ^‹¤UŠí‚ÌŽü”g”“Á«•\ަ‚ð’ljÁ +XY-Scope‚Ì•\ަƒTƒCƒY‚ð‘I‘ð‰Â”\‚É‚µ‚½ +LMS‚ÉInviŒë·M†o—Íj‚ð’ljÁ +ƒTƒEƒ“ƒh‚̘^‰¹EĶ‹@”\‚ð‹­‰» +ƒTƒEƒ“ƒhÄ¶Žž‚ɃTƒEƒ“ƒhƒJ[ƒh‚ÉM†‚ðo—Í‚·‚邿‚¤‚É‚µ‚½ +PLL•ûŽ®‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^‚̒ljÁ +ĶˆÊ’uÝ’è‰æ–Ê‚ð’ljÁ +•¶ŽšƒEƒCƒGƒgADiddleƒEƒGƒCƒg‚̃Xƒ‰ƒCƒh‚ðAŒ^ƒ{ƒŠƒ…[ƒ€‚É•ÏX +ƒIƒVƒƒXƒR[ƒv‰æ–Ê‚ÉuPlayvƒ{ƒ^ƒ“‚ð’ljÁ +MMTTY‚ÌM†ˆ—‚̉ðàudigital.txtv‚ð’ljÁ +DTR‚Ö‚Ì•„†ƒf[ƒ^o—Í‘I‘ð‚ð”pŽ~iŽ|‚­“­‚©‚È‚¢j +Turbo Hamlogƒf[ƒ^ƒtƒ@ƒCƒ‹‚Æ‚Ì‘ŠŒÝ•ÏŠ·‚ð’ljÁ +ƒVƒ‡[ƒgƒJƒbƒgƒL[‚̃JƒXƒ^ƒ}ƒCƒY‚ð’ljÁ(Tnx 7L1CUH) +ƒƒO‹@”\‚̎኱‚Ì‹­‰» +ƒ}ƒNƒ‚Ìæ“ª‚Æ––”ö‚̃Xƒy[ƒX‚ª‹L˜^‚Å‚«‚È‚¢ƒoƒO‚ÌC³(Tnx 7L1CUH) +Ý’è‰æ–Ê‚ÉSoundˆ—Priority‚Ì‘I‘ð‚ð’ljÁ(Tnx JH1SWD) +Priority‚̃fƒtƒHƒ‹ƒg‚ðuCriticalv¨uHighestv‚É•ÏX(Tnx JH1SWD) +Hamlog->MMTTY‚ÅMyRST‚̕ϊ·‚ÌT”²‚¯‚ðC³(Tnx JH1SWD) +‹N“®Žž‚̃TƒEƒ“ƒhƒJ[ƒhƒI[ƒvƒ“‚ÌƒŠƒgƒ‰ƒC‚ð’ljÁ(Tnx JA6VAG) +Rx-Stopƒrƒbƒg‚̃fƒtƒHƒ‹ƒg‚ð1.42bit -> 1bit‚É•ÏX +Hamlog->MMTTY•ÏŠ·‚̈ꕔ‚̃oƒO‚ðC³(Tnx JH1SWD) +ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹•\ަ‚ÌOn/Off‚̒ljÁ +ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹ƒTƒCƒY‚Ì‘I‘ð‚ð’ljÁ +‚»‚Ì‘¼×‚©‚¢“_‚̉ü‘P + +[V1.31 -> V1.40 2000-07-30] +ƒƒOƒtƒ@ƒCƒ‹‚̕ϊ·“®ì‚ð‰ü‘P(Tnx JH1SWD) +–â‚¢‡‚킹ƒƒbƒZ[ƒW‚ð‰ü‘P(Tnx JH1SWD) +ƒvƒƒOƒ‰ƒ€ƒƒjƒ…[‚̒ljÁ(Tnx JH1SWD, JA1IQV) +ŠO•”ƒvƒƒOƒ‰ƒ€ŽÀsŽž‚̃JƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠ‚ðÝ’è(Tnx JH1SWD) +ƒXƒPƒ‹ƒ`“®ì‚̎኱‚̉ü‘P +‰pŒêƒ‚[ƒh‚ð’ljÁ(Tnx HL1AQ) +’ᑬCPU‚Ì‚½‚ß‚ÌLocalEchoƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +ƒ}ƒNƒƒeƒLƒXƒg‚ð‘—M‰æ–ÊŒo—R‚Åo—Í‚·‚éƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Tnx JA1IQV) +ˆê”Ôʼn‚̃ƒOƒf[ƒ^‹L˜^‚ŃGƒ‰[‚ɂȂéƒoƒO‚ðC³ +ƒƒO‚ÌUTC•\ަ(TimeZone‘I‘ð)‚ð’ljÁ +‰‰ñ‹N“®Žž‚ÌŒ¾Œê–â‚¢‡‚킹‚ð”pŽ~iŽ©“®”»’è‚É•ÏXj +XYScope‚̉ñ“]•ûŒü‚ð‹t‚É‚·‚éƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Tnx JA9AVA) +ƒXƒPƒ‹ƒ`“®ì‚̉ü‘P +WaitDiddleOutƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +Limitƒ{ƒ^ƒ“‚ð”pŽ~ +NETƒ{ƒ^ƒ“‚̒ljÁ +DXƒ{ƒ^ƒ“‚̃fƒtƒHƒ‹ƒgƒQƒCƒ“‚ð100‚É•ÏX +ƒ}ƒEƒX‚Å‚ÌMyRSTŽæ‚肱‚݂ɃRƒ“ƒeƒXƒgƒ‚[ƒh‚ð’ljÁ +Control PanelƒTƒCƒY‚ÉLarge‚ð’ljÁ(Tnx JE8LWZ) +SQƒŒƒxƒ‹•\ަ‚ðSQ-OFFŽž‚É‚à“®ì‚·‚邿‚¤‚É‚µ‚½ +AFC‚ÌShift•ÏXƒAƒ‹ƒSƒŠƒYƒ€‚ÉHAMƒ‚[ƒh‚ð’ljÁ +NETƒ{ƒ^ƒ“‚Ì“®ì•s‹ï‡‚ðC³ +Šeƒ}ƒNƒƒ{ƒ^ƒ“‚Ì•ÒW‚ɃVƒ‡[ƒgƒJƒbƒgƒL[‚ðŠ„‚è“–‚ĉ”\‚É‚µ‚½(Tnx JA1IQV) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Éu%sv‚ð’ljÁ(Tnx JH3XDO) +‚»‚Ì‘¼×‚©‚¢“_‚̉ü‘P + +[V1.41 -> V1.50 2000-08-08] +Ï•ªŠí‚ÉIIR-LPF‚ð’ljÁ +Ï•ªŠí‚Ì“Á«Šm”Fƒ{ƒ^ƒ“‚ð’ljÁ +XYScope•\ަ‚̈—•iŽ¿‚Ì‘I‘ð‚ð’ljÁ +XYScope•\ަ‚ÌƒŠƒ~ƒbƒ^[‚Å‚ÌˆÊ‘Š˜c‚݂ɂæ‚é‰e‹¿‚ðŠÉ˜a +ƒŠƒ~ƒbƒ^[‚ÌuOver Samplingv‚Ì‘I‘ð‚ð’ljÁ(ŽQƨDigital.txt) +ƒTƒEƒ“ƒhƒJ[ƒh‚̃NƒƒbƒN•â³’l‚ðÝ’è‰Â”\‚É‚µ‚½(Tnx JA1WSK) +ƒNƒƒbƒN•ⳂÅJJY‚Ì‚P•bƒ`ƒbƒN‰¹‚ð—˜—p‰Â”\‚É‚µ‚½(Tnx JA1WSK) +FSK‘—M(TXD)Žž‚ÉUART‚̃^ƒCƒ~ƒ“ƒO‚Å‘—M‚Å‚«‚é‘I‘ð‚ð’ljÁ +Diddle ONŽž‚ÉŽóM‚Ö‚ÌØ‚è‘Ö‚¦‚ª’x‚ê‚Ä‚¢‚½“_‚ð‰ü‘P +Diddle‚ÌuWaitTimerv‚ð’ljÁ(Tnx JA1IQV) +LTR/FIGƒR[ƒh‚Ì‹­§o—Í‚ð’ljÁ(Tnx JA1IQV) +’èŒ^ƒƒbƒZ[ƒWŽQƃL[ƒ[ƒh‚Éu^v‚ð’ljÁ(Tnx JA1IQV) +’ᑬCPUŽž‚É–â‚¢‡‚킹ƒƒbƒZ[ƒW•\ަ‚ª’x‚ê‚é‚̂𭂵‰ü‘P +‚»‚Ì‘¼×‚©‚¢“_‚̉ü‘P + +[V1.51 2000-08-08] +Pentium75MHz‚ł̑€ì‰ž“š‚ð­‚µ‰ü‘P +•s—vi–³ˆÓ–¡j‚ÈÝ’èƒXƒCƒbƒ`‚Ì”pŽ~ +ƒTƒXƒyƒ“ƒhŽž‚ÌCPUŽžŠÔ‚ðX‚ɉð•ú +ƒ}ƒjƒ…ƒAƒ‹i–{‘j‚Ɉ—ŒyŒ¸‰»‚̈’u‚ð‹LÚ + +[V1.52 2000-08-10] +ƒL[‘€ì‚É‚æ‚éƒVƒtƒg••ÏX‹@”\‚ð’ljÁ(Tnx JA3KWZ) +AFC‚̃Aƒ‹ƒSƒŠƒYƒ€‚ÉuFSKv‚ð’ljÁ(Tnx JA3KWZ) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Éu~vu[vu]v‚ð’ljÁ +‘—MØ‚è‘Ö‚¦’¼Œã‚ÌDiddle‘—o‚ð0.25•bŠÔ‹ÖŽ~ +ׂ©‚¢“_‚ÌC³ + +[V1.53 2000-08-12] +AFC‚ÌHAM,FSK‚̃Aƒ‹ƒSƒŠƒYƒ€‚ɃVƒtƒg•220Hz/240Hz‚ð’ljÁ +FFT‚̃QƒCƒ“‘I‘ð‚ð’ljÁ +ׂ©‚¢“_‚ÌC³ + +[V1.54 2000-08-13] +uCtrl+BSvƒL[‚Å–¢‘—M‚Ì1s‚ðÁ‹Ž‚Å‚«‚邿‚¤‚É‚µ‚½(Tnx JA1IQV) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Ìæ“ª‚É‹Lq‚·‚éu#v‚ð’ljÁ(JH8WIG) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Éu%Ev‚ð’ljÁ(Tnx JA1IQV) +‘—M‰æ–ʂł̃L[ƒ[ƒhŽQÆ“®ì‚Éu‘¦Žž•ÏŠ·v‚ð’ljÁ(Tnx JG1GGU) + +[V1.55 2000-08-15] +Diddle‚̃fƒtƒHƒ‹ƒg‚ðuNONEv‚©‚çuLTRv‚É•ÏX(Tnx K6STI) +uDisable Revvi‘—MŽž‚ÉRev‚𖳌ø‚É‚·‚éj‚ð’ljÁ(Tnx W6/G0AZT) +’èŒ^ƒƒbƒZ[ƒW‚̃hƒƒbƒvƒŠƒXƒg‚Ì•\ަ”‚ð‚P‚U‚É‘‚₵‚½(Tnx JE4CIL) + +[V1.56 2000-08-20] +MMTTY.TXT“à‚ÌDsubƒsƒ“”Ô†‚ÌŒë‚è‚ðC³(Tnx MMTTY-Gropu) +ƒ}[ƒNŽü”g”‚̉ºŒÀ‚ð300Hz‚É•ÏX(Tnx MMTTY-Group) +uŽóM‰æ–ʂ̃NƒŠƒAv‚ɃVƒ‡[ƒgƒJƒbƒg‚ð’è‹`‚Å‚«‚邿‚¤‚É‚µ‚½(Tnx MMTTY-Group) +uESCv‚ðƒVƒ‡[ƒgƒJƒbƒgƒL[‚ÌƒŠƒXƒg‚ɒljÁ(Tnx MMTTY-Group) +ADIFƒtƒ@ƒCƒ‹‚ւ̃GƒNƒXƒ|[ƒg‚ð’ljÁ(Tnx JA5HRE, MMTTY-Group) +ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚ðUTC•\ަ‚Å‚«‚邿‚¤‚É‚µ‚½(Tnx MMTTY-Group) +QSOƒf[ƒ^•\ަ‚ÅUTC•\ަ‚Å‚«‚È‚©‚Á‚½ƒoƒO‚ðC³(Tnx MMTTY-Group) +599ƒ{ƒ^ƒ“‚ð”pŽ~‚µ‘ã‚í‚è‚Ƀoƒ“ƒhƒ{ƒbƒNƒX‚ð”z’u + +[V1.57 2000-08-24] +ƒR[ƒ‹ƒTƒCƒ“ƒNƒŠƒbƒNŽž‚É‘¦ŒŸõ‚·‚邿‚¤‚É•ÏX(Tnx MMTTY-Group) +ƒ[ƒh’PˆÊ‚ł̕¶Žš‚Ì‘—M‚ð’ljÁ(Tnx MMTTY-Group) +ƒRƒeƒ“ƒXƒg‚̃‰ƒ“ƒjƒ“ƒOƒ‚[ƒh‚ÆS&Pƒ‚[ƒh‚ð’ljÁ(Tnx MMTTY-Group) +‰pŒê”Å—p‚ÉSetup Helpƒƒjƒ…[‚ÆHTML Help•\ަ‹@”\‚ð’ljÁ(Tnx MMTTY-Group) + +[V1.58 2000-09-07] +‰pŒê”Å—p‚ÉWindows Help‚̃AƒNƒZƒX‹@”\‚ð’ljÁ(Tnx KX2A) +ƒ}ƒNƒƒL[ƒ[ƒh‚Éu%Dv‚Æu%Tv‚ð’ljÁ(Tnx MMTTY-Group) +ƒ}ƒNƒƒL[ƒ[ƒh‚Ìu~v‚Æu_v‚Ì“®ì‚ð‰ü‘P(Tnx MMTTY-Group) +DXƒ{ƒ^ƒ“‚ð휂µATCƒ{ƒ^ƒ“‚ð’ljÁ +’èŒ^ƒƒbƒZ[ƒWŽQƃL[ƒ[ƒh‚Éu#v‚ð’ljÁ(Tnx MMTTY-Group) + +[V1.59 2000-10-15] +‘¦Žž•ÏŠ·Žž‚Å‚àu%Fv‚Æu%Lv‚Íí‚É‘—MŽž‚ɕϊ·‚·‚邿‚¤‚ɉü‘P(Tnx JA1IQV) +“ú–{Œê”Å‚ÉRTTY BASICS‚̃wƒ‹ƒvƒ|ƒCƒ“ƒ^‚ð’ljÁiTnx W7TI, JA7UDEj +ƒ}ƒEƒX‚ł̎æ‚肱‚Ý‚ÉCQ/RJƒ‚[ƒh‚ð’ljÁiTnx JA1IQV, K5YGj +ƒRƒ“ƒeƒXƒgƒ‚[ƒhŽž‚̃}ƒEƒX‚ł̎æ‚肱‚Ý“®ì‚̉ü‘PiTnx JA1IQVj +Hamlog‚Ƃ̕ϊ·‚Ń‚[ƒh‚ð’è‹`‰Â”\‚É‚µ‚½iTnx JE4CIL, 7L1CUHj +ADIF‚Ö‚ÌRSTo—͂̃fƒtƒHƒ‹ƒg“®ì‚ð•ÏXiTnx MMTTY-Groupj +TNC–Í‹[ƒ‚[ƒh‚ð’ljÁ +ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‘—M‚Ì•¶Žš”§ŒÀ‚ð‚È‚­‚µ‚½iTnx MMTTY-Groupj +ƒŠƒ‚[ƒgƒ‚[ƒh‚ð’ljÁiTnx K4CYj +ŽžŽæ“¾‚ɃIƒtƒZƒbƒg‚ðÝ’è‚Å‚«‚邿‚¤‚É‚µ‚½iTnx JR3KFX) +ƒEƒCƒ“ƒhƒEƒTƒCƒY‚ƈʒu‚ðƒIƒvƒVƒ‡ƒ“‚Å‹L‰¯‰Â”\‚É‚µ‚½iTnx MMTTY-Groupj +ƒ}ƒNƒƒ{ƒ^ƒ“‚ÉF‚ð’è‹`‰Â”\‚É‚µ‚½iTnx MMTTY-Groupj +TXƒ{ƒ^ƒ“‘€ìŽž‚ÉŽ©“®‰üs‚ðo—͂ł«‚邿‚¤‚É‚µ‚½iTnx JH1BIHj +ƒ}ƒNƒƒ{ƒ^ƒ“(16ŒÂ)•\ަ‚ðON/OFF‰Â”\‚É‚µ‚½ +ƒƒCƒ“‰æ–Ê‚©‚ç'BW'‚ðƒNƒŠƒbƒN‚µ‚ÄBaud‚ð‘€ì‰Â”\‚É‚µ‚½iTnx MMTTY-Groupj +ƒTƒEƒ“ƒhƒJ[ƒh‚ÌID”Ô†‚ðÝ’è‚Å‚«‚邿‚¤‚É‚µ‚½iTnx MMTTY-Groupj +“ú•t‚Ì•\Œ»‚ð‘I‘ð‚Å‚«‚邿‚¤‚É‚µ‚½iTnx MMTTY-Groupj +PTT§Œä‚ÉRadioCommand‚ð’ljÁiTnx KB2EOQ, JA1WSK, MMTTY-Groupj +ƒ}ƒNƒƒ{ƒ^ƒ“(16ŒÂ)‚ÉƒŠƒs[ƒg‹@”\‚ð’ljÁiTnx MMTTY-Groupj +TXƒ{ƒ^ƒ“‚ÌŽ©“®‰üsݒ肪INIƒtƒ@ƒCƒ‹‚ɃZ[ƒu‚Å‚«‚È‚¢ƒoƒO‚ðC³iTnx JA1IQVj +ƒTƒEƒ“ƒhƒJ[ƒh‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð•ÏX‰Â”\‚É‚µ‚½ +LMS‚Ì‘ã‚í‚è‚Ƀmƒbƒ`ƒtƒBƒ‹ƒ^‚ð‘I‘ð‚Å‚«‚邿‚¤‚É‚µ‚½ +ƒ}[ƒNŽü”g”‚̃hƒƒbƒvƒŠƒXƒg‚É1275Hz‚ð’ljÁ(Tnx JA1ADN) +'%D'ƒ}ƒNƒ‚Ìo—Í‘Ž®‚ð“ú•tŒ`Ž®‚Å•ÏX‰Â”\‚É‚µ‚½ +ƒ}ƒNƒƒ{ƒ^ƒ“‚̉¡‚P—ñ•À‚Ñ•\ަ‚ð’ljÁ(Tnx MMTTY Group) +FSK‚Ìo—̓^ƒCƒ~ƒ“ƒO‚ð‰ü‘P +‚Q‚‚̃mƒbƒ`Žü”g”‚ðŽg—p‚Å‚«‚邿‚¤‚É‚µ‚½ +ƒƒO‚̃eƒLƒXƒgƒCƒ“ƒ|[ƒg‚̃oƒO‚ÌC³(Tnx MMTTY Group) +YYYYŒ`Ž®‚̃oƒO‚ÌC³(Tnx MMTTY Group) + +[V1.60 2000-12-17] +ƒL[ƒ{[ƒh‚̃[ƒhƒ‰ƒbƒv‹@”\‚ð’ljÁ(Tnx JH1BIH) +ƒŠƒ‚[ƒgƒ‚[ƒh‚̉ü‘P(Tnx K4CY, MMTTY group) +ƒ}ƒNƒ’è‹`‰æ–Ê‚ÉuCommandsvƒ{ƒ^ƒ“‚ð’ljÁ(Tnx MMTTY group) +ŽóM‰æ–ʂ̑—M•¶Žš‚ÉF‚ð’è‹`‰Â”\‚É‚µ‚½(Tnx MMTTY group) +ADIFƒtƒ@ƒCƒ‹‚̃Cƒ“ƒ|[ƒg‚ð’ljÁ(Tnx MMTTY-Group) +USB-Comƒ|[ƒg‘Îô‚ÅFSK-TXD‚̈—•û–@‚Ì‘I‘ð‚ð’ljÁ(Tnx KD6AZN, JA7UDE, MMTTY-Group) +OnQSO,OffQSO,Capture‚̃Vƒ‡[ƒgƒJƒbƒg’è‹`‚̒ljÁ(Tnx JA1WSK, MMTTY-Group) +ƒ}ƒNƒƒL[ƒ[ƒh‚Éu%Mvu%tv‚ð’ljÁ(Tnx MMTTY-Group) +•¶ŽšƒtƒHƒ“ƒg‚ɃXƒ^ƒCƒ‹‚ð“K—p(Tnx MMTTY-Group) +‰pŒêƒ‚[ƒhŽž‚ÉJCC/JCG‰æ–Ê‚ÌQTH‚ð‰pŒê‚Å•\‹L‚·‚é(Tnx MMTTY-Group) +FFTƒEƒCƒ“ƒhƒEã‚̃mƒbƒ`Žü”g”ˆÊ’u‚Ƀ}[ƒJ[‚ð•\ަ(Tnx MMTTY-Group) +RadioCommand‚ÉVFOƒ|[ƒŠƒ“ƒO‹@”\‚ð’ljÁ(Tnx JA1WSK, KX2A, MMTTY-Group) +ƒXƒeƒŒƒIƒ‚[ƒh‚ŃTƒEƒ“ƒhƒJ[ƒh‚ðˆµ‚¤ƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Tnx MMTTY-Group) + +[V1.61 2001-01-26] +ŽžƒIƒtƒZƒbƒg‚É•ª‚ð’ljÁiTnx MMTTY-Groupj +ƒŠƒ‚[ƒgƒ‚[ƒh‚̉ü‘PiTnx K4CY, Zakanaka-Groupj +DSP•”•ª‚̈—‘¬“x‚̉ü‘P +WindowsNT/2000‚ł̃ƒbƒN‚Ì–â‘è‚ð‰ðŒˆiTnx MMTTY-Groupj +‘—MŽž‚ÌuAlways fix shiftvƒIƒvƒVƒ‡ƒ“‚ð’ljÁiTnx K4CYj +VFOƒ|[ƒŠƒ“ƒO‚ÉKenwood‚ð’ljÁiTnx MMTTY-Groupj +ƒvƒƒtƒ@ƒCƒ‹ƒƒjƒ…[‚̒ljÁ +ƒNƒƒbƒN’²®‰æ–ʂ̑€ì‰ü‘P +TNCƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚ÉuBaudot modemv‚ð’ljÁ +ŽžƒIƒtƒZƒbƒg‚Éu‰ÄŽžŠÔ’²®‚Ì–³Ž‹v‚ð’ljÁiTnx K4CYj +ƒƒO‚̃GƒNƒXƒ|[ƒg‚ÉuCabrillo filev‚ð’ljÁiTnx W6/G0AZT, MMTTY-Groupj + +[V1.62 2001-09-22] +•œ’²Ší‚ÌƒŠƒ~ƒbƒ^‚ÉAGCƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +ƒŠƒ‚[ƒgƒ‚[ƒh‚̉ü‘P (Tnx to K4CY, JK1IQK and MMTTY group) +VFOƒ|[ƒŠƒ“ƒO‚ÉFT1000D‚ð’ljÁ(Tnx to MMTTY group) +VFOƒ|[ƒŠƒ“ƒO‚ÉFT920‚ð’ljÁ(Tnx to MMTTY group) +Turbo Hamlog‚Æ‚ÌƒŠƒAƒ‹ƒ^ƒCƒ€ƒŠƒ“ƒN‚ð’ljÁ(Tnx to JG1MOU) +‚»‚Ì‘¼Aׂ©‚¢ƒoƒO‚ÌC³‚Ɖü‘P + \ No newline at end of file diff --git a/Hamlog5.cpp b/Hamlog5.cpp new file mode 100644 index 0000000..36a8c3c --- /dev/null +++ b/Hamlog5.cpp @@ -0,0 +1,632 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ComLib.h" +#include "LogFile.h" +#include "Hamlog5.h" +#include "LogConv.h" +//-------------------------------------------- +const LPCSTR g_Hamlog5Key[]={ + "CALLS", "IGN", "DATE", "TIME", "CODE", "GL", "QSL", "FLAG", "HIS", "MY", + "FREQ", "MODE", "NAME", "QTH", "RMK1", "RMK2", NULL +}; +const BYTE g_Hamlog5Len[]={ + 8, 12, 4, 2, 6, 6, 3, 2, 3, 3, + 7, 4, 12, 28, 54, 54, 0 +}; +//-------------------------------------------- +void __fastcall GetHamlog5FieldsLen(AnsiString &as) +{ + as = ""; + for( int i = 8; i < 15; i++ ){ + if( i > 8 ) as += ","; + as += Log.m_LogSet.m_Hamlog5Len[i]; + } +} +//-------------------------------------------- +void __fastcall SetHamlog5FieldsLen(AnsiString &as) +{ + LPSTR pBF = StrDupe(as.c_str()); + LPSTR p, t; + p = pBF; + for( int i = 8; i < 15; i++ ){ + p = StrDlm(t, p); + Log.m_LogSet.m_Hamlog5Len[i] = BYTE(atoin(t, -1)); + } + delete[] pBF; +} +//-------------------------------------------- +//ƒRƒ“ƒXƒgƒ‰ƒNƒ^ +CHamlog5::CHamlog5() +{ + m_fCreate = FALSE; + m_RecMax = 0; // ƒŒƒR[ƒh” + m_FilMax = 0; // ƒtƒB[ƒ‹ƒh” + m_RecWidth = 0; // ƒŒƒR[ƒh‚Ì• + m_FilOff = 0; // ƒwƒbƒ_ƒIƒtƒZƒbƒg + m_bp = NULL; + m_OpenFlag = FALSE; + m_WriteFlag = FALSE; // ‘‚«ž‚݃tƒ‰ƒO +} + +//-------------------------------------------- +//ƒfƒXƒgƒ‰ƒNƒ^ +CHamlog5::~CHamlog5() +{ + Close(); +} + +//-------------------------------------------- +//ƒwƒbƒ_ƒf[ƒ^ƒZƒbƒgƒAƒbƒv +BOOL CHamlog5::SetupHeader(void) +{ + if( fread(&m_Head, 1, sizeof(m_Head), m_fp)!=sizeof(m_Head) ){ + return FALSE; // ˆÙ‚È‚éƒtƒH[ƒ}ƒbƒg + } + + if( (m_Head.Type != 0x03)&&(m_Head.Type != 0x1a ) ) return FALSE; + + m_RecMax = m_Head.RecMax; + m_FilOff = m_Head.FilOff; + m_RecWidth = m_Head.RecWidth; + if( !m_FilOff ) return FALSE; + + hamlog5DBRHD slot; + ULONG fPos; + for( m_FilMax = 0; m_FilMax < HamlogDBMAX; m_FilMax++ ){ + fPos = (32L*m_FilMax)+32L; + if( fPos > ULONG(m_FilOff) ) break; + if( fread(&slot, 1, sizeof(slot), m_fp)!=sizeof(slot) ) break; + if( slot.Name[0] == 0x0d ) break; + slot.Name[10] = 0; + m_StrTable[m_FilMax] = slot.Name; + m_TypeTable[m_FilMax] = slot.Type; + m_LenTable[m_FilMax] = USHORT(slot.Len); + } + for( int i = 8; (i < 15) && (i < m_FilMax); i++ ){ + Log.m_LogSet.m_Hamlog5Len[i] = m_LenTable[i]; + } + +// if( (m_Head.Type == 0x1a) && !m_RecMax ){ +// m_RecMax = (m_fStatus.m_size - ULONG(m_FilOff)) / ULONG(m_RecWidth); +// } + + USHORT i; + USHORT Pos = 1; + for( i = 0; i < m_FilMax; i++ ){ + m_PosTable[i] = Pos; + Pos += m_LenTable[i]; + } + return TRUE; +} + +//-------------------------------------------- +//ƒwƒbƒ_ƒf[ƒ^ì¬ +BOOL CHamlog5::MakeHeader(const LPCSTR _NT[], const BYTE _LT[]) +{ + hamlog5DBRHD slot; + + memset(&m_Head, 0, sizeof(m_Head)); + fseek(m_fp, 0, SEEK_SET); + fwrite(&m_Head, 1, sizeof(m_Head), m_fp); + m_FilOff = sizeof(m_Head); + m_RecWidth = 1; + for( m_FilMax = 0; _LT[m_FilMax]; m_FilMax++ ){ + memset(&slot, 0, sizeof(slot)); + strcpy(slot.Name, _NT[m_FilMax]); + slot.Len = _LT[m_FilMax]; + slot.Type = 'C'; + fwrite(&slot, 1, sizeof(slot), m_fp); + m_PosTable[m_FilMax] = m_RecWidth; + m_RecWidth += USHORT(_LT[m_FilMax]); + m_FilOff += USHORT(sizeof(slot)); + m_StrTable[m_FilMax] = _NT[m_FilMax]; + m_TypeTable[m_FilMax] = 'C'; + m_LenTable[m_FilMax] = USHORT(_LT[m_FilMax]); + } + char Term = 0x0d; + fwrite(&Term, 1, 1, m_fp); + m_FilOff++; + m_Head.Type = 3; + SYSTEMTIME st; + ::GetLocalTime(&st); + m_Head.Year = BYTE(st.wYear % 100); + m_Head.Mon = BYTE(st.wMonth); + m_Head.Day = BYTE(st.wDay); + m_Head.RecMax = 0; + m_Head.FilOff = m_FilOff; + m_Head.RecWidth = m_RecWidth; + fseek(m_fp, 0, SEEK_SET); + fwrite(&m_Head, 1, sizeof(m_Head), m_fp); + return TRUE; +} + +//-------------------------------------------- +//ƒI[ƒvƒ“ +BOOL CHamlog5::Open(LPCSTR Name, BOOL fMsg) +{ + if( (m_OpenFlag == TRUE) ) Close(); + m_WriteFlag = FALSE; // ‘‚«ž‚݃tƒ‰ƒO + if( (m_fp = fopen(Name, "rb")) == NULL ){ + if( fMsg ) ErrorMB("%s‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", Name); + return FALSE; // ƒtƒ@ƒCƒ‹‚ªƒI[ƒvƒ“‚Å‚«‚È‚¢ + } + m_OpenFlag = TRUE; + m_fCreate = FALSE; + if( SetupHeader() == FALSE ){ + Close(); + if( fMsg ) ErrorMB("ƒtƒ@ƒCƒ‹ƒtƒH[ƒ}ƒbƒg‚ª”Fޝ‚Å‚«‚Ü‚¹‚ñ."); + return FALSE; + } + if( m_bp ) delete[] m_bp; + m_bp = new char[m_RecWidth]; + if( Seek(0) == FALSE ){ + Close(); + if( fMsg ) ErrorMB("ƒf[ƒ^[ƒŒƒR[ƒh‚ª‘¶Ý‚µ‚Ü‚¹‚ñ."); + return FALSE; + } + return TRUE; +} + +//-------------------------------------------- +//ƒI[ƒvƒ“ +BOOL CHamlog5::Create(LPCSTR Name) +{ + if( (m_OpenFlag == TRUE) ) Close(); + m_WriteFlag = FALSE; // ‘‚«ž‚݃tƒ‰ƒO + if( (m_fp = fopen(Name, "wb")) == NULL ){ + ErrorMB("%s‚ð쬂ł«‚Ü‚¹‚ñ.", Name); + return FALSE; // ƒtƒ@ƒCƒ‹‚ªƒI[ƒvƒ“‚Å‚«‚È‚¢ + } + m_OpenFlag = TRUE; + m_fCreate = TRUE; + if( MakeHeader(g_Hamlog5Key, Log.m_LogSet.m_Hamlog5Len) == FALSE ){ + Close(); + ErrorMB("%s‚ð쬂ł«‚Ü‚¹‚ñ.", Name); + return FALSE; + } + if( m_bp ) delete[] m_bp; + m_bp = new char[m_RecWidth]; + return TRUE; +} + +//-------------------------------------------- +//ƒNƒ[ƒY +void CHamlog5::Close(void) +{ + if( m_OpenFlag == TRUE ){ + Update(); + if( m_RecMax != m_Head.RecMax ){ // ƒf[ƒ^‚ª’ljÁ‚³‚ê‚Ä‚¢‚é + m_Head.RecMax = m_RecMax; + fseek(m_fp, 0, SEEK_SET); + fwrite(&m_Head, 1, sizeof(m_Head), m_fp); + } + int r = fclose(m_fp); + m_fp = NULL; + if( r && m_fCreate ){ + ErrorMB("ƒtƒ@ƒCƒ‹‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½."); + } + m_OpenFlag = FALSE; + } + if( m_bp != NULL ){ + delete[] m_bp; + m_bp = NULL; + } +} + +//-------------------------------------------- +//ƒŒƒR[ƒhƒV[ƒN +BOOL CHamlog5::Seek(ULONG Index) +{ + if( m_OpenFlag == FALSE ) return FALSE; + if( Update() == FALSE ) return FALSE; + m_Index = Index; + m_Pos = (Index * ULONG(m_RecWidth)) + ULONG(m_FilOff); + fseek(m_fp, m_Pos, SEEK_SET); + if( Index < m_RecMax ){ + if( fread(m_bp, 1, m_RecWidth, m_fp) != ULONG(m_RecWidth) ){ + return FALSE; + } + } + else { + memset(m_bp, ' ', m_RecWidth); + } + return TRUE; +} + +//-------------------------------------------- +//ƒ}[ƒN‚̃`ƒFƒbƒN +BOOL CHamlog5::IsData(void) +{ + return (*m_bp == ' ') ? TRUE : FALSE; +} + +//-------------------------------------------- +//ƒf[ƒ^‚̓ǂݞ‚Ý +BOOL CHamlog5::GetData(USHORT SubIndex, AnsiString &cs) +{ + char bf[1024]; + + if( SubIndex >= m_FilMax ) return FALSE; + + int len = m_LenTable[SubIndex]; + if( len >= 1023 ) len = 1023; + StrCopy(bf, m_bp + m_PosTable[SubIndex], len); + cs = bf; + return TRUE; +} +//-------------------------------------------- +//ƒf[ƒ^‚̓ǂݞ‚Ý +BOOL CHamlog5::GetData(USHORT SubIndex, LPSTR pStore) +{ + if( SubIndex >= m_FilMax ) return FALSE; + + int len = m_LenTable[SubIndex]; + if( len >= 1023 ) len = 1023; + StrCopy(pStore, m_bp + m_PosTable[SubIndex], len); + return TRUE; +} + +//-------------------------------------------- +//ƒf[ƒ^‚̓ǂݞ‚Ý +int CHamlog5::GetData(USHORT SubIndex, LPBYTE pData, int len) +{ + if( SubIndex >= m_FilMax ) return 0; + + int rlen = m_LenTable[SubIndex]; + if( rlen >= 1023 ) rlen = 1023; + if( rlen > len ) rlen = len; + memcpy(pData, m_bp + m_PosTable[SubIndex], rlen); + return rlen; +} + +//-------------------------------------------- +//ƒf[ƒ^‚Ì‘‚«ž‚Ýiƒoƒbƒtƒ@‚ðXV‚·‚é‚Ì‚Ýj +BOOL CHamlog5::SetData(USHORT SubIndex, LPCSTR p) +{ + if( SubIndex >= m_FilMax ) return FALSE; + + int len = m_LenTable[SubIndex]; + LPSTR t; + int i; + for( i = 0, t = m_bp + m_PosTable[SubIndex]; i < len; i++, t++ ){ + if( *p ){ + *t = *p++; + } + else { + *t = ' '; + } + } + m_WriteFlag = TRUE; + return TRUE; +} +//-------------------------------------------- +//ƒf[ƒ^‚Ì‘‚«ž‚Ýiƒoƒbƒtƒ@‚ðXV‚·‚é‚Ì‚Ýj +BOOL CHamlog5::SetBinary(USHORT SubIndex, LPBYTE p) +{ + if( SubIndex >= m_FilMax ) return FALSE; + + int len = m_LenTable[SubIndex]; + LPSTR t; + int i; + for( i = 0, t = m_bp + m_PosTable[SubIndex]; i < len; i++, t++ ){ + *t = *p++; + } + m_WriteFlag = TRUE; + return TRUE; +} + +//-------------------------------------------- +//ƒf[ƒ^‚Ì‘‚«ž‚Ýiƒoƒbƒtƒ@‚Ì“à—e‚𔽉f‚³‚¹‚éj +BOOL CHamlog5::Update(void) +{ + if( m_OpenFlag == FALSE ) return FALSE; + + if( m_WriteFlag == TRUE ){ + m_WriteFlag = FALSE; + fseek(m_fp, m_Pos, SEEK_SET); + fwrite(m_bp, 1, m_RecWidth, m_fp); + if( m_Index >= m_RecMax ){ + m_RecMax++; + } + } + return TRUE; +} +//-------------------------------------------- +//ƒf[ƒ^‚̃fƒR[ƒh +void CHamlog5::DecodeData(SDMMLOG *sp) +{ + memset(sp, 0, sizeof(SDMMLOG)); + char bf[1024]; + + + int YY, MM, DD, HH, mm; + GetData(itemhamlog5DATE, LPBYTE(bf), 4); + YY = bf[1]; + MM = bf[2]; + DD = bf[3]; + GetData(itemhamlog5TIME, LPBYTE(bf), 2); + HH = bf[0]; + mm = bf[1] & 0x7f; + if( bf[1] & 0x80 ){ + UTCtoJST(YY, MM, DD, HH); + } + sp->year = BYTE(YY); + sp->date = WORD(MM * 100 + DD); + sp->btime = WORD(((HH * 60 + mm) * 30)); + if(!sp->btime) sp->btime++; + + USHORT usFlag; // ƒR[ƒ‹ƒTƒCƒ“‚ÌŒ`Ž® + GetData(itemhamlog5FLAG, LPBYTE(&usFlag), sizeof(usFlag)); + + LPSTR t, p; + AnsiString call; + if( (usFlag & bithamlog5DX) && (usFlag & bithamlog5RevOdr) ){ // KH6/JE3HHT + AnsiString Add; + GetData(itemhamlog5IGN, bf); + p = bf; + if( *p != ' ' ){ + p = StrDlm(t, p, ' '); + Add = t; + } + p = SkipSpace(p); + p = StrDlm(t, p, '/'); + call = t; + GetData(itemhamlog5CALLS, bf); clipsp(bf); + if( !call.IsEmpty() ) call += '/'; + call += SkipSpace(bf); + call += Add; + if( *p ){ + call += '/'; + call += p; + } + } + else { // JE3HHT/KH6 + GetData(itemhamlog5CALLS, bf); clipsp(bf); + call = SkipSpace(bf); + GetData(itemhamlog5IGN, bf); + p = bf; + if( *p != ' ' ){ + p = StrDlm(t, p, ' '); + call += t; + } + p = SkipSpace(p); + if( *p ){ + call += '/'; + call += p; + } + } + + StrCopy(sp->call, call.c_str(), MLCALL); + GetData(itemhamlog5HIS, bf); clipsp(bf); + StrCopy(sp->ur, bf, MLRST); + GetData(itemhamlog5MY, bf); clipsp(bf); + StrCopy(sp->my, bf, MLRST); + GetData(itemhamlog5MODE, bf); clipsp(bf); + Log.SetMode(sp, bf); + GetData(itemhamlog5FREQ, bf); clipsp(bf); + Log.SetFreq(sp, bf); + GetData(itemhamlog5NAME, bf); clipsp(bf); + StrCopy(sp->name, bf, MLNAME); + GetData(itemhamlog5QTH, bf); clipsp(bf); + StrCopy(sp->qth, bf, MLQTH); + + GetData(itemhamlog5RMK1, bf); + SetMMLOGKey(sp, bf); + clipsp(bf); + StrCopy(sp->rem, SkipSpace(bf), MLREM); + GetData(itemhamlog5RMK2, bf); + SetMMLOGKey(sp, bf); + clipsp(bf); + StrCopy(sp->qsl, SkipSpace(bf), MLQSL); + GetData(itemhamlog5QSL, LPBYTE(bf), 3); + sprintf(&bf[32], "QSL[%.3s]", bf); + Log.SetOptStr(2, sp, &bf[32]); + if( bf[0] == 'N' ){ + sp->send = 'N'; + } + else if( bf[1] == ' ' ){ // –¢”­‘— + if( (bf[0] == 'J')||(bf[0] == ' ') ){ + sp->send = 0; + } + else { + sp->send = BYTE(tolower(bf[0])); + } + } + else { // ”­‘—Ï‚Ý + sp->send = BYTE(toupper(bf[1])); + } + sp->recv = bf[2]; + if( sp->recv == ' ' ) sp->recv = 0; + GetData(itemhamlog5CODE, LPBYTE(bf), 6); clipsp(bf); + StrCopy(sp->opt1, bf, 6); + GetData(itemhamlog5GL, LPBYTE(bf), 6); clipsp(bf); + StrCopy(sp->opt2, bf, 6); + if( !sp->etime ) sp->etime = sp->btime; +} +//-------------------------------------------- +//ƒf[ƒ^‚̃Gƒ“ƒR[ƒh +void CHamlog5::EncodeData(SDMMLOG *sp) +{ + char bf[1024]; + + int YY = sp->year; + int MM = sp->date / 100; + int DD = sp->date % 100; + int tim = sp->btime / 30; + int HH = tim / 60; + int mm = tim % 60; + switch(Log.m_LogSet.m_THTZ){ + case 0: + if( !IsJA(sp->call) ){ + JSTtoUTC(YY, MM, DD, HH); + mm |= 0x80; + } + break; + case 1: + JSTtoUTC(YY, MM, DD, HH); + mm |= 0x80; + break; + default: + break; + } + bf[0] = BYTE(YY > 50 ? 19 : 20); + bf[1] = BYTE(YY); + bf[2] = BYTE(MM); + bf[3] = BYTE(DD); + SetBinary(itemhamlog5DATE, LPBYTE(bf)); + bf[0] = BYTE(HH); + bf[1] = BYTE(mm); + SetBinary(itemhamlog5TIME, LPBYTE(bf)); + + SetData(itemhamlog5NAME, sp->name); + SetData(itemhamlog5CODE, sp->opt1); + SetData(itemhamlog5GL, sp->opt2); + SetData(itemhamlog5QTH, sp->qth); + strcpy(bf, Log.GetModeString(sp->mode)); + SetData(itemhamlog5MODE, bf); + strcpy(bf, Log.GetFreqString(sp->band, sp->fq)); + SetData(itemhamlog5FREQ, bf); + + SetData(itemhamlog5HIS, sp->ur); + SetData(itemhamlog5MY, sp->my); + + AnsiString REM1, REM2; + REM1 = sp->rem; + REM2 = sp->qsl; + int l = GetLMode(sp->mode); + if( sp->ur[l] ) AddMMLOGKey(REM1, REM2, &sp->ur[l], "SN"); + if( sp->my[l] ) AddMMLOGKey(REM1, REM2, &sp->my[l], "RN"); + + if( sp->etime ){ + tim = sp->etime / 30; + sprintf(bf, "%02u%02u", tim / 60, tim % 60); + AddMMLOGKey(REM1, REM2, bf, "END"); + } + if( sp->env ){ + sprintf(bf, "%u", sp->env); + AddMMLOGKey(REM1, REM2, bf, "ENV"); + } + AddMMLOGKey(REM1, REM2, sp->pow, "POW"); + if( sp->cq ){ + bf[0] = sp->cq; bf[1] = 0; + AddMMLOGKey(REM1, REM2, bf, "M"); + } + strcpy(bf, Log.GetOptStr(2, sp)); + char rbf[32]; + char qsl[3]; + if(RemoveL2(rbf, bf, "QSL", sizeof(rbf)-1) == TRUE){ + qsl[0] = rbf[0]; + qsl[1] = rbf[1]; + qsl[2] = rbf[2]; + } + else { + qsl[2] = sp->recv; + if( !qsl[2] ) qsl[2] = ' '; + if( sp->send == 'N' ){ + qsl[0] = 'N'; + qsl[1] = ' '; + } + else if( !sp->send ){ + qsl[0] = 'J'; + qsl[1] = ' '; + } + else if( (sp->send >= 0x60)||(sp->send == '?') ){ + qsl[0] = BYTE(toupper(sp->send)); + qsl[1] = ' '; + } + else if( isalpha(sp->send) ){ + qsl[0] = sp->send; + qsl[1] = '*'; + } + else { + qsl[0] = 'J'; + qsl[1] = sp->send; + } + } + SetData(itemhamlog5QSL, qsl); + SetData(itemhamlog5RMK1, REM1.c_str()); + SetData(itemhamlog5RMK2, REM2.c_str()); + + BOOL fJA = IsJA(sp->call); + USHORT usFlag = USHORT(fJA ? 0 : bithamlog5DX); + AnsiString Calls, Ign; + strcpy(bf, sp->call); + LPSTR pp, p2, t; + t = bf; + if( (pp = strchr(bf, '/')) != NULL ){ // KH6/JE3HHT or JE3HHT/KH6 ‚ÌŒ`Ž® + *pp = 0; + pp++; + int LenC = strlen(t); + int LenP = strlen(pp); + if( (p2 = strchr(pp, '/')) != NULL ){ // KH6/JE3HHT/P JE3HHT/QRP/3 + // t = KH6, pp = JE3HHT, p2 = P + *p2 = 0; p2++; + if( fJA ){ + Calls = t; + Ign = pp; + Ign += "/"; + Ign += p2; + } + else { + Calls = pp; + Ign = t; + Ign += "/"; + Ign += p2; + usFlag |= bithamlog5RevOdr; + } + } + else { + if( LenC < LenP ){ + Calls = pp; + Ign = t; + if( usFlag ) usFlag |= bithamlog5RevOdr; + } + else { + Calls = t; + Ign = pp; + if( usFlag ) usFlag |= bithamlog5NorOdr; + } + } + } + else { + Calls = sp->call; + } + SetBinary(itemhamlog5FLAG, LPBYTE(&usFlag)); + SetData(itemhamlog5CALLS, Calls.c_str()); + LPCSTR pCall = Calls.c_str(); + memset(bf, ' ', 12); bf[13] = 0; + l = strlen(pCall); + if( l > 8 ){ + pCall += 8; + l -= 8; + memcpy(bf, pCall, l); + } + l = strlen(Ign.c_str()); + if( l ){ + if( l > 12 ) l = 12; + memcpy(&bf[12 - l], Ign.c_str(), l); + } + SetData(itemhamlog5IGN, bf); +} + diff --git a/Hamlog5.h b/Hamlog5.h new file mode 100644 index 0000000..4f26a1a --- /dev/null +++ b/Hamlog5.h @@ -0,0 +1,119 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef Hamlog5H +#define Hamlog5H + +// MMQSL—pHamlog Ver5‚̃hƒ‰ƒCƒo + +#include "ComLib.h" +#include "LogFile.h" +extern const LPCSTR g_Hamlog5Key[]; +extern const BYTE g_Hamlog5Len[]; + +typedef enum { + itemhamlog5CALLS, + itemhamlog5IGN, + itemhamlog5DATE, + itemhamlog5TIME, + itemhamlog5CODE, + itemhamlog5GL, + itemhamlog5QSL, + itemhamlog5FLAG, + itemhamlog5HIS, + itemhamlog5MY, + itemhamlog5FREQ, + itemhamlog5MODE, + itemhamlog5NAME, + itemhamlog5QTH, + itemhamlog5RMK1, + itemhamlog5RMK2, +}HAMLOG5_ITEMS; + +#define bithamlog5DX 8 +#define bithamlog5NorOdr 1 +#define bithamlog5RevOdr 2 + +#pragma pack(1) +typedef struct { + BYTE Type; + BYTE Year; + BYTE Mon; + BYTE Day; + ULONG RecMax; + USHORT FilOff; + USHORT RecWidth; + BYTE dm1[20]; +}hamlog5DBHD; +typedef struct { + char Name[11]; + BYTE Type; + BYTE dm1[4]; + BYTE Len; + BYTE dm2[15]; +}hamlog5DBRHD; +#pragma pack() + +#define HamlogDBMAX 16 +class CHamlog5 +{ +private: + BOOL m_fCreate; + hamlog5DBHD m_Head; // ƒwƒbƒ_î•ñ + ULONG m_RecMax; // ƒŒƒR[ƒh” + USHORT m_FilMax; // ƒtƒB[ƒ‹ƒh” + USHORT m_RecWidth; // ƒŒƒR[ƒh‚Ì• + USHORT m_FilOff; // ƒwƒbƒ_ƒIƒtƒZƒbƒg + FILE *m_fp; + AnsiString m_StrTable[HamlogDBMAX]; // ƒe[ƒuƒ‹–¼‚Ì”z—ñ + USHORT m_PosTable[HamlogDBMAX]; // ƒtƒB[ƒ‹ƒhˆÊ’u‚Ì”z—ñ + USHORT m_LenTable[HamlogDBMAX]; // ƒtƒB[ƒ‹ƒh’·‚³‚Ì”z—ñ + char m_TypeTable[HamlogDBMAX]; // Œ^î•ñ‚Ì”z—ñ + BOOL m_OpenFlag; // ƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ƒtƒ‰ƒO + + ULONG m_Index; // ƒV[ƒNŽž‚̃Cƒ“ƒfƒbƒNƒX + ULONG m_Pos; // ƒV[ƒNŽž‚̃tƒ@ƒCƒ‹ˆÊ’u + LPSTR m_bp; // ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ + BOOL m_WriteFlag; // ‘‚«ž‚݃tƒ‰ƒO + BOOL SetupHeader(void); // ƒwƒbƒ_ƒZƒbƒgƒAƒbƒv + BOOL MakeHeader(const LPCSTR _NT[], const BYTE _LT[]); +public: + CHamlog5(); + ~CHamlog5(); + BOOL Open(LPCSTR Name, BOOL fMsg); + BOOL Create(LPCSTR Name); + void Close(void); + inline ULONG GetRCount(void){return m_RecMax;}; + inline USHORT GetFCount(void){return m_FilMax;}; + AnsiString *GetStrBase(void){return m_StrTable;}; + BOOL Seek(ULONG Index); + BOOL IsData(void); + BOOL GetData(USHORT SubIndex, AnsiString &cs); + BOOL GetData(USHORT SubIndex, LPSTR pStore); + BOOL SetData(USHORT SubIndex, LPCSTR p); + BOOL SetBinary(USHORT SubIndex, LPBYTE p); + int GetData(USHORT SubIndex, LPBYTE pData, int len); + BOOL Update(void); + void DecodeData(SDMMLOG *sp); + void EncodeData(SDMMLOG *sp); +}; + +void __fastcall GetHamlog5FieldsLen(AnsiString &as); +void __fastcall SetHamlog5FieldsLen(AnsiString &as); +#endif diff --git a/InputWin.cpp b/InputWin.cpp new file mode 100644 index 0000000..1c0d0ec --- /dev/null +++ b/InputWin.cpp @@ -0,0 +1,70 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "InputWin.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//--------------------------------------------------------------------- +__fastcall TInputWinDlg::TInputWinDlg(TComponent* AOwner) + : TForm(AOwner) +{ + if( AOwner == NULL ) return; + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + CancelBtn->Caption = "Cancel"; + } +} + +//--------------------------------------------------------------------- +int InputMB(LPCSTR pTitle, LPCSTR pMsg, AnsiString &as) +{ + TForm *fp; + if( Screen->ActiveForm != NULL ){ + fp = Screen->ActiveForm; + } + else if( Application->MainForm != NULL ){ + fp = Application->MainForm; + } + else { + fp = NULL; + } + + TInputWinDlg *pBox = new TInputWinDlg(fp); + pBox->LMsg->Caption = pMsg; + pBox->Caption = pTitle; + pBox->Edit->Text = as.c_str(); + int r = FALSE; + if( pBox->ShowModal() == IDOK ){ + as = pBox->Edit->Text.c_str(); + r = TRUE; + } + delete pBox; + return r; +} +//--------------------------------------------------------------------- + + + + diff --git a/InputWin.dfm b/InputWin.dfm new file mode 100644 index 0000000000000000000000000000000000000000..b355effdd9c44267a6701978df02f55a0b659853 GIT binary patch literal 638 zcmZWny^_-~5SHb{cH+PVIx6x6%+WzfoP?N59M4&hp#Vm)H?d}Pl1EmCP?8k)GS}1b z78Dfs3|C!!IP&EJg9?pycE2C(?p+&^FpA%kc^C~QZ_#Nt#|V*lblM@IDAsz;#DK5- zzut`rEVX@$Y$6M+{JvBfs6>C`;ChR4z$lliPQV!mJqEVQwf!CWbv$R8&h1O9Gm=8T z2y&`Q&~7&wha>VXOuhu;H|NQawCl9wQn{U!R~9n)mB2>(CQ-BEo0f?pdI8SKmTy&W zD|gB6!)~#QY6fG0uVuE4pci94hxqB%S3 zYf%F~8Q{lz;O7JI`2!Ho&fEbk>6+`7Kb0Bf=TKGwwmd=?vwicib>waZRHVQU{PwSU zPX7xybz$p4sQKgS`seR|B=Aw9+KMI_W=uECwci2UHQry=-tF8vn1AMm7hvYnow8KP SQZ98boDO@hUmXcib^ZWHg~i$c literal 0 HcmV?d00001 diff --git a/InputWin.h b/InputWin.h new file mode 100644 index 0000000..b7f08bc --- /dev/null +++ b/InputWin.h @@ -0,0 +1,50 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef InputWinH +#define InputWinH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TInputWinDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TEdit *Edit; + TLabel *LMsg; +private: +public: + virtual __fastcall TInputWinDlg(TComponent* AOwner); +}; +int InputMB(LPCSTR pTitle, LPCSTR pMsg, AnsiString &as); +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#endif diff --git a/LogConv.cpp b/LogConv.cpp new file mode 100644 index 0000000..5144f51 --- /dev/null +++ b/LogConv.cpp @@ -0,0 +1,2232 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include +#include "LogConv.h" +#include "country.h" +//#include "main.h" +#include "InputWin.h" +CLogText LogText; +//*************************************************************************** +// CLogConv Šî–{ ƒNƒ‰ƒX +CLogConv::CLogConv() +{ + m_Mode = 0; + m_fp = NULL; +} + +CLogConv::~CLogConv() +{ +} +//*************************************************************************** +// CLogText ƒNƒ‰ƒX +CLogText::CLogText() +{ + m_Type = 0; + m_Double = 0; + m_Delm = 0; + m_err = 0; + m_UTC = (lcid != LANG_JAPANESE) ? 1 : 0; + int i; + for( i = 0; i < TEXTCONVMAX; i++ ){ + m_tConv[i].Key = ""; + m_tConv[i].w = 0; + } + m_tConv[0].Key = "%YYYY-MM-DD"; + m_tConv[1].Key = "%HHMM"; + m_tConv[2].Key = "%EHHMM"; + m_tConv[3].Key = "%CALL"; + m_tConv[4].Key = "%HIS"; + m_tConv[5].Key = "%MY"; + m_tConv[6].Key = "%FREQ"; + m_tConv[7].Key = "%MODE"; + m_tConv[8].Key = "%POWER"; + m_tConv[9].Key = "%NAME"; + m_tConv[10].Key = "%QTH"; + m_tConv[11].Key = "%REM"; + m_tConv[12].Key = "%QSL"; + m_tConv[13].Key = "%S"; + m_tConv[14].Key = "%R"; + m_tConv[15].Key = "%EOD"; + for( i = 0; i < TEXTCONVMAX; i++ ){ + m_rConv[i] = m_tConv[i]; + } +} +//--------------------------------------------------------------------------- +// ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CLogText::Open(LPCSTR pName) +{ + Close(); + m_Mode = 0; + m_err = 0; + + m_fp = fopen(pName, "rt"); + + if( m_fp != NULL ){ + setvbuf(m_fp, NULL, _IOFBF, 16384); + m_FileName = pName; + m_Mode = 0; + return TRUE; + } + else { + ErrorMB( (sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't open '%s'":"'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Ìì¬ +int CLogText::Create(LPCSTR pName) +{ + Close(); + m_Mode = 1; + + m_fp = fopen(pName, "wt"); + if( m_fp != NULL ){ + setvbuf(m_fp, NULL, _IOFBF, 16384); + m_FileName = pName; + m_Mode = 0; + return TRUE; + } + else { + ErrorMB( (sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't write to '%s'":"'%s'‚ªì¬‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CLogText::Close(void) +{ + int r = 0; + if( m_fp != NULL ){ + r = fclose(m_fp); + m_fp = NULL; + if( r ){ + ErrorMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't close '%s'":"'%s'‚ª³‚µ‚­ƒNƒ[ƒY‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FileName.c_str()); + } + else if( m_Mode ){ + InfoMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Done (write to '%s')":"'%s'‚Ö‚Ì‘‚«‚±‚Ý‚ðI—¹‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + } + } + return r ? FALSE : TRUE; +} +//--------------------------------------------------------------------------- +// ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̓ǂÝo‚µ +int CLogText::Read(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + if( !feof(m_fp) ){ + if( fgets(m_bf, sizeof(m_bf), m_fp) != NULL ){ + ClipLF(m_bf); + return Text2MMLOG(sp, m_bf, m_err); + } + else { + return FALSE; + } + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------------- +// o—͕ϊ· +int CLogText::Write(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + MMLOG2Text(m_bf, sp); + fputs(m_bf, m_fp); + fputs("\n", m_fp); + return ferror(m_fp) ? FALSE : TRUE; +} + +const LPCSTR ConvTbl[]={ + "%NULL", + "%YYYY-MM-DD", "%YY-MM-DD", "%YYYY/MM/DD", "%YY/MM/DD", + "%DD MON, YYYY","%YYMMDD", "%YYYYMMDD", + "%YY", "%YYYY", "%MM", "%MON", "%MON2", "%DD", "%HHMM", "%HH:MM","%HH:MM:SS", + "%EHHMM", "%EHH:MM", "%EHH:MM:SS", "%CALL", + "%M", "%MY", "%HIS", "%MYRST", "%HISRST", "%MYNR", "%HISNR", "%FREQ", "%KHZ", + "%MBAND", "%MODE", "%POWER", "%NAME", "%QTH", "%REM", "%QSL", + "%S", "%R", "%ENV", "%OPT1", "%OPT2", "%USR1", "%USR2", + "%EOD", + NULL, +}; + +const char *MONT1[]={"","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"}; +const char *MONT2[]={"","Jan.","Feb.","Mar.","Apr.","May","June","July","Aug.","Sept.","Oct.","Nov.","Dec."}; + +//--------------------------------------------------------------------------- +void MMLOG2Text(LPSTR t, SDMMLOG *sp, AnsiString &Key) +{ + int tim, l; + + if( Key == "%YYYY-MM-DD" ){ + sprintf(t, "%04u-%02u-%02u", YEAR(sp->year), sp->date/100, sp->date%100); + } + else if( Key == "%YY-MM-DD" ){ + sprintf(t, "%2u-%02u-%02u", sp->year, sp->date/100, sp->date%100); + } + else if( Key == "%YYYY/MM/DD" ){ + sprintf(t, "%04u/%02u/%02u", YEAR(sp->year), sp->date/100, sp->date%100); + } + else if( Key == "%YY/MM/DD" ){ + sprintf(t, "%2u/%02u/%02u", sp->year, sp->date/100, sp->date%100); + } + else if( Key == "%DD MON, YYYY" ){ + sprintf(t, "%02u %s, %04u", sp->date%100, MONT1[sp->date/100], YEAR(sp->year)); + } + else if( Key == "%YYYYMMDD" ){ + sprintf(t, "%04u%02u%02u", YEAR(sp->year), sp->date/100, sp->date%100); + } + else if( Key == "%YYMMDD" ){ + sprintf(t, "%02u%02u%02u", sp->year, sp->date/100, sp->date%100); + } + else if( Key == "%YY" ){ + sprintf(t, "%02u", sp->year); + } + else if( Key == "%YYYY" ){ + sprintf(t, "%04u", YEAR(sp->year)); + } + else if( Key == "%MM" ){ + sprintf(t, "%02u", sp->date / 100); + } + else if( Key == "%MON" ){ + strcpy(t, MONT1[sp->date/100]); + } + else if( Key == "%MON2" ){ + strcpy(t, MONT2[sp->date/100]); + } + else if( Key == "%DD" ){ + sprintf(t, "%02u", sp->date % 100); + } + else if( Key == "%HHMM" ){ + if( sp->btime ){ + tim = sp->btime / 30; + sprintf(t, "%02u%02u", tim / 60, tim % 60); + } + else { + *t = 0; + } + } + else if( Key == "%HH:MM" ){ + if( sp->btime ){ + tim = sp->btime / 30; + sprintf(t, "%02u:%02u", tim / 60, tim % 60); + } + else { + *t = 0; + } + } + else if( Key == "%HH:MM:SS" ){ + if( sp->btime ){ + tim = sp->btime / 30; + sprintf(t, "%02u:%02u:%02u", tim / 60, tim % 60, (sp->btime * 2) % 60); + } + else { + *t = 0; + } + } + else if( Key == "%EHHMM" ){ + if( sp->etime ){ + tim = sp->etime / 30; + sprintf(t, "%02u%02u", tim / 60, tim % 60); + } + else { + *t = 0; + } + } + else if( Key == "%EHH:MM" ){ + if( sp->etime ){ + tim = sp->btime / 30; + sprintf(t, "%02u:%02u", tim / 60, tim % 60); + } + else { + *t = 0; + } + } + else if( Key == "%EHH:MM:SS" ){ + if( sp->etime ){ + tim = sp->btime / 30; + sprintf(t, "%02u:%02u:%02u", tim / 60, tim % 60, (sp->etime * 2) % 60); + } + else { + *t = 0; + } + } + else if( Key == "%CALL" ){ + strcpy(t, sp->call); + } + else if( Key == "%M" ){ + *t = sp->send; + *(t+1) = 0; + } + else if( Key == "%HIS" ){ + strcpy(t, sp->ur); + } + else if( Key == "%MY" ){ + strcpy(t, sp->my); + } + else if( Key == "%HISRST" ){ + StrCopy(t, sp->ur, GetLMode(sp->mode)); + } + else if( Key == "%MYRST" ){ + StrCopy(t, sp->my, GetLMode(sp->mode)); + } + else if( Key == "%HISNR" ){ + l = GetLMode(sp->mode); + if( (int)strlen(sp->ur) >= l ){ + strcpy(t, &sp->ur[l]); + } + else { + *t = 0; + } + } + else if( Key == "%MYNR" ){ + l = GetLMode(sp->mode); + if( (int)strlen(sp->my) >= l ){ + strcpy(t, &sp->my[l]); + } + else { + *t = 0; + } + } + else if( Key == "%FREQ" ){ + strcpy(t, Log.GetFreqString(sp->band, sp->fq)); + } + else if( Key == "%MBAND" ){ + strcpy(t, FreqTomBand(sp)); + } + else if( Key == "%KHZ" ){ + char bf[32]; + double dd; + strcpy(bf, Log.GetFreqString(sp->band, sp->fq)); + sscanf(bf, "%lf", &dd); + sprintf(t, "%.2lf", dd * 1000.0); + } + else if( Key == "%MODE" ){ + strcpy(t, Log.GetModeString(sp->mode)); + } + else if( Key == "%POWER" ){ + strcpy(t, sp->pow); + } + else if( Key == "%NAME" ){ + strcpy(t, sp->name); + } + else if( Key == "%QTH" ){ + strcpy(t, sp->qth); + } + else if( Key == "%REM" ){ + strcpy(t, sp->rem); + } + else if( Key == "%QSL" ){ + strcpy(t, sp->qsl); + } + else if( Key == "%S" ){ + *t = sp->send; + *(t+1) = 0; + } + else if( Key == "%R" ){ + *t = sp->recv; + *(t+1) = 0; + } + else if( Key == "%ENV" ){ + sprintf(t, "%u", sp->env); + } + else if( Key == "%OPT1" ){ + strcpy(t, sp->opt1); + } + else if( Key == "%OPT2" ){ + strcpy(t, sp->opt2); + } + else if( Key == "%USR1" ){ + strcpy(t, Log.GetOptStr(2, sp)); + } + else if( Key == "%USR2" ){ + strcpy(t, Log.GetOptStr(3, sp)); + } + else if( (Key == "%EOD")||(Key == "%NULL") ){ + *t = 0; + } + else { + strcpy(t, Key.c_str()); + } +} +//--------------------------------------------------------------------------- +// 1s‚Ìo—͕ϊ· +void CLogText::MMLOG2Text(LPSTR t, SDMMLOG *sp) +{ + char bf[512]; + char dlm = m_Delm ? TAB : ','; + + if( m_UTC ) JSTtoUTC(sp); + int i; + for( i = 0; i < TEXTCONVMAX; i++ ){ + if( (!m_tConv[i].Key.IsEmpty())&&(m_tConv[i].Key != "%EOD") ){ + ::MMLOG2Text(bf, sp, m_tConv[i].Key); + switch(m_Delm){ + case 0: // CSV + case 1: // TAB + if( i ) *t++ = dlm; + if( m_Double || (strchr(bf, dlm) != NULL) ) *t++ = 0x22; + if( m_tConv[i].w ){ + StrCopy(t, bf, m_tConv[i].w); + } + else { + strcpy(t, bf); + } + t += strlen(t); + if( m_Double || (strchr(bf, dlm) != NULL) ) *t++ = 0x22; + break; + default: // Format Text + if( m_tConv[i].w ){ + StrCopy(t, bf, m_tConv[i].w); + FillSpace(t, m_tConv[i].w); + } + else { + strcpy(t, bf); + } + t += strlen(t); + break; + } + } + else { + break; + } + } + *t = 0; +} +//--------------------------------------------------------------------------- +int GetMonth(LPCSTR p) +{ + for( int i = 1; i <=12; i++ ){ + if( !strcmpi(MONT1[i], p) ) return i; + if( !strcmpi(MONT2[i], p) ) return i; + } + return 0; +} +//--------------------------------------------------------------------------- +int Text2MMLOG(SDMMLOG *sp, LPCSTR s, AnsiString &Key) +{ + int y, m, d, h; + int tim; + + if( (Key == "%YYYY-MM-DD")||(Key == "%YY-MM-DD") ){ + if( sscanf(s, "%u-%u-%u", &y, &m, &d) != 3 ) return FALSE; + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + else if( (Key == "%YYYY/MM/DD")||(Key == "%YY/MM/DD") ){ + if( sscanf(s, "%u/%u/%u", &y, &m, &d) != 3 ) return FALSE; + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + else if( Key == "%DD MON, YYYY" ){ + d = atoin(s, 2); + s += 3; + char bf[4]; + StrCopy(bf, s, 3); + m = GetMonth(bf); + s = SkipSpace(s+1); + y = atoin(s, -1); + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + else if( Key == "%YYYYMMDD" ){ + y = atoin(s, 4); s += 4; + m = atoin(s, 2); s += 2; + d = atoin(s, 2); + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + else if( Key == "%YYMMDD" ){ + y = atoin(s, 2); s += 2; + m = atoin(s, 2); s += 2; + d = atoin(s, 2); + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + else if( (Key == "%YY")||(Key == "%YYYY") ){ + if( sscanf(s, "%u", &y) != 1 ) return FALSE; + sp->year = BYTE(y % 100); + } + else if( Key == "%MM" ){ + if( sscanf(s, "%u", &m) != 1 ) return FALSE; + sp->date = WORD((sp->date % 100) + m * 100); + } + else if( (Key == "%MON")||(Key == "%MON2") ){ + m = GetMonth(s); + sp->date = WORD((sp->date % 100) + m * 100); + } + else if( Key == "%DD" ){ + if( sscanf(s, "%u", &d) != 1 ) return FALSE; + sp->date = WORD(((sp->date / 100) * 100) + d); + } + else if( Key == "%HHMM" ){ + if( *s ){ + if( sscanf(s, "%u", &d) != 1 ) return FALSE; + h = d / 100; + m = d % 100; + tim = (h * 60 + m) * 30; + if( !tim ) tim++; + sp->btime = WORD(tim); + } + } + else if( (Key == "%HH:MM")||(Key == "%HH:MM:SS") ){ + if( *s ){ + if( sscanf(s, "%u:%u:%u", &h, &m, &d ) != 3 ){ + d = 0; + if( sscanf(s, "%u:%u", &h, &m) != 2 ) return FALSE; + } + tim = (h * 60 + m) * 30 + (d / 2); + if( !tim ) tim++; + sp->btime = WORD(tim); + } + } + else if( Key == "%EHHMM" ){ + if( *s ){ + if( sscanf(s, "%u", &d) != 1 ) return FALSE; + h = d / 100; + m = d % 100; + tim = (h * 60 + m) * 30; + if( !tim ) tim++; + sp->etime = WORD(tim); + } + } + else if( (Key == "%EHH:MM")||(Key == "%EHH:MM:SS") ){ + if( *s ){ + if( sscanf(s, "%u:%u:%u", &h, &m, &d ) != 3 ){ + d = 0; + if( sscanf(s, "%u:%u", &h, &m) != 2 ) return FALSE; + } + tim = (h * 60 + m) * 30 + (d / 2); + if( !tim ) tim++; + sp->etime = WORD(tim); + } + } + else if( Key == "%CALL" ){ + if( sp->call[0] ){ + char bf[256]; + sprintf(bf, "%s/%s", sp->call, s); + StrCopy(sp->call, bf, MLCALL); + } + else { + StrCopy(sp->call, s, MLCALL); + } + } + else if( Key == "%M" ){ + sp->send = *s; + } + else if( (Key == "%HIS")||(Key == "%HISRST") ){ + StrCopy(sp->ur, s, MLRST); + } + else if( (Key == "%MY")||(Key=="%MYRST") ){ + StrCopy(sp->my, s, MLRST); + } + else if( Key == "%FREQ" ){ + Log.SetFreq(sp, s); + } + else if( Key == "%MBAND" ){ + mBandToBand(sp, s); + } + else if( Key == "%KHZ" ){ + double dd; + sscanf(s, "%lf", &dd); + char bf[32]; + sprintf(bf, "%.03lf", dd / 1000.0); + Log.SetFreq(sp, bf); + } + else if( Key == "%MODE" ){ + Log.SetMode(sp, s); + } + else if( Key == "%POWER" ){ + StrCopy(sp->pow, s, MLPOW); + } + else if( Key == "%NAME" ){ + StrCopy(sp->name, s, MLNAME); + } + else if( Key == "%QTH" ){ + StrCopy(sp->qth, s, MLQTH); + } + else if( Key == "%REM" ){ + StrCopy(sp->rem, s, MLREM); + } + else if( Key == "%QSL" ){ + StrCopy(sp->qsl, s, MLQSL); + } + else if( Key == "%S" ){ + sp->send = *s; + } + else if( Key == "%R" ){ + sp->recv = *s; + } + else if( Key == "%ENV" ){ + if( sscanf(s, "%u", &d) != 1 ) return FALSE; + sp->env = WORD(d); + } + else if( Key == "%OPT1" ){ + StrCopy(sp->opt1, s, MLOPT); + } + else if( Key == "%OPT2" ){ + StrCopy(sp->opt2, s, MLOPT); + } + else if( Key == "%USR1" ){ + Log.SetOptStr(2, sp, s); + } + else if( Key == "%USR2" ){ + Log.SetOptStr(3, sp, s); + } + else if( (Key != "%EOD")&&(Key != "%NULL") ){ + if( Key != s ){ + return FALSE; + } + } + return TRUE; +} +//--------------------------------------------------------------------------- +// 1s‚Ì“ü—͕ϊ· +int CLogText::Text2MMLOG(SDMMLOG *sp, LPSTR p, int &err) +{ + char bf[512]; + char dlm = m_Delm ? TAB : ','; + LPSTR t; + + memset(sp, 0, sizeof(SDMMLOG)); + int i; + for( i = 0; i < TEXTCONVMAX; i++ ){ + if( (!m_rConv[i].Key.IsEmpty())&&(m_rConv[i].Key != "%EOD") ){ + if( m_Delm == 2 ){ + StrCopy(bf, p, m_rConv[i].w); + p += strlen(bf); + t = bf; + } + else { + p = StrDlm(t, p, dlm); + } + clipsp(t); + t = SkipSpace(t); + if( ::Text2MMLOG(sp, t, m_rConv[i].Key ) == FALSE ){ + if( !err ){ + ErrorMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "An error occurred with conversion type [%s]." : "•ÏŠ·Ž®[%s]‚ŃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½.", m_rConv[i].Key.c_str() ); + } + err++; + } + } + else { + break; + } + } + if( !sp->etime ) sp->etime = sp->btime; + if( m_UTC ) UTCtoJST(sp); + return err ? FALSE : TRUE; +} +// +// +//*************************************************************************** +// CLog200 ƒNƒ‰ƒX +CLog200::CLog200() +{ + m_Type = 1; + m_err = 0; +} +//--------------------------------------------------------------------------- +// LOG200ƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CLog200::Open(LPCSTR pName) +{ + Close(); + m_Index = 0; + m_err = 0; + + m_fp = fopen(pName, "rb"); + if( m_fp != NULL ){ + m_FileName = pName; + m_Mode = 0; + return TRUE; + } + else { + ErrorMB("'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// LOG200ƒtƒ@ƒCƒ‹‚Ìì¬ +int CLog200::Create(LPCSTR pName) +{ + Close(); + m_Mode = 1; + m_err = 0; + + int add = 0; + if( (m_fp = fopen(pName, "rb"))!=NULL ){ + fclose(m_fp); + m_fp = NULL; + add = 1; + char BackName[256]; + strcpy(BackName, pName); + SetEXT(BackName, ".BAK"); + int r = YesNoCancelMB( "'%s'‚ÍŠù‚É‘¶Ý‚µ‚Ä‚¢‚Ü‚·.\r\n‚l‚l‚s‚s‚x‚Í‚±‚̃tƒ@ƒCƒ‹‚Ƀf[ƒ^‚ð’ljÁ‚µ‚Ü‚·.\r\n\r\n" + "‚±‚Ì‘€ì‚ðŽÀs‚·‚é‘O‚ÉŒ³‚̃ƒOƒtƒ@ƒCƒ‹‚̃oƒbƒNƒAƒbƒvƒtƒ@ƒCƒ‹\r\n\r\n" + "'%s' -> '%s'\r\n\r\n‚ð쬂µ‚Ü‚·‚©H\r\n\r\n" + "[d—v]\r\n”O‚Ì‚½‚߂ɃoƒbƒNƒAƒbƒv‚ð쬂·‚鎖‚ð‚¨Š©‚ß‚µ‚Ü‚·.", pName, pName, BackName); + if( r == IDYES ){ + CWaitCursor w; + if( ::CopyFile(pName, BackName, FALSE) == FALSE ){ + ErrorMB("ƒoƒbƒNƒAƒbƒv‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½.\r\n‚±‚̈—‚Í’†’f‚³‚ê‚Ü‚·.Œ³‚̃ƒOƒtƒ@ƒCƒ‹‚Í•ÏX‚³‚ê‚Ü‚¹‚ñ."); + return FALSE; + } + } + else if( r == IDCANCEL ){ + return FALSE; + } + } + m_fp = fopen(pName, add ? "ab":"wb"); + if( m_fp != NULL ){ + m_FileName = pName; + m_Mode = 0; + return TRUE; + } + else { + ErrorMB( "'%s'‚ªì¬‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// LOG200ƒtƒ@ƒCƒ‹‚̃Nƒ[ƒY +int CLog200::Close(void) +{ + int r = 0; + if( m_fp != NULL ){ + r = fclose(m_fp); + m_fp = NULL; + if( r ){ + ErrorMB("'%s'‚ª³‚µ‚­ƒNƒ[ƒY‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FileName.c_str()); + } + else if( m_Mode ){ + InfoMB("'%s'‚ւ̒ljÁ‚ðI—¹‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + } + } + return r ? FALSE : TRUE; +} +//--------------------------------------------------------------------------- +// LOG200 -> MMLOG ƒtƒH[ƒ}ƒbƒg‚̕ϊ· +void LOG200toMMLOG(SDMMLOG *sp, LPSTR s) +{ + LPSTR t; + int y, m, d, h, tim; + char bf[256]; + + memset(sp, 0, sizeof(SDMMLOG)); + s = StrDlm(t, s, 0x1e); /* DATE */ + y = atoin(t, 2); t += 2; + m = atoin(t, 2); t += 2; + d = atoin(t, 2); + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + + s = StrDlm(t, s, 0x1e); /* BGN */ + d = atoin(t, 4); + h = d / 100; + m = d % 100; + tim = (h * 60 + m) * 30; + if( !tim ) tim++; + sp->btime = WORD(tim); + + s = StrDlm(t, s, 0x1e); /* END */ + d = atoin(t, 4); + h = d / 100; + m = d % 100; + tim = (h * 60 + m) * 30; + if( !tim ) tim++; + sp->etime = WORD(tim); + + s = StrDlm(t, s, 0x1e); /* CALL */ + clipsp(t); + StrCopy(sp->call, t, MLCALL); + + s = StrDlm(t, s, 0x1e); /* FREQ */ + if( LastC(t) == '.' ){ + *lastp(t) = 0; + } + Log.SetFreq(sp, t); + + s = StrDlm(t, s, 0x1e); /* MODE */ + Log.SetMode(sp, t); + + s = StrDlm(t, s, 0x1e); /* RST */ + clipsp(t); + StrCopy(sp->ur, t, MLRST); + + s = StrDlm(t, s, 0x1e); /* MyRST*/ + clipsp(t); + StrCopy(sp->my, t, MLRST); + + s = StrDlm(t, s, 0x1e); /* QTH */ + clipsp(t); + StrCopy(sp->qth, t, MLQTH); + + s = StrDlm(t, s, 0x1e); /* NAME */ + clipsp(t); + StrCopy(sp->name, t, MLNAME); + + s = StrDlm(t, s, 0x1e); /* RIG */ + clipsp(t); + LPSTR pRIG = t; + + s = StrDlm(t, s, 0x1e); /* CONTEST */ + clipsp(t); + LPSTR pContest = t; + + s = StrDlm(t, s, 0x1e); /* Rem */ + clipsp(t); + + if( (strlen(sp->call) == 15) && (RemoveL2(bf, t, "CALL", sizeof(bf)-1) == TRUE) ){ + StrCopy(sp->call, bf, MLCALL); + } + if( RemoveL2(bf, t, "POW", sizeof(bf)-1) == TRUE ){ + StrCopy(sp->pow, bf, MLPOW); + } + if( RemoveL2(bf, t, "ENV", sizeof(bf)-1) == TRUE ){ + sp->env = WORD(atoin(bf, -1)); + } + if( RemoveL2(bf, t, "M", sizeof(bf)-1) == TRUE ){ + sp->cq = bf[0]; + } + if( RemoveL2(bf, t, "OPT1", sizeof(bf)-1) == TRUE ){ + StrCopy(sp->opt1, bf, MLOPT); + } + if( RemoveL2(bf, t, "OPT2", sizeof(bf)-1) == TRUE ){ + StrCopy(sp->opt2, bf, MLOPT); + } + if( RemoveL2(bf, t, "USR1", sizeof(bf)-1) == TRUE ){ + Log.SetOptStr(2, sp, bf); + } + if( RemoveL2(bf, t, "USR2", sizeof(bf)-1) == TRUE ){ + Log.SetOptStr(3, sp, bf); + } + if( RemoveL2(bf, t, "MQSL", sizeof(bf)-1) == TRUE ){ + StrCopy(sp->qsl, bf, MLQSL); + } + clipsp(t); + t = SkipSpace(t); + StrCopy(sp->rem, t, MLREM); + + s = StrDlm(t, s, 0x1e); /* MyQTH*/ + if( *t ) AddL2(sp->qsl, "MyQTH", t, '[', ']', MLQSL); + + s = StrDlm(t, s, 0x1e); /* MyRig*/ + if( *t ) AddL2(sp->qsl, "MyRIG", t, '[', ']', MLQSL); + + s = StrDlm(t, s, 0x1e); /* Send */ + sp->send = *t; + StrDlm(t, s, 0x1e); /* Recv */ + sp->recv = *t; + + if( *pRIG ) AddL2(sp->qsl, "RIG", pRIG, '[', ']', MLQSL); + if( *pContest ) AddL2(sp->qsl, "TEST", pContest, '[', ']', MLQSL); +} +//--------------------------------------------------------------------------- +// LOG200ƒtƒ@ƒCƒ‹‚̓ǂÝo‚µ +int CLog200::Read(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + if( fread(m_bf, 1, 200, m_fp) == 200 ){ + LOG200toMMLOG(sp, m_bf); + m_Index++; + return TRUE; + } + else { + return FALSE; + } +} + +//--------------------------------------------------------------------------- +// MMLOG -> LOG200ƒtƒH[ƒ}ƒbƒg•ÏŠ· +void MMLOGtoLOG200(LPSTR t, SDMMLOG *sp, int &err) +{ + LPSTR s = t; + int h, m; + char bf[256]; + + memset(t, ' ', 200); + // YYMMDD + sprintf(t, "%02u%02u%02u\x1e", sp->year, sp->date / 100, sp->date % 100); + t += strlen(t); + // BGN(HHMM) + h = sp->btime / 1800; + m = (sp->btime % 1800) / 30; + sprintf(t, "%02u%02u\x1e", h, m); + t += strlen(t); + // END + h = sp->etime / 1800; + m = (sp->etime % 1800) / 30; + sprintf(t, "%02u%02u\x1e", h, m); + t += strlen(t); + // CALL + StrCopy(t, sp->call, 15); // 15•¶Žš‚ɧŒÀ‚³‚ê‚Ä‚¢‚é + t += strlen(t); + *t++ = 0x1e; + // FREQ + sprintf(bf, "%s", Log.GetFreqString(sp->band, sp->fq)); + if( bf[0] ){ + double dd; + if( sscanf(bf, "%lf", &dd) == 1 ){ + sprintf(bf, "%.3lf", dd); + } + } + strcpy(t, bf); + t += strlen(t); + *t++ = 0x1e; + // MODE + sprintf(t, "%s\x1e", Log.GetModeString(sp->mode)); + t += strlen(t); + // HisRST + sprintf(t, "%s\x1e", sp->ur); + t += strlen(t); + // MyRST + sprintf(t, "%s\x1e", sp->my); + t += strlen(t); + // QTH + sprintf(t, "%s\x1e", sp->qth); + t += strlen(t); + // NAME + sprintf(t, "%s\x1e", sp->name); + t += strlen(t); + // RIG + if( RemoveL2(bf, sp->qsl, "Rig", sizeof(bf)-1) == TRUE ){ + strcpy(t, bf); + } + *t++ = 0x1e; + // CONTEST + if( RemoveL2(bf, sp->qsl, "TEST", sizeof(bf)-1) == TRUE ){ + strcpy(t, bf); + } + *t++ = 0x1e; + char MyRig[200]; + char MyQTH[200]; + MyRig[0] = MyQTH[0] = 0; + if( RemoveL2(bf, sp->qsl, "MyRig", sizeof(bf)-1) == TRUE ){ + strcpy(MyRig, bf); + } + if( RemoveL2(bf, sp->qsl, "MyQTH", sizeof(bf)-1) == TRUE ){ + strcpy(MyQTH, bf); + } + clipsp(sp->qsl); + LPSTR p = SkipSpace(sp->qsl); + + // REM + strcpy(bf, sp->rem); + char bbf[128]; + if( strlen(sp->call) > 11 ){ + AddL2(bf, "CALL", sp->call, '[', ']', MLQSL); + } + if( sp->cq ){ + bbf[0] = sp->cq; bbf[1] = 0; + AddL2(bf, "M", bbf, '[', ']', MLQSL); + } + if( sp->pow[0] ) AddL2(bf, "POW", sp->pow, '[', ']', MLQSL); + if( sp->env ){ + sprintf(bbf, "%u", sp->env); + AddL2(bf, "ENV", bbf, '[', ']', MLQSL); + } + if( sp->opt1[0] ) AddL2(bf, "OPT1", sp->opt1, '[', ']', MLQSL); + if( sp->opt2[0] ) AddL2(bf, "OPT2", sp->opt2, '[', ']', MLQSL); + LPCSTR pp = Log.GetOptStr(2, sp); + if( *pp ) AddL2(bf, "USR1", pp, '[', ']', MLQSL); + pp = Log.GetOptStr(3, sp); + if( *pp ) AddL2(bf, "USR2", pp, '[', ']', MLQSL); + + if( *p ) AddL2(bf, "MQSL", p, '[', ']', MLQSL); + int len = (t - s) + strlen(bf) + 1 + strlen(MyQTH) + 1 + strlen(MyRig) + 1 + 2; + if( len >= 199 ){ + if( !err ){ + err++; + WarningMB("•ÏŠ·‚µ‚½Œ‹‰Ê‚ªLOG200ƒŒƒR[ƒh’·‚ð‰z‚¦‚Ü‚µ‚½.\r\n\r\nƒŠƒ}[ƒNƒtƒB[ƒ‹ƒh‚Ì’·‚³‚ð’²®‚µ‚Ü‚·."); + } + len -= 199; + bf[strlen(bf)-len] = 0; + } + + sprintf(t, "%s\x1e", bf); + t += strlen(t); + + // MyQTH + sprintf(t, "%s\x1e", MyQTH); + t += strlen(t); + // MyRIG + sprintf(t, "%s\x1e", MyRig); + t += strlen(t); + // S + if( sp->send ) *t++ = sp->send; + *t++ = 0x1e; + // R + if( sp->recv ) *t++ = sp->recv; + *t = 0x1e; + + s[198] = '\r'; s[199] = '\n'; +} +//--------------------------------------------------------------------------- +// LOG200ƒtƒ@ƒCƒ‹‚Ì‘‚«‚±‚Ý +int CLog200::Write(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + MMLOGtoLOG200(m_bf, sp, m_err); + if( fwrite(m_bf, 1, 200, m_fp) != 200 ){ + ErrorMB("'%s'‚É‘‚«ž‚Ý’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + return FALSE; + } + else { + m_Index++; + return TRUE; + } +} +// +// +//*************************************************************************** +// CHamLog ƒNƒ‰ƒX +//--------------------------------------------------------------------------- +CHamLog::CHamLog() +{ + m_Type = 2; + m_err = 0; + + m_DBRName = ""; // DBRƒtƒ@ƒCƒ‹‚Ì–¼‘O + m_dbrfp = NULL; // DBRƒtƒ@ƒCƒ‹‚̃tƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ +} +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +// HamLogƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CHamLog::Open(LPCSTR pName) +{ + Close(); + m_Index = 0; + m_err = 0; + m_Mode = 0; + + m_fp = fopen(pName, "rb"); // DBS‚̃I[ƒvƒ“ + + if( m_fp == NULL ){ + ErrorMB( "'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } + m_FileName = pName; + if( (fread(&m_hd, 1, sizeof(m_hd), m_fp)!=sizeof(m_hd)) || + (m_hd.Memo != 0x1a) || + (m_hd.HeadLen != 449) || + (m_hd.DataLen != sizeof(m_RecBuf)) + ){ + fclose(m_fp); + m_fp = NULL; + ErrorMB("—\Šú‚µ‚È‚¢ƒtƒ@ƒCƒ‹Œ`Ž®‚Å‚·."); + return FALSE; + } + char dbrName[256]; + strcpy(dbrName, pName); + SetEXT(dbrName, ".DBR"); + m_DBRName = dbrName; + m_dbrfp = fopen(dbrName, "rb"); + if( m_dbrfp == NULL ){ + WarningMB( "'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", dbrName); + } + else if( fread(&m_dbrhd, 1, sizeof(m_dbrhd), m_dbrfp)!=sizeof(m_dbrhd) ){ + ErrorMB( "'%s'‚ª³í‚ɓǂ݂±‚߂܂¹‚ñ. ˆ—‚ð’†’f‚µ‚Ü‚·.", dbrName); + fclose(m_fp); + m_fp = NULL; + fclose(m_dbrfp); + m_dbrfp = NULL; + return FALSE; + } + + if( Seek(0) == FALSE ){ + Close(); + ErrorMB("ʼn‚̃ŒƒR[ƒh‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ."); + return FALSE; + } + return TRUE; +} + +int CHamLog::Close(void) +{ + int r = 0; + if( m_fp != NULL ){ + if( m_Mode ){ // ‘‚«‚±‚Ý + fseek(m_fp, 0, SEEK_SET); + if( fwrite(&m_hd, 1, sizeof(m_hd), m_fp) != sizeof(m_hd) ) r = 1; + } + if( fclose(m_fp) ) r = 1;; + m_fp = NULL; + } + if( m_dbrfp != NULL ){ + if( m_Mode ){ + fseek(m_dbrfp, 0, SEEK_SET); + if( fwrite(&m_dbrhd, 1, sizeof(m_dbrhd), m_dbrfp) != sizeof(m_dbrhd) ) r = 1; + } + if( fclose(m_dbrfp) ) r = 1; + m_dbrfp = NULL; + } + if( r ){ + ErrorMB("ƒtƒ@ƒCƒ‹‚̃Nƒ[ƒY‚ÉŽ¸”s‚µ‚Ü‚µ‚½."); + } + else if( m_Mode ){ + InfoMB("'%s'‚ւ̒ljÁ‚ðI—¹‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + } + return r ? FALSE : TRUE; +} + +//--------------------------------------------------------------------------- +// HamLogƒtƒ@ƒCƒ‹‚Ìì¬ +int CHamLog::Create(LPCSTR pName) +{ + Close(); + m_Mode = 1; + m_err = 0; + + char dbrName[256]; + strcpy(dbrName, pName); + SetEXT(dbrName, ".DBR"); + + int add = 0; + if( (m_fp = fopen(pName, "rt"))!=NULL ){ + fclose(m_fp); + add = 1; + char BackNameDBS[256]; + strcpy(BackNameDBS, pName); + SetEXT(BackNameDBS, ".$BS"); + char BackNameDBR[256]; + strcpy(BackNameDBR, dbrName); + SetEXT(BackNameDBR, ".$BR"); + int r = YesNoCancelMB( "'%s'‚ÍŠù‚É‘¶Ý‚µ‚Ä‚¢‚Ü‚·. ƒf[ƒ^‚Í‚±‚̃tƒ@ƒCƒ‹‚ɒljÁ‚³‚ê‚Ü‚·.\r\n\r\n‚±‚Ì‘€ì‚ðŽÀs‚·‚é‘O‚ÉŒ³‚̃ƒOƒtƒ@ƒCƒ‹‚̃oƒbƒNƒAƒbƒvƒtƒ@ƒCƒ‹\r\n\r\n'%s'->'%s'\r\n'%s'->'%s'\r\n\r\n‚ð쬂µ‚Ü‚·‚©H\r\n\r\n" + "[d—v]\r\n”O‚Ì‚½‚߂ɃoƒbƒNƒAƒbƒv‚ð쬂·‚鎖‚ð‚¨Š©‚ß‚µ‚Ü‚·.", pName, pName, BackNameDBS, dbrName, BackNameDBR); + if( r == IDYES ){ + CWaitCursor w; + if( ::CopyFile(pName, BackNameDBS, FALSE) == FALSE ){ + ErrorMB("ƒoƒbƒNƒAƒbƒv‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½.\r\n‚±‚̈—‚Í’†’f‚³‚ê‚Ü‚·.Œ³‚̃ƒOƒtƒ@ƒCƒ‹‚Í•ÏX‚³‚ê‚Ü‚¹‚ñ."); + return FALSE; + } + if( ::CopyFile(dbrName, BackNameDBR, FALSE) == FALSE ){ + ErrorMB("ƒoƒbƒNƒAƒbƒv‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½.\r\n‚±‚̈—‚Í’†’f‚³‚ê‚Ü‚·.Œ³‚̃ƒOƒtƒ@ƒCƒ‹‚Í•ÏX‚³‚ê‚Ü‚¹‚ñ."); + return FALSE; + } + } + else if( r == IDCANCEL ){ + return FALSE; + } + } + m_fp = fopen(pName, add ? "r+b":"wb"); + if( m_fp == NULL ){ + ErrorMB( "'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } + m_dbrfp = fopen(dbrName, add ? "r+b":"wb"); + if( m_dbrfp == NULL ){ + ErrorMB( "'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", dbrName); + return FALSE; + } + + if( add ){ // ’ljÁ‚ÌŽž + if( (fread(&m_hd, 1, sizeof(m_hd), m_fp)!=sizeof(m_hd)) || + (m_hd.Memo != 0x1a) || + (m_hd.HeadLen != 449) || + (m_hd.DataLen != sizeof(m_RecBuf)) + ){ + fclose(m_fp); + m_fp = NULL; + fclose(m_dbrfp); + m_dbrfp = NULL; + ErrorMB("'%s'‚Í—\Šú‚µ‚È‚¢ƒtƒ@ƒCƒ‹Œ`Ž®‚Å‚·.", pName); + return FALSE; + } + if( (fread(&m_dbrhd, 1, sizeof(m_dbrhd), m_dbrfp)!=sizeof(m_dbrhd)) || + (m_dbrhd.Memo != 0x1a) || + (m_dbrhd.term != 0x1a) + ){ + fclose(m_fp); + m_fp = NULL; + fclose(m_dbrfp); + m_dbrfp = NULL; + ErrorMB("'%s'‚Í—\Šú‚µ‚È‚¢ƒtƒ@ƒCƒ‹Œ`Ž®‚Å‚·.", dbrName); + return FALSE; + } + fseek(m_dbrfp, 0, SEEK_END); // DBR‚ÌÅŒã‚Ɉړ® + } + else { // V‹K‚ÌŽž + MakeHD(); + } + m_FileName = pName; + m_Mode = 1; + m_DBRName = dbrName; + m_Index = m_hd.Max; + return TRUE; +} + +//---------------------------------------------------------------------- +int CHamLog::Seek(DWORD Index) +{ + long Pos = 449 + (Index * sizeof(m_RecBuf)); + if( fseek(m_fp, Pos, SEEK_SET) ) return FALSE; + m_Index = Index; + return TRUE; +} + +//---------------------------------------------------------------------- +//‚g‚`‚l‚k‚n‚f‚̃wƒbƒ_‚ðì¬ +BOOL CHamLog::MakeHD(void) +{ + memset(&m_hd, 0, sizeof(m_hd)); + memset(&m_dbrhd, 0, sizeof(m_dbrhd)); + m_hd.Memo = 0x1a; + SYSTEMTIME st; + ::GetLocal(&st); + m_hd.YY = BYTE(st.wYear % 100); + m_hd.MM = BYTE(st.wMonth); + m_hd.DD = BYTE(st.wDay); + m_hd.Max = 0; + memcpy(&m_dbrhd, &m_hd, sizeof(m_hd)); + m_hd.HeadLen = 449; + m_hd.DataLen = sizeof(m_RecBuf); + if( fwrite(&m_hd, 1, sizeof(m_hd), m_fp) != sizeof(m_hd) ) return FALSE; + + LPCSTR _Name[]={"CALLS","IGN","POTBL","CODE","GL","FREQ","MODE","NAME","QSL","DATE","TIME","RST","OFS"}; + BYTE _Len[]={6, 1, 3, 6, 6, 4, 3, 12, 3, 3, 2, 4, 4, 0}; + DBSLOT slot; + for( int i = 0; _Len[i]; i++ ){ + memset(&slot, 0, sizeof(slot)); + strcpy(slot.Name, _Name[i]); + slot.Type = 'C'; + slot.Len = _Len[i]; + if( fwrite(&slot, 1, sizeof(slot), m_fp)!=sizeof(slot) ) return FALSE; + } + slot.Name[0] = 0x0d; + if( fwrite(&slot, 1, 1, m_fp)!=1 ) return FALSE; + + m_dbrhd.m1 = 1; + m_dbrhd.term = 0x1a; + if( fwrite(&m_dbrhd, 1, sizeof(m_dbrhd), m_dbrfp)!=sizeof(m_dbrhd) ) return FALSE; + return TRUE; +} + +//--------------------------------------------------------------------------- +// HamLogƒtƒ@ƒCƒ‹‚̓ǂÝo‚µ +int CHamLog::Read(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + Seek(m_Index); + if( fread(&m_RecBuf, 1, sizeof(m_RecBuf), m_fp) == sizeof(m_RecBuf) ){ + HAMLOGtoMMLOG(sp, &m_RecBuf, m_dbrfp); + m_Index++; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------------- +// HamLogƒtƒ@ƒCƒ‹‚Ì‘‚«‚±‚Ý +int CHamLog::Write(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + if( MMLOGtoHAMLOG(&m_RecBuf, sp, m_dbrfp) == FALSE ){ + ErrorMB("'%s'‚É‘‚«ž‚Ý’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½.", m_DBRName.c_str()); + return FALSE; + } + Seek(m_hd.Max); + if( fwrite(&m_RecBuf, 1, sizeof(m_RecBuf), m_fp) != sizeof(m_RecBuf) ){ + ErrorMB("'%s'‚É‘‚«ž‚Ý’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + return FALSE; + } + else { + m_hd.Max++; + m_dbrhd.Max++; + return TRUE; + } +} +//---------------------------------------------------------------------- +//‚g‚`‚l‚k‚n‚f‚ÌŽü”g”‹L˜^•ûŽ®‚ð’Êí‚Ì•¶Žš—ñ‚ɕϊ· +void DecBand(LPSTR t, BYTE *pBand) +{ + if( pBand[3] & 0x80 ){ // ‚T`‚V•¶Žš‚Ì•¶Žš—ñ + int DotPos = pBand[3] & 0x7f; + int Len = (DotPos >> 3) & 0x07; + DotPos &= 0x07; + LPSTR p = t; + wsprintf(p, "%-7lu", (*((LONG *)pBand) & 0x00ffffffL)); + if( Len < 4 ){ // Ver3.19‚܂ł̋L˜^•ûŽ® + for(int i = 6; i > 3; i--){ + if(p[i]>'0'){ + break; + } + else if(p[i] == '0'){ + p[i] = ' '; + } + } + } + else { + if( Len < 6 ) p[6] = ' '; + if( Len == 4 ) p[5] = ' '; + } + p[DotPos] = '.'; + p[8] = 0; + } + else { // ‚»‚Ì‚Ü‚Ü + StrCopy(t, (LPCSTR)pBand, 4); + } + clipsp(t); + if( LastC(t) == '.' ){ + *lastp(t) = 0; + } +} + +void SetMMLOGKey(SDMMLOG *sp, LPSTR bf) +{ + char rbf[512]; + + if( RemoveL2(rbf, bf, "ToRadio", sizeof(rbf)-1) == TRUE ){ + StrCopy(sp->call, rbf, MLCALL); + } + else if( RemoveL2(rbf, bf, "CALL", sizeof(rbf)-1) == TRUE ){ + StrCopy(sp->call, rbf, MLCALL); + } + + if( RemoveL2(rbf, bf, "ENV", sizeof(rbf)-1) == TRUE ){ + sp->env = WORD(atoin(rbf, -1)); + } + if( RemoveL2(rbf, bf, "END", sizeof(rbf)-1) == TRUE ){ + int tim = atoin(rbf, -1); + int hh = tim / 100; + int mm = tim % 100; + sp->etime = WORD((hh * 60 + mm) * 30); + if( !sp->etime ) sp->etime++; + } + if( RemoveL2(rbf, bf, "POW", sizeof(rbf)-1) == TRUE ){ + StrCopy(sp->pow, rbf, MLPOW); + } + if( RemoveL2(rbf, bf, "M", sizeof(rbf)-1) == TRUE ){ + sp->cq = rbf[0]; + } + if( RemoveL2(rbf, bf, "SN", sizeof(rbf)-1) == TRUE ){ + int l = GetLMode(sp->mode); + if( l ) sp->ur[l] = 0; + strcat(sp->ur, rbf); + } + if( RemoveL2(rbf, bf, "RN", sizeof(rbf)-1) == TRUE ){ + int l = GetLMode(sp->mode); + if( l ) sp->my[l] = 0; + strcat(sp->my, rbf); + } +} +//--------------------------------------------------------------------------- +// HamLog -> MMLOG ƒtƒH[ƒ}ƒbƒg‚̕ϊ· +void HAMLOGtoMMLOG(SDMMLOG *sp, SDHAMLOG *hp, FILE *dbrfp) +{ + int CallOrder = 0; + char bf[512]; + + memset(sp, 0, sizeof(SDMMLOG)); + DecBand(bf, (BYTE *)hp->freq); + Log.SetFreq(sp, bf); + + StrCopy(bf, hp->mode, 3); + clipsp(bf); + if( !strcmp(bf, Log.m_LogSet.m_THRTTY.c_str()) || !strcmp(bf, "RTY") || !strcmp(bf, "TTY") || !strcmp(bf, "RTT") ){ + strcpy(bf, "RTTY"); + } + else if( !strcmp(bf, Log.m_LogSet.m_THSSTV.c_str()) || !strcmp(bf, "STV")|| !strcmp(bf, "SST") ){ + strcpy(bf, "SSTV"); + } + else if( !strcmp(bf, "FTV") ){ + strcpy(bf, "FSTV"); + } + Log.SetMode(sp, bf); + + StrCopy(sp->name, hp->name, 12); + clipsp(sp->name); + + sprintf(sp->ur, "%02u", BYTE(hp->hiss[0])); + if( hp->hiss[1] != ' ' ) sp->ur[2] = hp->hiss[1]; + + sprintf(sp->my, "%02u", BYTE(hp->myrs[0])); + if( hp->myrs[1] != ' ' ) sp->my[2] = hp->myrs[1]; + + int YY, MM, DD, HH, mm; + YY = hp->date[0] & 0x007f; + YY %= 100; + MM = hp->date[1]; + DD = hp->date[2]; + HH = hp->time[0]; + mm = hp->time[1] & 0x7f; + if( hp->time[1] & 0x80 ){ + UTCtoJST(YY, MM, DD, HH); + } + sp->year = BYTE(YY); + sp->date = WORD(MM * 100 + DD); + sp->btime = WORD(((HH * 60 + mm) * 30)); + if(!sp->btime) sp->btime++; + + if( hp->ofs && (dbrfp != NULL) ){ + FHDDBR fhdbr; + if( fseek(dbrfp, hp->ofs, SEEK_SET) ) goto _ex; + if( fread(&fhdbr, 1, sizeof(fhdbr), dbrfp) != sizeof(fhdbr) ){ + goto _ex; + } + if( fhdbr.LenQTH ){ + if( fread(bf, 1, fhdbr.LenQTH, dbrfp)!=size_t(fhdbr.LenQTH) ){ + goto _ex; + } + bf[fhdbr.LenQTH] = 0; + clipsp(bf); + StrCopy(sp->qth, bf, MLQTH); + } + if( fhdbr.LenREM1 ){ + if( fread(bf, 1, fhdbr.LenREM1, dbrfp)!=size_t(fhdbr.LenREM1) ){ + goto _ex; + } + bf[fhdbr.LenREM1] = 0; + SetMMLOGKey(sp, bf); + clipsp(bf); + if( strstr(bf, "$DX" ) != NULL ) CallOrder = 1; + StrCopy(sp->rem, SkipSpace(bf), MLREM); + } + if( fhdbr.LenREM2 ){ + if( fread(bf, 1, fhdbr.LenREM2, dbrfp)!=size_t(fhdbr.LenREM2) ){ + goto _ex; + } + bf[fhdbr.LenREM2] = 0; + SetMMLOGKey(sp, bf); + clipsp(bf); + if( strstr(bf, "$DX" ) != NULL ) CallOrder = 1; + StrCopy(sp->qsl, SkipSpace(bf), MLQSL); + } + } +_ex:; + sprintf(bf, "QSL[%.3s]", hp->qsl); + Log.SetOptStr(2, sp, bf); + if( hp->qsl[0] == 'N' ){ + sp->send = 'N'; + } + else if( hp->send[0] == ' ' ){ // –¢”­‘— + if( (hp->qsl[0] == 'J')||(hp->qsl[0] == ' ') ){ + sp->send = 0; + } + else { + sp->send = BYTE(tolower(hp->qsl[0])); + } + } + else { // ”­‘—Ï‚Ý + sp->send = BYTE(toupper(hp->send[0])); + } + sp->recv = hp->rcv[0]; + if( sp->recv == ' ' ) sp->recv = 0; + + StrCopy(sp->opt1, hp->code, 6); + StrCopy(sp->opt2, hp->glid, 6); + + if( !sp->call[0] ){ + if( CallOrder && (hp->potbl[0] != ' ') ){ /* KH6/JE3HHT‚ÌŒ`Ž® */ + StrCopy(bf, hp->potbl, 3); + clipsp(bf); + strcat(sp->call, bf); + if( sp->call[0] ) strcat(sp->call, "/"); + StrCopy(bf, hp->calls, 7); + clipsp(bf); + strcat(sp->call, bf); + } + else { /* JE3HHT/KH6‚ÌŒ`Ž® */ + StrCopy(bf, hp->calls, 7); + clipsp(bf); + strcat(sp->call, bf); + if( hp->potbl[0] != ' ' ){ + if( sp->call[0] ) strcat(sp->call, "/"); + StrCopy(bf, hp->potbl, 3); + clipsp(bf); + strcat(sp->call, bf); + } + } + } + if( !sp->etime ) sp->etime = sp->btime; +} +//---------------------------------------------------------------------- +//•¶Žš—ñ‚̃Rƒs[iƒkƒ‹‚̓Zƒbƒg‚³‚ê‚È‚¢j +void SpaceCopy(LPSTR t, LPCSTR s, int n) +{ + for( ; n && *s; s++, t++, n-- ){ + *t = *s; + } +} +//---------------------------------------------------------------------- +//‚q‚r‚s•¶Žš—ñ‚ð‚g‚`‚l‚k‚n‚fŒ`Ž®‚ɕϊ·‚µ‚ÄŠi”[ +void SetRST(char *pRST, LPCSTR p, BYTE mode) +{ + char rs[3]; + int rst; + + StrCopy(rs, p, 2); + if( sscanf(rs, "%d", &rst) == 1 ){ + *pRST = BYTE(rst); + } + else { + *pRST = 59; + } + if( strlen(p) < 3 ) return; + if( GetLMode(mode) == 2 ) return; + pRST[1] = *(p+2); +} +//---------------------------------------------------------------------- +//Žü”g”‚Ì•¶Žš—ñ‚ð‚g‚`‚l‚k‚n‚f‚ÌŽü”g”‹L˜^•ûŽ®‚ɕϊ· +void EncBand(BYTE *pBand, LPCSTR pStr) +{ + char bf[32]; + StrCopy(bf, pStr, 7); + + int Len = strlen(bf); + if( Len <= 4 ){ + memset(pBand, ' ', 4); + SpaceCopy(LPSTR(pBand), bf, 4); + } + else { + LPSTR p = strchr(bf, '.'); + int DotPos; + if( p != NULL ){ + DotPos = p - bf; + *p = '0'; + } + else { + DotPos = Len; + } + long Freq; + sscanf(bf, "%lu", &Freq); + *(ULONG *)pBand = Freq; + pBand[3] = BYTE(0x0080 | (Len << 3) | DotPos); + } +} + +void AddMMLOGKey(AnsiString &REM1, AnsiString &REM2, LPCSTR s, LPCSTR pKey) +{ + if( !*s ) return; + + int len1 = strlen(REM1.c_str()); + int len2 = strlen(REM2.c_str()); + int len = strlen(s); + if( pKey == NULL ){ + len++; + } + else { + len += strlen(pKey) + 3; + } + AnsiString *ap; + if( (len2 + len) < 54 ){ + ap = &REM2; + } + else if( (len1 + len) < 54 ){ + ap = &REM1; + } + else { + return; + } + if( !ap->IsEmpty() ){ + *ap += " "; + } + if( pKey != NULL ){ + *ap += pKey; + *ap += '['; + } + *ap += s; + if( pKey != NULL ){ + *ap += ']'; + } +} +//--------------------------------------------------------------------------- +// MMLOG -> HamLog ƒtƒH[ƒ}ƒbƒg‚̕ϊ· +int MMLOGtoHAMLOG(SDHAMLOG *hp, SDMMLOG *sp, FILE *dbrfp) +{ + char bf[512]; + + int CallOrder = FALSE; + memset(hp, ' ', sizeof(SDHAMLOG)); + int YY = sp->year; + int MM = sp->date / 100; + int DD = sp->date % 100; + int tim = sp->btime / 30; + int HH = tim / 60; + int mm = tim % 60; + switch(Log.m_LogSet.m_THTZ){ + case 0: + if( !IsJA(sp->call) ){ + JSTtoUTC(YY, MM, DD, HH); + mm |= 0x80; + } + break; + case 1: + JSTtoUTC(YY, MM, DD, HH); + mm |= 0x80; + break; + default: + break; + } + hp->date[0] = BYTE(YY < 50 ? YY + 128 : YY); + hp->date[1] = BYTE(MM); + hp->date[2] = BYTE(DD); + hp->time[0] = BYTE(HH); + hp->time[1] = BYTE(mm); + + SpaceCopy(hp->name, sp->name, 12); + SpaceCopy(hp->code, sp->opt1, 6); + SpaceCopy(hp->glid, sp->opt2, 6); + AnsiString QTH = sp->qth; + AnsiString REM1 = sp->rem; + AnsiString REM2 = sp->qsl; + + strcpy(bf, sp->call); + LPSTR pp, p2, t; + t = bf; + if( (pp = strchr(bf, '/')) != NULL ){ // KH6/JE3HHT or JE3HHT/KH6 ‚ÌŒ`Ž® + *pp = 0; + pp++; + int LenC = strlen(t); + int LenP = strlen(pp); + if( ((p2 = strchr(pp, '/')) != NULL)|| + (LenC > 7) || + (LenP > 7) || + ((LenC > LenP) && (LenP>3)) || + ((LenC < LenP) && (LenC>3)) + ){ + // HAMLOG‚ł͕\Œ»‚Å‚«‚È‚¢•\‹L‚Ìê‡ + AddMMLOGKey(REM1, REM2, sp->call, "ToRadio"); + if( p2 != NULL ){ + *p2 = 0; + LenP = strlen(pp); + } + } + if( LenC < LenP ){ + p2 = t; + t = pp; + pp = p2; + CallOrder = TRUE; + } + SpaceCopy(hp->potbl, pp, 3); + } + else if( strlen(t) > 7 ){ + AddMMLOGKey(REM1, REM2, sp->call, "ToRadio"); + } + SpaceCopy(hp->calls, t, 7); + strcpy(bf, Log.GetModeString(sp->mode)); + if( !strcmp(bf, "RTTY") ){ + StrCopy(bf, Log.m_LogSet.m_THRTTY.c_str(), 3); + } + else if( !strcmp(bf, "SSTV") ){ + StrCopy(bf, Log.m_LogSet.m_THSSTV.c_str(), 3); + } + else if( !strcmp(bf, "FSTV") ){ + strcpy(bf, "FTV"); + } + else if( !strcmp(bf, "BPSK") ){ + strcpy(bf, "PSK"); + } + else if( !strcmp(bf, "QPSK") ){ + strcpy(bf, "PSK"); + } + SpaceCopy(hp->mode, bf, 3); + SetRST(hp->hiss, sp->ur, sp->mode); + SetRST(hp->myrs, sp->my, sp->mode); + + int l = GetLMode(sp->mode); + if( sp->ur[l] ) AddMMLOGKey(REM1, REM2, &sp->ur[l], "SN"); + if( sp->my[l] ) AddMMLOGKey(REM1, REM2, &sp->my[l], "RN"); + + strcpy(bf, Log.GetFreqString(sp->band, sp->fq)); + EncBand((BYTE *)hp->freq, bf); + + + if( CallOrder && (!strstr(sp->rem, "$DX")) && (!strstr(sp->qsl, "$DX")) ){ + AddMMLOGKey(REM1, REM2, "$DX", NULL); + } + + if( sp->etime ){ + tim = sp->etime / 30; + sprintf(bf, "%02u%02u", tim / 60, tim % 30); + AddMMLOGKey(REM1, REM2, bf, "END"); + } + if( sp->env ){ + sprintf(bf, "%u", sp->env); + AddMMLOGKey(REM1, REM2, bf, "ENV"); + } + AddMMLOGKey(REM1, REM2, sp->pow, "POW"); + if( sp->cq ){ + bf[0] = sp->cq; bf[1] = 0; + AddMMLOGKey(REM1, REM2, bf, "M"); + } + strcpy(bf, Log.GetOptStr(2, sp)); + char rbf[32]; + if(RemoveL2(rbf, bf, "QSL", sizeof(rbf)-1) == TRUE){ + hp->qsl[0] = rbf[0]; + hp->send[0] = rbf[1]; + hp->rcv[0] = rbf[2]; + } + else { + hp->rcv[0] = sp->recv; + if( !hp->rcv[0] ) hp->rcv[0] = ' '; + if( sp->send == 'N' ){ + hp->qsl[0] = 'N'; + hp->send[0] = ' '; + } + else if( !sp->send ){ + hp->qsl[0] = 'J'; + hp->send[0] = ' '; + } + else if( (sp->send >= 0x60)||(sp->send == '?') ){ + hp->qsl[0] = BYTE(toupper(sp->send)); + hp->send[0] = ' '; + } + else if( isalpha(sp->send) ){ + hp->qsl[0] = sp->send; + hp->send[0] = '*'; + } + else { + hp->qsl[0] = 'J'; + hp->send[0] = sp->send; + } + } + + if( !QTH.IsEmpty() || !REM1.IsEmpty() || !REM2.IsEmpty() ){ + FHDDBR fhdbr; + memset(&fhdbr, 0, sizeof(fhdbr)); + hp->ofs = ftell(dbrfp); + fhdbr.LenQTH = BYTE(strlen(QTH.c_str())); + fhdbr.LenREM1 = BYTE(strlen(REM1.c_str())); + fhdbr.LenREM2 = BYTE(strlen(REM2.c_str())); + if( fhdbr.LenQTH > 28 ){ + fhdbr.LenQTH = 28; + } + if( fhdbr.LenREM1 > 54 ){ + fhdbr.LenREM1 = 54; + } + if( fhdbr.LenREM2 > 54 ){ + fhdbr.LenREM2 = 54; + } + if( fwrite(&fhdbr, 1, sizeof(fhdbr), dbrfp) != sizeof(fhdbr) ) return FALSE; + if( fhdbr.LenQTH ){ + if( fwrite(QTH.c_str(), 1, fhdbr.LenQTH, dbrfp) != size_t(fhdbr.LenQTH) ) return FALSE; + } + if( fhdbr.LenREM1 ){ + if( fwrite(REM1.c_str(), 1, fhdbr.LenREM1, dbrfp) != size_t(fhdbr.LenREM1) ) return FALSE; + } + if( fhdbr.LenREM2 ){ + if( fwrite(REM2.c_str(), 1, fhdbr.LenREM2, dbrfp) != size_t(fhdbr.LenREM2) ) return FALSE; + } + } + else { + hp->ofs = 0L; + } + return TRUE; +} + +//*************************************************************************** +// CLogADIF ƒNƒ‰ƒX +CLogADIF::CLogADIF() +{ + m_bf[sizeof(m_bf)-1] = 0; +} +//--------------------------------------------------------------------------- +// ADIFƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CLogADIF::Open(LPCSTR pName) +{ + Close(); + m_Mode = 0; + + m_p = NULL; + m_conv = 1; + m_fp = fopen(pName, "rt"); + if( m_fp != NULL ){ + setvbuf(m_fp, NULL, _IOFBF, 16384); + m_FileName = pName; + m_Mode = 0; + return TRUE; + } + else { + ErrorMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't open '%s'": "'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// ADIFƒtƒ@ƒCƒ‹‚Ìì¬ +int CLogADIF::Create(LPCSTR pName) +{ + Close(); + m_Mode = 1; + + m_fp = fopen(pName, "wt"); + if( m_fp != NULL ){ + setvbuf(m_fp, NULL, _IOFBF, 16384); + m_FileName = pName; + m_Mode = 1; + fprintf(m_fp, "ADIF Export from %s\n", VERTTL); + fprintf(m_fp, "\n\n"); + return TRUE; + } + else { + ErrorMB( (sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't write to '%s'":"'%s'‚ªì¬‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CLogADIF::Close(void) +{ + int r = 0; + if( m_fp != NULL ){ + r = fclose(m_fp); + m_fp = NULL; + if( r ){ + ErrorMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't write to '%s'":"'%s'‚ª³‚µ‚­ƒNƒ[ƒY‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FileName.c_str()); + } + else if( m_Mode ){ + InfoMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Done (write to '%s')":"'%s'‚Ö‚Ì‘‚«‚±‚Ý‚ðI—¹‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + } + } + return r ? FALSE : TRUE; +} +const char *_mb[]={ + "","160m","80m","80m","40m","30m","20m","17m","15m","12m","10m","6m", + "2m","70cm","23cm","13cm","6cm","3cm","3cm","1.25cm","6mm", + "4mm","2mm","1mm","65m","1.25m",NULL, +}; +//--------------------------------------------------------------------------- +// ADIFƒtƒ@ƒCƒ‹‚̓ǂÝo‚µ +void CLogADIF::SetData(SDMMLOG *sp, LPCSTR pKey, LPSTR pData) +{ + int l; + + if( !strcmpi(pKey, "CALL") ){ + StrCopy(sp->call, pData, MLCALL); + } + else if( !strcmpi(pKey, "QSO_DATE") ){ + sp->year = BYTE(atoin(pData, 4) % 100); + sp->date = WORD(atoin(pData+4, 4)); + } + else if( !strcmpi(pKey, "TIME_ON") ){ + int hh, mm, ss; + hh = atoin(pData, 2); + mm = atoin(pData+2, 2); + ss = pData[4] ? atoin(pData+4, 2) : 0; + sp->btime = WORD((hh * 60 + mm) * 30 + ss); + if( !sp->btime ) sp->btime++; + } + else if( !strcmpi(pKey, "TIME_OFF") ){ + int hh, mm, ss; + hh = atoin(pData, 2); + mm = atoin(pData+2, 2); + ss = pData[4] ? atoin(pData+4, 2) : 0; + sp->btime = WORD((hh * 60 + mm) * 30 + ss); + if( !sp->etime ) sp->btime++; + } + else if( !strcmpi(pKey, "FREQ") ){ + Log.SetFreq(sp, pData); + } + else if( !strcmpi(pKey, "BAND") ){ + if( !sp->band ){ + int i; + for( i = 1; _mb[i] != NULL; i++ ){ + if( !strcmpi(_mb[i], pData) ) break; + } + if( _mb[i] == NULL ) i = 0; + sp->band = BYTE(i); + } + } + else if( !strcmpi(pKey, "MODE") ){ + Log.SetMode(sp, pData); + } + else if( !strcmpi(pKey, "TX_PWR") ){ + StrCopy(sp->pow, pData, MLPOW); + } + else if( !strcmpi(pKey, "RST_SENT") ){ + if( sp->ur[0] ){ + char bf[MLRST+1]; + strcpy(bf, sp->ur); + StrCopy(sp->ur, pData, MLRST); + l = strlen(sp->ur); + StrCopy(&sp->ur[l], bf, MLRST - l); + } + else { + StrCopy(sp->ur, pData, MLRST); + } + } + else if( !strcmpi(pKey, "RST_RCVD") ){ + if( sp->my[0] ){ + char bf[MLRST+1]; + strcpy(bf, sp->my); + StrCopy(sp->my, pData, MLRST); + l = strlen(sp->my); + StrCopy(&sp->my[l], bf, MLRST - l); + } + else { + StrCopy(sp->my, pData, MLRST); + } + } + else if( !strcmpi(pKey, "STX") ){ + l = strlen(sp->ur); + StrCopy(&sp->ur[l], pData, MLRST - l); + } + else if( !strcmpi(pKey, "SRX") ){ + l = strlen(sp->my); + StrCopy(&sp->my[l], pData, MLRST - l); + } + else if( !strcmpi(pKey, "QSL_SENT") ){ + if( *pData == ' ' ) *pData = 0; + sp->send = *pData; + } + else if( !strcmpi(pKey, "QSL_RCVD") ){ + if( *pData == ' ' ) *pData = 0; + sp->recv = *pData; + } + else if( !strcmpi(pKey, "NAME") ){ + StrCopy(sp->name, pData, MLNAME); + } + else if( !strcmpi(pKey, "QTH") ){ + StrCopy(sp->qth, pData, MLQTH); + } + else if( !strcmpi(pKey, "COMMENT") ){ + StrCopy(sp->rem, pData, MLREM); + } + else if( !strcmpi(pKey, "QSLMSG") ){ + StrCopy(sp->qsl, pData, MLQSL); + } + else if( !strcmpi(pKey, "CONT") ){ + StrCopy(sp->opt2, pData, MLOPT); + } + else if( !strcmpi(pKey, "QSL_VIA") ){ + AddL2(sp->qsl, "QSL", pData, '[', ']', MLQSL); + } +} +//--------------------------------------------------------------------------- +void CLogADIF::AdjustData(SDMMLOG *sp) +{ + if( !sp->etime ) sp->etime = sp->btime; + UTCtoJST(sp); + if( sp->call[0] ){ + LPCSTR pCC = ClipCC(sp->call); + Log.SetOptStr(0, sp, Cty.GetCountry(pCC)); + if( !sp->opt2[0] ) Log.SetOptStr(1, sp, Cty.GetCont(pCC)); + } + if( !sp->ur[0] ) StrCopy(sp->ur, "599", GetLMode(sp->mode)); + if( !sp->my[0] ) StrCopy(sp->my, "599", GetLMode(sp->mode)); +} +//--------------------------------------------------------------------------- +// ADIFƒtƒ@ƒCƒ‹‚̓ǂÝo‚µ +int CLogADIF::Read(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + LPSTR p, t, tt; + char bf[1024]; + + while(1){ + if( (m_p == NULL) || !(*m_p) ){ + if( !feof(m_fp) ){ + if( fgets(m_bf, sizeof(m_bf), m_fp) != NULL ){ + ClipLF(m_bf); + m_p = m_bf; + } + else if( sp->btime && sp->call[0] && m_conv ){ + AdjustData(sp); + m_p = NULL; + return TRUE; + } + else { + return FALSE; + } + } + else { + return FALSE; + } + } + m_p = SkipSpace(m_p); + if( *m_p == '<' ){ + m_p = StrDlm(p, m_p+1, '>'); + p = StrDlm(t, p, ':'); + p = StrDlm(tt, p, ':'); + bf[0] = 0; + int n = *tt ? atoin(tt, -1) : 0; + if( (n >= 0) && (n < 1023) && (n <= (int)strlen(m_p)) ){ + if( n ) memcpy(bf, m_p, n); + bf[n] = 0; + } + if( !strcmpi(t, "EOR") ){ + if( m_conv ){ + AdjustData(sp); + return TRUE; + } + } + if( !strcmpi(t, "EOH") ){ + m_conv = 1; + } + else if( m_conv ){ + SetData(sp, t, bf); +#if 0 + FILE *fp = fopen("F:\\TEST.TXT", "at"); + fprintf(fp, "%s:%s\n", t, bf); + fclose(fp); +#endif + m_p += n; + } + } + else if( *m_p ){ + m_p++; + } + } +} +//--------------------------------------------------------------------------- +void CLogADIF::OutF(int &col, FILE *fp, LPCSTR fmt, ...) +{ + va_list pp; + char bf[512]; + + va_start(pp, fmt); + vsprintf(bf, fmt, pp ); + va_end(pp); + if( col ){ + fputs(" ", fp); + col++; + } + int l = strlen(bf); + if( (col + l) > 80 ){ + fputs("\n", fp); + col = 0; + } + fputs(bf, fp); + col += l; +} +//--------------------------------------------------------------------------- +// o—͕ϊ· +// +//KD4MUL 19930921 223558 150000 +//3.690 80M CW 100 599 +//599 Y N ROY STRUNK +//KY FIRST CW CONTACT WB4TXW +int CLogADIF::Write(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; + + int col = 0; + JSTtoUTC(sp); + OutF(col, m_fp, "%s", strlen(sp->call), sp->call); + OutF(col, m_fp, "%04u%02u%02u", YEAR(sp->year), sp->date/100, sp->date%100); + int tim = sp->btime / 30; + OutF(col, m_fp, "%02u%02u%02u", tim/60, tim%60, (sp->btime % 30)*2); + tim = sp->etime / 30; + OutF(col, m_fp, "%02u%02u%02u", tim/60, tim%60, (sp->etime % 30)*2); + LPCSTR p = Log.GetFreqString(sp->band, sp->fq); + if( *p ) OutF(col, m_fp, "%s", strlen(p), p); + p = _mb[sp->band]; + if( *p ) OutF(col, m_fp, "%s", strlen(p), p); + p = Log.GetModeString(sp->mode); + if( *p ) OutF(col, m_fp, "%s", strlen(p), p); + if( sp->pow[0] ) OutF(col, m_fp, "%s", strlen(sp->pow), sp->pow); + int l = GetLMode(sp->mode); + if( Log.m_LogSet.m_ClipRSTADIF ){ + if( sp->ur[l] ) OutF(col, m_fp, "%s", strlen(&sp->ur[l]), &sp->ur[l]); + if( sp->my[l] ) OutF(col, m_fp, "%s", strlen(&sp->my[l]), &sp->my[l]); + sp->ur[GetLMode(sp->mode)] = 0; + sp->my[GetLMode(sp->mode)] = 0; + } + if( sp->ur[0] ) OutF(col, m_fp, "%s", strlen(sp->ur), sp->ur); + if( sp->my[0] ) OutF(col, m_fp, "%s", strlen(sp->my), sp->my); + if( sp->send ) OutF(col, m_fp, "%c", sp->send); + if( sp->recv ) OutF(col, m_fp, "%c", sp->recv); + if( sp->name[0] ) OutF(col, m_fp, "%s", strlen(sp->name), sp->name); + if( sp->qth[0] ) OutF(col, m_fp, "%s", strlen(sp->qth), sp->qth); + if( sp->rem[0] ) OutF(col, m_fp, "%s", strlen(sp->rem), sp->rem); + if( sp->opt2[0] ) OutF(col, m_fp, "%s", strlen(sp->opt2), sp->opt2); + + if( sp->qsl[0] ){ + char via[MLQSL+1]; + char qsl[MLQSL+1]; + StrCopy(qsl, sp->qsl, MLQSL); + if( !RemoveL2(via, qsl, "QSL", sizeof(via)-1) ){ + via[0] = 0; + } + if( qsl[0] ) OutF(col, m_fp, "%s", strlen(qsl), qsl); + if( via[0] ) OutF(col, m_fp, "%s", strlen(via), via); + } + OutF(col, m_fp, "\n"); + return ferror(m_fp) ? FALSE : TRUE; +} + + +//*************************************************************************** +// CLogCabrillo ƒNƒ‰ƒX +CLogCabrillo::CLogCabrillo() +{ + m_bf[sizeof(m_bf)-1] = 0; +} +//--------------------------------------------------------------------------- +// LogCabrilloƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CLogCabrillo::Open(LPCSTR pName) +{ + Close(); + m_Mode = 0; + + m_p = NULL; + m_SNR = ""; + m_fp = fopen(pName, "rt"); + if( m_fp != NULL ){ + setvbuf(m_fp, NULL, _IOFBF, 16384); + m_FileName = pName; + m_Mode = 0; + return TRUE; + } + else { + ErrorMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't open '%s'": "'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// LogCabrilloƒtƒ@ƒCƒ‹‚Ìì¬ +int CLogCabrillo::Create(LPCSTR pName) +{ + Close(); + m_Mode = 1; + + m_fp = fopen(pName, "wt"); + if( m_fp != NULL ){ + setvbuf(m_fp, NULL, _IOFBF, 16384); + m_FileName = pName; + m_Mode = 1; + fprintf( m_fp, "START-OF-LOG: 2.0\n"); + fprintf( m_fp, "ARRL-SECTION: \n" ); + fprintf( m_fp, "CONTEST: <== e.g. ARRL-RTTY, CQ-WW-RTTY, CQ-WPX-RTTY, BARTG-SPRINT, BARTG-RTTY\n"); + fprintf( m_fp, "CALLSIGN: %s\n", sys.m_Call.c_str() ); + fprintf( m_fp, "CATEGORY: <== e.g. SINGLE-OP ALL HIGH, SINGLE-OP-ASSISTED 20M LOW\n" ); + fprintf( m_fp, "CLAIMED-SCORE: \n"); + fprintf( m_fp, "OPERATORS:\n" ); + fprintf( m_fp, "CLUB:\n" ); + fprintf( m_fp, "NAME: <== your name\n" ); + fprintf( m_fp, "ADDRESS: <== your postal address\n" ); + fprintf( m_fp, "SOAPBOX: \n" ); + fprintf( m_fp, "CREATED-BY: %s\n", VERTTL2); + return TRUE; + } + else { + ErrorMB( (sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't write to '%s'":"'%s'‚ªì¬‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } +} +//--------------------------------------------------------------------------- +// ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ +int CLogCabrillo::Close(void) +{ + int r = 0; + if( m_fp != NULL ){ + fprintf(m_fp, "END-OF-LOG:\n"); + r = fclose(m_fp); + m_fp = NULL; + if( r ){ + ErrorMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Can't write to '%s'":"'%s'‚ª³‚µ‚­ƒNƒ[ƒY‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FileName.c_str()); + } + else if( m_Mode ){ + InfoMB((sys.m_WinFontCharset!= SHIFTJIS_CHARSET) ? "Done (write to '%s')\r\n\r\nMMTTY did only make QSO section.\r\nEdit to the contest name, category, your name and address, etc... in the file.":"'%s'‚Ö‚Ì‘‚«‚±‚Ý‚ðI—¹‚µ‚Ü‚µ‚½.\r\n\r\nMMTTY‚ÍQSOƒZƒNƒVƒ‡ƒ“‚µ‚©ì¬‚µ‚Ü‚¹‚ñB\r\nƒRƒ“ƒeƒXƒg–¼AŽQ‰ÁƒJƒeƒSƒŠ“™‚ð•ÒW‚µ‚Ä‚­‚¾‚³‚¢.", m_FileName.c_str()); + sprintf(m_bf, "NOTEPAD.EXE %s", m_FileName.c_str()); + WinExec(m_bf, SW_SHOWDEFAULT); + } + } + return r ? FALSE : TRUE; +} +//--------------------------------------------------------------------------- +// LogCabrilloƒtƒ@ƒCƒ‹‚̓ǂÝo‚µ +int CLogCabrillo::Read(SDMMLOG *sp) +{ + return FALSE; +} +//--------------------------------------------------------------------------- +// o—͕ϊ· +// +int CLogCabrillo::Write(SDMMLOG *sp) +{ + if( !IsOpen() ) return FALSE; +// "","1.9","3.5","3.8","7","10","14","18","21","24","28","50", +// "144","430","1200","2400","5600","10.1G","10.4G","24G","47G", +// "75G","142G","248G","4630","220",NULL, + const char *_bandc[]={ + "??","1800","3500","3500","7000","10000","14000","18000","21000","24000","28000", + "A", "B","D","E","F","H","I","J","K","M", + "N","P","R","?","C",NULL, + }; + +// "CW","SSB","AM","FM","RTTY","PAC","FAX","SSTV","ATV","TV","FSTV", +// "A1","A2","A3","A3A","A3H","A3J","A4","A5","A5C","A5J", +// "A9","A9C","F1","F2","F3","F4","F5","F9","P0","P1", +// "P2D","P2E","P2F","P3D","P3E","P3F","P9", +// "U1","U2","U3","U4", +// "PSK","BPSK","QPSK","HELL","MFSK", + const char *_modec[]={ + "??", + "CW","PH","PH","FM","RY","RY","??","TV","TV","TV","TV", + "CW","CW","PH","PH","PH","PH","??","??","??","??", + "??","??","RY","RY","FM","??","??","??", + "??","??","??","??","??","??","??","??","??", + "??","??","??","??", + "RY","RY","RY","CW","RY", + NULL, + }; + + JSTtoUTC(sp); + int tim = sp->btime / 30; + char SNO[MLRST+1]; + char RNO[MLRST+1]; + int mno = sp->mode >= MODEMAX ? 0 : sp->mode; + int len = GetLMode(BYTE(mno)); + strcpy(SNO, &sp->ur[len]); + strcpy(RNO, &sp->my[len]); + sp->ur[len] = 0; + sp->my[len] = 0; + if( !SNO[0] ){ + if( m_SNR.IsEmpty() ){ + int r; + if( sys.m_WinFontCharset!= SHIFTJIS_CHARSET ){ + r = InputMB("Does not exist the Sent-NR information", "Enter contest number which you sent", m_SNR); + } + else { + r = InputMB("Sent-NRî•ñ‚ª‘¶Ý‚µ‚Ü‚¹‚ñ", "Sent-NR‚ð“ü—Í‚µ‚ĉº‚³‚¢", m_SNR); + } + if( r == FALSE ) return FALSE; + } + strcpy(SNO, m_SNR.c_str()); + } +/* + KHz MODE DATE UTC MYCALL SENT NR HISCALL RCVD NR TXID +------------------------------1234567890123 123 123456 1234567890123 123 123456 +QSO: nnnnn RY YYYY-MM-DD HHMM JE1CKA 599 13 DX NN7NN 599 03 NV 0 +1234 12345 12 1234567890 1234 1234567890123 123 12 123 1234567890123 123 12 12 1 +*/ + fprintf( m_fp, "QSO:%6s %2s %04u-%02u-%02u %02u%02u %-13s %-3s %-6s %-13s %-3s %-6s\n", + _bandc[sp->band], _modec[mno], + (sp->year <= 50) ? sp->year + 2000 : sp->year + 1900, + sp->date / 100, sp->date % 100, + tim/60, tim%60, sys.m_Call.c_str(), + sp->ur, SNO, + sp->call, sp->my, RNO + ); + return ferror(m_fp) ? FALSE : TRUE; +} + diff --git a/LogConv.h b/LogConv.h new file mode 100644 index 0000000..8d4b510 --- /dev/null +++ b/LogConv.h @@ -0,0 +1,248 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef LogConvH +#define LogConvH +#include "LogFile.h" + +extern const char *MONT1[]; +extern const char *MONT2[]; +//************************************************************* +// ƒƒO•ÏŠ·‚ÌŠî–{ƒNƒ‰ƒX +// +class CLogConv +{ +protected: + int m_Type; // 0-TEXT, 1-LOG200, 2-HAMLOG, 3-DBASE + int m_Mode; // 0-Read, 1-Write + FILE *m_fp; + + AnsiString m_FileName; // •ÏŠ·’†‚̃tƒ@ƒCƒ‹–¼ +public: + CLogConv(); + virtual ~CLogConv(); + virtual int IsOpen(void){return m_fp != NULL ? 1 : 0;}; + virtual int Open(LPCSTR pName)=0; + virtual int Create(LPCSTR pName)=0; + virtual int Close(void)=0; + virtual int Read(SDMMLOG *sp)=0; + virtual int Write(SDMMLOG *sp)=0; +}; + +#define TEXTCONVMAX 64 +typedef struct { + int w; + AnsiString Key; +}TCONV; + +//************************************************************* +// ƒeƒLƒXƒgƒtƒ@ƒCƒ‹ƒAƒNƒZƒX‚̃Nƒ‰ƒX +// +class CLogText : public CLogConv +{ +public: + int m_Double; + int m_Delm; + TCONV m_rConv[TEXTCONVMAX]; + TCONV m_tConv[TEXTCONVMAX]; + int m_UTC; + int m_err; +protected: + char m_bf[2048]; // ƒtƒ@ƒCƒ‹ƒoƒbƒtƒ@ + +private: + int Text2MMLOG(SDMMLOG *sp, LPSTR p, int &err); + void MMLOG2Text(LPSTR t, SDMMLOG *sp); + +public: + CLogText(); + virtual int Open(LPCSTR pName); + virtual int Create(LPCSTR pName); + virtual int Close(void); + virtual int Read(SDMMLOG *sp); + virtual int Write(SDMMLOG *sp); + +}; + +void MMLOG2Text(LPSTR t, SDMMLOG *sp, AnsiString &Key); +int Text2MMLOG(SDMMLOG *sp, LPCSTR s, AnsiString &Key); +extern const LPCSTR ConvTbl[]; +extern CLogText LogText; + +//************************************************************* +// ‚k‚n‚f‚Q‚O‚Oƒtƒ@ƒCƒ‹ƒAƒNƒZƒX‚̃Nƒ‰ƒX +// +#define LOG200WIDTH 200 +class CLog200 : public CLogConv +{ +public: + int m_Index; + int m_err; +protected: + char m_bf[200]; // ƒtƒ@ƒCƒ‹ƒoƒbƒtƒ@ +private: +public: + CLog200(); + virtual int Open(LPCSTR pName); + virtual int Create(LPCSTR pName); + virtual int Close(void); + virtual int Read(SDMMLOG *sp); + virtual int Write(SDMMLOG *sp); +}; + +//************************************************************* +// ‚g‚`‚l‚k‚n‚fƒtƒ@ƒCƒ‹ƒAƒNƒZƒX‚̃Nƒ‰ƒX +// +#pragma option -a- // ƒpƒbƒN‚ÌŽwަ +typedef struct { + char Memo; // 03h=ÒǪ́°ÙÄÞ–³‚µ 83h=ÒǪ́°ÙÄÞ—L‚èiHAMLOG‚Å‚Í 1Ahj + char YY, MM, DD; // ÅIXV”NŒŽ“ú + long Max; // Úº°ÄÞŒ” + WORD HeadLen; // ͯÀÞ‚Ì’·‚³iHAMLOG.DBS‚Í 449j + WORD DataLen; // Úº°ÄÞ‚Ì’·‚³iHAMLOG.DBS‚Í 58j + char dummy[20]; // 00h +}DBSHD; + +typedef struct { + char Memo; // 03h=ÒǪ́°ÙÄÞ–³‚µ 83h=ÒǪ́°ÙÄÞ—L‚èiHAMLOG‚Å‚Í 1Ahj + char YY, MM, DD; // ÅIXV”NŒŽ“ú + long Max; // Úº°ÄÞŒ” + char dm1; + char m1; // 01h + char dm2; + char dummy[21]; // 00h + char dummy2[255-32]; // 00h + char term; // 1ah +}DBRHD; + +typedef struct { + char Name[11]; + BYTE Type; + BYTE dm1[4]; + BYTE Len; + BYTE dm2[15]; +}DBSLOT; + +typedef struct { + char del[1]; /* 휃}[ƒN */ + char calls[7]; /* º°Ù»²Ý */ + char potbl[3]; /* ˆÚ“®´Ø± */ + char code[6]; /* JCCº°ÄÞ */ + char glid[6]; /* ¸ÞدÄÞÛ¹°À° */ + char freq[4]; /* Žü”g” */ + char mode[3]; /* Ó°ÄÞ */ + char name[12]; /* Ž–¼ */ + char qsl [1]; /* QSL via */ + char send[1]; /* QSL SEND */ + char rcv[1]; /* QSL RCV */ + char date[3]; /* “ú•t */ + char time[2]; /* ŽžŠÔ */ + char hiss[2]; /* HIS RST */ + char myrs[2]; /* MY RST */ + long ofs; /* HAMLOG.DBR µÌ¾¯Ä±ÄÞÚ½ */ +}SDHAMLOG; + +typedef struct { /* DBR‚̃tƒB[ƒ‹ƒhˆÊ’uƒf[ƒ^ */ + BYTE LenQTH; + BYTE LenREM1; + BYTE LenREM2; +}FHDDBR; +#pragma option -a. // ƒpƒbƒN‰ðœ‚ÌŽwަ + +class CHamLog : public CLogConv +{ +public: + int m_Index; + int m_err; +protected: + DBSHD m_hd; // DBSƒwƒbƒ_ + SDHAMLOG m_RecBuf; // ƒŒƒR[ƒhƒoƒbƒtƒ@ + + AnsiString m_DBRName; // DBRƒtƒ@ƒCƒ‹‚Ì–¼‘O + FILE *m_dbrfp; // DBRƒtƒ@ƒCƒ‹‚̃tƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + DBRHD m_dbrhd; // DBRƒwƒbƒ_ +private: + int Seek(DWORD Index); + BOOL MakeHD(void); + +public: + CHamLog(); + virtual int Open(LPCSTR pName); + virtual int Create(LPCSTR pName); + virtual int Close(void); + virtual int Read(SDMMLOG *sp); + virtual int Write(SDMMLOG *sp); +}; + +void HAMLOGtoMMLOG(SDMMLOG *sp, SDHAMLOG *hp, FILE *dbrfp); +int MMLOGtoHAMLOG(SDHAMLOG *hp, SDMMLOG *sp, FILE *dbrfp); +void AddMMLOGKey(AnsiString &REM1, AnsiString &REM2, LPCSTR s, LPCSTR pKey); +void SetMMLOGKey(SDMMLOG *sp, LPSTR bf); + +//************************************************************* +// ADIFƒAƒNƒZƒX‚̃Nƒ‰ƒX +// +class CLogADIF : public CLogConv +{ +public: +protected: + char m_bf[1024]; // ƒtƒ@ƒCƒ‹ƒoƒbƒtƒ@ + LPSTR m_p; + int m_conv; +private: + void MMLOG2ADIF(LPSTR t, SDMMLOG *sp); + void SetData(SDMMLOG *sp, LPCSTR pKey, LPSTR pData); + void AdjustData(SDMMLOG *sp); + void OutF(int &col, FILE *fp, LPCSTR fmt, ...); + +public: + CLogADIF(); + virtual int Open(LPCSTR pName); + virtual int Create(LPCSTR pName); + virtual int Close(void); + virtual int Read(SDMMLOG *sp); + virtual int Write(SDMMLOG *sp); + +}; + +//************************************************************* +// Cabrillo ƒAƒNƒZƒX‚̃Nƒ‰ƒX +// +class CLogCabrillo : public CLogConv +{ +public: +protected: + char m_bf[1024]; // ƒtƒ@ƒCƒ‹ƒoƒbƒtƒ@ + LPSTR m_p; + AnsiString m_SNR; +private: + void MMLOG2Cabrillo(LPSTR t, SDMMLOG *sp); + void AdjustData(SDMMLOG *sp); + +public: + CLogCabrillo(); + virtual int Open(LPCSTR pName); + virtual int Create(LPCSTR pName); + virtual int Close(void); + virtual int Read(SDMMLOG *sp); + virtual int Write(SDMMLOG *sp); +}; + +#endif diff --git a/LogFile.cpp b/LogFile.cpp new file mode 100644 index 0000000..d892d9c --- /dev/null +++ b/LogFile.cpp @@ -0,0 +1,1660 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include +#include +#include +#include +#include "LogFile.h" +#include "Hamlog5.h" +CLogFile Log; + + +//--------------------------------------------------------------------------- +// MMLOG Constant +// +enum BD { /* ƒoƒ“ƒh‚̔Ԇ */ + B_NULL, + B_19, + B_35, + B_38, + B_7, + B_10, + B_14, + B_18, + B_21, + B_24, + B_28, + B_50, + B_144, + B_430, + B_1200, + B_2400, + B_5600, + B_101G, + B_104G, + B_24G, + B_47G, + B_75G, + B_142G, + B_248G, + B_4630, + B_220, + B_SAT, +}; + +const char *_mBand[]={ + "","160","80","75","40","30","20","17","15","12","10","6", + "2","430","1200","2400","5600","10.1G","10.4G","24G","47G", + "75G","142G","248G","4630","220",NULL, +}; +const char *_band[]={ + "","1.9","3.5","3.8","7","10","14","18","21","24","28","50", + "144","430","1200","2400","5600","10.1G","10.4G","24G","47G", + "75G","142G","248G","4630","220",NULL, +}; +static const char *_mode[]={ + "", + "CW","SSB","AM","FM","RTTY","PAC","FAX","SSTV","ATV","TV","FSTV", + "A1","A2","A3","A3A","A3H","A3J","A4","A5","A5C","A5J", + "A9","A9C","F1","F2","F3","F4","F5","F9","P0","P1", + "P2D","P2E","P2F","P3D","P3E","P3F","P9", + "U1","U2","U3","U4", + "PSK","BPSK","QPSK","HELL","MFSK", + NULL, +}; +const char lmode[]={ + 3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, + 3, 3, 3, 3, 3, +}; +const char MONN[]={31,31,28,31,30,31,30,31,31,30,31,30,31}; +const char MONU[]={31,31,29,31,30,31,30,31,31,30,31,30,31}; +//--------------------------------------------------------------------------- +// CIndexƒNƒ‰ƒX +int GetLMode(BYTE m) +{ + if( m < MODEMAX ){ + return lmode[m]; + } + else { + return 3; + } +} +//--------------------------------------------------------------------------- +// CIndexƒNƒ‰ƒX +CIndex::CIndex() +{ + m_IndexMax = 0; // Šm•Û’†‚̃Cƒ“ƒfƒbƒNƒX‚Ì” + m_IndexCnt = 0; // Œ»Ý‚̃Cƒ“ƒfƒbƒNƒX‚Ì” + pIndex = NULL; // ƒCƒ“ƒfƒbƒNƒX—̈æ‚̃|ƒCƒ“ƒ^(16ƒoƒCƒgƒCƒ“ƒfƒbƒNƒX) + pMult = NULL; +} +CIndex::~CIndex() +{ + if( pIndex != NULL ){ + delete[] pIndex; + pIndex = NULL; + } + if( pMult != NULL ){ + delete[] pMult; + pMult = NULL; + } +} +void CIndex::AllocIndex(int n) +{ + if( n >= m_IndexMax ){ + int max = m_IndexMax ? (m_IndexMax * 2) : 32768; + LPSTR np = new char[16*max]; + if( pIndex != NULL ){ + memcpy(np, pIndex, m_IndexCnt*16); + delete pIndex; + } + pIndex = np; + m_IndexMax = max; + } +} + +void CIndex::ClearIndex(void) +{ + m_IndexCnt = 0; +} + +void CIndex::WriteIndex(LPCSTR pCall, int n) +{ + AllocIndex(n); + memcpy(&pIndex[n*16], pCall, 16); + if( n >= m_IndexCnt ) m_IndexCnt = n + 1; +} + +void CIndex::ReadIndex(LPSTR pCall, int n) +{ + memcpy(pCall, &pIndex[n*16], 16); + pCall[16] = 0; +} + +LPSTR CIndex::PointIndex(int n) +{ + return &pIndex[n*16]; +} + +void CIndex::AddBlock(LPCSTR p, int len) +{ + int n = len/16; + AllocIndex(n + m_IndexCnt); + memcpy(&pIndex[m_IndexCnt*16], p, len); + m_IndexCnt += n; +} +//--------------------------------------------------------------------------- +int CIndex::ReadIndex(int handle, FHD *hp) +{ + int r = TRUE; + int BUFSIZE=32768; + + CWaitCursor w; + if( lseek(handle, (hp->size * (ULONG)sizeof(SDMMLOG)) + FHDOFF, SEEK_SET) != -1L ){ + if( hp->hash != 2 ){ // 16ƒoƒCƒgƒCƒ“ƒfƒbƒNƒX‚ƈقȂé + if( hp->hash ){ // 2ƒoƒCƒgƒCƒ“ƒfƒbƒNƒX‚̃XƒLƒbƒv + lseek(handle, hp->size * 2, SEEK_CUR); + } + r = FALSE; + } + else { // 16ƒoƒCƒgƒCƒ“ƒfƒbƒNƒX + LPSTR bp = new char[BUFSIZE]; + int len = hp->size * 16; + int rlen, wlen; + while(len){ + rlen = (len > BUFSIZE) ? BUFSIZE : len; + wlen = read(handle, bp, rlen); + if( rlen != wlen ){ + r = FALSE; + break; + } + AddBlock(bp, wlen); + len -= wlen; + } + delete bp; + } + if( pMult == NULL ) pMult = new BYTE[32768]; + read(handle, pMult, hp->mlt); + } + else { + r = FALSE; + } + return r; +} + +void CIndex::MakeIndex(int handle, FHD *hp) +{ + CWaitCursor w; + + lseek(handle, (ULONG)FHDOFF, SEEK_SET); + ClearIndex(); + + FHD fh; + memset(&fh, 0, sizeof(fh)); + + int i, rlen; + SDMMLOG sd; + for( i = 0; i < hp->size; i++ ){ + rlen = read(handle, &sd, sizeof(sd)); + if( rlen != sizeof(sd) ) break; + WriteIndex(sd.call, i); + if( sd.mode >= MODEMAX ){ + int m = sd.mode - MODEMAX; + int f = 0; + int n; + char sbf[7]; + StrCopy(sbf, hp->mode[m], 6); + for( n = 0; (n < UMODEMAX) && fh.mode[n][0] ; n++ ){ + char tbf[7]; + StrCopy(tbf, fh.mode[n], 6); + if( !strcmp(sbf, tbf) ){ + if( m != n ){ + f++; + sd.mode = BYTE(n + MODEMAX); + break; + } + } + } + if( !fh.mode[n][0] ){ + StrCopy(fh.mode[n], sbf, 6); + if( m != n ){ + sd.mode = BYTE(n + MODEMAX); + f++; + } + } + if( f ){ + lseek( handle, -long(sizeof(sd)), SEEK_CUR); + write(handle, &sd, sizeof(sd)); + } + } + } + memcpy(hp->mode, fh.mode, sizeof(fh.mode)); + lseek( handle, (hp->size * (ULONG)sizeof(SDMMLOG)) + FHDOFF, SEEK_SET); + hp->hash = 2; // 16ƒoƒCƒgƒCƒ“ƒfƒbƒNƒX +} + +//--------------------------------------------------------------------------- +int CIndex::WriteIndex(int handle, FHD *hp) +{ + int r = TRUE; + int BUFSIZE=32768; + + CWaitCursor w; + + if( lseek(handle, (hp->size * (ULONG)sizeof(SDMMLOG)) + FHDOFF, SEEK_SET) != -1L ){ + hp->hash = 2; + int len = hp->size * 16; + int vlen, wlen; + LPSTR cp = pIndex; + while(len){ + wlen = (len > BUFSIZE) ? BUFSIZE : len; + vlen = write(handle, cp, wlen); + if( wlen != vlen ) r = FALSE; + len -= vlen; + cp += vlen; + } + if( pMult != NULL ){ + write(handle, pMult, hp->mlt); + } + } + else { + r = FALSE; + } + return r; +} + +//--------------------------------------------------------------------------- +// CLogFindƒNƒ‰ƒX +CLogFind::CLogFind() +{ + m_FindCnt = 0; + pFindTbl = new int[FINDMAX]; +} +//--------------------------------------------------------------------------- +CLogFind::~CLogFind() +{ + delete[] pFindTbl; + pFindTbl = NULL; +} +//--------------------------------------------------------------------------- +int CLogFind::Add(int n) +{ + if( m_FindCnt >= FINDMAX ) return 0; + + for( int i = 0; i < m_FindCnt; i++ ){ + if( pFindTbl[i] == n ) return 0; + } + pFindTbl[m_FindCnt] = n; + m_FindCnt++; + return 1; +} +//--------------------------------------------------------------------------- +void CLogFind::Ins(int n) +{ + if( m_FindCnt >= FINDMAX ) return; + + int i; + for( i = 0; i < m_FindCnt; i++ ){ + if( pFindTbl[i] == n ) return; + } + for( i = m_FindCnt - 1; i > 0; i-- ){ + pFindTbl[i] = pFindTbl[i-1]; + } + pFindTbl[0] = n; + m_FindCnt++; + m_FindCmp1Max++; + m_FindCmp2Max++; + m_FindStr1Max++; + m_FindStr2Max++; +} +//--------------------------------------------------------------------------- +// CLogFileƒNƒ‰ƒX +CLogFile::CLogFile() +{ + memset(&m_sd, 0, sizeof(SDMMLOG)); + memset(&m_bak, 0, sizeof(SDMMLOG)); + + m_Open = 0; // ƒI[ƒvƒ“ƒtƒ‰ƒO + m_EditFlag = 0; + m_Handle = 0; + memset(&m_fhd, 0, sizeof(m_fhd)); // Œ»ÝƒI[ƒvƒ“’†‚̃tƒ@ƒCƒ‹ƒwƒbƒ_ + MakePathName("TEMP.MDT"); + m_CurNo = 0; + + // LogSet ‚̃fƒtƒHƒ‹ƒg + + m_LogSet.m_TimeZone = 'I'; // JA + + m_LogSet.m_UpperName = 0; // ‘å•¶Žš‚ւ̕ϊ· + m_LogSet.m_UpperQTH = 0; // ‘å•¶Žš‚ւ̕ϊ· + m_LogSet.m_UpperREM = 0; // ‘å•¶Žš‚ւ̕ϊ· + m_LogSet.m_UpperQSL = 0; // ‘å•¶Žš‚ւ̕ϊ· + + m_LogSet.m_DefMyRST = 0; // 0-OFF, 1-ON + m_LogSet.m_Contest = 0; + + m_LogSet.m_CopyFreq = 0; // 0-Band, 1-Freq + m_LogSet.m_CopyHis = 0; // 0-599, 1-599001, 2-599UTC + m_LogSet.m_CopyName = 1; // 0-OFF, 1-ON + m_LogSet.m_CopyQTH = 1; // 0-OFF, 1-ON + m_LogSet.m_CopyREM = 0; // 0-OFF, 1-ON + m_LogSet.m_CopyQSL = 1; // 0-OFF, 1-ON + m_LogSet.m_CopyREMB4 = 0; // 0-OFF, 1-ON + + m_LogSet.m_AutoSave = TRUE; + m_LogSet.m_QSOMacroFlag = 0; + m_LogSet.m_CheckBand = 1; + m_LogSet.m_QSOMacro[0] = 1; + m_LogSet.m_QSOMacro[1] = 1; + m_LogSet.m_QSOMacro[2] = 1; + m_LogSet.m_QSOMacro[3] = 0; + m_LogSet.m_QSOMacro[4] = 0; + m_LogSet.m_QSOMacroStr[0] = "\r\n %c %c UR %R-%N-%N BK\r\n\\"; + m_LogSet.m_QSOMacroStr[1] = "\r\nQSL TU QRZ? DE %m %m K\r\n\\"; + m_LogSet.m_QSOMacroStr[2] = "\r\n %c SRI QSO B4 QRZ? DE %m %m K\r\n\\"; + m_LogSet.m_QSOMacroStr[3] = "\r\nDE %m %m K\r\n\\"; + m_LogSet.m_QSOMacroStr[4] = "\r\n %c %R-%N-%N TU\r\n\\"; + memset(&m_LogSet.m_QSOMacroKey, 0, sizeof(m_LogSet.m_QSOMacroKey)); + + m_LogSet.m_THRTTY = "RTY"; + m_LogSet.m_THSSTV = "STV"; + m_LogSet.m_THTZ = 0; + m_LogSet.m_ClipRSTADIF = 1; + m_LogSet.m_DateType = 0; + + m_LogSet.m_Backup = TRUE; + memcpy(m_LogSet.m_Hamlog5Len, g_Hamlog5Len, 17); +} + +CLogFile::~CLogFile() +{ + Close(); +} + +void CLogFile::ReadIniFile(LPCSTR pKey, TMemIniFile *pIniFile) +{ + char bf[64]; + + m_LogSet.m_DateType = pIniFile->ReadInteger(pKey, "DateType", m_LogSet.m_DateType); + m_LogSet.m_TimeZone = (char)pIniFile->ReadInteger(pKey, "TimeZone", m_LogSet.m_TimeZone); + + m_LogSet.m_UpperName = pIniFile->ReadInteger(pKey, "UpperName", m_LogSet.m_UpperName); + m_LogSet.m_UpperQTH = pIniFile->ReadInteger(pKey, "UpperQTH", m_LogSet.m_UpperQTH); + m_LogSet.m_UpperREM = pIniFile->ReadInteger(pKey, "UpperREM", m_LogSet.m_UpperREM); + m_LogSet.m_UpperQSL = pIniFile->ReadInteger(pKey, "UpperQSL", m_LogSet.m_UpperQSL); + + m_LogSet.m_DefMyRST = pIniFile->ReadInteger(pKey, "DefMyRST", m_LogSet.m_DefMyRST); + m_LogSet.m_Contest = pIniFile->ReadInteger(pKey, "Contest", m_LogSet.m_Contest); + + m_LogSet.m_CopyFreq = pIniFile->ReadInteger(pKey, "CopyFreq", m_LogSet.m_CopyFreq); + m_LogSet.m_CopyHis = pIniFile->ReadInteger(pKey, "CopyHis", m_LogSet.m_CopyHis); + m_LogSet.m_CopyName = pIniFile->ReadInteger(pKey, "CopyName", m_LogSet.m_CopyName); + m_LogSet.m_CopyQTH = pIniFile->ReadInteger(pKey, "CopyQTH", m_LogSet.m_CopyQTH); + m_LogSet.m_CopyREM = pIniFile->ReadInteger(pKey, "CopyREM", m_LogSet.m_CopyREM); + m_LogSet.m_CopyQSL = pIniFile->ReadInteger(pKey, "CopyQSL", m_LogSet.m_CopyQSL); + m_LogSet.m_CopyREMB4 = pIniFile->ReadInteger(pKey, "CopyREMB4", m_LogSet.m_CopyREMB4); + + m_LogSet.m_CheckBand = pIniFile->ReadInteger(pKey, "CheckBand", m_LogSet.m_CheckBand); + + m_LogSet.m_AutoSave = pIniFile->ReadInteger(pKey, "AutoSave", m_LogSet.m_AutoSave); + m_LogSet.m_QSOMacroFlag = pIniFile->ReadInteger(pKey, "QSOMacroFlag", m_LogSet.m_QSOMacroFlag); + AnsiString as, ws; + int i; + for( i = 0; i < 5; i++ ){ + sprintf(bf, "QSOMacro%u", i+1); + m_LogSet.m_QSOMacro[i] = pIniFile->ReadInteger(pKey, bf, m_LogSet.m_QSOMacro[i]); + sprintf(bf, "QSOMacroKey%u", i+1); + m_LogSet.m_QSOMacroKey[i] = (WORD)pIniFile->ReadInteger(pKey, bf, m_LogSet.m_QSOMacroKey[i]); + sprintf(bf, "QSOMacroStr%u", i+1); + CrLf2Yen(ws, m_LogSet.m_QSOMacroStr[i]); + as = pIniFile->ReadString(pKey, bf, ws); + Yen2CrLf(m_LogSet.m_QSOMacroStr[i], as); + } + m_LogSet.m_THRTTY = pIniFile->ReadString(pKey, "THRTTY", m_LogSet.m_THRTTY); + m_LogSet.m_THSSTV = pIniFile->ReadString(pKey, "THSSTV", m_LogSet.m_THSSTV); + m_LogSet.m_THTZ = pIniFile->ReadInteger(pKey, "THTZ", m_LogSet.m_THTZ); + m_LogSet.m_ClipRSTADIF = pIniFile->ReadInteger(pKey, "ClipRSTADIF", m_LogSet.m_ClipRSTADIF); + + m_LogSet.m_Backup = pIniFile->ReadInteger(pKey, "Backup", m_LogSet.m_Backup); + AnsiString ss; + GetHamlog5FieldsLen(ss); + as = pIniFile->ReadString(pKey, "TH5Fields", ss); + SetHamlog5FieldsLen(as); +} + +void CLogFile::WriteIniFile(LPCSTR pKey, TMemIniFile *pIniFile) +{ + char bf[64]; + + pIniFile->WriteInteger(pKey, "TimeZone", m_LogSet.m_TimeZone); + pIniFile->WriteInteger(pKey, "DateType", m_LogSet.m_DateType); + + pIniFile->WriteInteger(pKey, "UpperName", m_LogSet.m_UpperName); + pIniFile->WriteInteger(pKey, "UpperQTH", m_LogSet.m_UpperQTH); + pIniFile->WriteInteger(pKey, "UpperREM", m_LogSet.m_UpperREM); + pIniFile->WriteInteger(pKey, "UpperQSL", m_LogSet.m_UpperQSL); + + pIniFile->WriteInteger(pKey, "DefMyRST", m_LogSet.m_DefMyRST); + pIniFile->WriteInteger(pKey, "Contest", m_LogSet.m_Contest); + + pIniFile->WriteInteger(pKey, "CopyFreq", m_LogSet.m_CopyFreq); + pIniFile->WriteInteger(pKey, "CopyHis", m_LogSet.m_CopyHis); + pIniFile->WriteInteger(pKey, "CopyName", m_LogSet.m_CopyName); + pIniFile->WriteInteger(pKey, "CopyQTH", m_LogSet.m_CopyQTH); + pIniFile->WriteInteger(pKey, "CopyREM", m_LogSet.m_CopyREM); + pIniFile->WriteInteger(pKey, "CopyQSL", m_LogSet.m_CopyQSL); + pIniFile->WriteInteger(pKey, "CopyREMB4", m_LogSet.m_CopyREMB4); + + pIniFile->WriteInteger(pKey, "CheckBand", m_LogSet.m_CheckBand); + + pIniFile->WriteInteger(pKey, "AutoSave", m_LogSet.m_AutoSave); + pIniFile->WriteInteger(pKey, "QSOMacroFlag", m_LogSet.m_QSOMacroFlag); + AnsiString as; + int i; + for( i = 0; i < 5; i++ ){ + sprintf(bf, "QSOMacro%u", i+1); + pIniFile->WriteInteger(pKey, bf, m_LogSet.m_QSOMacro[i]); + sprintf(bf, "QSOMacroKey%u", i+1); + pIniFile->WriteInteger(pKey, bf, m_LogSet.m_QSOMacroKey[i]); + sprintf(bf, "QSOMacroStr%u", i+1); + CrLf2Yen(as, m_LogSet.m_QSOMacroStr[i]); + pIniFile->WriteString(pKey, bf, as); + } + pIniFile->WriteString(pKey, "THRTTY", m_LogSet.m_THRTTY); + pIniFile->WriteString(pKey, "THSSTV", m_LogSet.m_THSSTV); + pIniFile->WriteInteger(pKey, "THTZ", m_LogSet.m_THTZ); + pIniFile->WriteInteger(pKey, "ClipRSTADIF", m_LogSet.m_ClipRSTADIF); + + pIniFile->WriteInteger(pKey, "Backup", m_LogSet.m_Backup); + GetHamlog5FieldsLen(as); + pIniFile->WriteString(pKey, "TH5Fields", as); +} + +void CLogFile::MakeIndex(void) +{ + if( !m_Open ) return; + + m_Index.MakeIndex(m_Handle, &m_fhd); + m_EditFlag = 1; +} + +void CLogFile::MakePathName(LPCSTR pName) +{ + char bf[256]; + + m_Name = pName; + sprintf(bf, "%s%s", MMLogDir, pName); + SetEXT(bf, ".MDT"); + m_FileName = bf; +} + +void CLogFile::MakeName(LPCSTR pPathName) +{ + if( pPathName != m_FileName.c_str() ) m_FileName = pPathName; + + char drive[_MAX_DRIVE]; + char dir[_MAX_DIR]; + char name[_MAX_FNAME]; + char ext[_MAX_EXT]; + AnsiString Dir; + + ::_splitpath( pPathName, drive, dir, name, ext ); + Dir = drive; + Dir += dir; + m_Name = name; + m_Name += ext; + if( Dir.IsEmpty() ){ + if( !MMLogDir[0] ) strcpy(MMLogDir, BgnDir); + MakePathName(m_Name.c_str()); + } + else { + strncpy(MMLogDir, Dir.c_str(), 128); + } +} + +void CLogFile::DoBackup(void) +{ + if( !Log.m_LogSet.m_Backup ) return; + if( m_FileName.IsEmpty() ) return; + + FILE *sfp = fopen(m_FileName.c_str(), "rb"); + if( sfp == NULL ) return; + + char tname[256]; + strcpy(tname, m_FileName.c_str()); + SetEXT(tname, "_BAK.MDT"); + FILE *tfp = fopen(tname, "rb"); + if( tfp != NULL ){ + long slen = filelength(fileno(sfp)); + long tlen = filelength(fileno(tfp)); + fclose(tfp); + if( slen <= tlen ){ + fclose(sfp); + return; + } + } + fclose(sfp); + ::CopyFile(m_FileName.c_str(), tname, FALSE); +} + +int CLogFile::Close(void) +{ + int r = TRUE; + if( m_Open ){ + if( m_EditFlag ){ + if( m_fhd.size ){ + SDMMLOG sd; + + GetData(&sd, m_fhd.size - 1); + if( !sd.date || !sd.btime ){ + DeleteLast(); + } + } + chsize(m_Handle, (m_fhd.size * (ULONG)sizeof(SDMMLOG))+(ULONG)FHDOFF ); + m_Index.WriteIndex(m_Handle, &m_fhd); // ƒCƒ“ƒfƒbƒNƒX‚ÌŠi”[ + lseek(m_Handle, 0L, SEEK_SET); + if( write( m_Handle, &m_fhd, sizeof(m_fhd) ) != sizeof(m_fhd) ){ + ErrorMB("'%s'‚É‘‚«‚±‚Ý‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FileName.c_str()); + r = FALSE; + } + } + if( close(m_Handle) ){ + if( r != FALSE ){ + ErrorMB("'%s'‚É‘‚«‚±‚Ý‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FileName.c_str()); + r = FALSE; + } + } +// if( !m_fhd.size ) unlink(m_FileName.c_str()); // 0Œ‚ÌŽž‚ÍÁ‹Ž + m_Open = 0; + } + m_EditFlag = 0; + m_Index.ClearIndex(); + return r; +} + +void CLogFile::InitHeader(void) +{ + memset(&m_fhd, 0, sizeof(m_fhd)); + strcpy(m_fhd.id, MMLOGID); + m_fhd.size = 0L; + m_fhd.mlt = 0; +} + +int CLogFile::Open(LPCSTR pName, BOOL fNew) +{ + CWaitCursor w; + Close(); + InitHeader(); + + if( pName == NULL ) pName = m_FileName.c_str(); + int omode = O_RDWR|O_BINARY; // ‰‰ñ‚ÍV‹K쬂Ȃµ‚ŃI[ƒvƒ“ + int n = 0; + while(1){ + if( (m_Handle = open(pName, omode, S_IREAD|S_IWRITE)) > 0 ){ + if( read(m_Handle, &m_fhd, sizeof(m_fhd)) == sizeof(m_fhd) ){ + if( !strcmp(m_fhd.id, MMLOGID) ){ + if( m_Index.ReadIndex(m_Handle, &m_fhd) != TRUE ){ + m_Index.MakeIndex(m_Handle, &m_fhd); + } + m_Open = 1; + MakeName(pName); + m_Find.Clear(); + SetLastPos(); + memcpy(&m_asd, &m_sd, sizeof(m_asd)); + return TRUE; + } + else { + close(m_Handle); + ErrorMB("'%s' is not a correct format.", pName); + } + } + else if( omode & O_CREAT ){ // V‹Kƒtƒ@ƒCƒ‹@2‰ñ–ڂ̃pƒX‚Ì‚Ý + InitHeader(); + if( write(m_Handle, &m_fhd, sizeof(m_fhd)) != sizeof(m_fhd) ){ + close(m_Handle); + ErrorMB("Cannot open '%s'.", pName); + } + else { + m_Open = 1; + MakeName(pName); + m_Index.ClearIndex(); + m_Find.Clear(); + SetLastPos(); + memcpy(&m_asd, &m_sd, sizeof(m_asd)); + return TRUE; + } + } + else { // Šù‘¶‚̃tƒBƒAƒ‹ + close(m_Handle); + ErrorMB("Cannot open '%s'.", pName); + } + return FALSE; + } + // ƒI[ƒvƒ“ƒGƒ‰[‚Ìê‡ + if( !(omode & O_CREAT) && (errno == ENOENT) ){ // ‚P‰ñ–ڂŃtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚È‚¢ê‡ + n++; + if( n >= 2 ){ + if( fNew ){ + if( YesNoMB((sys.m_WinFontCharset != SHIFTJIS_CHARSET) ? "Log file (%s) does not exist, create it ?" : "ƒƒOƒtƒ@ƒCƒ‹(%s)‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ. V‹K‚É쬂µ‚Ü‚·‚© ?", pName) != IDYES ) return FALSE; + } + omode |= O_CREAT; // 2‰ñ–Ú‚ÍV‹K쬕t‚«‚ŃI[ƒvƒ“ + } + else { + ::Sleep(1000); + } + } + else if( IsFile(pName) && (GetFileAttributes(pName) & FILE_ATTRIBUTE_READONLY) ){ + ErrorMB("'%s' is read-only.", pName); + return FALSE; + } + else { + ErrorMB("Cannot open '%s'.", pName); + return FALSE; + } + } +} + +void CLogFile::InitCur(void) +{ + SetLastPos(); +} + +void CLogFile::SetLastPos(void) +{ + m_CurNo = m_fhd.size; + memset(&m_sd, 0, sizeof(SDMMLOG)); + + int n = m_CurNo - 1; + if( n >= 0 ){ + SDMMLOG sd; + + GetData(&sd, n); + if( !sd.etime ){ + m_CurNo = n; + memcpy(&m_sd, &sd, sizeof(SDMMLOG)); + } + } + else { + m_sd.band = B_14; + m_sd.mode = 5; + m_sd.env = 1; + } + CopyAF(); + m_CurChg = 0; +} + +int CLogFile::GetData(SDMMLOG *sp, int n) +{ + if( !m_Open || (n >= m_fhd.size) ){ + memset(sp, 0, sizeof(SDMMLOG)); + if( !n ){ + m_sd.band = B_14; + m_sd.mode = 5; + } + return FALSE; + } + if( lseek(m_Handle, (ULONG)FHDOFF + ((ULONG)n * (ULONG)sizeof(SDMMLOG)), SEEK_SET) == -1L ){ + memset(sp, 0, sizeof(SDMMLOG)); + return FALSE; + } + if( read( m_Handle, sp, sizeof(SDMMLOG) ) != sizeof(SDMMLOG) ){ + memset(sp, 0, sizeof(SDMMLOG)); + return FALSE; + } + else { + return TRUE; + } +} + +int CLogFile::PutData(SDMMLOG *sp, int n) +{ + if( !m_Open ){ + if( m_FileName.IsEmpty() ){ + ErrorMB("ƒƒOƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ."); + return FALSE; + } + if( Open(m_FileName.c_str()) != TRUE ) return FALSE; + } + if( lseek(m_Handle, (ULONG)FHDOFF + ((ULONG)n * (ULONG)sizeof(SDMMLOG)), SEEK_SET) == -1L ){ + ErrorMB( "'%s'‚Ö‚Ì‘‚«‚±‚݂Ɏ¸”s‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + return FALSE; + } + if( write( m_Handle, sp, sizeof(SDMMLOG) ) != sizeof(SDMMLOG) ){ + ErrorMB( "'%s'‚Ö‚Ì‘‚«‚±‚݂Ɏ¸”s‚µ‚Ü‚µ‚½.", m_FileName.c_str()); + return FALSE; + } + else { + m_EditFlag = 1; + if( m_CurNo == n ) m_CurChg = 1; + if( n >= m_fhd.size ) m_fhd.size = n + 1; + m_Index.WriteIndex(sp->call, n); + } + return TRUE; +} + +LPCSTR CLogFile::GetOptStr(int n, SDMMLOG *sp) +{ + switch(n){ + case 0: + return sp->opt1; + case 1: + return sp->opt2; + case 2: + if( !sp->ur[MLRST-MLOPT-1] && sp->ur[MLRST-MLOPT] ){ + return &sp->ur[MLRST-MLOPT]; + } + else { + return ""; + } + case 3: + if( !sp->my[MLRST-MLOPT-1] && sp->my[MLRST-MLOPT] ){ + return &sp->my[MLRST-MLOPT]; + } + else { + return ""; + } + default: + return ""; + } +} + +void CLogFile::SetOptStr(int n, SDMMLOG *sp, LPCSTR pOpt) +{ + switch(n){ + case 0: + StrCopy(sp->opt1, pOpt, MLOPT); + jstrupr(sp->opt1); + break; + case 1: + StrCopy(sp->opt2, pOpt, MLOPT); + jstrupr(sp->opt2); + break; + case 2: + if( *pOpt ){ + StrCopy(&sp->ur[MLRST-MLOPT], pOpt, MLOPT); + jstrupr(&sp->ur[MLRST-MLOPT]); + sp->ur[MLRST-MLOPT-1] = 0; + } + else if( !sp->ur[MLRST-MLOPT-1] ){ + sp->ur[MLRST-MLOPT] = 0; + } + break; + case 3: + if( *pOpt ){ + StrCopy(&sp->my[MLRST-MLOPT], pOpt, MLOPT); + jstrupr(&sp->my[MLRST-MLOPT]); + sp->my[MLRST-MLOPT-1] = 0; + } + else if( !sp->my[MLRST-MLOPT-1] ){ + sp->my[MLRST-MLOPT] = 0; + } + break; + default: + break; + } +} + +void CLogFile::SetHisUTC(void) +{ + if( m_LogSet.m_CopyHis == 2 ){ + int tim; + char bf[MLRST+1]; + _strdmcpy(bf, m_sd.ur, '-'); + if( m_sd.btime ){ + tim = m_sd.btime / 30; + if( tim >= (9 * 60) ){ + tim -= 9 * 60; + } + else { + tim += 15 * 60; + } + } + else { + GetUTC(&m_UTC); + tim = m_UTC.wHour * 60 + m_UTC.wMinute; + } + char bbf[16]; + sprintf(bbf, "-%02u%02u", tim/60, tim%60); + strcat(bf, bbf); + strcpy(m_sd.ur, bf); + } +} + +void CLogFile::SetHisRST(SDMMLOG *sp) +{ + int n; + + switch(m_LogSet.m_CopyHis){ + case 0: + if( sp == NULL ){ + strcpy(m_sd.ur, "599"); + } + else { + strcpy(m_sd.ur, sp->ur); + memcpy(m_sd.ur, "599", 3); + } + break; + case 1: + case 2: + if( sp == NULL ){ + strcpy(m_sd.ur, "599001"); + } + else { + if( sp->ur[0] ){ + char bf[MLRST+1]; + _strdmcpy(bf, &sp->ur[3], '-'); + n = atoin(bf, -1); + } + else { + n = 0; + } + n++; + if( n >= 10000 ){ + sprintf(m_sd.ur, "599%04u", n); + } + else { + sprintf(m_sd.ur, "599%03u", n); + } + } + if( m_LogSet.m_CopyHis == 2 ) SetHisUTC(); + break; + } +} + +void CLogFile::CopyAF(void) +{ + int n = m_CurNo - 1; + if( n >= 0 ){ + SDMMLOG sd; + GetData(&sd, n); + if( !m_sd.band ){ + m_sd.band = sd.band; + if( m_LogSet.m_CopyFreq ){ + m_sd.fq = sd.fq; + } + else { + m_sd.fq = 0; + } + } + if( !m_sd.env ){ + m_sd.env = sd.env; + } + if( !m_sd.pow[0] ){ + strcpy(m_sd.pow, sd.pow); + } + if( !m_sd.ur[0] ){ + SetHisRST(&sd); + } + if( m_LogSet.m_CopyREMB4 ){ + strcpy(m_sd.rem, sd.rem); + } + } + else { + if( !m_sd.band ){ + m_sd.band = B_14; + m_sd.fq = 0; + } + if( !m_sd.env ){ + m_sd.env = 1; + } + if( !m_sd.ur[0] ){ + SetHisRST(NULL); + } + } + if( !m_sd.mode ) m_sd.mode = 5; // RTTY + if( m_LogSet.m_DefMyRST ){ + if( !m_sd.my[0] ){ + strcpy(m_sd.my, "599"); + } + } +} + +static int _cmpdate(SDMMLOG *s, SDMMLOG *t) +{ + int r = YEAR(s->year) - YEAR(t->year); + if( r ) return r; + r = s->date - t->date; + if( r ) return r; + return s->btime - t->btime; +} + +void CLogFile::SortDate(int bb, int eb) +{ + int gap, i, j, em; + SDMMLOG sd1, sd2; + + CWaitCursor w; + if( bb != eb ){ + em = eb - bb; + for( gap = (em + 1)/2; gap > 0; gap /= 2 ){ + for( i = gap; i <= em; i++ ){ + for( j = i - gap; j >= 0; j -= gap ){ + GetData(&sd1, bb+j); + GetData(&sd2, bb+j+gap); + if( _cmpdate(&sd1, &sd2) <= 0 ) break; + PutData(&sd1, bb+j+gap); + PutData(&sd2, bb+j); + } + } + } + } + m_EditFlag = 1; +} + +int CLogFile::FindSameBand(void) +{ + if( !m_sd.call[0] ) return 0; + char call[MLCALL+1]; + SDMMLOG sd; + + int i; + for( i = 0; i < m_Find.GetCount(); i++ ){ + m_Index.ReadIndex(call, m_Find.pFindTbl[i]); + if( !strcmp(call, m_sd.call) ){ + GetData(&sd, m_Find.pFindTbl[i]); + if( (sd.band == m_sd.band)&&(sd.mode == m_sd.mode) ) return 1; + } + } + return 0; +} + +void CLogFile::FindStrSet(CLogFind *fp, LPCSTR pCall) +{ + if( !*pCall ) return; + if( fp->GetCount() >= FINDMAX ) return; + char call[MLCALL+1]; + + int i; + for( i = m_fhd.size - 1; i >= 0; i-- ){ + m_Index.ReadIndex(call, i); + if( strstr(call, pCall)!=NULL ){ + fp->Add(i); + if( fp->GetCount() >= FINDMAX ) break; + } + } +} + +int CLogFile::FindCmpSet(CLogFind *fp, LPCSTR pCall) +{ + if( fp->GetCount() >= FINDMAX ) return 0; + char call[MLCALL+1]; + + int i; + for( i = m_fhd.size - 1; i >= 0; i-- ){ + if( *pCall ){ + m_Index.ReadIndex(call, i); + if( !strcmp(call, pCall) ){ + fp->Write(i); + } + } + else { + fp->Write(i); + } + if( fp->GetCount() >= FINDMAX ) break; + } + return fp->GetCount(); +} + +int CLogFile::FindClipSet(CLogFind *fp, LPCSTR pCall) +{ + if( !*pCall ) return 0; + if( fp->GetCount() >= FINDMAX ) return 0; + char call[MLCALL+1]; + + int i; + for( i = m_fhd.size - 1; i >= 0; i-- ){ + m_Index.ReadIndex(call, i); + if( !strcmp(ClipCall(call), pCall) ){ + fp->Add(i); + } + if( fp->GetCount() >= FINDMAX ) break; + } + return fp->GetCount(); +} + +int CLogFile::FindSet(CLogFind *fp, LPCSTR pCall) +{ + fp->SetText(pCall); + fp->Clear(); + int r = FindCmpSet(fp, pCall); + fp->m_FindCmp1Max = fp->m_FindCnt; + char clipcall[MLCALL+1]; + strcpy(clipcall, ClipCall(pCall)); + if( FindClipSet(fp, clipcall) ){ + r = 1; + } + fp->m_FindCmp2Max = fp->m_FindCnt; + FindStrSet(fp, pCall); + fp->m_FindStr1Max = fp->m_FindStr2Max = fp->m_FindCnt; + if( strcmp(pCall, clipcall) ){ + FindStrSet(fp, clipcall); + fp->m_FindStr2Max = fp->m_FindCnt; + } + return r; +} + +int CLogFile::Find(LPCSTR pCall, int b, int dir) +{ + if( !m_fhd.size ) return -1; + char call[MLCALL+1]; + + int i; + if( dir ){ + for( i = b; i >= 0; i-- ){ + m_Index.ReadIndex(call, i); + if( strstr(call, pCall) != NULL ) return i; + } + } + else { + for( i = b; i < m_fhd.size; i++ ){ + m_Index.ReadIndex(call, i); + if( strstr(call, pCall) != NULL ) return i; + } + } + return -1; +} + +int CLogFile::IsAlready(LPCSTR pCall) +{ + if( !m_fhd.size ) return -1; + char call[MLCALL+1]; + + for( int i = m_CurNo; i >= 0; i-- ){ + m_Index.ReadIndex(call, i); + if( !strcmp(call, pCall) ) return i; + } + return -1; +} + +void CLogFile::DeleteAll(void) +{ + m_fhd.size = 0; + m_CurNo = m_fhd.size; + m_CurChg = 1; + m_EditFlag = 1; +} + +void CLogFile::DeleteLast(void) +{ + if( m_fhd.size ){ + m_fhd.size--; + } + m_CurNo = m_fhd.size; + m_CurChg = 1; + m_EditFlag = 1; +} + +void CLogFile::Delete(int top, int end) +{ + if( !m_fhd.size ) return; + + if( end >= (m_fhd.size - 1) ){ // ÅŒã‚Ü‚Å휂·‚éê‡ + m_fhd.size = top; + m_CurNo = m_fhd.size; + } + else { // “r’†‚ð휂·‚éê‡ + int i, j; + SDMMLOG sd; + for( i = top, j = end + 1; j < m_fhd.size; i++, j++ ){ + GetData(&sd, j); + PutData(&sd, i); + } + m_fhd.size -= end - top + 1; + m_CurNo = m_fhd.size; + } + SetLastPos(); + m_CurChg = 1; + m_EditFlag = 1; +} + +void CLogFile::Insert(int n, SDMMLOG *sp) +{ + if( n >= m_fhd.size ){ // ÅIˆÊ’u‚Ìꇂ͒ljÁ‚Æ“¯‚¶ + PutData(sp, n); + m_CurNo++; + } + else { // “r’†‚ð휂·‚éê‡ + int i, j; + SDMMLOG sd; + i = m_fhd.size; + j = i - 1; + for( ; i > n; i--, j-- ){ + GetData(&sd, j); + PutData(&sd, i); + } + PutData(sp, n); + m_CurNo++; + m_CurChg = 0; + } + m_EditFlag = 1; +} + +LPCSTR CLogFile::GetDateString(SDMMLOG *sp, int sw) +{ + static char bf[12]; + + if( sp->date ){ + switch(sw){ + case 1: // yyyy-mm-dd + sprintf(bf, "%04u.%02u.%02u", YEAR(sp->year), sp->date/100, sp->date%100); + break; + case 2: // dd-mm-yy + sprintf(bf, "%02u.%02u.%02u", sp->date%100, sp->date/100, sp->year); + break; + case 3: // dd-mm-yyyy + sprintf(bf, "%02u.%02u.%04u", sp->date%100, sp->date/100, YEAR(sp->year)); + break; + case 4: // mm-dd-yy + sprintf(bf, "%02u.%02u.%02u", sp->date/100, sp->date%100, sp->year); + break; + case 5: // mm-dd-yyyy + sprintf(bf, "%02u.%02u.%04u", sp->date/100, sp->date%100, YEAR(sp->year)); + break; + default: // yy-mm-dd + sprintf(bf, "%02u.%02u.%02u", sp->year, sp->date/100, sp->date%100); + break; + } + } + else { + bf[0] = 0; + } + return bf; +} + +LPCSTR CLogFile::GetTimeString(WORD d) +{ + static char bf[8]; + + if( d ){ + d = WORD(d / 30); + sprintf(bf, "%02u%02u", d / 60, d % 60); + } + else { + bf[0] = 0; + } + return bf; +} + +LPCSTR CLogFile::GetModeString(BYTE m) +{ + if( m < MODEMAX ){ + return _mode[m]; + } + else { + m -= BYTE(MODEMAX); + StrCopy(m_modebuf, m_fhd.mode[m], 6); + return m_modebuf; + } +} + +void CLogFile::SetMode(SDMMLOG *sp, LPCSTR s) +{ + if( !*s ){ + sp->mode = 0; + return; + } + + int n; + const char **t; + char bf[7]; + StrCopy(bf, s, 6); + jstrupr(bf); + s = bf; + int len = strlen(s); + for( n = 0, t = _mode; *t != NULL; t++, n++ ){ + if( !strcmp(*t, s) ){ + sp->mode = BYTE(n); + return; + } + } + for( n = 0; (n < UMODEMAX) && m_fhd.mode[n][0] ; n++ ){ + char vbf[7]; + StrCopy(vbf, m_fhd.mode[n], 6); + if( !strcmp(vbf, s) ){ + sp->mode = BYTE(n + MODEMAX); + return; + } + } + if( n < UMODEMAX ){ + if( len < 6 ){ + strcpy(m_fhd.mode[n], s); + } + else { + memcpy(m_fhd.mode[n], s, 6); + } + sp->mode = BYTE(n + MODEMAX); + } + else { + sp->mode = 0; + } +} + +LPCSTR CLogFile::GetFreqString(BYTE b, short fq) +{ + static char bf[12]; + int d; + + if( fq < 0 ){ + sprintf( bf, "%s/%s", _band[b], _band[-fq]); + return(bf); + } + else if( fq ){ + switch(b){ + case 0: + return ""; + case B_19: /* 1.9 */ + if( fq == 800 ){ + strcpy(bf, "1.8"); + } + else { + sprintf( bf, "1.%03u", fq ); + } + break; + case B_35: /* 3.5 */ + sprintf( bf, "3.%03u", fq ); + break; + case B_38: /* 3.8 */ + sprintf( bf, "3.%03u", fq ); + break; + case B_1200: + d = 1240 + (fq / 100); + sprintf( bf, "%u.%02u", d, fq % 100 ); + break; + case B_2400: + d = 2350 + (fq / 100); + sprintf( bf, "%u.%02u", d, fq % 100 ); + break; + case B_220: + d = 220 + (fq / 1000); + sprintf( bf, "%u.%03u", d, fq % 1000 ); + break; + default: + if( b <= B_24 ){ + sprintf( bf, "%s.%03u", _band[b], fq ); + } + else if( b <= B_430 ){ + d = atoin(_band[b], -1) + (fq / 1000); + sprintf( bf, "%u.%03u", d, fq % 1000 ); + } + else { + return(_band[b]); + } + break; + } + return(bf); + } + else { + return(_band[b]); + } +} + +/*#$% +=============================================================== + ƒoƒ“ƒh”Ô†‚𓾂é +--------------------------------------------------------------- + p : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ +--------------------------------------------------------------- +--------------------------------------------------------------- +=============================================================== +*/ +static BYTE _bandno_(LPCSTR p) +{ + char n; + const char **t; + + for( n = 0, t = _band; *t != NULL; t++, n++ ){ + if( !strcmp(*t, p) ) return(n); + } + return(0); +} + +/*#$% +=============================================================== + ƒoƒ“ƒh”Ô†‚𓾂é +--------------------------------------------------------------- + p : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ +--------------------------------------------------------------- +--------------------------------------------------------------- +=============================================================== +*/ +void CLogFile::SetFreq(SDMMLOG *sp, LPCSTR p) +{ + BYTE n; + char ub[16], db[16]; + int ud, d; + + sp->fq = 0; + if( strchr(p, '/' )!=NULL ){ + p = _strdmcpy(ub, p, '/'); + if( (n = _bandno_(ub))!= 0 ){ + if( (sp->fq = _bandno_(p))!= 0 ){ + sp->fq = SHORT(-sp->fq); + sp->band = n; + return; + } + } + sp->band = 0; + return; + } + if( (n = _bandno_(p))!= 0 ){ + sp->band = n; + return; + } + if( strchr(p, '.')!=NULL ){ + p = _strdmcpy(ub, p, '.'); + memset(db, 0, 4); + strcpy(db, p); + db[3] = 0; + for( n = 0; n < 3; n++ ){ + if( !db[n] ) db[n] = '0'; + } + ud = atoin(ub, -1); + d = atoin(db, -1); + } + else { + ud = atoin(p, -1); + d = 0; + } + if( ud == 1 ){ + sp->fq = SHORT(d); + sp->band = B_19; + } + else if( ud == 3 ){ + sp->fq = SHORT(d); + if( d >= 700 ){ + n = B_38; + } + else { + n = B_35; + } + sp->band = n; + } + else if( (ud >= 7) && (ud <= 24) ){ + sp->fq = SHORT(d); + if( (n = _bandno_(ub))!= 0 ){ + sp->band = n; + return; + } + sp->fq = 0; + sp->band = 0; + } + else if( (ud >= 28)&&(ud <= 29) ){ + sp->fq = SHORT(((ud - 28) * 1000) + d); + sp->band = B_28; + } + else if( (ud >= 50)&&(ud <= 54) ){ + sp->fq = SHORT(((ud - 50) * 1000) + d); + sp->band = B_50; + } + else if( (ud >= 144) && (ud <= 147) ){ + sp->fq = SHORT(((ud - 144) * 1000) + d); + sp->band = B_144; + } + else if( (ud >= 430) && (ud <= 440) ){ + sp->fq = SHORT(((ud - 430) * 1000) + d); + sp->band = B_430; + } + else if( (ud >= 220) && (ud <= 225) ){ + sp->fq = SHORT(((ud - 220) * 1000) + d); + sp->band = B_220; + } + else if( (ud >= 1240) && (ud <= 1300) ){ + sp->fq = SHORT(((ud - 1240) * 100) + (d/10)); + sp->band = B_1200; + } + else if( (ud >= 2350) && (ud <= 2450) ){ + sp->fq = SHORT(((ud - 2350) * 100) + (d/10)); + sp->band = B_2400; + } + else { + sp->band = 0; + } +} + +int CLogFile::ReadAscii(SDMMLOG *sp, LPSTR p) +{ + LPSTR t; + int y, m, d; + + memset(sp, 0, sizeof(SDMMLOG)); + p = StrDlm(t, p); /* DATE */ + if( sscanf(t, "%u.%u.%u", &y, &m, &d )!=3 ) return FALSE; + sp->year = BYTE(y%100); + sp->date = WORD((m * 100) + d); + p = StrDlm(t, p); /* BGN */ + if( sscanf(t, "%u.%u", &d, &y) != 2 ){ + d = atoin(t, -1); + y = 0; + } + m = d / 100; + d = d % 100; + y /= 2; + sp->btime = WORD((((m * 60) + d) * 30) + y); + p = StrDlm(t, p); /* CALL */ + StrCopy(sp->call, t, MLCALL); + p = StrDlm(t, p); /* UR */ + StrCopy(sp->ur, t, MLRST); + p = StrDlm(t, p); /* MY */ + StrCopy(sp->my, t, MLRST); + p = StrDlm(t, p); /* BAND */ + SetFreq(sp, t); + p = StrDlm(t, p); /* MODE */ + SetMode(sp, t); + p = StrDlm(t, p); /* POW */ + StrCopy(sp->pow, t, MLPOW); + p = StrDlm(t, p); /* NAME */ + StrCopy(sp->name, t, MLNAME); + p = StrDlm(t, p); /* QTH */ + StrCopy(sp->qth, t, MLQTH); + p = StrDlm(t, p); /* REM */ + StrCopy(sp->rem, t, MLREM); + p = StrDlm(t, p); /* QSL */ + StrCopy(sp->qsl, t, MLQSL); + p = StrDlm(t, p); /* ETIME*/ + d = atoin(t, -1); + m = d / 100; + d = d % 100; + sp->etime = WORD(((m * 60) + d) * 30); + p = StrDlm(t, p); /* S */ + sp->send = *t; + p = StrDlm(t, p); /* R */ + sp->recv = *t; + p = StrDlm(t, p); /* M */ + sp->cq = *t; + p = StrDlm(t, p); /* ENV */ + sp->env = WORD(atoin(t, -1)); + p = StrDlm(t, p); /* OPT1 */ + StrCopy(sp->opt1, t, MLOPT); + p = StrDlm(t, p); /* OPT2 */ + StrCopy(sp->opt2, t, MLOPT); + p = StrDlm(t, p); /* USR1 */ + if( *t ) SetOptStr(2, sp, t); + StrDlm(t, p); /* USR2 */ + if( *t ) SetOptStr(3, sp, t); + return TRUE; +} + +void JSTtoUTC(int &Year, int &Mon, int &Day, int &Hour) +{ + + Hour -= 9; + if( Hour < 0 ){ + Hour += 24; + Day--; + if( Day < 1 ){ + Mon--; + if( Mon < 1 ){ + Mon = 12; + if( Year ){ + Year--; + } + else { + Year = 99; + } + } + if( Year % 4 ){ + Day = MONN[Mon]; + } + else { + Day = MONU[Mon]; + } + } + } +} + +void JSTtoUTC(SDMMLOG *sp) +{ + int Year = sp->year; + int Mon = sp->date / 100; + int Day = sp->date % 100; + int Hour = sp->btime / (60*30); + if( sp->date || sp->btime ){ + JSTtoUTC(Year, Mon, Day, Hour); + sp->year = BYTE(Year); + sp->date = WORD(Mon * 100 + Day); + sp->btime = WORD((sp->btime % 1800) + (Hour * 1800)); + } + if( sp->etime ){ + // JST to UTC + if( sp->etime >= (9*60*30) ){ + sp->etime -= WORD(9 * 60 * 30); + } + else { + sp->etime += WORD(15 * 60 * 30); + } + if( !sp->etime ) sp->etime++; + } +} + +void UTCtoJST(int &Year, int &Mon, int &Day, int &Hour) +{ + LPCSTR mt; + + Hour += 9; + if( Hour >= 24 ){ + Hour -= 24; + Day++; + if( Year % 4 ){ + mt = MONN; + } + else { + mt = MONU; + } + if( Day > mt[Mon] ){ + Day = 1; + Mon++; + if( Mon > 12 ){ + Mon = 1; + Year++; + if( Year >= 100 ) Year = 0; + } + } + } +} + +void UTCtoJST(SDMMLOG *sp) +{ + int Year = sp->year; + int Mon = sp->date / 100; + int Day = sp->date % 100; + int Hour = sp->btime / (60*30); + if( sp->date || sp->btime ){ + UTCtoJST(Year, Mon, Day, Hour); + sp->year = BYTE(Year); + sp->date = WORD(Mon * 100 + Day); + sp->btime = WORD((sp->btime % 1800) + (Hour * 1800)); + } + if( sp->etime ){ + // UTC to JST + if( sp->etime >= (15*60*30) ){ + sp->etime -= WORD(15 * 60 * 30); + } + else { + sp->etime += WORD(9 * 60 * 30); + } + if( !sp->etime ) sp->etime++; + } +} + +void mBandToBand(SDMMLOG *sp, LPCSTR p) +{ + int m; + + sp->fq = 0; + if( !strcmpi(p, "SAT") ){ + sp->band = 0; + } + else if( sscanf(p, "%u", &m) == 1 ){ + switch(m){ + case 2: + sp->band = B_144; + break; + case 6: + sp->band = B_50; + break; + case 10: + sp->band = B_28; + break; + case 12: + sp->band = B_24; + break; + case 15: + sp->band = B_21; + break; + case 17: + sp->band = B_18; + break; + case 20: + sp->band = B_14; + break; + case 30: + sp->band = B_10; + break; + case 40: + sp->band = B_7; + break; + case 75: + sp->band = B_38; + break; + case 80: + sp->band = B_35; + break; + case 160: + sp->band = B_19; + sp->fq = 800; + break; + } + } +} + +LPCSTR FreqTomBand(SDMMLOG *sp) +{ + return _mBand[sp->band]; +} + + diff --git a/LogFile.h b/LogFile.h new file mode 100644 index 0000000..7ec4880 --- /dev/null +++ b/LogFile.h @@ -0,0 +1,287 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef LogFileH +#define LogFileH + +#include "ComLib.h" +//--------------------------------------------------------------------------- +#define MMLOGID "MMLOG DATA Ver1.00\032" + +enum { + testOFF, + testON, + testCQRJ, + testPED, + testBARTG, +}; + +typedef struct { // Log‚Ì“®ìƒIƒvƒVƒ‡ƒ“ + char m_TimeZone; // •\ަ—pƒ^ƒCƒ€ƒ][ƒ“ + + int m_UpperName; // ‘å•¶Žš‚ւ̕ϊ· + int m_UpperQTH; // ‘å•¶Žš‚ւ̕ϊ· + int m_UpperREM; // ‘å•¶Žš‚ւ̕ϊ· + int m_UpperQSL; // ‘å•¶Žš‚ւ̕ϊ· + + int m_DefMyRST; // 0-OFF, 1-ON + int m_Contest; // 0-OFF, 1-ON + + int m_CopyFreq; // 0-Band, 1-Freq + int m_CopyHis; // 0-599, 1-599001, 2-599UTC + int m_CopyName; // 0-OFF, 1-ON + int m_CopyQTH; // 0-OFF, 1-ON + int m_CopyREM; // 0-OFF, 1-ON + int m_CopyQSL; // 0-OFF, 1-ON + int m_CopyREMB4; // 0-OFF, 1-ON + + int m_AutoSave; // Ž©“®ƒZ[ƒu + + int m_QSOMacroFlag; // 0-OFF, 1-ON + int m_CheckBand; // “¯ˆêƒoƒ“ƒh‚Å‚Ìd•¡‚ðƒ`ƒFƒbƒN + int m_QSOMacro[5]; // 0-Run 1st, 1-Run 2nd, 2-Run Dupe, 3-S&P 1st, 4-S&P 2nd + WORD m_QSOMacroKey[5]; + AnsiString m_QSOMacroStr[5]; + + AnsiString m_THRTTY; + AnsiString m_THSSTV; + int m_ClipRSTADIF; + int m_DateType; + int m_THTZ; + + int m_Backup; + BYTE m_Hamlog5Len[17]; +}LOGSET; + +#define MLCALL 16 /* º°Ù»²Ý‚Ì’·‚³ */ +#define MLRST 20 /* RSTƒiƒ“ƒo‚Ì’·‚³ */ +#define MLREM 56 /* ‹LŽ–‚Ì’·‚³ */ +#define MLNAME 16 /* –¼‘O‚Ì’·‚³ */ +#define MLQTH 28 /* ‚p‚s‚g‚Ì’·‚³ */ +#define MLQSL 54 /* ‚p‚r‚k‚Ì’·‚³ */ +#define MLPOW 4 /* “d—Í */ +#define MLOPT 8 /* ƒIƒvƒVƒ‡ƒ“ */ + +#define MODEMAX 48 + +#define YEAR(c) (((c)<50)?(2000+(c)):(1900+(c))) + +#pragma option -a- // ƒpƒbƒN‚ÌŽwަ +typedef struct { /* ‚l‚l‚k‚n‚fƒf[ƒ^Œ`Ž® */ + BYTE year; /* ”N */ + WORD date; /* “ú•t */ + WORD btime; /* ŠJŽnŽž */ + WORD etime; /* I—¹Žž */ + char call[MLCALL+1]; /* º°Ù»²Ý */ + char ur[MLRST+1]; /* T ØÎß°Ä */ + char my[MLRST+1]; /* R ØÎß°Ä */ + BYTE band; /* ÊÞÝÄÞ */ + SHORT fq; /* Žü”g” */ + BYTE mode; /* Ó°ÄÞ */ + char pow[MLPOW+1]; /* “d—Í */ + char name[MLNAME+1]; /* –¼‘O */ + char qth[MLQTH+1]; /* QTH */ + char qsl[MLQSL+1]; /* QSL */ + char send; /* QSL ‘—M */ + char recv; /* QSL ŽóM */ + char cq; /* cq/call */ + WORD env; /* Ž©‹ÇŠÂ‹« */ + char rem[MLREM+1]; /* ‹LŽ– */ + char opt1[MLOPT+1]; /* µÌß¼®Ý */ + char opt2[MLOPT+1]; /* µÌß¼®Ý2 */ +}SDMMLOG; + +#define FHDOFF 256 /* 擪‚̃wƒbƒ_‚̃IƒtƒZƒbƒg */ +#define UMODEMAX 32 +typedef struct { + char id[20]; /* ƒtƒ@ƒCƒ‹ƒo[ƒWƒ‡ƒ“ */ + char dmy[4]; /* ƒ_ƒ~[—̈æ */ + USHORT mlt; /* ƒ}ƒ‹ƒ`î•ñ‚̃TƒCƒY */ + char td; /* Žž·ƒR[ƒh */ + char hash; /* ƒnƒbƒVƒ…ƒf[ƒ^Ši”[ƒtƒ‰ƒO */ + long size; /* ƒf[ƒ^ƒTƒCƒY */ + char master; /* ƒ}ƒXƒ^[ƒtƒ@ƒCƒ‹ƒtƒ‰ƒO */ + char dm2[15]; /* ƒ_ƒ~[‚Q */ + char mode[UMODEMAX][6]; /* ƒ†[ƒU’è‹`ƒ‚[ƒh */ +}FHD; +#pragma option -a. // ƒpƒbƒN‰ðœ‚ÌŽwަ + +class CIndex +{ +private: + int m_IndexMax; // Šm•Û’†‚̃Cƒ“ƒfƒbƒNƒX‚Ì” + int m_IndexCnt; // Œ»Ý‚̃Cƒ“ƒfƒbƒNƒX‚Ì” + LPSTR pIndex; // ƒCƒ“ƒfƒbƒNƒX—̈æ‚̃|ƒCƒ“ƒ^(16ƒoƒCƒgƒCƒ“ƒfƒbƒNƒX) + BYTE *pMult; // ƒ}ƒ‹ƒ`î•ñ‚̃|ƒCƒ“ƒ^ +public: + CIndex(); + ~CIndex(); + void AllocIndex(int n); + void ClearIndex(void); + void WriteIndex(LPCSTR pCall, int n); + void ReadIndex(LPSTR pCall, int n); + LPSTR PointIndex(int n); + void AddBlock(LPCSTR p, int len); + int ReadIndex(int handle, FHD *hp); + void MakeIndex(int handle, FHD *hp); + int WriteIndex(int handle, FHD *hp); + + +}; + +#define FINDMAX 32768 +class CLogFind +{ +public: + int m_FindCnt; + int m_FindCmp1Max; + int m_FindCmp2Max; + int m_FindStr1Max; + int m_FindStr2Max; + + int *pFindTbl; + AnsiString m_FindStr; +public: + CLogFind(); + ~CLogFind(); + inline int GetCount(void){return m_FindCnt;}; + inline void Clear(void){ + m_FindCnt = m_FindCmp1Max = m_FindCmp2Max = m_FindStr1Max = m_FindStr2Max = 0; + }; + int Add(int n); + void Ins(int n); + + inline void Write(int n){ + pFindTbl[m_FindCnt] = n; + m_FindCnt++; + }; + inline void SetText(LPCSTR p){ + if( p != m_FindStr.c_str() ){ + m_FindStr = p; + } + }; + inline LPCSTR GetText(void){ + return m_FindStr.c_str(); + }; + inline void ClearText(void){ + m_FindStr = ""; + }; +}; + +class CLogFile +{ +private: + int m_Open; // ƒI[ƒvƒ“ƒtƒ‰ƒO + int m_EditFlag; // •ÒWƒtƒ‰ƒO + int m_Handle; // ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹ + CIndex m_Index; // Œ»ÝƒI[ƒvƒ“’†‚̃Cƒ“ƒfƒbƒNƒX + FHD m_fhd; // Œ»ÝƒI[ƒvƒ“’†‚̃tƒ@ƒCƒ‹ƒwƒbƒ_ + AnsiString m_Name; // ƒƒOƒtƒ@ƒCƒ‹‚Ì–¼‘O + char m_modebuf[8]; +public: + AnsiString m_FileName; // ƒƒOƒtƒ@ƒCƒ‹‚Ì–¼‘Oiƒtƒ‹ƒpƒXj + + int m_CurNo; + int m_CurChg; + SDMMLOG m_sd; + SDMMLOG m_bak; + SDMMLOG m_asd; + + CLogFind m_Find; // ƒJƒŒƒ“ƒgŒŸõƒf[ƒ^ + LOGSET m_LogSet; + SYSTEMTIME m_UTC; +private: + void SetHisRST(SDMMLOG *sp); + void InitHeader(void); + +public: + CLogFile(); + ~CLogFile(); + + void DoBackup(void); + int Open(LPCSTR pName, BOOL fNew); + int Open(LPCSTR pName){Open(pName, TRUE); return 0;}; //JA7UDE 0428 + int Close(void); + + void ReadIniFile(LPCSTR pKey, TMemIniFile *pIniFile); + void WriteIniFile(LPCSTR pKey, TMemIniFile *pIniFile); + + void MakeIndex(void); + + inline IsEdit(void){return m_EditFlag;}; + void MakePathName(LPCSTR pName); + void MakeName(LPCSTR pName); + inline LPCSTR GetName(void){return m_Name.c_str();}; + + inline int GetCount(void){return m_fhd.size;}; + inline int IsOpen(void){return m_Open;}; + int GetData(SDMMLOG *sp, int n); + int PutData(SDMMLOG *sp, int n); + + LPCSTR GetDateString(SDMMLOG *sp, int sw); + inline LPCSTR GetDateString(SDMMLOG *sp){ return GetDateString(sp, m_LogSet.m_DateType); }; + LPCSTR GetTimeString(WORD d); + + + LPCSTR GetModeString(BYTE m); + void SetMode(SDMMLOG *sp, LPCSTR s); + + LPCSTR GetFreqString(BYTE b, short fq); + void SetFreq(SDMMLOG *sp, LPCSTR p); + LPCSTR GetOptStr(int n, SDMMLOG *sp); + void SetOptStr(int n, SDMMLOG *sp, LPCSTR pOpt); + + void CopyAF(void); + void SetHisUTC(void); + + void SortDate(int bb, int eb); + int FindSameBand(void); + + void FindStrSet(CLogFind *fp, LPCSTR pCall); + int FindCmpSet(CLogFind *fp, LPCSTR pCall); + int FindClipSet(CLogFind *fp, LPCSTR pCall); + int FindSet(CLogFind *fp, LPCSTR pCall); + int Find(LPCSTR pCall, int b, int dir); + int IsAlready(LPCSTR pCall); + void DeleteAll(void); + void DeleteLast(void); + void Delete(int top, int end); + void Insert(int n, SDMMLOG *sp); + + void InitCur(void); + void SetLastPos(void); + + int ReadAscii(SDMMLOG *sp, LPSTR p); + +}; + +void JSTtoUTC(int &Year, int &Mon, int &Day, int &Hour); +void JSTtoUTC(SDMMLOG *sp); +void UTCtoJST(int &Year, int &Mon, int &Day, int &Hour); +void UTCtoJST(SDMMLOG *sp); +void mBandToBand(SDMMLOG *sp, LPCSTR p); +LPCSTR FreqTomBand(SDMMLOG *sp); +int GetLMode(BYTE m); + +extern CLogFile Log; +extern const char MONN[]; +extern const char MONU[]; +#endif + diff --git a/LogList.cpp b/LogList.cpp new file mode 100644 index 0000000..285945d --- /dev/null +++ b/LogList.cpp @@ -0,0 +1,1169 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "LogList.h" +#include "QsoDlg.h" +#include "TextEdit.h" +#include "LogConv.h" +#include "ConvDef.h" +#include "LogSet.h" +#include "country.h" +#include "Hamlog5.h" +#include "TH5Len.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TLogListDlg *LogListDlg; +//--------------------------------------------------------------------- +__fastcall TLogListDlg::TLogListDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Grid->Font->Name = ((TForm *)AOwner)->Font->Name; + Grid->Font->Charset = ((TForm *)AOwner)->Font->Charset; + KFile->Caption = "File(&F)"; + KEdit->Caption = "Edit(&E)"; + KFind->Caption = "Find(&S)"; + KOpt->Caption = "Option(&O)"; + KHelp->Caption = "Help(&H)"; + + KOpen->Caption = "Open LogData File(&O)..."; + KFlush->Caption = "Save data now(&M)"; + KReIndex->Caption = "Make Index"; + KMTextRead->Caption = "Load MMLOG TextFile(&R)..."; + KMTextWrite->Caption = "Save selected range to MMLOG TextFile(&W)..."; + KImport->Caption = "Import"; + KImportText->Caption = "Text File..."; + KImportLog200->Caption = "Log200 File..."; + KImportHamlog->Caption = "Hamlog File..."; + KImportADIF->Caption = "ADIF File..."; + KExport->Caption = "Export selected range"; + KExportText->Caption = "Text File..."; + KExportADIF->Caption = "ADIF File..."; + KExportLog200->Caption = "Log200 File..."; + KExportHamlog->Caption = "Hamlog File..."; + KExportCabrillo->Caption = "Cabrillo file..."; + KExit->Caption = "Return to MMTTY(&X)"; + + KDelCur->Caption = "Cut"; + KInsCur->Caption = "Insert"; + KSelAll->Caption = "Select All"; + KDelSel->Caption = "Delete selected range"; + KSortDate->Caption = "Sort(Date/Time)"; + + KTop->Caption = "Move Top"; + KBottom->Caption = "Move Last"; + KFindTop->Caption = "Search forward..."; + KFindBottom->Caption = "Search backward..."; + KFindConT->Caption = "Search forward again"; + KFindConB->Caption = "Search backward again"; + + KLogOpt->Caption = "Setup Logging..."; + } + if( JanHelp.IsEmpty() ){ + KHlpLog->Caption = sys.m_HelpLog.c_str(); + } + else { + KHlpLog->Caption = "MMTTY Log"; + } + KExportCabrillo->Visible = FALSE; // Delete by JE3HHT on Sep.2010 + + int CX = ::GetSystemMetrics(SM_CXFULLSCREEN); + int CY = ::GetSystemMetrics(SM_CYFULLSCREEN); + if( (CX < Width)||(CY < Height) ){ + Top = 0; + Left = 0; + Width = CX; + Height = CY; + } + m_DateWidth = Grid->ColWidths[0]; + FormCenter(this, CX, CY); + if( Owner != NULL ){ + WindowState = ((TForm *)Owner)->WindowState; + } + SetTimeZone(); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::SetTimeZone(void) +{ + switch(Log.m_LogSet.m_TimeZone){ + case 'I': + if( lcid == LANG_KOREAN ){ + m_TimeZone = "KST"; + } + else { + m_TimeZone = "JST"; + } + break; + default: + m_TimeZone = "UTC"; + break; + } + if(Log.m_LogSet.m_DateType & 1){ + Grid->ColWidths[0] = (m_DateWidth * 10) / 8; + } + else { + Grid->ColWidths[0] = m_DateWidth; + } +} +//--------------------------------------------------------------------------- +// ƒAƒCƒhƒ‹ˆ— +void __fastcall TLogListDlg::OnIdle(TObject *Sender, bool &Done) +{ + UpdateMenu(); +} +void __fastcall TLogListDlg::UpdateLogCount(int sw) +{ + + Grid->RowCount = Log.GetCount() + 2; + + if( sw ){ + Grid->Row = Log.GetCount() + 1; + AdjustTopRow(); + char bf[256]; + if(Font->Charset != SHIFTJIS_CHARSET){ + sprintf(bf, "%s - [%u QSO data(s)]", Log.m_FileName.c_str(), Log.GetCount()); + } + else { + sprintf(bf, "%s - [%uŒ‚̃f[ƒ^‚ª‚ ‚è‚Ü‚·]", Log.m_FileName.c_str(), Log.GetCount()); + } + Caption = bf; + } + Grid->Col = 0; + Grid->Invalidate(); +} + +void __fastcall TLogListDlg::AdjustTopRow(void) +{ + int GridLine = Grid->GridHeight/Grid->RowHeights[1] - 1; + int Top = Grid->Row - GridLine + 1; + if( Top < 1 ) Top = 1; + Grid->TopRow = Top; + Grid->Invalidate(); +} + +void __fastcall TLogListDlg::Execute(void) +{ + if( !Log.IsOpen() ){ + Log.Open(NULL); + } + Application->OnIdle = OnIdle; + UpdateLogCount(1); + if( !sys.m_LogGridWidths.IsEmpty() ){ + SetGridWidths(Grid, sys.m_LogGridWidths.c_str()); + } + ShowModal(); + GetGridWidths(sys.m_LogGridWidths, Grid); +} +//--------------------------------------------------------------------- +void __fastcall TLogListDlg::GridDrawCell(TObject *Sender, int Col, int Row, + TRect &Rect, TGridDrawState State) +{ + char bf[256]; + SDMMLOG sd; + +#if 0 + if( (Row >= Grid->Selection.Top)&&(Row <= Grid->Selection.Bottom) ){ + Grid->Canvas->Brush->Color = clBlue; + Grid->Canvas->Font->Color = clWhite; + } +#endif + + Grid->Canvas->FillRect(Rect); + int X = Rect.Left + 4; + int Y = Rect.Top + 2; + + if( Row ){ + Row--; + bf[0] = 0; + if( Row < Log.GetCount() ){ + Log.GetData(&sd, Row); + } + else { + memset(&sd, 0, sizeof(SDMMLOG)); + } + if( Log.m_LogSet.m_TimeZone != 'I' ){ + JSTtoUTC(&sd); + } + switch(Col){ + case 0: // Date + strcpy(bf, Log.GetDateString(&sd)); + break; + case 1: // Time + strcpy(bf, Log.GetTimeString(sd.btime)); + break; + case 2: // Call + strcpy(bf, sd.call); + break; + case 3: // M + bf[0] = sd.cq; + bf[1] = 0; + break; + case 4: // HisRST + strcpy(bf, sd.ur); + break; + case 5: // MyRST + strcpy(bf, sd.my); + break; + case 6: // Band + strcpy(bf, Log.GetFreqString(sd.band, sd.fq)); + break; + case 7: // Mode + strcpy(bf, Log.GetModeString(sd.mode)); + break; + case 8: // Pow + strcpy(bf, sd.pow); + break; + case 9: // Name + strcpy(bf, sd.name); + break; + case 10: // QTH + strcpy(bf, sd.qth); + break; + case 11: // S + bf[0] = sd.send; + bf[1] = 0; + break; + case 12: // R + bf[0] = sd.recv; + bf[1] = 0; + break; + case 13: // REM + strcpy(bf, sd.rem); + break; + case 14: // QSL + strcpy(bf, sd.qsl); + break; + case 15: // etime; + strcpy(bf, Log.GetTimeString(sd.etime)); + break; + case 16: // Env + if( sd.env ) sprintf(bf, "%u", sd.env); + break; + case 17: // Opt1 + strcpy(bf, sd.opt1); + break; + case 18: // Opt2 + strcpy(bf, sd.opt2); + break; + case 19: // Usr1 + strcpy(bf, Log.GetOptStr(2, &sd)); + break; + case 20: // Usr2 + strcpy(bf, Log.GetOptStr(3, &sd)); + break; + } + Grid->Canvas->TextRect(Rect, X, Y, bf); + } + else { // ƒ^ƒCƒgƒ‹ + LPCSTR _tt[]={ + "Date","JST","Call","M", "His","My","Band","Mode","Pow","Name","QTH","S","R", + "REM","QSL", "End", "Env", "Opt1", "Opt2", "Usr1", "Usr2", + }; + if( Col == 1 ){ + Grid->Canvas->TextRect(Rect, X, Y, m_TimeZone.c_str()); + } + else { + Grid->Canvas->TextRect(Rect, X, Y, _tt[Col]); + } + } + +} +//--------------------------------------------------------------------------- +// ƒŠƒ^[ƒ“ƒL[‚̈— +void __fastcall TLogListDlg::GridKeyPress(TObject *Sender, char &Key) +{ + if( Key == 0x0d ){ + GridDblClick(NULL); + Key = 0; + } +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::UpdateMenu(void) +{ + int f = Log.IsOpen(); + KFlush->Enabled = f && Log.IsEdit(); + KDelCur->Enabled = f && (Grid->Row <= Log.GetCount()) && (Grid->Row >= 1); + KInsCur->Enabled = f && (Grid->Row <= Log.GetCount()) && (Grid->Row >= 1); + KDelSel->Enabled = f && (Grid->Selection.Top < Grid->Selection.Bottom); + KTop->Enabled = f && Log.GetCount(); + KBottom->Enabled = f && Log.GetCount(); + KFindTop->Enabled = f && Log.GetCount(); + KFindBottom->Enabled = f && Log.GetCount(); + KFindConT->Enabled = f && Log.GetCount(); + KFindConB->Enabled = f && Log.GetCount(); + KSortDate->Enabled = f && Log.GetCount() && (Grid->Selection.Top < Grid->Selection.Bottom); + KSelAll->Enabled = f && Log.GetCount(); + KMTextRead->Enabled = f; + KMTextWrite->Enabled = f && Log.GetCount() && (Grid->Selection.Top <= Log.GetCount()); + KExport->Enabled = f && Log.GetCount() && (Grid->Selection.Top <= Log.GetCount()); + KReIndex->Enabled = f; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KOpenClick(TObject *Sender) +{ + OpenDialog->Options << ofCreatePrompt; + OpenDialog->Options >> ofFileMustExist; + if(Font->Charset != SHIFTJIS_CHARSET){ + OpenDialog->Title = "Open LogData File"; + OpenDialog->Filter = "MMLOG Data File(*.mdt)|*.mdt|"; + } + else { + OpenDialog->Title = "ƒƒOƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“"; + OpenDialog->Filter = "MMLOG Data File(*.mdt)|*.mdt|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "mdt"; + OpenDialog->InitialDir = MMLogDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + Log.Close(); + Log.MakeName(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + Log.Open(NULL); + UpdateLogCount(1); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KFlushClick(TObject *Sender) +{ + Log.Close(); + Log.Open(NULL); + UpdateLogCount(0); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KDelCurClick(TObject *Sender) +{ + int n = Grid->Row - 1; + SDMMLOG sd; + Log.GetData(&sd, n); + memcpy(&Log.m_bak, &sd, sizeof(SDMMLOG)); + Log.Delete(n, n); + UpdateLogCount(0); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KInsCurClick(TObject *Sender) +{ + int n = Grid->Row - 1; + Log.Insert(n, &Log.m_bak); + UpdateLogCount(0); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KDelSelClick(TObject *Sender) +{ + if( YesNoMB( (Font->Charset != SHIFTJIS_CHARSET)?"Delete Selection.(will not be able to restore) Are you sure?":"Œ»Ý‘I‘ð‚³‚ê‚Ä‚¢‚é”͈͂ð휂µ‚Ü‚·.휂µ‚½“à—e‚Í•œŒ³‚Å‚«‚Ü‚¹‚ñ\r\n\r\n‚æ‚낵‚¨‚Ü‚Á‚©H") == IDYES ){ + int top = Grid->Selection.Top - 1; + int end = Grid->Selection.Bottom - 1; + Log.Delete(top, end); + UpdateLogCount(0); + Grid->Row = top + 1; + } +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KExitClick(TObject *Sender) +{ + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KFindTopClick(TObject *Sender) +{ + if( m_FindCall.IsEmpty() || (Sender == KFindTop) ){ + UnicodeString as = m_FindCall; //JA7UDE 0428 + if( InputQuery("MMTTY", (Font->Charset != SHIFTJIS_CHARSET)?"Callsign":"ŒŸõ‚·‚éƒR[ƒ‹ƒTƒCƒ“", as) == FALSE ) return; //JA7UDE 0428 + //jstrupr(as.c_str()); + as = as.UpperCase(); + m_FindCall = as; + } + int n = Log.Find(m_FindCall.c_str(), Grid->Row, 0); + if( n >= 0 ){ + Grid->Row = n + 1; + } + else if( Font->Charset != SHIFTJIS_CHARSET ){ + WarningMB("'%s' was not found", m_FindCall.c_str()); + } + else { + WarningMB("'%s'‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FindCall.c_str()); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KFindBottomClick(TObject *Sender) +{ + if( m_FindCall.IsEmpty() || (Sender == KFindBottom) ){ + UnicodeString as = m_FindCall; + if( InputQuery("MMTTY", (Font->Charset != SHIFTJIS_CHARSET)?"Callsign":"ŒŸõ‚·‚éƒR[ƒ‹ƒTƒCƒ“", as) == FALSE ) return; //JA7UDE 0428 + //jstrupr(as.c_str()); + as = as.UpperCase(); + m_FindCall = as; + } + int n = Log.Find(m_FindCall.c_str(), Grid->Row - 2, 1); + if( n >= 0 ){ + Grid->Row = n + 1; + } + else if( Font->Charset != SHIFTJIS_CHARSET ){ + WarningMB("'%s' was not found", m_FindCall.c_str()); + } + else { + WarningMB("'%s'‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½.", m_FindCall.c_str()); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KTopClick(TObject *Sender) +{ + Grid->Row = 1; + Grid->TopRow = 1; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KBottomClick(TObject *Sender) +{ + Grid->Row = Log.GetCount() + 1; + AdjustTopRow(); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KSortDateClick(TObject *Sender) +{ + if( YesNoMB( (Font->Charset != SHIFTJIS_CHARSET)?"This job may need long time. Are you sure?":"‚±‚̈—‚̓ƒ`ƒƒƒ“ƒRŽžŠÔ‚ª‚©‚©‚é‚©‚à’m‚ê‚Ü‚¹‚ñ.\r\n\r\n‚æ‚낵‚¨‚Ü‚Á‚©H" ) == IDYES ){ + int top = Grid->Selection.Top - 1; + int end = Grid->Selection.Bottom - 1; + if( top == end ){ + top = 0; + end = Log.GetCount() - 1; + } + Log.SortDate(top, end); + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::GridDblClick(TObject *Sender) +{ + int n = Grid->Row - 1; + if( (n >= 0) && (n < Log.GetCount()) ){ + TQSODlgBox *pBox = new TQSODlgBox(this); + SDMMLOG sd; + Log.GetData(&sd, n); + CLogFind Find; + + Log.FindSet(&Find, sd.call); + + pBox->Execute(&Find, &sd, n); + Grid->Invalidate(); + delete pBox; + } +} +//--------------------------------------------------------------------------- +// ‚l‚l‚k‚n‚fƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃[ƒh +void __fastcall TLogListDlg::KMTextReadClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options << ofFileMustExist; + if( Font->Charset != SHIFTJIS_CHARSET ){ + OpenDialog->Title = "Load MMLOG Text file"; + OpenDialog->Filter = "MMLOG Text Files(*.log)|*.log|"; + } + else { + OpenDialog->Title = "MMLOGƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃[ƒh"; + OpenDialog->Filter = "MMLOGƒeƒLƒXƒgƒtƒ@ƒCƒ‹(*.log)|*.log|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "log"; + OpenDialog->InitialDir = MMLogDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + LoadMmlogText(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KMTextWriteClick(TObject *Sender) +{ + SaveDialog->Options << ofOverwritePrompt; + if( Font->Charset != SHIFTJIS_CHARSET ){ + SaveDialog->Title = "Save MMLOG Text File"; + SaveDialog->Filter = "MMLOG Text Files(*.log)|*.log|"; + } + else { + SaveDialog->Title = "MMLOGƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "MMLOGƒeƒLƒXƒgƒtƒ@ƒCƒ‹(*.log)|*.log|"; + } + char bf[256]; + strcpy(bf, Log.GetName()); + SetEXT(bf, ".log"); + SaveDialog->FileName = bf; + SaveDialog->DefaultExt = "log"; + SaveDialog->InitialDir = MMLogDir; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + SaveMmlogText(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::SureRead(void) +{ + int r; + if( Font->Charset != SHIFTJIS_CHARSET ){ + r = YesNoCancelMB("MMTTY has QSO data(s) already. Add QSO data from file?\r\n\r\n\tAdded to the end\r\n\tOverwrite\r\n\t(All the current data are deleted, and replaced by the read data)\r\n\tAbort this function"); + } + else { + r = YesNoCancelMB("Œ»ÝMMTTY‚ɃƒOƒf[ƒ^‚ª‘¶Ý‚µ‚Ü‚·. ’ljÁ“ǂ݂±‚Ý‚µ‚Ü‚·‚©H\r\n\r\n<‚Í‚¢>\tŒ»Ý‚̃ƒOƒf[ƒ^‚ÌÅŒã‚ɓǂݞ‚ñ‚¾ƒf[ƒ^‚ª’ljÁ‚³‚ê‚é.\r\n<‚¢‚¢‚¦>\tŒ»Ý‚̃ƒOƒf[ƒ^‚Í‘S‚Ä휂³‚ê“ǂݞ‚ñ‚¾ƒf[ƒ^‚É’u‚«Š·‚í‚é.\r\n<·¬Ý¾Ù>\tˆ—’†Ž~"); + } + switch(r){ + case IDCANCEL: + return 0; + case IDNO: + if( Font->Charset != SHIFTJIS_CHARSET ){ + r = OkCancelMB("Delete All QSO data(s)...(will not be able to restore) Are you sure?"); + } + else { + r = OkCancelMB("Œ»ÝMMTTY‚ª•ÛŽ‚µ‚Ä‚¢‚郃Oƒf[ƒ^‚ð‘S‚ÄŽ¸‚¢‚Ü‚·.\r\n\r\n‚Ù‚ñ‚܂ɂ¦‚¦‚Å‚Á‚©H"); + } + switch(r){ + case IDOK: + Log.DeleteAll(); + break; + case IDCANCEL: + return 0; + } + break; + default: + break; + } + return 1; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::LoadMmlogText(LPCSTR pName) +{ + char bf[1024]; + + if( Log.GetCount() ){ + if( !SureRead() ) return; + } + FILE *fp = fopen(pName, "rt"); + if( fp != NULL ){ + int r = IDNO; + if( Font->Charset != SHIFTJIS_CHARSET ){ + r = YesNoMB("This function exists for compatibility with old software which handle JST.\r\n\r\nAre recorded data UTC?"); + } + CWaitCursor w; + SDMMLOG sd; + while(!feof(fp)){ + if( fgets(bf, 1023, fp) != NULL ){ + ClipLF(bf); + if( bf[0] ){ + if( Log.ReadAscii(&sd, bf) == TRUE ){ + if( r == IDYES ) UTCtoJST(&sd); + Log.PutData(&sd, Log.GetCount()); + } + } + } + } + fclose(fp); + } + else if( Font->Charset != SHIFTJIS_CHARSET ){ + ErrorMB("Can't open '%s'", pName); + } + else { + ErrorMB( "'%s'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ.", pName); + } + UpdateLogCount(1); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::SaveMmlogText(LPCSTR pName) +{ + FILE *fp = fopen(pName, "wt"); + if( fp != NULL ){ + int r = IDNO; + if( Font->Charset != SHIFTJIS_CHARSET ){ + r = YesNoMB("This function exists for compatibility with old software which handle JST.\r\n\r\nDo you want UTC?"); + } + SDMMLOG sd; + int b = Grid->Selection.Top - 1; + int e = Grid->Selection.Bottom - 1; + if( e >= Log.GetCount() ) e--; + int i; + CWaitCursor w; + for( i = b; i <= e; i++ ){ + Log.GetData(&sd, i); + if( r == IDYES ) JSTtoUTC(&sd); + fprintf(fp, "\042%s\042,\042%s.%02u\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,", + Log.GetDateString(&sd, 0), + Log.GetTimeString(sd.btime), (sd.btime % 30 * 2), + sd.call, sd.ur, sd.my, + Log.GetFreqString(sd.band, sd.fq) + ); + + fprintf(fp, "\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,", + Log.GetModeString(sd.mode), + sd.pow, sd.name, sd.qth, sd.rem, sd.qsl + ); + fprintf(fp, "\042%s\042,\042%.1s\042,\042%.1s\042,\042%.1s\042,\042%u\042,", + Log.GetTimeString(sd.etime), + &sd.send, &sd.recv, &sd.cq, sd.env + ); + fprintf(fp, "\042%s\042,\042%s\042,", sd.opt1, sd.opt2 ); + fprintf(fp, "\042%s\042,", Log.GetOptStr(2, &sd)); + fprintf(fp, "\042%s\042\n", Log.GetOptStr(3, &sd)); + if( ferror(fp) ) break; + } + if( fclose(fp) ){ + ErrorMB( Font->Charset != SHIFTJIS_CHARSET ? "Can't save to '%s'" : "'%s'‚ª³‚µ‚­ì¬‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½.", pName); + } + } + else if( Font->Charset != SHIFTJIS_CHARSET ){ + ErrorMB("Can't save to '%s'", pName); + } + else { + ErrorMB( "'%s'‚ªì¬‚Å‚«‚Ü‚¹‚ñ.", pName); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KSelAllClick(TObject *Sender) +{ + TGridRect gRect; + gRect.Top = 1; + gRect.Bottom = Grid->RowCount - 1; + gRect.Left = 0; + gRect.Right = 20; + + Grid->Selection = gRect; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KHlpLogClick(TObject *Sender) +{ + if( JanHelp.IsEmpty() ){ + ShowHelp(this, sys.m_HelpLog.c_str()); + } + else { + ShowHtmlHelp("logging.htm"); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KReIndexClick(TObject *Sender) +{ + Log.MakeIndex(); +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::LoadText(LPCSTR pName) +{ + TConvDefDlg *pBox = new TConvDefDlg(this); + int r = pBox->Execute(LogText.m_rConv, LogText.m_Delm, LogText.m_UTC, LogText.m_Double, pName); + delete pBox; + if( r == FALSE ) return FALSE; + + if( Log.GetCount() ){ + if( !SureRead() ) return FALSE; + } + + if( LogText.Open(pName) ){ + SDMMLOG sd; + CWaitCursor w; + while(LogText.Read(&sd)==TRUE){ + Log.PutData(&sd, Log.GetCount()); + } + LogText.Close(); + } + else { + UpdateLogCount(1); + return FALSE; + } + UpdateLogCount(1); + return TRUE; +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::SaveText(LPCSTR pName) +{ + int b = Grid->Selection.Top - 1; + int e = Grid->Selection.Bottom - 1; + if( e >= Log.GetCount() ) e--; + + TConvDefDlg *pBox = new TConvDefDlg(this); + int r = pBox->Execute(LogText.m_tConv, LogText.m_Delm, LogText.m_UTC, LogText.m_Double, b, e); + delete pBox; + if( r == FALSE ) return FALSE; + if( LogText.Create(pName) ){ + SDMMLOG sd; + int i; + CWaitCursor w; + for( i = b; i <= e; i++ ){ + Log.GetData(&sd, i); + if( LogText.Write(&sd) == FALSE ) break; + } + LogText.Close(); + } + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KExportTextClick(TObject *Sender) +{ + SaveDialog->Options << ofOverwritePrompt; + if( Font->Charset != SHIFTJIS_CHARSET ){ + SaveDialog->Title = "Save Text File"; + SaveDialog->Filter = "Text Files(*.csv;*.txt)|*.csv;*.txt|"; + } + else { + SaveDialog->Title = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹(*.csv;*.txt)|*.csv;*.txt|"; + } + char bf[256]; + strcpy(bf, Log.GetName()); + SetEXT(bf, ".csv"); + SaveDialog->FileName = bf; + SaveDialog->DefaultExt = "csv"; + SaveDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + SaveText(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KImportTextClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options >> ofFileMustExist; + if( Font->Charset != SHIFTJIS_CHARSET ){ + OpenDialog->Title = "Load Text File"; + OpenDialog->Filter = "Text File(*.csv;*.txt)|*.csv;*.txt|"; + } + else { + OpenDialog->Title = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃[ƒh"; + OpenDialog->Filter = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹(*.csv;*.txt)|*.csv;*.txt|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "csv"; + OpenDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + LoadText(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(ExtLogDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::LoadLog200(LPCSTR pName) +{ + if( Log.GetCount() ){ + if( !SureRead() ) return FALSE; + } + + CLog200 log200; + if( log200.Open(pName) ){ + SDMMLOG sd; + CWaitCursor w; + while(log200.Read(&sd)==TRUE){ + Log.PutData(&sd, Log.GetCount()); + } + log200.Close(); + } + else { + UpdateLogCount(1); + return FALSE; + } + UpdateLogCount(1); + return TRUE; +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::SaveLog200(LPCSTR pName) +{ + int b = Grid->Selection.Top - 1; + int e = Grid->Selection.Bottom - 1; + if( e >= Log.GetCount() ) e--; + + CLog200 log200; + if( log200.Create(pName) ){ + SDMMLOG sd; + int i; + CWaitCursor w; + for( i = b; i <= e; i++ ){ + Log.GetData(&sd, i); + if( log200.Write(&sd) == FALSE ) break; + } + log200.Close(); + } + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KExportLog200Click(TObject *Sender) +{ + SaveDialog->Options << ofOverwritePrompt; + if( Font->Charset != SHIFTJIS_CHARSET ){ + SaveDialog->Title = "Save LOG200 Data file"; + SaveDialog->Filter = "LOG200 Data File(*.l2)|*.l2|"; + } + else { + SaveDialog->Title = "LOG200ƒf[ƒ^ƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "LOG200ƒf[ƒ^ƒtƒ@ƒCƒ‹(*.l2)|*.l2|"; + } + char bf[256]; + strcpy(bf, Log.GetName()); + SetEXT(bf, ".l2"); + SaveDialog->FileName = bf; + SaveDialog->DefaultExt = "l2"; + SaveDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + SaveLog200(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KImportLog200Click(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options >> ofFileMustExist; + if( Font->Charset != SHIFTJIS_CHARSET ){ + OpenDialog->Title = "Load LOG200 Data File"; + OpenDialog->Filter = "LOG200 Data File(*.l2)|*.l2|"; + } + else { + OpenDialog->Title = "LOG200ƒf[ƒ^ƒtƒ@ƒCƒ‹‚̃[ƒh"; + OpenDialog->Filter = "LOG200ƒf[ƒ^ƒtƒ@ƒCƒ‹(*.l2)|*.l2|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "l2"; + OpenDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + LoadLog200(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(ExtLogDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::LoadHamLog(LPCSTR pName) +{ + if( Log.GetCount() ){ + if( !SureRead() ) return FALSE; + } + + CHamLog HamLog; + if( HamLog.Open(pName) ){ + SDMMLOG sd; + CWaitCursor w; + while(HamLog.Read(&sd)==TRUE){ + Log.PutData(&sd, Log.GetCount()); + } + HamLog.Close(); + } + else { + UpdateLogCount(1); + return FALSE; + } + UpdateLogCount(1); + return TRUE; +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::LoadHamLog5(LPCSTR pName) +{ + if( Log.GetCount() ){ + if( !SureRead() ) return FALSE; + } + + CHamlog5 HamLog; + if( HamLog.Open(pName, TRUE) ){ + SDMMLOG sd; + CWaitCursor w; + DWORD Pos; + for( Pos = 0; Pos < HamLog.GetRCount(); Pos++ ){ + if( HamLog.Seek(Pos) ){ + HamLog.DecodeData(&sd); + Log.PutData(&sd, Log.GetCount()); + } + } + HamLog.Close(); + } + else { + UpdateLogCount(1); + return FALSE; + } + UpdateLogCount(1); + return TRUE; +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::SaveHamLog(LPCSTR pName) +{ + int b = Grid->Selection.Top - 1; + int e = Grid->Selection.Bottom - 1; + if( e >= Log.GetCount() ) e--; + + CHamLog HamLog; + if( HamLog.Create(pName) ){ + SDMMLOG sd; + int i; + CWaitCursor w; + for( i = b; i <= e; i++ ){ + Log.GetData(&sd, i); + if( HamLog.Write(&sd) == FALSE ) break; + } + HamLog.Close(); + } + return TRUE; +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::SaveHamLog5(LPCSTR pName) +{ + int b = Grid->Selection.Top - 1; + int e = Grid->Selection.Bottom - 1; + if( e >= Log.GetCount() ) e--; + + + char master[256]; + SetDirName(master, pName); + strcat(master, "HAMLOG.HDB"); + CHamlog5 HamLog; + if( HamLog.Open(master, FALSE) ){ // ƒtƒB[ƒ‹ƒhî•ñ‚ð“ǂݞ‚Þ + HamLog.Close(); + } + else { // ƒtƒB[ƒ‹ƒhî•ñ‚ð–â‚¢‡‚킹 + TTH5LenDlg *pBox = new TTH5LenDlg(this); + if( !pBox->Execute() ){ + return FALSE; + } + } + + if( HamLog.Create(pName) ){ + SDMMLOG sd; + int i; + int n = 0; + CWaitCursor w; + for( i = b; i <= e; i++, n++ ){ + Log.GetData(&sd, i); + HamLog.Seek(n); + HamLog.EncodeData(&sd); + if( HamLog.Update() == FALSE ) break; + } + HamLog.Close(); + } + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KImportHamlogClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options >> ofFileMustExist; + if( Font->Charset != SHIFTJIS_CHARSET ){ + OpenDialog->Title = "Load HamLog Data File"; + OpenDialog->Filter = "HamLog Data File(*.hdb;*.dbs)|*.hdb;*.dbs|"; + } + else { + OpenDialog->Title = "HamLogƒf[ƒ^ƒtƒ@ƒCƒ‹‚̃[ƒh"; + OpenDialog->Filter = "HamLogƒf[ƒ^ƒtƒ@ƒCƒ‹(*.hdb;*.dbs)|*.hdb;*.dbs|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "hdb"; + OpenDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + LPCSTR pName = AnsiString(OpenDialog->FileName).c_str(); //JA7UDE 0428 + if( !strcmpi(GetEXT(pName), "HDB") ){ + LoadHamLog5(pName); + } + else { + LoadHamLog(pName); + } + SetDirName(ExtLogDir, pName); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KExportHamlogClick(TObject *Sender) +{ + SaveDialog->Options << ofOverwritePrompt; + if( Font->Charset != SHIFTJIS_CHARSET ){ + SaveDialog->Title = "Save HAMLOG Data File"; + SaveDialog->Filter = "HAMLOG (Ver5) Data File(*.hdb)|*.hdb|HAMLOG Data File(*.dbs)|*.dbs|"; + } + else { + SaveDialog->Title = "HAMLOGƒf[ƒ^ƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "HAMLOG (Ver5) ƒf[ƒ^ƒtƒ@ƒCƒ‹(*.hdb)|*.hdb|HAMLOGƒf[ƒ^ƒtƒ@ƒCƒ‹(*.dbs)|*.dbs|"; + } + char bf[256]; + strcpy(bf, Log.GetName()); + SetEXT(bf, ".hdb"); + SaveDialog->FileName = bf; + SaveDialog->DefaultExt = "hdb"; + SaveDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + LPCSTR pName = AnsiString(SaveDialog->FileName).c_str(); //JA7UDE 0428 + if( !strcmpi(GetEXT(pName), "HDB") ){ + SaveHamLog5(pName); + } + else { + SaveHamLog(pName); + } + SetDirName(ExtLogDir, pName); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KLogOptClick(TObject *Sender) +{ + TLogSetDlg *pBox = new TLogSetDlg(this); + pBox->Execute(); + delete pBox; + SetTimeZone(); + Grid->Invalidate(); +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::SaveADIF(LPCSTR pName) +{ + int b = Grid->Selection.Top - 1; + int e = Grid->Selection.Bottom - 1; + if( e >= Log.GetCount() ) e--; + + CLogADIF logADIF; + if( logADIF.Create(pName) ){ + SDMMLOG sd; + int i; + CWaitCursor w; + for( i = b; i <= e; i++ ){ + Log.GetData(&sd, i); + if( logADIF.Write(&sd) == FALSE ) break; + } + logADIF.Close(); + } + return TRUE; +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::LoadADIF(LPCSTR pName) +{ + if( Log.GetCount() ){ + if( !SureRead() ) return FALSE; + } + + CLogADIF logADIF; + if( logADIF.Open(pName) ){ + SDMMLOG sd; + memset(&sd, 0, sizeof(sd)); + CWaitCursor w; + while(logADIF.Read(&sd)==TRUE){ + Log.PutData(&sd, Log.GetCount()); + memset(&sd, 0, sizeof(sd)); + } + logADIF.Close(); + } + else { + UpdateLogCount(1); + return FALSE; + } + UpdateLogCount(1); + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KExportADIFClick(TObject *Sender) +{ + SaveDialog->Options << ofOverwritePrompt; + if( Font->Charset != SHIFTJIS_CHARSET ){ + SaveDialog->Title = "Save ADIF File"; + SaveDialog->Filter = "ADIF Files(*.adi)|*.adi|"; + } + else { + SaveDialog->Title = "ADIF ƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "ADIF ƒtƒ@ƒCƒ‹(*.adi)|*.adi|"; + } + char bf[256]; + strcpy(bf, Log.GetName()); + SetEXT(bf, ".adi"); + SaveDialog->FileName = bf; + SaveDialog->DefaultExt = "adi"; + SaveDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + SaveADIF(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KImportADIFClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options >> ofFileMustExist; + if( Font->Charset != SHIFTJIS_CHARSET ){ + OpenDialog->Title = "Load ADIF File"; + OpenDialog->Filter = "ADIF Files(*.adi;*.txt)|*.adi;*.txt|"; + } + else { + OpenDialog->Title = "ADIF ƒtƒ@ƒCƒ‹‚̃[ƒh"; + OpenDialog->Filter = "ADIF ƒtƒ@ƒCƒ‹(*.adi;*.txt)|*.adi;*.txt|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "adi"; + OpenDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + LoadADIF(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(ExtLogDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +int __fastcall TLogListDlg::SaveCabrillo(LPCSTR pName) +{ + int b = Grid->Selection.Top - 1; + int e = Grid->Selection.Bottom - 1; + if( e >= Log.GetCount() ) e--; + + CLogCabrillo logCabrillo; + if( logCabrillo.Create(pName) ){ + SDMMLOG sd; + int i; + CWaitCursor w; + for( i = b; i <= e; i++ ){ + Log.GetData(&sd, i); + if( logCabrillo.Write(&sd) == FALSE ) break; + } + logCabrillo.Close(); + } + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TLogListDlg::KExportCabrilloClick(TObject *Sender) +{ + SaveDialog->Options << ofOverwritePrompt; + if( Font->Charset != SHIFTJIS_CHARSET ){ + SaveDialog->Title = "Save Cabrillo File"; + SaveDialog->Filter = "Cabrillo Files(*.txt)|*.txt|"; + } + else { + SaveDialog->Title = "Cabrillo ƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "Cabrillo ƒtƒ@ƒCƒ‹(*.txt)|*.txt|"; + } + char bf[256]; + strcpy(bf, Log.GetName()); + SetEXT(bf, ".txt"); + SaveDialog->FileName = bf; + SaveDialog->DefaultExt = "txt"; + SaveDialog->InitialDir = ExtLogDir; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + SaveCabrillo(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); +} +//--------------------------------------------------------------------------- diff --git a/LogList.dfm b/LogList.dfm new file mode 100644 index 0000000000000000000000000000000000000000..acb583b6850f6c83dceaa70fc697cd210c42f560 GIT binary patch literal 3824 zcmbW4TWB0r7=TY_lbyZg(ru!GK2*_=pk0owT70s}Za2G~y`;NC(?02B_hd3;GPBH1 z+N7ma8<5f>)=O2qL2VvNOSKP$5UNm6Y^BdtL3~=;w1^Mti=YtyGc#vqcBesF7M3}4 z{{Q>`^Iy(6vmQfYp*&v5SH(v2&OAS-ewJ`69B+{xvG&4sOdBzMq&Bg8Uq*6C$LXU;I)4Hk~e6*&HnOat=kwjM4 z%v5?tGMdEX`>VNpR@{@XzM9UBR;s(jm_2PNC2H!VqSf_7B3Urw)`V?_`y*=xYmB$UG-evvKP;pkI zIMmG|5Ozb;J*q0Q#z!R8j!^_+lh)@olN*d?!BQQ@O%6Rkgm?(6D%EBmJ~({YN@p|P zC+n6E`-ou{6pgTPPB#wIaZJ|P6g;xGJ+fYrG?`S1N^0g7S9(*yuVw zhgYE^W`TPTdSeCOws=K9FK#OafL!S%1`BW6<~J1)DkQJf$pV{CM#0!JID6e{z*YR# z-kZt~M_iYCn8JOGyvQIOMq)ydHe7{BbtaK~1k4oSS3qSnj=sm2V0AZqF}rl~82v14MP+h3s|ZeUuOPT9pBNg5_sIu6pEfk`3ybF`? zy3qpreOduzk2CoY>98HO6*uHQL^^D4TROZd?{oZ3OH+oTs=Ax#M5&XKo(wJkNU8dYEd!99%RYTpcT*+;=*-Zl3#n8Ub9?noR4O$QEH8m9~@A zMb|yfaETjx=iGqc&uf2cu-e*u(`=&m&3h%sC61w`+m8AVccIp#gO-xR(2bWW)gdVwoz>LLv7 v53dPBpKF-NzD{3ruhaC4N;*g!p7-eTHtW;ngTy#Q?`bxp!-9iscu4dg7J1!t literal 0 HcmV?d00001 diff --git a/LogList.h b/LogList.h new file mode 100644 index 0000000..9d0ab43 --- /dev/null +++ b/LogList.h @@ -0,0 +1,159 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef LogListH +#define LogListH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +#include "LogFile.h" +#include +#include +#include +//---------------------------------------------------------------------------- +class TLogListDlg : public TForm +{ +__published: + TStringGrid *Grid; + TMainMenu *MainMenu; + TMenuItem *KFile; + TMenuItem *KOpen; + TOpenDialog *OpenDialog; + TMenuItem *KEdit; + TMenuItem *KFlush; + TMenuItem *KDelCur; + TMenuItem *KDelSel; + TMenuItem *N1; + TMenuItem *KExit; + TMenuItem *KFind; + TMenuItem *KFindTop; + TMenuItem *KFindBottom; + TMenuItem *KFindConT; + TMenuItem *KFindConB; + TMenuItem *N2; + TMenuItem *KTop; + TMenuItem *KBottom; + TMenuItem *N3; + TMenuItem *KSortDate; + TMenuItem *KInsCur; + TMenuItem *N4; + TMenuItem *N5; + TMenuItem *KMTextRead; + TMenuItem *KMTextWrite; + TSaveDialog *SaveDialog; + TMenuItem *KSelAll; + TMenuItem *KHelp; + TMenuItem *KHlpLog; + TMenuItem *N6; + TMenuItem *KReIndex; + TMenuItem *N7; + TMenuItem *KExport; + TMenuItem *KExportText; + TMenuItem *KImport; + TMenuItem *KImportText; + TMenuItem *KImportLog200; + TMenuItem *KExportLog200; + TMenuItem *KImportHamlog; + TMenuItem *KExportHamlog; + TMenuItem *KLogOpt; + TMenuItem *KOpt; + TMenuItem *KExportADIF; + TMenuItem *KImportADIF; + TMenuItem *KExportCabrillo; + void __fastcall GridDrawCell(TObject *Sender, int Col, int Row, + TRect &Rect, TGridDrawState State); + + void __fastcall GridKeyPress(TObject *Sender, char &Key); + void __fastcall KOpenClick(TObject *Sender); + void __fastcall KFlushClick(TObject *Sender); + void __fastcall KDelCurClick(TObject *Sender); + void __fastcall KDelSelClick(TObject *Sender); + void __fastcall KExitClick(TObject *Sender); + void __fastcall KFindTopClick(TObject *Sender); + void __fastcall KFindBottomClick(TObject *Sender); + void __fastcall KTopClick(TObject *Sender); + void __fastcall KBottomClick(TObject *Sender); + void __fastcall KSortDateClick(TObject *Sender); + + void __fastcall GridDblClick(TObject *Sender); + void __fastcall KInsCurClick(TObject *Sender); + void __fastcall KMTextReadClick(TObject *Sender); + void __fastcall KMTextWriteClick(TObject *Sender); + void __fastcall KSelAllClick(TObject *Sender); + void __fastcall KHlpLogClick(TObject *Sender); + void __fastcall KReIndexClick(TObject *Sender); + + void __fastcall KExportTextClick(TObject *Sender); + void __fastcall KImportTextClick(TObject *Sender); + void __fastcall KExportLog200Click(TObject *Sender); + void __fastcall KImportLog200Click(TObject *Sender); + void __fastcall KImportHamlogClick(TObject *Sender); + void __fastcall KExportHamlogClick(TObject *Sender); + void __fastcall KLogOptClick(TObject *Sender); + void __fastcall KExportADIFClick(TObject *Sender); + void __fastcall KImportADIFClick(TObject *Sender); + void __fastcall KExportCabrilloClick(TObject *Sender); +private: + void __fastcall AdjustTopRow(void); + void __fastcall UpdateLogCount(int sw); + void __fastcall UpdateMenu(void); + void __fastcall OnIdle(TObject *Sender, bool &Done); + + int __fastcall SureRead(void); + + void __fastcall LoadMmlogText(LPCSTR pName); + void __fastcall SaveMmlogText(LPCSTR pName); + int __fastcall LoadText(LPCSTR pName); + int __fastcall SaveText(LPCSTR pName); + int __fastcall LoadLog200(LPCSTR pName); + int __fastcall SaveLog200(LPCSTR pName); + int __fastcall LoadHamLog(LPCSTR pName); + int __fastcall SaveHamLog(LPCSTR pName); + int __fastcall LoadHamLog5(LPCSTR pName); + int __fastcall SaveHamLog5(LPCSTR pName); + + int __fastcall LoadADIF(LPCSTR pName); + int __fastcall SaveADIF(LPCSTR pName); + + int __fastcall SaveCabrillo(LPCSTR pName); + + AnsiString m_FindCall; + + void __fastcall SetTimeZone(void); + AnsiString m_TimeZone; + int m_DateWidth; +public: + virtual __fastcall TLogListDlg(TComponent* AOwner); + + void __fastcall TLogListDlg::Execute(void); +}; +//---------------------------------------------------------------------------- +//extern TLogListDlg *LogListDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/LogSet.cpp b/LogSet.cpp new file mode 100644 index 0000000..7a50a3e --- /dev/null +++ b/LogSet.cpp @@ -0,0 +1,337 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "LogSet.h" +#include "EditDlg.h" +#include "country.h" +#include "Loglink.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TLogSetDlg *LogSetDlg; +static int PageIndex = 0; +//--------------------------------------------------------------------- +__fastcall TLogSetDlg::TLogSetDlg(TComponent* AOwner) + : TForm(AOwner) +{ + m_DisEvent = TRUE; + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + TabConv->Caption = "Conversion"; + TabMisc->Caption = "Misc"; + CancelBtn->Caption = "Cancel"; + Caption = "Setup Logging"; + TabFlag->Caption = "Input"; + TabMacro->Caption = "QSO Button"; + GrpConv->Caption = "Convert UpperCase"; + GrpCopy->Caption = "Copy Before Data"; + CopyFreq->Caption = "Copy Band or Freq."; + CopyFreq->Items->Strings[0] = "Copy Band"; + CopyFreq->Items->Strings[1] = "Copy Freq."; + DefMyRST->Caption = "599 Default"; + CBBackup->Caption = "Make backup"; + + MacroFlag->Caption = "Auto Macro"; + CheckBand->Caption = "Check SameBand"; + AutoZone->Caption = "Ignore daylight saving"; + CBRemC->Visible = FALSE; + GB9->Caption = "Mode"; + } + if( lcid == LANG_KOREAN ){ + TimeZone->Items->Strings[0] = "Korea"; + } + else { + TimeZone->Items->Strings[0] = "Japan"; + } + SBHelp->Visible = !JanHelp.IsEmpty(); + + m_MMList.QueryList("MML"); + for( int i = 0; i < m_MMList.GetCount(); i++ ){ + CBMMLink->Items->Add(m_MMList.GetItemName(i)); + } +} +//--------------------------------------------------------------------- +void __fastcall TLogSetDlg::UpdateUI(void) +{ + int f = !AutoZone->Checked; + TimeOff->Enabled = f; + MinOff->Enabled = f; + UDOffset->Enabled = f; + UDMin->Enabled = f; + ClearOff->Enabled = f; + CBPoll->Enabled = RGLink->ItemIndex; + CBMMLink->Enabled = (RGLink->ItemIndex == 2) ? TRUE : FALSE; + LT->Enabled = CBMMLink->Enabled; +} +//--------------------------------------------------------------------- +int __fastcall TLogSetDlg::Execute(void) +{ + int i; + for( i = 0; i < 5; i++ ){ + m_MacroStr[i] = Log.m_LogSet.m_QSOMacroStr[i]; + m_MacroKey[i] = Log.m_LogSet.m_QSOMacroKey[i]; + } + UpperName->Checked = Log.m_LogSet.m_UpperName; + UpperQTH->Checked = Log.m_LogSet.m_UpperQTH; + UpperREM->Checked = Log.m_LogSet.m_UpperREM; + UpperQSL->Checked = Log.m_LogSet.m_UpperQSL; + + DefMyRST->Checked = Log.m_LogSet.m_DefMyRST; + Contest->ItemIndex = Log.m_LogSet.m_Contest; + + CopyFreq->ItemIndex = Log.m_LogSet.m_CopyFreq; + CopyHis->ItemIndex = Log.m_LogSet.m_CopyHis; + CopyName->Checked = Log.m_LogSet.m_CopyName; + CopyQTH->Checked = Log.m_LogSet.m_CopyQTH; + CopyREM->Checked = Log.m_LogSet.m_CopyREM; + CopyQSL->Checked = Log.m_LogSet.m_CopyQSL; + CBRemC->Checked = Log.m_LogSet.m_CopyREMB4; + CBBackup->Checked = Log.m_LogSet.m_Backup; + + if( Log.m_LogSet.m_TimeZone != 'I' ){ + TimeZone->ItemIndex = 1; + } + else { + TimeZone->ItemIndex = 0; + } + AutoSave->Checked = Log.m_LogSet.m_AutoSave; + MacroFlag->Checked = Log.m_LogSet.m_QSOMacroFlag; + CheckBand->Checked = Log.m_LogSet.m_CheckBand; + Macro1->Checked = Log.m_LogSet.m_QSOMacro[0]; + Macro2->Checked = Log.m_LogSet.m_QSOMacro[1]; + Macro3->Checked = Log.m_LogSet.m_QSOMacro[2]; + Macro4->Checked = Log.m_LogSet.m_QSOMacro[3]; + Macro5->Checked = Log.m_LogSet.m_QSOMacro[4]; + + THRTTY->Text = Log.m_LogSet.m_THRTTY; + THSSTV->Text = Log.m_LogSet.m_THSSTV; + THTZ->ItemIndex = Log.m_LogSet.m_THTZ; + ClipRSTADIF->Checked = Log.m_LogSet.m_ClipRSTADIF; + DateType->ItemIndex = Log.m_LogSet.m_DateType; + AutoZone->Checked = sys.m_AutoTimeOffset; + UDOffset->Position = short(sys.m_TimeOffset); + UDMin->Position = short(sys.m_TimeOffsetMin); + RGLink->ItemIndex = sys.m_LogLink; + CBPoll->Checked = LogLink.IsPolling(); + CBPTT->Checked = LogLink.GetPTTEnabled(); + CBMMLink->ItemIndex = CBMMLink->Items->IndexOf(LogLink.GetItemName()); + if( m_MMList.GetCount() ){ + RGLink->Controls[2]->Enabled = TRUE; + if( CBMMLink->ItemIndex < 0 ){ + CBMMLink->ItemIndex = 0; + } + } + else { + RGLink->Controls[2]->Enabled = FALSE; + } + + if( (PageIndex >= 0) && (PageIndex < Page->PageCount) ){ + if( Page->Pages[PageIndex]->TabVisible == FALSE ){ + PageIndex = 0; + } + Page->ActivePage = Page->Pages[PageIndex]; + } + int r = FALSE; + UpdateUI(); + m_DisEvent = FALSE; + if( ShowModal() == IDOK ){ + Log.m_LogSet.m_UpperName = UpperName->Checked; + Log.m_LogSet.m_UpperQTH = UpperQTH->Checked; + Log.m_LogSet.m_UpperREM = UpperREM->Checked; + Log.m_LogSet.m_UpperQSL = UpperQSL->Checked; + + Log.m_LogSet.m_DefMyRST = DefMyRST->Checked; + Log.m_LogSet.m_Contest = Contest->ItemIndex; + + Log.m_LogSet.m_CopyFreq = CopyFreq->ItemIndex; + Log.m_LogSet.m_CopyHis = CopyHis->ItemIndex; + Log.m_LogSet.m_CopyName = CopyName->Checked; + Log.m_LogSet.m_CopyQTH = CopyQTH->Checked; + Log.m_LogSet.m_CopyREM = CopyREM->Checked; + Log.m_LogSet.m_CopyQSL = CopyQSL->Checked; + Log.m_LogSet.m_CopyREMB4 = ( Font->Charset != SHIFTJIS_CHARSET ) ? 0 : CBRemC->Checked; + Log.m_LogSet.m_Backup = CBBackup->Checked; + + if( TimeZone->ItemIndex ){ + Log.m_LogSet.m_TimeZone = 'Z'; + } + else { + Log.m_LogSet.m_TimeZone = 'I'; + } + + Log.m_LogSet.m_AutoSave = AutoSave->Checked; + Log.m_LogSet.m_QSOMacroFlag = MacroFlag->Checked; + Log.m_LogSet.m_CheckBand = CheckBand->Checked; + Log.m_LogSet.m_QSOMacro[0] = Macro1->Checked; + Log.m_LogSet.m_QSOMacro[1] = Macro2->Checked; + Log.m_LogSet.m_QSOMacro[2] = Macro3->Checked; + Log.m_LogSet.m_QSOMacro[3] = Macro4->Checked; + Log.m_LogSet.m_QSOMacro[4] = Macro5->Checked; + + for( i = 0; i < 5; i++ ){ + Log.m_LogSet.m_QSOMacroStr[i] = m_MacroStr[i]; + Log.m_LogSet.m_QSOMacroKey[i] = m_MacroKey[i]; + } + Log.m_LogSet.m_THRTTY = THRTTY->Text; + Log.m_LogSet.m_THSSTV = THSSTV->Text; + Log.m_LogSet.m_THTZ = THTZ->ItemIndex; + Log.m_LogSet.m_ClipRSTADIF = ClipRSTADIF->Checked; + Log.m_LogSet.m_DateType = DateType->ItemIndex; + + sys.m_AutoTimeOffset = AutoZone->Checked; + sys.m_TimeOffset = UDOffset->Position; + sys.m_TimeOffsetMin = UDMin->Position; + if( sys.m_AutoTimeOffset ){ + SetTimeOffsetInfo(sys.m_TimeOffset, sys.m_TimeOffsetMin); + } + sys.m_LogLink = RGLink->ItemIndex; + LogLink.SetPolling(CBPoll->Checked); + LogLink.SetPTTEnabled(CBPTT->Checked); + if( CBMMLink->ItemIndex >= 0 ){ + LogLink.SetItemName(AnsiString(CBMMLink->Items->Strings[CBMMLink->ItemIndex]).c_str()); //JA7UDE 0428 + } + r = TRUE; + } + for( PageIndex = 0; PageIndex < Page->PageCount; PageIndex++ ){ + if( Page->ActivePage == Page->Pages[PageIndex] ) break; + } + return r; +} +//--------------------------------------------------------------------- +void __fastcall TLogSetDlg::MacroBtnClick(int n) +{ + if( n >= 0 ){ + TEditDlgBox *pBox = new TEditDlgBox(this); + pBox->ButtonName->Text = ""; + pBox->Execute(m_MacroStr[n], m_MacroKey[n], NULL, NULL, 2); + delete pBox; + } +} +//--------------------------------------------------------------------- +void __fastcall TLogSetDlg::MacroBtn1Click(TObject *Sender) +{ + MacroBtnClick(0); +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::MacroBtn2Click(TObject *Sender) +{ + MacroBtnClick(1); +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::MacroBtn3Click(TObject *Sender) +{ + MacroBtnClick(2); +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::MacroBtn4Click(TObject *Sender) +{ + MacroBtnClick(3); +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::MacroBtn5Click(TObject *Sender) +{ + MacroBtnClick(4); +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::ClearOffClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + UDOffset->Position = 0; + UDMin->Position = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::AutoZoneClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + if( AutoZone->Checked ){ + int hour, min; + SetTimeOffsetInfo(hour, min); + UDOffset->Position = short(hour); + UDMin->Position = short(min); + } + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::SBHelpClick(TObject *Sender) +{ +#if 1 + ShowHtmlHelp("logging.htm"); +#else + int n; + + if( Page->ActivePage == TabMacro ){ + n = 20; + } + else { + n = 18; + } + ShowHelp(n); +#endif +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::ContestClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + m_DisEvent++; + switch(Contest->ItemIndex){ + case testOFF: + CopyHis->ItemIndex = 0; + DefMyRST->Checked = FALSE; + MacroFlag->Checked = FALSE; + break; + case testON: + CopyHis->ItemIndex = 1; + DefMyRST->Checked = TRUE; + MacroFlag->Checked = TRUE; + break; + case testCQRJ: + CopyHis->ItemIndex = 0; + DefMyRST->Checked = TRUE; + MacroFlag->Checked = TRUE; + break; + case testPED: + CopyHis->ItemIndex = 0; + DefMyRST->Checked = TRUE; + MacroFlag->Checked = TRUE; + break; + case testBARTG: + CopyHis->ItemIndex = 2; + DefMyRST->Checked = TRUE; + MacroFlag->Checked = TRUE; + break; + } + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TLogSetDlg::RGLinkClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + UpdateUI(); +} +//--------------------------------------------------------------------------- + diff --git a/LogSet.dfm b/LogSet.dfm new file mode 100644 index 0000000000000000000000000000000000000000..c5bf59a92ef1ec7febb9a0c62c58f26e0949b2ca GIT binary patch literal 6621 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. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef LogSetH +#define LogSetH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +#include "LogFile.h" +#include "MMLink.h" +//---------------------------------------------------------------------------- +class TLogSetDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TPageControl *Page; + TTabSheet *TabFlag; + TGroupBox *GrpConv; + TCheckBox *UpperName; + TCheckBox *UpperQTH; + TCheckBox *UpperREM; + TCheckBox *UpperQSL; + TGroupBox *GrpCopy; + TCheckBox *CopyName; + TCheckBox *CopyQTH; + TCheckBox *CopyREM; + TCheckBox *CopyQSL; + TTabSheet *TabMacro; + TCheckBox *MacroFlag; + TGroupBox *GroupBox3; + TGroupBox *GroupBox4; + TCheckBox *Macro1; + TCheckBox *Macro2; + TCheckBox *Macro3; + TCheckBox *Macro4; + TCheckBox *Macro5; + TButton *MacroBtn1; + TButton *MacroBtn2; + TButton *MacroBtn3; + TButton *MacroBtn4; + TButton *MacroBtn5; + TCheckBox *CheckBand; + TRadioGroup *CopyHis; + TRadioGroup *CopyFreq; + TGroupBox *GroupBox5; + TCheckBox *DefMyRST; + TRadioGroup *TimeZone; + TRadioGroup *Contest; + TLabel *Label1; + TTabSheet *TabConv; + TGroupBox *GroupBox1; + TGroupBox *GroupBox2; + TCheckBox *ClipRSTADIF; + TTabSheet *TabMisc; + TGroupBox *GTime; + TEdit *TimeOff; + TUpDown *UDOffset; + TRadioGroup *DateType; + TEdit *MinOff; + TUpDown *UDMin; + TLabel *Label4; + TLabel *Label5; + TButton *ClearOff; + TCheckBox *AutoSave; + TCheckBox *AutoZone; + TSpeedButton *SBHelp; + TCheckBox *CBRemC; + TGroupBox *GB6; + TRadioGroup *RGLink; + TCheckBox *CBPoll; + TRadioGroup *THTZ; + TComboBox *CBMMLink; + TLabel *LT; + TCheckBox *CBBackup; + TCheckBox *CBPTT; + TGroupBox *GB9; + TLabel *Label2; + TLabel *Label3; + TEdit *THRTTY; + TEdit *THSSTV; + void __fastcall MacroBtn1Click(TObject *Sender); + void __fastcall MacroBtn2Click(TObject *Sender); + void __fastcall MacroBtn3Click(TObject *Sender); + void __fastcall MacroBtn4Click(TObject *Sender); + void __fastcall MacroBtn5Click(TObject *Sender); + void __fastcall ClearOffClick(TObject *Sender); + void __fastcall AutoZoneClick(TObject *Sender); + void __fastcall SBHelpClick(TObject *Sender); + void __fastcall ContestClick(TObject *Sender); + void __fastcall RGLinkClick(TObject *Sender); +private: + int m_DisEvent; + AnsiString m_MacroStr[5]; + WORD m_MacroKey[5]; + CMMList m_MMList; + + void __fastcall MacroBtnClick(int n); + void __fastcall UpdateUI(void); + +public: + virtual __fastcall TLogSetDlg(TComponent* AOwner); + + int __fastcall Execute(void); + +}; +//---------------------------------------------------------------------------- +//extern TLogSetDlg *LogSetDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/Loglink.cpp b/Loglink.cpp new file mode 100644 index 0000000..4980bcd --- /dev/null +++ b/Loglink.cpp @@ -0,0 +1,864 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#define MMSSTV 0 // MMTTY‚Å‚Í0 +#if MMSSTV +#include "Main.h" +#endif + +#include "LogLink.h" +CLogLink LogLink; +//--------------------------------------------------------------------------- +// CLogLinkƒNƒ‰ƒX +CLogLink::CLogLink() +{ + m_Enabled = FALSE; + m_Count = m_Count2 = 0; + m_hLog = NULL; + m_hLogIn = NULL; + m_CStat = 0; + m_hApp = NULL; + m_hMain = NULL; + m_Error = 0; + m_1stSession = TRUE; + m_fHLV5 = TRUE; + + m_Polling = 1; + m_PTTEnabled = FALSE; + + m_AStat = FALSE; + m_MMStat = FALSE; + m_pLink = NULL; + m_strMode[0] = 0; +} + +CLogLink::~CLogLink() +{ + CloseMMLink(); +} +//--------------------------------------------------------------------------- +void __fastcall CLogLink::CloseMMLink(void) +{ + if( m_pLink != NULL ){ + delete m_pLink; + m_pLink = NULL; + } +} +//--------------------------------------------------------------------------- +// ‘—M—pƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ÌÝ’è +void CLogLink::SetHandle(HWND hMain, UINT uMsg) +{ + m_hMain = hMain; + m_uMsg = uMsg; + m_hApp = Application->Handle; + if( m_pLink == NULL ) return; + m_pLink->SetHandle(hMain, uMsg); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CLogLink::IsLink(void) +{ + switch(m_Enabled){ + case 1: + return m_hLog != NULL ? TRUE : FALSE; + case 2: + return m_MMStat; + default: + return FALSE; + } +} +//--------------------------------------------------------------------------- +LPCSTR __fastcall CLogLink::GetSessionName(void) +{ + switch(m_Enabled){ + case 1: +// return "Turbo HAMLOG/Win"; + return m_AppName.c_str(); + case 2: + if( m_pLink == NULL ) return NULL; + return m_pLink->GetSessionName(); + default: + return NULL; + } +} +//--------------------------------------------------------------------------- +// ƒŠƒ“ƒN‚Ì‹–‰ÂÝ’è +void CLogLink::UpdateLink(int sw) +{ + if( (m_Enabled != sw) || + ((m_pLink != NULL) && strcmp(m_ItemName.c_str(), m_pLink->GetItemName()) ) + ){ + m_Enabled = sw; + switch(sw){ + case 0: + m_hLog = NULL; + m_hLogIn = NULL; + CloseMMLink(); + break; + case 1: + m_Count = 0; + m_Error = 0; + CloseMMLink(); + break; + case 2: + m_Count = 0; + m_Error = 0; + if( !m_pLink ){ + m_pLink = new CMMLink(m_hMain, m_uMsg); + } + m_pLink->Open(m_ItemName.c_str()); + break; + } + } +} +//--------------------------------------------------------------------------- +// ƒR[ƒ‹ƒTƒCƒ“‚𕪗£ +static void DevCall(AnsiString &CALL, AnsiString &PTB, LPCSTR pCall) +{ + char bf[1024]; + + CALL = ""; + PTB = ""; + strcpy(bf, pCall); + LPSTR pp, p2, t; + t = bf; + if( (pp = strchr(bf, '/')) != NULL ){ // KH6/JE3HHT or JE3HHT/KH6 ‚ÌŒ`Ž® + *pp = 0; + pp++; + int LenC = strlen(t); + int LenP = strlen(pp); + if( ((p2 = strchr(pp, '/')) != NULL)|| + (LenC > 7) || + (LenP > 7) || + ((LenC > LenP) && (LenP>3)) || + ((LenC < LenP) && (LenC>3)) + ){ + // HAMLOG‚ł͕\Œ»‚Å‚«‚È‚¢•\‹L‚Ìê‡ + if( p2 != NULL ){ + *p2 = 0; + LenP = strlen(pp); + } + } + if( LenC < LenP ){ + p2 = t; + t = pp; + pp = p2; + } + PTB = pp; + } + CALL = t; +} +//--------------------------------------------------------------------------- +static void __fastcall SetHamlogMode(LPSTR bf) +{ + if( !strcmp(bf, "RTTY") ){ + StrCopy(bf, Log.m_LogSet.m_THRTTY.c_str(), 3); + } + else if( !strcmp(bf, "SSTV") ){ + StrCopy(bf, Log.m_LogSet.m_THSSTV.c_str(), 3); + } + else if( !strcmp(bf, "GMSK") ){ + strcpy(bf, "MSK"); + } + else if( !strcmp(bf, "FSTV") ){ + strcpy(bf, "FTV"); + } + else if( !strcmp(bf, "BPSK") ){ + strcpy(bf, "PSK"); + } + else if( !strcmp(bf, "QPSK") ){ + strcpy(bf, "PSK"); + } +} +//--------------------------------------------------------------------------- +// MM -> HamLog ƒtƒH[ƒ}ƒbƒg‚̈ꊇ•ÏŠ· +static void MMtoHAMLOG(LPSTR tp, SDMMLOG *sp, BOOL fHLV5) +{ + char bf[512]; + + AnsiString DATE; + AnsiString TIME; + + int CallOrder = FALSE; + + if( sp->btime ){ + int YY = sp->year; + int MM = sp->date / 100; + int DD = sp->date % 100; + int tim = sp->btime / 30; + int HH = tim / 60; + int mm = tim % 60; + char tz = 'J'; + switch(Log.m_LogSet.m_THTZ){ + case 0: + if( !IsJA(sp->call) ){ + JSTtoUTC(YY, MM, DD, HH); + tz = 'U'; + } + break; + case 1: + JSTtoUTC(YY, MM, DD, HH); + tz = 'U'; + break; + default: + break; + } + sprintf(bf, "%02u/%02u/%02u", YY, MM, DD); + DATE = bf; + sprintf(bf, "%02u:%02u%c", HH, mm, tz); + TIME = bf; + } + + AnsiString NAME = sp->name; + AnsiString QTH = sp->qth; + AnsiString REM1 = sp->rem; + AnsiString REM2 = sp->qsl; + + AnsiString CALL; + AnsiString PTB; + + if( fHLV5 ){ // Ver 5.00ˆÈ~ + CALL = sp->call; + } + else { // Ver 4.xx + strcpy(bf, sp->call); + LPSTR pp, p2, t; + t = bf; + if( (pp = strchr(bf, '/')) != NULL ){ // KH6/JE3HHT or JE3HHT/KH6 ‚ÌŒ`Ž® + *pp = 0; + pp++; + int LenC = strlen(t); + int LenP = strlen(pp); + if( ((p2 = strchr(pp, '/')) != NULL)|| + (LenC > 7) || + (LenP > 7) || + ((LenC > LenP) && (LenP>3)) || + ((LenC < LenP) && (LenC>3)) + ){ + // HAMLOG‚ł͕\Œ»‚Å‚«‚È‚¢•\‹L‚Ìê‡ + AddMMLOGKey(REM1, REM2, sp->call, "ToRadio"); + if( p2 != NULL ){ + *p2 = 0; + LenP = strlen(pp); + } + } + if( LenC < LenP ){ + p2 = t; + t = pp; + pp = p2; + CallOrder = TRUE; + } + PTB = pp; + } + else if( strlen(t) > 7 ){ + AddMMLOGKey(REM1, REM2, sp->call, "ToRadio"); + } + CALL = t; + } + strcpy(bf, Log.GetModeString(sp->mode)); + if( !fHLV5 ){ + SetHamlogMode(bf); + } + AnsiString MODE = bf; + + AnsiString HIS, MY; + int l = GetLMode(sp->mode); + if( fHLV5 ){ + HIS = sp->ur; + MY = sp->my; + } + else { + strcpy(bf, sp->ur); + bf[l] = 0; + HIS = bf; + strcpy(bf, sp->my); + bf[l] = 0; + MY = bf; + } + if( sp->ur[l] ) AddMMLOGKey(REM1, REM2, &sp->ur[l], "SN"); + if( sp->my[l] ) AddMMLOGKey(REM1, REM2, &sp->my[l], "RN"); + + strcpy(bf, Log.GetFreqString(sp->band, sp->fq)); + AnsiString FREQ = bf; + + if( !fHLV5 ){ + if( CallOrder && (!strstr(sp->rem, "$DX")) && (!strstr(sp->qsl, "$DX")) ){ + AddMMLOGKey(REM1, REM2, "$DX", NULL); + } + } + + if( sp->etime ){ + int tim = sp->etime / 30; + sprintf(bf, "%02u%02u", tim / 60, tim % 60); + AddMMLOGKey(REM1, REM2, bf, "END"); + } + if( sp->env ){ + sprintf(bf, "%u", sp->env); + AddMMLOGKey(REM1, REM2, bf, "ENV"); + } + AddMMLOGKey(REM1, REM2, sp->pow, "POW"); + if( sp->cq ){ + bf[0] = sp->cq; bf[1] = 0; + AddMMLOGKey(REM1, REM2, bf, "M"); + } + AnsiString CODE; + if( (strlen(sp->opt1) >= 3) && isdigit(sp->opt1[0]) && isdigit(sp->opt1[1]) ){ + CODE = sp->opt1; + } + sprintf(bf, "%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n%s\r\n", + CALL.c_str(), PTB.c_str(), DATE.c_str(), TIME.c_str(), + HIS.c_str(), MY.c_str(), FREQ.c_str(), MODE.c_str(), CODE.c_str(), "", "", + NAME.c_str(), QTH.c_str(), REM1.c_str(), REM2.c_str() + ); + strcpy(tp, bf); +} + +//--------------------------------------------------------------------------- +// ƒEƒCƒ“ƒhƒEƒtƒH[ƒJƒX‚ðŽ©g‚É–ß‚· +void CLogLink::Foreground(void) +{ + if( m_Enabled != 1 ) return; + + ::SetWindowPos(m_hApp, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); + ::SetFocus(m_hApp); +} +//--------------------------------------------------------------------------- +// ƒƒO‚ÌƒŠƒ“ƒN‚̃`ƒFƒbƒN +BOOL CLogLink::CheckLink(void) +{ + if( m_Error ) return FALSE; + + switch(m_Enabled){ + case 1: + { + HWND hLog = ::FindWindow("TThwin", NULL); + if( hLog != m_hLog ){ + if( hLog ){ + m_AppVer = 0; + char bf[128]; + LPSTR p; + ::GetWindowText(hLog, bf, sizeof(bf)); + clipsp(bf); + m_AppName = bf; + if( (p = strstr(bf, "Ver")) != NULL ){ + p += 3; + LPSTR t; + for( t = p; *t; t++ ){ + if( (*t != '.') && !isdigit(*t) ) break; + } + *t = 0; + double d; + if( sscanf(p, "%lf", &d) == 1 ){ + m_AppVer = d * 100; + } + } + else { + m_Count = 1000/LINKINTERVAL; + return FALSE; + } + m_fHLV5 = (m_AppVer >= 500); + } + m_hLog = hLog; + m_CStat = TRUE; + } + return m_hLog != NULL ? TRUE : FALSE; + } + case 2: + { + if( m_pLink == NULL ) return FALSE; + m_MMStat = m_pLink->IsConnected(); + if( m_MMStat != m_AStat ){ + m_AStat = m_MMStat; + m_CStat = TRUE; + } + return m_MMStat; + } + default: + return FALSE; + } +} +//--------------------------------------------------------------------------- +// ’èŠú“I‚ȃƒO‚ÌƒŠƒ“ƒN‚ÌŠÄŽ‹(200ms–ˆ‚ɃR[ƒ‹) +BOOL CLogLink::TimerLogLink(void) +{ + if( !m_Enabled ) return FALSE; + + if( !m_Count ){ + m_Count = 5000/LINKINTERVAL; // 5[s]–ˆ‚̃`ƒFƒbƒN + BOOL f = m_hLog != NULL; + CheckLink(); + if( m_hLog && !f ) m_1stSession = TRUE; + } + m_Count--; + if( m_CStat ){ + m_CStat = 0; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------------- +// ’èŠú“I‚ÈŽü”g”ƒ|[ƒŠƒ“ƒO +void CLogLink::EventGetFreq(void) +{ + if( !m_Polling ) return; + + if( !m_Count2 ){ + m_Count2 = 2000/LINKINTERVAL; // 2[s]–ˆ‚̃`ƒFƒbƒN + switch(m_Enabled){ + case 1: + { + if( m_hLog == NULL ) return; + int af = Application->Active; + m_cds.dwData = 106; + m_cds.cbData = 0; + m_cds.lpData = NULL; + ::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hMain), LPARAM(&m_cds)); + if( af && m_1stSession ) Foreground(); + m_1stSession = FALSE; + } + break; + case 2: + if( m_pLink == NULL ) return; + m_pLink->EventVFO(); + break; + } + } + m_Count2--; +} +//--------------------------------------------------------------------------- +// Žü”g”‚ÌÝ’è +void CLogLink::SetFreq(LPSTR pFreq) +{ + if( !CheckLink() ) return; + + switch(m_Enabled){ + case 1: + m_cds.dwData = 6; + m_cds.cbData = strlen(pFreq); + m_cds.lpData = pFreq; + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + break; + case 2: + if( m_pLink == NULL ) return; + m_pLink->SetFreq(pFreq); + break; + } +} +//--------------------------------------------------------------------------- +// ƒ‚[ƒh‚ÌÝ’è +void CLogLink::SetMode(LPCSTR pMode) +{ + if( !CheckLink() ) return; + + switch(m_Enabled){ + case 1: + if( pMode && (pMode != m_strMode) ){ + StrCopy(m_strMode, pMode, sizeof(m_strMode)-1); + if( !m_fHLV5 ){ + SetHamlogMode(m_strMode); + } + } + if( m_strMode[0] ){ + m_cds.dwData = 7; + m_cds.cbData = strlen(m_strMode); + m_cds.lpData = m_strMode; + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + } + break; + case 2: +// if( m_pLink == NULL ) return; +// m_pLink->SetMode(pMode); + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall CLogLink::SetPTT(int ptt) +{ + if( !m_PTTEnabled ) return; + if( !CheckLink() ) return; + switch(m_Enabled){ + case 1: + { + int af = Application->Active; + m_cds.dwData = ptt ? 23 : 24; + m_cds.cbData = 0; + m_cds.lpData = NULL; + ::SendMessage(m_hLog, WM_COPYDATA, af ? WPARAM(m_hApp) : NULL, LPARAM(&m_cds)); + if( af && m_1stSession ) Foreground(); + m_1stSession = FALSE; + } + break; + case 2: + if( !m_pLink ) return; + m_pLink->SetPTT(ptt); + break; + } +} +//--------------------------------------------------------------------------- +// ƒNƒŠƒA +void CLogLink::Clear(void) +{ + if( !CheckLink() ) return; + + switch(m_Enabled){ + case 1: + { + int af = Application->Active; + m_cds.dwData = 16; + m_cds.cbData = 0; + m_cds.lpData = NULL; + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, af ? WPARAM(m_hApp) : NULL, LPARAM(&m_cds)); +// m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, NULL, LPARAM(&m_cds)); + if( !::IsWindow(m_hLogIn) ){ + m_hLog = NULL; + m_CStat = TRUE; + m_Error = TRUE; + } + if( af ) Foreground(); + break; + } + case 2: + m_QueryCall = ""; + if( m_pLink == NULL ) return; + m_pLink->Clear(); + break; + } +} +//--------------------------------------------------------------------------- +// Hamlog‚ɃtƒH[ƒJƒX‚ðÝ’è +void CLogLink::SetFocus(void) +{ + if( m_Enabled != 1 ) return; + if( m_hLog == NULL ) return; + if( m_hLogIn == NULL ) return; + + ::SetForegroundWindow(m_hLogIn); +} +//--------------------------------------------------------------------------- +// ƒR[ƒ‹ƒTƒCƒ“‚Ì“]‘— +void CLogLink::SetCall(LPSTR pCall, int sw) +{ + if( !CheckLink() ) return; + + switch(m_Enabled){ + case 1: + { + int af = Application->Active; + Clear(); + if( m_hLog == NULL ) return; +#if MMSSTV + MultProc(); +#endif + + AnsiString CALL; + AnsiString PTB; + + if( m_fHLV5 ){ + CALL = pCall; + m_cds.dwData = IsJA(pCall) ? 26 : 25; + m_cds.cbData = 0; + m_cds.lpData = NULL; + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + m_cds.dwData = 0; + if( sw ) m_cds.dwData |= THW_ENTER; + m_cds.cbData = strlen(CALL.c_str()); + m_cds.lpData = CALL.c_str(); + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + } + else { + DevCall(CALL, PTB, pCall); + m_cds.dwData = 0; + if( sw ) m_cds.dwData |= THW_ENTER; + m_cds.cbData = strlen(CALL.c_str()); + m_cds.lpData = CALL.c_str(); + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); +#if MMSSTV + MultProc(); +#endif + m_cds.dwData = 1; + if( sw ) m_cds.dwData |= THW_ENTER; + m_cds.cbData = strlen(PTB.c_str()); + m_cds.lpData = PTB.c_str(); + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + } + if( af ) Foreground(); + } + case 2: + m_QueryCall = pCall; + if( m_pLink == NULL ) return; + m_pLink->Query(pCall); + break; + } +} +//--------------------------------------------------------------------------- +// ƒR[ƒ‹ƒTƒCƒ“‚ÌŒŸõ +void CLogLink::FindCall(LPSTR pCall) +{ + if( !CheckLink() ) return; + + switch(m_Enabled){ + case 1: + { + int af = Application->Active; + SetCall(pCall, FALSE); + if( m_hLog == NULL ) return; +#if MMSSTV + MultProc(); +#endif + m_cds.dwData = 17; + m_cds.cbData = 0; + m_cds.lpData = NULL; + ::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + +#if MMSSTV + MultProc(); +#endif + + m_cds.dwData = 115; + m_cds.cbData = 0; + m_cds.lpData = NULL; + ::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hMain), LPARAM(&m_cds)); + if( af ) Foreground(); + } + break; + case 2: + m_QueryCall = pCall; + if( m_pLink == NULL ) return; + m_pLink->Query(pCall); + break; + } +} +//--------------------------------------------------------------------------- +// ƒƒO‚Ì‹L˜^ +// 0-ƒf[ƒ^‚ÌÝ’è‚Ì‚Ý +// 1-ƒf[ƒ^‚ÌÝ’è‚ÆRETƒL[/–â‚¢‡‚킹‚ÌŽÀs(QSO‚ÌŠJŽnŽž) +// 2-‘‚«‚±‚Ý‚ðŽÀs(QSO‚ÌI—¹Žž) +void CLogLink::Write(SDMMLOG *sp, int sw) +{ + if( !CheckLink() ) return; + + switch(m_Enabled){ + case 1: + { + int af = Application->Active; + if( m_fHLV5 && (sw == 1) ){ + m_cds.dwData = IsJA(sp->call) ? 26 : 25; + m_cds.cbData = 0; + m_cds.lpData = NULL; + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + m_cds.dwData = 0; + m_cds.cbData = strlen(sp->call); + m_cds.lpData = sp->call; + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + } + char bf[1024]; + MMtoHAMLOG(bf, sp, m_fHLV5); + m_cds.dwData = 15; + if( sw ) m_cds.dwData |= THW_ENTER; + m_cds.cbData = strlen(bf); + m_cds.lpData = bf; + m_hLogIn = (HWND)::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + +#if MMSSTV + MultProc(); +#endif + switch(sw){ + case 1: + m_cds.dwData = 115; + m_cds.cbData = 0; + m_cds.lpData = NULL; + ::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hMain), LPARAM(&m_cds)); + break; + case 2: + m_cds.dwData = 18 | THW_SAVEBOX_OFF; + m_cds.cbData = 0; + m_cds.lpData = NULL; + ::SendMessage(m_hLog, WM_COPYDATA, WPARAM(m_hApp), LPARAM(&m_cds)); + break; + } + if( af ) Foreground(); + } + break; + case 2: + if( m_pLink == NULL ) return; + m_QueryCall = sp->call; + m_pLink->LogWrite(sp, sw); + break; + } +} +//--------------------------------------------------------------------------- +int __fastcall GetLFCount(LPCSTR p) +{ + int n = 0; + for(; *p; p++ ){ + if( *p == LF ) n++; + } + return n; +} +//--------------------------------------------------------------------------- +// Hamlog‚©‚ç‚Ì•ÔMƒƒbƒZ[ƒW‚©‚çName,QTH,REM1‚𓾂é +int CLogLink::AnaData(SDMMLOG *sp, COPYDATASTRUCT *cp) +{ + BOOL r = FALSE; + + char bf[1024]; + int len = cp->cbData; + if( len >= 1023 ) len = 1023; + if( len && (cp->lpData != NULL) ){ + StrCopy(bf, LPCSTR(cp->lpData), len); + int lfLen = GetLFCount(bf); + LPSTR t, p; + if( len < 10 ){ // Žü”g”î•ñ + if( m_Polling ){ + t = SkipSpace(bf); ClipLF(t); clipsp(t); + if( *t ){ + Log.SetFreq(&Log.m_sd, t); + r = 106; + } + } + } + else if( lfLen >= 10 ){ // ŒŸõŒ‹‰Êî•ñ + p = StrDlm(t, bf, LF); // Call + p = StrDlm(t, p, LF); // PTB + p = StrDlm(t, p, LF); // Date + p = StrDlm(t, p, LF); // Time + p = StrDlm(t, p, LF); // His + p = StrDlm(t, p, LF); // My + p = StrDlm(t, p, LF); // Freq + p = StrDlm(t, p, LF); // Mode + p = StrDlm(t, p, LF); // Code + t = SkipSpace(t); ClipLF(t); clipsp(t); + if( *t ){ + StrCopy(sp->opt1, t, MLOPT); + r = 115; + } + p = StrDlm(t, p, LF); // GL + p = StrDlm(t, p, LF); // QSL + p = StrDlm(t, p, LF); // Name + if( !sp->name[0] ){ + t = SkipSpace(t); ClipLF(t); clipsp(t); + if( *t ){ + StrCopy(sp->name, t, MLNAME); + r = 115; + } + } + p = StrDlm(t, p, LF); // QTH +// if( !sp->qth[0] ){ + if( !sp->qth[0] || !IsJA(sp->call) ){ + t = SkipSpace(t); ClipLF(t); clipsp(t); + if( *t ){ + StrCopy(sp->qth, t, MLQTH); + r = 115; + } + } + StrDlm(t, p, LF); // REM1 + if( !sp->rem[0] ){ + t = SkipSpace(t); ClipLF(t); clipsp(t); + if( *t ){ + StrCopy(sp->rem, t, MLREM); + r = 115; + } + } + } + } + return r; +} +//--------------------------------------------------------------------------- +void __fastcall CLogLink::NotifySession(LPCSTR pSession) +{ + if( m_pLink == NULL ) return; + + m_pLink->NotifySession(pSession); + CheckLink(); +} +//--------------------------------------------------------------------------- +int __fastcall CLogLink::QReturn(SDMMLOG *sp, const mmLOGDATA *pLog) +{ + if( pLog == NULL ) return FALSE; + int r = FALSE; + + mmLOGDATA logdata; + memcpy(&logdata, pLog, sizeof(logdata)); + + if( stricmp(logdata.m_Call, m_QueryCall.c_str()) ) return FALSE; + LPSTR t; + if(!sp->name[0] ){ + t = SkipSpace(logdata.m_Name); ClipLF(t); clipsp(t); + if( *t ){ + StrCopy(sp->name, t, MLNAME); + r = TRUE; + } + } + if( !sp->qth[0] ){ + t = SkipSpace(logdata.m_QTH); ClipLF(t); clipsp(t); + if( *t ){ + StrCopy(sp->qth, t, MLQTH); + r = TRUE; + } + } + if( !sp->rem[0] ){ + t = SkipSpace(logdata.m_Note); ClipLF(t); clipsp(t); + if( *t ){ + StrCopy(sp->rem, t, MLREM); + r = TRUE; + } + } + return r; +} +//--------------------------------------------------------------------------- +void __fastcall CLogLink::SetTime(SYSTEMTIME *tp, int sw) +{ + if( m_pLink == NULL ) return; + + m_pLink->SetTime(tp, sw); +} +//--------------------------------------------------------------------------- +LPCSTR __fastcall CLogLink::GetItemName(void) +{ + return m_ItemName.c_str(); +} +//--------------------------------------------------------------------------- +void __fastcall CLogLink::SetItemName(LPCSTR pName) +{ + m_ItemName = pName; +} +//--------------------------------------------------------------------------- +void __fastcall CLogLink::LoadMMLink(TMemIniFile *pIni) +{ + m_ItemName = pIni->ReadString("MMLink", "Name", ""); +} +//--------------------------------------------------------------------------- +void __fastcall CLogLink::SaveMMLink(TMemIniFile *pIni) +{ + pIni->WriteString("MMLink", "Name", m_ItemName); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CLogLink::IsCopyData(void) +{ + if( m_Enabled != 2 ) return FALSE; + if( !m_pLink ) return FALSE; + return (m_pLink->GetCaps() & capWMCOPYDATA); +} +//--------------------------------------------------------------------------- + diff --git a/Loglink.h b/Loglink.h new file mode 100644 index 0000000..b274288 --- /dev/null +++ b/Loglink.h @@ -0,0 +1,123 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef LogLinkH +#define LogLinkH + +#include +#include +#include + +#include "ComLib.h" +#include "LogConv.h" +#include "MMLink.h" + +#define LINKINTERVAL 200 + +//------------ Command of Hamlog ------------- +#define THW_ENTER 0x10000 +#define THW_FOCUS 0x20000 +#define THW_SAVEBOX_ON 0x40000 +#define THW_SAVEBOX_OFF 0x80000 +#define THW_APPLIHWND 0x100000 + +//--------------------------------------------------------------------------- +// CLogLinkƒNƒ‰ƒX +class CLogLink +{ +private: + int m_Enabled; // ƒŠƒ“ƒN‚Ì‹–‰Â + int m_Polling; // Žü”g”ƒ|[ƒŠƒ“ƒO + BOOL m_PTTEnabled; // PTTƒRƒ“ƒgƒ[ƒ‹ + BOOL m_1stSession; + + HWND m_hLog; // HamlogƒvƒƒOƒ‰ƒ€‚̃nƒ“ƒhƒ‹ + HWND m_hLogIn; // Hamlog“ü—̓EƒCƒ“ƒhƒE‚̃nƒ“ƒhƒ‹ + + COPYDATASTRUCT m_cds; // ƒCƒ“ƒ^[ƒtƒF[ƒX\‘¢‘Ì + int m_Count; // ŠÄŽ‹ƒJƒEƒ“ƒ^ + int m_CStat; // ó‘Ô•ÏXƒZƒ}ƒtƒH + int m_Count2; // ƒ|[ƒŠƒ“ƒOƒJƒEƒ“ƒ^ + + HWND m_hMain; // ƒƒCƒ“‰æ–ʂ̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + HWND m_hApp; // ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + BOOL m_fHLV5; // Hamlog Ver 5.0 + + int m_Error; + + AnsiString m_ItemName; + AnsiString m_QueryCall; + AnsiString m_AppName; + int m_AppVer; + int m_MMStat; + int m_AStat; + UINT m_uMsg; + + char m_strMode[16]; +public: + CMMLink *m_pLink; +private: + void __fastcall CloseMMLink(void); + +public: + CLogLink(); + ~CLogLink(); + void SetHandle(HWND hMain, UINT uMsg); + BOOL IsEnabled(void){return m_Enabled;}; + void UpdateLink(int sw); + void Foreground(void); + BOOL IsError(void){return m_Error;}; + void ClearError(void){m_Error = 0;}; + BOOL __fastcall IsLink(void); + LPCSTR __fastcall GetSessionName(void); + + BOOL CheckLink(void); + BOOL TimerLogLink(void); + void Clear(void); + void SetFocus(void); + void SetCall(LPSTR pCall, int sw); + void FindCall(LPSTR pCall); + void Write(SDMMLOG *sp, int sw); + int AnaData(SDMMLOG *sp, COPYDATASTRUCT *cp); + + BOOL IsPolling(void){return m_Polling;}; + void SetPolling(int sw){m_Polling = sw;}; + void EventGetFreq(void); + void SetFreq(LPSTR pFreq); + void SetMode(LPCSTR pMode); + void __fastcall SetPTT(int ptt); + + void __fastcall SetTime(SYSTEMTIME *tp, int sw); + +public: + void __fastcall LoadMMLink(TMemIniFile *pIni); + void __fastcall SaveMMLink(TMemIniFile *pIni); + void __fastcall NotifySession(LPCSTR pSession); + int __fastcall QReturn(SDMMLOG *sp, const mmLOGDATA *pLog); + LPCSTR __fastcall GetItemName(void); + void __fastcall SetItemName(LPCSTR pName); + BOOL __fastcall IsCopyData(void); + + inline BOOL __fastcall GetPTTEnabled(void){return m_PTTEnabled;}; + inline void __fastcall SetPTTEnabled(BOOL e){m_PTTEnabled = e;}; +}; +extern CLogLink LogLink; +#endif + diff --git a/MMCG.DEF b/MMCG.DEF new file mode 100644 index 0000000..7c76346 --- /dev/null +++ b/MMCG.DEF @@ -0,0 +1,1546 @@ +!=========================================================================== +! ‚`‚i‚`”Ô†’è‹`ƒtƒ@ƒCƒ‹ For MMCG.EXE +! +!¦ ‚±‚̃tƒ@ƒCƒ‹‚ð•ÏX‚µ‚½ê‡‚ÍuMMCG.BINv‚ðÁ‹Ž‚µ‚ÄuMMCG.EXEv‚ð +! ‹N“®‚µ‚ĉº‚³‚¢BV‚µ‚¢uMMCG.BINv‚ª¶¬‚³‚ê‚Ü‚·B +! +!¦@“ǂ݂Í<,>‚Å‹æØ‚Á‚Ä•¡”ŒÂ‹Lq‚·‚鎖‚ª‚Å‚«‚Ü‚·B‚Ђ炪‚È‚âƒJƒ^ƒJƒi +! ‚ð‹Lq‚µ‚Ä‚à—Ç‚¢‚Å‚µ‚傤B +! +! —á> 2509 ‚’ÎŽs TAKATUKI,‚½‚©‚‚«,ƒ^ƒJƒcƒL,À¶Â· +! +! ‚½‚¾‚µA‚ ‚Ü‚èƒtƒ@ƒCƒ‹ƒTƒCƒY‚ª‘å‚«‚­‚È‚é‚ÆAƒŒƒXƒ|ƒ“ƒX‚ªˆ«‚­‚È‚è +! ‚Ü‚·‚̂ŒˆÓ‚ª•K—v‚Å‚·B +! +!¦@‚±‚̃tƒ@ƒCƒ‹‚ðƒlƒbƒg“™‚É—¬’Ê‚³‚¹‚éꇂÍA•ÏX—š—ð‚ð’ljÁ‹LÚ‚·‚é +! Ž–‚ð‚¨Š©‚ß‚µ‚Ü‚·B +! +!<<<•ÏX—š—ð>>> +! Feb 4, 1996 - 1029(‚ ‚«‚é–ìŽs)’ljÁ JE3HHT +! Jun 5, 1997 - 0134(–kL“‡Žs)’ljÁ JE3HHT +! Jun 5, 1997 - 2212(‹ž“c•ÓŽs)’ljÁ JE3HHT +! Jan 10, 2000 - 0135,1231,1343,1422,2722,4029’ljÁ +! SBAE=>SABAE,SINNANJO=>SINNANYOU,UDO=>UTO +! 27017,01029Á–Å @@@JQ3UDL +!========================================================================== +01 % HOKKAIDO +0101 ŽD–yŽs SAPPORO +0102 ˆ®ìŽs ASAHIKAWA +0103 ¬’MŽs OTARU +0104 ”ŸŠÙŽs HAKODATE +0105 Žº—–Žs MURORAN +0106 ‹ú˜HŽs KUSIRO +0107 ‘ÑLŽs OBIHIRO +0108 –kŒ©Žs KITAMI +0109 —[’£Žs YUBARI +0110 ŠâŒ©‘òŽs IWAMIZAWA +0111 –Ô‘–Žs ABASIRI +0112 —¯–GŽs RUMOI +0113 “Ϭ–qŽs TOMAKOMAI +0114 ’t“àŽs WAKKANAI +0115 ”ü‰SŽs BIBAI +0116 ˆ°•ÊŽs ASIBETU +0117 ]•ÊŽs EBETU +0118 Ô•½Žs AKABIRA +0119 –ä•ÊŽs MONBETU +0120 Žm•ÊŽs SIBETU +0121 –¼ŠñŽs NAYORO +0122 ŽOŠ}Žs MIKASA +0123 ªŽºŽs NEMURO +0124 çÎŽs CITOSE +0125 ‘êìŽs TAKIKAWA +0126 »ìŽs SUNAGAWA +0127 ‰ÌŽu“àŽs UTASINAI +0128 [ìŽs FUKAGAWA +0129 •x—Ç–ìŽs FURANO +0130 “o•ÊŽs NOBORIBETU +0131 Œb’ëŽs ENIWA +0132 ‹T“cŽs* +0133 ˆÉ’BŽs DATE +0134 –kL“‡Žs KITAHIROSIMA +0135 ÎŽëŽs ISIKARI +01001 ˆ¢Š¦ŒS AKAN +01002 ‘«ŠñŒS ASYORO +01003 ŒúŠÝŒS AKKESI +01004 Œú“cŒS ATUTA +01005 –Ô‘–ŒS ABASIRI +01006 ˆ¸“cŒS(ŒãŽu) ABUTA +01007 ˆ¸“cŒS(’_U) ABUTA +01008 ÎŽëŒS ISIKARI +01009 ˆé’JŒS ISOYA +01010 Šâ“àŒS IWANAI +01011 —LŽìŒS USU +01012 ‰ÌŠüŒS* +01013 ‰Y‰ÍŒS URAKAWA +01014 ‰J—³ŒS URYU +01015 Ž}KŒS ESASI +01016 ‰œKŒS OKUSIRI +01017 ”E˜HŒS* +01018 ‰Í¼ŒS KASAI +01019 ‰Í“ŒŒS KATOU +01020 Š’ŒËŒS KABATO +01021 ãˆéŒS KAMIISO +01022 ãìŒS(\Ÿ) KAMIKAWA +01023 ãìŒS(ãì) KAMIKAWA +01024 ‹T“cŒS KAMEDA +01025 Š•”ŒS KAYABE +01026 ìãŒS KAWAKAMI +01027 ‹ú˜HŒS KUSIRO +01028 ‹v‰“ŒS KUDO +01029 ŽD–yŒS* +01030 —lŽ—ŒS SAMANI +01031 ¹—¬ŒS SARU +01032 ÓàŒS SIZUNAI +01033 •W’ÃŒS SIBETU +01034 “‡–qŒS SIMAMAKI +01035 Ï’OŒS SYAKOTAN +01036 ŽÎ—¢ŒS SYARI +01037 ”’˜VŒS SIRAOI +01038 ”’fŒS SIRANUKA +01039 Žõ“sŒS SUTTU +01040 £’IŒS SETANA +01041 @’JŒS SOUYA +01042 ‹ó’mŒS(‹ó’m) SOUCI +01043 ‹ó’mŒS(ãì) SOUCI +01044 çÎŒS* +01045 “V‰–ŒS(—¯–G) TESIO +01046 “V‰–ŒS(@’J) TESIO +01047 \ŸŒS TOKACI +01048 í˜CŒS TOKORO +01049 “Ï‘OŒS TOMAMAE +01050 ’†ìŒS(ãì) NAKAGAWA +01051 ’†ìŒS(\Ÿ) NAKAGAWA +01052 VŠ¥ŒS NIIKABUTU +01053 Ž¢ŽuŒS NISI +01054 ªŽºŒS* +01055 –ì•tŒS NOTUKE +01056 ‰ÔçŒS* +01057 •l‰vŒS HAMAMASU +01058 ”ü‘ŒS* +01059 •OŽRŒS HIYAMA +01060 L”öŒS HIRO +01061 ‘¾˜EŒS* +01062 ŒÃ‰FŒS FURU +01063 ŒÃ•½ŒS FURUBIRA +01064 –yòŒS HOROIZUMI +01065 –y•ÊŒS* +01066 ‘–ÑŒS MASIKE +01067 ¼‘OŒS MATUMAE +01068 ŽOÎŒS MITUISI +01069 –Ú—œŒS MENASI +01070 –ä•ÊŒS MONBETU +01071 ŽR‰zŒS YAMAKOSI +01072 —[’£ŒS YUBARI +01073 —E•¥ŒS(’_U) YUFUTU +01074 —E•¥ŒS(ãì) YUFUTU +01075 —]ŽsŒS YOICI +01076 —˜KŒS RISIRI +01077 —¯–GŒS RUMOI +01078 —ç•¶ŒS REBUN +010101 ŽD–yŽs’†‰›‹æ CYUO +010102 ŽD–yŽs–k‹æ KITA +010103 ŽD–yŽs“Œ‹æ HIGASI +010104 ŽD–yŽs”’΋æ SIROISI +010105 ŽD–yŽs–L•½‹æ TOYOHIRA +010106 ŽD–yŽs“ì‹æ MINAMI +010107 ŽD–yŽs¼‹æ NISI +010108 ŽD–yŽsŒú•Ê‹æ ATUBETU +010109 ŽD–yŽsŽèˆî‹æ TEINE +02 % AOMORI +0201 ÂXŽs AOMORI +0202 O‘OŽs HIROSAKI +0203 ”ªŒËŽs HACINOHE +0204 •ÎŽs KUROISI +0205 ŒÜŠìŒ´Žs GOSYOGAWARA +0206 \˜a“cŽs TOWADA +0207 ŽO‘òŽs MISAWA +0208 ‚Þ‚ÂŽs MUTU +02001 ã–kŒS KAMIKITA +02002 –k’ÃŒyŒS KITATUGARU +02003 ŽOŒËŒS SANNOHE +02004 ‰º–kŒS SIMOKITA +02005 ’†’ÃŒyŒS NAKATUGARU +02006 ¼’ÃŒyŒS NISITUGARU +02007 “Œ’ÃŒyŒS HIGASITUGARU +02008 “ì’ÃŒyŒS MINAMITUGARU +03 % IWATE +0301 ·‰ªŽs MORIOKA +0302 Š˜ÎŽs KAMAISI +0303 ‹{ŒÃŽs MIYAKO +0304 ˆêŠÖŽs ICINOSEKI +0305 ‘å‘D“nŽs OOFUNATO,OFUNATO +0306 …‘òŽs MIZUSAWA +0307 ‰ÔŠªŽs HANAMAKI +0308 –kãŽs KITAKAMI +0309 ‹vŽœŽs KUJI +0310 ‰“–ìŽs TOONO,TONO +0311 —¤‘O‚“cŽs RIKUZENTAKADA +0312 ]ŽhŽs ESASI +0313 “ñŒËŽs NINOHE +03001 ’_‘òŒS ISAWA +03002 ŠâŽèŒS IWATE +03003 ]ŽhŒS* +03004 㕈ɌS KAMIHEI +03005 ‹ãŒËŒS KUNOHE +03006 ‹CåŒS KESEN +03007 ‰º•ˆɌS SIMOHEI +03008 އ”gŒS SIWA +03009 ¼”ÖˆäŒS NISIIWAI +03010 “ñŒËŒS NINOHE +03011 •BŠÑŒS HIENUKI +03012 “Œ”ÖˆäŒS HIGASIIWAI +03013 ˜a‰êŒS WAGA +04 % AKITA +0401 H“cŽs AKITA +0402 ”\‘ãŽs NOSIRO +0403 ‘åŠÙŽs OODATE,ODATE +0404 ‰¡ŽèŽs YOKOTE +0405 –{‘‘Žs HONJO +0406 ’jŽ­Žs OGA +0407 “’‘òŽs YUZAWA +0408 ‘å‹ÈŽs OOMAGARI,OMAGARI +0409 Ž­ŠpŽs KAZUNO +04001 —YŸŒS OGACI +04002 Ž­ŠpŒS KAZUNO +04003 ‰Í•ÓŒS KAWABE +04004 –kH“cŒS KITAAKITA +04005 å–kŒS SENBOKU +04006 •½Ž­ŒS HIRAKA +04007 “ìH“cŒS MINAMIAKITA +04008 ŽR–{ŒS YAMAMOTO +04009 —R—˜ŒS YURI +05 % YAMAGATA +0501 ŽRŒ`Žs YAMAGATA +0502 •Ä‘òŽs YOBEZAWA +0503 ’߉ªŽs TURUOKA +0504 Žð“cŽs SAKATA +0505 V¯Žs SINJO +0506 Ц‰Í]Žs SAGAE +0507 ãŽRŽs KAMINOYAMA +0508 ‘ºŽRŽs MURAYAMA +0509 ’·ˆäŽs NAGAI +0510 “V“¶Žs TENDO +0511 “ŒªŽs HIGASINE +0512 ”ö‰Ô‘òŽs OBANAZAWA +0513 “ì—zŽs NANYO +05001 –OŠCŒS AKUMI +05002 –k‘ºŽRŒS KITAMURAYAMA +05003 ¼’uŽ’ŒS NISIOKITAMA +05004 ¼“cìŒS NISITAGAWA +05005 ¼‘ºŽRŒS NISIMURAYAMA +05006 “Œ’uŽ’ŒS HIGASIOKITAMA +05007 “Œ“cìŒS HIGASITAGAWA +05008 “Œ‘ºŽRŒS HIGASIMURAYAMA +05009 “ì’uŽ’ŒS* +05010 “쑺ŽRŒS* +05011 ÅãŒS MOGAMI +06 % MIYAGI +0601 å‘äŽs SENDAI +0602 ΊªŽs ISINOMAKI +0603 ‰–Š˜Žs SIOGAMA +0604 ŒÃìŽs FURUKAWA +0605 ‹CåÀŽs KESENNUMA +0606 ”’ÎŽs SIROISI +0607 –¼ŽæŽs NATORI +0608 Šp“cŽs KAKUDA +0609 ‘½‰êéŽs TAGAJO +0610 òŽs* +0611 ŠâÀŽs IWANUMA +06001 ˆÉ‹ïŒS IGU +06002 ‰²Ž­ŒS OSIKA +06003 Š “cŒS KATUTA +06004 ‰Á”üŒS KAMI +06005 ŒIŒ´ŒS KURIHARA +06006 •ìŒS KUROKAWA +06007 Žu“cŒS SIDA +06008 ŽÄ“cŒS SIBATA +06009 ‹Ê‘¢ŒS TAMATUKURI +06010 ‰““cŒS TOODA,TODA +06011 “o•ÄŒS TOME +06012 –¼ŽæŒS* +06013 ‹{éŒS MIYAGI +06014 –{‹gŒS MOTOYOSI +06015 “¶ŒS MONO +06016 ˜j—ŒS WATARI +060101 å‘äŽs—t‹æ AOBA +060102 å‘äŽs‹{é–ì‹æ MIYAGINO +060103 å‘äŽsŽá—Ñ‹æ WAKABAYASI +060104 å‘äŽs‘¾”’‹æ TAIHAKU +060105 å‘äŽsò‹æ IZUMI +07 % FUKUSIMA +0701 •Ÿ“‡Žs FUKUSIMA +0702 ‰ï’ÎἎs AIZUWAKAMATU +0703 ŒSŽRŽs KOORIYAMA,KORIYAMA +0704 •½Žs* +0705 ”’‰ÍŽs SIRAKAWA +0706 Œ´’¬Žs HARAMACI +0707 {‰êìŽs SUKAGAWA +0708 Šì‘½•ûŽs KITAKATA +0709 í”ÖŽs* +0710 ”ÖéŽs* +0711 ‘Š”nŽs SOUMA +0712 “à‹½Žs* +0713 –Ü—ˆŽs* +0714 “ñ–{¼Žs NIHONMATU +0715 ‚¢‚í‚«Žs IWAKI +0716 Žá¼Žs* +07001 ˆÀÏŒS* +07002 ˆÀ’BŒS ADACI +07003 ÎìŒS ISIKAWA +07004 ÎéŒS* +07005 Šâ£ŒS IWASE +07006 ‘åÀŒS OONUMA,ONUMA +07007 ‰ÍÀŒS KAWANUMA +07008 –k‰ï’ÃŒS KITAAIZU +07009 M•vŒS* +07010 ‘Š”nŒS SOMA +07011 ˆÉ’BŒS DATE +07012 “c‘ºŒS TAMURA +07013 ¼”’‰ÍŒS NISISIRAKAWA +07014 “Œ”’ìŒS HIGASISIRAKAWA +07015 ‘o—tŒS FUTABA +07016 “ì‰ï’ÃŒS MINAMIAIZU +07017 –ë–ƒŒS YAMA +08 % NIIGATA +0801 VŠƒŽs NIIGATA +0802 ’·‰ªŽs NAGAOKA +0803 ‚“cŽs* +0804 ŽOðŽs SANJO +0805 ”èŽs KASIWAZAKI +0806 V”­“cŽs SIBATA +0807 V’ÃŽs NIITU +0808 ¬ç’JŽs OJIYA +0809 ‰Á–ÎŽs KAMO +0810 \“ú’¬Žs TOOKAMACI,TOKAMACI +0811 Œ©•Žs MITUKE +0812 ‘ºãŽs MURAKAMI +0813 ‰Žs TUBAME +0814 ’¼]’ÃŽs* +0815 “È”öŽs TOCIO +0816 Ž…‹›ìŽs ITOIGAWA +0817 VˆäŽs ARAI +0818 ŒÜòŽs GOSEN +0819 —¼’ÃŽs RYOTU +0820 ”’ªŽs SIRONE +0821 –L‰hŽs TOYOSAKA +0822 ã‰zŽs JOETU +08001 Šâ‘DŒS IWAFUNE +08002 Š ‰HŒS KARIWA +08003 –k‹›ÀŒS KITAUONUMA +08004 –kŠ—Œ´ŒS KITAKANBARA +08005 ŒÃŽuŒS KOSI +08006 ²“nŒS SADO +08007 ŽO“‡ŒS SANTOU +08008 ’†‹›ÀŒS NAKAUONUMA +08009 ’†Š—Œ´ŒS NAKAKANBARA +08010 ’†ŒzéŒS NAKAKUBIKI +08011 ¼Š—Œ´ŒS NISIKANBARA +08012 ¼ŒzéŒS NISIKUBIKI +08013 “ŒŠ—Œ´ŒS HIGASIKANBARA +08014 “ŒŒzéŒS HIGASIKUBIKI +08015 “ì‹›ÀŒS MINAMIUONUMA +08016 “슗Œ´ŒS MINAMIKANBARA +09 % NAGANO +0901 ’·–ìŽs NAGANO +0902 ¼–{Žs MATUMOTO +0903 ã“cŽs UEDA +0904 ‰ª’JŽs OKAYA +0905 ”Ñ“cŽs IIDA +0906 z–KŽs SUWA +0907 {âŽs SUZAKA +0908 ¬”Žs KOMORO +0909 ˆÉ“ߎs INE +0910 ‹îƒ–ªŽs KOMAGANE +0911 ’†–ìŽs NAKANO +0912 ‘å’¬Žs OOMACI,OMACI +0913 ”ÑŽRŽs IIYAMA +0914 Š–ìŽs CINO +0915 ‰–KŽs SIOJIRI +0916 ŽÂƒmˆäŽs* +0917 XûŽs KOUSYOKU +0918 ²‹vŽs SAKU +09001 ãˆÉ“ߌS KAMIINA +09002 よäŒS KAMITAKAI +09003 ã…“àŒS KAMIMINOCI +09004 –Ø‘]ŒS KISO +09005 –kˆÀ“ÜŒS KITAAZUMI +09006 –k²‹vŒS KITASAKU +09007 X‹‰ŒS SARASINA +09008 ‰ºˆÉ“ߌS SIMOINA +09009 ‰º‚ˆäŒS SIMOTAKAI +09010 ‰º…“àŒS SIMOMINOCI +09011 z–KŒS SUWA +09012 ¬Œ§ŒS CISAGATA +09014 û‰ÈŒS HANISINA +09015 “Œ’}–€ŒS HIGASICIKUMA +09016 “ìˆÀ“ÜŒS MINAMIAZUMI +09017 “첋vŒS MINAMISAKU +10 % TOUKYO,TOKYO +1001 ‚Q‚R‹æ TOUKYO,TOKYO +1002 ”ª‰¤ŽqŽs HACIOJI +1003 —§ìŽs TACIKAWA +1004 •‘ –ìŽs MUSASINO +1005 ŽO‘éŽs MITAKA +1006 ”~Žs OUME +1007 •{’†Žs FUCYU +1008 º“‡Žs AKISIMA +1009 ’²•zŽs CYOFU +1010 ’¬“cŽs MACIDA +1011 ¬‹àˆäŽs KOGANEI +1012 ¬•½Žs KODAIRA +1013 “ú–ìŽs HINO +1014 “Œ‘ºŽRŽs HIGASIMURAYAMA +1015 ‘•ªŽ›Žs KOKUBUNJI +1016 ‘—§Žs KUNITACI +1017 •Û’JŽs HOUYA +1018 “c–³Žs TANASI +1019 •Ÿ¶Žs FUSSA +1020 ]Žs KOMAE +1021 “Œ‘å˜aŽs HIGASIYAMATO +1022 ´£Žs KIYOSE +1023 “Œ‹v—¯•ÄŽs HIGASIKURUME +1024 •‘ ‘ºŽRŽs MUSASIMURAYAMA +1025 ‘½–€Žs TAMA +1026 ˆîéŽs INAGI +1027 HìŽs AKIGAWA +1028 ‰H‘ºŽs HAMURA +1029 ‚ ‚«‚é–ìŽs AKIRUNO +10001 –k‘½–€ŒS* +10002 ¼‘½–€ŒS NISITAMA +10003 “쑽–€ŒS* +10004 ‘哇Žx’¡ OOSIMA,OSIMA +10005 ŽO‘îŽx’¡ MIYAKE +10006 ”ªäŽx’¡ HACIJO +10007 ¬Š}Œ´Žx’¡ OGASAWARA +100101 “Œ‹ž“sç‘ã“c‹æ CIYODA +100102 “Œ‹ž“s’†‰›‹æ CYUO +100103 “Œ‹ž“s`‹æ MINATO +100104 “Œ‹ž“sVh‹æ SINJUKU +100105 “Œ‹ž“s•¶‹ž‹æ BUNKYO +100106 “Œ‹ž“s‘䓌‹æ TAITOU +100107 “Œ‹ž“s–n“c‹æ SUMIDA +100108 “Œ‹ž“s]“Œ‹æ KOUTOU +100109 “Œ‹ž“s•iì‹æ SINAGAWA +100110 “Œ‹ž“s–Ú•‹æ MEGURO +100111 “Œ‹ž“s‘å“c‹æ OOTA,OTA +100112 “Œ‹ž“s¢“c’J‹æ SETAGAYA +100113 “Œ‹ž“sa’J‹æ SIBUYA +100114 “Œ‹ž“s’†–ì‹æ NAKANO +100115 “Œ‹ž“s™•À‹æ SUGINAMI +100116 “Œ‹ž“s–L“‡‹æ TOSIMA +100117 “Œ‹ž“s–k‹æ KITA +100118 “Œ‹ž“srì‹æ ARAKAWA +100119 “Œ‹ž“s”‹´‹æ ITABASI +100120 “Œ‹ž“s—û”n‹æ NERIMA +100121 “Œ‹ž“s‘«—§‹æ ADACI +100122 “Œ‹ž“sŠ‹ü‹æ KATUSIKA +100123 “Œ‹ž“s]ŒËì‹æ EDOGAWA +11 % KANAGAWA +1101 ‰¡•lŽs YOKOHAMA +1102 ‰¡{‰êŽs YOKOSUKA +1103 ìèŽs KAWASAKI +1104 •½’ËŽs HIRATUKA +1105 Š™‘qŽs KAMAKURA +1106 “¡‘òŽs FUJISAWA +1107 ¬“cŒ´Žs ODAWARA +1108 Šƒ–èŽs CIGASAKI +1109 €ŽqŽs ZUSI +1110 ‘Š–ÍŒ´Žs SAGAMIHARA +1111 ŽO‰YŽs MIURA +1112 `–ìŽs HADANO +1113 Œú–ØŽs ATUGI +1114 ‘å˜aŽs YAMATO +1115 ˆÉ¨Œ´Žs ISEHARA +1116 ŠC˜V–¼Žs EBINA +1117 ÀŠÔŽs ZAMA +1118 “ì‘«•¿Žs MINAMIASIGARA +1119 ˆ»£Žs AYASE +11001 ˆ¤bŒS AIKOU +11002 ‘«•¿ãŒS ASIGARAKAMI +11003 ‘«•¿‰ºŒS ASIGARASIMO +11004 ‚ÀŒS KOUZA +11005 ’ËvˆäŒS TUKUI +11006 ’†ŒS NAKA +11007 ŽO‰YŒS MIURA +110101 ‰¡•lŽs’ߌ©‹æ TURUMI +110102 ‰¡•lŽs_“Þì‹æ KANAGAWA +110103 ‰¡•lŽs¼‹æ NISI +110104 ‰¡•lŽs’†‹æ NAKA +110105 ‰¡•lŽs“ì‹æ MINAMI +110106 ‰¡•lŽs•Û“yƒ–’J‹æ HODOGAYA +110107 ‰¡•lŽsˆéŽq‹æ ISOGO +110108 ‰¡•lŽs‹à‘ò‹æ KANAZAWA +110109 ‰¡•lŽs`–k‹æ KOUHOKU +110110 ‰¡•lŽsŒË’Ë‹æ TOTUKA +110111 ‰¡•lŽs`“ì‹æ KOUNAN +110112 ‰¡•lŽsˆ®‹æ ASAHI +110113 ‰¡•lŽs—΋æ MIDORI +110114 ‰¡•lŽs£’J‹æ SEYA +110115 ‰¡•lŽs‰h‹æ SAKAE +110116 ‰¡•lŽsò‹æ IZUMI +110117 ‰¡•lŽs—t‹æ AOBA +110118 ‰¡•lŽs“s’}‹æ TUZUKI +110301 ìèŽsìè‹æ KAWASAKI +110302 ìèŽsK‹æ SAIWAI +110303 ìèŽs’†Œ´‹æ NAKAHARA +110304 ìèŽs‚’Ëæ TAKATU +110305 ìèŽs‘½–€‹æ TAMA +110306 ìèŽs‹{‘O‹æ MIYAMAE +110307 ìèŽs–ƒ¶‹æ ASAO +12 % CIBA +1201 ç—tŽs CIBA +1202 ’¶ŽqŽs CYOSI +1203 ŽsìŽs ICIKAWA +1204 ‘D‹´Žs FUNABASI +1205 ŠÙŽRŽs TATEYAMA +1206 –ØX’ÃŽs KISARAZU +1207 ¼ŒËŽs MATUDO +1208 –ì“cŽs NODA +1209 ²Œ´Žs SAWARA +1210 –ÎŒ´Žs BOBARA +1211 ¬“cŽs NARITA +1212 ²‘qŽs SAKURA +1213 “Œ‹àŽs TOUGANE +1214 ”ª“úŽsêŽs YOKAICIBA +1215 ˆ®Žs ASAHI +1216 KŽu–ìŽs NARASINO +1217 ”Žs KASIWA +1218 Ÿ‰YŽs KATUURA +1219 ŽsŒ´Žs ICIHARA +1220 —¬ŽRŽs NAGAREYAMA +1221 ”ªç‘ãŽs YACIYO +1222 ‰ä‘·ŽqŽs ABIKO +1223 Š›ìŽs KAMOGAWA +1224 ŒN’ÃŽs KIMITU +1225 Š™ƒ–’JŽs KAMAGAYA +1226 •x’ÃŽs FUTTU +1227 ‰YˆÀŽs URAYASU +1228 ŽlŠX“¹Žs YOTUKAIDO +1229 ‘³ƒ–‰YŽs SODEGAURA +1230 ”ªŠXŽs YACIMATA +1231 ˆó¼Žs@@@@@INZAI +12001 ˆÀ–[ŒS AWA +12002 ˆÎ‹÷ŒS ISUMI +12003 ŽsŒ´ŒS* +12004 ˆó׌S INBA +12005 ŠCãŒS KAIJO +12006 ŽæŒS KATORI +12007 ŒN’ÃŒS* +12008 ŽR•ŒS SANBU +12009 ‘xºŒS SOSA +12010 ç—tŒS* +12011 ’·¶ŒS CYOSEI +12012 “ŒŠ‹üŒS HIGASIKATUSIKA +120101 ç—tŽs’†‰›‹æ CYUO +120102 ç—tŽs‰ÔŒ©ì‹æ HANAMIGAWA +120103 ç—tŽsˆî–Ñ‹æ INAGE +120104 ç—tŽsŽá—t‹æ WAKABA +120105 ç—tŽs—΋æ MIDORI +120106 ç—tŽs”ü•l‹æ MIHAMA +13 % SAITAMA +1301 ‰Y˜aŽs URAWA +1302 ì‰zŽs KAWAGOE +1303 ŒF’JŽs KUMAGAYA +1304 ìŒûŽs KAWAGUCI +1305 ‘å‹{Žs OOMIYA,OMIYA +1306 s“cŽs GYODA +1307 ’•ƒŽs CICIBU +1308 Š‘òŽs TOKOROZAWA +1309 ”Ñ”\Žs HANNO +1310 ‰Á{Žs KAZO +1311 –{¯Žs HONJO +1312 “Œ¼ŽRŽs HIGASIMATUYAMA +1313 Šâ’ÎŽs IWATUKI +1314 t“ú•”Žs KASUKABE +1315 ‹·ŽRŽs SAYAMA +1316 ‰H¶Žs HANYU +1317 ƒ‘ƒŽs KOUNOSU +1318 [’JŽs FUKAYA +1319 ã”öŽs AGEO +1320 —^–ìŽs YONO +1321 ‘‰ÁŽs SOKA +1322 ‰z’JŽs KOSIGAYA +1323 ˜nŽs WARABI +1324 ŒË“cŽs TODA +1325 “üŠÔŽs IRUMA +1326 ”µƒ–’JŽs HATOGAYA +1327 ’©‰àŽs ASAKA +1328 Žu–ØŽs SIKI +1329 ˜aŒõŽs WAKOU +1330 VÀŽs NIIZA +1331 ‰±ìŽs OKEGAWA +1332 ‹vŠìŽs KUKI +1333 –k–{Žs KITAMOTO +1334 ”ª’ªŽs YASIO +1335 㕟‰ªŽs KAMIFUKUOKA +1336 •xŽmŒ©Žs FUJIMI +1337 ŽO‹½Žs MISATO +1338 ˜@“cŽs HASUDA +1339 âŒËŽs SAKADO +1340 KŽèŽs SATTE +1341 ’߃P“‡Žs TURUGASIMA +1342 “ú‚Žs HIDAKA +1343 ‹gìŽs@@@@@YOSIKAWA +13001 “üŠÔŒS IRUMA +13002 ‘å—¢ŒS OOSATO,OSATO +13003 –k‘«—§ŒS KITAADACI +13004 –kŠ‹üŒS KITAKATUSIKA +13005 –ké‹ÊŒS KITASAITAMA +13006 Ž™‹ÊŒS KODAMA +13007 ’•ƒŒS CICIBU +13008 ”äŠéŒS HIKI +13009 “ìé‹ÊŒS MINAMISAITAMA +14 % IBARAKI +1401 …ŒËŽs MITO +1402 “ú—§Žs HITACI +1403 “y‰YŽs TUCIURA +1404 ŒÃ‰ÍŽs KOGA +1405 ΉªŽs ISIOKA +1406 ‰ºŠÙŽs SIMODATE +1407 Œ‹éŽs YUKI +1408 —³ƒ–èŽs RYUGASAKI +1409 “߉ϖ©Žs* +1410 ‰ºÈŽs SIMOTUMA +1411 …ŠC“¹Žs MITUKAIDO +1412 í—¤‘¾“cŽs HITACIOOTA +1413 Ÿ“cŽs* +1414 ‚”‹Žs TAKAHAGI +1415 –kˆïéŽs KITAIBARAKI +1416 Š}ŠÔŽs KASAMA +1417 ŽæŽèŽs TORIDE +1418 ŠâˆäŽs IWAI +1419 ‹‹vŽs USIKU +1420 ‚‚­‚ÎŽs TUKUBA +1421 ‚Ђ½‚¿‚È‚©Žs HITACINAKA +1422 Ž­“ˆŽs@@@@@KASIMA +14001 ˆî•~ŒS INASIKI +14002 Ž­“‡ŒS KASIMA +14003 –k‘Š”nŒS KITASOMA +14004 ‹vŽœŒS KUJI +14005 ‰Ž“‡ŒS SASIMA +14006 ‘½‰êŒS TAGA +14007 ’}”gŒS TUKUBA +14008 “߉όS NAKA +14009 s•ûŒS NAMEGATA +14010 VŽ¡ŒS NIIHARI +14011 ¼ˆïéŒS NISIIBARAKI +14012 “ŒˆïéŒS HIGASIIBARAKI +14013 ^•ÇŒS MAKABE +14014 Œ‹éŒS YUKI +15 % TOCIGI +1501 ‰F“s‹{Žs UTUNOMIYA +1502 ‘«—˜Žs ASIKAGA +1503 “È–ØŽs TOCIGI +1504 ²–ìŽs SANO +1505 Ž­ÀŽs KANUMA +1506 “úŒõŽs NIKKO +1507 ¡ŽsŽs IMAICI +1508 ¬ŽRŽs OYAMA +1509 ^‰ªŽs MOOKA +1510 ‘å“cŒ´Žs OOTAWARA,OTAWARA +1511 –î”ÂŽs YAITA +1512 •ˆéŽs KUROISO +15001 ‘«—˜ŒS* +15002 ˆÀ‘hŒS ASO +15003 ã“s‰êŒS KAMITUGA +15004 ‰Í“àŒS KAWACI +15005 ‰–’JŒS SIOYA +15006 ‰º“s‰êŒS SIMOTUGA +15007 “ß{ŒS NASU +15008 –F‰êŒS HAGA +16 % GUNMA +1601 ‘O‹´Žs MAEBASI +1602 ‚èŽs TAKASAKI +1603 ‹Ë¶Žs KIRYU +1604 ˆÉ¨èŽs ISEZAKI +1605 ‘¾“cŽs OOTA,OTA +1606 À“cŽs NUMATA +1607 ŠÙ—ÑŽs TATEBAYASI +1608 aìŽs SIBUKAWA +1609 “¡‰ªŽs FUJIOKA +1610 •x‰ªŽs TOMIOKA +1611 ˆÀ’†Žs ANNAKA +16001 ŒáÈŒS AGATUMA +16002 ‰O•XŒS USUI +16003 —WŠyŒS OURA +16004 ŠÃŠyŒS KANRA +16005 –kŒQ”nŒS KITAGUNMA +16006 ŒQ”nŒS GUNMA +16007 ²”gŒS SAWA +16008 ¨‘½ŒS SETA +16009 ‘½–ìŒS TANO +16010 —˜ªŒS TONE +16011 V“cŒS NITTA +16012 ŽR“cŒS YAMADA +17 % YAMANASI +1701 b•{Žs KOUFU,KOFU +1702 •xŽm‹g“cŽs FUJIYOSIDA +1703 ‰–ŽRŽs ENZAN +1704 “s—¯Žs TURU +1705 ŽR—œŽs YAMANASI +1706 ‘匎Žs OOTUKI,OTUKI +1707 ”BèŽs NIRASAKI +17001 –k‹–€ŒS KITAKOMA +17002 –k“s—¯ŒS KITATURU +17003 ’†‹–€ŒS NAKAKOMA +17004 ¼”ª‘ãŒS NISIYATUSIRO +17005 “Œ”ª‘ãŒS HIGASIYATUSIRO +17006 “ŒŽR—œŒS HIGASIYAMANASI +17007 “ì‹–€ŒS MINAMIKOMA +17008 “ì“s—¯ŒS MINAMITURU +18 % SIZUOKA +1801 ɪŽs SIZUOKA +1802 •l¼Žs HAMAMATU +1803 À’ÃŽs NUMAZU +1804 ´…Žs SIMIZU +1805 ”MŠCŽs ATAMI +1806 ŽO“‡Žs MISIMA +1807 •xŽm‹{Žs FUJINOMIYA +1808 ˆÉ“ŒŽs ITOU +1809 “‡“cŽs SIMADA +1810 ‹gŒ´Žs* +1811 ”Ö“cŽs IWATA +1812 Ä’ÃŽs YAIZU +1813 •xŽmŽs FUJI +1814 Š|ìŽs KAKEGAWA +1815 “¡Ž}Žs FUJIEDA +1816 Œä“aêŽs GOTENBA +1817 ‘܈äŽs FUKUROI +1818 “V—³Žs TENRYU +1819 •l–kŽs HAMAKITA +1820 ‰º“cŽs SIMODA +1821 ž–ìŽs SUSONO +1822 ŒÎ¼Žs KOSAI +18001 ˆÀ”{ŒS* +18002 ˆø²ŒS INASA +18003 ˆÁŒ´ŒS IHARA +18004 ”Ö“cŒS IWATA +18005 ¬Š}ŒS OGASA +18006 ‰ê–ÎŒS KAMO +18007 Žu‘¾ŒS SIDA +18008 Žü’qŒS SYUCI +18009 x“ŒŒS SUNTOU +18010 “c•ûŒS TAGATA +18011 YŒ´ŒS HAIBARA +18012 •l–¼ŒS HAMANA +18013 •xŽmŒS FUJI +19 % GIFU +1901 Šò•ŒŽs GIFU +1902 ‘åŠ_Žs OOGAKI,OGAKI +1903 ‚ŽRŽs TAKAYAMA +1904 ‘½Ž¡Œ©Žs TAJIMI +1905 ŠÖŽs SEKI +1906 ’†’ÃìŽs NAKATUGAWA +1907 ”ü”ZŽs MINO +1908 ˜QŽs MIZUNAMI +1909 ‰H“‡Žs HASIMA +1910 Œb“ߎs ENA +1911 ”ü”Z‰Á–ÎŽs MINOKAMO +1912 “yŠòŽs TOKI +1913 Še–±Œ´Žs KAKAMIGAHARA +1914 ‰ÂŽ™Žs KANI +19001 ˆÀ”ªŒS ANPACI +19002 ˆî—tŒS* +19003 —K”ãŒS IBI +19004 Œb“ߌS ENA +19005 ‘å–ìŒS OONO,ONO +19006 ŠC’ÃŒS KAIZU +19007 ‰ÂŽ™ŒS KANI +19008 ‰Á–ÎŒS KAMO +19009 ŒSãŒS GUJO +19010 “yŠòŒS TOKI +19011 ‰H“‡ŒS HASIMA +19012 •s”jŒS FUWA +19013 ‰v“cŒS MASITA +19014 •‹VŒS MUGI +19015 –{‘ƒŒS MOTOSU +19016 ŽRŒ§ŒS YAMAGATA +19017 —{˜VŒS YORO +19018 ‹géŒS YOSIKI +20 % AICI +2001 –¼ŒÃ‰®Žs NAGOYA +2002 –L‹´Žs TOYOHASI +2003 ‰ªèŽs OKAZAKI +2004 ˆê‹{Žs ICINOMIYA +2005 £ŒËŽs SETO +2006 ”¼“cŽs HANDA +2007 t“úˆäŽs KASUGAI +2008 –LìŽs TOYOKAWA +2009 ’Ó‡Žs TUSIMA +2010 •É“ìŽs HEKINAN +2011 Š ’JŽs KARIYA +2012 –L“cŽs TOYODA +2013 ˆÀéŽs ANJO +2014 ¼”öŽs NISIO +2015 Š—ŒSŽs KAMAGORI +2016 Œ¢ŽRŽs INUYAMA +2017 튊Žs TOKONAME +2018 ŽçŽRŽs* +2019 ]“ìŽs KOUNAN +2020 ”ö¼Žs BISAI +2021 ¬–qŽs KOMAKI +2022 ˆî‘òŽs INAZAWA +2023 VéŽs SINSIRO +2024 “ŒŠCŽs TOUKAI,TOKAI +2025 ‘å•{Žs OOBU,OBU +2026 ’m‘½Žs CITA +2027 ‚•lŽs TAKAHAMA +2028 ’m—§Žs CIRYU +2029 ”ö’£ˆ®Žs OWARIASAHI +2030 Šâ‘qŽs IWAKURA +2031 –L–¾Žs TOYOAKE +2032 “úiŽs NISSIN +20001 ˆ¤’mŒS AICI +20002 ˆ­”üŒS ATUMI +20003 ŠC•”ŒS AMA +20004 –kÝŠyŒS KITASITARA +20005 ’m‘½ŒS CITA +20006 ’†“‡ŒS NAKASIMA +20007 ¼t“úˆäŒS NISIKASUGAI +20008 ¼‰Á–ÎŒS NISIKAMO +20009 ’O‰HŒS NIWA +20010 Šz“cŒS NUKATA +20011 —tŒIŒS HAGURI +20012 ”¦“¤ŒS HAZU +20013 “Œt“úˆäŒS* +20014 “Œ‰Á–ÎŒS HIGASIKAMO +20015 •ÉŠCŒS* +20016 •ó”ÑŒS HOI +20017 “ìÝŠyŒS MINAMISITARA +20018 ”ª–¼ŒS* +200101 –¼ŒÃ‰®ŽsçŽí‹æ CIKUSA +200102 –¼ŒÃ‰®Žs“Œ‹æ HIGASI +200103 –¼ŒÃ‰®Žs–k‹æ KITA +200104 –¼ŒÃ‰®Žs¼‹æ NISI +200105 –¼ŒÃ‰®Žs’†‘º‹æ NAKAMURA +200106 –¼ŒÃ‰®Žs’†‹æ NAKA +200107 –¼ŒÃ‰®Žsº˜a‹æ SYOUWA +200108 –¼ŒÃ‰®Žs•䋿 MIZUHO +200109 –¼ŒÃ‰®Žs”M“c‹æ ATUTA +200110 –¼ŒÃ‰®Žs’†ì‹æ NAKAGAWA +200111 –¼ŒÃ‰®Žs`‹æ MINATO +200112 –¼ŒÃ‰®Žs“ì‹æ MINAMI +200113 –¼ŒÃ‰®ŽsŽçŽR‹æ MORIYAMA +200114 –¼ŒÃ‰®Žs—΋æ MIDORI +200115 –¼ŒÃ‰®Žs–¼“Œ‹æ MEITOU +200116 –¼ŒÃ‰®Žs“V”’‹æ TENPAKU +21 % MIE +2101 ’ÃŽs TU +2102 Žl“úŽsŽs YOKKAICI +2103 ˆÉ¨Žs ISE +2104 ¼ãŽs MATUSAKA +2105 ŒK–¼Žs KUWANA +2106 ã–ìŽs UENO +2107 —鎭Žs SUZUKA +2108 –¼’£Žs NABARI +2109 ”ö˜hŽs OWASE +2110 ‹TŽRŽs KAMEYAMA +2111 ’¹‰HŽs TOBA +2112 ŒF–ìŽs KUMANO +2113 ‹v‹Žs HISAI +2114 ‰FŽ¡ŽR“cŽs* +21001 ˆÀŒ|ŒS AGE +21002 ˆÀ”ZŒS* +21003 ˆ¢ŽRŒS AYAMA +21004 ”Ñ“ìŒS IINAN +21005 ˆêŽuŒS ICISI +21006 ˆõ•ÙŒS INABE +21007 ‰ÍŒ|ŒS* +21008 –k–´˜KŒS KITAMURO +21009 ŒK–¼ŒS KUWANA +21010 Žu–€ŒS SIMA +21011 —鎭ŒS SUZUKA +21012 ‘½‹CŒS TAKI +21013 –¼‰êŒS NAGA +21014 ŽOdŒS MIE +21015 “ì–´˜KŒS MINAMIMURO +21016 “x‰ïŒS WATARAI +22 % KYOUTO,KYOTO +2201 ‹ž“sŽs KYOUTO,KYOTO +2202 •Ÿ’mŽRŽs FUKUCIYAMA +2203 •‘’ߎs MAIZURU +2204 ˆ»•”Žs AYABE +2205 ‰FŽ¡Žs UJI +2206 ‹{’ÃŽs MIYAZU +2207 ‹T‰ªŽs KAMEOKA +2208 é—zŽs JOYO +2209 ’·‰ª‹žŽs NAGAOKAKYO +2210 Œü“úŽs MUKOU +2211 ”ª”¦Žs YAWATA +2212 ‹ž“c•ÓŽs KYOTANABE +22001 “V“cŒS AMATA +22002 ‰½Ž­ŒS* +22003 ‰³ŒPŒS OTOKUNI +22004 ‰Á²ŒS KASA +22005 –kŒK“cŒS KITAKUWADA +22006 ‹v¢ŒS KUZE +22007 ŒF–ìŒS KUMANO +22008 ‘ŠŠyŒS SOURAKU,SORAKU +22009 ’|–ìŒS TAKENO +22010 ’ÔŠìŒS TUZUKI +22011 ’†ŒS NAKA +22012 ‘DˆäŒS FUNAI +22013 “ìŒK“cŒS* +22014 —^ŽÓŒS YOSA +220101 ‹ž“sŽs–k‹æ KITA +220102 ‹ž“sŽs㋞‹æ KAMIKYO +220103 ‹ž“sŽs¶‹ž‹æ SAKYO +220104 ‹ž“sŽs’†‹ž‹æ NAKAKYO +220105 ‹ž“sŽs“ŒŽR‹æ HIGASIYAMA +220106 ‹ž“sŽs‰º‹ž‹æ SIMOKYO +220107 ‹ž“sŽs“ì‹æ MINAMI +220108 ‹ž“sŽs‰E‹ž‹æ UKYO +220109 ‹ž“sŽs•šŒ©‹æ FUSIMI +220110 ‹ž“sŽsŽR‰È‹æ YAMASINA +220111 ‹ž“sŽs¼‹ž‹æ NISIKYO +23 % SIGA +2301 ‘å’ÃŽs OOTU,OTU +2302 •FªŽs HIKONE +2303 ’·•lŽs NAGAHAMA +2304 ‹ß]”ª”¦Žs OOMIHACIMAN,OMIHACIMAN +2305 ”ª“úŽsŽs YOKAICI +2306 ‘’ÃŽs KUSATU +2307 ŽçŽRŽs MORIYAMA +23001 ˆÉŒS IKA +23002 Œ¢ãŒS INUKAMI +23003 ˆ¤’mŒS ECI +23004 Š—¶ŒS GAMO +23005 _èŒS KANZAKI +23006 ŒI‘¾ŒS KURITA +23007 b‰êŒS KOUKA +23008 â“cŒS SAKATA +23009 Ž ‰êŒS SIGA +23010 ‚“‡ŒS TAKASIMA +23011 “ŒóˆäŒS HIGASIASAI +23012 –ìFŒS YASU +24 % NARA +2401 “Þ—ÇŽs NARA +2402 ‘å˜a‚“cŽs YAMATOTAKADA +2403 ‘å˜aŒSŽRŽs YAMATOKORIYAMA +2404 “V—Žs TENRI +2405 Š€Œ´Žs KASIHARA +2406 ÷ˆäŽs SAKURAI +2407 ŒÜžŠŽs GOJO +2408 ŒäŠŽs GOSE +2409 ¶‹îŽs IKOMA +2410 ŽÅŽs KASIBA +24001 ¶‹îŒS IKOMA +24002 ‰F‘ÉŒS UDA +24003 ‰F’qŒS* +24004 –kŠ‹éŒS KITAKATURAGI +24005 ˆééŒS SIKI +24006 “YãŒS SOEKAMI +24007 ‚ŽsŒS TAKAICI +24008 “슋éŒS* +24009 ŽR•ÓŒS YAMABE +24010 ‹g–ìŒS YOSINO +25 % OOSAKA,OSAKA +2501 ‘åãŽs OOSAKA,OSAKA +2502 äŽs SAKAI +2503 ŠÝ˜a“cŽs KISIWADA +2504 –L’†Žs TOYONAKA +2505 •zŽ{Žs* +2506 ’r“cŽs IKEDA +2507 “cŽs SUITA +2508 ò‘å’ÃŽs IZUMIOTU +2509 ‚’ÎŽs TAKATUKI +2510 ŠL’ËŽs KAIZUKA +2511 ŽçŒûŽs MORIGUCI +2512 –‡•ûŽs HIRAKATA +2513 ˆï–ØŽs IBARAKI +2514 ”ª”öŽs YAO +2515 ò²–ìŽs IZUMISANO +2516 •x“c—ÑŽs TONDABAYASI +2517 Q‰®ìŽs NEYAGAWA +2518 ‰Í“à’·–ìŽs KAWACINAGANO +2519 –‡‰ªŽs* +2520 ‰Í“àŽs* +2521 ¼Œ´Žs MATUBARA +2522 ‘哌Žs DAITOU +2523 ˜aòŽs IZUMI +2524 –¥–ÊŽs MINO +2525 ”Œ´Žs KASIWARA +2526 ‰H‰g–ìŽs HABIKINO +2527 –å^Žs KADOMA +2528 Û’ÃŽs SETTU +2529 “¡ˆäŽ›Žs FUJIIDERA +2530 ‚ÎŽs TAKAISI +2531 “Œ‘åãŽs HIGASIOSAKA +2532 ò“ìŽs SENNAN +2533 Žlð“ëŽs SIJONAWATE +2534 Œð–ìŽs KATANO +2535 ‘åã‹·ŽRŽs OOSAKASAYAMA,OSAKASAYAMA +2536 ã“ìŽs HANNAN +25001 –k‰Í“àŒS* +25002 ò“ìŒS SENNAN +25003 ò–kŒS SENBOKU +25004 –L”\ŒS TOYONO +25005 ’†‰Í“àŒS* +25006 ŽO“‡ŒS MISIMA +25007 “ì‰Í“àŒS MINAMIKAWACI +250101 ‘åãŽs–k‹æ KITA +250102 ‘åãŽs“s“‡‹æ MIYAKOJIMA +250103 ‘åãŽs•Ÿ“‡‹æ FUKUSIMA +250104 ‘åãŽsŸ‰Ô‹æ KONOHANA +250105 ‘åãŽs“Œ‹æ* +250106 ‘åãŽs¼‹æ NISI +250107 ‘åãŽs`‹æ MINATO +250108 ‘åãŽs‘峋æ TAISYO +250109 ‘åãŽs“V‰¤Ž›‹æ TENNOUJI,TENNOJI +250110 ‘åãŽs“ì‹æ* +250111 ‘åãŽs˜Q‘¬‹æ NANIWA +250112 ‘åãŽs‘å—„‹æ* +250113 ‘åãŽs¼—„ì‹æ NISIYODOGAWA +250114 ‘åãŽs“Œ—„ì‹æ HIGASIYODOGAWA +250115 ‘åãŽs“Œ¬‹æ HIGASINARI +250116 ‘åãŽs¶–ì‹æ IKUNO +250117 ‘åãŽsˆ®‹æ ASAHI +250118 ‘åãŽs铌‹æ JOTO +250119 ‘åãŽsˆ¢”{–ì‹æ ABENO +250120 ‘åãŽsZ‹g‹æ SUMIYOSI +250121 ‘åãŽs“ŒZ‹g‹æ HIGASISUMIYOSI +250122 ‘åãŽs¼¬‹æ NISINARI +250123 ‘åãŽs—„ì‹æ YODOGAWA +250124 ‘åãŽs’ߌ©‹æ TURUMI +250125 ‘åãŽsZ”V]‹æ SUMINOE +250126 ‘åãŽs•½–ì‹æ HIRANO +250127 ‘åãŽs’†‰›‹æ CYUO +26 % WAKAYAMA +2601 ˜a‰ÌŽRŽs WAKAYAMA +2602 V‹{Žs SINGU +2603 ŠC“ìŽs KAINAN +2604 “c•ÓŽs TANABE +2605 Œä–VŽs GOBO +2606 ‹´–{Žs HASIMOTO +2607 —L“cŽs ARIDA +26001 —L“cŒS ARIDA +26002 ˆÉ“sŒS ITO +26003 ŠC‘ŒS KAISO +26004 “߉êŒS NAGA +26005 ¼–´˜KŒS NISIMURO +26006 “Œ–´˜KŒS HIGASIMURO +26007 “ú‚ŒS HIDAKA +27 % HYOGO +2701 _ŒËŽs KOUBE,KOBE +2702 •P˜HŽs HIMEJI +2703 “òèŽs AMAGASAKI +2704 –¾ÎŽs AKASI +2705 ¼‹{Žs NISINOMIYA +2706 F–{Žs SUMOTO +2707 ˆ°‰®Žs ASIYA +2708 ˆÉ’OŽs ITAMI +2709 ‘жŽs AIOI +2710 –L‰ªŽs TOYOOKA +2711 ‰ÁŒÃìŽs KAKOGAWA +2712 —´–ìŽs TATUNO +2713 Ô•äŽs AKO +2714 ¼˜eŽs NISIWAKI +2715 •ó’ËŽs TAKARAZUKA +2716 ŽO–ØŽs MIKI +2717 ‚»Žs TAKASAGO +2718 켎s KAWANISI +2719 ¬–ìŽs ONO +2720 ŽO“cŽs SANDA +2721 ‰Á¼Žs KASAI +2722 ŽÂŽRŽs SASAYAMA +27001 Ô•äŒS AKO +27002 ’©—ˆŒS ASAGO +27003 —L”nŒS* +27004 oÎŒS IZUSI +27005 —K•ÛŒS IBO +27006 ˆó“ìŒS* +27007 ‰ÁŒÃŒS KAKO +27008 ‰Á¼ŒS* +27009 ‰Á“ŒŒS KATOU +27010 ì•ÓŒS KAWABE +27011 _èŒS KANZAKI +27012 éèŒS KINOSAKI +27013 ²—pŒS SAYO +27014 ü–ŒS SIKAMA +27015 ޳ˆ¾ŒS SISO +27016 ‘½‰ÂŒS TAKA +27017 ‘½‹IŒS* +27018 ’Ö¼ŒS TUNA +27019 •XãŒS HIKAMI +27020 ”ü•ûŒS MIKATA +27021 ”ü”XŒS MINO +27022 ŽOŒ´ŒS MIHARA +27023 •ŒÉŒS* +27024 —{•ƒŒS YABU +270101 _ŒËŽs“Œ“勿 HIGASINADA +270102 _ŒËŽs“勿 NADA +270103 _ŒËŽs•ºŒÉ‹æ HYOGO +270104 _ŒËŽs’·“c‹æ NAGATA +270105 _ŒËŽs{–‹æ SUMA +270106 _ŒËŽs‚…‹æ TARUMI +270107 _ŒËŽs–k‹æ KITA +270108 _ŒËŽs’†‰›‹æ CYUO +270109 _ŒËŽs¼‹æ NISI +28 % TOYAMA +2801 •xŽRŽs TOYAMA +2802 ‚‰ªŽs TAKAOKA +2803 V–©Žs SINMINATO +2804 ‹›’ÃŽs UOZU +2805 •XŒ©Žs HIMI +2806 ŠŠìŽs NAMERIKAWA +2807 ••”Žs KUROBE +2808 áè”gŽs TONAMI +2809 ¬–î•”Žs OYABE +28001 ŽË…ŒS IMIZU +28002 ãVìŒS KAMINIIKAWA +28003 ‰ºVìŒS SIMONIIKAWA +28004 ’†VìŒS NAKANIIKAWA +28005 ¼“v”gŒS NISITONAMI +28006 •w•‰ŒS NEI +28007 •XŒ©ŒS* +28008 “Œ“v”gŒS HIGASITONAMI +29 % FUKUI +2901 •ŸˆäŽs FUKUI +2902 “Ö‰êŽs TURUGA +2903 •¶Žs TAKEFU +2904 ¬•lŽs OBAMA +2905 ‘å–ìŽs OONO,ONO +2906 ŸŽRŽs KATUYAMA +2907 ŽI]Žs SABAE +29001 ‘«‰HŒS ASUWA +29002 ¡—§ŒS IMADATE +29003 ‘å”ÑŒS OOI,OI +29004 ‘å–ìŒS OONO,ONO +29005 ‰“•~ŒS ONYU +29006 âˆäŒS SAKAI +29007 “Ö‰êŒS* +29008 “ìðŒS NANJO +29009 ’O¶ŒS NYU +29010 ŽO•ûŒS MIKATA +29011 ‹g“cŒS YOSIDA +30 % ISIKAWA +3001 ‹à‘òŽs KANAZAWA +3002 ޵”öŽs NANAO +3003 ¬¼Žs KOMATU +3004 —Ö“‡Žs WAJIMA +3005 ŽìFŽs SUZU +3006 ‰Á‰êŽs KAGA +3007 ‰HîŽs HAKUI +3008 ¼”CŽs MATUTOU +30001 ÎìŒS ISIKAWA +30002 ]ÀŒS ENUMA +30003 Ž­“‡ŒS KASIMA +30004 ‰Í–kŒS KAHOKU +30005 ŽìFŒS SUZU +30006 ”\”üŒS NOMI +30007 ‰HîŒS HAKUI +30008 –PŽŠŒS FUGESI +31 % OKAYAMA +3101 ‰ªŽRŽs OKAYAMA +3102 ‘q•~Žs KURASIKI +3103 ’ÃŽRŽs TUYAMA +3104 ‹Ê–ìŽs TAMANO +3105 Ž™“‡Žs* +3106 ‹Ê“‡Žs* +3107 Š}‰ªŽs KASAOKA +3108 ¼‘厛Žs* +3109 ˆäŒ´Žs IBARA +3110 ‘ŽÐŽs SOJA +3111 ‚—ÀŽs TAKAHASI +3112 VŒ©Žs NIIMI +3113 ”õ‘OŽs BIZEN +31001 ‰p“cŒS AIDA +31002 Ô”ÖŒS AKAIWA +31003 óŒûŒS ASAKUCI +31004 ˆ¢“NŒS ATETU +31005 —W‹vŒS OKU +31006 ¬“cŒS ODA +31007 Ÿ“cŒS KATUTA +31008 ìãŒS KAWAKAMI +31009 ‹g”õŒS KIBI +31010 ‹v•ÄŒS KUME +31011 Ž™“‡ŒS KOJIMA +31012 ŒãŒŽŒS SITUKI +31013 㓹ŒS* +31014 ã–[ŒS JOBO +31015 “sŒEŒS TUKUBO +31016 “Ï“cŒS TOMATA +31017 ^’ëŒS MANIWA +31018 Œä’ÃŒS MITU +31019 ˜a‹CŒS WAKE +32 % SIMANE +3201 ¼]Žs MATUE +3202 •l“cŽs HAMADA +3203 o‰_Žs IZUMO +3204 ‰v“cŽs MASUDA +3205 ‘å“cŽs OODA,ODA +3206 ˆÀ—ˆŽs YASUGI +3207 ]’ÃŽs KOUZU +3208 •½“cŽs HIRATA +32001 ˆÀ”ZŒS* +32002 ŠCŽmŒS* +32003 ”ÑÎŒS IISI +32004 —W’qŒS OCI +32005 ‘匴ŒS OHARA +32006 ‰BŠòŒS OKI +32007 ‰¸’nŒS* +32008 Ž­‘«ŒS KANOASI +32009 Žü‹gŒS* +32010 ’m•vŒS* +32011 “߉êŒS NAKA +32012 m‘½ŒS NITA +32013 “ô–€ŒS NIMA +32014 ”\‹`ŒS NOGI +32015 ”ôìŒS HIKAWA +32016 ”ü”ZŒS MINO +32017 ”ª‘©ŒS YATUKA +33 % YAMAGUCI +3301 ŽRŒûŽs YAMAGUCI +3302 ‰ºŠÖŽs SIMONOSEKI +3303 ‰F•”Žs UBE +3304 ”‹Žs HAGI +3305 “¿ŽRŽs TOKUYAMA +3306 –h•{Žs BOFU +3307 ‰º¼Žs KUDAMATU +3308 Šâ‘Žs IWAKUNI +3309 ¬–ì“cŽs ONODA +3310 ŒõŽs HIKARI +3311 ’·–åŽs NAGATO +3312 –öˆäŽs YANAI +3313 ”ü”IŽs MINE +3314 V“ì—zŽs SINNANYOU +33001 Œú‹·ŒS ASA +33002 ˆ¢•ŒS ABU +33003 ‘哇ŒS OOSIMA,OSIMA +33004 ‘å’ÃŒS OOTU,OTU +33005 ‹è‰ÏŒS KUGA +33006 ŒF–ÑŒS KUMAGE +33007 ²”gŒS SABA +33008 “s”ZŒS TUNO +33009 –L‰YŒS TOYOURA +33010 ”ü”IŒS MINE +33011 ‹g•~ŒS YOSIKI +34 % TOTTORI +3401 ’¹ŽæŽs TOTTORI +3402 ‘q‹gŽs KURAYOSI +3403 •ÄŽqŽs YONAGO +3404 ‹«`Žs SAKAIMINATO +34001 Šâ”üŒS IWAMI +34002 ‹C‚ŒS KETAKA +34003 ¼”ŒŒS SAIHAKU +34004 “Œ”ŒŒS TOUHAKU +34005 “ú–ìŒS HINO +34006 ”ª“ªŒS YAZU +35 % HIROSIMA +3501 L“‡Žs HIROSIMA +3502 ŒàŽs KURE +3503 ’|Œ´Žs TAKEHARA +3504 ŽOŒ´Žs MIHARA +3505 ”ö“¹Žs ONOMICI +3506 ˆö“‡Žs INNOSIMA +3507 ¼‰iŽs* +3508 •ŸŽRŽs FUKUYAMA +3509 •{’†Žs FUCYU +3510 ŽOŽŸŽs MIYOSI +3511 ¯Œ´Žs SYOBARA +3512 ‘å’|Žs OOTAKE,OTAKE +3513 “ŒL“‡Žs HIGASIHIROSIMA +3514 “ù“úŽsŽs HATUKAICI +35001 ˆÀŒ|ŒS AKI +35002 ˆÀ²ŒS* +35003 ˆ°•iŒS ASINA +35004 ‰ê–ÎŒS KAMO +35005 b“zŒS KOUNU +35006 ²”ŒŒS SAEKI +35007 _ÎŒS JINSEKI +35008 ¢—…ŒS SERA +35009 ‚“cŒS TAKATA +35010 –L“cŒS TOYOTA +35011 ÀŒGŒS NUMAKUMA +35012 ”ä”kŒS HIBA +35013 [ˆÀŒS FUKAYASU +35014 ‘oŽOŒS FUTAMI +35015 Œä’²ŒS MITUGI +35016 ŽRŒ§ŒS YAMAGATA +350101 L“‡Žs’†‹æ NAKA +350102 L“‡Žs“Œ‹æ HIGASI +350103 L“‡Žs“ì‹æ MINAMI +350104 L“‡Žs¼‹æ NISI +350105 L“‡ŽsˆÀ²“ì‹æ ASAMINAMI +350106 L“‡ŽsˆÀ²–k‹æ ASAKITA +350107 L“‡ŽsˆÀŒ|‹æ AKI +350108 L“‡Žs²”Œ‹æ SAEKI +36 % KAGAWA +3601 ‚¼Žs TAKAMATU +3602 ŠÛ‹TŽs MARUGAME +3603 âoŽs SAKAIDE +3604 ‘P’ÊŽ›Žs ZENTUJI +3605 ŠÏ‰¹Ž›Žs KANONJI +36001 ˆ»‰ÌŒS AYAUTA +36002 ‘åìŒS OOKAWA,OKAWA +36003 ìŒS KAGAWA +36004 –Ø“cŒS KITA +36005 ¬“¤ŒS SYOZU +36006 ’‡‘½“xŒS NAKATADO +36007 ŽO–LŒS MITOYO +37 % TOKUSIMA +3701 “¿“‡Žs TOKUSIMA +3702 ––åŽs NARUTO +3703 ¬¼“‡Žs KOMATUSIMA +3704 ˆ¢“ìŽs ANAN +37001 ˆ¢”gŒS AWA +37002 ”–ìŒS ITANO +37003 –ƒAŒS OE +37004 ŠC•”ŒS KAIFU +37005 Ÿ‰YŒS KATUURA +37006 “߉êŒS NAKA +37007 –¼¼ŒS MYOZAI +37008 –¼“ŒŒS MYODO +37009 ”ü”nŒS MIMA +37010 ŽODŒS MIYOSI +38 % EHIME +3801 ¼ŽRŽs MATUYAMA +3802 ¡Ž¡Žs IMABARI +3803 ‰F˜a“‡Žs UWAJIMA +3804 ”ª”¦•lŽs YAWATAHAMA +3805 V‹•lŽs NIHAMA +3806 ¼ðŽs SAIJO +3807 ‘åFŽs OOZU,OZU +3808 ˆÉ—\ŽO“‡Žs IYOMISIMA +3809 ì”V]Žs KAWANOE +3810 ˆÉ—\Žs IYO +3811 –kðŽs HOJO +3812 “Œ—\Žs TOUYO +38001 ˆÉ—\ŒS IYO +38002 ‰F–€ŒS UMA +38003 ‰z’qŒS OCI +38004 ‰·òŒS ONSEN +38005 ã•‚ŒŠŒS KAMIUKENA +38006 Šì‘½ŒS KITA +38007 –k‰F˜aŒS KITAUWA +38008 ŽüŒKŒS SYUSO +38009 V‹ŒS* +38010 ¼‰F˜aŒS NISIUWA +38011 “Œ‰F˜aŒS HIGASIUWA +38012 “ì‰F˜aŒS MINAMIUWA +39 % KOUCI,KOCI +3901 ‚’mŽs KOUCI,KOCI +3902 ŽºŒËŽs MUROTO +3903 ˆÀŒ|Žs AKI +3904 “y²Žs TOSA +3905 {èŽs SUSAKI +3906 ’†‘ºŽs NAKAMURA +3907 h–ÑŽs SUKUMO +3908 “y²´…Žs TOSASIMIZU +3909 “쑎s NANGOKU +39001 ŒáìŒS AGAWA +39002 ˆÀŒ|ŒS AKI +39003 ”üŒS KAMI +39004 ‚‰ªŒS TAKAOKA +39005 “y²ŒS TOSA +39006 ’·‰ªŒS NAGAOKA +39007 ”¦‘½ŒS HATA +40 % FUKUOKA +4001 •Ÿ‰ªŽs FUKUOKA +4002 ¬‘qŽs* +4003 –åŽiŽs* +4004 ”ª”¦Žs* +4005 ŒË”¨Žs* +4006 Žá¼Žs* +4007 ‹v—¯•ÄŽs KURUME +4008 ‘å–´“cŽs OOMUTA,OMUTA +4009 ’¼•ûŽs NOOGATA,NOGATA +4010 ”Ñ’ËŽs IIZUKA +4011 “cìŽs TAGAWA +4012 –öìŽs YANAGAWA +4013 ŠÃ–ØŽs AMAGI +4014 ŽR“cŽs YAMADA +4015 ”ª—Žs YAME +4016 ’}ŒãŽs CIKUGO +4017 ‘åìŽs OOKAWA,OKAWA +4018 s‹´Žs YUKUHASI +4019 –L‘OŽs BUZEN +4020 ’†ŠÔŽs NAKAMA +4021 –k‹ãBŽs KITAKYUSYU +4022 ¬ŒSŽs OGOORI,OGORI +4023 t“úŽs KASUGA +4024 ’}އ–ìŽs CIKUSINO +4025 ‘å–ìéŽs OONOJO,ONOJO +4026 @‘œŽs MUNAKATA +4027 ‘¾É•{Žs DAZAIFU +4028 ‘OŒ´Žs MAEBARU +4029 ŒÃ‰êŽs@@@@@KOGA +40001 ’©‘qŒS ASAKURA +40002 Ž…“‡ŒS ITOSIMA +40003 •‚‰HŒS UKIHA +40004 ‰“‰êŒS ONGA +40005 ””‰®ŒS KASUYA +40006 ‰Ã•äŒS KAHO +40007 ˆÆŽèŒS TEKURA +40008 ‘—ÇŒS* +40009 “cìŒS TAGAWA +40010 ’}އŒS CIKUSI +40011 ’zãŒS CIKUJO +40012 ŽOˆäŒS MII +40013 ŽO’rŒS MIIKE +40014 ŽOàkŒS MIZUMA +40015 ‹ž“sŒS MIYAKO +40016 @‘œŒS MUNAKATA +40017 ŽR–åŒS YAMATO +40018 ”ª—ŒS YAME +400101 •Ÿ‰ªŽs“Œ‹æ HIGASI +400102 •Ÿ‰ªŽs”Ž‘½‹æ HAKATA +400103 •Ÿ‰ªŽs’†‰›‹æ CYUO +400104 •Ÿ‰ªŽs“ì‹æ MINAMI +400105 •Ÿ‰ªŽs¼‹æ NISI +400106 •Ÿ‰ªŽsé“ì‹æ JYOUNAN,JYONAN +400107 •Ÿ‰ªŽs‘—Ç‹æ SAWARA +402101 –k‹ãBŽs–åŽi‹æ MOJI +402102 –k‹ãBŽsŽá¼‹æ WAKAMATU +402103 –k‹ãBŽsŒË”¨‹æ TOBATA +402104 –k‹ãBŽs¬‘q–k‹æ KOKURAKITA +402105 –k‹ãBŽs¬‘q“ì‹æ KOKURAMINAMI +402106 –k‹ãBŽs”ª”¦“Œ‹æ YAHATAHIGASI +402107 –k‹ãBŽs”ª”¦¼‹æ YAHATANISI +41 % SAGA +4101 ²‰êŽs SAGA +4102 “‚’ÃŽs KARATU +4103 ’¹²Žs TOSU +4104 ‘½‹vŽs TAKU +4105 ˆÉ–œ—¢Žs IMARI +4106 •—YŽs TAKEO +4107 Ž­“‡Žs KASIMA +41001 ¬éŒS OGI +41002 _éŒS KANZAKI +41003 ‹n“‡ŒS KISIMA +41004 ²‰êŒS SAGA +41005 ¼¼‰YŒS NISIMATUURA +41006 “Œ¼‰YŒS HIGASIMATUURA +41007 “¡’ÃŒS FUJITU +41008 ŽO—{ŠîŒS MIYAKI +42 % NAGASAKI +4201 ’·èŽs NAGASAKI +4202 ²¢•ÛŽs SASEBO +4203 “‡Œ´Žs SIMABARA +4204 ŠÐ‘Žs ISAHAYA +4205 ‘呺Žs OOMURA,OMURA +4206 •Ÿ]Žs FUKUE +4207 •½ŒËŽs HIRADO +4208 ¼‰YŽs MATUURA +42001 ˆëŠòŒS IKI +42002 ㌧ŒS KAMIAGATA +42003 –k‚—ˆŒS KITATAKAKI +42004 –k¼‰YŒS KITAMATUURA +42005 ‰ºŒ§ŒS SIMOAGATA +42006 ¼”Þ‹nŒS NISISONOGI +42007 “Œ”Þ‹nŒS HIGASISONOGI +42008 “ì‚—ˆŒS MINAMITAKAKI +42009 “켉YŒS MINAMIMATUURA +43 % KUMAMOTO +4301 ŒF–{Žs KUMAMOTO +4302 ”ª‘ãŽs YATUSIRO +4303 l‹gŽs HITOYOSI +4304 r”öŽs ARAO +4305 …–“Žs MINAMATA +4306 ‹Ê–¼Žs TAMANA +4307 –{“nŽs HONDO +4308 ŽRŽ­Žs YAMAGA +4309 ‹[Žs USIBUKA +4310 ‹e’rŽs KIKUCI +4311 ‰F“yŽs UTO +43001 ˆ°–kŒS ASIKITA +43002 ˆ¢‘hŒS ASO +43003 “V‘ŒS AMAKUSA +43004 ‰F“yŒS UTO +43005 ã‰véŒS KAMIMASIKI +43006 Ž­–{ŒS KAMOTO +43007 ‹e’rŒS KIKUCI +43008 ‹…–ŒS KUMA +43009 ‰º‰véŒS SIMOMASIKI +43010 ‹Ê–¼ŒS TAMANA +43011 –O‘õŒS* +43012 ”ª‘ãŒS YATUSIRO +44 % OOITA,OITA +4401 ‘啪Žs OOITA,OITA +4402 •Ê•{Žs BEPPU +4403 ’†’ÃŽs NAKATU +4404 “ú“cŽs HITA +4405 ²”ŒŽs SAIKI +4406 ‰P‹nŽs USUKI +4407 ’ËvŒ©Žs TUKUMI +4408 ’|“cŽs TAKEDA +4409 ’ßèŽs* +4410 –LŒã‚“cŽs BUNGOTAKADA +4411 ‹n’zŽs KITUKI +4412 ‰F²Žs USA +44001 ‰F²ŒS USA +44002 ‘啪ŒS OOITA,OITA +44003 ‘å–ìŒS OONO,ONO +44004 –kŠC•”ŒS KITAAMABE +44005 ‹èŽìŒS KUSU +44006 ‰º–ÑŒS SIMOGE +44007 ’¼“üŒS NAOIRI +44008 ¼‘“ŒŒS NISIKUNISAKI +44009 ‘¬Œ©ŒS HAYAMI +44010 “Œ‘“ŒŒS HIGASIKUNISAKI +44011 “ú“cŒS HITA +44012 “ìŠC•”ŒS MINAMIAMABE +45 % MIYAZAKI +4501 ‹{èŽs MIYAZAKI +4502 “séŽs MIYAKONOJO +4503 ‰„‰ªŽs NOBEOKA +4504 “ú“ìŽs NICINAN +4505 ¬—ÑŽs KOBAYASI +4506 “úŒüŽs HYUGA +4507 ‹øŠÔŽs KUSIMA +4508 ¼“sŽs SAITO +4509 ‚¦‚т̎s EBINO +45001 –k”Œ§ŒS KITAMOROKATA +45002 Ž™“’ŒS KOYU +45003 ¼‰P‹nŒS NISIUSUKI +45004 ¼”Œ§ŒS NISIMOROKATA +45005 “Œ‰P‹nŒS HIGASIUSUKI +45006 “Œ”Œ§ŒS HIGASIMOROKATA +45007 “ì“߉όS MINAMINAKA +45008 ‹{èŒS MIYAZAKI +46 % KAGOSIMA +4601 Ž­Ž™“‡Žs KAGOSIMA +4602 ì“àŽs SENDAI +4603 Ž­‰®Žs KANOYA +4604 –èŽs MAKURAZAKI +4605 ‹ø–Ø–ìŽs KUSIKINO +4606 ˆ¢‹vªŽs AKUNE +4607 o…Žs IZUMI +4608 –¼£Žs NAZE +4609 ‘åŒûŽs OOKUCI,OKUCI +4610 ŽwhŽs IBUSUKI +4611 ‰Á¢“cŽs KASEDA +4612 ‘•ªŽs KOKUBU +4613 ’JŽRŽs* +4614 ¼”V•\Žs NISINOOMOTE +4615 ‚…Žs TARUMIZU +46001 ˆ¦—ÇŒS AIRA +46002 ˆÉ²ŒS ISA +46003 o…ŒS IZUMI +46004 —KhŒS IBUSUKI +46005 ‘哇ŒS OOSIMA,OSIMA +46006 Ž­Ž™“‡ŒS KAGOSIMA +46007 ì•ÓŒS KAWANABE +46008 ŠÌ‘®ŒS KIMOTUKI +46009 ŒF–ÑŒS KUMAGE +46010 ŽF–€ŒS SATUMA +46011 ‘]‰—ŒS SOO +46012 “ú’uŒS HIOKI +47 % OKINAWA +4701 “ß”eŽs NAHA +4702 ÎìŽs ISIKAWA +4703 •½—ÇŽs HIRARA +4704 Ί_Žs ISIGAKI +4705 ƒRƒUŽs* +4706 ‹X–ì˜pŽs GINOWAN +4707 ‹ïŽuìŽs GUSIKAWA +4708 –¼ŒìŽs NAGO +4709 ‰Y“YŽs URASOE +4710 Ž…–žŽs ITOMAN +4711 ‰«“êŽs OKINAWA +47001 ‘“ªŒS KUNIGAMI +47002 “‡KŒS SIMAJIRI +47003 ’†“ªŒS NAKAGAMI +47004 ‹{ŒÃŒS MIYAKO +47005 ”ªdŽRŒS YAEYAMA + \ No newline at end of file diff --git a/MMlink.cpp b/MMlink.cpp new file mode 100644 index 0000000..aaec5e7 --- /dev/null +++ b/MMlink.cpp @@ -0,0 +1,408 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "MMLink.h" +//--------------------------------------------------------------------------- +__fastcall CMMList::CMMList(void) +{ + m_pList = NULL; +} +//--------------------------------------------------------------------------- +__fastcall CMMList::~CMMList() +{ + delete m_pList; +} +//--------------------------------------------------------------------------- +int __fastcall CMMList::QueryList(LPCSTR pFilter) +{ + if( m_pList == NULL ) m_pList = new TStringList; + m_pList->Clear(); + m_FilterLen = strlen(pFilter); + + HANDLE hFind; + WIN32_FIND_DATA fd; + + char Name[MAX_PATH]; + sprintf(Name, "%s*.%s", BgnDir, pFilter); + hFind = ::FindFirstFile(Name, &fd); + if( hFind != INVALID_HANDLE_VALUE ){ + while(1){ + m_pList->Add(fd.cFileName); + if( !FindNextFile(hFind, &fd) ) break; + } + ::FindClose(hFind); + } + return m_pList->Count; +} +//--------------------------------------------------------------------------- +LPCSTR __fastcall CMMList::GetItemName(int n) +{ + if( n < 0 ) return NULL; + if( n >= m_pList->Count ) return NULL; + + m_Name = m_pList->Strings[n].c_str(); + LPSTR p = lastp(m_Name.c_str()); + p -= m_FilterLen; + *p = 0; + return m_Name.c_str(); +} +//--------------------------------------------------------------------------- +LPCSTR __fastcall CMMList::GetFileName(int n) +{ + if( n < 0 ) return NULL; + if( n >= m_pList->Count ) return NULL; + + m_Name = m_pList->Strings[n]; + return m_Name.c_str(); +} +//--------------------------------------------------------------------------- +int __fastcall CMMList::IndexOf(LPCSTR pKey) +{ + for( int i = 0; i < m_pList->Count; i++ ){ + if( !strcmpi(GetItemName(i), pKey) ) return i; + } + return -1; +} +//*************************************************************************** +// CMMLink class +//--------------------------------------------------------------------------- +__fastcall CMMLink::CMMLink(HWND hWnd, UINT uMsg) +{ + m_hLib = NULL; + m_hWnd = hWnd; + m_uMsg = uMsg; + m_Caps = 0; +} +//--------------------------------------------------------------------------- +__fastcall CMMLink::~CMMLink() +{ + Close(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::FreeLib(void) +{ + if( m_hLib ){ + FreeLibrary(m_hLib); + m_hLib = NULL; + } +} +//--------------------------------------------------------------------------- +FARPROC __fastcall CMMLink::GetProc(LPCSTR pName) +{ + if( !m_hLib ) return NULL; + + FARPROC fn = ::GetProcAddress(m_hLib, pName+1); + if( fn == NULL ){ + fn = ::GetProcAddress(m_hLib, pName); + if( fn == NULL ) FreeLib(); + } + return fn; +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::Close(void) +{ + if( IsLib() ){ + fmmlClose(); + FreeLib(); + } + m_Connected = FALSE; +} +//--------------------------------------------------------------------------- +BOOL __fastcall CMMLink::Open(LPCSTR pItemName) +{ + Close(); + + m_ItemName = pItemName; + m_SessionName = m_ItemName; + char LibName[MAX_PATH]; + if( !*GetEXT(pItemName) ){ + sprintf(LibName, "%s.mml", pItemName); + pItemName = LibName; + } + + m_hLib = ::LoadLibrary(pItemName); + if( m_hLib ){ + + fmmlOpen = (tmmlOpen)GetProc("_mmlOpen"); + fmmlClose = (tmmlClose)GetProc("_mmlClose"); + fmmlSetHandle = (tmmlSetHandle)GetProc("_mmlSetHandle"); + fmmlIsCap = (tmmlIsCap)GetProc("_mmlIsCap"); + fmmlIsConnected = (tmmlIsConnected)GetProc("_mmlIsConnected"); + fmmlGetSessionName = (tmmlGetSessionName)GetProc("_mmlGetSessionName"); + fmmlQuery = (tmmlQuery)GetProc("_mmlQuery"); + fmmlSetFreq = (tmmlSetFreq)GetProc("_mmlSetFreq"); + fmmlLog = (tmmlLog)GetProc("_mmlLog"); + fmmlLogClear = (tmmlLogClear)GetProc("_mmlLogClear"); + fmmlSetPTT = (tmmlSetPTT)GetProc("_mmlSetPTT"); + fmmlOnCopyData = (tmmlOnCopyData)GetProc("_mmlOnCopyData"); + fmmlEventVFO = (tmmlEventVFO)GetProc("_mmlEventVFO"); + + if( m_hLib ){ + if( fmmlOpen(m_hWnd, m_uMsg) ){ + m_Caps = fmmlIsCap(); + } + else { + FreeLib(); + } + } + } + return IsLib(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::SetHandle(HWND hWnd, UINT uMsg) +{ + m_hWnd = hWnd; + m_uMsg = uMsg; + if( !IsLib() ) return; + fmmlSetHandle(hWnd, m_uMsg); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::NotifySession(LPCSTR pSession) +{ + if( pSession ){ + m_Connected = TRUE; + m_SessionName = pSession; + } + else { + m_Connected = FALSE; + } +} +//--------------------------------------------------------------------------- +BOOL __fastcall CMMLink::IsConnected(void) +{ + if( !IsLib() ) return FALSE; + if( m_Caps & capNOTIFYSESSION ) return m_Connected; + return fmmlIsConnected(); +} +//--------------------------------------------------------------------------- +LPCSTR __fastcall CMMLink::GetSessionName(void) +{ + if( !IsLib() ) return NULL; + if( m_Caps & capNOTIFYSESSION ) return m_SessionName.c_str(); + return fmmlGetSessionName(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::Query(LPCSTR pCall) +{ + if( !IsLib() ) return; + fmmlQuery(pCall); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::SetFreq(LPCSTR pFreq) +{ + if( !IsLib() ) return; + fmmlSetFreq(pFreq); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::SetPTT(int ptt) +{ + if( !IsLib() ) return; + fmmlSetPTT(ptt); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::LogWrite(SDMMLOG *sp, int sw) +{ + if( !IsLib() ) return; + mmLOGDATA ml; + ConvFormat(&ml, sp); + fmmlLog(&ml, sw); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::Clear(void) +{ + if( !IsLib() ) return; + fmmlLogClear(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::EventVFO(void) +{ + if( !IsLib() ) return; + fmmlEventVFO(); +} +//--------------------------------------------------------------------------- +LONG __fastcall CMMLink::OnCopyData(HWND hSender, const COPYDATASTRUCT *pcds) +{ + if( !IsLib() ) return FALSE; + if( !(m_Caps & capWMCOPYDATA) ) return FALSE; + return fmmlOnCopyData(hSender, pcds); +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::SetTime(SYSTEMTIME *tp, int sw) +{ + if( sw ){ + m_TimeLogOFF = *tp; + } + else { + m_TimeLogON = *tp; + } +} +//--------------------------------------------------------------------------- +void __fastcall CMMLink::ConvFormat(mmLOGDATA *pLog, const SDMMLOG *sp) +{ + memset(pLog, 0, sizeof(mmLOGDATA)); + + if( sp->btime ) pLog->m_TimeLogON = m_TimeLogON; + if( sp->etime ) pLog->m_TimeLogOFF = m_TimeLogOFF; + StrCopy(pLog->m_Call, sp->call, sizeof(pLog->m_Call)- 1); + strcpy(pLog->m_Mode, Log.GetModeString(sp->mode)); + strcpy(pLog->m_Freq, Log.GetFreqString(sp->band, sp->fq)); + memcpy(pLog->m_His, sp->ur, sizeof(pLog->m_His)); + memcpy(pLog->m_My, sp->my, sizeof(pLog->m_My)); + StrCopy(pLog->m_Name, sp->name, sizeof(pLog->m_Name)- 1); + StrCopy(pLog->m_QTH, sp->qth, sizeof(pLog->m_QTH)- 1); + StrCopy(pLog->m_Pow, sp->pow, sizeof(pLog->m_Pow)- 1); + StrCopy(pLog->m_Note, sp->rem, sizeof(pLog->m_Note)- 1); + StrCopy(pLog->m_QSL, sp->qsl, sizeof(pLog->m_QSL)- 1); + StrCopy(pLog->m_DXCC, sp->opt1, sizeof(pLog->m_DXCC)- 1); + StrCopy(pLog->m_Cont, sp->opt2, sizeof(pLog->m_Cont)- 1); + pLog->m_QSLS = sp->send; + pLog->m_QSLR = sp->recv; +} + + +//*************************************************************************** +// CMMRadio class +//--------------------------------------------------------------------------- +__fastcall CMMRadio::CMMRadio(HWND hWnd, UINT uMsg) +{ + m_hLib = NULL; + m_hWnd = hWnd; + m_uMsg = uMsg; +} +//--------------------------------------------------------------------------- +__fastcall CMMRadio::~CMMRadio() +{ + Close(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMRadio::FreeLib(void) +{ + if( m_hLib ){ + FreeLibrary(m_hLib); + m_hLib = NULL; + } +} +//--------------------------------------------------------------------------- +FARPROC __fastcall CMMRadio::GetProc(LPCSTR pName) +{ + if( !m_hLib ) return NULL; + + FARPROC fn = ::GetProcAddress(m_hLib, pName+1); + if( fn == NULL ){ + fn = ::GetProcAddress(m_hLib, pName); + if( fn == NULL ) FreeLib(); + } + return fn; +} +//--------------------------------------------------------------------------- +void __fastcall CMMRadio::Close(void) +{ + if( IsLib() ){ + fmmrpClose(); + FreeLib(); + } +} +//--------------------------------------------------------------------------- +BOOL __fastcall CMMRadio::Open(LPCSTR pItemName) +{ + Close(); + + m_ItemName = pItemName; + char LibName[MAX_PATH]; + if( !*GetEXT(pItemName) ){ + sprintf(LibName, "%s.mmr", pItemName); + pItemName = LibName; + } + m_hLib = ::LoadLibrary(pItemName); + if( m_hLib ){ + + fmmrpOpen = PROC(mmrpOpen); + fmmrpClose = PROC(mmrpClose); + fmmrpSetHandle = PROC(mmrpSetHandle); + fmmrpGetStatus = PROC(mmrpGetStatus); + fmmrpSetPTT = PROC(mmrpSetPTT); + fmmrpPutChar = PROC(mmrpPutChar); + fmmrpGetChar = PROC(mmrpGetChar); + fmmrpPolling = PROC(mmrpPolling); + fmmrpGetFreq = PROC(mmrpGetFreq); + fmmrpGetDefCommand = PROC(mmrpGetDefCommand); + + if( m_hLib ){ + if( !fmmrpOpen(m_hWnd, m_uMsg) ){ + FreeLib(); + } + } + } + return IsLib(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMRadio::SetHandle(HWND hWnd, UINT uMsg) +{ + m_hWnd = hWnd; + m_uMsg = uMsg; + if( !IsLib() ) return; + fmmrpSetHandle(hWnd, uMsg); +} +//--------------------------------------------------------------------------- +void __fastcall CMMRadio::SetPTT(int ptt) +{ + if( !IsLib() ) return; + fmmrpSetPTT(ptt); +} +//--------------------------------------------------------------------------- +void __fastcall CMMRadio::PutChar(BYTE c) +{ + if( !IsLib() ) return; + fmmrpPutChar(c); +} +//--------------------------------------------------------------------------- +BYTE __fastcall CMMRadio::GetChar(void) +{ + if( !IsLib() ) return 0; + return fmmrpGetChar(); +} +//--------------------------------------------------------------------------- +DWORD __fastcall CMMRadio::GetStatus(void) +{ + if( !IsLib() ) return 0; + return fmmrpGetStatus(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMRadio::Polling(void) +{ + if( !IsLib() ) return; + fmmrpPolling(); +} +//--------------------------------------------------------------------------- +DWORD __fastcall CMMRadio::GetFreq(void) +{ + if( !IsLib() ) return 0; + return fmmrpGetFreq(); +} +//--------------------------------------------------------------------------- +DWORD __fastcall CMMRadio::GetDefCommand(void) +{ + if( !IsLib() ) return 0; + return fmmrpGetDefCommand(); +} + diff --git a/MMlink.h b/MMlink.h new file mode 100644 index 0000000..fd2755e --- /dev/null +++ b/MMlink.h @@ -0,0 +1,154 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + + +#ifndef MMLinkH +#define MMLinkH + +#include "ComLib.h" +#include "LogConv.h" +#include "mml.h" +#include "mmrp.h" + +#define PROC(Key) ((t##Key)GetProc("_" #Key)) + +class CMMList +{ +private: + TStringList *m_pList; + AnsiString m_Name; + int m_FilterLen; +public: + __fastcall CMMList(void); + __fastcall ~CMMList(); +public: // List functions + int __fastcall QueryList(LPCSTR pFilter); + int __fastcall GetCount(void){return m_pList->Count;}; + LPCSTR __fastcall GetItemName(int n); + LPCSTR __fastcall GetFileName(int n); + int __fastcall IndexOf(LPCSTR pKey); + inline BOOL __fastcall IsQuery(void){return m_pList != NULL;}; +}; + +class CMMLink +{ +private: + AnsiString m_ItemName; + + HWND m_hWnd; + UINT m_uMsg; + + //HANDLE m_hLib; + HINSTANCE m_hLib; //ja7ude 0522 + DWORD m_Caps; + + int m_Connected; + AnsiString m_SessionName; + + SYSTEMTIME m_TimeLogON; + SYSTEMTIME m_TimeLogOFF; +private: + tmmlOpen fmmlOpen; + tmmlClose fmmlClose; + tmmlSetHandle fmmlSetHandle; + tmmlIsCap fmmlIsCap; + tmmlIsConnected fmmlIsConnected; + tmmlGetSessionName fmmlGetSessionName; + tmmlQuery fmmlQuery; + tmmlSetFreq fmmlSetFreq; + tmmlLog fmmlLog; + tmmlLogClear fmmlLogClear; + tmmlSetPTT fmmlSetPTT; + tmmlOnCopyData fmmlOnCopyData; + tmmlEventVFO fmmlEventVFO; +private: + void __fastcall FreeLib(void); + FARPROC __fastcall GetProc(LPCSTR pName); + void __fastcall ConvFormat(mmLOGDATA *pLog, const SDMMLOG *sp); +public: + __fastcall CMMLink(HWND hWnd, UINT uMsg); + __fastcall ~CMMLink(); +public: // LogLink functions + BOOL __fastcall Open(LPCSTR pLibName); + void __fastcall Close(void); + void __fastcall SetHandle(HWND hWnd, UINT uMsg); + inline BOOL __fastcall IsLib(void){ return (m_hLib != NULL);}; + inline LPCSTR __fastcall GetItemName(void){return m_ItemName.c_str();}; + + void __fastcall NotifySession(LPCSTR pSession); + + BOOL __fastcall IsConnected(void); + LPCSTR __fastcall GetSessionName(void); + void __fastcall Query(LPCSTR pCall); + void __fastcall SetFreq(LPCSTR pFreq); + void __fastcall SetPTT(int ptt); + void __fastcall LogWrite(SDMMLOG *sp, int sw); + void __fastcall Clear(void); + void __fastcall EventVFO(void); + LONG __fastcall OnCopyData(HWND hSender, const COPYDATASTRUCT *pcds); + inline DWORD __fastcall GetCaps(void){return m_Caps;}; + void __fastcall SetTime(SYSTEMTIME *tp, int sw); + +}; + + +class CMMRadio +{ +private: + AnsiString m_ItemName; + + //HANDLE m_hLib; //ja7ude 0522 + HINSTANCE m_hLib; + HWND m_hWnd; + UINT m_uMsg; + +private: + tmmrpSetHandle fmmrpSetHandle; + tmmrpOpen fmmrpOpen; + tmmrpClose fmmrpClose; + tmmrpGetStatus fmmrpGetStatus; + tmmrpSetPTT fmmrpSetPTT; + tmmrpPutChar fmmrpPutChar; + tmmrpGetChar fmmrpGetChar; + tmmrpPolling fmmrpPolling; + tmmrpGetFreq fmmrpGetFreq; + tmmrpGetDefCommand fmmrpGetDefCommand; + +private: + void __fastcall FreeLib(void); + FARPROC __fastcall GetProc(LPCSTR pName); +public: + __fastcall CMMRadio(HWND hWnd, UINT uMsg); + __fastcall ~CMMRadio(); +public: + void __fastcall SetHandle(HWND hWnd, UINT uMsg); + BOOL __fastcall Open(LPCSTR pLibName); + void __fastcall Close(void); + inline BOOL __fastcall IsLib(void){ return (m_hLib != NULL);}; + inline LPCSTR __fastcall GetItemName(void){return m_ItemName.c_str();}; + + void __fastcall SetPTT(int ptt); + void __fastcall PutChar(BYTE c); + BYTE __fastcall GetChar(void); + DWORD __fastcall GetStatus(void); + void __fastcall Polling(void); + DWORD __fastcall GetFreq(void); + DWORD __fastcall GetDefCommand(void); +}; +#endif diff --git a/MacroKey.cpp b/MacroKey.cpp new file mode 100644 index 0000000..3a7c357 --- /dev/null +++ b/MacroKey.cpp @@ -0,0 +1,193 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "MacroKey.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TMacroKeyDlg *MacroKeyDlg; +MACKEY mackeycom[]={ + {1, "_","ƒ}[ƒNM†‚Ì‘—M","Transmit a mark signal"}, + {1, "~","AFSKƒLƒƒƒŠƒA’âŽ~","Stop AFSK carrier"}, + {1, "[","Diddle‚̋֎~","Disable diddle"}, + {1, "]","Diddle‚Ì‹–‰Â","Enable diddle"}, + {1, "%m","My callsign", NULL}, + {1, "%c","His/her callsign", NULL}, + {1, "%r","His/her RST", NULL}, + {1, "%n","His/her name", NULL}, + {1, "%q","His/her QTH", NULL}, + {1, "%s","My RST", NULL}, + {1, "%R","His/her RST‚ÌRST•”•ª‚Ì‚Ý","Only the RST part of his/her RST"}, + {1, "%N","His/her RST‚̃Rƒ“ƒeƒXƒgƒiƒ“ƒo•”•ª‚Ì‚Ý","Only the contest number part of his/her RST"}, + {1, "%M","My RST‚̃Rƒ“ƒeƒXƒgƒiƒ“ƒo•”•ª‚Ì‚Ý","Only the contest number part of my RST"}, + {1, "%g","GOOD MORNING/AFTERNOON/EVENING", NULL}, + {1, "%f","GM/GA/GE", NULL}, + {1, "%L","LTRƒR[ƒh‚Ì‹­§‘—M","Force transmit LTR code"}, + {1, "%F","FIGƒR[ƒh‚Ì‹­§‘—M","Force transmit FIG code"}, + {1, "%D","UTC date (e.g., 2000-SEP-05)", NULL}, + {1, "%T","UTC time (e.g., 12:34)", NULL}, + {1, "%t","UTC time (e.g., 1234)", NULL}, + {1, "%x","Only the 1st number(001) for BARTG", NULL}, + {1, "%y","Only the 2nd number(UTC) for BARTG", NULL}, + {1, "%{","CWID (e.g., %{DE %m})", NULL}, + {-1, "","", ""}, + {0, NULL, NULL}, +}; +MACKEY mackeybtn[]={ + {3, "\\","擪‚É‹Lq‚µ‚ÄTxWindowŒo—R‚Å‘—M","Sends via the TX window (at the top)"}, + {2, "\\","––”ö‚É‹Lq‚µ‚ÄŽóM‚ÉØ‚è‚©‚¦‚é","Switches to receive (at the last)"}, + {3, "#","擪‚É‹Lq‚µ‚ÄTxWindow‚É‘S•¶‚ðƒRƒs[","Copies the message to the TX window (at the top)"}, + {2, "#","––”ö‚É‹Lq‚µ‚ÄŒJ‚è•Ô‚µ","Repeats the macro (at the last)"}, + {0, NULL, NULL}, +}; +MACKEY mackeymsg[]={ + {3, "\\","擪‚É‹Lq‚µ‚ÄTxWindow‚ðƒNƒŠƒA","Clears the TX window (at the top)"}, + {2, "\\","––”ö‚É‹Lq‚µ‚ÄŽóM‚ÉØ‚è‚©‚¦‚é","Switches to receive (at the last)"}, + {3, "#","擪‚É‹Lq‚µ‚Ä‘—M‚ÉØ‚è‚©‚¦‚é","Switches to transmit (at the top)"}, + {1, "^","–ñ‚P•bŠÔ‚Ì’âŽ~","Wait for 1 second"}, + {0, NULL, NULL}, +}; +MACKEY mackeyusr[]={ + {2, "\\","––”ö‚É‹Lq‚µ‚ÄŽóM‚ÉØ‚è‚©‚¦‚é","Switches to receive (at the last)"}, + {0, NULL, NULL}, +}; +static int PosPos; //JA7UDE 0428 +static int TopPos; +//--------------------------------------------------------------------- +__fastcall TMacroKeyDlg::TMacroKeyDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + CancelBtn->Caption = "Cancel"; + } +} +//--------------------------------------------------------------------- +void __fastcall TMacroKeyDlg::UpdateUI(int row) +{ + int r = row - 1; + if( r >= 0 ){ + r = mackey[r].r; + if( r == -1 ){ + OKBtn->Caption = (Font->Charset != SHIFTJIS_CHARSET) ? "Execute" : "ŽÀs"; + } + else { + OKBtn->Caption = (Font->Charset != SHIFTJIS_CHARSET) ? "Insert" : "‘}“ü"; + } + OKBtn->Enabled = TRUE; + } + else { + OKBtn->Caption = (Font->Charset != SHIFTJIS_CHARSET) ? "Insert" : "‘}“ü"; + OKBtn->Enabled = FALSE; + } +} +//--------------------------------------------------------------------- +int __fastcall TMacroKeyDlg::AddMacKey(MACKEY *mp, int n) +{ + for( ; mp->r; mp++, n++ ){ + mackey[n] = *mp; + } + return n; +} +//--------------------------------------------------------------------- +int __fastcall TMacroKeyDlg::Execute(AnsiString &as, int sw) +{ + int n = 0; + switch(sw){ + case 0: + n = AddMacKey(mackeymsg, n); + break; + case 1: + n = AddMacKey(mackeybtn, n); + break; + case 2: + n = AddMacKey(mackeyusr, n); + break; + } + n = AddMacKey(mackeycom, n); + Grid->RowCount = 1 + n; + if( (PosPos > 0) && (PosPos < Grid->RowCount) ){ + Grid->Row = PosPos; + Grid->TopRow = TopPos; + } + UpdateUI(Grid->Row); + int r = ShowModal(); + PosPos = Grid->Row; + TopPos = Grid->TopRow; + if( r == IDOK ){ + if( PosPos ){ + r = PosPos - 1; + as = mackey[r].pKey; + return mackey[r].r; + } + } + return 0; +} +//--------------------------------------------------------------------- +void __fastcall TMacroKeyDlg::GridDrawCell(TObject *Sender, int Col, int Row, + TRect &Rect, TGridDrawState State) +{ + char bf[256]; + + Grid->Canvas->FillRect(Rect); + int X = Rect.Left + 4; + int Y = Rect.Top + 2; + + if( Row ){ + Row--; + bf[0] = 0; + LPCSTR pCom; + switch(Col){ + case 0: + strcpy(bf, mackey[Row].pKey); + break; + case 1: + if( Font->Charset != SHIFTJIS_CHARSET ){ + pCom = mackey[Row].pEng; + if( pCom == NULL ){ + pCom = mackey[Row].pJpn; + } + } + else { + pCom = mackey[Row].pJpn; + } + strcpy(bf, pCom); + break; + } + Grid->Canvas->TextOut(X, Y, bf); + } + else { // ƒ^ƒCƒgƒ‹ + LPCSTR _tt[]={ + "Key","Comments", + }; + Grid->Canvas->TextOut(X, Y, _tt[Col]); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMacroKeyDlg::GridSelectCell(TObject *Sender, int Col, + int Row, bool &CanSelect) +{ + UpdateUI(Row); +} +//--------------------------------------------------------------------------- diff --git a/MacroKey.dfm b/MacroKey.dfm new file mode 100644 index 0000000000000000000000000000000000000000..d00cb246fa9fc290f9f0448a9e5d1a245758ebd0 GIT binary patch literal 818 zcmZuvO^?$s5Othw^GSELX9W8PKtUjJ;MAtuZE3rynurw#KD^0n8p*XQ$5nSZaOF2} z;5TqVLgLCV;=nmLPNRav#q#rv-@G?7m5Y*jKU_xB^Vh@K1qx2?n+PR~QQ#+Yk_tYB zyCKcJzwSpfxRK^>WF~xrsW;#v0};zR3YL9c4huqgZiQqc3(mSd{qZd2>os9n>4&rc zCdW|ZD`~zlyarztnOvElj84cY7nYOKfn+0+fcsv;;FDLQ4aNJ+U z=ZV{d^(Q~2R|U)XE`eL==|EEk|8g|CBx^Xe5kilur_~t>s&B#f;AikPXjrrZ5A`CN zg#w6#sP^U93tkqr6|1-5aVh{Ka8+Jmj zwLq*4wTwq%`nz^O>@b&>wvu1zZ3C literal 0 HcmV?d00001 diff --git a/MacroKey.h b/MacroKey.h new file mode 100644 index 0000000..f90f95f --- /dev/null +++ b/MacroKey.h @@ -0,0 +1,71 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef MacroKeyH +#define MacroKeyH +//---------------------------------------------------------------------------- +/* JA7UDE 0428 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +#include +#include +#include +#include +//---------------------------------------------------------------------------- +typedef struct { + int r; + LPCSTR pKey; + LPCSTR pJpn; + LPCSTR pEng; +}MACKEY; + +class TMacroKeyDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TStringGrid *Grid; + void __fastcall GridDrawCell(TObject *Sender, int Col, int Row, TRect &Rect, + TGridDrawState State); + void __fastcall GridSelectCell(TObject *Sender, int Col, int Row, + bool &CanSelect); +private: + MACKEY mackey[32]; + int __fastcall AddMacKey(MACKEY *mp, int n); + void __fastcall UpdateUI(int row); + +public: + virtual __fastcall TMacroKeyDlg(TComponent* AOwner); + + int __fastcall Execute(AnsiString &as, int sw); +}; +//---------------------------------------------------------------------------- +//extern TMacroKeyDlg *MacroKeyDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/Main.cpp b/Main.cpp new file mode 100644 index 0000000..1e87491 --- /dev/null +++ b/Main.cpp @@ -0,0 +1,9893 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +#include "clipbrd.hpp" +#include + +#include "MMSYSTEM.H" +#include "Main.h" +#include "Scope.h" +#include "Option.h" +#include "EditDlg.h" +#include "TextEdit.h" +#include "LogList.h" +#include "LogLink.h" +#include "QsoDlg.h" +#include "Country.h" +#include "Mmcg.h" +#include "VerDsp.h" +#include "LogConv.h" +#include "PlayDlg.h" +#include "ShortCut.h" +#include "LogSet.h" +#include "SetHelp.h" +#include "TncSet.h" +#include "InputWin.h" + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TMmttyWd *MmttyWd; +UINT MSG_MMTTY; +HWND APP_HANDLE; +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OnMSG(tagMSG &Msg, bool &Handled) +{ +/* +Msg.hwnd := Handle; +Msg.message := WM_KEYDOWN; +Msg.wParam := Message.WParam; +Msg.lParam := Message.LParam;*/ + if( Msg.message != MSG_MMTTY ) return; + + RemoteMMTTY(Msg); + Handled = true; +} +//ƒEƒCƒ“ƒhƒEƒƒbƒZ[ƒW‚̃nƒ“ƒhƒ‰--------------------------------------------- +void __fastcall TMmttyWd::WndProc(TMessage &Message) +{ + switch(Message.Msg){ + case WM_COPYDATA: + WndCopyData(Message); + break; + case CM_CTNC: + OnTncEvent(Message); + break; + default: + TForm::WndProc(Message); + break; + } +} +//--------------------------------------------------------------------------- +// WM_COPYDATA‚̈— +void __fastcall TMmttyWd::WndCopyData(TMessage &Message) +{ + COPYDATASTRUCT *cp = (COPYDATASTRUCT *)Message.LParam; + if( LogLink.IsCopyData() ){ + Message.Result = LogLink.m_pLink->OnCopyData(HWND(Message.WParam), cp); + return; + } + switch(cp->dwData){ + case 0: + case 1: // Hamlog‚©‚ç‚Ì•ÔM + if( sys.m_LogLink != 1 ) return; + switch(LogLink.AnaData(&Log.m_sd, cp)){ + case 115: + UpdateTextData(); + break; + case 106: + Freq->Text = Log.GetFreqString(Log.m_sd.band, Log.m_sd.fq); + break; + } + Message.Result = TRUE; + break; + case 0x80001212: // Žü”g”ƒf[ƒ^‚ÌŽw’è + if( cp->cbData && (cp->lpData != NULL) ){ + char bf[16]; + int len = cp->cbData; + if( len > 15 ) len = 15; + memcpy(bf, cp->lpData, len); + bf[len] = 0; + Freq->Text = bf; + } + Message.Result = TRUE; + break; + default: + Message.Result = FALSE; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OnActivate(TObject *Sender) +{ + if( m_OptionDialog ) return; + if( Remote & REMDISFOCUS ) return; + if( APP_HANDLE != HWND_BROADCAST ) ::SetForegroundWindow(APP_HANDLE); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OnRestore(TObject *Sender) +{ + if( m_OptionDialog ) return; + if( Remote & REMSHOWOFF ){ + if( APP_HANDLE != HWND_BROADCAST ){ + if( !(Remote & REMDISFOCUS) ) ::SetForegroundWindow(APP_HANDLE); + Hide(); + } + } +} +//--------------------------------------------------------------------------- +__fastcall TMmttyWd::TMmttyWd(TComponent* Owner) + : TForm(Owner) +{ + ::VirtualLock(this, sizeof(TMmttyWd)); + ::VirtualLock(&sys, sizeof(sys)); + + pSound = NULL; + pAndyMenu = NULL; + pTnc = NULL; + pRadio = NULL; + pComm = NULL; + p_SendFileDlg = NULL; + hMap = NULL; + pMap = NULL; + MSG_MMTTY=0; + APP_HANDLE = HWND_BROADCAST; + + lcid = GetThreadLocale() & 0x00ff; + if( lcid != LANG_JAPANESE ){ + sys.m_WinFontName = "Times New Roman"; + sys.m_WinFontCharset = ANSI_CHARSET; + sys.m_BtnFontName = "Courier New"; + sys.m_BtnFontCharset = ANSI_CHARSET; + sys.m_FontName = "Courier New"; + sys.m_FontCharset = ANSI_CHARSET; + Log.m_LogSet.m_TimeZone = 'Z'; + sys.m_TimeStampUTC = 1; + sys.m_HTMLHelp = "KB2EOQ.htm"; + KENT->Checked = FALSE; + sys.m_LWait = 2; + sys.m_LogLink = 0; + } + else { + sys.m_WinFontName = "‚l‚r ‚oƒSƒVƒbƒN"; + sys.m_WinFontCharset = SHIFTJIS_CHARSET; + sys.m_BtnFontName = "‚l‚r ƒSƒVƒbƒN"; + sys.m_BtnFontCharset = SHIFTJIS_CHARSET; + sys.m_FontName = "‚l‚r ƒSƒVƒbƒN"; + sys.m_FontCharset = SHIFTJIS_CHARSET; + sys.m_TimeStampUTC = 0; + sys.m_HTMLHelp = ""; + KENT->Checked = TRUE; + sys.m_LWait = 0; + sys.m_LogLink = 1; + } + sys.m_WinFontStyle = 0; + sys.m_BtnFontStyle = 0; + sys.m_Help = "Mmtty.txt"; + sys.m_HelpLog = "Mmttylog.txt"; + sys.m_HelpDigital = "Digital.txt"; + sys.m_HelpFontName = "‚l‚r ƒSƒVƒbƒN"; + sys.m_HelpFontCharset = SHIFTJIS_CHARSET; + sys.m_HelpFontSize = 10; + sys.m_HelpNotePad = 0; + + DWORD dwVersion = ::GetVersion(); + if( dwVersion < 0x80000000 ){ + + //AA6YQ 1.66G distinguish Vista from XP + + OSVERSIONINFO osvi; + + ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + + GetVersionEx(&osvi); + if (osvi.dwMajorVersion == 5) { + WinNT = TRUE; + WinVista=FALSE; + } + else { + WinNT = FALSE; + WinVista=TRUE; + } + } + else { + WinNT = FALSE; + WinVista=FALSE; + } + + EntryAlignControl(); + InitCOMMPara(); + InitTNCPara(); + InitRADIOPara(); + sys.m_DefFix45 = TRUE; + m_BARTGTimer = 0; + m_XYSize = 0; + m_XYQuality = 0; + m_PanelSize = 2; + m_DemType = -1; + m_LpfType = -1; + m_InitFirst = TRUE; + DisPaint = TRUE; + m_MacroStat = 0; + m_Macro = 0; + m_filemode = -1; + m_PaletteQuery = 0; + m_ReqRecv = 0; + m_NameQTH = 0; + m_Ctrl = 0; + m_ReqPaletteChange = 0; + m_FifoOutTimer = 0; + m_Dupe = 0; + m_Running = 0; + m_SendWay = 0; + m_DisAlign = 0; + m_BefHeight = ClientHeight; + m_Baud = m_ShowBaud = 0; + m_RemoteTimer = 0; + m_RemoteDelay = 0; + m_OptionDialog = 0; + m_hOptionWnd = NULL; + m_MacTimer = 0; + m_FIGTimer = 0; + Remote = 0; + m_pRemOpenName = NULL; + m_PttTimerCount = 0; + m_PttTimer = 60; + + InitRemoteStat(); + + m_RxMarkFreq = 2125.0; + m_RxSpaceFreq = 2125.0+170.0; + + StartOption(); + + pBitmapFFTIN = new Graphics::TBitmap(); + pBitmapFFTIN->Width = PBoxFFTIN->Width; + pBitmapFFTIN->Height = PBoxFFTIN->Height; + + pBitmapWater = new Graphics::TBitmap(); + pBitmapWater->Width = PBoxWater->Width; + pBitmapWater->Height = PBoxWater->Height; + + pBitmapXY = new Graphics::TBitmap(); + pBitmapXY->Width = PBoxXY->Width; + pBitmapXY->Height = PBoxXY->Height; + + pBitmapSQ = new Graphics::TBitmap(); + pBitmapSQ->Width = PBoxSQ->Width; + pBitmapSQ->Height = PBoxSQ->Height; + + pBitmapRx = NULL; + pBitmapIn = NULL; + + sys.m_DisTX = 0; + sys.m_DisWindow = 0; + sys.m_StayOnTop = 0; + sys.m_WindowState = wsNormal; + int i; + char bf[256]; + for( i = 0; i < 16; i++ ){ + sprintf(bf, "M%u", i+1); + sys.m_UserName[i] = bf; + sys.m_User[i] = ""; + sys.m_UserKey[i] = 0; + sys.m_UserEditKey[i] = 0; + sys.m_UserCol[i] = clBlack; + sys.m_UserTimer[i] = 0; + } + sys.m_User[0] = "__\r\n%c DE %m %m K\r\n_\\"; + sys.m_UserName[0] = "1X2"; + sys.m_User[1] = "__\r\n%c %c DE %m %m %m K\r\n_\\"; + sys.m_UserName[1] = "2X3"; + sys.m_User[2] = "__\r\nDE %m %m %m K\r\n_\\"; + sys.m_UserName[2] = "DE3"; + sys.m_User[3] = "__\r\nQSL UR 599-599 TU\r\n_\\"; + sys.m_UserName[3] = "UR599"; + sys.m_User[4] = "__\r\nOK TNX %n\r\nUR %r %r NAME MAKO %c DE %m TU SK\r\n_\\"; + sys.m_UserName[4] = "QANS"; + sys.m_User[8] = "\\\r\n73 TU SK SK\r\n%{TU}\\"; + sys.m_UserName[8] = "SK"; + sys.m_User[9] = "[__~~__~\\"; + sys.m_UserName[9] = "EE"; + sys.m_User[12] = "\r\nRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY#"; + sys.m_UserName[12] = "RY"; + sys.m_User[14] = "__\r\nRYRY CQ CQ CQ DE %m %m %m\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\"; + sys.m_UserName[14] = "CQ2"; + sys.m_User[15] = "__\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\"; + sys.m_UserName[15] = "CQ1"; + + sys.m_UserKey[0] = '1'+0x100; + sys.m_UserKey[1] = '2'+0x100; + sys.m_UserKey[2] = '3'+0x100; + sys.m_UserKey[3] = '4'+0x100; + sys.m_UserKey[4] = '5'+0x100; + sys.m_UserKey[5] = '6'+0x100; + sys.m_UserKey[6] = '7'+0x100; + sys.m_UserKey[7] = '8'+0x100; + sys.m_UserKey[8] = '9'+0x100; + sys.m_UserKey[9] = VK_F10; + sys.m_UserKey[10] = VK_F11; + sys.m_UserKey[11] = VK_F12; + sys.m_UserKey[14] = VK_F7; + sys.m_UserKey[15] = VK_F6; + + sys.m_MsgList[0] = "\\__\r\nRGR %c DE %m %g DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c DE %m KN\r\n_\\"; + sys.m_MsgList[1] = "\\__\\"; + sys.m_MsgList[2] = "\\__\r\nTNX AGAIN DEAR %n CU SK\r\n__\\"; + sys.m_MsgList[3] = "\\__\r\nOK DEAR %n\r\nMANY THANK YOU FOR THE NICE QSO.\r\nI AM LOOKING FORWARD TO SEE YOU AGAIN ON CW AND PSK31.\r\nCUL! AND BEST 73\r\n%c DE %m TU SK SK..\r\n__"; + sys.m_MsgList[4] = "\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\"; + sys.m_MsgList[5] = "\\__\r\n%c %c DE %m %g\r\nTHANK YOU FOR YOUR CALL. I AM GLAD TO SEE YOU ON RTTY.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c %c DE %m KN\r\n_\\"; + sys.m_MsgList[6] = "\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE INFO.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\"; + sys.m_MsgList[7] = "\\__\r\nRGR TNX %n\r\nUR %r %r %r NAME IS MAKO MAKO MAKO\r\nHOW? BTU %c DE %m KN\r\n_\\"; + sys.m_MsgList[8] = "\\__\r\nOK DEAR %n\r\nTNX FB QSO, CUL BEST 73 %c DE %m TU SK..\r\n__\\"; + + sys.m_MsgName[0] = "AF CALL1"; + sys.m_MsgName[1] = "FINAL3"; + sys.m_MsgName[2] = "FINAL2"; + sys.m_MsgName[3] = "FINAL"; + sys.m_MsgName[4] = "AF CQ2 (GEAR)"; + sys.m_MsgName[5] = "AF CQ1"; + sys.m_MsgName[6] = "AF CALL2 (GEAR)"; + sys.m_MsgName[7] = "AF CALL1 (QUICK)"; + sys.m_MsgName[8] = "FINAL (QUICK)"; + + sys.m_MsgKey[0] = VK_F1 + 0x100; + sys.m_MsgKey[1] = VK_F2 + 0x100; + sys.m_MsgKey[2] = VK_F3 + 0x100; + sys.m_MsgKey[3] = VK_F4 + 0x100; + sys.m_MsgKey[4] = VK_F5 + 0x100; + sys.m_MsgKey[5] = VK_F6 + 0x100; + sys.m_MsgKey[6] = VK_F7 + 0x100; + sys.m_MsgKey[7] = VK_F8 + 0x100; + sys.m_MsgKey[8] = VK_F9 + 0x100; + + sys.m_InBtn[0] = "%c DE %m"; + sys.m_InBtnName[0] = "1X1"; + sys.m_InBtn[1] = "DEAR %n"; + sys.m_InBtnName[1] = "DEAR"; + sys.m_InBtn[2] = "\__\r\nRGR %c DE %m ALL OK DEAR %n\r\n"; + sys.m_InBtnName[2] = "ANS"; + sys.m_InBtn[3] = "BTU %c DE %m KN\r\n_\\"; + sys.m_InBtnName[3] = "BTU"; + sys.m_InBtnKey[0] = VK_F2; + sys.m_InBtnKey[1] = VK_F3; + sys.m_InBtnKey[2] = VK_F4; + sys.m_InBtnKey[3] = VK_F5; + sys.m_InBtnCol[0] = clBlack; + sys.m_InBtnCol[1] = clBlack; + sys.m_InBtnCol[2] = clBlack; + sys.m_InBtnCol[3] = clBlack; + + sys.m_MacroImm = 0; + + sys.m_ExtCmd[0] = ""; + sys.m_ExtCmd[1] = ""; + sys.m_ExtCmd[2] = ""; + sys.m_ExtCmd[3] = ""; + + KExtCmd1->Caption = "G3PLX PSK31SBW"; + KExtCmd2->Caption = "IZ8BLY Hellschreiber"; + + sys.m_FontAdjSize = 0; + sys.m_BtnFontAdjSize = 0; + + memset(sys.m_SysKey, 0, sizeof(sys.m_SysKey)); + sys.m_SysKey[kkPlayPos] = 'A' + 0x100; + sys.m_SysKey[kkScope] = 'O' + 0x100; + sys.m_SysKey[kkLogList] = 'L' + 0x100; + sys.m_SysKey[kkQSOData] = 'D' + 0x100; + + sys.m_SysKey[kkTX] = VK_F9; + sys.m_SysKey[kkTXOFF] = VK_F8; + sys.m_SysKey[kkCall] = 'C' + 0x100; + sys.m_SysKey[kkName] = 'N' + 0x100; + sys.m_SysKey[kkQTH] = 'Q' + 0x100; + sys.m_SysKey[kkRST] = 'R' + 0x100; + sys.m_SysKey[kkFreq] = 'B' + 0x100; + sys.m_SysKey[kkFind] = 'F' + 0x100; + sys.m_SysKey[kkClear] = VK_F1; + + sys.m_SysKey[kkInHome] = VK_HOME; + sys.m_SysKey[kkInEnd] = VK_END; + + sys.m_SysKey[kkRxPUp] = VK_PRIOR; + sys.m_SysKey[kkRxPDown] = VK_NEXT; + + sys.m_SysKey[kkInHeightUp]= VK_UP | 0x100; + sys.m_SysKey[kkInHeightDown] = VK_DOWN | 0x100; + + sys.m_SysKey[kkPanel] = 'C' + 0x200; + sys.m_SysKey[kkTxLTR] = 'L' + 0x200; + + sys.m_SysKey[kkDecShift] = VK_LEFT + 0x200; + sys.m_SysKey[kkIncShift] = VK_RIGHT + 0x200; + sys.m_SysKey[kkToggleShift] = 'T' + 0x200; + + sys.m_SysKey[kkCList] = 'F' + 0x200; + + sys.m_Call = "NOCALL"; + sys.m_TxRxName = "NONE"; + sys.m_TxRxInv = 0; + + sys.m_TxNet = 1; + sys.m_Rev = 0; + sys.m_TxDisRev = 0; + sys.m_TxPort = txSound; + sys.m_TxdJob = 0; + sys.m_TxFixShift = 0; + sys.m_echo = 1; + + sys.m_FFTGain = 1; + sys.m_FFTResp = 2; + + sys.m_ColorRXBack = clWhite; + sys.m_ColorRX = clBlack; + sys.m_ColorRXTX = clRed; + sys.m_ColorINBack = clWhite; + sys.m_ColorIN = clBlack; + sys.m_ColorINTX = clRed; + + sys.m_ColorLow = clBlack; + sys.m_ColorHigh = clWhite; + + sys.m_ColorXY = clWhite; + + sys.m_SoundFifoRX = 12; + sys.m_SoundFifoTX = 4; + sys.m_SoundDevice = -1; + sys.m_SoundOutDevice=-1; //AA6YQ 1.66 + sys.m_SoundPriority = 1; + sys.m_SoundStereo = 0; + + sys.m_txuos = 1; + sys.m_dblsft = 0; + + sys.m_AFC = 1; + sys.m_FixShift = 1; + sys.m_AFCTime = 8.0; + sys.m_AFCSweep = 1.0; + sys.m_AFCSQ = 32; + + sys.m_LimitGain = 200.0; + + sys.m_DefMarkFreq = 2125.0; + sys.m_DefShift = 170.0; + sys.m_DefStopLen = 0; + + sys.m_log = 0; + sys.m_LogName = ""; + sys.m_logTimeStamp = 1; + sys.m_ShowTimeStamp = 1; + +// sys.m_FontName = "‚l‚r ƒSƒVƒbƒN"; +// sys.m_FontCharset = SHIFTJIS_CHARSET; + sys.m_FontAdjX = 0; + sys.m_FontAdjY = 0; + sys.m_FontSize = 10; + sys.m_FontZero = 1; + sys.m_FontStyle = 0; + + sys.m_FontAdjSize = 0; + + sys.d_PaletteMask = 0x00000000; + sys.m_Palette = 0; + + sys.m_XYInv = 0; + + sys.m_SBFontSize = SBM1->Font->Size; + sys.m_SBINFontSize = SBIN1->Font->Size; + KHint->Checked = TRUE; + + sys.m_CharLenFile = 1024; + + sys.m_AutoTimeOffset = 0; + sys.m_TimeOffset = 0; + sys.m_TimeOffsetMin = 0; +// Panel2->Top = GroupBox1->Height + 1; // ŽóM‰æ–ʃTƒCƒY‚Ì’²® + UpdatePanel(); + LogLink.SetHandle(Handle, CM_CMML); + + ReadSampFreq(); + pSound = new TSound(TRUE); + WriteProfile(1025, "Default", TRUE); // ƒfƒtƒHƒ‹ƒgƒpƒ‰ƒ[ƒ^‚Ì‹L‰¯ + ReadRegister(); + WriteProfile(1026, "Return to the startup", TRUE); // ƒfƒtƒHƒ‹ƒgƒpƒ‰ƒ[ƒ^‚Ì‹L‰¯ + sprintf(bf, "%s"HELPNAME_A, BgnDir); + if( (sys.m_HTMLHelp == HELPNAME_A)||(sys.m_HTMLHelp == HELPNAME_B) ){ + sys.m_HTMLHelp = ""; + } + if( IsFile(bf) ){ + sys.m_HTMLHelp = HELPNAME_A; + JanHelp = bf; + } + else { + sprintf(bf, "%s"HELPNAME_B, BgnDir); + if( IsFile(bf) ){ + sys.m_HTMLHelp = HELPNAME_B; + JanHelp = bf; + } + } +#if 0 + if( !strcmpi(GetEXT(sys.m_HTMLHelp.c_str()), "HLP") || !strcmpi(GetEXT(sys.m_HTMLHelp.c_str()), "CHM") ){ + sprintf(bf, "%s%s", BgnDir, sys.m_HTMLHelp.c_str()); + if( (fp = fopen(bf, "rb"))!=NULL ){ + fclose(fp); + JanHelp = bf; + } + } +#endif +#if 0 + sprintf(bf, "%sReadme.txt", BgnDir); + fp = fopen(bf, "rb"); + if( fp != NULL ){ + fclose(fp); + } + else { + KMHelp->Remove(KRM); + } +#endif + + if( sys.m_AutoTimeOffset ) SetTimeOffsetInfo(sys.m_TimeOffset, sys.m_TimeOffsetMin); + AddHelpMenu(); + UpdateSystemFont(); + + InitColorTable(sys.m_ColorLow, sys.m_ColorHigh); + PrintText.SetPaintBox(PBoxRx, ScrollBarRx); + FifoEdit.SetPaintBox(PBoxIn, ScrollBarIn); + PrintText.SetCursor(1); + rtty.SetCodeSet(); rttysub.SetCodeSet(); + + if( sys.m_log ){ + PrintText.MakeLogName(); + PrintText.OpenLogFile(); + if( sys.m_logTimeStamp ) PrintText.TrigTimeStamp("MMTTY Startup"); + } + m_DisEvent = 1; + if( !Remote ){ + UpdateMsgList(); + UpdateItem(); + UpdateMacro(); + UpdateMacroShow(0); + UpdateUI(); + UpdateLMS(); + UpdateRecentMenu(); + UpdateRev(); + UpdateShortCut(TRUE); + UpdateStayOnTop(); + UpdateLWait(); + } + if( !Remote ){ + if( int(WindowState) != sys.m_WindowState ) WindowState = TWindowState(sys.m_WindowState); + } + Application->OnIdle = OnIdle; + if( Remote ){ + sys.m_DisTX = 0; + UpdateRemort(); + UpdateItem(); + UpdateUI(); + UpdateLMS(); + UpdateStayOnTop(); + if( Remote & REMSHOWOFF ){ + Application->ShowMainForm = FALSE; + FormPaint(NULL); + } + else if( Remote & REMNOMOVE ){ + Application->ShowMainForm = FALSE; + FormPaint(NULL); + } + } + ReadProfileList(); +} + +__fastcall TMmttyWd::~TMmttyWd() +{ + if( hMap != NULL ){ + if( pMap != NULL ){ + ::UnmapViewOfFile(pMap); + } + ::CloseHandle(hMap); + hMap = NULL; + } + pMap = NULL; +} + +void __fastcall TMmttyWd::StartOption(void) +{ + AnsiString as = ParamStr(0).c_str(); + SetDirName(BgnDir, as.c_str()); + m_strCommonMemory = "MMTTY"; + m_cRemoteTimeout = 100; + + for( int i = 0; i <= ParamCount(); i++ ){ + as = ParamStr(i).c_str(); + LPCSTR p = as.c_str(); + if( as == "-r" ){ + Remote = 0x80000000|REMMENU|REMCTRL; + ClientWidth = 640; + ClientHeight = 180; + } + else if( as == "-u" ){ + Remote = 0x80000000|REMCTRL; + ClientWidth = 640; + ClientHeight = 150; + } + else if( as == "-s" ){ + Remote = 0x80000000|REMMENU; + ClientWidth = 300; + ClientHeight = 180; + } + else if( as == "-t" ){ + Remote = 0x80000000; + ClientWidth = 300; + ClientHeight = 150; + } + else if( as == "-f" ){ + BorderStyle = bsSingle; + } + else if( as == "-m" ){ + Remote = 0x80000000 | REMSHOWOFF; + } + else if( as == "-d" ){ + if( Remote ){ + BorderStyle = bsNone; + Remote |= REMNOMOVE; + } + } + else if( as == "-p" ){ + if( Remote ){ + Remote |= REMNOPTT; + } + } + else if( as == "-n" ){ + if( Remote ){ + Remote |= REMNOCNV; + } + } + else if( as == "-a" ){ + if( Remote ) Remote |= REMDISSTAYONTOP; + } + else if( !strncmp(p, "-h", 2) ){ + p += 2; + APP_HANDLE = (HWND)htoin(p, -1); + if( !APP_HANDLE ){ + APP_HANDLE = HWND_BROADCAST; + } + } + else if( !strncmp(p, "-C", 2) ){ + p += 2; + if( *p ){ + m_strCommonMemory = p; + } + } + else if( !strncmp(p, "-T", 2) ){ + p += 2; + if( *p ){ + m_cRemoteTimeout = atoin(p, -1) * 10; + } + } + } + strcpy(LogDir, BgnDir); + strcpy(OutFileDir, BgnDir); + strcpy(MMLogDir, BgnDir); + strcpy(ExtLogDir, BgnDir); + strcpy(RecDir, BgnDir); +} + +void __fastcall TMmttyWd::UpdateComarray(void) +{ + if( pMap == NULL ) return; + + if( pMap->title[0] ){ + Caption = pMap->title; + } + if( pMap->comName[0] ){ + sys.m_TxRxName = pMap->comName; + COMM.change = 1; + } + else { + StrCopy(pMap->comName, sys.m_TxRxName.c_str(), sizeof(pMap->comName)); + } + if( pMap->comRadio[0] ){ + StrCopy(RADIO.StrPort, pMap->comRadio, sizeof(RADIO.StrPort)-1); + RADIO.change = 1; + } + else { + StrCopy(pMap->comRadio, RADIO.StrPort, sizeof(pMap->comRadio)-1); + } + OpenCloseCom(); +} + +void __fastcall TMmttyWd::UpdateRemort(void) +{ + if( Remote ){ + MSG_MMTTY=::RegisterWindowMessage("MMTTY"); + + if( KPanel->Checked == FALSE ){ + KPanel->Checked = TRUE; + UpdateControlPanel(); + } + if( KFFT->Checked == FALSE ){ + KFFT->Checked = TRUE; + KFFTClick(NULL); + } + BorderIcons >> biSystemMenu >> biMinimize >> biMaximize >> biHelp; + KMFile->Visible = FALSE; + KMEdit->Visible = FALSE; + KExtCmd->Visible = FALSE; + KMHelp->Visible = FALSE; + + KPanel->Visible = FALSE; + KPanelSize->Visible = FALSE; + N11->Visible = FALSE; + KMac->Visible = FALSE; + N18->Visible = FALSE; + KFFT->Visible = FALSE; + KClrRx->Visible = FALSE; + N6->Visible = FALSE; + KOS->Visible = FALSE; + KHint->Visible = FALSE; + KLog->Visible = FALSE; + KQSO->Visible = FALSE; + N8->Visible = FALSE; + N3->Visible = FALSE; + + KVol->Visible = FALSE; + KVolIn->Visible = FALSE; + KTest->Visible = FALSE; + N15->Visible = FALSE; + KSend->Visible = FALSE; + KENT->Visible = FALSE; + KWP->Visible = FALSE; + N19->Visible = FALSE; + KRun->Visible = FALSE; + KPttTim->Visible = FALSE; + N4->Visible = FALSE; + KTX->Visible = FALSE; + N25->Visible = FALSE; + KTNC->Visible = FALSE; + KOptLog->Visible = FALSE; + GroupM->Visible = FALSE; + if( !(Remote & REMCTRL) ){ + GroupDem->Visible = FALSE; + GroupCtr->Visible = FALSE; + } + if( !(Remote & REMMENU) ){ + KView->Visible = FALSE; + KMOpt->Visible = FALSE; + KS->Visible = FALSE; + if( !(Remote & REMCTRL) ){ + Application->OnActivate = OnActivate; + } + } + if( Remote & REMSHOWOFF ){ + Application->OnActivate = OnRestore; + } + + Application->OnMessage = OnMSG; + Caption = (Remote >= 2) ? "RTTY Indicator":"RTTY Control panel"; + m_RemoteTimer = m_cRemoteTimeout; // Changed 50 to 100 by JE3HHT on Sep.2010 + FirstFileMapping(); + OnKeyDown = NULL; + OnKeyPress = NULL; + OnKeyUp = NULL; + } +} + +void __fastcall TMmttyWd::FirstFileMapping(void) +{ + if( hMap != NULL ) return; + + hMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, m_strCommonMemory.c_str()); + if( hMap != NULL ){ + pMap = (COMARRAY *)::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); + pMap->smpFreq = pMap->smpFFT ? 8000 : SampFreq; + UpdateComarray(); + pMap->flagFFT = 0; + pMap->flagXY = 0; + strcpy(pMap->verMMTTY, VERID); + double err; + switch(SampType){ + case 1: + err = (SampFreq - 8000.0) * 1.0e6/8000.0; + break; + case 2: + err = (SampFreq - 6000.0) * 1.0e6/6000.0; + break; + case 3: + err = (SampFreq - 12000.0) * 1.0e6/12000.0; + break; + default: + err = (SampFreq - 11025.0) * 1.0e6/11025.0; + break; + } + pMap->errorClock = err + 0.5; + pMap->smpDemFreq = DemSamp + 0.5; + } + Application->Title = Caption.c_str(); +} + +void __fastcall TMmttyWd::UpdateSystemFont(void) +{ + TFontStyles fsw = Code2FontStyle(sys.m_WinFontStyle); + TFontStyles fsb = Code2FontStyle(sys.m_BtnFontStyle); + if( (sys.m_WinFontName != Font->Name)|| + (sys.m_WinFontCharset != Font->Charset)|| + (fsw != Font->Style)|| + (sys.m_BtnFontName != SBM1->Font->Name)|| + (sys.m_BtnFontCharset != SBM1->Font->Charset)|| + (fsb != SBM1->Font->Style) + ){ + + Font->Name = sys.m_WinFontName; + Font->Charset = sys.m_WinFontCharset; + Font->Style = fsw; + + AlignMain.NewFont(sys.m_WinFontName, sys.m_WinFontCharset, fsw); + AlignTop.NewFont(sys.m_WinFontName, sys.m_WinFontCharset, fsw); + AlignQSO.NewFont(sys.m_WinFontName, sys.m_WinFontCharset, fsw); + AlignStat.NewFont(sys.m_WinFontName, sys.m_WinFontCharset, fsw); + + for( int i = 0; i < 16; i++ ){ + GetSB(i)->Font->Name = sys.m_BtnFontName; + GetSB(i)->Font->Charset = sys.m_BtnFontCharset; + GetSB(i)->Font->Style = fsb; + } + SBIN1->Font->Name = sys.m_BtnFontName; + SBIN1->Font->Charset = sys.m_BtnFontCharset; + SBIN1->Font->Style = fsb; + SBIN2->Font->Name = sys.m_BtnFontName; + SBIN2->Font->Charset = sys.m_BtnFontCharset; + SBIN2->Font->Style = fsb; + SBIN3->Font->Name = sys.m_BtnFontName; + SBIN3->Font->Charset = sys.m_BtnFontCharset; + SBIN3->Font->Style = fsb; + SBIN4->Font->Name = sys.m_BtnFontName; + SBIN4->Font->Charset = sys.m_BtnFontCharset; + SBIN4->Font->Style = fsb; + HisCall->Font->Name = sys.m_BtnFontName; + HisCall->Font->Charset = sys.m_BtnFontCharset; + HisCall->Font->Style = fsb; + HisName->Font->Name = sys.m_BtnFontName; + HisName->Font->Charset = sys.m_BtnFontCharset; + HisName->Font->Style = fsb; + HisQTH->Font->Name = sys.m_BtnFontName; + HisQTH->Font->Charset = sys.m_BtnFontCharset; + HisQTH->Font->Style = fsb; + HisRST->Font->Name = sys.m_BtnFontName; + HisRST->Font->Charset = sys.m_BtnFontCharset; + HisRST->Font->Style = fsb; + MyRST->Font->Name = sys.m_BtnFontName; + MyRST->Font->Charset = sys.m_BtnFontCharset; + MyRST->Font->Style = fsb; + Freq->Font->Name = sys.m_BtnFontName; + Freq->Font->Charset = sys.m_BtnFontCharset; + Freq->Font->Style = fsb; + } + if( Font->Charset != SHIFTJIS_CHARSET ){ + KMFile->Caption = "File(&F)"; + KMEdit->Caption = "Edit(&E)"; + KView->Caption = "View(&V)"; + KMOpt->Caption = "Option(&O)"; + KExtCmd->Caption = "Program(&P)"; + KS->Caption = "Profiles(&S)"; + KMHelp->Caption = "Help(&H)"; +// File Nenu for english + KRcvLog->Caption = "Log Rx file(&L)"; + KFileOut->Caption = "Send Text(&S)..."; + KSaveRx->Caption = "RxWindow to file(&T)..."; + KOpenLog->Caption = "Open LogData file(&O)..."; + KFlush->Caption = "Save data now(&M)"; + KRxTime->Caption = "Record WAVE(mmv) immediately (&A)"; + KRxRec->Caption = "Record WAVE(mmv) (&W) as..."; + KRxPlay->Caption = "Play WAVE(mmv) (&R)..."; + KRxPos->Caption = "Seek Play position..."; + KRxTop->Caption = "Rewind Play/Record(&B)"; + KRxPause->Caption = "Pause Play/Record(&P)"; + KRxStop->Caption = "Close Play/Record(&Z)"; + KExit->Caption = "Exit MMTTY(&X)"; + + KPaste->Caption = "Paste to TxWindow(&P)"; + KMacro->Caption = "Edit Macro Buttons(&M)..."; + KMsg->Caption = "Edit Messages(&C)..."; + + KShortCut->Caption = "Assign ShortCut Keys(&K)..."; + + KPanelSize->Caption = "Control Panel Size"; + KMac->Caption = "Macro Buttons"; + KFFT->Caption = "FFT Display"; + KFFTFW->Caption = "FFT Width"; + KFFTGain->Caption = "FFT Sensitivity"; + KFFTR->Caption = "FFT Response"; + KXYScopeSize->Caption = "XYScope Size"; + KXYScopeQuality->Caption = "XYScope Quality"; + KOS->Caption = "Scope"; + KClrRx->Caption = "Clear Rx Window"; + KHint->Caption = "Show Button Hint"; + KLog->Caption = "LogData List..."; + KQSO->Caption = "Current QSO Data..."; + + KVol->Caption = "Soundcard output level(&V)..."; + KVolIn->Caption = "Soundcard input level(&I)..."; + KTest->Caption = "Test"; + KSend->Caption = "Way to send(&S)"; + KSChar->Caption = "CHARACTER OUT"; + KSWord->Caption = "WORD OUT"; + KSLine->Caption = "LINE OUT"; + KENT->Caption = "Auto send CR/LF with TX button"; + KTX->Caption = "Disable transmission"; + KWP->Caption = "Word wrap on keyboard"; + KRun->Caption = "Running mode"; + KPttTim->Caption = "PTT Timer(&P)..."; + KTNC->Caption = "Setup TNC emulation(&T)..."; + KOptLog->Caption = "Setup Logging(&L)..."; + KOption->Caption = Remote ? "Setup(&O)...":"Setup MMTTY(&O)..."; + + KSDel->Caption = "Delete Menu"; + KSEnt->Caption = "Assign Menu"; + KSSV->Caption = "Save to file(&S)"; + KSLD->Caption = "Load from file(&L)"; + KExtEnt->Caption = "Assign Menu"; + KExtDel->Caption = "Delete Menu"; + + KExtReset->Caption = "Resume(&R)"; + KExtSusp->Caption = "Suspend(&S)"; + + KSetHelp->Caption = "Setup Help(&S)..."; + KWebHHT->Caption = "JE3HHT WebSite (Japanese)"; + KWebJARTS->Caption = "JARTS WebSite"; + KDispVer->Caption = "About MMTTY(&A)"; + + KRM->Caption = "Version-up information"; + + KRO->Caption = "Options of Received-log"; + KROF->Caption = "Folder..."; + KROT->Caption = "Log time stamp"; + KROTU->Caption = "Time stamp is UTC"; + KROTD->Caption = "Show time stamp in the RX window"; + } + KHlpTxt->Caption = sys.m_Help.c_str(); + KHlpLog->Caption = sys.m_HelpLog.c_str(); + KHlpDig->Caption = sys.m_HelpDigital.c_str(); + SBTX->Font->Color = clRed; +} + +void __fastcall TMmttyWd::ReqPaletteChange(void) +{ + if( UsrPal != NULL ){ // 256FƒAƒ_ƒvƒ^[‚ÌŽž + ClosePalette(); + m_ReqPaletteChange = 1; + } +} + +void __fastcall TMmttyWd::UpdateColor(void) +{ + PanelRx->Color = sys.m_ColorRXBack; + PanelIn->Color = sys.m_ColorINBack; + if( UsrPal != NULL ){ // 256FƒAƒ_ƒvƒ^[‚ÌŽž + ClosePalette(); + m_ReqPaletteChange = 1; + } + else { + PBoxWater->Invalidate(); + PBoxXY->Invalidate(); + PBoxRx->Invalidate(); + PBoxIn->Invalidate(); + } +} +//--------------------------------------------------------------------------- +// ƒAƒCƒhƒ‹ˆ— +void __fastcall TMmttyWd::OnIdle(TObject *Sender, bool &Done) +{ + if( Log.IsOpen() ){ + if( Log.m_CurChg ){ + Log.SetLastPos(); + UpdateTextData(); + Log.m_CurChg = 0; + SBQSO->Down = Log.m_sd.btime ? 1 : 0; + } + } + UpdateUI(); + TimerFocus(); + if( m_ReqPaletteChange ){ + m_ReqPaletteChange = 0; + if( sys.m_Palette ){ + if( UsrPal == NULL ){ + SetColorIndex(); + } + } + else { + if( UsrPal != NULL ){ + ClosePalette(); + } + } + if( UsrPal != NULL ){ + m_PaletteTimer = 3; + } + } +} +#if 0 +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::TopWindow(void) +{ + if( FormStyle == fsStayOnTop ){ + ::SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOMOVE|SWP_NOSIZE); + } +} +#endif +//--------------------------------------------------------------------------- +// ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚Ì’²® +void __fastcall TMmttyWd::UpdateXY2(void) +{ + int w; + if( m_XYSize ){ + w = PanelWater->Top - PanelFFT->Top + PanelWater->Height; + } + else { + w = PanelFFT->Height - 1; + } + if( PanelTop->Visible ){ + if( PanelXY->Parent != PanelTop ){ + PanelXY->Visible = FALSE; + PanelRx->RemoveControl(PanelXY); + PanelTop->InsertControl(PanelXY); + PanelXY->Parent = PanelTop; + PanelXY->Visible = KXYScope->Checked; + } + PanelXY->SetBounds(PanelFFT->Left + PanelFFT->Width - w, PanelFFT->Top, w, w); + } + else { + if( PanelXY->Parent != PanelRx ){ + PanelXY->Visible = FALSE; + PanelTop->RemoveControl(PanelXY); + PanelRx->InsertControl(PanelXY); + PanelXY->Parent = PanelRx; + PanelXY->Visible = KXYScope->Checked; + } + PanelXY->SetBounds(PBoxRx->Width - PanelXY->Width, PBoxRx->Top, w, w); + } +} +//--------------------------------------------------------------------------- +// ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚Ì’²® +void __fastcall TMmttyWd::UpdateControlPanel(void) +{ + if( KPanel->Checked != PanelTop->Visible ){ + PanelTop->Visible = KPanel->Checked; + PanelRx->Top = (PanelQSO->Top + PanelQSO->Height); + PanelRx->Height = PanelStat->Top - (PanelQSO->Top + PanelQSO->Height); + PrintText.SetPaintBox(PBoxRx, ScrollBarRx); + UpdateXY2(); + if( Remote ) PostApp(TXM_HEIGHT, Height); + } +} +//--------------------------------------------------------------------------- +// ŽóM‰æ–ʂ̃TƒCƒY’²® +void __fastcall TMmttyWd::UpdatePanel(void) +{ + PanelRx->Top = (PanelQSO->Top + PanelQSO->Height); + PanelRx->Height = PanelStat->Top - (PanelQSO->Top + PanelQSO->Height); + PrintText.SetPaintBox(PBoxRx, ScrollBarRx); + FifoEdit.SetPaintBox(PBoxIn, ScrollBarIn); +} +//--------------------------------------------------------------------------- +// ƒƒOƒpƒlƒ‹‚Ì’²® +void __fastcall TMmttyWd::AlignLogPanel(void) +{ + AlignQSO.NewAlign(PanelQSO); + if( Log.m_LogSet.m_Contest && (Log.m_LogSet.m_Contest != testPED) ){ + int wname = HisName->Width; + int wrst = HisRST->Width; + int nname = wname * 7 / 16; + HisName->Width = nname; + HisQTH->Width = nname; + int off = (wname - nname)/2; + int nrst = wrst + off; + LMY->Left -= off * 2; + MyRST->Left -= off * 2; + LHIS->Left -= off; + HisRST->Left -= off; + HisRST->Width = nrst; + MyRST->Width = nrst; + } +} +//--------------------------------------------------------------------------- +// ƒTƒCƒY•ÏXƒCƒxƒ“ƒg +void __fastcall TMmttyWd::FormResize(TObject *Sender) +{ + if( Timer->Enabled == FALSE ) return; + if( pSound == NULL ) return; + if( m_DisAlign ) return; + if( Remote & REMSHOWOFF ) return; + + if( Remote ){ // ƒŠƒ‚[ƒgŽž + PanelRx->Visible = FALSE; + PanelIn->Visible = FALSE; + PanelStat->Visible = FALSE; + PanelQSO->Visible = FALSE; + PanelTop->Height = ClientHeight; + AlignTop.NewAlign(PanelTop); + if( !(Remote & REMCTRL) ){ + if( PanelFFT->Top != 0 ){ + PanelFFT->Height += PanelFFT->Top; + PanelFFT->Top = 0; + PanelXY->Top = 0; + PanelWater->Height = PanelTop->ClientHeight - PanelWater->Top; + } + } + UpdatePanel(); + if( GroupCtr->Visible == FALSE ){ + PanelFFT->Left = GroupCtr->Left; + PanelWater->Left = GroupCtr->Left; + PanelFFT->Width = ClientWidth - GroupCtr->Left - 2; + PanelWater->Width = ClientWidth - GroupCtr->Left - 2; + } + else if( GroupM->Visible == FALSE ){ + PanelFFT->Left = GroupM->Left; + PanelWater->Left = GroupM->Left; + PanelFFT->Width = ClientWidth - GroupM->Left - 2; + PanelWater->Width = ClientWidth - GroupM->Left - 2; + } + else { + PanelFFT->Left = GroupM->Left + GroupM->Width + 2; + PanelWater->Left = GroupM->Left + GroupM->Width + 2; + PanelFFT->Width = ClientWidth - PanelFFT->Left - 2; + PanelWater->Width = ClientWidth - PanelWater->Left - 2; + } + } + else { // ƒXƒ^ƒ“ƒhƒAƒ[ƒ“Žž + if( PanelIn->Align == alNone ){ + m_DisAlign++; + PanelMac->Align = alTop; + PanelIn->Align = alBottom; + PanelStat->Align = alBottom; + ClientHeight = m_BefHeight; + m_DisAlign--; + } + else { + m_BefHeight = ClientHeight; + } + PanelTop->Visible = TRUE; + AlignMain.NewAlign(this); + switch(m_PanelSize){ + case 0: + AlignMain.NewAlign(this, PanelTop, 0.75); + break; + case 1: + AlignMain.NewAlign(this, PanelTop, 0.9); + break; + case 3: + AlignMain.NewAlign(this, PanelTop, 1.25); + break; + default: + break; + } + UpdatePanel(); + AlignTop.NewAlign(PanelTop); +#if 1 + AlignLogPanel(); +#else + AlignQSO.NewAlign(PanelQSO); +#endif + AlignStat.NewAlign(PanelQSO); + if( GroupCtr->Visible == FALSE ){ + PanelFFT->Left = GroupCtr->Left; + PanelWater->Left = GroupCtr->Left; + PanelFFT->Width = ClientWidth - GroupCtr->Left - 2; + PanelWater->Width = ClientWidth - GroupCtr->Left - 2; + } + else if( GroupM->Visible == FALSE ){ + PanelFFT->Left = GroupM->Left; + PanelWater->Left = GroupM->Left; + PanelFFT->Width = ClientWidth - GroupM->Left - 2; + PanelWater->Width = ClientWidth - GroupM->Left - 2; + } + else { + PanelFFT->Left = GroupM->Left + GroupM->Width + 2; + PanelWater->Left = GroupM->Left + GroupM->Width + 2; + PanelFFT->Width = ClientWidth - PanelFFT->Left - 2; + PanelWater->Width = ClientWidth - PanelWater->Left - 2; + } + if( PanelMac->Visible == TRUE ){ + TSpeedButton *tp; + double w = double(PanelMac->ClientWidth - 12)/16; + double a = 0; + for( int i = 0; i < 16; i++, a += w ){ + if( i && (!(i % 4)) ) a += 4.0; + tp = GetSB(i); + tp->Top = 0; + tp->Height = PanelMac->ClientHeight; + tp->Left = int(a); + tp->Width = int(w); + } + } + } + if( UsrPal != NULL ){ + ClosePalette(); + m_ReqPaletteChange = 1; + } + delete pBitmapFFTIN; + delete pBitmapWater; + delete pBitmapSQ; +// delete pBitmapXY; + pBitmapFFTIN = new Graphics::TBitmap(); + pBitmapFFTIN->Width = PBoxFFTIN->Width; + pBitmapFFTIN->Height = PBoxFFTIN->Height; + + pBitmapWater = new Graphics::TBitmap(); + pBitmapWater->Width = PBoxWater->Width; + pBitmapWater->Height = PBoxWater->Height; + + pBitmapSQ = new Graphics::TBitmap(); + pBitmapSQ->Width = PBoxSQ->Width; + pBitmapSQ->Height = PBoxSQ->Height; + + UpdateXYScope(); +#if 0 + pBitmapXY = new Graphics::TBitmap(); + pBitmapXY->Width = PBoxXY->Width; + pBitmapXY->Height = PBoxXY->Height; +#endif + + if( pSound != NULL ){ + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); + pSound->DrawFFTWater(pBitmapWater, 1, KXYScope->Checked ? PBoxXY->Width : 0); + DrawSQ(); + } + UpdateMacro(); + UpdateControlPanel(); + + // ƒXƒ^[ƒ“ƒhƒAƒ[ƒ“Žž‚̃EƒCƒ“ƒhƒE‹ÖŽ~ˆ— + if( sys.m_DisWindow && (!Remote) ){ + m_DisAlign++; + PanelMac->Align = alNone; + PanelIn->Align = alNone; + PanelStat->Align = alNone; + ClientHeight = PanelTop->Height; + m_DisAlign--; + } +} +//--------------------------------------------------------------------------- +// ƒTƒCƒY•ÏXƒRƒ“ƒgƒ[ƒ‹‚Ì“o˜^ +void __fastcall TMmttyWd::EntryAlignControl(void) +{ + AlignMain.EntryControl(PanelTop, this, NULL); + AlignMain.EntryControl(PanelMac, this, NULL); + AlignMain.EntryControl(PanelQSO, this, NULL); + AlignMain.EntryControl(PanelStat, this, NULL); + +// ƒgƒbƒvƒpƒlƒ‹‚Ì“o˜^ + AlignTop.EntryControl(GroupCtr, PanelTop, GroupCtr->Font); + AlignTop.EntryControl(SBTXOFF, PanelTop, SBTXOFF->Font); + AlignTop.EntryControl(SBTX, PanelTop, SBTX->Font); + AlignTop.EntryControl(SBFIG, PanelTop, SBFIG->Font); + AlignTop.EntryControl(SBUOS, PanelTop, SBUOS->Font); + AlignTop.EntryControl(GroupDem, PanelTop, GroupDem->Font); + AlignTop.EntryControl(GroupM, PanelTop, GroupM->Font); + AlignTop.EntryControl(Label1, PanelTop, Label1->Font); + AlignTop.EntryControl(Label2, PanelTop, Label2->Font); + AlignTop.EntryControl(Label3, PanelTop, Label3->Font); + AlignTop.EntryControl(Label4, PanelTop, Label4->Font); + AlignTop.EntryControl(LLPF, PanelTop, LLPF->Font); + AlignTop.EntryControl(Label7, PanelTop, Label7->Font); + AlignTop.EntryControl(LTap, PanelTop, LTap->Font); + AlignTop.EntryControl(LHZ, PanelTop, LHZ->Font); + AlignTop.EntryControl(SBRev, PanelTop, SBRev->Font); + AlignTop.EntryControl(SBDem, PanelTop, SBDem->Font); + AlignTop.EntryControl(SBHAM, PanelTop, SBHAM->Font); + AlignTop.EntryControl(SBATC, PanelTop, SBATC->Font); + AlignTop.EntryControl(SBNET, PanelTop, SBNET->Font); + AlignTop.EntryControl(SBSQ, PanelTop, SBSQ->Font); + AlignTop.EntryControl(SBAFC, PanelTop, SBAFC->Font); + AlignTop.EntryControl(SBBPF, PanelTop, SBBPF->Font); + AlignTop.EntryControl(SBLMS, PanelTop, SBLMS->Font); + AlignTop.EntryControl(MarkFreq, PanelTop, MarkFreq->Font); + AlignTop.EntryControl(ShiftFreq, PanelTop, ShiftFreq->Font); + AlignTop.EntryControl(DemoBox1, PanelTop, DemoBox2->Font); + AlignTop.EntryControl(DemoBox2, PanelTop, DemoBox2->Font); + AlignTop.EntryControl(PanelSQ, PanelTop, NULL); + AlignTop.EntryControl(PanelFFT, PanelTop, NULL); + AlignTop.EntryControl(PanelWater, PanelTop, NULL); + AlignTop.EntryControl(PanelXY, PanelTop, NULL); + for( int i =0; i < 16; i++ ){ + AlignTop.EntryControl(GetSB(i), PanelTop, GetSB(i)->Font); + } + +// QSOƒpƒlƒ‹‚Ì“o˜^ + AlignQSO.EntryControl(LCall, PanelQSO, LCall->Font); + AlignQSO.EntryControl(HisCall, PanelQSO, HisCall->Font); + AlignQSO.EntryControl(LName, PanelQSO, LName->Font); + AlignQSO.EntryControl(HisName, PanelQSO, HisName->Font); + AlignQSO.EntryControl(HisQTH, PanelQSO, HisQTH->Font); + AlignQSO.EntryControl(LHIS, PanelQSO, LHIS->Font); + AlignQSO.EntryControl(HisRST, PanelQSO, HisRST->Font); + AlignQSO.EntryControl(LMY, PanelQSO, LMY->Font); + AlignQSO.EntryControl(MyRST, PanelQSO, MyRST->Font); + AlignQSO.EntryControl(SBQSO, PanelQSO, SBQSO->Font); + AlignQSO.EntryControl(SBData, PanelQSO, SBData->Font); + AlignQSO.EntryControl(SBInit, PanelQSO, SBInit->Font); + AlignQSO.EntryControl(SBFind, PanelQSO, SBFind->Font); + AlignQSO.EntryControl(Freq, PanelQSO, Freq->Font); + +// “ü—̓{ƒ^ƒ“ƒpƒlƒ‹‚Ì“o˜^ + AlignStat.EntryControl(SBINClear, PanelStat, SBINClear->Font); + AlignStat.EntryControl(SBIN1, PanelStat, SBIN1->Font); + AlignStat.EntryControl(SBIN2, PanelStat, SBIN2->Font); + AlignStat.EntryControl(SBIN3, PanelStat, SBIN3->Font); + AlignStat.EntryControl(SBIN4, PanelStat, SBIN4->Font); + AlignStat.EntryControl(MsgList, PanelStat, MsgList->Font); + AlignStat.EntryControl(SBINEdit, PanelStat, SBINEdit->Font); + AlignStat.EntryControl(LWait, PanelStat, LWait->Font); + AlignStat.EntryControl(TBCharWait, PanelStat, NULL); + + int CX = ::GetSystemMetrics(SM_CXFULLSCREEN); + int CY = ::GetSystemMetrics(SM_CYFULLSCREEN); +// int CX = ::GetSystemMetrics(SM_CXSCREEN); +// int CY = ::GetSystemMetrics(SM_CYSCREEN); + if( (CX < Width)||(CY < Height) ){ + Top = 0; + Left = 0; + Width = CX; + Height = CY; + } + PanelTop->Align = alTop; + PanelMac->Align = alTop; + PanelQSO->Align = alTop; + PanelRx->Align = alTop; + PanelIn->Align = alBottom; + PanelStat->Align = alBottom; + FormCenter(this, CX, CY); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateStayOnTop(void) +{ + TFormStyle fs = (sys.m_StayOnTop || Remote) ? fsStayOnTop : fsNormal; + if( FormStyle != fs ){ + AnsiString asMarkFreq; + GetComboBox(asMarkFreq, MarkFreq); + AnsiString asShiftFreq; + GetComboBox(asShiftFreq, ShiftFreq); + AnsiString asHisRST; + GetComboBox(asHisRST, HisRST); + + FormStyle = fs; + if( Remote && (Remote & REMDISSTAYONTOP) ){ + FormStyle = fsNormal; + } + if( pTnc != NULL ) pTnc->UpdateHandle(Handle); + LogLink.SetHandle(Handle, CM_CMML); + if( pRadio ) pRadio->UpdateHandle(Handle, CM_CMMR); + + SetComboBox(MarkFreq, asMarkFreq.c_str()); + SetComboBox(ShiftFreq, asShiftFreq.c_str()); + SetComboBox(HisRST, asHisRST.c_str()); + SetComboBox(MyRST, asHisRST.c_str()); + UpdateItem(); + } +// if( pRadio != NULL ) pRadio->UpdateHandle(Handle); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateTitle(void) +{ + if( Remote ) return; + char bf[512]; + if( IsCall(sys.m_Call.c_str()) ){ + sprintf(bf, "%s (%s) - "VERTTL2, sys.m_Call.c_str(), Log.GetName() ); + } + else { + strcpy(bf, VERTTL2); + } + if( Log.m_LogSet.m_QSOMacroFlag ){ // Auto running Macro + strcat(bf, m_Running ? " (Running mode)":" (S&P mode)"); + } + if( SampType ){ + char bbf[64]; + sprintf(bbf, " [based on %.lfHz]", SampBase); + strcat(bf, bbf); + } + if( LogLink.IsLink() ){ + char bbf[64]; + sprintf(bbf, " [Link to %s]", LogLink.GetSessionName()); + strcat(bf, bbf); + } + Caption = bf; + UpdateCallsign(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateItem(void) +{ + m_DisEvent++; + UpdateTitle(); + SBUOS->Down = rtty.m_uos; + SBFIG->Down = rtty.m_fig; + + SBSQ->Down = pSound->FSKDEM.GetSQ(); + + SBRev->Down = sys.m_Rev; + KTest->Checked = pSound->m_Test; + KXYScope->Checked = pSound->FSKDEM.m_XYScope; + + SBATC->Down = pSound->FSKDEM.m_atc; + SBNET->Down = sys.m_TxNet; + KFFT->Checked = pSound->m_FFTSW; + SBAFC->Down = sys.m_AFC; + SBBPF->Down = pSound->m_bpf; + SBLMS->Down = pSound->m_lmsbpf; + KPttTim->Checked = m_PttTimer ? 1 : 0; + UpdateLWait(); + + if( pRadio != NULL ) pRadio->SetMarkFreq(pSound->FSKDEM.GetMarkFreq()); + MarkFreq->Text = pSound->FSKDEM.GetMarkFreq(); + ShiftFreq->Text = pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq(); + SelectCombo(TRUE); + if( pComm != NULL ) pComm->SetInv(sys.m_TxRxInv); + UpdateUI(); +// UpdateXYScope(); + UpdateLimit(); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateFSK(void) +{ + if( sys.m_TxPort ) OpenClosePTT(); + if( (TNC.Type == 2) && (pTnc!=NULL) && !pTnc->IsMMT() ) OpenCloseTNC(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OpenCloseCom(void) +{ + if( COMM.change || TNC.change || RADIO.change ){ + if( COMM.change && strcmp(sys.m_TxRxName.c_str(), "NONE") ){ + if( pTnc != NULL ){ + TNC.change = 1; + pTnc->Close(); + delete pTnc; + pTnc = NULL; + } + if( pRadio != NULL ){ + RADIO.change = 1; + pRadio->Close(); + delete pRadio; + pRadio = NULL; + } + } + if( RADIO.change && strcmp(RADIO.StrPort, "NONE") ){ + if( pTnc != NULL ){ + TNC.change = 1; + pTnc->Close(); + delete pTnc; + pTnc = NULL; + } + } + if( COMM.change ){ + if( pComm != NULL ){ + delete pComm; + pComm = NULL; + } + OpenClosePTT(); + } + if( RADIO.change || ((pRadio == NULL)&&strcmp(RADIO.StrPort, "NONE")) ){ + OpenCloseRadio(); + } + if( TNC.change || ((pTnc == NULL)&&strcmp(TNC.StrPort, "NONE")) ){ + OpenCloseTNC(); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetFSKPara(COMMPARA *cp) +{ + cp->Baud = int(pSound->FSKDEM.GetBaudRate() + 0.5); + cp->BitLen = pSound->FSKDEM.m_BitLen; + // 0-1bit, 1-1.5bit, 2-2bit, 3-1.5bit, 4-1.5bit +//ƒf[ƒ^’·5‚ƃXƒgƒbƒv ƒrƒbƒg2‚Ì‘g‚݇‚킹‚Í–³Œø‚Å‚·B +//ƒf[ƒ^’·6¤ 7¤ 8‚ƃXƒgƒbƒv ƒrƒbƒg1.5‚Ƃ̑g‚݇‚킹‚à–³Œø‚Å‚·B + switch(pSound->FSKMOD.m_StopLen){ + case 2: + cp->Stop = (cp->BitLen >= 6) ? TWOSTOPBITS : ONE5STOPBITS; + break; + case 1: + case 3: + case 4: + cp->Stop = (cp->BitLen >= 6) ? TWOSTOPBITS : ONE5STOPBITS; + break; + default: + cp->Stop = ONESTOPBIT; + break; + } + switch(pSound->FSKDEM.m_Parity){ + case 1: // Even + cp->Parity = EVENPARITY; + break; + case 2: // Odd + cp->Parity = ODDPARITY; + break; + case 3: // 1 + cp->Parity = MARKPARITY; + break; + case 4: // 0 + default: + cp->Parity = NOPARITY; + break; + } + if(cp->BitLen == 5){ + if( cp->Stop == ONE5STOPBITS ) cp->Stop = TWOSTOPBITS; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OpenClosePTT(void) +{ + if( !COMM.change ) return; + COMM.change = 0; + + if( pComm != NULL ){ + delete pComm; + pComm = NULL; + } + if( !strcmp(sys.m_TxRxName.c_str(), "NONE") ){ + if( (pMap != NULL) && !(Remote & REMDISSHARED) ) strcpy(pMap->comName, "NONE"); + } + else { + COMMPARA cm; + SetFSKPara(&cm); + pComm = new CComm(TRUE); + + //AA6YQ 1.66 enable use of 2-digit com ports per http://support.microsoft.com/kb/115831/EN-US/ + char *ComPort = new char[33]; + + if(!strncmp(sys.m_TxRxName.c_str(), "COM", 3) ){ //strncmp returns 0 if match + //AA6YQ 1.66 but only if we're opening a COM port + StrCopy(ComPort,"\\\\.\\"); + StrCat(ComPort,sys.m_TxRxName.c_str()); + } + else { + //AA6YQ 1.66 as opposed to, say, EXTFSK + StrCopy(ComPort,sys.m_TxRxName.c_str()); + } + + if( sys.m_TxPort && !strncmp(sys.m_TxRxName.c_str(), "COM", 3) ){ + if( pComm->Open(ComPort, sys.m_TxRxInv, NULL) ){ + pComm->SetTXRX(0); + pComm->Close(); + } + } + + if( pComm->Open(ComPort, sys.m_TxRxInv, sys.m_TxPort ? &cm : NULL) ){ + pComm->pMod = &pSound->FSKMOD; + pComm->EnbTX(SBTX->Down); + if( sys.m_TxPort ) pComm->Resume(); // Txd‘—Mƒ^ƒXƒN‚ð“®ì‚³‚¹‚é + } + else { + if( sys.m_TxPort && (cm.BitLen == 5) && (cm.Stop == TWOSTOPBITS) ){ + cm.Stop = ONE5STOPBITS; // set 1.5bits + if( pComm->Open(ComPort, sys.m_TxRxInv, &cm) == TRUE ){ + pComm->pMod = &pSound->FSKMOD; + pComm->EnbTX(SBTX->Down); + pComm->Resume(); // Txd‘—Mƒ^ƒXƒN‚ð“®ì‚³‚¹‚é + goto _noerr; + } + } + delete pComm; + pComm = NULL; + if( !Remote || !m_RemoteTimer ){ + ErrorMB( (Font->Charset != SHIFTJIS_CHARSET)? "Cannot open '%s'":"'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", sys.m_TxRxName.c_str()); + } + } +_noerr:; + if( (pMap != NULL) && !(Remote & REMDISSHARED) ) StrCopy(pMap->comName, sys.m_TxRxName.c_str(), sizeof(pMap->comName)-1); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateMacro(void) +{ + int FontSize = sys.m_SBINFontSize * AlignStat.GetFontAdj(SBIN1); + SetButtonCaption(SBIN1, sys.m_InBtnName[0], 6, FontSize, sys.m_InBtnCol[0]); + SetButtonCaption(SBIN2, sys.m_InBtnName[1], 6, FontSize, sys.m_InBtnCol[1]); + SetButtonCaption(SBIN3, sys.m_InBtnName[2], 6, FontSize, sys.m_InBtnCol[2]); + SetButtonCaption(SBIN4, sys.m_InBtnName[3], 6, FontSize, sys.m_InBtnCol[3]); + FontSize = sys.m_SBFontSize * AlignTop.GetFontAdj(SBM1); + if( !KMac->Checked ) FontSize = sys.m_SBFontSize * (PanelMac->Width / 792.0); + for( int i = 0; i < 16; i++ ){ + SetButtonCaption(GetSB(i), sys.m_UserName[i], KMac->Checked ? 4 : 5, FontSize, sys.m_UserCol[i]); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateLimit(void) +{ + if( SBTX->Down && (sys.m_echo != 2) ){ + pSound->FSKDEM.m_Limit = 0; + } + else { + pSound->FSKDEM.m_Limit = 1; + pSound->FSKDEM.m_LimitGain = sys.m_LimitGain; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateLMS(void) +{ + SBLMS->Caption = pSound->m_lms.m_Type ? "Not." : "LMS"; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateUI(void) +{ + m_DisEvent++; + SBAFC->Enabled = KFFT->Checked; + SBQSO->Enabled = !HisCall->Text.IsEmpty(); + SBFind->Enabled = !HisCall->Text.IsEmpty(); + if( m_NameQTH ){ + if( HisName->Visible == TRUE ){ + LName->Caption = "QTH"; + HisName->Visible = FALSE; + HisQTH->Visible = TRUE; + } + } + else { + if( HisName->Visible == FALSE ){ + LName->Caption = "Name"; + HisName->Visible = TRUE; + HisQTH->Visible = FALSE; + } + } + int i; + for( i = 0; i < 16; i++ ){ + GetSB(i)->Enabled = !sys.m_User[i].IsEmpty(); + } + if( pSound != NULL ){ + if( (m_DemType != pSound->FSKDEM.m_type)|| + (m_LpfType != pSound->FSKDEM.m_lpf)|| + (m_Baud != m_ShowBaud) + ){ + m_DemType = pSound->FSKDEM.m_type; + m_LpfType = pSound->FSKDEM.m_lpf; + switch(pSound->FSKDEM.m_type){ + case 0: + GroupDem->Caption = "Demodulator (IIR)"; + LTap->Caption = m_Baud ? "Baud":"BW"; + LHZ->Visible = m_Baud ? FALSE : TRUE; + LLPF->Caption = m_LpfType ? "LPF" : "AV."; + break; + case 1: + GroupDem->Caption = "Demodulator (FIR)"; + LTap->Caption = m_Baud ? "Baud":"Tap"; + LHZ->Visible = FALSE; + LLPF->Caption = m_LpfType ? "LPF" : "AV."; + break; + case 2: + GroupDem->Caption = "Demodulator (PLL)"; + LTap->Caption = m_Baud ? "Baud":"VCO"; + LHZ->Visible = FALSE; + LLPF->Caption = "Loop"; + break; + case 3: + GroupDem->Caption = "Demodulator (FFT)"; + LTap->Caption = m_Baud ? "Baud":"Tones"; + LHZ->Visible = FALSE; + LLPF->Caption = m_LpfType ? "LPF" : "AV."; + break; + } + SelectCombo(TRUE); + } + if( m_filemode != pSound->WaveFile.m_mode ){ + m_filemode = pSound->WaveFile.m_mode; + switch(m_filemode){ + case 0: + KRxRec->Checked = FALSE; + KRxTime->Checked = FALSE; + KRxRec->Enabled = TRUE; + KRxTime->Enabled = TRUE; + KRxPlay->Enabled = TRUE; + KRxStop->Enabled = FALSE; + KRxPause->Enabled = FALSE; + KRxTop->Enabled = FALSE; + KRxPos->Enabled = FALSE; + break; + case 1: + KRxPlay->Enabled = FALSE; + KRxTime->Enabled = FALSE; + KRxRec->Enabled = FALSE; + KRxStop->Enabled = TRUE; + KRxPause->Enabled = TRUE; + KRxTop->Enabled = TRUE; + KRxPos->Enabled = TRUE; + break; + case 2: + KRxPlay->Enabled = FALSE; + KRxTime->Enabled = FALSE; + KRxRec->Enabled = FALSE; + KRxStop->Enabled = TRUE; + KRxPause->Enabled = TRUE; + KRxTop->Enabled = TRUE; + KRxPos->Enabled = FALSE; + break; + } + } + KRxPause->Checked = pSound->WaveFile.m_pause; + } + if( Remote ){ + RemoteStat(); + } + else { + SBTX->Enabled = !(sys.m_DisTX&1); + } + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::FormCloseQuery(TObject *Sender, bool &CanClose) +{ + CanClose = TRUE; + Timer->Enabled = FALSE; + CWaitCursor wait; + if( Remote && m_OptionDialog ){ + HWND hWnd; + for( int i = Screen->FormCount - 1; i >= 0; i-- ){ + hWnd = Screen->Forms[i]->Handle; + if( hWnd ){ + if( hWnd != Handle ) ::SendMessage(hWnd, WM_CLOSE, 0, 0); + } + else { + break; + } + } + } + if( pComm != NULL ) pComm->ReqClose(); + if( pTnc != NULL ) pTnc->ReqClose(); + if( pRadio != NULL ) pRadio->ReqClose(); + if( pSound != NULL ){ + pSound->WaveFile.FileClose(); + ToRX(1); + pSound->ReqStop(); + Log.Close(); + Log.DoBackup(); + if( sys.m_logTimeStamp ) PrintText.TrigTimeStampImm("MMTTY Close"); + PrintText.CloseLogFile(); + WriteRegister(); + pSound->WaitStop(); + delete pSound; + pSound = NULL; +#if USEPAL + ClosePalette(); +#endif + if( pBitmapRx != NULL ){ + delete pBitmapRx; + pBitmapRx = NULL; + } + if( pBitmapIn != NULL ){ + delete pBitmapIn; + pBitmapIn = NULL; + } + delete pBitmapFFTIN; + delete pBitmapWater; + delete pBitmapXY; + delete pBitmapSQ; + pBitmapFFTIN = NULL; + pBitmapWater = NULL; + pBitmapXY = NULL; + pBitmapSQ = NULL; + } + if( p_SendFileDlg != NULL ){ + delete p_SendFileDlg; + p_SendFileDlg = NULL; + } + if( pTnc != NULL ){ + pTnc->WaitClose(); + delete pTnc; + pTnc = NULL; + } + if( pRadio != NULL ){ + pRadio->WaitClose(); + delete pRadio; + pRadio = NULL; + } + if( pComm != NULL ){ + pComm->WaitClose(); + delete pComm; + pComm = NULL; + } + ::VirtualUnlock(&sys, sizeof(sys)); + ::VirtualUnlock(this, sizeof(TMmttyWd)); +} +//--------------------------------------------------------------------------- +// ƒŒƒWƒXƒgƒŠ‚©‚ç‚̓ǂÝo‚µ +void __fastcall TMmttyWd::ReadSampFreq(void) +{ + char bf[256]; + AnsiString as, ws; + + sprintf(bf, "%sMmtty.ini", BgnDir); + TMemIniFile *pIniFile = new TMemIniFile(bf); + + SampFreq = ReadDoubleIniFile(pIniFile, "SoundCard", "SampFreq", SampFreq); + sys.m_TxOffset = ReadDoubleIniFile(pIniFile, "SoundCard", "TxOffset", 0); +#if 0 + if( (SampFreq > 12500.0) || (SampFreq < 10000.0) ) SampFreq = 11025.0; +#else + if( (SampFreq > 12500.0) || (SampFreq < 5000.0) ) SampFreq = 11025.0; + InitSampType(); +#endif + sys.m_SampFreq = SampFreq; + delete pIniFile; +} +//--------------------------------------------------------------------------- +// ƒŒƒWƒXƒgƒŠ‚©‚ç‚̓ǂÝo‚µ +void __fastcall TMmttyWd::ReadCombList(TMemIniFile *tp, AnsiString &as, LPCSTR pKey, LPCSTR pDef) +{ + as = tp->ReadString("ComboList", pKey, pDef); + if( as.IsEmpty() ) as = pDef; +} +//--------------------------------------------------------------------------- +// ƒŒƒWƒXƒgƒŠ‚©‚ç‚̓ǂÝo‚µ +void __fastcall TMmttyWd::ReadRegister(void) +{ + char bf[256]; + AnsiString as, ws; + + sprintf(bf, "%sMmtty.ini", BgnDir); + TMemIniFile *pIniFile = new TMemIniFile(bf); + + ReadCombList(pIniFile, as, "Mark", "2125,2000,1700,1445,1275,1170,1000,915"); + SetComboBox(MarkFreq, as.c_str()); + ReadCombList(pIniFile, as, "Shift", "23,85,160,170,182,200,240,350,425,850"); + SetComboBox(ShiftFreq, as.c_str()); + ReadCombList(pIniFile, m_asBaud, "Baud", "22,45,45.45,50,56,75,100,110,150,200,300"); + ReadCombList(pIniFile, as, "RST", "599,579,569,559,449,339,448,337,225,111"); + SetComboBox(HisRST, as.c_str()); + SetComboBox(MyRST, as.c_str()); + ReadCombList(pIniFile, m_asIIRBW, "IIRBW", "15,20,25,30,35,40,45,50,60,70,80,90,100,150,200"); + ReadCombList(pIniFile, m_asVCOGain, "VCO", "1.0,1.2,1.5,2.0,2.5,3.0,3.25,3.5,3.75,4.0,4.5,5.0,8.0"); + ReadCombList(pIniFile, m_asLoopFC, "LoopFC", "30,40,50,80,100,150,200,250,300,350,400,450,500,600,800,1000"); + m_asSmooth = "20,22.5,25,30,35,40,45,50,60,70,80,100,150,200,300,600"; + m_asFilterTap = "24,48,56,64,72,80,96,128,144,192,256,386,512"; + + sys.m_LogGridWidths = pIniFile->ReadString("Grid", "Log", ""); + sys.m_QSOGridWidths = pIniFile->ReadString("Grid", "QSO", ""); + + KHint->Checked = pIniFile->ReadInteger("Button", "Hint", KHint->Checked); + + sys.m_HTMLHelp = pIniFile->ReadString("Help", "HTML", sys.m_HTMLHelp); + sys.m_Help = pIniFile->ReadString("Help", "MMTTY", sys.m_Help); + sys.m_HelpLog = pIniFile->ReadString("Help", "MMTTYLOG", sys.m_HelpLog); + sys.m_HelpDigital = pIniFile->ReadString("Help", "DIGITAL", sys.m_HelpDigital); + sys.m_HelpFontName = pIniFile->ReadString("Help", "FontName", sys.m_HelpFontName); + sys.m_HelpFontCharset = (BYTE)pIniFile->ReadInteger("Help", "FontCharset", sys.m_HelpFontCharset); + sys.m_HelpFontSize = pIniFile->ReadInteger("Help", "FontSize", sys.m_HelpFontSize); + sys.m_HelpNotePad = pIniFile->ReadInteger("Help", "UseNotePad", sys.m_HelpNotePad); + + sys.m_WindowState = pIniFile->ReadInteger("Window", "WindowState", sys.m_WindowState); + sys.m_DisWindow = pIniFile->ReadInteger("Window", "Disable", sys.m_DisWindow); + sys.m_StayOnTop = pIniFile->ReadInteger("Window", "StayOnTop", sys.m_StayOnTop); + if( Remote ){ + if( !(Remote & REMSHOWOFF) ){ + Top = pIniFile->ReadInteger("Window", "WindowTop", Top); + Left = pIniFile->ReadInteger("Window", "WindowLeft", Left); + if( Remote & REMCTRL ){ + Width = pIniFile->ReadInteger("Window", "WindowWidth", Width); + } + else { + Width = pIniFile->ReadInteger("Window", "WindowWidthS", Width); + } + if( Remote & REMMENU ){ + Height = pIniFile->ReadInteger("Window", "WindowHeightRM", Height); + } + else { + Height = pIniFile->ReadInteger("Window", "WindowHeightR", Height); + } + } + } + else { + KMac->Checked = pIniFile->ReadInteger("Window", "ShowMacro", KMac->Checked); + GroupM->Visible = KMac->Checked; + sys.m_MemWindow = pIniFile->ReadInteger("Window", "MemoryWindow", sys.m_MemWindow); + if( sys.m_MemWindow ){ + Top = pIniFile->ReadInteger("Window", "WindowTopN", Top); + Left = pIniFile->ReadInteger("Window", "WindowLeftN", Left); + Width = pIniFile->ReadInteger("Window", "WindowWidthN", Width); + if( !sys.m_DisWindow ){ + Height = pIniFile->ReadInteger("Window", "WindowHeightN", Height); + } + } + } + + sys.m_WinFontName = pIniFile->ReadString("WindowFont", "Name", sys.m_WinFontName); + sys.m_WinFontCharset = (BYTE)pIniFile->ReadInteger("WindowFont", "Charset", sys.m_WinFontCharset); + sys.m_WinFontStyle = pIniFile->ReadInteger("WindowFont", "Style", sys.m_WinFontStyle); + sys.m_FontAdjSize = pIniFile->ReadInteger("WindowFont", "Adjust", sys.m_FontAdjSize); + sys.m_BtnFontName = pIniFile->ReadString("ButtonFont", "Name", sys.m_BtnFontName); + sys.m_BtnFontCharset = (BYTE)pIniFile->ReadInteger("ButtonFont", "Charset", sys.m_BtnFontCharset); + sys.m_BtnFontStyle = pIniFile->ReadInteger("ButtonFont", "Style", sys.m_BtnFontStyle); + sys.m_BtnFontAdjSize = pIniFile->ReadInteger("ButtonFont", "Adjust", sys.m_BtnFontAdjSize); + + sys.m_FontName = pIniFile->ReadString("Font", "Name", sys.m_FontName); + sys.m_FontSize = pIniFile->ReadInteger("Font", "Size", sys.m_FontSize); + sys.m_FontAdjX = pIniFile->ReadInteger("Font", "AdjX", sys.m_FontAdjX); + sys.m_FontAdjY = pIniFile->ReadInteger("Font", "AdjY", sys.m_FontAdjY); + sys.m_FontCharset = pIniFile->ReadInteger("Font", "Charset", sys.m_FontCharset); + sys.m_FontZero = pIniFile->ReadInteger("Font", "Zero", sys.m_FontZero); + sys.m_FontStyle = pIniFile->ReadInteger("Font", "Style", sys.m_FontStyle); + + KPanel->Checked = pIniFile->ReadInteger("Define", "ControlPanel", 1); + pSound->m_FFTSW = pIniFile->ReadInteger("Define", "FFT", pSound->m_FFTSW); + pSound->m_FFTFW = pIniFile->ReadInteger("Define", "FFTFW", pSound->m_FFTFW); + sys.m_FFTGain = pIniFile->ReadInteger("Define", "FFTGain", sys.m_FFTGain); + sys.m_FFTResp = pIniFile->ReadInteger("Define", "FFTResp", sys.m_FFTResp); + rtty.m_uos = pIniFile->ReadInteger("Define", "UOS", rtty.m_uos); + sys.m_CodeSet = pIniFile->ReadInteger("Define", "CodeSet", sys.m_CodeSet); + pSound->FSKDEM.m_XYScope = pIniFile->ReadInteger("Define", "XYScope", pSound->FSKDEM.m_XYScope); + KXYScope->Checked = pSound->FSKDEM.m_XYScope; + m_XYSize = pIniFile->ReadInteger("Define", "XYScopeSize", m_XYSize); + m_XYQuality = pIniFile->ReadInteger("Define", "XYQuality", m_XYQuality); + sys.m_XYInv = pIniFile->ReadInteger("Define", "XYScopeReverse", sys.m_XYInv); + + m_PanelSize = pIniFile->ReadInteger("Define", "PanelSize", m_PanelSize); + + sys.m_AFC = pIniFile->ReadInteger("Define", "AFC", sys.m_AFC); + sys.m_FixShift = pIniFile->ReadInteger("Define", "AFCFixShift", sys.m_FixShift); + sys.m_AFCSQ = pIniFile->ReadInteger("Define", "AFCSQ", sys.m_AFCSQ); + sys.m_AFCTime = ReadDoubleIniFile(pIniFile, "Define", "AFCTime", sys.m_AFCTime); + sys.m_AFCSweep = ReadDoubleIniFile(pIniFile, "Define", "AFCSweep", sys.m_AFCSweep); + + KENT->Checked = pIniFile->ReadInteger("Define", "AutoCR", KENT->Checked); + KWP->Checked = pIniFile->ReadInteger("Define", "WardWarp", KWP->Checked); + m_SendWay = pIniFile->ReadInteger("Define", "SendWay", m_SendWay); + m_Running = pIniFile->ReadInteger("Define", "Running", m_Running); + m_PttTimer = pIniFile->ReadInteger("Define", "PttTimer", m_PttTimer); + sys.m_TxNet = pIniFile->ReadInteger("Define", "TxNet", sys.m_TxNet); + sys.m_TxDisRev = pIniFile->ReadInteger("Define", "TxDisRev", sys.m_TxDisRev); + sys.m_LimitGain = ReadDoubleIniFile(pIniFile, "Define", "LimitDxGain", sys.m_LimitGain); + pSound->FSKDEM.m_LimitOverSampling = pIniFile->ReadInteger("Define", "LimitOverSampling", pSound->FSKDEM.m_LimitOverSampling); + pSound->FSKDEM.m_LimitAGC = pIniFile->ReadInteger("Define", "LimitAGC", pSound->FSKDEM.m_LimitAGC); + pSound->FSKDEM.m_atc = pIniFile->ReadInteger("Define", "ATC", pSound->FSKDEM.m_atc); + pSound->FSKDEM.m_atcMark.m_Max = pIniFile->ReadInteger("Define", "ATCTime", pSound->FSKDEM.m_atcMark.m_Max); + pSound->FSKDEM.m_atcSpace.m_Max = pSound->FSKDEM.m_atcMark.m_Max; + + pSound->FSKDEM.m_majority = pIniFile->ReadInteger("Define", "Majority", pSound->FSKDEM.m_majority); + pSound->FSKDEM.m_ignoreFream = pIniFile->ReadInteger("Define", "IgnoreFreamError", pSound->FSKDEM.m_ignoreFream); + + pSound->FSKDEM.SetSQ(pIniFile->ReadInteger("Define", "SQ", pSound->FSKDEM.GetSQ())); + pSound->FSKDEM.SetSQLevel(ReadDoubleIniFile(pIniFile, "Define", "SQLevel", pSound->FSKDEM.GetSQLevel())); + + sys.m_DefFix45 = pIniFile->ReadInteger("Define", "DefFix45", sys.m_DefFix45); + sys.m_DefMarkFreq = ReadDoubleIniFile(pIniFile, "Define", "DefMarkFreq", sys.m_DefMarkFreq); + sys.m_DefShift = ReadDoubleIniFile(pIniFile, "Define", "DefShift", sys.m_DefShift); + sys.m_DefStopLen = pIniFile->ReadInteger("Define", "DefStopLen", sys.m_DefStopLen); + pSound->FSKDEM.m_StopLen = sys.m_DefStopLen + 3; + pSound->FSKMOD.m_StopLen = sys.m_DefStopLen + 3; + + pSound->FSKMOD.SetOutputGain(ReadDoubleIniFile(pIniFile, "Define", "OutputGain", pSound->FSKMOD.GetOutputGain())); + + sys.m_Rev = pIniFile->ReadInteger("Define", "Rev", sys.m_Rev); + + sys.m_echo = pIniFile->ReadInteger("Define", "TXLoop", sys.m_echo); + pSound->FSKMOD.m_bpf = pIniFile->ReadInteger("Define", "TXBPF", pSound->FSKMOD.m_bpf); + pSound->FSKMOD.m_bpftap = pIniFile->ReadInteger("Define", "TXBPFTAP", pSound->FSKMOD.m_bpftap); + + pSound->FSKMOD.m_lpf = pIniFile->ReadInteger("Define", "TXLPF", pSound->FSKMOD.m_lpf); + pSound->FSKMOD.SetLPFFreq(ReadDoubleIniFile(pIniFile, "Define", "TXLPFFreq", pSound->FSKMOD.GetLPFFreq())); + + sys.m_LWait = pIniFile->ReadInteger("Define", "TXWaitType", sys.m_LWait); + pSound->FSKMOD.m_CharWait = pIniFile->ReadInteger("Define", "TXCharWait", pSound->FSKMOD.m_CharWait); + pSound->FSKMOD.m_DiddleWait = pIniFile->ReadInteger("Define", "TXDiddleWait", pSound->FSKMOD.m_DiddleWait); + pSound->FSKMOD.m_CharWaitDiddle = pIniFile->ReadInteger("Define", "TXCharWaitDiddle", pSound->FSKMOD.m_CharWaitDiddle); + pSound->FSKMOD.m_RandomDiddle = pIniFile->ReadInteger("Define", "TXRandomDiddle", pSound->FSKMOD.m_RandomDiddle); + pSound->FSKMOD.m_WaitTimer = pIniFile->ReadInteger("Define", "TXWaitTimerDiddle", pSound->FSKMOD.m_WaitTimer); + + pSound->FSKDEM.SetSpaceFreq(ReadDoubleIniFile(pIniFile, "Define", "SpaceFreq", pSound->FSKDEM.GetSpaceFreq())); + pSound->FSKDEM.SetMarkFreq(ReadDoubleIniFile(pIniFile, "Define", "MarkFreq", pSound->FSKDEM.GetMarkFreq())); + pSound->FSKMOD.SetMarkFreq(pSound->FSKDEM.GetSetMarkFreq()); + pSound->FSKMOD.SetSpaceFreq(pSound->FSKDEM.GetSetSpaceFreq()); + m_RxMarkFreq = pSound->FSKDEM.GetMarkFreq(); + m_RxSpaceFreq = pSound->FSKDEM.GetSpaceFreq(); + pSound->m_bpf = pIniFile->ReadInteger("Define", "RXBPF", pSound->m_bpf); + pSound->m_bpftap = pIniFile->ReadInteger("Define", "RXBPFTAP", pSound->m_bpftap); + pSound->m_bpfafc = pIniFile->ReadInteger("Define", "RXBPFAFC", pSound->m_bpfafc); + pSound->m_bpffw = ReadDoubleIniFile(pIniFile, "Define", "RXBPFFW", pSound->m_bpffw); + + pSound->m_lmsbpf = pIniFile->ReadInteger("Define", "RXlms", pSound->m_lmsbpf); + pSound->m_lms.m_lmsDelay = pIniFile->ReadInteger("Define", "RXlmsDelay", pSound->m_lms.m_lmsDelay); + pSound->m_lms.m_lmsMU2 = ReadDoubleIniFile(pIniFile, "Define", "RXlmsMU2", pSound->m_lms.m_lmsMU2); + pSound->m_lms.m_lmsGM = ReadDoubleIniFile(pIniFile, "Define", "RXlmsGM", pSound->m_lms.m_lmsGM); + pSound->m_lms.m_lmsAGC = pIniFile->ReadInteger("Define", "RXlmsAGC", pSound->m_lms.m_lmsAGC); + pSound->m_lms.m_lmsInv = pIniFile->ReadInteger("Define", "RXlmsInv", pSound->m_lms.m_lmsInv); + pSound->m_lms.m_Tap = pIniFile->ReadInteger("Define", "RXlmsTAP", pSound->m_lms.m_Tap); + pSound->m_lms.m_NotchTap = pIniFile->ReadInteger("Define", "RXNotchTAP", pSound->m_lms.m_NotchTap); + pSound->m_lms.m_bpf = pIniFile->ReadInteger("Define", "RXlmsBPF", pSound->m_lms.m_bpf); + pSound->m_lms.m_Type = pIniFile->ReadInteger("Define", "RXlmsType", pSound->m_lms.m_Type); + pSound->m_lms.m_lmsNotch = pIniFile->ReadInteger("Define", "RXlmsNotch", pSound->m_lms.m_lmsNotch); + pSound->m_lms.m_lmsNotch2 = pIniFile->ReadInteger("Define", "RXlmsNotch2", pSound->m_lms.m_lmsNotch2); + pSound->m_lms.m_twoNotch = pIniFile->ReadInteger("Define", "RXlmsTwoNotch", pSound->m_lms.m_twoNotch); + if( !pSound->m_lmsbpf && pSound->m_lms.m_twoNotch ) pSound->m_lms.m_lmsNotch = pSound->m_lms.m_lmsNotch2 = 0; + + pSound->CalcBPF(); + + int verfftdem = pIniFile->ReadInteger("Define", "VERFFTDEM", 0); + pSound->FSKDEM.m_type = pIniFile->ReadInteger("Define", "DEMTYPE", pSound->FSKDEM.m_type); + pSound->FSKDEM.SetBaudRate(ReadDoubleIniFile(pIniFile, "Define", "BaudRate", pSound->FSKDEM.GetBaudRate())); + pSound->FSKDEM.m_lpf = pIniFile->ReadInteger("Define", "SmoozType", pSound->FSKDEM.m_lpf); + pSound->FSKDEM.m_Phase.m_TONES = pIniFile->ReadInteger("Define", "FFTTones", pSound->FSKDEM.m_Phase.m_TONES); + if( verfftdem < VERFFTDEM ){ + pSound->FSKDEM.m_Phase.m_TONES = 4; + } + pSound->FSKDEM.m_lpfOrder = pIniFile->ReadInteger("Define", "SmoozOrder", pSound->FSKDEM.m_lpfOrder); + pSound->FSKDEM.SetLPFFreq(ReadDoubleIniFile(pIniFile, "Define", "SmoozIIR", pSound->FSKDEM.m_lpffreq)); + pSound->FSKDEM.SetSmoozFreq(ReadDoubleIniFile(pIniFile, "Define", "Smooz", pSound->FSKDEM.GetSmoozFreq())); + sys.m_SoundFifoRX = pIniFile->ReadInteger("Define", "SoundRxFifo", sys.m_SoundFifoRX ); + sys.m_SoundFifoTX = pIniFile->ReadInteger("Define", "SoundTxFifo", sys.m_SoundFifoTX ); + if( sys.m_SoundFifoRX > WAVE_FIFO_MAX ) sys.m_SoundFifoRX = WAVE_FIFO_MAX; + if( sys.m_SoundFifoTX > WAVE_FIFO_MAX ) sys.m_SoundFifoTX = WAVE_FIFO_MAX; + sys.m_SoundPriority = pIniFile->ReadInteger("Define", "SoundPriority", sys.m_SoundPriority); + sys.m_SoundDevice = pIniFile->ReadInteger("Define", "SoundDevice", sys.m_SoundDevice); + sys.m_SoundOutDevice = pIniFile->ReadInteger("Define", "SoundOutDevice", sys.m_SoundDevice); //AA6YQ 1.66 + sys.m_SoundMMW = pIniFile->ReadString("Define", "SoundMMW", sys.m_SoundMMW); + pSound->m_IDDevice = sys.m_SoundDevice; + pSound->m_IDOutDevice=sys.m_SoundOutDevice; + sys.m_SoundStereo = pIniFile->ReadInteger("Define", "SoundStereo", sys.m_SoundStereo); + pSound->InitWFX(); + pSound->FSKDEM.SetFilterTap(pIniFile->ReadInteger("Define", "Tap", pSound->FSKDEM.GetFilterTap())); + pSound->FSKDEM.m_iirfw = pIniFile->ReadInteger("Define", "IIRBW", pSound->FSKDEM.m_iirfw); + pSound->FSKDEM.SetIIR(pSound->FSKDEM.m_iirfw); + + pSound->FSKDEM.m_pll.SetVcoGain(ReadDoubleIniFile(pIniFile, "Define", "pllVcoGain", pSound->FSKDEM.m_pll.m_vcogain)); + pSound->FSKDEM.m_pll.m_loopOrder = pIniFile->ReadInteger("Define", "pllLoopOrder", pSound->FSKDEM.m_pll.m_loopOrder); + pSound->FSKDEM.m_pll.m_loopFC = ReadDoubleIniFile(pIniFile, "Define", "pllLoopFC", pSound->FSKDEM.m_pll.m_loopFC); + pSound->FSKDEM.m_pll.m_outOrder = pIniFile->ReadInteger("Define", "pllOutOrder", pSound->FSKDEM.m_pll.m_outOrder); + pSound->FSKDEM.m_pll.m_outFC = ReadDoubleIniFile(pIniFile, "Define", "pllOutFC", pSound->FSKDEM.m_pll.m_outFC); + pSound->FSKDEM.m_pll.MakeLoopLPF(); + pSound->FSKDEM.m_pll.MakeOutLPF(); + + pSound->FSKMOD.m_diddle = pIniFile->ReadInteger("Define", "Diddle", pSound->FSKMOD.m_diddle); + + sys.m_TxPort = pIniFile->ReadInteger("Define", "TxPort", sys.m_TxPort); + sys.m_TxdJob = pIniFile->ReadInteger("Define", "TxdJob", sys.m_TxdJob); + sys.m_TxFixShift = pIniFile->ReadInteger("Define", "TxFixShift", sys.m_TxFixShift); + sys.m_TxRxName = pIniFile->ReadString("Define", "PTT", sys.m_TxRxName); + sys.m_TxRxInv = pIniFile->ReadInteger("Define", "InvPTT", sys.m_TxRxInv); + sys.m_txuos = pIniFile->ReadInteger("Define", "TXUOS", sys.m_txuos); + sys.m_MacroImm = pIniFile->ReadInteger("Define", "MacroImm", sys.m_MacroImm); + sys.m_CharLenFile = pIniFile->ReadInteger("Define", "CharLenFile", sys.m_CharLenFile); + sys.m_DisTX = pIniFile->ReadInteger("Define", "DisTX", sys.m_DisTX); + + sys.m_Call = pIniFile->ReadString("Define", "Call", sys.m_Call); + + sys.m_log = pIniFile->ReadInteger("Log", "Switch", sys.m_log); + sys.m_logTimeStamp = pIniFile->ReadInteger("Log", "TimeStamp", sys.m_logTimeStamp); + sys.m_TimeStampUTC = pIniFile->ReadInteger("Log", "TimeStampUTC", sys.m_TimeStampUTC); + sys.m_AutoTimeOffset = pIniFile->ReadInteger("Log", "AutoUTCOffset", sys.m_AutoTimeOffset); + sys.m_TimeOffset = pIniFile->ReadInteger("Log", "UTCOffset", sys.m_TimeOffset); + sys.m_TimeOffsetMin = pIniFile->ReadInteger("Log", "UTCOffsetMin", sys.m_TimeOffsetMin); + sys.m_LogLink = pIniFile->ReadInteger("Log", "LogLink", sys.m_LogLink); + LogLink.LoadMMLink(pIniFile); + LogLink.SetPolling(pIniFile->ReadInteger("Log", "LinkPoll", 0)); + LogLink.SetPTTEnabled(pIniFile->ReadInteger("Log", "LinkPTT", FALSE)); + as = pIniFile->ReadString("Log", "PathName", LogDir); + + strcpy(LogDir, as.c_str()); + as = pIniFile->ReadString("Dir", "OutFile", OutFileDir); + strcpy(OutFileDir, as.c_str()); + + sys.m_ShowTimeStamp = pIniFile->ReadInteger("Log", "ShowTimeStamp", sys.m_ShowTimeStamp); + + Log.m_FileName = pIniFile->ReadString("LogFile", "Name", Log.m_FileName); + Log.MakeName(Log.m_FileName.c_str()); + + sys.m_Palette = pIniFile->ReadInteger("WaterFall", "Palette", sys.m_Palette); + + + PanelIn->Height = pIniFile->ReadInteger("Input", "Height", PanelIn->Height); + + sys.m_ColorRXBack = (TColor)pIniFile->ReadInteger("Color", "RXBack", sys.m_ColorRXBack); + sys.m_ColorRX = (TColor)pIniFile->ReadInteger("Color", "RXChar", sys.m_ColorRX); + sys.m_ColorRXTX = (TColor)pIniFile->ReadInteger("Color", "RXTXChar", sys.m_ColorRX); + sys.m_ColorINBack = (TColor)pIniFile->ReadInteger("Color", "INBack", sys.m_ColorINBack); + sys.m_ColorIN = (TColor)pIniFile->ReadInteger("Color", "INChar", sys.m_ColorIN); + sys.m_ColorINTX = (TColor)pIniFile->ReadInteger("Color", "INTXChar", sys.m_ColorINTX); + + sys.m_ColorLow = (TColor)pIniFile->ReadInteger("Color", "WaterLow", sys.m_ColorLow); + sys.m_ColorHigh = (TColor)pIniFile->ReadInteger("Color", "WaterHigh", sys.m_ColorHigh); + + sys.m_ColorXY = (TColor)pIniFile->ReadInteger("Color", "XYScope", sys.m_ColorXY); + + + int i; + for(i = 0; i < kkEOF; i++ ){ + sprintf(bf, "S%d", i+1); + sys.m_SysKey[i] = (WORD)pIniFile->ReadInteger("SysKey", bf, sys.m_SysKey[i]); + } + for(i = 0; i < 4; i++ ){ + sprintf(bf, "M%d", i+1); + sys.m_InBtnCol[i] = (TColor)pIniFile->ReadInteger("InBtnCol", bf, sys.m_InBtnCol[i]); + sys.m_InBtnKey[i] = (WORD)pIniFile->ReadInteger("InBtnKey", bf, sys.m_InBtnKey[i]); + sys.m_InBtnName[i] = pIniFile->ReadString("InBtnName", bf, sys.m_InBtnName[i]); + CrLf2Yen(ws, sys.m_InBtn[i]); + as = pIniFile->ReadString("InBtn", bf, ws); + Yen2CrLf(sys.m_InBtn[i], as); + } + + for( i = 0; i < 16; i++ ){ + sprintf(bf, "M%d", i+1); + sys.m_UserTimer[i] = pIniFile->ReadInteger("MacroTimer", bf, sys.m_UserTimer[i]); + sys.m_UserCol[i] = (TColor)pIniFile->ReadInteger("MacroCol", bf, sys.m_UserCol[i]); + sys.m_UserKey[i] = (WORD)pIniFile->ReadInteger("MacroKey", bf, sys.m_UserKey[i]); + sys.m_UserEditKey[i] = (WORD)pIniFile->ReadInteger("MacroEditKey", bf, sys.m_UserEditKey[i]); + sys.m_UserName[i] = pIniFile->ReadString("MacroName", bf, sys.m_UserName[i]); + CrLf2Yen(ws, sys.m_User[i]); + as = pIniFile->ReadString("Macro", bf, ws); + Yen2CrLf(sys.m_User[i], as); + } + for( i = 0; i < MSGLISTMAX; i++ ){ + sprintf(bf, "M%d", i+1); + sys.m_MsgKey[i] = (WORD)pIniFile->ReadInteger("MsgKey", bf, sys.m_MsgKey[i]); + sys.m_MsgName[i] = pIniFile->ReadString("MsgName", bf, sys.m_MsgName[i]); + if( !sys.m_MsgName[i].IsEmpty() ){ + CrLf2Yen(ws, sys.m_MsgList[i]); + as = pIniFile->ReadString("MsgList", bf, ws); + if( as.IsEmpty() ) break; + Yen2CrLf(sys.m_MsgList[i], as); + } + } + for( ; i < MSGLISTMAX; i++ ){ + sys.m_MsgKey[i] = 0; + sys.m_MsgName[i] = ""; + } + + as = pIniFile->ReadString("Dir", "ExtLog", ExtLogDir); + strcpy(ExtLogDir, as.c_str()); + for( i = 0; i < TEXTCONVMAX; i++ ){ + sprintf(bf, "WDEF%d", i+1); + LogText.m_tConv[i].Key = pIniFile->ReadString("ExtConv", bf, LogText.m_tConv[i].Key); + sprintf(bf, "WLEN%d", i+1); + LogText.m_tConv[i].w = pIniFile->ReadInteger("ExtConv", bf, LogText.m_tConv[i].w); + } + for( i = 0; i < TEXTCONVMAX; i++ ){ + sprintf(bf, "RDEF%d", i+1); + LogText.m_rConv[i].Key = pIniFile->ReadString("ExtConv", bf, LogText.m_rConv[i].Key); + sprintf(bf, "RLEN%d", i+1); + LogText.m_rConv[i].w = pIniFile->ReadInteger("ExtConv", bf, LogText.m_rConv[i].w); + } + as = pIniFile->ReadString("Dir", "RecSound", RecDir); + strcpy(RecDir, as.c_str()); + + for( i = 0; i < RECMENUMAX; i++ ){ + sprintf(bf, "File%d", i + 1); + as = pIniFile->ReadString("Recent File", bf, ""); + RecentMenu.SetItemText(i, as.c_str()); + } + Log.ReadIniFile("LogSet", pIniFile); + + KExtCmd1->Caption = pIniFile->ReadString("Program", "Name1", KExtCmd1->Caption); + sys.m_ExtCmd[0] = pIniFile->ReadString("Program", "Command1", sys.m_ExtCmd[0]); + KExtCmd2->Caption = pIniFile->ReadString("Program", "Name2", KExtCmd2->Caption); + sys.m_ExtCmd[1] = pIniFile->ReadString("Program", "Command2", sys.m_ExtCmd[1]); + KExtCmd3->Caption = pIniFile->ReadString("Program", "Name3", KExtCmd3->Caption); + sys.m_ExtCmd[2] = pIniFile->ReadString("Program", "Command3", sys.m_ExtCmd[2]); + KExtCmd4->Caption = pIniFile->ReadString("Program", "Name4", KExtCmd4->Caption); + sys.m_ExtCmd[3] = pIniFile->ReadString("Program", "Command4", sys.m_ExtCmd[3]); + UpdateExtProgram(); + LoadTNCSetup(pIniFile); + LoadRADIOSetup(pIniFile); + + if( !Remote ){ + for( i = 0; i < CALLLISTMAX; i++ ){ + sprintf(bf, "Item%d", i+1); + as = pIniFile->ReadString("Calls", bf, ""); + if( as.IsEmpty() ) break; + LPSTR p; + for( p = as.c_str(); *p; p++ ){ + if( *p == '_' ) *p = '\t'; + } + TMenuItem *pm = new TMenuItem(this); + pm->Caption = as.c_str(); + pm->RadioItem = FALSE; + pm->OnClick = KCClick; + pm->Checked = FALSE; + pm->Enabled = TRUE; + PopupC->Items->Add(pm); + } + } + +//AA6YQ option, Added by JE3HHT on Sep.2010 + CAA6YQ *pAA6YQ = &pSound->FSKDEM.m_AA6YQ; + pAA6YQ->m_fEnabled = pIniFile->ReadInteger("AA6YQ", "Enabled", pAA6YQ->m_fEnabled); + pAA6YQ->m_bpfTaps = pIniFile->ReadInteger("AA6YQ", "TapsBPF", pAA6YQ->m_bpfTaps); + pAA6YQ->m_bpfFW = ReadDoubleIniFile(pIniFile, "AA6YQ", "WidthBPF", pAA6YQ->m_bpfFW); + pAA6YQ->m_befTaps = pIniFile->ReadInteger("AA6YQ", "TapsBEF", pAA6YQ->m_befTaps); + pAA6YQ->m_befFW = ReadDoubleIniFile(pIniFile, "AA6YQ", "WidthBEF", pAA6YQ->m_befFW); + pAA6YQ->m_afcERR = ReadDoubleIniFile(pIniFile, "AA6YQ", "afcERR", pAA6YQ->m_afcERR); + int verAA6YQ = pIniFile->ReadInteger("AA6YQ", "Version", 0); + if( verAA6YQ < VERAA6YQ ){ + pAA6YQ->m_bpfTaps = 512; + pAA6YQ->m_befTaps = 256; + } + if( pAA6YQ->m_fEnabled ) pAA6YQ->Create(); + delete pIniFile; +} + +//--------------------------------------------------------------------------- +// ƒŒƒWƒXƒgƒŠ‚Ö‚Ì‘‚«ž‚Ý +void __fastcall TMmttyWd::WriteRegister(void) +{ + char bf[256]; + sprintf(bf, "%sMmtty.ini", BgnDir); + + try{ + + TMemIniFile *pIniFile = new TMemIniFile(bf); + + WriteDoubleIniFile(pIniFile, "SoundCard", "SampFreq", sys.m_SampFreq); + WriteDoubleIniFile(pIniFile, "SoundCard", "TxOffset", sys.m_TxOffset); + + AnsiString as; + GetComboBox(as, MarkFreq); + if( !as.IsEmpty() ) pIniFile->WriteString("ComboList", "Mark", as); + GetComboBox(as, ShiftFreq); + if( !as.IsEmpty() ) pIniFile->WriteString("ComboList", "Shift", as); + if( !as.IsEmpty() ) pIniFile->WriteString("ComboList", "Baud", m_asBaud); + GetComboBox(as, HisRST); + if( !as.IsEmpty() ) pIniFile->WriteString("ComboList", "RST", as); + if( !as.IsEmpty() ) pIniFile->WriteString("ComboList", "IIRBW", m_asIIRBW); + if( !as.IsEmpty() ) pIniFile->WriteString("ComboList", "VCO", m_asVCOGain); + if( !as.IsEmpty() ) pIniFile->WriteString("ComboList", "LoopFC", m_asLoopFC); + + pIniFile->WriteString("Grid", "Log", sys.m_LogGridWidths); + pIniFile->WriteString("Grid", "QSO", sys.m_QSOGridWidths); + + pIniFile->WriteString("Help", "HTML", sys.m_HTMLHelp); + pIniFile->WriteString("Help", "MMTTY", sys.m_Help); + pIniFile->WriteString("Help", "MMTTYLOG", sys.m_HelpLog); + pIniFile->WriteString("Help", "DIGITAL", sys.m_HelpDigital); + pIniFile->WriteString("Help", "FontName", sys.m_HelpFontName); + pIniFile->WriteInteger("Help", "FontCharset", sys.m_HelpFontCharset); + pIniFile->WriteInteger("Help", "FontSize", sys.m_HelpFontSize); + pIniFile->WriteInteger("Help", "UseNotePad", sys.m_HelpNotePad); + + if( Remote ){ + if( !(Remote & REMSHOWOFF) ){ + pIniFile->WriteInteger("Window", "WindowTop", Top); + pIniFile->WriteInteger("Window", "WindowLeft", Left); + if( Remote & REMCTRL ){ + pIniFile->WriteInteger("Window", "WindowWidth", Width); + } + else { + pIniFile->WriteInteger("Window", "WindowWidthS", Width); + } + if( Remote & REMMENU ){ + pIniFile->WriteInteger("Window", "WindowHeightRM", Height); + } + else { + pIniFile->WriteInteger("Window", "WindowHeightR", Height); + } + } + } + else { + pIniFile->WriteInteger("Window", "WindowState", WindowState); + pIniFile->WriteInteger("Window", "ShowMacro", KMac->Checked); + pIniFile->WriteInteger("Window", "MemoryWindow", sys.m_MemWindow); + if( (WindowState == wsNormal) && sys.m_MemWindow ){ + pIniFile->WriteInteger("Window", "WindowTopN", Top); + pIniFile->WriteInteger("Window", "WindowLeftN", Left); + pIniFile->WriteInteger("Window", "WindowWidthN", Width); + if( !sys.m_DisWindow ){ + pIniFile->WriteInteger("Window", "WindowHeightN", Height); + } + } + } + pIniFile->WriteInteger("Window", "Disable", sys.m_DisWindow); + pIniFile->WriteInteger("Window", "StayOnTop", sys.m_StayOnTop); + + pIniFile->WriteString("WindowFont", "Name", sys.m_WinFontName); + pIniFile->WriteInteger("WindowFont", "Charset", sys.m_WinFontCharset); + pIniFile->WriteInteger("WindowFont", "Style", sys.m_WinFontStyle); + pIniFile->WriteInteger("WindowFont", "Adjust", sys.m_FontAdjSize); + pIniFile->WriteString("ButtonFont", "Name", sys.m_BtnFontName); + pIniFile->WriteInteger("ButtonFont", "Charset", sys.m_BtnFontCharset); + pIniFile->WriteInteger("ButtonFont", "Style", sys.m_BtnFontStyle); + pIniFile->WriteInteger("ButtonFont", "Adjust", sys.m_BtnFontAdjSize); + + pIniFile->WriteString("Font", "Name", sys.m_FontName); + pIniFile->WriteInteger("Font", "Size", sys.m_FontSize); + pIniFile->WriteInteger("Font", "AdjX", sys.m_FontAdjX); + pIniFile->WriteInteger("Font", "AdjY", sys.m_FontAdjY); + pIniFile->WriteInteger("Font", "Charset", sys.m_FontCharset); + pIniFile->WriteInteger("Font", "Zero", sys.m_FontZero); + pIniFile->WriteInteger("Font", "Style", sys.m_FontStyle); + + pIniFile->WriteInteger("Define", "ControlPanel", KPanel->Checked); + pIniFile->WriteInteger("Button", "Hint", KHint->Checked); + pIniFile->WriteInteger("Define", "FFT", pSound->m_FFTSW); + pIniFile->WriteInteger("Define", "FFTFW", pSound->m_FFTFW); + pIniFile->WriteInteger("Define", "FFTGain", sys.m_FFTGain); + pIniFile->WriteInteger("Define", "FFTResp", sys.m_FFTResp); + pIniFile->WriteInteger("Define", "UOS", rtty.m_uos); + pIniFile->WriteInteger("Define", "CodeSet", sys.m_CodeSet); + pIniFile->WriteInteger("Define", "XYScope", pSound->FSKDEM.m_XYScope); + pIniFile->WriteInteger("Define", "XYScopeSize", m_XYSize); + pIniFile->WriteInteger("Define", "XYScopeReverse", sys.m_XYInv); + pIniFile->WriteInteger("Define", "XYQuality", m_XYQuality); + pIniFile->WriteInteger("Define", "PanelSize", m_PanelSize); + + pIniFile->WriteInteger("Define", "AFC", sys.m_AFC); + pIniFile->WriteInteger("Define", "AFCFixShift", sys.m_FixShift); + pIniFile->WriteInteger("Define", "AFCSQ", sys.m_AFCSQ); + WriteDoubleIniFile(pIniFile, "Define", "AFCTime", sys.m_AFCTime); + WriteDoubleIniFile(pIniFile, "Define", "AFCSweep", sys.m_AFCSweep); + + pIniFile->WriteInteger("Define", "AutoCR", KENT->Checked); + pIniFile->WriteInteger("Define", "WardWarp", KWP->Checked); + pIniFile->WriteInteger("Define", "SendWay", m_SendWay); + pIniFile->WriteInteger("Define", "Running", m_Running); + pIniFile->WriteInteger("Define", "PttTimer", m_PttTimer); + pIniFile->WriteInteger("Define", "TxNet", sys.m_TxNet); + pIniFile->WriteInteger("Define", "TxDisRev", sys.m_TxDisRev); + WriteDoubleIniFile(pIniFile, "Define", "LimitDxGain", sys.m_LimitGain); + pIniFile->WriteInteger("Define", "LimitOverSampling", pSound->FSKDEM.m_LimitOverSampling); + pIniFile->WriteInteger("Define", "LimitAGC", pSound->FSKDEM.m_LimitAGC); + pIniFile->WriteInteger("Define", "ATC", pSound->FSKDEM.m_atc); + pIniFile->WriteInteger("Define", "ATCTime", pSound->FSKDEM.m_atcMark.m_Max); + + pIniFile->WriteInteger("Define", "Majority", pSound->FSKDEM.m_majority); + pIniFile->WriteInteger("Define", "IgnoreFreamError", pSound->FSKDEM.m_ignoreFream); + + pIniFile->WriteInteger("Define", "SQ", pSound->FSKDEM.GetSQ()); + WriteDoubleIniFile(pIniFile, "Define", "SQLevel", pSound->FSKDEM.GetSQLevel()); + + + pIniFile->WriteInteger("Define", "DefFix45", sys.m_DefFix45); + WriteDoubleIniFile(pIniFile, "Define", "DefMarkFreq", sys.m_DefMarkFreq); + WriteDoubleIniFile(pIniFile, "Define", "DefShift", sys.m_DefShift); + pIniFile->WriteInteger("Define", "DefStopLen", sys.m_DefStopLen); + + WriteDoubleIniFile(pIniFile, "Define", "OutputGain", pSound->FSKMOD.GetOutputGain()); + + pIniFile->WriteInteger("Define", "Rev", sys.m_Rev); + + + WriteDoubleIniFile(pIniFile, "Define", "SpaceFreq", pSound->FSKDEM.GetSpaceFreq()); + WriteDoubleIniFile(pIniFile, "Define", "MarkFreq", pSound->FSKDEM.GetMarkFreq()); + + pIniFile->WriteInteger("Define", "VERFFTDEM", VERFFTDEM); + pIniFile->WriteInteger("Define", "DEMTYPE", pSound->FSKDEM.m_type); + WriteDoubleIniFile(pIniFile, "Define", "BaudRate", pSound->FSKDEM.GetBaudRate()); + pIniFile->WriteInteger("Define", "SmoozType", pSound->FSKDEM.m_lpf); + pIniFile->WriteInteger("Define", "SmoozOrder", pSound->FSKDEM.m_lpfOrder); + WriteDoubleIniFile(pIniFile, "Define", "SmoozIIR", pSound->FSKDEM.m_lpffreq); + WriteDoubleIniFile(pIniFile, "Define", "Smooz", pSound->FSKDEM.GetSmoozFreq()); + pIniFile->WriteInteger("Define", "FFTTones", pSound->FSKDEM.m_Phase.m_TONES); + pIniFile->WriteInteger("Define", "SoundRxFifo", sys.m_SoundFifoRX ); + pIniFile->WriteInteger("Define", "SoundTxFifo", sys.m_SoundFifoTX ); + pIniFile->WriteInteger("Define", "SoundPriority", sys.m_SoundPriority); + pIniFile->WriteInteger("Define", "SoundDevice", sys.m_SoundDevice); + pIniFile->WriteInteger("Define", "SoundOutDevice", sys.m_SoundOutDevice); //AA6YQ 1.66 + pIniFile->WriteInteger("Define", "SoundStereo", sys.m_SoundStereo); + pIniFile->WriteString("Define", "SoundMMW", sys.m_SoundMMW); + + pIniFile->WriteInteger("Define", "Tap", pSound->FSKDEM.GetFilterTap()); + pIniFile->WriteInteger("Define", "IIRBW", pSound->FSKDEM.m_iirfw); + + pIniFile->WriteInteger("Define", "Diddle", pSound->FSKMOD.m_diddle); + + pIniFile->WriteInteger("Define", "TxPort", sys.m_TxPort); + pIniFile->WriteInteger("Define", "TxdJob", sys.m_TxdJob); + pIniFile->WriteInteger("Define", "TxFixShift", sys.m_TxFixShift); + pIniFile->WriteString("Define", "PTT", sys.m_TxRxName); + pIniFile->WriteInteger("Define", "InvPTT", sys.m_TxRxInv); + pIniFile->WriteInteger("Define", "TXUOS", sys.m_txuos); + pIniFile->WriteInteger("Define", "MacroImm", sys.m_MacroImm); + pIniFile->WriteInteger("Define", "CharLenFile", sys.m_CharLenFile); + pIniFile->WriteInteger("Define", "DisTX", (sys.m_DisTX & 2) ? sys.m_DisTX : 0); + pIniFile->WriteInteger("Define", "TXLoop", sys.m_echo); + pIniFile->WriteInteger("Define", "TXBPF", pSound->FSKMOD.m_bpf); + pIniFile->WriteInteger("Define", "TXBPFTAP", pSound->FSKMOD.m_bpftap); + + pIniFile->WriteInteger("Define", "TXLPF", pSound->FSKMOD.m_lpf); + WriteDoubleIniFile(pIniFile, "Define", "TXLPFFreq", pSound->FSKMOD.GetLPFFreq()); + + pIniFile->WriteInteger("Define", "TXWaitType", sys.m_LWait); + pIniFile->WriteInteger("Define", "TXCharWait", pSound->FSKMOD.m_CharWait); + pIniFile->WriteInteger("Define", "TXDiddleWait", pSound->FSKMOD.m_DiddleWait); + pIniFile->WriteInteger("Define", "TXCharWaitDiddle", pSound->FSKMOD.m_CharWaitDiddle); + pIniFile->WriteInteger("Define", "TXRandomDiddle", pSound->FSKMOD.m_RandomDiddle); + pIniFile->WriteInteger("Define", "TXWaitTimerDiddle", pSound->FSKMOD.m_WaitTimer); + + pIniFile->WriteInteger("Define", "RXBPF", pSound->m_bpf); + pIniFile->WriteInteger("Define", "RXBPFTAP", pSound->m_bpftap); + pIniFile->WriteInteger("Define", "RXBPFAFC", pSound->m_bpfafc); + WriteDoubleIniFile(pIniFile, "Define", "RXBPFFW", pSound->m_bpffw); + + pIniFile->WriteInteger("Define", "RXlms", pSound->m_lmsbpf); + pIniFile->WriteInteger("Define", "RXlmsDelay", pSound->m_lms.m_lmsDelay); + WriteDoubleIniFile(pIniFile, "Define", "RXlmsMU2", pSound->m_lms.m_lmsMU2); + WriteDoubleIniFile(pIniFile, "Define", "RXlmsGM", pSound->m_lms.m_lmsGM); + pIniFile->WriteInteger("Define", "RXlmsInv", pSound->m_lms.m_lmsInv); + pIniFile->WriteInteger("Define", "RXlmsAGC", pSound->m_lms.m_lmsAGC); + pIniFile->WriteInteger("Define", "RXlmsTAP", pSound->m_lms.m_Tap); + pIniFile->WriteInteger("Define", "RXNotchTAP", pSound->m_lms.m_NotchTap); + pIniFile->WriteInteger("Define", "RXlmsBPF", pSound->m_lms.m_bpf); + pIniFile->WriteInteger("Define", "RXlmsType", pSound->m_lms.m_Type); + pIniFile->WriteInteger("Define", "RXlmsNotch", pSound->m_lms.m_lmsNotch); + pIniFile->WriteInteger("Define", "RXlmsNotch2", pSound->m_lms.m_lmsNotch2); + pIniFile->WriteInteger("Define", "RXlmsTwoNotch", pSound->m_lms.m_twoNotch); + + WriteDoubleIniFile(pIniFile, "Define", "pllVcoGain", pSound->FSKDEM.m_pll.m_vcogain); + pIniFile->WriteInteger("Define", "pllLoopOrder", pSound->FSKDEM.m_pll.m_loopOrder); + WriteDoubleIniFile(pIniFile, "Define", "pllLoopFC", pSound->FSKDEM.m_pll.m_loopFC); + pIniFile->WriteInteger("Define", "pllOutOrder", pSound->FSKDEM.m_pll.m_outOrder); + WriteDoubleIniFile(pIniFile, "Define", "pllOutFC", pSound->FSKDEM.m_pll.m_outFC); + + pIniFile->WriteString("Define", "Call", sys.m_Call); + + pIniFile->WriteInteger("Log", "Switch", sys.m_log); + pIniFile->WriteInteger("Log", "TimeStamp", sys.m_logTimeStamp); + pIniFile->WriteInteger("Log", "TimeStampUTC", sys.m_TimeStampUTC); + pIniFile->WriteInteger("Log", "AutoUTCOffset", sys.m_AutoTimeOffset); + pIniFile->WriteInteger("Log", "UTCOffset", sys.m_TimeOffset); + pIniFile->WriteInteger("Log", "UTCOffsetMin", sys.m_TimeOffsetMin); + pIniFile->WriteInteger("Log", "LogLink", sys.m_LogLink); + pIniFile->WriteInteger("Log", "LinkPoll", LogLink.IsPolling()); + pIniFile->WriteInteger("Log", "LinkPTT", LogLink.GetPTTEnabled()); + LogLink.SaveMMLink(pIniFile); + pIniFile->WriteString("Log", "PathName", LogDir); + + pIniFile->WriteString("Dir", "OutFile", OutFileDir); + + pIniFile->WriteInteger("Log", "ShowTimeStamp", sys.m_ShowTimeStamp); + + pIniFile->WriteString("LogFile", "Name", Log.m_FileName); + + + pIniFile->WriteInteger("WaterFall", "Palette", sys.m_Palette); + + pIniFile->WriteInteger("Input", "Height", PanelIn->Height); + + pIniFile->WriteInteger("Color", "RXBack", sys.m_ColorRXBack); + pIniFile->WriteInteger("Color", "RXChar", sys.m_ColorRX); + pIniFile->WriteInteger("Color", "RXTXChar", sys.m_ColorRXTX); + pIniFile->WriteInteger("Color", "INBack", sys.m_ColorINBack); + pIniFile->WriteInteger("Color", "INChar", sys.m_ColorIN); + pIniFile->WriteInteger("Color", "INTXChar", sys.m_ColorINTX); + + pIniFile->WriteInteger("Color", "WaterLow", sys.m_ColorLow); + pIniFile->WriteInteger("Color", "WaterHigh", sys.m_ColorHigh); + pIniFile->WriteInteger("Color", "XYScope", sys.m_ColorXY); + + AnsiString ws; + + int i; + for(i = 0; i < kkEOF; i++ ){ + sprintf(bf, "S%d", i+1); + pIniFile->WriteInteger("SysKey", bf, sys.m_SysKey[i]); + } + for(i = 0; i < 4; i++ ){ + sprintf(bf, "M%d", i+1); + pIniFile->WriteInteger("InBtnCol", bf, sys.m_InBtnCol[i]); + pIniFile->WriteInteger("InBtnKey", bf, sys.m_InBtnKey[i]); + pIniFile->WriteString("InBtnName", bf, sys.m_InBtnName[i]); + CrLf2Yen(ws, sys.m_InBtn[i]); + pIniFile->WriteString("InBtn", bf, ws); + } + + for( i = 0; i < 16; i++ ){ + sprintf(bf, "M%d", i+1); + pIniFile->WriteInteger("MacroTimer", bf, sys.m_UserTimer[i]); + pIniFile->WriteInteger("MacroCol", bf, sys.m_UserCol[i]); + pIniFile->WriteInteger("MacroKey", bf, sys.m_UserKey[i]); + pIniFile->WriteInteger("MacroEditKey", bf, sys.m_UserEditKey[i]); + pIniFile->WriteString("MacroName", bf, sys.m_UserName[i]); + CrLf2Yen(ws, sys.m_User[i]); + pIniFile->WriteString("Macro", bf, ws); + } + + for( i = 0; i < MSGLISTMAX; i++ ){ + sprintf(bf, "M%d", i+1); + pIniFile->WriteInteger("MsgKey", bf, sys.m_MsgKey[i]); + if( !sys.m_MsgName[i].IsEmpty() ){ + pIniFile->WriteString("MsgName", bf, sys.m_MsgName[i]); + CrLf2Yen(ws, sys.m_MsgList[i]); + pIniFile->WriteString("MsgList", bf, ws); + } + else { // Á‹Ž—p + pIniFile->WriteString("MsgList", bf, ""); + pIniFile->WriteString("MsgName", bf, ""); + break; + } + } + pIniFile->WriteString("Dir", "ExtLog", ExtLogDir); + for( i = 0; i < TEXTCONVMAX; i++ ){ + sprintf(bf, "WDEF%d", i+1); + pIniFile->WriteString("ExtConv", bf, LogText.m_tConv[i].Key); + sprintf(bf, "WLEN%d", i+1); + pIniFile->WriteInteger("ExtConv", bf, LogText.m_tConv[i].w); + } + for( i = 0; i < TEXTCONVMAX; i++ ){ + sprintf(bf, "RDEF%d", i+1); + pIniFile->WriteString("ExtConv", bf, LogText.m_rConv[i].Key); + sprintf(bf, "RLEN%d", i+1); + pIniFile->WriteInteger("ExtConv", bf, LogText.m_rConv[i].w); + } + pIniFile->WriteString("Dir", "RecSound", RecDir); + for( i = 0; i < RecentMenu.GetCount(); i++ ){ + sprintf(bf, "File%d", i + 1); + pIniFile->WriteString("Recent File", bf, RecentMenu.GetItemText(i)); + } + Log.WriteIniFile("LogSet", pIniFile); + + pIniFile->WriteString("Program", "Name1", KExtCmd1->Caption); + pIniFile->WriteString("Program", "Command1", sys.m_ExtCmd[0]); + pIniFile->WriteString("Program", "Name2", KExtCmd2->Caption); + pIniFile->WriteString("Program", "Command2", sys.m_ExtCmd[1]); + pIniFile->WriteString("Program", "Name3", KExtCmd3->Caption); + pIniFile->WriteString("Program", "Command3", sys.m_ExtCmd[2]); + pIniFile->WriteString("Program", "Name4", KExtCmd4->Caption); + pIniFile->WriteString("Program", "Command4", sys.m_ExtCmd[3]); + + SaveTNCSetup(pIniFile); + SaveRADIOSetup(pIniFile); + + if( !Remote ){ + for( i = 0; i < PopupC->Items->Count; i++ ){ + sprintf(bf, "Item%d", i+1); + char bbf[64]; + StrCopy(bbf, AnsiString(PopupC->Items->Items[i]->Caption).c_str(), 63); //JA7UDE 0427 + LPSTR p; + for( p = bbf; *p; p++ ){ + if( *p == '\t' ) *p = '_'; + } + pIniFile->WriteString("Calls", bf, bbf); + } + } + +//AA6YQ option, Added by JE3HHT on Sep.2010 + CAA6YQ *pAA6YQ = &pSound->FSKDEM.m_AA6YQ; + pIniFile->WriteInteger("AA6YQ", "Version", VERAA6YQ); + pIniFile->WriteInteger("AA6YQ", "Enabled", pAA6YQ->m_fEnabled); + pIniFile->WriteInteger("AA6YQ", "TapsBPF", pAA6YQ->m_bpfTaps); + WriteDoubleIniFile(pIniFile, "AA6YQ", "WidthBPF", pAA6YQ->m_bpfFW); + pIniFile->WriteInteger("AA6YQ", "TapsBEF", pAA6YQ->m_befTaps); + WriteDoubleIniFile(pIniFile, "AA6YQ", "WidthBEF", pAA6YQ->m_befFW); + WriteDoubleIniFile(pIniFile, "AA6YQ", "afcERR", pAA6YQ->m_afcERR); + + pIniFile->UpdateFile(); + delete pIniFile; + + } + catch(...){ + ErrorMB((Font->Charset != SHIFTJIS_CHARSET)?"Cannot update MMTTY.INI":"MMTTY.INI‚ðXV‚Å‚«‚Ü‚¹‚ñ."); + } +} +//--------------------------------------------------------------------------- +int __fastcall TMmttyWd::IsTxIdle(void) +{ + if( sys.m_TxPort ){ + if( !pSound->FSKMOD.IsIdle() ) return 0; + if( pComm != NULL ){ + return pComm->m_idle; + } + return 1; + } + else { + return pSound->FSKMOD.IsIdle(); + } +} +//--------------------------------------------------------------------------- +int __fastcall TMmttyWd::GetTxBufCount(void) +{ + int r = pSound->FSKMOD.GetBufCount(); + if( sys.m_TxPort && (pComm != NULL) ){ + int rr = pComm->GetBufCount(); + if( rr > r ) r = rr; + } + return r; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RecvJob(void) +{ + char c; + while(1){ + int d = pSound->FSKDEM.GetData(); + if( d < 0 ){ + break; + } + switch(pSound->FSKDEM.m_BitLen){ + case 7: + d &= 0x007f; + case 8: + if( d || Remote & REMNOCNV ){ + if( d ) PrintText.PutChar(char(d)); + PutTNC(char(d)); + } + break; + case 6: + default: + if( d >= 0 ){ + if( Remote ){ + if( Remote & REMNOCNV ) PutTNC(BYTE(d)); + } + else { + if( TNC.Type == 2 ) PutTNC(BYTE(d)); + } + c = rtty.ConvAscii(d); + if( c ){ + PrintText.PutChar(c); + if( Remote ){ + if( !(Remote & REMNOCNV) ) PutTNC(c); + } + else { + if( TNC.Type != 2 ) PutTNC(c); + } + } + else { + if( SBFIG->Down != rtty.m_fig ){ + SBFIG->Down = rtty.m_fig; + if( Remote ) PostApp(TXM_FIGEVENT, rtty.m_fig); + } + } + } + else { + break; + } + break; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::TimerTimer(TObject *Sender) +{ + if( pSound == NULL ) return; + + if( DisPaint != TRUE ){ + if( KXYScope->Checked && (DrawXY() == TRUE) ){ + PBoxXYPaint(NULL); + } + if( Remote && (pMap != NULL) ){ + if( !(Remote & REMDISSHARED) ){ + pMap->flagLostSound = pSound->m_Err; + pMap->flagOverflow = SBTX->Down ? 0 : pSound->FSKDEM.m_OverFlow; + pMap->txBuffCount = (Remote & REMVIATX) ? FifoEdit.GetLen() : GetTxBufCount(); + } + if( Remote & REMSHOWOFF ){ + if( pSound->m_Err ) pSound->m_Err--; + pSound->FSKDEM.m_OverFlow = 0; + } + } + if( pSound->DrawFFT(pBitmapFFTIN, 0, KXYScope->Checked ? PBoxXY->Width : 0) ){ + if( pTnc ){ + pTnc->NotifyFFT(pSound->fftIN.m_fft); + } + if( Remote && (pMap != NULL) ){ + if( !pMap->flagFFT ){ + SetRemoteFFT(); + } + } + PBoxFFTINPaint(NULL); + if( pSound->m_FFTSW ){ + if( pSound->DrawFFTWater(pBitmapWater, 0, KXYScope->Checked ? PBoxXY->Width : 0) ){ + PBoxWaterPaint(NULL); + } + if( sys.m_AFC && (!SBTX->Down || (sys.m_echo == 2)) ){ + if( !MarkFreq->DroppedDown && !ShiftFreq->DroppedDown ){ + if( pSound->DoAFC() ){ + m_DisEvent++; + MarkFreq->Text = pSound->FSKDEM.GetMarkFreq(); + ShiftFreq->Text = pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq(); + if( pRadio != NULL ) pRadio->SetMarkFreq(pSound->FSKDEM.GetMarkFreq()); + m_DisEvent--; + RemoteFreq(); + } + } + } + } + } + if( pSound->fftIN.m_FFTDIS ){ + m_DisEvent++; + KFFT->Checked = FALSE; + pSound->m_FFTSW = 0; + pSound->fftIN.InitFFT(); + UpdateUI(); + m_DisEvent--; + } + } + DrawSQ(); + PBoxSQPaint(NULL); + RecvJob(); + if( p_SendFileDlg != NULL ){ + if( SBTX->Down ){ + int r = p_SendFileDlg->Timer(GetTxBufCount()); + if( r ){ + delete p_SendFileDlg; + p_SendFileDlg = NULL; + if( r == 2 ){ + pSound->FSKMOD.DeleteTXBuf(); + if( pComm != NULL ) pComm->InitTxBuf(); + } + } + } + else { + delete p_SendFileDlg; + p_SendFileDlg = NULL; + } + } + if( SBTX->Down ){ + if( IsTxIdle() ){ + if( m_Macro ){ + switch(m_MacroStat){ + case 1: // ŽóMØ‚è‘Ö‚¦ + if( m_MacTimer && (m_MacRetry >= 1) && (m_MacRetry <= 16) ){ + if( sys.m_UserTimer[m_MacRetry-1] ){ + m_MacTimer = (sys.m_UserTimer[m_MacRetry-1] * 100) + GetTickCount(); + } + else { + ClearMacroTimer(); + } + } + m_MacroStat = 0; + m_Macro = 0; + ToRX(0); + break; + case 2: // ŒJ‚è•Ô‚µ + OutputStr(m_NowStr.c_str()); + break; + default: + m_MacroStat = 0; + m_Macro = 0; + break; + } + } + if( m_PttTimer && m_PttTimerCount ){ + if( DWORD(m_PttTimerCount) <= ::GetTickCount() ){ + SBTX->Down = FALSE; + SBTXClick(NULL); + UpdatePttTimer(); + } + } + } + else if( m_PttTimer ){ + UpdatePttTimer(); + } + if( pComm != NULL ) pComm->Timer(); + } + else if( m_MacTimer && m_MacRetry ){ + if( DWORD(m_MacTimer) <= GetTickCount() ){ + m_MacTimer = 0; + if( m_MacRetry ){ + MacBtnExec(m_MacRetry-1); + } + } + } + else if( KTest->Checked ){ + if( pSound->FSKMOD.GetBufCount() < 3 ){ + const char TestData[]="\r\nRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY\r\n" + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" + "-?:$!&'().,;/\x22"; + + OutputStr(TestData); + } + } + if( SBTX->Down && (!m_Macro) && (!m_FifoOutTimer) ){ + while( pSound->FSKMOD.GetBufCount() <= 2 ){ + if( !m_ReqRecv ){ + if( m_SendWay == 1 ){ + if( !FifoEdit.IsSAS(0) ) break; + } + else if( m_SendWay == 2 ){ + if( !FifoEdit.IsSAS(1) ) break; + } + } + char bf[3]; +_try:; + bf[1] = 0; + bf[0] = FifoEdit.GetChar(); + if( bf[0] != -1 ){ + if( bf[0] && (bf[0] != '#') ){ + if( bf[0] == '%' ){ + bf[1] = FifoEdit.GetChar(); + bf[2] = 0; + if( bf[1] == '{' ){ + char bbf[1024]; + bbf[0] = '%'; bbf[1] = '{'; + LPSTR t = &bbf[2]; + while(FifoEdit.GetLen()){ + *t = FifoEdit.GetChar(); + if( *t == '}' ){ + t++; + break; + } + t++; + } + *t = 0; + OutputStr(bbf); + } + else { + OutputStr(bf); + } + } + else if( bf[0] == '^' ){ + m_FifoOutTimer = KXYScope->Checked ? 10 : 5; + break; + } + else { + OutputStr(bf); + if( bf[0] == 0x0d ){ + bf[0] = 0x0a; + OutputStr(bf); + } + if( (bf[0] == '_')||(bf[0] =='~') ){ + if( pSound->FSKMOD.GetBufCount() <= 10 ) goto _try; + } + } + } + } + else if( m_ReqRecv && IsTxIdle() ){ + if( (pSound->FSKMOD.m_AmpVal == 1) && (sys.m_TxPort != 2) ){ + pSound->FSKMOD.m_AmpVal = 0; + } + else { + ToRX(0); + } + break; + } + else { + break; + } + if( FifoEdit.GetLen() < 2 ) break; + } + } + if( m_PaletteTimer ){ // 256FƒrƒfƒI‚ÌŽž + m_PaletteTimer--; + if( !m_PaletteTimer ){ + PBoxWater->Invalidate(); + PBoxXY->Invalidate(); + PBoxRx->Invalidate(); + PBoxIn->Invalidate(); + } + } + if( m_FifoOutTimer ) m_FifoOutTimer--; + if( Remote ){ + if( m_RemoteTimer ){ + m_RemoteTimer--; + if( !m_RemoteTimer ){ + Close(); + } + else if( !(m_RemoteTimer % 5) ){ + FirstFileMapping(); + ::PostMessage(APP_HANDLE, MSG_MMTTY, TXM_THREAD, ::GetCurrentThreadId()); + ::PostMessage(APP_HANDLE, MSG_MMTTY, TXM_HANDLE, (DWORD)Handle); + } + } + if( m_pRemOpenName != NULL ){ + HWND hwnd = ::FindWindow(m_OptionDialog ? NULL : "TForm", m_pRemOpenName); + if( hwnd != NULL ){ + ::ShowWindow(hwnd, SW_HIDE); + ::SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW); + ::ShowWindow(hwnd, SW_SHOW); + m_pRemOpenName = NULL; + } + } + } + else { + if( LogLink.IsEnabled() ){ + if( LogLink.TimerLogLink() ){ + UpdateLogLink(); + } + if( LogLink.IsPolling() && LogLink.IsLink() && !SBTX->Down ){ + LogLink.EventGetFreq(); + } + } + if( Log.m_LogSet.m_CopyHis == 2 ){ + if( !m_BARTGTimer ){ + m_BARTGTimer = 15; + UpdateBARTG(); + } + m_BARTGTimer--; + } + } + if( pRadio != NULL ){ + pRadio->Timer(SBTX->Down, Timer->Interval); + if( pRadio->IsFreqChange(AnsiString(Freq->Text).c_str()) ){ //JA7UDE 0428 + Freq->Text = pRadio->GetFreq(); + if( !Remote ){ + Log.SetFreq(&Log.m_sd, AnsiString(Freq->Text).c_str()); //JA7UDE 0428 + } + if( Remote || (pTnc && pTnc->IsMMT()) ){ + double fq = 0; + if( sscanf(AnsiString(Freq->Text).c_str(), "%lf", &fq) == 1 ){ //JA7UDE 0428 + int freq = int(fq * 1000.0); + if( Remote ) ::PostMessage(APP_HANDLE, MSG_MMTTY, TXM_RADIOFREQ, freq); + if( pTnc && pTnc->IsMMT() ) pTnc->GetNMMT()->m_radiofreq = freq; + } + } + } + } + if( pTnc != NULL ){ + OnTncEvent(); + pTnc->Notify(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateBARTG(void) +{ + if( !SBQSO->Down && !SBTX->Down ){ + SYSTEMTIME st; + GetUTC(&st); + if( st.wMinute != Log.m_UTC.wMinute ){ + Log.SetHisUTC(); + HisRST->Text = Log.m_sd.ur; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::ClearMacroTimer(void) +{ + if( m_MacTimer ){ // ƒ}ƒNƒ‘—M‚Ì‹­§“I‚È’†Ž~ + m_MacTimer = 0; + GetSB(m_MacRetry-1)->Down = FALSE; + if( (pSound != NULL) && pSound->m_Tx ) ToRX(1); + } + UpdatePttTimer(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateLogLink(void) +{ + if( !Remote ){ + LogLink.UpdateLink(sys.m_LogLink); + UpdateTitle(); + } +} +//--------------------------------------------------------------------------- +// æs•ÒWƒpƒbƒh‚Ì•\ަ +// ƒtƒH[ƒJƒX‚Ì’²® +void __fastcall TMmttyWd::AdjustFocus(void) +{ + if( !Visible ) return; + if( !Application->Active ) return; + if( Remote ){ +// Application->Active = FALSE; + if( m_OptionDialog || (m_pRemOpenName != NULL) ){ + return; + } + if( Remote & REMSHOWOFF ) return; + if( Remote & REMDISFOCUS ) return; + if( (APP_HANDLE != HWND_BROADCAST) && (Application->Active == TRUE) ){ + ::SetForegroundWindow(APP_HANDLE); + } + } + else if( PanelRx->Visible ){ + PanelRx->SetFocus(); + FifoEdit.SetCursor(1); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::TimerFocus(void) +{ + if( !Visible ) return; + if( !Application->Active ) return; + if( Remote ){ + if( ActiveControl != PanelFFT ){ +// if( Remote & REMDISFOCUS ) return; + if( MarkFreq->DroppedDown ) return; + if( ShiftFreq->DroppedDown ) return; + if( DemoBox1->DroppedDown ) return; + if( DemoBox2->DroppedDown ) return; + if( PanelFFT->Visible ) PanelFFT->SetFocus(); + } + } + else if( ActiveControl != PanelRx ){ + FifoEdit.SetCursor(0); + if( MarkFreq->DroppedDown ) return; + if( ShiftFreq->DroppedDown ) return; + if( DemoBox1->DroppedDown ) return; + if( DemoBox2->DroppedDown ) return; + if( MsgList->DroppedDown ) return; + if( HisCall->Focused() ) return; + if( HisName->Focused() ) return; + if( HisQTH->Focused() ) return; + if( ActiveControl == HisRST ) return; + if( ActiveControl == MyRST ) return; + if( ActiveControl == Freq ) return; + AdjustFocus(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxFFTINPaint(TObject *Sender) +{ + if( PBoxFFTIN->Visible ){ + PBoxFFTIN->Canvas->Draw(0, 0, (TGraphic*)pBitmapFFTIN); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxWaterPaint(TObject *Sender) +{ + if( PBoxWater->Visible ){ + PBoxWater->Canvas->Draw(0, 0, (TGraphic*)pBitmapWater); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateRev(void) +{ + int txrev = sys.m_Rev; + if( sys.m_TxDisRev ) txrev = 0; + pSound->FSKMOD.SetRev(txrev); + int rxrev = sys.m_Rev; + if( SBTX->Down && (sys.m_echo != 2) ) rxrev = txrev; + pSound->FSKDEM.SetRev(rxrev); +#if 0 + if( !SBTX->Down || !sys.m_TxDisRev ){ + pSound->FSKDEM.SetRev(sys.m_Rev); + pSound->FSKMOD.SetRev(sys.m_Rev); + } + else { + pSound->FSKDEM.SetRev(0); + pSound->FSKMOD.SetRev(0); + } +#endif +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBRevClick(TObject *Sender) +{ + sys.m_Rev = SBRev->Down; + UpdateRev(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBDemClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + pSound->FSKDEM.m_type++; + if( pSound->FSKDEM.m_type >= 4 ) pSound->FSKDEM.m_type = 0; + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBFIGClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + rtty.m_fig = SBFIG->Down; + if( Remote ) PostApp(TXM_FIGEVENT, rtty.m_fig); + AdjustFocus(); +} +void __fastcall TMmttyWd::SBAFCClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + sys.m_AFC = SBAFC->Down; + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBATCClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + pSound->FSKDEM.m_atc = SBATC->Down; + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBNETClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + sys.m_TxNet = SBNET->Down; + if( SBTX->Down ){ + UpdateNet(); + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBBPFClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + pSound->m_bpf = SBBPF->Down; + if( SBBPF->Down ) pSound->CalcBPF(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBLMSClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + pSound->m_lmsbpf = SBLMS->Down; + if( SBLMS->Down ){ + pSound->CalcBPF(); + } + else if( pSound->m_lms.m_twoNotch ){ + pSound->m_lms.m_lmsNotch = pSound->m_lms.m_lmsNotch2 = 0; + } + RemoteFreq(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBLMSMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ){ + pSound->m_lms.m_Type = pSound->m_lms.m_Type ? 0 : 1; + UpdateLMS(); + SBLMSClick(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBSQClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + pSound->FSKDEM.SetSQ(SBSQ->Down); + UpdateUI(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::MarkFreqChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + double sf; + sscanf(AnsiString(MarkFreq->Text).c_str(), "%lf", &sf); //JA7UDE 0428 + if( (sf >= MARKL) && (sf < SPACEH) ){ + double sft = pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq(); + pSound->FSKDEM.SetMarkFreq(sf); + pSound->FSKMOD.SetMarkFreq(sf); + if( pRadio != NULL ) pRadio->SetMarkFreq(sf); + sf += sft; + pSound->FSKDEM.SetSpaceFreq(sf); + pSound->FSKMOD.SetSpaceFreq(sf); + if( SBBPF->Down || SBLMS->Down ) pSound->CalcBPF(); + } + RemoteFreq(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetShift(double sf) +{ + if( (sf >= SHIFTL) && (sf < 1500.0) ){ + if( sys.m_FixShift == 3 ){ + double sfq = pSound->FSKDEM.GetSpaceFreq(); + double mfq = pSound->FSKDEM.GetMarkFreq(); + mfq = ((mfq + sfq - sf) * 0.5); + mfq = double(int(mfq + 0.5)); + pSound->FSKDEM.SetMarkFreq(mfq); + pSound->FSKMOD.SetMarkFreq(mfq); + if( pRadio != NULL ) pRadio->SetMarkFreq(mfq); + m_DisEvent--; + MarkFreq->Text = mfq; + m_DisEvent++; + } + double f = pSound->FSKDEM.GetMarkFreq() + sf; + m_DisEvent++; + if( f >= (DemSamp*0.5) ){ + f = 1445.0; + MarkFreq->Text = f; + pSound->FSKDEM.SetMarkFreq(f); + pSound->FSKMOD.SetMarkFreq(f); + if( pRadio != NULL ) pRadio->SetMarkFreq(f); + f += sf; + pSound->FSKDEM.SetSpaceFreq(f); + pSound->FSKMOD.SetSpaceFreq(f); + } + else { + pSound->FSKDEM.SetSpaceFreq(f); + pSound->FSKMOD.SetSpaceFreq(f); + } + if( SBBPF->Down || SBLMS->Down ) pSound->CalcBPF(); + RemoteFreq(); + m_DisEvent--; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::ShiftFreqChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + double sf; + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lf", &sf); //JA7UDE + SetShift(sf); +} +//--------------------------------------------------------------------------- +// ƒNƒCƒbƒNƒVƒtƒgƒ`ƒFƒ“ƒW +void __fastcall TMmttyWd::Label3Click(TObject *Sender) +{ + if( m_DisEvent ) return; + + double sf; + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lf", &sf); + if( sf < 185.0 ){ + sf = 200; + } + else if( sf < 210.0 ){ + sf = 220; + } + else if( sf < 250.0 ){ + sf = 350; + } + else if( sf < 400.0 ){ + sf = 450; + } + else { + sf = 170; + } +// sf = (sf < 185.0) ? 200 : 170; + m_DisEvent++; + ShiftFreq->Text = sf; + SetShift(sf); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBUOSClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + rtty.m_uos = SBUOS->Down; + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KTestClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + ClearMacroTimer(); + KTest->Checked = KTest->Checked ? 0 : 1; + + if( KTest->Checked ){ + rtty.ClearTX(); + pSound->FSKMOD.ClearTXBuf(); + pSound->FSKMOD.SetBaudRate(pSound->FSKDEM.GetBaudRate()); + pSound->FSKMOD.SetMarkFreq(pSound->FSKDEM.GetMarkFreq()); + pSound->FSKMOD.SetSpaceFreq(pSound->FSKDEM.GetSpaceFreq()); + pSound->FSKMOD.SetRev(pSound->FSKDEM.GetRev()); + if( pComm != NULL ) pComm->EnbTX(1); + } + else if( !SBTX->Down ){ + if( pComm != NULL ) pComm->EnbTX(0); + } + pSound->m_Test = KTest->Checked; + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::TBCharWaitChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + switch(sys.m_LWait){ + case 1: + pSound->FSKMOD.m_DiddleWait = GetTBValue(TBCharWait->Position, 50, 50) + 0.5; + break; + default: + pSound->FSKMOD.m_CharWait = GetTBValue(TBCharWait->Position, 50, 50) + 0.5; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::LTapClick(TObject *Sender) +{ + m_Baud = m_Baud ? FALSE : TRUE; + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxRxPaint(TObject *Sender) +{ + static int flag = 0; + + if( Remote ) return; + + if( PBoxRx->Canvas->ClipRect.Top ){ + if( !flag ){ + PBoxRx->Invalidate(); + flag++; + } + } + else { + flag = 0; + } + if( UsrPal != NULL ){ + PBoxRx->Canvas->Brush->Bitmap = pBitmapRx; + TRect rc; + + rc.Top = 0; + rc.Left = 0; + rc.Right = PBoxRx->Width; + rc.Bottom = PBoxRx->Height; + PBoxRx->Canvas->Brush->Bitmap = pBitmapRx; + PBoxRx->Canvas->FillRect(rc); + } + PrintText.PaintCanvas(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxInPaint(TObject *Sender) +{ + static int flag = 0; + + if( Remote ) return; + if( PBoxIn->Canvas->ClipRect.Top ){ + if( !flag ){ + PBoxIn->Invalidate(); + flag++; + } + } + else { + flag = 0; + } + if( UsrPal != NULL ){ + PBoxIn->Canvas->Brush->Bitmap = pBitmapIn; + TRect rc; + + rc.Top = 0; + rc.Left = 0; + rc.Right = PBoxIn->Width; + rc.Bottom = PBoxIn->Height; + PBoxIn->Canvas->Brush->Bitmap = pBitmapIn; + PBoxIn->Canvas->FillRect(rc); + } + FifoEdit.PaintCanvas(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::FormPaint(TObject *Sender) +{ + if( m_InitFirst == TRUE ){ + m_InitFirst = FALSE; + UpdateColor(); + int f1stInst = FALSE; + if( !Remote ){ + if( (sys.m_Call == "NOCALL") || sys.m_Call.IsEmpty() ){ + f1stInst = TRUE; + AnsiString as = ""; + if( sys.m_Call != "NOCALL" ){ + as = sys.m_Call; + } + if( InputMB("MMTTY", (Font->Charset != SHIFTJIS_CHARSET)?"Please enter your callsign":"‚ ‚È‚½‚̃R[ƒ‹ƒTƒCƒ“‚ð“ü—Í‚µ‚ĉº‚³‚¢.", as) == TRUE ){ + if( !as.IsEmpty() ){ + char bf[MLCALL+1]; + StrCopy(bf, as.c_str(), MLCALL); + jstrupr(bf); + sys.m_Call = bf; + Log.MakePathName(ClipCall(bf)); + UpdateItem(); + } + } + } + char bf[256]; + sprintf(bf, "%sARRL.DX", BgnDir); + Cty.Load(bf); + sprintf(bf, "%sMMCG.DEF", BgnDir); + mmcg.LoadDef(bf); + } + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); + pSound->DrawFFTWater(pBitmapWater, 1, KXYScope->Checked ? PBoxXY->Width : 0); + + if( !Remote ){ + if( !f1stInst ) Log.DoBackup(); + Log.Open(NULL, !f1stInst); // ƒJƒŒƒ“ƒgƒƒOƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ + LogLink.UpdateLink(sys.m_LogLink); + } + UpdateTextData(); + if( Log.m_sd.btime ) SBQSO->Down = TRUE; + OpenCloseCom(); + pSound->Resume(); + m_DisEvent = 0; + if( Remote ){ + ::PostMessage(APP_HANDLE, MSG_MMTTY, TXM_THREAD, ::GetCurrentThreadId()); + ::PostMessage(APP_HANDLE, MSG_MMTTY, TXM_HANDLE, (DWORD)Handle); + ::PostMessage(APP_HANDLE, MSG_MMTTY, TXM_START, 0x00000000); + } +#if 0 + FILE *fp = fopen("eremote.txt", "rb"); + while(!feof(fp)){ + char c = fgetc(fp); + PrintText.PutChar(c); + } + fclose(fp); +#endif + DisPaint = FALSE; + } + else if( pSound != NULL ){ + if( pSound->m_susp && (!Remote) ){ + KExtResetClick(NULL); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::ToTX(LPCSTR p) +{ + if( !SBTX->Down ){ + m_ReqRecv = 0; + SBTX->Down = TRUE; + if( p == NULL ){ + XMIT(1); + } + else { + int f = 1; + for( ; *p; p++ ){ + if( (*p == '~') || ((*p == '%') && (*(p+1)=='{')) ){ + f = 0; + break; + } + else if( (*p != '[')&&(*p != ']')&&(*p != '\\')&&(*p != '_') ){ + break; + } + } + XMIT(f); + } + if( !Remote ) AdjustFocus(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::ToRX(int sw) +{ + if( SBTX->Down ){ + if( pTnc ) pTnc->m_PTT = 0; + if( Remote & REMVIATX ) FifoEdit.Clear(); + if( pComm != NULL ) pComm->DisDiddle(-1); + pSound->FSKMOD.SetDiddleTimer(-1); // Diddle ‹ÖŽ~ + pSound->TrigBCC(); + pSound->FSKMOD.DeleteTXBuf(); + SBTX->Caption = "REQ"; + SBTX->Update(); + if( !sw ){ // ‘—MŠ®—¹‘Ò‚¿ + if( sys.m_TxPort != txTXDOnly ){ + for( int i = 0; (pSound->GetBCC() >= 0) && (i < 200); i++ ){ + RecvJob(); + Sleep(20); + } + } + else { + Sleep(200); + RecvJob(); + } + } + pSound->m_ReqTx = 0; + for( int i = 0; pSound->m_Tx && (i < 200); i++ ){ + RecvJob(); + Sleep(20); + } + m_MacroStat = 0; + m_Macro = 0; + m_ReqRecv = 0; + SBTX->Caption = "TX"; + SBTX->Down = 0; + PrintText.SetTX(0); + if( sys.m_logTimeStamp ) PrintText.TrigTimeStamp("RX", sys.m_ShowTimeStamp); + UpdateRev(); + if( sys.m_echo != 2 ){ + rtty.ClearRX(); + pSound->FSKDEM.ClearRXBuf(); + pSound->m_bpf = SBBPF->Down; + } + UpdateLimit(); + if( pComm != NULL ) pComm->SetTXRX(0); + if( pRadio != NULL ) pRadio->SetPTT(0); + if( pTnc != NULL ) pTnc->SetPTT(0); + LogLink.SetPTT(0); + SBFIG->Down = rtty.m_fig; + if( Remote ) PostApp(TXM_FIGEVENT, rtty.m_fig); + UpdateUI(); + TimerFocus(); + UpdateNet(); + if( Remote ){ + if( (pMap != NULL) && (sys.m_echo != 2) && !(Remote & REMDISSHARED) ){ + memset(pMap->arrayFFT, 0, sizeof(pMap->arrayFFT)); + memset(pMap->arrayX, 0, sizeof(pMap->arrayX)); + memset(pMap->arrayY, 0, sizeof(pMap->arrayY)); + } + PostApp(TXM_PTTEVENT, 0); + } + if( pComm != NULL ) pComm->EnbTX(0); + } + if( !Remote ) AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateNet(void) +{ + if( SBTX->Down ){ // ‘—MØ‚è‘Ö‚¦Žž + if( sys.m_TxNet && (!sys.m_TxFixShift) ){ + pSound->FSKMOD.SetMarkFreq(pSound->FSKDEM.GetMarkFreq()); + pSound->FSKMOD.SetSpaceFreq(pSound->FSKDEM.GetSpaceFreq()); + } + else { + m_RxMarkFreq = pSound->FSKDEM.GetMarkFreq(); + m_RxSpaceFreq = pSound->FSKDEM.GetSpaceFreq(); + double mfq; + double sfq; + if( sys.m_TxNet ){ + mfq = pSound->FSKDEM.GetMarkFreq(); + sfq = pSound->FSKDEM.GetSpaceFreq(); + mfq += ((sfq - mfq) - sys.m_DefShift) * 0.5; + } + else { + mfq = sys.m_DefMarkFreq; + } + mfq = int(mfq); + sfq = mfq + sys.m_DefShift; + pSound->FSKMOD.SetMarkFreq(mfq); + pSound->FSKMOD.SetSpaceFreq(sfq); + pSound->FSKDEM.SetMarkFreq(mfq); + pSound->FSKDEM.SetSpaceFreq(sfq); + m_DisEvent++; + MarkFreq->Text = mfq; + ShiftFreq->Text = sys.m_DefShift; + m_DisEvent--; + RemoteFreq(); + } + } + else { // ŽóMØ‚è‘Ö‚¦Žž + if( !sys.m_TxNet || sys.m_TxFixShift ){ + pSound->FSKDEM.SetMarkFreq(m_RxMarkFreq); + pSound->FSKDEM.SetSpaceFreq(m_RxSpaceFreq); + if( pRadio != NULL ) pRadio->SetMarkFreq(m_RxMarkFreq); + m_DisEvent++; + MarkFreq->Text = m_RxMarkFreq; + ShiftFreq->Text = m_RxSpaceFreq - m_RxMarkFreq; + m_DisEvent--; + RemoteFreq(); + } + } +} +//--------------------------------------------------------------------------- +// ‹­§“I‚ÈŽóM +void __fastcall TMmttyWd::SBTXOFFClick(TObject *Sender) +{ + ClearMacroTimer(); + ToRX(1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::XMIT(int sw) +{ + if( !Remote && (sys.m_DisTX&1) ){ + SBTX->Down = FALSE; + return; + } + m_MacroStat = 0; + m_Macro = 0; + m_ReqRecv = 0; + SBTX->Caption = "REQ"; + SBTX->Update(); + pSound->FSKMOD.ClearTXBuf(); + rtty.ClearTX(); + pSound->FSKMOD.SetBaudRate(pSound->FSKDEM.GetBaudRate()); + UpdateNet(); + UpdateRev(); + if( Remote ) PostApp(TXM_PTTEVENT, 1); + if( pComm != NULL ) pComm->SetTXRX(1); + if( pRadio != NULL ) pRadio->SetPTT(1); + if( pTnc != NULL ) pTnc->SetPTT(1); + LogLink.SetPTT(1); + if( Remote && m_RemoteDelay ) ::Sleep(m_RemoteDelay); + pSound->m_ReqTx = 1; + pSound->FSKMOD.m_Amp.Reset(); + pSound->FSKMOD.m_AmpVal = 1; + pSound->FSKMOD.OutTone(sw, pSound->m_BuffSize); + if( sys.m_echo != 2 ){ + pSound->FSKDEM.ClearRXBuf(); + if( !SBNET->Down ){ + pSound->m_bpf = 0; + } + } +#if 1 + if( sys.m_TxPort != txTXD ){ + for( int i = 0; (!pSound->m_Tx) && (i < 200); i++ ) Sleep(20); +// pSound->FSKMOD.OutTone(sw, pSound->m_BuffSize); + } +#else + for( int i = 0; (!pSound->m_Tx) && (i < 200); i++ ) Sleep(20); + pSound->FSKMOD.OutTone(sw, pSound->m_BuffSize); +#endif + SBTX->Caption = "TX"; + if( sys.m_logTimeStamp ) PrintText.TrigTimeStamp("TX", sys.m_ShowTimeStamp); + if( sys.m_echo != 2 ){ + pSound->FSKDEM.ClearRXBuf(); + } + SBFIG->Down = rtty.m_fig; + if( Remote ) PostApp(TXM_FIGEVENT, rtty.m_fig); + UpdateUI(); + UpdateLimit(); + pSound->FSKMOD.SetDiddleTimer(SampFreq/4); // 0.25s + if( pComm != NULL ) pComm->EnbTX(1); + PrintText.SetTX(1); + UpdatePttTimer(); +#if 0 + if( (sys.m_echo == 2) && sw ){ + pSound->FSKMOD.SetCount(pSound->m_BuffSize * 3); + } +#endif +// pSound->FSKMOD.OutTone(sw, pSound->m_BuffSize); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBTXClick(TObject *Sender) +{ + ClearMacroTimer(); + if( SBTX->Down ){ + XMIT(1); + if( (!Remote) && KENT->Checked ) OutputStr("\r\n%L"); + } + else if( FifoEdit.GetLen() || ((!IsTxIdle())&& (!m_Macro)) ){ + if( m_ReqRecv ){ + m_ReqRecv = 0; + SBTX->Caption = "TX"; + SBTX->Down = 1; + } + else { + if( (!Remote) && KENT->Checked ){ + char c = FifoEdit.GetLastChar(); + if( (c != 0x0a) && (c != '\\') ) WriteFifoEdit("\r\n"); + } + m_ReqRecv = 1; + SBTX->Caption = "WAIT"; + SBTX->Down = 1; + } + } + else if( (!Remote) && KENT->Checked && (!m_Macro) ){ + OutputStr("\r\n"); + m_ReqRecv = 1; + SBTX->Caption = "WAIT"; + SBTX->Down = 1; + } + else { + SBTX->Down = 1; + ToRX(0); + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +// ƒL[ƒ{[ƒh +void __fastcall TMmttyWd::PushKey(char Key) +{ + Key = char(toupper(Key)); + if( KWP->Checked && (Key == ' ') ){ + char bf[256]; + ConvString(bf, FifoEdit.GetCurLine(), sizeof(bf)-1, 0); + int len = strlen(bf); + if( (len >= 60) || ((len >= (FifoEdit.m_ColMax * 82/100)) && (!Remote)) ){ + FifoEdit.PutChar(Key); + Key = 0x0d; + } + } + if( (pSound->FSKDEM.m_BitLen <= 6) && (Key != '%') && (Key != 0x08) && (Key != '^') ){ + if( !rttysub.IsChar(rttysub.ConvRTTY(Key)) ){ + return; + } + } + FifoEdit.PutChar(Key); +} +//--------------------------------------------------------------------------- +// ƒL[ƒ{[ƒh +void __fastcall TMmttyWd::FormKeyPress(TObject *Sender, char &Key) +{ + if( HisCall->Focused() ) return; + if( HisName->Focused() ) return; + if( HisQTH->Focused() ) return; + if( ActiveControl == HisRST ) return; + if( ActiveControl == MyRST ) return; + if( ActiveControl == Freq ) return; + if( Key == VK_ESCAPE ) return; + + ClearMacroTimer(); + PushKey(Key); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + TShiftState sc1, sc2, sa1, sa2, ss1, ss2; + + WORD nKey = WORD(Key & 0x00ff); + sc1 << ssCtrl; + sc2 << ssCtrl; + sc1 *= Shift; + + sa1 << ssAlt; + sa2 << ssAlt; + sa1 *= Shift; + + ss1 << ssShift; + ss2 << ssShift; + ss1 *= Shift; + + if( sc1 == sc2 ){ // Ctrl+Any + nKey |= 0x0100; + } + else if( sa1 == sa2 ){ // Alt + Any + nKey |= 0x0200; + } + else if( ss1 == ss2 ){ // Shift + Any + nKey |= 0x0400; + } + + ClearMacroTimer(); + if( nKey == (VK_BACK | 0x100) ){ + FifoEdit.LineBackSpace(); + Key = 0; + } +// ƒ†[ƒU[’è‹`‰Â”\‚ȃL[ + else if( nKey == sys.m_SysKey[kkUOS] ){ + SBUOS->Down = SBUOS->Down ? 0 : 1; + SBUOSClick(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkFIG] ){ + SBFIG->Down = SBFIG->Down ? 0 : 1; + SBFIGClick(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkTX] ){ + SBTX->Down = SBTX->Down ? 0 : 1; + SBTXClick(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkTXOFF] ){ + SBTXOFFClick(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkQSO] ){ + if( SBQSO->Enabled ){ + SBQSO->Down = SBQSO->Down ? 0 : 1; + SBQSOClick(NULL); + } + Key = 0; + } + else if( nKey == sys.m_SysKey[kkOnQSO] ){ + QSOIN(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkOffQSO] ){ + QSOOUT(1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkCAPTURE] ){ + CallCapture(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInitBox] ){ + SBInitClick(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkCall] ){ + HisCall->SetFocus(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkName] ){ + m_NameQTH = 0; + UpdateUI(); + HisName->SetFocus(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkQTH] ){ + m_NameQTH = 1; + UpdateUI(); + HisQTH->SetFocus(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkRST] ){ + HisRST->SetFocus(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkMyRST] ){ + MyRST->SetFocus(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkFreq] ){ + Freq->SetFocus(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkFind] ){ + SBFindClick(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkClear] ){ + SBINClearClick(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInUp] ){ + FifoEdit.ScrollBarUp(0); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInDown] ){ + FifoEdit.ScrollBarDown(0); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInPUp] ){ + FifoEdit.ScrollBarUp(1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInPDown] ){ + FifoEdit.ScrollBarDown(1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInHome] ){ + FifoEdit.ScrollBarUp(-1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInEnd] ){ + FifoEdit.ScrollBarDown(-1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkRxUp] ){ + PrintText.ScrollBarUp(0); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkRxDown] ){ + PrintText.ScrollBarDown(0); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkRxPUp] ){ + PrintText.ScrollBarUp(1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkRxPDown] ){ + PrintText.ScrollBarDown(1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkRxHome] ){ + PrintText.ScrollBarUp(-1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkRxEnd] ){ + PrintText.ScrollBarDown(-1); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkCharWaitLeft] ){ + int pos = SetTBValue(pSound->FSKMOD.m_CharWait, 50, 50); + pos-=5; + if( pos < 0 ) pos = 0; + int wait = GetTBValue(pos, 50, 50); + if( pSound->FSKMOD.m_CharWait == wait ) wait--; + if( wait < 0 ) wait = 0; + pSound->FSKMOD.m_CharWait = wait; + UpdateLWait(); + Key = 0; +#if 0 + if( TBCharWait->Position ){ + if( TBCharWait->Position > 5 ){ + TBCharWait->Position -= 5; + } + else { + TBCharWait->Position = 0; + } + TBCharWaitChange(NULL); + } + Key = 0; +#endif + } + else if( nKey == sys.m_SysKey[kkCharWaitRight] ){ + int pos = SetTBValue(pSound->FSKMOD.m_CharWait, 50, 50); + pos+=5; + if( pos > 50 ) pos = 50; + int wait = GetTBValue(pos, 50, 50); + if( pSound->FSKMOD.m_CharWait == wait ) wait++; + if( wait > 50 ) wait = 50; + pSound->FSKMOD.m_CharWait = wait; + UpdateLWait(); + Key = 0; +#if 0 + if( TBCharWait->Position < TBCharWait->Max ){ + if( TBCharWait->Position < (TBCharWait->Max - 5) ){ + TBCharWait->Position += 5; + } + else { + TBCharWait->Position = TBCharWait->Max; + } + TBCharWaitChange(NULL); + } + Key = 0; +#endif + } + else if( nKey == sys.m_SysKey[kkDiddleWaitLeft] ){ + int pos = SetTBValue(pSound->FSKMOD.m_DiddleWait, 50, 50); + pos-=5; + if( pos < 0 ) pos = 0; + int wait = GetTBValue(pos, 50, 50); + if( pSound->FSKMOD.m_DiddleWait == wait ) wait--; + if( wait < 0 ) wait = 0; + pSound->FSKMOD.m_DiddleWait = wait; + UpdateLWait(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkDiddleWaitRight] ){ + int pos = SetTBValue(pSound->FSKMOD.m_DiddleWait, 50, 50); + pos+=5; + if( pos > 50 ) pos = 50; + int wait = GetTBValue(pos, 50, 50); + if( pSound->FSKMOD.m_DiddleWait == wait ) wait++; + if( wait > 50 ) wait = 50; + pSound->FSKMOD.m_DiddleWait = wait; + UpdateLWait(); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInHeightUp] ){ + if( PanelRx->Height > 50 ){ + PanelIn->Height++; + UpdatePanel(); + } + Key = 0; + } + else if( nKey == sys.m_SysKey[kkInHeightDown] ){ + if( PanelIn->Height > 20 ){ + PanelIn->Height--; + UpdatePanel(); + } + Key = 0; + } + else if( nKey == sys.m_SysKey[kkTxLTR] ){ + if( SBTX->Down ){ + FifoEdit.PutChar('%'); + FifoEdit.PutChar('L'); + } + Key = 0; + } + else if( nKey == sys.m_SysKey[kkTxFIG] ){ + if( SBTX->Down ){ + FifoEdit.PutChar('%'); + FifoEdit.PutChar('F'); + } + Key = 0; + } + else if( nKey == sys.m_SysKey[kkDecShift] ){ + int sf; + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lu", &sf); //JA7UDE 0428 + sf-=2; + m_DisEvent++; + ShiftFreq->Text = sf; + SetShift(sf); + m_DisEvent--; + Key = 0; + } + else if( nKey == sys.m_SysKey[kkIncShift] ){ + int sf; + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lu", &sf); //JA7UDE 0428 + sf+=2; + m_DisEvent++; + ShiftFreq->Text = sf; + SetShift(sf); + m_DisEvent--; + Key = 0; + } + else if( nKey == sys.m_SysKey[kkToggleShift] ){ + Label3Click(NULL); + Key = 0; + } + else if( nKey == sys.m_SysKey[kkCList] ){ + HisCallDblClick(NULL); + Key = 0; + } + else if( nKey == sys.m_InBtnKey[0] ){ + SBIN1Click(NULL); + Key = 0; + } + else if( nKey == sys.m_InBtnKey[1] ){ + SBIN2Click(NULL); + Key = 0; + } + else if( nKey == sys.m_InBtnKey[2] ){ + SBIN3Click(NULL); + Key = 0; + } + else if( nKey == sys.m_InBtnKey[3] ){ + SBIN4Click(NULL); + Key = 0; + } + else { + int i; + for( i = 0; i < 16; i++ ){ // ƒ}ƒNƒƒ{ƒ^ƒ“ + if( nKey == sys.m_UserKey[i] ){ + MacBtnExec(i); + Key = 0; + return; + } + } + for( i = 0; i < MSGLISTMAX; i++ ){ // ƒƒbƒZ[ƒWƒŠƒXƒg + if( nKey == sys.m_MsgKey[i] ){ + AnsiString as = sys.m_MsgName[i]; + FindMsgList(as); + Key = 0; + return; + } + } + for( i = 0; i < 5; i++ ){ + if( nKey == Log.m_LogSet.m_QSOMacroKey[i] ){ + if(!Log.m_LogSet.m_QSOMacroStr[i].IsEmpty()){ + ToTX(Log.m_LogSet.m_QSOMacroStr[i].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[i].c_str()); + return; + } + } + } + for( i = 0; i < 16; i++ ){ // ƒ}ƒNƒ•ÒWƒ{ƒ^ƒ“ + if( nKey == sys.m_UserEditKey[i] ){ + EditMB(i); + Key = 0; + return; + } + } + } +} +//--------------------------------------------------------------------------- +// ƒL[ƒ{[ƒh +void __fastcall TMmttyWd::FormKeyUp(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + int n; + switch(Key){ + case VK_UP: + case VK_DOWN: + case VK_LEFT: + case VK_RIGHT: + FormKeyDown(Sender, Key, Shift); + break; + case VK_TAB: + AdjustFocus(); + n = 4 - (FifoEdit.m_WriteCol % 4); + for( ; n; n-- ) FifoEdit.PutChar(' '); + break; + } + Key = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetGreetingString(LPSTR t, LPCSTR pCall, int type) +{ + strcpy(t, type ? "" : "HELLO"); + if( !Cty.IsData() ) return; + LPCSTR p = ClipCC(pCall); + if( *p ){ + int n; + if( (n = Cty.GetNoP(p))!=0 ){ + CTL *cp = Cty.GetCTL(n-1); + if( cp->TD != NULL ){ + SYSTEMTIME now; + GetUTC(&now); + + WORD tim = WORD((now.wHour * 60 + now.wMinute) * 30 + now.wSecond/2); + tim = AdjustRolTimeUTC(tim, *cp->TD); + if( tim ){ + tim /= WORD(30); + if( tim < 12*60 ){ + strcpy(t, type ? "GM" : "GOOD MORNING"); + } + else if( tim < 18*60 ){ + strcpy(t, type ? "GA" : "GOOD AFTERNOON"); + } + else { + strcpy(t, type ? "GE" : "GOOD EVENING"); + } + } + } + } + + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::StoreCWID(LPSTR &tt, char c, int &nc, int size) +{ + const USHORT _tbl[]={ + // 0 1 2 3 4 5 6 7 + 0x0005, 0x8005, 0xc005, 0xe005, 0xf005, 0xf805, 0x7805, 0x3805, // 0-7 + // 8 9 : ; < = > ? + 0x1805, 0x0805, 0x0000, 0x0000, 0xe806, 0x7005, 0xA805, 0xcc06, // 8 + // @ A B C D E F G + 0x0000, 0x8002, 0x7004, 0x5004, 0x6003, 0x8001, 0xd004, 0x2003, // @-G + // H I J K L M N O + 0xf004, 0xc002, 0x8004, 0x4003, 0xb004, 0x0002, 0x4002, 0x0003, // H-O + // P Q R S T U V W + 0x9004, 0x2004, 0xa003, 0xe003, 0x0001, 0xc003, 0xe004, 0x8003, // P-W + // X Y Z + 0x6004, 0x4004, 0x3004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // X-Z + }; + + c = char(toupper(c)); + c &= 0x7f; + int d, nn; + if( c == '/' ){ + d = 0x6805; + nn = d & 0x00ff; + } + else if( c == '@' ){ + d = -1; + nn = 3; + } + else if( (c >= '0') && (c <= 'Z') ){ + c -= '0'; + d = _tbl[c]; + nn = d & 0x00ff; + } + else { + d = -1; + nn = 5; + } + if( d == -1 ){ + nc += nn; + if( nc < (size - 1) ){ + for( ; nn; nn-- ){ + *tt++ = '~'; + } + } + } + else { + for( ; nn; nn-- ){ + if( nc < (size - 5) ){ + *tt++ = '_'; nc++; + if( !(d & 0x8000) ){ + *tt++ = '_'; nc++; + *tt++ = '_'; nc++; + } + *tt++ = '~'; nc++; + d = d << 1; + } + } + } + nc += 2; + if( nc < (size - 1) ){ + *tt++ = '~'; + *tt++ = '~'; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::ConvString(LPSTR t, LPCSTR p, int size, int sw) +{ + int f = (HisCall->Text.IsEmpty() && Log.m_LogSet.m_Contest); + int n, l; + char bf[256]; + SYSTEMTIME now; + + for( n = 0;*p; p++ ){ + if( *p == '%' ){ + p++; + switch(*p){ + case 'm': + strcpy(t, sys.m_Call.c_str()); + break; + case 'c': + strcpy(t, f ? Log.m_asd.call: AnsiString(HisCall->Text).c_str()); //JA7UDE 0428 + break; + case 'n': + if( HisName->Text.IsEmpty() ){ + strcpy(t, "OM"); + } + else { + strcpy(t, AnsiString(HisName->Text).c_str()); //JA7UDE 0428 + } + break; + case 'q': + strcpy(t, AnsiString(HisQTH->Text).c_str()); //JA7UDE 0428 + break; + case 'r': + strcpy(t, f ? Log.m_asd.ur: AnsiString(HisRST->Text).c_str()); //JA7UDE 0428 + break; + case 's': + strcpy(t, f ? Log.m_asd.my: AnsiString(MyRST->Text).c_str()); //JA7UDE 0428 + break; + case 'R': + strcpy(bf, f ? Log.m_asd.ur: AnsiString(HisRST->Text).c_str()); //JA7UDE 0428 + if( strlen(bf) >= 3 ){ + StrCopy(t, bf, 3); + } + else { + strcpy(t, "599"); + } + break; + case 'N': + strcpy(bf, f ? Log.m_asd.ur: AnsiString(HisRST->Text).c_str()); //JA7UDE 0428 + if( strlen(bf) > 3 ){ + strcpy(t, &bf[3]); + } + else { + *t = 0; + } + break; + case 'M': + strcpy(bf, f ? Log.m_asd.my: AnsiString(MyRST->Text).c_str()); //JA7UDE 0428 + if( strlen(bf) > 3 ){ + strcpy(t, &bf[3]); + } + else { + *t = 0; + } + break; + case 'g': + SetGreetingString(t, AnsiString(HisCall->Text).c_str(), 0); //JA7UDE 0428 + break; + case 'f': + SetGreetingString(t, AnsiString(HisCall->Text).c_str(), 1); //JA7UDE 0428 + break; + case 'L': + if( sw ){ + *t = '%'; + *(t+1) = 'L'; + *(t+2) = 0; + } + else { + *t = 0x1f; + *(t+1) = 0; + } + break; + case 'F': + if( sw ){ + *t = '%'; + *(t+1) = 'F'; + *(t+2) = 0; + } + else { + *t = 0x1b; + *(t+1) = 0; + } + break; + case 'E': + goto _ex; + case 'D': + GetUTC(&now); + switch(Log.m_LogSet.m_DateType){ + case 2: + case 3: + sprintf(t, "%02u-%s-%04u", now.wDay, MONT1[now.wMonth], now.wYear); + break; + case 4: + case 5: + sprintf(t, "%s-%02u-%04u", MONT1[now.wMonth], now.wDay, now.wYear); + break; + default: + sprintf(t, "%04u-%s-%02u", now.wYear, MONT1[now.wMonth], now.wDay); + break; + } + break; + case 'T': + GetUTC(&now); + sprintf(t, "%02u:%02u", now.wHour, now.wMinute); + break; + case 't': + GetUTC(&now); + sprintf(t, "%02u%02u", now.wHour, now.wMinute); + break; + case 'x': + *t = 0; + strcpy(bf, f ? Log.m_asd.ur: AnsiString(HisRST->Text).c_str()); //JA7UDE 0428 + if( strlen(bf) > 3 ){ + LPSTR tt; + StrDlm(tt, &bf[3], '-'); + if( *tt ){ + strcpy(t, tt); + } + } + break; + case 'y': + *t = 0; + strcpy(bf, f ? Log.m_asd.ur: AnsiString(HisRST->Text).c_str()); //JA7UDE 0428 + if( strlen(bf) > 3 ){ + LPSTR p, tt; + p = StrDlm(tt, &bf[3], '-'); + if( *p ){ + strcpy(t, p); + } + } + break; + case '{': + { + p++; + LPSTR tt = t; + int nc = n + 2; + if( nc < (size - 1) ){ + *tt++ = '['; // Disable Diddle + *tt++ = '~'; + } + for( ; *p && *p != '}'; p++ ){ + if( *p == '%' ){ + char src[3]; + src[0] = *p++; + src[1] = *p; + src[2] = 0; + char bbf[1024]; + ConvString(bbf, src, sizeof(bf)-1, 0); + LPCSTR pp; + for( pp = bbf; *pp; pp++ ){ + StoreCWID(tt, *pp, nc, size); + } + } + else { + StoreCWID(tt, *p, nc, size); + } + } + *tt = 0; + } + break; + default: + strcpy(t, "%%"); + break; + } + l = strlen(t); + n += l; + if( n >= (size - 1) ) break; + t += l; + } + else if( sw || (*p != '\\') ){ + *t++ = *p; + n++; + } + if( n >= (size - 1) ) break; + } +_ex:; + *t = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OutputStr(LPCSTR pOut) +{ + char bf[1024]; + BYTE OutBf[1024]; + + if( m_NowStr.c_str() != pOut ) m_NowStr = pOut; + ConvString(bf, pOut, sizeof(bf), 0); + int i, len; + switch(pSound->FSKMOD.m_BitLen){ + case 7: + case 8: + len = strlen(bf); + for( i = 0; i < len; i++ ){ + pSound->FSKMOD.PutData(bf[i]); + if( pComm != NULL ) pComm->PutChar(bf[i]); + } + break; + case 6: + default: + len = rtty.ConvRTTY(OutBf, bf); + for( i = 0; i < len; i++ ){ + pSound->FSKMOD.PutData(OutBf[i]); + if( pComm != NULL ) pComm->PutChar(OutBf[i]); + } + break; + } + LPCSTR p; + for( p = &pOut[strlen(pOut)-1]; p >= pOut; p-- ){ + if( *p == '\\' ){ + m_MacroStat = 1; + m_Macro = 17; + if( SBTX->Down && (pSound != NULL) ){ + pSound->FSKMOD.SetDiddleTimer(-1); + if( pComm != NULL ) pComm->DisDiddle(-1); + } + } + else if( *p == '#' ){ + m_MacroStat = 2; + m_Macro = 17; + if( pSound != NULL ) pSound->FSKMOD.SetDiddleTimer(0); + if( pComm != NULL ) pComm->DisDiddle(0); + } + else if( (*p != 0x0d) && (*p != 0x0a) ){ + break; + } + } +} +//--------------------------------------------------------------------------- +TSpeedButton *__fastcall TMmttyWd::GetSB(int n) +{ + TSpeedButton *_sb[]={SBM1, SBM2, SBM3, SBM4, SBM5, SBM6, SBM7, + SBM8, SBM9, SBM10, SBM11, SBM12, SBM13, SBM14, SBM15, SBM16}; + if( (n >= 0) && (n < AN(_sb)) ){ + return _sb[n]; + } + else { + return NULL; + } +} +//--------------------------------------------------------------------------- +int __fastcall TMmttyWd::GetMacroIndex(TObject *Sender) +{ + for( int i = 0; i < 16; i++ ){ + TSpeedButton *_sb[]={SBM1, SBM2, SBM3, SBM4, SBM5, SBM6, SBM7, + SBM8, SBM9, SBM10, SBM11, SBM12, SBM13, SBM14, SBM15, SBM16}; + + if( ((TObject *)_sb[i]) == Sender ) return i; + } + return -1; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::MacBtnExec(int n) +{ + ClearMacroTimer(); + if( n >= 0 ){ + if( !sys.m_User[n].IsEmpty() ){ + LPCSTR p = sys.m_User[n].c_str(); + if( *p == '#' ){ + WriteFifoEdit(p+1); + } + else { + ToTX(p); + if( *p == '\\' ){ + WriteFifoEdit(p+1); + } + else { + OutputStr(p); + m_Macro = n + 1; + if( sys.m_UserTimer[n] ){ + m_MacTimer = (sys.m_UserTimer[n] * 100) + GetTickCount(); + m_MacRetry = m_Macro; + } + else { + m_MacTimer = 0; + m_MacRetry = 0; + } + GetSB(n)->Down = m_MacTimer ? TRUE : FALSE; + } + } + } + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBMClick(TObject *Sender) +{ + TSpeedButton *tp = (TSpeedButton *)Sender; + if( tp->Down ){ + tp->Down = FALSE; + if( sys.m_DisTX&1 ) return; + MacBtnExec(GetMacroIndex(Sender)); + } + else { + ClearMacroTimer(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::EditMB(int n) +{ + if( n >= 0 ){ + TEditDlgBox *pBox = new TEditDlgBox(this); + pBox->TxBtn->Visible = TRUE; + pBox->ButtonName->Text = sys.m_UserName[n]; + if( pBox->Execute(sys.m_User[n], sys.m_UserKey[n], &sys.m_UserCol[n], &sys.m_UserTimer[n], 1) == TRUE ){ + if( pBox->m_JobSel ){ + AnsiString as = pBox->Memo->Text.c_str(); + LPCSTR p = as.c_str(); + if( *p == '#' ){ + WriteFifoEdit(p+1); + } + else { + ToTX(p); + if( *p == '\\' ){ + WriteFifoEdit(p+1); + } + else { + OutputStr(p); + m_Macro = n + 1; + m_MacTimer = 0; + } + } + } + else if( !pBox->ButtonName->Text.IsEmpty() ){ + sys.m_UserName[n] = pBox->ButtonName->Text; + } + } + delete pBox; + UpdateMacro(); + UpdateShortCut(FALSE); + TopWindow(this); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBMMouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ){ + int n = GetMacroIndex(Sender); + EditMB(n); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::FindCall(void) +{ + CWaitCursor w; + m_Dupe = 0; + StrCopy(Log.m_sd.call, AnsiString(HisCall->Text).c_str(), MLCALL); //JA7UDE 0428 + AddCall(Log.m_sd.call); + if( Log.FindSet(&Log.m_Find, Log.m_sd.call) ){ + Log.SetFreq(&Log.m_sd, AnsiString(Freq->Text).c_str()); //JA7UDE 0428 + SDMMLOG sd; + Log.GetData(&sd, Log.m_Find.pFindTbl[0]); // ˆê”ÔÅV‚̃f[ƒ^ + if( Log.m_Find.m_FindCmp1Max && ((!Log.m_LogSet.m_CheckBand) || Log.FindSameBand()) ){ + m_Dupe = 1; + } + else { + m_Dupe = 0; + } + if( (!SBQSO->Down || !Log.m_sd.name[0] ) && Log.m_LogSet.m_CopyName ) strcpy(Log.m_sd.name, sd.name); + if( (!SBQSO->Down || !Log.m_sd.qth[0] ) && Log.m_LogSet.m_CopyQTH ) strcpy(Log.m_sd.qth, sd.qth); + if( (!SBQSO->Down || !Log.m_sd.rem[0] ) && Log.m_LogSet.m_CopyREM ) strcpy(Log.m_sd.rem, sd.rem); + if( (!SBQSO->Down || !Log.m_sd.qsl[0] ) && Log.m_LogSet.m_CopyQSL ) strcpy(Log.m_sd.qsl, sd.qsl); + UpdateTextData(); + if( SBQSO->Down ){ + Log.m_Find.Ins(Log.m_CurNo); + UpdateTextData(); + Log.PutData(&Log.m_sd, Log.m_CurNo); + } + } + else { + if( !SBQSO->Down && Log.m_LogSet.m_CopyName ) Log.m_sd.name[0] = 0; + if( !SBQSO->Down && Log.m_LogSet.m_CopyQTH ) Log.m_sd.qth[0] = 0; + if( !SBQSO->Down && Log.m_LogSet.m_CopyREM ) Log.m_sd.rem[0] = 0; + if( !SBQSO->Down && Log.m_LogSet.m_CopyQSL ) Log.m_sd.qsl[0] = 0; + UpdateTextData(); + } + LPCSTR pCC = ClipCC(Log.m_sd.call); + Log.SetOptStr(0, &Log.m_sd, Cty.GetCountry(pCC)); + Log.SetOptStr(1, &Log.m_sd, Cty.GetCont(pCC)); + UpdateCallsign(); + if( !SBQSO->Down ){ + LogLink.SetMode("RTTY"); + LogLink.SetFreq(AnsiString(Freq->Text).c_str()); //JA7UDE 0428 + LogLink.FindCall(Log.m_sd.call); + } + else { + LogLink.Write(&Log.m_sd, 1); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetYourCallsign(LPCSTR pCall) +{ + if( strcmpi(sys.m_Call.c_str(), pCall) ){ + HisCall->Text = pCall; + FindCall(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetYourName(LPCSTR pName) +{ + HisName->Text = pName; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetYourQTH(LPCSTR pQTH) +{ + HisQTH->Text = pQTH; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetYourRST(LPCSTR pRST) +{ + MyRST->Text = pRST; +} +//--------------------------------------------------------------------------- +static void __fastcall StoreZone(LPSTR t, LPSTR p) +{ + char rst[4]; + char qth[20]; + + rst[0] = qth[0] = 0; + StrCopy(rst, t, 3); + if( !rst[0] ) strcpy(rst, "599"); + if( strlen(t) > 5 ){ + StrCopy(qth, t+5, 20); + } + if( !memcmp(p, "599", 3) ) p+=3; + int d; + sscanf(p, "%u", &d); + sprintf(t, "%s%02u%s", rst, d, qth); +} +//--------------------------------------------------------------------------- +static void __fastcall StoreQTH(LPSTR t, LPSTR p) +{ + char rst[4]; + char zone[3]; + + rst[0] = zone[0] = 0; + StrCopy(rst, t, 3); + if( !rst[0] ) strcpy(rst, "599"); + if( strlen(t) > 3 ){ + StrCopy(zone, t+3, 2); + } + else { + strcpy(zone, " "); + } + sprintf(t, "%s%s%s", rst, zone, p); +} +//--------------------------------------------------------------------------- +static void __fastcall StoreNR(LPSTR t, LPSTR p) +{ + char nr[6]; + StrCopy(nr, p, 5); + if( strlen(nr) < 3 ){ + int n = atoin(nr, -1); + sprintf(nr, "%03u", n); + } + char rst[4]; + char utc[6]; + rst[0] = 0; + LPSTR tt, pp; + pp = StrDlm(tt, t, '-'); + StrCopy(utc, pp, 5); + if( *tt ){ + if( (strlen(tt) > 3) && !utc[0] ){ + int h, m; + sscanf(&tt[3], "%u", &h); + m = h % 100; + h = h / 100; + if( (h >= 0) && (h < 24) && (m >= 0) && (m < 60) ){ + sprintf(utc, "%02u%02u", h, m); + } + } + StrCopy(rst, tt, 3); + } + if( !rst[0] ) strcpy(rst, "599"); + sprintf(t, "%s%s-%s", rst, nr, utc); +} +//--------------------------------------------------------------------------- +static void __fastcall StoreUTC(LPSTR t, LPSTR p) +{ + char rst[MLRST+1]; + char utc[6]; + StrCopy(utc, p, 5); + int h, m; + h = m = 0; + if( sscanf(utc, "%u:%u", &h, &m) != 2 ){ + sscanf(utc, "%u", &h); + m = h % 100; + h = h / 100; + if( (h < 0) || (h >= 24) || (m < 0) || (m >= 60) ){ + StoreNR(t, p); + return; + } + } + sprintf(utc, "%02u%02u", h, m); + rst[0] = 0; + LPSTR tt; + StrDlm(tt, t, '-'); + if( *tt ){ + StrCopy(rst, tt, MLRST); + } + if( !rst[0] ) strcpy(rst, "599"); + sprintf(t, "%s-%s", rst, utc); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxRxMouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbMiddle ) return; + char bf[256]; + char bbf[256]; + + ClearMacroTimer(); + AdjustFocus(); + if( Button == mbRight ){ // ‰Eƒ{ƒ^ƒ“ + PrintText.ShiftText(X, Y); + return; + } + PrintText.GetText(bf, X, Y, 0); + if( bf[0] ){ + jstrupr(bf); + if( HisCall->Text.IsEmpty() || (Log.m_LogSet.m_Contest == testPED) ){ + if( strlen(bf) >= 16 ) bf[16] = 0; + SetYourCallsign(bf); + } + else if( Log.m_LogSet.m_Contest ){ // ƒRƒ“ƒeƒXƒg’† + if( (strlen(bf) <= 2) || + !IsCall(bf) || + ((strlen(bf) == 3) && !HisCall->Text.IsEmpty()) + ){ + PrintText.GetText(bf, X, Y, 1); + jstrupr(bf); +// DelChar(bf, '/'); + if( Log.m_LogSet.m_Contest == testCQRJ ){ // CQ/RJ + strcpy(bbf, AnsiString(MyRST->Text).c_str()); //JA7UDE 0428 + if(!IsNumbs(bf)){ // QTH + StoreQTH(bbf, bf); + } + else { // Zone + StoreZone(bbf, bf); + } + } + else if( Log.m_LogSet.m_Contest == testBARTG ){ + strcpy(bbf, AnsiString(MyRST->Text).c_str()); //JA7UDE 0428 + PrintText.GetText(bf, X, Y, 2); + LPSTR p = bf; + for( ; *p && !isdigit(*p); p++ ); + if( *p ){ + if( strchr(p, ':') != NULL ){ + StoreUTC(bbf, p); + } + else if( (strlen(p) <= 3) || (strlen(p) <= 3) || (bbf[4] == '-') ){ + StoreNR(bbf, p); + } + else { + StoreUTC(bbf, p); + } + } + } + else { // Misc + if( (strlen(bf) >= 4) && !memcmp(bf, "599", 3) ){ // 599xx + strcpy(bbf, bf); + } + else if(strlen(AnsiString(MyRST->Text).c_str()) >= 3 ){ //JA7UDE 0428 + strcpy(bbf, AnsiString(MyRST->Text).c_str()); //JA7UDE 0428 + strcpy(&bbf[3], bf); + } + else { + sprintf(bbf, "599%s", bf); + } + } + m_DisEvent++; + MyRST->Text = bbf; + m_DisEvent--; + } + else if( IsCall(bf) ){ + SetYourCallsign(bf); + } + } + else if( IsRST(bf) ){ + if( (!Log.m_LogSet.m_DefMyRST) && SBQSO->Down && !MyRST->Text.IsEmpty() ){ + if( YesNoMB((Font->Charset != SHIFTJIS_CHARSET)? "Change MyRST ?":"MyRST‚ð•ÏX‚µ‚Ü‚·‚©?") != IDYES ) return; + } + SetYourRST(bf); + } + else if( IsCall(bf) ){ + if( strcmpi(bf, sys.m_Call.c_str()) ){ + if( SBQSO->Down && !HisCall->Text.IsEmpty() ){ + if( YesNoMB((Font->Charset != SHIFTJIS_CHARSET)?"Change Callsign?":"ƒR[ƒ‹ƒTƒCƒ“‚ð•ÏX‚µ‚Ü‚·‚©?") != IDYES ) return; + } + SetYourCallsign(bf); + } + } + else if( m_NameQTH ){ + if( SBQSO->Down && !HisQTH->Text.IsEmpty() ){ + if( YesNoMB((Font->Charset != SHIFTJIS_CHARSET)?"Change QTH?":"‚p‚s‚g‚ð•ÏX‚µ‚Ü‚·‚©?") != IDYES ) return; + } + SetYourQTH(bf); + } + else if( IsName(bf) ){ + if( SBQSO->Down && !HisName->Text.IsEmpty() ){ + if( YesNoMB((Font->Charset != SHIFTJIS_CHARSET)?"Change Name?":"–¼‘O‚ð•ÏX‚µ‚Ü‚·‚©?") != IDYES ) return; + } + SetYourName(bf); + } + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::ScrollBarRxChange(TObject *Sender) +{ + PrintText.ScrollBarChange(); + if( ScrollBarRx->Dragging() == FALSE ){ + TimerFocus(); + } +} + +#if USEPAL +//--------------------------------------------------------------------------- +// Œ»Ý‚̘_—ƒpƒŒƒbƒg‚ð•Ô‚·iTControl::GetPalette‚̃I[ƒoƒ‰ƒCƒhŠÖ”j +HPALETTE __fastcall TMmttyWd::GetPalette(void) +{ + m_PaletteQuery = 1; + if( sys.m_Palette ){ + if( UsrPal == NULL ){ + SetColorIndex(); + } + } + else { + if( UsrPal != NULL ){ + ClosePalette(); + } + } + if( UsrPal != NULL ){ + m_PaletteTimer = 3; + } + return UsrPal; +} +//--------------------------------------------------------------------------- +// ƒpƒŒƒbƒg‚ð휂·‚é +void __fastcall TMmttyWd::ClosePalette(void) +{ + if( UsrPal != NULL ){ + pBitmapWater->Palette = 0; + pBitmapFFTIN->Palette = 0; + pBitmapXY->Palette = 0; + if( pBitmapRx != NULL ) pBitmapRx->Palette = 0; + if( pBitmapIn != NULL ) pBitmapIn->Palette = 0; + ::DeleteObject(UsrPal); + UsrPal = NULL; + sys.d_PaletteMask = 0x00000000; + } + if( pBitmapRx != NULL ){ + PBoxRx->Canvas->Brush->Bitmap = NULL; + PrintText.SetBitmap(NULL); + delete pBitmapRx; + pBitmapRx = NULL; + } + if( pBitmapIn != NULL ){ + PBoxIn->Canvas->Brush->Bitmap = NULL; + FifoEdit.SetBitmap(NULL); + delete pBitmapIn; + pBitmapIn = NULL; + } +} +//--------------------------------------------------------------------------- +// ƒpƒŒƒbƒg‚ð“o˜^‚·‚é +void __fastcall TMmttyWd::SetupPalette(RGBQUAD *pTbl, int max) +{ + struct { /* lgpl */ + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[256]; + }logpal; + + logpal.palVersion = 0x300; + logpal.palNumEntries = WORD(max); + int n = 0; + for( int i = 0; i < max; i++, n++ ){ + logpal.palPalEntry[i].peRed = pTbl[n].rgbRed; + logpal.palPalEntry[i].peGreen = pTbl[n].rgbGreen; + logpal.palPalEntry[i].peBlue = pTbl[n].rgbBlue; + logpal.palPalEntry[i].peFlags = NULL; //PC_NOCOLLAPSE; /*PC_EXPLICIT;*/ + } + + ClosePalette(); + UsrPal = ::CreatePalette((LOGPALETTE *)&logpal); + if( UsrPal != NULL ){ + sys.d_PaletteMask = 0x02000000; + pBitmapWater->Palette = UsrPal; + pBitmapFFTIN->Palette = UsrPal; + pBitmapXY->Palette = UsrPal; + pBitmapWater->IgnorePalette = FALSE; + pBitmapFFTIN->IgnorePalette = FALSE; + pBitmapXY->IgnorePalette = FALSE; + + pBitmapRx = new Graphics::TBitmap(); + pBitmapRx->Width = 8; + pBitmapRx->Height = 8; + pBitmapRx->Palette = UsrPal; + pBitmapIn = new Graphics::TBitmap(); + pBitmapIn->Width = 8; + pBitmapIn->Height = 8; + pBitmapIn->Palette = UsrPal; + pBitmapRx->IgnorePalette = FALSE; + pBitmapIn->IgnorePalette = FALSE; + for( int y = 0; y < 8; y++ ){ + for( int x = 0; x < 8; x++ ){ + pBitmapRx->Canvas->Pixels[x][y] = TColor(sys.m_ColorRXBack | 0x02000000); + pBitmapIn->Canvas->Pixels[x][y] = TColor(sys.m_ColorINBack | 0x02000000); + } + } + PrintText.SetBitmap(pBitmapRx); + FifoEdit.SetBitmap(pBitmapIn); + PBoxRx->Invalidate(); + PBoxIn->Invalidate(); + } +} +//--------------------------------------------------------------------------- +// ƒJƒ‰[ƒCƒ“ƒfƒbƒNƒX‚ð“o˜^‚·‚é +// 256Color‚̃Jƒ‰[ƒCƒ“ƒfƒbƒNƒX‚Í‚O`‚P‚U‚܂Š+int __fastcall TMmttyWd::EntryColor(RGBQUAD *pTbl, TColor col, int n) +{ + DWORD dd = DWORD(col); // xBGR + + RGBQUAD rq; + + rq.rgbBlue = BYTE(dd>>16); + rq.rgbGreen = BYTE(dd>>8); + rq.rgbRed = BYTE(dd); + rq.rgbReserved = 0; + if( !(n & 0x00ff00) ){ + for( int i = 0; i < 256; i++ ){ + if( (pTbl[i].rgbBlue == rq.rgbBlue) && + (pTbl[i].rgbGreen == rq.rgbGreen) && + (pTbl[i].rgbRed == rq.rgbRed) + ){ + return FALSE; + } + } + } + n &= 0x00ff; + pTbl[n] = rq; + return TRUE; +} +//--------------------------------------------------------------------------- +// ƒrƒbƒgƒ}ƒbƒv‚̃Jƒ‰[ƒe[ƒuƒ‹‚ð“o˜^‚·‚é +void __fastcall TMmttyWd::SetColorIndex(void) +{ + RGBQUAD tbl[256]; + memset(tbl, 0, sizeof(tbl)); + + int n = 0; + if( EntryColor(tbl, sys.m_ColorRXBack, n) ) n++; + if( EntryColor(tbl, sys.m_ColorRX, n) ) n++; + if( EntryColor(tbl, sys.m_ColorRXTX, n) ) n++; + if( EntryColor(tbl, sys.m_ColorINBack, n) ) n++; + if( EntryColor(tbl, sys.m_ColorIN, n) ) n++; + if( EntryColor(tbl, sys.m_ColorINTX, n) ) n++; + if( EntryColor(tbl, sys.m_ColorXY, n) ) n++; + for( int i = 0; i < 128; n++, i++ ){ + tbl[n].rgbRed =(unsigned char)(ColorTable[n]); + tbl[n].rgbGreen=(unsigned char)(ColorTable[n] >> 8); + tbl[n].rgbBlue =(unsigned char)(ColorTable[n] >> 16); + } +#if 0 // ƒJƒ‰[‰‰ŽZ‚ðs‚í‚È‚¢‚̂ŕs—v + + // 16`255‚Í‚·‚ׂĕ + for( ;n < 256; n++ ){ + memset(&tbl[n], 0, sizeof(RGBQUAD)); + } + + // ƒzƒƒCƒgi•K‚¸0xff‚É“o˜^j + EntryColor(tbl, clWhite, 0x01ff); + + // Šî–{F‚Ì“o˜^ + const TColor tt[]={ + clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen, clLime, + clLtGray, clMaroon, clNavy, clOlive, clPurple, clRed, clSilver, clTeal, + clWhite, clYellow, + clActiveBorder, clActiveCaption, clAppWorkSpace, clBackground, + clBtnFace, clBtnHighlight, clBtnShadow, clBtnText, clCaptionText, + clGrayText, clHighlight, clHighlightText, clInactiveBorder, + clInactiveCaption, clInactiveCaptionText, clMenu, clMenuText, + clScrollBar, clWindow, clWindowFrame, clWindowText, + }; + n = 254; + for( int i = 0; i < (sizeof(tt)/sizeof(TColor)); i++ ){ + if( EntryColor(tbl, tt[i], n) ) n--; + } +#endif + SetupPalette(tbl, n); +} +#endif +//--------------------------------------------------------------------------- +// FFT IN MOUSE Event +void __fastcall TMmttyWd::PBoxFFTINMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + if( pSound == NULL ) return; + if( sys.m_echo != 2 ){ + ClearMacroTimer(); + if( SBTX->Down ){ + AdjustFocus(); + return; + } + } + + double mfq = pSound->GetScreenFreq(X, PBoxFFTIN->Width, KXYScope->Checked ? PBoxXY->Width : 0); + if( Button == mbRight ){ + if( pSound->m_lms.m_Type){ + if( !SBLMS->Down ){ + pSound->m_lms.m_lmsNotch2 = 0; + pSound->m_lms.m_lmsNotch = int(mfq + 0.5); + SBLMS->Down = TRUE; + SBLMSClick(NULL); + } + else { + pSound->m_lms.m_lmsNotch2 = pSound->m_lms.m_lmsNotch; + pSound->m_lms.m_lmsNotch = int(mfq + 0.5); + pSound->CalcBPF(); + } + RemoteFreq(); + } + } + else { + mfq = double(int(mfq + 0.5)); + if( fabs(mfq - pSound->FSKDEM.GetMarkFreq()) >= 2 ){ + double sft = pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq(); + double sfq = mfq + sft; + if( (mfq >= MARKL) && (sfq <= SPACEH) ){ + pSound->FSKDEM.SetMarkFreq(mfq); + pSound->FSKDEM.SetSpaceFreq(sfq); + if( !SBTX->Down ){ + pSound->FSKMOD.SetMarkFreq(mfq); + pSound->FSKMOD.SetSpaceFreq(sfq); + } + if( pRadio != NULL ) pRadio->SetMarkFreq(mfq); + if( SBBPF->Down || SBLMS->Down ) pSound->CalcBPF(); + RemoteFreq(); + UpdateItem(); + } + } + } + AdjustFocus(); + +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::ScrollBarInChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + FifoEdit.ScrollBarChange(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBINClearClick(TObject *Sender) +{ + MsgList->Text = ""; + FifoEdit.Clear(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::WriteFifoEdit(LPCSTR s) +{ + while((*s == '\\')||(*s == '#') ){ + if( *s == '\\' ){ + FifoEdit.Clear(); + } + else if( !SBTX->Down ){ + ToTX(s); + } + s++; + } + LPSTR bp = new char[strlen(s)+1]; + strcpy(bp, s); + LPSTR p; + for( p = bp; *p; p++ ){ // %E ‚ÍI—¹‚ð’è‹`I—¹ + if( (*p == '%') && (*(p+1) == 'E') ){ + *p = 0; + break; + } + } + if( sys.m_MacroImm ){ + char bf[1024]; + ConvString(bf, bp, sizeof(bf), 1); + FifoEdit.PutText(bf); + } + else { + FifoEdit.PutText(bp); + } + delete bp; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN1Click(TObject *Sender) +{ + WriteFifoEdit(sys.m_InBtn[0].c_str()); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN2Click(TObject *Sender) +{ + WriteFifoEdit(sys.m_InBtn[1].c_str()); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN3Click(TObject *Sender) +{ + WriteFifoEdit(sys.m_InBtn[2].c_str()); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN4Click(TObject *Sender) +{ + WriteFifoEdit(sys.m_InBtn[3].c_str()); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBINMouseUp(int n) +{ + TEditDlgBox *pBox = new TEditDlgBox(this); + pBox->Caption = (Font->Charset != SHIFTJIS_CHARSET)? "Edit Button":"“ü—̓{ƒ^ƒ“•ÒW"; + pBox->ButtonName->Text = sys.m_InBtnName[n]; + if( pBox->Execute(sys.m_InBtn[n], sys.m_InBtnKey[n], &sys.m_InBtnCol[n], NULL, 0) == TRUE ){ + if( !pBox->ButtonName->Text.IsEmpty() ){ + sys.m_InBtnName[n] = pBox->ButtonName->Text; + } + } + delete pBox; + UpdateMacro(); + UpdateShortCut(FALSE); + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN1MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ) SBINMouseUp(0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN2MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ) SBINMouseUp(1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN3MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ) SBINMouseUp(2); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBIN4MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ) SBINMouseUp(3); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateMsgList(void) +{ + m_DisEvent++; + MsgList->Clear(); + int i; + for( i = 0; i < MSGLISTMAX; i++ ){ + if( sys.m_MsgName[i].IsEmpty() ) break; + MsgList->Items->Add(sys.m_MsgName[i]); + } + UpdateShortCut(FALSE); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +// ƒVƒ‡[ƒgƒJƒbƒg‚Å’T‚· +void __fastcall TMmttyWd::FindMsgLst(WORD nKey) +{ + for( int i = 0; i < MSGLISTMAX; i++ ){ + if( sys.m_MsgName[i].IsEmpty() ) break; + if( sys.m_MsgKey[i] == nKey ){ + AnsiString as = sys.m_MsgName[i]; + FindMsgList(as); + } + } +} +//--------------------------------------------------------------------------- +// –¼Ì‚Å’T‚· +void __fastcall TMmttyWd::FindMsgList(AnsiString fs) //JA7UDE 0428 +{ + if( m_DisEvent ) return; + m_DisEvent++; + AnsiString as; + int i; + for( i = 0; i < MSGLISTMAX; i++ ){ + if( sys.m_MsgName[i].IsEmpty() ) break; + if( sys.m_MsgName[i] == fs ){ + as = sys.m_MsgList[i]; + WriteFifoEdit(as.c_str()); + EntryMsg(fs, as, sys.m_MsgKey[i]); + MsgList->Text = fs; + break; + } + } + AdjustFocus(); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::MsgListChange(TObject *Sender) +{ + FindMsgList(AnsiString(MsgList->Text)); //JA7UDE 0428 +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBINEditClick(TObject *Sender) +{ + TEditDlgBox *pBox = new TEditDlgBox(this); + + pBox->EditMsg(); + delete pBox; + UpdateMsgList(); + TopWindow(this); +} +//--------------------------------------------------------------------------- +// ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ðŠJ‚­ +void __fastcall TMmttyWd::DoOption(TObject *Sender, int sw) +{ +// CWaitCursor wait; + TOptionDlg *pBox = new TOptionDlg(this); + m_hOptionWnd = pBox->Handle; + + m_DisEvent++; + int fontadj = sys.m_FontAdjSize; + int Palette = sys.m_Palette; + pBox->CheckPalette->Enabled = m_PaletteQuery; + if( Sender == KMacro ){ + PageIndex = 3; + } + int stereo = sys.m_SoundStereo; + int fiforx = sys.m_SoundFifoRX; + int fifotx = sys.m_SoundFifoTX; + double txoffset = sys.m_TxOffset; + AnsiString pttname = sys.m_TxRxName; + AnsiString MMW = sys.m_SoundMMW; + if( Remote ){ + if( sw ) ::EnableWindow(APP_HANDLE, FALSE); + PostApp(TXM_SHOWSETUP, 1); + } + int r = pBox->Execute(&pSound->FSKDEM, &pSound->FSKMOD); + if( Remote && sw ) ::EnableWindow(APP_HANDLE, TRUE); + if( r ){ + RemoteStat(); + if( r == 2 ){ + PrintText.SetPaintBox(PBoxRx, ScrollBarRx); + FifoEdit.SetPaintBox(PBoxIn, ScrollBarIn); + } + PrintText.AdjZero(); + if( pBox->m_ColorChange ){ + InitColorTable(sys.m_ColorLow, sys.m_ColorHigh); + UpdateColor(); + } + if( Palette != sys.m_Palette ){ + if( !sys.m_Palette && (UsrPal != NULL) ){ + ClosePalette(); + } + m_ReqPaletteChange = 1; + } + if( (int(pSound->m_IDDevice) != sys.m_SoundDevice) || + (fiforx != sys.m_SoundFifoRX) || + (fifotx != sys.m_SoundFifoTX) || + (txoffset != sys.m_TxOffset) || + (MMW != sys.m_SoundMMW) || + (stereo != sys.m_SoundStereo) ){ +// pSound->m_IDDevice = sys.m_SoundDevice; + pSound->InitSound(); + } + pSound->TaskPriority(); + UpdateSystemFont(); + if( sys.m_SampFreq != SampFreq ){ + if( Font->Charset != SHIFTJIS_CHARSET ){ + InfoMB( "Please restart %s for the new sampling frequency.", Remote ? "application":"MMTTY"); + } + else { + InfoMB( "V‚µ‚¢ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð“K—p‚³‚¹‚邽‚ß‚É%s‚ðÄ‹N“®‚µ‚ĉº‚³‚¢.", Remote ? "ƒAƒvƒŠƒP[ƒVƒ‡ƒ“":"MMTTY" ); + } + } + if( (pttname != sys.m_TxRxName) || ((pComm == NULL)&&strcmp(sys.m_TxRxName.c_str(), "NONE")) ){ + COMM.change = 1; + } + if( pRadio != NULL ) pRadio->SetMarkFreq(pSound->FSKDEM.GetMarkFreq()); + rtty.SetCodeSet(); rttysub.SetCodeSet(); + } + delete pBox; + m_hOptionWnd = NULL; + UpdateItem(); + UpdateMacro(); + UpdateLMS(); + UpdateMsgList(); + UpdateLWait(); + if( fontadj != sys.m_FontAdjSize ){ + FormResize(NULL); + } + OpenCloseCom(); + m_DisEvent--; + TopWindow(this); + AdjustFocus(); + if( Remote ) PostApp(TXM_SHOWSETUP, 0); +} +//--------------------------------------------------------------------------- +// ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ðŠJ‚­ +void __fastcall TMmttyWd::KOptionClick(TObject *Sender) +{ + DoOption(Sender, 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::HisCallKeyPress(TObject *Sender, char &Key) +{ + if( (Key == 0x0d)||(Key == 0x1b) ){ + if( (Key == 0x0d) && (Sender == HisCall) ){ + FindCall(); + } + AdjustFocus(); + Key = 0; + } + else { + Key = char(toupper(Key)); + } +} +//--------------------------------------------------------------------------- +// ƒIƒVƒƒXƒR[ƒv•\ަ +void __fastcall TMmttyWd::KOSClick(TObject *Sender) +{ + TTScope *pBox = new TTScope(this); + + m_DisEvent++; + pBox->Execute(&pSound->FSKDEM, &pSound->FSKMOD); + delete pBox; + pSound->FSKDEM.m_Scope = 0; + UpdateItem(); + UpdateMacro(); + UpdateMsgList(); + TopWindow(this); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + pSound->m_FFTSW = pSound->m_FFTSW ? 0 : 1; + KFFT->Checked = pSound->m_FFTSW; + if( pSound->m_FFTSW ){ + pSound->fftIN.m_FFTDIS = 0; + } + UpdateUI(); + PBoxFFTIN->Invalidate(); + PBoxWater->Invalidate(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KWebHHTClick(TObject *Sender) +{ + WebRef.ShowHTML("http://www33.ocn.ne.jp/~je3hht/"); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KWebJARTSClick(TObject *Sender) +{ + WebRef.ShowHTML("http://jarts.web.fc2.com/"); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KWebGRPClick(TObject *Sender) +{ + WebRef.ShowHTML("http://groups.yahoo.com/group/MMTTY/join"); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KWebENGClick(TObject *Sender) +{ + WebRef.ShowHTML("http://mmhamsoft.amateur-radio.ca/"); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KWebWSKClick(TObject *Sender) +{ + WebRef.ShowHTML("http://home.b01.itscom.net/ja1wsk/"); +} +//--------------------------------------------------------------------------- +// MMTTY.Txt‚Ì•\ަƒƒjƒ…[ +void __fastcall TMmttyWd::KHlpTxtClick(TObject *Sender) +{ + ShowHelp(this, sys.m_Help.c_str()); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KHlpLogClick(TObject *Sender) +{ + ShowHelp(this, sys.m_HelpLog.c_str()); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KHlpDigClick(TObject *Sender) +{ + ShowHelp(this, sys.m_HelpDigital.c_str()); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KW7TIClick(TObject *Sender) +{ + ShowHelp(this, "W7TI.TXT"); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRMClick(TObject *Sender) +{ + ShowHelp(this, (Font->Charset != SHIFTJIS_CHARSET) ? "EUpdate.txt" : "Update.txt"); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KVolClick(TObject *Sender) +{ + HWND hWnd = ::FindWindow("Volume Control", NULL); + if( hWnd != NULL ){ + ::PostMessage(hWnd, WM_CLOSE, 0, 0); + ::Sleep(200); + } + char cmd[128]; + + //AA6YQ 1.66G + + if (WinVista) { + if (Sender == KVolIn) { + strcpy(cmd, "control.exe mmsys.cpl,,1"); + } + else { + strcpy(cmd, "sndvol.exe"); + } + } + else { + + strcpy(cmd, "SNDVOL32.EXE"); + if( WinNT && (Sender == KVolIn) ) strcat(cmd, " /R"); + } + + WinExec(cmd, SW_SHOW); + + if((!WinVista) && (!WinNT) && (Sender == KVolIn) ){ + CWaitCursor w; + int i; + for( i = 0; i < 30; i++ ){ + ::Sleep(100); + hWnd = ::FindWindow("Volume Control", NULL); + if( hWnd != NULL ) break; + } + if( i < 30 ){ + ::SetForegroundWindow(hWnd); + ::Sleep(100); + const short _tt[]={ + VK_MENU, 'P', 'P'|0x8000, VK_MENU|0x8000, + 'R', 'R'|0x8000, VK_TAB, VK_TAB|0x8000, + VK_DOWN, VK_DOWN|0x8000, VK_RETURN, VK_RETURN|0x8000, + 0 + }; + KeyEvent(_tt); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRcvLogClick(TObject *Sender) +{ + sys.m_log = sys.m_log ? 0 : 1; + PrintText.MakeLogName(); + PrintText.OpenLogFile(); + if( sys.m_logTimeStamp ) PrintText.TrigTimeStamp("Start Logging"); +} +//--------------------------------------------------------------------------- +int __fastcall TMmttyWd::OutputFile(LPCSTR pName) +{ +#if 1 + if( p_SendFileDlg != NULL ){ + delete p_SendFileDlg; + p_SendFileDlg = NULL; + } + p_SendFileDlg = new TSendFileDlg(this); + if( p_SendFileDlg->Start(pName, Top + (Height - ClientHeight) + PanelStat->Top) == FALSE ){ + delete p_SendFileDlg; + p_SendFileDlg = NULL; + } + else { + ToTX(NULL); + } +#else + char bf[2048]; + AnsiString in; + FILE *fp; + + CWaitCursor w; + if( (fp = fopen(pName, "rt"))!=NULL ){ + while(!feof(fp)){ + if( fgets(bf, 2048, fp) != NULL ){ + ClipLF(bf); + in += bf; + in += "\r\n"; + } + } + fclose(fp); + } + else { + ErrorMB((Font->Charset != SHIFTJIS_CHARSET) ? "'%s' was not found":"'%s'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ.", pName); + return FALSE; + } + ToTX(in.c_str()); + OutputStr(in.c_str()); +#endif + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFileOutClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options << ofFileMustExist; + if(Font->Charset != SHIFTJIS_CHARSET){ + OpenDialog->Title = "Open Text file for TX"; + OpenDialog->Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*|"; + } + else { + OpenDialog->Title = "‘—M‚·‚éƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ðŠJ‚­"; + OpenDialog->Filter = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹(*.txt)|*.txt|‚·‚ׂẴtƒ@ƒCƒ‹(*.*)|*.*|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "txt"; + OpenDialog->InitialDir = OutFileDir; + DisPaint = TRUE; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + if( OutputFile(AnsiString(OpenDialog->FileName).c_str()) == TRUE ){ //JA7UDE 0428 + SetDirName(OutFileDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + } + } + TopWindow(this); + DisPaint = FALSE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSaveRxClick(TObject *Sender) +{ + if( (Font->Charset != SHIFTJIS_CHARSET) ){ + SaveDialog->Title = "Write Text file"; + SaveDialog->Filter = "Text files(*.txt)|*.txt|"; + } + else { + SaveDialog->Title = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹(*.txt)|*.txt|"; + } + SaveDialog->FileName = "Recv.txt"; + SaveDialog->DefaultExt = "txt"; + SaveDialog->InitialDir = OutFileDir; + DisPaint = TRUE; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + CWaitCursor w; + AnsiString as; + PrintText.GetString(as); + FILE *fp = fopen(AnsiString(SaveDialog->FileName).c_str(), "wb"); //JA7UDE 0428 + if( fp != NULL ){ + fputs(as.c_str(), fp); + if( fclose(fp) ){ + ErrorMB( (Font->Charset != SHIFTJIS_CHARSET) ? "Write Error to '%s'":"'%s'‚ɳ‚µ‚­‘‚«‚±‚߂܂¹‚ñ‚Å‚µ‚½.", SaveDialog->FileName.c_str()); + } + else { + SetDirName(OutFileDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + } + } + else { + ErrorMB((Font->Charset != SHIFTJIS_CHARSET)?"Write Error to '%s'": "'%s'‚ð쬂ł«‚Ü‚¹‚ñ.", SaveDialog->FileName.c_str()); + } + } + TopWindow(this); + DisPaint = FALSE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExitClick(TObject *Sender) +{ + Close(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KLogClick(TObject *Sender) +{ + DisPaint = TRUE; + TLogListDlg *pBox = new TLogListDlg(this); + pBox->Execute(); + Application->OnIdle = OnIdle; + delete pBox; + UpdateItem(); + UpdateLogLink(); + AdjustFocus(); + TopWindow(this); + DisPaint = FALSE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateLogData(void) +{ + StrCopy(Log.m_sd.call, AnsiString(HisCall->Text).c_str(), MLCALL); //JA7UDE 0428 + jstrupr(Log.m_sd.call); + StrCopy(Log.m_sd.name, AnsiString(HisName->Text).c_str(), MLNAME); //JA7UDE 0428 + StrCopy(Log.m_sd.qth, AnsiString(HisQTH->Text).c_str(), MLQTH); //JA7UDE 0428 + StrCopy(Log.m_sd.my, AnsiString(MyRST->Text).c_str(), MLRST); //JA7UDE 0428 + jstrupr(Log.m_sd.my); + StrCopy(Log.m_sd.ur, AnsiString(HisRST->Text).c_str(), MLRST); //JA7UDE 0428 + jstrupr(Log.m_sd.ur); + Log.SetFreq(&Log.m_sd, AnsiString(Freq->Text).c_str()); //JA7UDE 0428 +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateTextData(void) +{ + HisCall->Text = Log.m_sd.call; + HisName->Text = Log.m_sd.name; + HisQTH->Text = Log.m_sd.qth; + HisRST->Text = Log.m_sd.ur; + MyRST->Text = Log.m_sd.my; + Freq->Text = Log.GetFreqString(Log.m_sd.band, Log.m_sd.fq); + Log.m_CurChg = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KQSOClick(TObject *Sender) +{ + UpdateLogData(); + if( strcmp(Log.m_Find.GetText(), Log.m_sd.call) ){ + CWaitCursor w; + Log.FindSet(&Log.m_Find, Log.m_sd.call); + } + TQSODlgBox *pBox = new TQSODlgBox(this); + if( pBox->Execute(&Log.m_Find, &Log.m_sd, Log.m_CurNo) == TRUE ){ + UpdateTextData(); + LogLink.Write(&Log.m_sd, 0); + } + delete pBox; + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateCallsign(void) +{ + if( HisCall->Text.IsEmpty() ) m_Dupe = 0; + HisCall->Font->Color = m_Dupe ? clRed : clBlack; + LCall->Font->Color = m_Running ? clRed : clBlack; + KRun->Checked = m_Running; +} +//--------------------------------------------------------------------------- +typedef struct { + int cnt; + int v; + char call[MLCALL+1]; +}CLDT; +//--------------------------------------------------------------------------- +static int _cmp(const void *s, const void *t) +{ + const CLDT *sp = (const CLDT *)s; + const CLDT *tp = (const CLDT *)t; + if( sp->cnt != tp->cnt ){ + return tp->cnt - sp->cnt; + } + else { + return tp->v - sp->v; + } +} +//--------------------------------------------------------------------------- +static int IsNGCall(LPCSTR s) +{ + LPCSTR tt[]={ + "PSE","QTH","QSO","KKK","NAME",NULL + }; + for( int i = 0; tt[i] != NULL; i++ ){ + if( !strcmp(s, tt[i]) ) return 1; + } + return 0; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::CallCapture(void) +{ + CLDT list[16]; + char bf[1024]; + + LPSTR p, t, tt; + int n = 0; + int max = 0; + memset(list, 0, sizeof(list)); + while(PrintText.GetText(bf, n) && (max < 16) ){ + n++; + p = bf; + int l = 0; + while(*p){ + p = StrDlm(t, p, ' '); + + for( ; *t && (!IsCallChar(*t)); t++ ); + for( tt = t; *tt && IsCallChar(*tt); tt++); + *tt = 0; + + if( (strlen(t) >= 3) && IsAlphas(t) && (strlen(t) < MLCALL) && ((strlen(t)<=7)||(strchr(t, '/')!=NULL)) ){ + if( !IsNGCall(t) && strcmp(t, sys.m_Call.c_str()) ){ + if( HisCall->Text.IsEmpty() || strcmp(t, AnsiString(HisCall->Text).c_str()) ){ //JA7UDE 0428 + int j; + for( j = 0; j < max; j++ ){ + if( !strcmp(t, list[j].call) ){ + list[j].cnt++; + break; + } + } + if( j == max ){ + if( max < 16 ){ + strcpy(list[max].call, t); + list[max].cnt = 1; + list[max].v = l - (n*4); + if( !IsCall(t) ){ + list[max].cnt -= 128; + } + if( Log.IsAlready(t) != -1 ){ + list[max].cnt -= 64; + } + max++; + l++; + } + } + } + } + } + } + } + if( max ){ + qsort(list, max, sizeof(CLDT), _cmp); + HisCall->Text = list[0].call; +#if 0 + FILE *fp = fopen("F:\\LOG.TXT", "wt"); + for( int i = 0; i < max; i++ ){ + fprintf(fp, "[%s]\t%d,%d\n", list[i].call, list[i].cnt, list[i].v); + } + fclose(fp); +#endif + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::QSOIN(void) +{ + if( HisCall->Text.IsEmpty() ){ + CallCapture(); + } + if( HisCall->Text.IsEmpty() ) return; + SBQSO->Down = TRUE; + ClearMacroTimer(); + UpdateLogData(); + SYSTEMTIME now; + char bf[256]; + GetUTC(&now); + int Year = now.wYear % 100; + int Month = now.wMonth; + int Day = now.wDay; + int Hour = now.wHour; + UTCtoJST(Year, Month, Day, Hour); + LogLink.SetTime(&now, 0); + + Log.m_sd.cq = m_Running ? 'A' : 'C'; + Log.m_sd.year = char(Year % 100); + Log.m_sd.date = WORD(Month * 100 + Day); + Log.m_sd.btime = WORD((Hour * 60 + now.wMinute) * 30 + now.wSecond/2); + if( !Log.m_sd.btime ) Log.m_sd.btime++; + CWaitCursor w; + if( Log.FindSet(&Log.m_Find, Log.m_sd.call) ){ + SDMMLOG sd; + Log.GetData(&sd, Log.m_Find.pFindTbl[0]); // ˆê”ÔÅV‚̃f[ƒ^ + if( !Log.m_sd.name[0] && Log.m_LogSet.m_CopyName ) strcpy(Log.m_sd.name, sd.name); + if( !Log.m_sd.qth[0] && Log.m_LogSet.m_CopyQTH ) strcpy(Log.m_sd.qth, sd.qth); + if( !Log.m_sd.rem[0] && Log.m_LogSet.m_CopyREM ) strcpy(Log.m_sd.rem, sd.rem); + if( !Log.m_sd.qsl[0] && Log.m_LogSet.m_CopyQSL ) strcpy(Log.m_sd.qsl, sd.qsl); + } + Log.CopyAF(); + if( Log.m_sd.call[0] ){ + LPCSTR pCC = ClipCC(Log.m_sd.call); + Log.SetOptStr(0, &Log.m_sd, Cty.GetCountry(pCC)); + Log.SetOptStr(1, &Log.m_sd, Cty.GetCont(pCC)); + } + if( Log.m_LogSet.m_CopyHis == 2 ) Log.SetHisUTC(); + UpdateTextData(); + if( Log.PutData(&Log.m_sd, Log.m_CurNo) == FALSE ){ + SBQSO->Down = FALSE; + } + + if( Log.m_Find.m_FindCmp1Max && ((!Log.m_LogSet.m_CheckBand) || Log.FindSameBand()) ){ + m_Dupe = 1; + } + else { + m_Dupe = 0; + } + if( Log.m_LogSet.m_QSOMacroFlag ){ // Auto running Macro + if( m_Running ){ // Running + if( m_Dupe ){ + if( Log.m_LogSet.m_QSOMacro[2] && !Log.m_LogSet.m_QSOMacroStr[2].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[2].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[2].c_str()); + } + } + else { + if( Log.m_LogSet.m_QSOMacro[0] && !Log.m_LogSet.m_QSOMacroStr[0].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[0].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[0].c_str()); + } + } + } + else { // S & P + if( Log.m_LogSet.m_QSOMacro[3] && !Log.m_LogSet.m_QSOMacroStr[3].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[3].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[3].c_str()); + } + } + } + + Log.m_Find.Ins(Log.m_CurNo); + Log.m_CurChg = 0; + sprintf(bf, "Start QSO With %s", Log.m_sd.call); + PrintText.TrigTimeStamp(bf); + LogLink.Write(&Log.m_sd, 1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::QSOOUT(int sw) +{ + if( sw && !SBQSO->Down ){ + if( Log.m_LogSet.m_QSOMacroFlag ){ // Auto running Macro + if( m_Running ){ // Running + if( Log.m_LogSet.m_QSOMacro[1] && !Log.m_LogSet.m_QSOMacroStr[1].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[1].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[1].c_str()); + } + } + else { // S & P + if( Log.m_LogSet.m_QSOMacro[4] && !Log.m_LogSet.m_QSOMacroStr[4].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[4].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[4].c_str()); + } + } + } + return; + } + SBQSO->Down = FALSE; + ClearMacroTimer(); + UpdateLogData(); + SYSTEMTIME now; + char bf[256]; + GetUTC(&now); + int Year = now.wYear % 100; + int Month = now.wMonth; + int Day = now.wDay; + int Hour = now.wHour; + UTCtoJST(Year, Month, Day, Hour); + LogLink.SetTime(&now, 1); + + Log.m_sd.cq = m_Running ? 'A' : 'C'; + Log.m_sd.etime = WORD((Hour * 60 + now.wMinute) * 30 + now.wSecond/2); + if( !Log.m_sd.etime ) Log.m_sd.etime++; + int r; + if( !Log.m_sd.ur[0] ){ + if( Log.m_LogSet.m_Contest == 3 ){ + strcpy(Log.m_sd.ur, "599"); + r = IDYES; + } + else if( (Font->Charset != SHIFTJIS_CHARSET) ){ + r = YesNoCancelMB("No HisRST... Are you sure?"); + } + else { + r = YesNoCancelMB("HisRST‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñ.\r\n\r\n‚±‚̃f[ƒ^‚ð—LŒø‚É‚µ‚Ü‚·‚©H"); + } + switch(r){ + case IDCANCEL: + Log.m_sd.etime = 0; + SBQSO->Down = TRUE; + return; + case IDNO: + Log.DeleteLast(); + Log.m_Find.Clear(); + Log.InitCur(); + UpdateTextData(); + AutoLogSave(); + return; + default: + break; + } + } + if( !Log.m_sd.my[0] ){ + if( Log.m_LogSet.m_Contest == 3 ){ + strcpy(Log.m_sd.my, "599"); + r = IDYES; + } + else if( (Font->Charset != SHIFTJIS_CHARSET) ){ + r = YesNoCancelMB("No MyRST... Are you sure?"); + } + else { + r = YesNoCancelMB("MyRST‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñ.\r\n\r\n‚±‚̃f[ƒ^‚ð—LŒø‚É‚µ‚Ü‚·‚©H"); + } + switch(r){ + case IDCANCEL: + Log.m_sd.etime = 0; + SBQSO->Down = TRUE; + return; + case IDNO: + Log.DeleteLast(); + Log.m_Find.Clear(); + Log.InitCur(); + UpdateTextData(); + AutoLogSave(); + return; + default: + break; + } + } + if( !Log.m_sd.ur[0] || !Log.m_sd.my[0] ){ // –³Œøƒf[ƒ^ + Log.m_sd.send = 'I'; + } + Log.PutData(&Log.m_sd, Log.m_CurNo); + LogLink.Write(&Log.m_sd, 2); + sprintf(bf, "Exit QSO With %s %s %s %s", + Log.m_sd.call, Log.m_sd.ur, Log.m_sd.my, Log.m_sd.name, Log.GetFreqString(Log.m_sd.band, Log.m_sd.fq) + ); + PrintText.TrigTimeStamp(bf); + + if( Log.m_LogSet.m_QSOMacroFlag ){ // Auto running Macro + if( m_Running ){ // Running + if( Log.m_LogSet.m_QSOMacro[1] && !Log.m_LogSet.m_QSOMacroStr[1].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[1].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[1].c_str()); + } + } + else { // S & P + if( Log.m_LogSet.m_QSOMacro[4] && !Log.m_LogSet.m_QSOMacroStr[4].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[4].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[4].c_str()); + } + } + } + + memcpy(&Log.m_asd, &Log.m_sd, sizeof(Log.m_asd)); + Log.m_CurNo++; + Log.m_CurChg = 0; + Log.m_Find.Clear(); + Log.InitCur(); + UpdateTextData(); + AutoLogSave(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBQSOClick(TObject *Sender) +{ + ClearMacroTimer(); + UpdateLogData(); + SYSTEMTIME now; + char bf[256]; + GetUTC(&now); + int Year = now.wYear % 100; + int Month = now.wMonth; + int Day = now.wDay; + int Hour = now.wHour; + UTCtoJST(Year, Month, Day, Hour); + + Log.m_sd.cq = m_Running ? 'A' : 'C'; + if( SBQSO->Down ){ // Start QSO + LogLink.SetTime(&now, 0); + Log.m_sd.year = char(Year % 100); + Log.m_sd.date = WORD(Month * 100 + Day); + Log.m_sd.btime = WORD((Hour * 60 + now.wMinute) * 30 + now.wSecond/2); + if( !Log.m_sd.btime ) Log.m_sd.btime++; + CWaitCursor w; + if( Log.FindSet(&Log.m_Find, Log.m_sd.call) ){ + SDMMLOG sd; + Log.GetData(&sd, Log.m_Find.pFindTbl[0]); // ˆê”ÔÅV‚̃f[ƒ^ + if( !Log.m_sd.name[0] && Log.m_LogSet.m_CopyName ) strcpy(Log.m_sd.name, sd.name); + if( !Log.m_sd.qth[0] && Log.m_LogSet.m_CopyQTH ) strcpy(Log.m_sd.qth, sd.qth); + if( !Log.m_sd.rem[0] && Log.m_LogSet.m_CopyREM ) strcpy(Log.m_sd.rem, sd.rem); + if( !Log.m_sd.qsl[0] && Log.m_LogSet.m_CopyQSL ) strcpy(Log.m_sd.qsl, sd.qsl); + } + Log.CopyAF(); + if( Log.m_sd.call[0] ){ + LPCSTR pCC = ClipCC(Log.m_sd.call); + Log.SetOptStr(0, &Log.m_sd, Cty.GetCountry(pCC)); + Log.SetOptStr(1, &Log.m_sd, Cty.GetCont(pCC)); + } + if( Log.m_LogSet.m_CopyHis == 2 ) Log.SetHisUTC(); + UpdateTextData(); + if( Log.PutData(&Log.m_sd, Log.m_CurNo) == FALSE ){ + SBQSO->Down = FALSE; + } + + if( Log.m_Find.m_FindCmp1Max && ((!Log.m_LogSet.m_CheckBand) || Log.FindSameBand()) ){ + m_Dupe = 1; + } + else { + m_Dupe = 0; + } + if( Log.m_LogSet.m_QSOMacroFlag ){ // Auto running Macro + if( m_Running ){ // Running + if( m_Dupe ){ + if( Log.m_LogSet.m_QSOMacro[2] && !Log.m_LogSet.m_QSOMacroStr[2].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[2].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[2].c_str()); + } + } + else { + if( Log.m_LogSet.m_QSOMacro[0] && !Log.m_LogSet.m_QSOMacroStr[0].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[0].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[0].c_str()); + } + } + } + else { // S & P + if( Log.m_LogSet.m_QSOMacro[3] && !Log.m_LogSet.m_QSOMacroStr[3].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[3].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[3].c_str()); + } + } + } + + Log.m_Find.Ins(Log.m_CurNo); + Log.m_CurChg = 0; + sprintf(bf, "Start QSO With %s", Log.m_sd.call); + PrintText.TrigTimeStamp(bf); + LogLink.Write(&Log.m_sd, 1); + } + else { // Finish QSO + LogLink.SetTime(&now, 1); + Log.m_sd.etime = WORD((Hour * 60 + now.wMinute) * 30 + now.wSecond/2); + if( !Log.m_sd.etime ) Log.m_sd.etime++; + int r; + if( !Log.m_sd.ur[0] ){ + if( Log.m_LogSet.m_Contest == 3 ){ + strcpy(Log.m_sd.ur, "599"); + r = IDYES; + } + else if( (Font->Charset != SHIFTJIS_CHARSET) ){ + r = YesNoCancelMB("No HisRST... Are you sure?"); + } + else { + r = YesNoCancelMB("HisRST‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñ.\r\n\r\n‚±‚̃f[ƒ^‚ð—LŒø‚É‚µ‚Ü‚·‚©H"); + } + switch(r){ + case IDCANCEL: + Log.m_sd.etime = 0; + SBQSO->Down = TRUE; + return; + case IDNO: + Log.DeleteLast(); + Log.m_Find.Clear(); + Log.InitCur(); + UpdateTextData(); + AutoLogSave(); + return; + default: + break; + } + } + if( !Log.m_sd.my[0] ){ + if( Log.m_LogSet.m_Contest == 3 ){ + strcpy(Log.m_sd.my, "599"); + r = IDYES; + } + else if( (Font->Charset != SHIFTJIS_CHARSET) ){ + r = YesNoCancelMB("No MyRST... Are you sure?"); + } + else { + r = YesNoCancelMB("MyRST‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚¹‚ñ.\r\n\r\n‚±‚̃f[ƒ^‚ð—LŒø‚É‚µ‚Ü‚·‚©H"); + } + switch(r){ + case IDCANCEL: + Log.m_sd.etime = 0; + SBQSO->Down = TRUE; + return; + case IDNO: + Log.DeleteLast(); + Log.m_Find.Clear(); + Log.InitCur(); + UpdateTextData(); + AutoLogSave(); + return; + default: + break; + } + } + if( !Log.m_sd.ur[0] || !Log.m_sd.my[0] ){ // –³Œøƒf[ƒ^ + Log.m_sd.send = 'I'; + } + Log.PutData(&Log.m_sd, Log.m_CurNo); + LogLink.Write(&Log.m_sd, 2); + sprintf(bf, "Exit QSO With %s %s %s %s", + Log.m_sd.call, Log.m_sd.ur, Log.m_sd.my, Log.m_sd.name, Log.GetFreqString(Log.m_sd.band, Log.m_sd.fq) + ); + PrintText.TrigTimeStamp(bf); + + if( Log.m_LogSet.m_QSOMacroFlag ){ // Auto running Macro + if( m_Running ){ // Running + if( Log.m_LogSet.m_QSOMacro[1] && !Log.m_LogSet.m_QSOMacroStr[1].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[1].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[1].c_str()); + } + } + else { // S & P + if( Log.m_LogSet.m_QSOMacro[4] && !Log.m_LogSet.m_QSOMacroStr[4].IsEmpty() ){ + ToTX(Log.m_LogSet.m_QSOMacroStr[4].c_str()); + OutputStr(Log.m_LogSet.m_QSOMacroStr[4].c_str()); + } + } + } + + memcpy(&Log.m_asd, &Log.m_sd, sizeof(Log.m_asd)); + Log.m_CurNo++; + Log.m_CurChg = 0; + Log.m_Find.Clear(); + Log.InitCur(); + UpdateTextData(); + AutoLogSave(); + } +} +//--------------------------------------------------------------------------- +// ƒoƒ“ƒh‚Ì•ÏX +void __fastcall TMmttyWd::FreqChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + Log.SetFreq(&Log.m_sd, AnsiString(Freq->Text).c_str()); //JA7UDE 0428 + LogLink.SetFreq(AnsiString(Freq->Text).c_str()); //JA7UDE 0428 + if( !HisCall->Text.IsEmpty() ){ + FindCall(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBFindClick(TObject *Sender) +{ + if( !Log.IsOpen() ){ + if( Log.Open(NULL, TRUE) == FALSE ){ + return; + } + } + FindCall(); + TQSODlgBox *pBox = new TQSODlgBox(this); + pBox->ShowFind(&Log.m_Find); + delete pBox; + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBFindMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( (Button == mbRight) && (!HisCall->Text.IsEmpty()) ){ + FindCall(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::HisCallChange(TObject *Sender) +{ + Log.m_Find.ClearText(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::LNameClick(TObject *Sender) +{ + m_NameQTH = m_NameQTH ? 0 : 1; + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBInitClick(TObject *Sender) +{ + AnsiString as = Freq->Text; + if( SBQSO->Down ){ + int r; + if( Log.m_LogSet.m_Contest ){ + r = IDYES; + } + else { + r = YesNoMB( (Font->Charset != SHIFTJIS_CHARSET) ? "Delete on this QSO. Are you sure?":"‚±‚ÌQSO‚𖳌ø‚É‚µ‚Ü‚·‚©H" ); + } + if( r == IDYES ){ + Log.DeleteLast(); + Log.m_Find.Clear(); + Log.InitCur(); + SBQSO->Down = FALSE; + UpdateTextData(); + } + } + else { + Log.InitCur(); + Log.m_sd.call[0] = 0; + Log.m_sd.name[0] = 0; + Log.m_sd.qth[0] = 0; + UpdateTextData(); + } + if( !as.IsEmpty() ){ + Freq->Text = as; + Log.SetFreq(&Log.m_sd, as.c_str()); + } +#if 0 + HisCall->Text = ""; + HisName->Text = ""; + HisQTH->Text = ""; + MyRST->Text = ""; + HisRST->Text = Log.m_sd.ur; + UpdateLogData(); +#endif + LogLink.Clear(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxInClick(TObject *Sender) +{ + ClearMacroTimer(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBHAMClick(TObject *Sender) +{ + CFSKMOD *mp = &pSound->FSKMOD; + CFSKDEM *dp = &pSound->FSKDEM; + dp->SetMarkFreq(sys.m_DefMarkFreq); + mp->SetMarkFreq(sys.m_DefMarkFreq); + dp->SetSpaceFreq(sys.m_DefMarkFreq + sys.m_DefShift); + mp->SetSpaceFreq(sys.m_DefMarkFreq + sys.m_DefShift); + if( pRadio != NULL ) pRadio->SetMarkFreq(sys.m_DefMarkFreq); + if( SBBPF->Down || SBLMS->Down ) pSound->CalcBPF(); + if( sys.m_TxPort ){ + if( sys.m_DefFix45 ){ + if( dp->GetBaudRate() != 45.45 ) COMM.change = 1; + } + if( dp->m_BitLen != 5 ) COMM.change = 1; + if( dp->m_StopLen != (sys.m_DefStopLen + 3) ) COMM.change = 1; + if( dp->m_Parity != 0 ) COMM.change = 1; + } + if( sys.m_DefFix45 ) dp->SetBaudRate(45.45); + dp->m_BitLen = 5; + dp->m_StopLen = sys.m_DefStopLen + 3; + dp->m_Parity = 0; + if( sys.m_DefFix45 ) mp->SetBaudRate(45.45); + mp->m_BitLen = 5; + mp->m_StopLen = sys.m_DefStopLen + 3; + mp->m_Parity = 0; + UpdateFSK(); + UpdateItem(); + AdjustFocus(); + RemoteStat(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KOpenLogClick(TObject *Sender) +{ + OpenDialog->Options << ofCreatePrompt; + OpenDialog->Options >> ofFileMustExist; + if( (Font->Charset != SHIFTJIS_CHARSET) ){ + OpenDialog->Title = "Open LogData File"; + OpenDialog->Filter = "MMLOG Data Files(*.mdt)|*.mdt|"; + } + else { + OpenDialog->Title = "ƒƒOƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“"; + OpenDialog->Filter = "MMLOGƒf[ƒ^ƒtƒ@ƒCƒ‹(*.mdt)|*.mdt|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "mdt"; + OpenDialog->InitialDir = MMLogDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + Log.Close(); + Log.DoBackup(); + Log.MakeName(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + Log.Open(NULL, TRUE); + UpdateItem(); + KLogClick(NULL); + } + TopWindow(this); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::AutoLogSave(void) +{ + if( Log.IsOpen() && Log.m_LogSet.m_AutoSave && Log.IsEdit() ) KFlushClick(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFlushClick(TObject *Sender) +{ + Log.Close(); + Log.Open(NULL, TRUE); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTWAClick(TObject *Sender) +{ + pSound->m_FFTFW = 0; + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTW05Click(TObject *Sender) +{ + pSound->m_FFTFW = 1; + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTW1Click(TObject *Sender) +{ + pSound->m_FFTFW = 2; + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTW15Click(TObject *Sender) +{ + pSound->m_FFTFW = 3; + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTW2Click(TObject *Sender) +{ + pSound->m_FFTFW = 4; + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTW3Click(TObject *Sender) +{ + pSound->m_FFTFW = 5; + pSound->DrawFFT(pBitmapFFTIN, 1, KXYScope->Checked ? PBoxXY->Width : 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::FormShow(TObject *Sender) +{ + if( Remote & REMSHOWOFF ){ + Hide(); + } + else { + AdjustFocus(); + } +} +//--------------------------------------------------------------------------- +// HisRST Box +void __fastcall TMmttyWd::KDispVerClick(TObject *Sender) +{ + TVerDspDlg *pBox = new TVerDspDlg(this); + pBox->ShowModal(); + delete pBox; + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KClrRxClick(TObject *Sender) +{ + PrintText.Clear(); +} +//--------------------------------------------------------------------------- +int __fastcall TMmttyWd::DrawXY(void) +{ + if( pSound == NULL ) return FALSE; + + TCanvas *pCanvas = pBitmapXY->Canvas; + CScope *mp = &pSound->FSKDEM.m_XYScopeMark; + CScope *sp = &pSound->FSKDEM.m_XYScopeSpace; + + TRect rc; + int XL = 0; + int XR = pBitmapXY->Width - 1; + int YT = 0; + int YB = pBitmapXY->Height - 1; + int XC = XR/2; + int YC = YB/2; + rc.Left = XL; + rc.Right = XR; + rc.Top = YT; + rc.Bottom = YB+1; + pCanvas->Brush->Color = clBlack; + pCanvas->FillRect(rc); + + if( !pSound->FSKDEM.m_XYScope ) return FALSE; + if( !sp->GetFlag() ) return FALSE; + + + double dmax = 0; + double dm, ds; + int i, x, y; + + if( Remote && (pMap != NULL) && !(Remote & REMDISSHARED) ){ + if( !pMap->flagXY ){ +#if 1 + double *pm = mp->pScopeData; + double *ps = sp->pScopeData; + LONG *tm = pMap->arrayX; + LONG *ts = pMap->arrayY; + if( pSound->FSKDEM.m_Limit ){ + for( i = 0; i < XYCOLLECT; i++ ){ + *tm++ = LONG(*pm++); + *ts++ = LONG(*ps++); + } + } + else { + for( i = 0; i < XYCOLLECT; i++ ){ + *tm++ = LONG(*pm++) * 16384/2048; + *ts++ = LONG(*ps++) * 16384/2048; + } + } +#else + if( pSound->FSKDEM.m_Limit ){ + for( i = 0; i < XYCOLLECT; i++, pm++, ps++ ){ + pMap->arrayX[i] = int(mp->pScopeData[i]); + pMap->arrayY[i] = int(sp->pScopeData[i]); + } + } + else { + for( i = 0; i < XYCOLLECT; i++ ){ + pMap->arrayX[i] = int(mp->pScopeData[i]) * 16384/2048; + pMap->arrayY[i] = int(sp->pScopeData[i]) * 16384/2048; + } + } +#endif + pMap->flagXY = 1; + } + } + if( Remote & REMSHOWOFF ){ + pSound->FSKDEM.m_XYScope = 0; + mp->Collect(XYCOLLECT); + sp->Collect(XYCOLLECT); + pSound->FSKDEM.m_XYScope = 1; + return FALSE; + } + if( pTnc && pTnc->IsMMT() ){ + pTnc->NotifyXY(mp->pScopeData, sp->pScopeData); + } + + double *pm = mp->pScopeData; + double *ps = sp->pScopeData; + for( i = 0; i < XYCOLLECT; i++, pm++, ps++ ){ + dm = fabs(*pm); + ds = fabs(*ps); + if( dmax < dm ) dmax = dm; + if( dmax < ds ) dmax = ds; + } + if( pSound->FSKDEM.m_Limit ){ + if( dmax < 16384.0 ) dmax = 16384.0; + } + else { + if( dmax < 2048.0 ) dmax = 2048.0; + } + int YW = YC * 0.8; + int XW = XC * 0.8; + TColor col = TColor(sys.m_ColorXY | sys.d_PaletteMask); + pCanvas->Pen->Color = col; + + const double _mt[]={1.25, 1.20, 1.20, 1.25}; + double sc; + + double SX = (XW / dmax); + double SY = (YW / dmax); + double dmt[8], dst[8]; + pm = mp->pScopeData; + ps = sp->pScopeData; + int inv = sys.m_XYInv; + if( pSound->FSKDEM.m_type == 1 ) inv = inv ? 0 : 1; + switch(m_XYQuality){ + case 0: + if( inv ){ + for( i = 0; i < XYCOLLECT; i++, pm++, ps++ ){ + x = XC + (*pm * SX); + y = YC - (*ps * SY); + pCanvas->Pixels[x][y] = col; + } + } + else { + for( i = 0; i < XYCOLLECT; i++, pm++, ps++ ){ + x = XC + (*pm * SX); + y = YC + (*ps * SY); + pCanvas->Pixels[x][y] = col; + } + } + break; + case 1: + i2m.Clear(); + i2s.Clear(); + sc = _mt[SampType]; + if( pSound->FSKDEM.GetMarkFreq() < 1600 ) sc *= 0.9; + SX *= sc; + SY *= sc; + for( i = 0; i < XYCOLLECT; i++, pm++, ps++ ){ + dm = *pm; + ds = *ps; + if( inv ) ds = -ds; + i2m.Do(dmt, dm); + i2s.Do(dst, ds); + x = XC + (dmt[0] * SX); + y = YC + (dst[0] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[1] * SX); + y = YC + (dst[1] * SY); + pCanvas->Pixels[x][y] = col; + } + break; + case 2: + i4m.Clear(); + i4s.Clear(); + for( i = 0; i < XYCOLLECT; i++, pm++, ps++ ){ + dm = *pm; + ds = *ps; + if( inv ) ds = -ds; + i4m.Do(dmt, dm); + i4s.Do(dst, ds); + x = XC + (dmt[0] * SX); + y = YC + (dst[0] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[1] * SX); + y = YC + (dst[1] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[2] * SX); + y = YC + (dst[2] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[3] * SX); + y = YC + (dst[3] * SY); + pCanvas->Pixels[x][y] = col; + } + break; + default: + i8m.Clear(); + i8s.Clear(); + for( i = 0; i < XYCOLLECT; i++, pm++, ps++ ){ + dm = *pm; + ds = *ps; + if( inv ) ds = -ds; + i8m.Do(dmt, dm); + i8s.Do(dst, ds); + x = XC + (dmt[0] * SX); + y = YC + (dst[0] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[1] * SX); + y = YC + (dst[1] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[2] * SX); + y = YC + (dst[2] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[3] * SX); + y = YC + (dst[3] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[4] * SX); + y = YC + (dst[4] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[5] * SX); + y = YC + (dst[5] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[6] * SX); + y = YC + (dst[6] * SY); + pCanvas->Pixels[x][y] = col; + x = XC + (dmt[7] * SX); + y = YC + (dst[7] * SY); + pCanvas->Pixels[x][y] = col; + } + break; + } + pSound->FSKDEM.m_XYScope = 0; + mp->Collect(XYCOLLECT); + sp->Collect(XYCOLLECT); + pSound->FSKDEM.m_XYScope = 1; + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateXYScope(void) +{ + if( KXYScope->Checked ){ + if( UsrPal != NULL ){ + ClosePalette(); + m_ReqPaletteChange = 1; + } + PanelXY->Visible = TRUE; + Timer->Interval = 100; + pBitmapXY->Palette = 0; + delete pBitmapXY; + int w; + if( m_XYSize ){ + w = PanelWater->Top - PanelFFT->Top + PanelWater->Height; + KXYBig->Checked = TRUE; + } + else { + w = PanelFFT->Height - 1; + KXYSmall->Checked = TRUE; + } + int left = PanelFFT->Left + PanelFFT->Width - w; + PanelXY->SetBounds(left, PanelFFT->Top, w, w); + pBitmapXY = new Graphics::TBitmap(); + pBitmapXY->Width = PBoxXY->Width; + pBitmapXY->Height = PBoxXY->Height; + if( UsrPal != NULL ){ + pBitmapXY->Palette = UsrPal; + } + } + else { + if( m_XYSize ){ + KXYBig->Checked = TRUE; + } + else { + KXYSmall->Checked = TRUE; + } + PanelXY->Visible = FALSE; + Timer->Interval = 200; + } + if( pSound == NULL ) return; + UpdateXY2(); + if( KXYScope->Checked ){ + DrawXY(); + if( !(Remote & REMSHOWOFF) ){ + PBoxXYPaint(NULL); + } + pSound->FSKDEM.m_XYScopeMark.Collect(XYCOLLECT); + pSound->FSKDEM.m_XYScopeSpace.Collect(XYCOLLECT); + } + pSound->FSKDEM.m_XYScope = KXYScope->Checked; + UpdateXYQuality(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KXYScopeClick(TObject *Sender) +{ + KXYScope->Checked = KXYScope->Checked ? 0 : 1; + UpdateXYScope(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxXYPaint(TObject *Sender) +{ + if( PBoxXY->Visible ){ + PBoxXY->Canvas->Draw(0, 0, (TGraphic*)pBitmapXY); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRxRecClick(TObject *Sender) +{ + if( (Font->Charset != SHIFTJIS_CHARSET) ){ + SaveDialog->Title = "Record MMTTY Sound file"; + SaveDialog->Filter = "MMTTY Sound Files(*.mmv)|*.mmv|"; + } + else { + SaveDialog->Title = "MMTTYƒTƒEƒ“ƒhƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "MMTTYƒTƒEƒ“ƒhƒtƒ@ƒCƒ‹(*.mmv)|*.mmv|"; + } + SaveDialog->FileName = "Recv.mmv"; + SaveDialog->DefaultExt = "mmv"; + SaveDialog->InitialDir = RecDir; + DisPaint = TRUE; + NormalWindow(this); + if( SaveDialog->Execute() == TRUE ){ + pSound->WaveFile.Rec(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + if( pSound->WaveFile.m_mode == 2 ){ + KRxRec->Checked = TRUE; + RecentAdd(AnsiString(pSound->WaveFile.m_FileName).c_str(), TRUE); //JA7UDE 0428 + } + SetDirName(RecDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428 + } + TopWindow(this); + DisPaint = FALSE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRxPlayClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options << ofFileMustExist; + if( (Font->Charset != SHIFTJIS_CHARSET) ){ + OpenDialog->Title = "Play MMTTY Sound file"; + OpenDialog->Filter = "MMTTY Sound Files(*.mmv)|*.mmv|"; + } + else { + OpenDialog->Title = "MMTTYƒTƒEƒ“ƒhƒtƒ@ƒCƒ‹‚ÌĶ"; + OpenDialog->Filter = "MMTTYƒTƒEƒ“ƒhƒtƒ@ƒCƒ‹(*.mmv)|*.mmv|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "mmv"; + OpenDialog->InitialDir = RecDir; + DisPaint = TRUE; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + pSound->WaveFile.Play(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + SetDirName(RecDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + } + DisPaint = FALSE; + if( pSound->WaveFile.m_mode == 1 ){ + KRxPosClick(NULL); + RecentAdd(pSound->WaveFile.m_FileName.c_str(), TRUE); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRxStopClick(TObject *Sender) +{ + pSound->WaveFile.FileClose(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KXYSmallClick(TObject *Sender) +{ + m_XYSize = 0; + UpdateXYScope(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KXYBigClick(TObject *Sender) +{ + m_XYSize = 1; + UpdateXYScope(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRxTimeClick(TObject *Sender) +{ + SYSTEMTIME now; + GetLocal(&now); + + char bf[256]; + sprintf(bf, "%s%02u%02u%02u%02u.mmv", RecDir, now.wMonth, now.wDay, now.wHour, now.wMinute); + pSound->WaveFile.Rec(bf); + if( pSound->WaveFile.m_mode == 2 ){ + KRxTime->Checked = TRUE; + RecentAdd(pSound->WaveFile.m_FileName.c_str(), TRUE); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRxPauseClick(TObject *Sender) +{ + pSound->WaveFile.m_pause = pSound->WaveFile.m_pause ? 0 : 1; + KRxPause->Checked = TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRxTopClick(TObject *Sender) +{ + pSound->WaveFile.Rewind(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KRxPosClick(TObject *Sender) +{ + TPlayDlgBox *pBox = new TPlayDlgBox(this); + + pBox->Execute(&pSound->WaveFile); + delete pBox; + TopWindow(this); +} +//--------------------------------------------------------------------------- +// Recent Menu Click +void __fastcall TMmttyWd::OnRecentClick(TObject *Sender) +{ + LPCSTR pName = RecentMenu.FindItemText((TMenuItem *)Sender); + if( pName != NULL ){ + char bf[256]; + strcpy(bf, pName); + RecentAdd(bf, pSound->WaveFile.Play(bf)); + if( pSound->WaveFile.m_mode == 1 ){ + KRxPosClick(NULL); + } + } +} +//--------------------------------------------------------------------------- +// Recent Menu Click +void __fastcall TMmttyWd::RecentAdd(LPCSTR pNew, int f) +{ + if( RecentMenu.IsAdd(pNew) ){ + RecentMenu.Delete(); + if( f != FALSE ){ + RecentMenu.Add(pNew); + } + else { + RecentMenu.Delete(pNew); + } + RecentMenu.Insert(NULL, OnRecentClick); + } +} +//--------------------------------------------------------------------------- +// Recent Menu Update +void __fastcall TMmttyWd::UpdateRecentMenu(void) +{ + RecentMenu.Delete(); + RecentMenu.Init(KExit, KMFile, RECMENUMAX); + RecentMenu.ExtFilter("MMV"); + RecentMenu.Insert(NULL, OnRecentClick); +} + +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KShortCutClick(TObject *Sender) +{ + if(Font->Charset != SHIFTJIS_CHARSET){ + SetMenuName("RcvLog", AnsiString(KRcvLog->Caption).c_str()); //JA7UDE 0428 + SetMenuName("FileOut", AnsiString(KFileOut->Caption).c_str()); //JA7UDE 0428 + SetMenuName("SaveRx", AnsiString(KSaveRx->Caption).c_str()); //JA7UDE 0428 + SetMenuName("OpenLog", AnsiString(KOpenLog->Caption).c_str()); //JA7UDE 0428 + SetMenuName("Flush", AnsiString(KFlush->Caption).c_str()); //JA7UDE 0428 + SetMenuName("RecTime", AnsiString(KRxTime->Caption).c_str()); //JA7UDE 0428 + SetMenuName("Rec", AnsiString(KRxRec->Caption).c_str()); //JA7UDE 0428 + SetMenuName("Play", AnsiString(KRxPlay->Caption).c_str()); //JA7UDE 0428 + SetMenuName("PlayPos", AnsiString(KRxPos->Caption).c_str()); //JA7UDE 0428 + SetMenuName("PlayStop", AnsiString(KRxStop->Caption).c_str()); //JA7UDE 0428 + SetMenuName("Paste", AnsiString(KPaste->Caption).c_str()); //JA7UDE 0428 + SetMenuName("MacBtn", AnsiString(KMac->Caption).c_str()); //JA7UDE 0428 + SetMenuName("RUN", AnsiString(KRun->Caption).c_str()); //JA7UDE 0428 + SetMenuName("Scope", AnsiString(KOS->Caption).c_str()); //JA7UDE 0428 + SetMenuName("ClrRxWindow", AnsiString(KClrRx->Caption).c_str()); //JA7UDE 0428 + SetMenuName("LogList", AnsiString(KLog->Caption).c_str()); //JA7UDE 0428 + SetMenuName("QSOData", AnsiString(KQSO->Caption).c_str()); //JA7UDE 0428 + SetMenuName("EntTX", AnsiString(KENT->Caption).c_str()); //JA7UDE 0428 + SetMenuName("WordWrap", AnsiString(KWP->Caption).c_str()); //JA7UDE 0428 + SetMenuName("TNC", AnsiString(KTNC->Caption).c_str()); //JA7UDE 0428 + SetMenuName("Option", AnsiString(KOption->Caption).c_str()); //JA7UDE 0428 + SetMenuName("LogOpt", AnsiString(KOptLog->Caption).c_str()); //JA7UDE 0428 + SetMenuName("ExtReset", AnsiString(KExtReset->Caption).c_str()); //JA7UDE 0428 + SetMenuName("ExtSusp", AnsiString(KExtSusp->Caption).c_str()); //JA7UDE 0428 + + SetMenuName("TxUp", "ScrollUp TxWindow"); + SetMenuName("TxDown", "ScrollDown TxWindow"); + SetMenuName("TxPUp", "PageUp TxWindow"); + SetMenuName("TxPDown", "PageDown TxWindow"); + SetMenuName("TxHome", "MoveTop TxWindow"); + SetMenuName("TxEnd", "MoveBottom TxWindow"); + + SetMenuName("RxUp", "ScrollUp RxWindow"); + SetMenuName("RxDown", "ScrollDown RxWindow"); + SetMenuName("RxPUp", "PageUp RxWindow"); + SetMenuName("RxPDown", "PageDown RxWindow"); + SetMenuName("RxHome", "MoveTop RxWindow"); + SetMenuName("RxEnd", "MoveBottom RxWindow"); + + SetMenuName("CharWaitL", "Left Char Wait"); + SetMenuName("CharWaitR", "Right Char Wait"); + SetMenuName("DiddleWaitL", "Left Diddle Wait"); + SetMenuName("DiddleWaitR", "Right Diddle Wait"); + + SetMenuName("TxHeightUp", "HeightUp TxWindow"); + SetMenuName("TxHeightDown", "HeightDown TxWindow"); + + SetMenuName("TxLTR", "Tx LTR"); + SetMenuName("TxFIG", "Tx FIG"); + + SetMenuName("DecShift", "Dec. Shift width"); + SetMenuName("IncShift", "Inc. Shift width"); + SetMenuName("ChangeShift", "Change Shift (170/200/220/350/450)"); + } + + TShortCutDlg *pBox = new TShortCutDlg(this); + pBox->Execute(); + delete pBox; + UpdateShortCut(TRUE); + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetHint(TControl *tp, WORD Key) +{ + if( Key && KHint->Checked ){ + char bf[128]; + sprintf(bf, "ShortCut %s", GetKeyName(Key)); + tp->ShowHint = TRUE; + tp->Hint = bf; + } + else { + tp->Hint = ""; + tp->ShowHint = FALSE; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetShortCut(TMenuItem *mp, WORD Key) +{ + if( Key && (!Remote) ){ + if( Key & 0x100 ){ + mp->ShortCut = ShortCut(WORD(Key&0x00ff), TShiftState() << ssCtrl); + } + else if( Key & 0x200 ){ + mp->ShortCut = ShortCut(WORD(Key&0x00ff), TShiftState() << ssAlt); + } + else if( Key & 0x400 ){ + mp->ShortCut = ShortCut(WORD(Key&0x00ff), TShiftState() << ssShift); + } + else { + mp->ShortCut = ShortCut(Key, TShiftState()); + } + } + else { + mp->ShortCut = ShortCut(0, TShiftState()); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateShortCut(BOOL bMenu) +{ + if( bMenu ){ + SetShortCut(KRcvLog, sys.m_SysKey[kkRcvLog]); + SetShortCut(KFileOut, sys.m_SysKey[kkFileOut]); + SetShortCut(KSaveRx, sys.m_SysKey[kkSaveRx]); + + SetShortCut(KOpenLog, sys.m_SysKey[kkOpenLog]); + SetShortCut(KFlush, sys.m_SysKey[kkFlush]); + + SetShortCut(KRxTime, sys.m_SysKey[kkRecTime]); + SetShortCut(KRxRec, sys.m_SysKey[kkRec]); + SetShortCut(KRxPlay, sys.m_SysKey[kkPlay]); + SetShortCut(KRxPos, sys.m_SysKey[kkPlayPos]); + SetShortCut(KRxStop, sys.m_SysKey[kkPlayStop]); + + SetShortCut(KRun, sys.m_SysKey[kkRun]); + + SetShortCut(KPaste, sys.m_SysKey[kkPaste]); + SetShortCut(KPanel, sys.m_SysKey[kkPanel]); + SetShortCut(KMac, sys.m_SysKey[kkMac]); + SetShortCut(KOS, sys.m_SysKey[kkScope]); + SetShortCut(KClrRx, sys.m_SysKey[kkClrRxWindow]); + SetShortCut(KLog, sys.m_SysKey[kkLogList]); + SetShortCut(KQSO, sys.m_SysKey[kkQSOData]); + + SetShortCut(KENT, sys.m_SysKey[kkEntTX]); + SetShortCut(KWP, sys.m_SysKey[kkWordWrap]); + SetShortCut(KTNC, sys.m_SysKey[kkTNC]); + SetShortCut(KOption, sys.m_SysKey[kkOption]); + SetShortCut(KOptLog, sys.m_SysKey[kkLogOption]); + + SetShortCut(KS1, sys.m_SysKey[kkPro1]); + SetShortCut(KS2, sys.m_SysKey[kkPro2]); + SetShortCut(KS3, sys.m_SysKey[kkPro3]); + SetShortCut(KS4, sys.m_SysKey[kkPro4]); + SetShortCut(KS5, sys.m_SysKey[kkPro5]); + SetShortCut(KS6, sys.m_SysKey[kkPro6]); + SetShortCut(KS7, sys.m_SysKey[kkPro7]); + SetShortCut(KS8, sys.m_SysKey[kkPro8]); + SetShortCut(KSDEF, sys.m_SysKey[kkProDef]); + SetShortCut(KSRET, sys.m_SysKey[kkProRet]); + + SetShortCut(KExtCmd1, sys.m_SysKey[kkExtCmd1]); + SetShortCut(KExtCmd2, sys.m_SysKey[kkExtCmd2]); + SetShortCut(KExtCmd3, sys.m_SysKey[kkExtCmd3]); + SetShortCut(KExtCmd4, sys.m_SysKey[kkExtCmd4]); + SetShortCut(KExtReset, sys.m_SysKey[kkExtReset]); + SetShortCut(KExtSusp, sys.m_SysKey[kkExtSusp]); + } + + SetHint(SBData, sys.m_SysKey[kkQSOData]); + SetHint(SBFIG, sys.m_SysKey[kkFIG]); + SetHint(SBUOS, sys.m_SysKey[kkUOS]); + + SetHint(SBTX, sys.m_SysKey[kkTX]); + SetHint(SBTXOFF, sys.m_SysKey[kkTXOFF]); + SetHint(SBQSO, sys.m_SysKey[kkQSO]); + SetHint(SBInit, sys.m_SysKey[kkInitBox]); + SetHint(HisCall, sys.m_SysKey[kkCall]); + SetHint(HisName, sys.m_SysKey[kkName]); + SetHint(HisQTH, sys.m_SysKey[kkQTH]); + SetHint(HisRST, sys.m_SysKey[kkRST]); + SetHint(MyRST, sys.m_SysKey[kkMyRST]); + SetHint(Freq, sys.m_SysKey[kkFreq]); + SetHint(SBFind, sys.m_SysKey[kkFind]); + SetHint(SBINClear, sys.m_SysKey[kkClear]); + + SetHint(SBIN1, sys.m_InBtnKey[0]); + SetHint(SBIN2, sys.m_InBtnKey[1]); + SetHint(SBIN3, sys.m_InBtnKey[2]); + SetHint(SBIN4, sys.m_InBtnKey[3]); + int i; + for( i = 0; i < 16; i++ ){ + SetHint(GetSB(i), sys.m_UserKey[i]); + } + Application->ShowHint = KHint->Checked; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KHintClick(TObject *Sender) +{ + KHint->Checked = KHint->Checked ? 0 : 1; + UpdateShortCut(FALSE); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KOptLogClick(TObject *Sender) +{ + TLogSetDlg *pBox = new TLogSetDlg(this); + int contest = Log.m_LogSet.m_Contest; + pBox->Execute(); + delete pBox; + UpdateTitle(); + UpdateLogLink(); + if( contest != Log.m_LogSet.m_Contest ){ + AlignLogPanel(); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KPanelClick(TObject *Sender) +{ + KPanel->Checked = KPanel->Checked ? 0 : 1; + UpdateControlPanel(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KPanelSmallClick(TObject *Sender) +{ + if( m_PanelSize ){ + m_PanelSize = 0; + FormResize(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KPanelBigClick(TObject *Sender) +{ + if( m_PanelSize != 2 ){ + m_PanelSize = 2; + FormResize(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KPanelMediumClick(TObject *Sender) +{ + if( m_PanelSize != 1 ){ + m_PanelSize = 1; + FormResize(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KPanelSuperClick(TObject *Sender) +{ + if( m_PanelSize != 3 ){ + m_PanelSize = 3; + FormResize(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateExtProgram(void) +{ + KExtEnt1->Caption = KExtCmd1->Caption; + KExtDel1->Caption = KExtCmd1->Caption; + KExtEnt2->Caption = KExtCmd2->Caption; + KExtDel2->Caption = KExtCmd2->Caption; + KExtEnt3->Caption = KExtCmd3->Caption; + KExtDel3->Caption = KExtCmd3->Caption; + KExtEnt4->Caption = KExtCmd4->Caption; + KExtDel4->Caption = KExtCmd4->Caption; + KExtCmd1->Enabled = !sys.m_ExtCmd[0].IsEmpty(); + KExtCmd2->Enabled = !sys.m_ExtCmd[1].IsEmpty(); + KExtCmd3->Enabled = !sys.m_ExtCmd[2].IsEmpty(); + KExtCmd4->Enabled = !sys.m_ExtCmd[3].IsEmpty(); + KExtDel1->Enabled = !sys.m_ExtCmd[0].IsEmpty(); + KExtDel2->Enabled = !sys.m_ExtCmd[1].IsEmpty(); + KExtDel3->Enabled = !sys.m_ExtCmd[2].IsEmpty(); + KExtDel4->Enabled = !sys.m_ExtCmd[3].IsEmpty(); + SetExtMenuName(0, AnsiString(KExtCmd1->Caption).c_str()); //JA7UDE 0428 + SetExtMenuName(1, AnsiString(KExtCmd2->Caption).c_str()); //JA7UDE 0428 + SetExtMenuName(2, AnsiString(KExtCmd3->Caption).c_str()); //JA7UDE 0428 + SetExtMenuName(3, AnsiString(KExtCmd4->Caption).c_str()); //JA7UDE 0428 +#if 0 + HICON ic = ::ExtractIcon(HInstance, sys.m_ExtCmd[0].c_str(), 0); +// ::DrawIcon(PBoxRx->Canvas->Handle, 0, 0, ic); + static Graphics::TBitmap *pbmp = NULL; + if( pbmp == NULL ) pbmp = new Graphics::TBitmap; + pbmp->Height = GetMenuCheckMarkDimensions(); + pbmp->Width = GetMenuCheckMarkDimensions(); + ::DrawIcon(pbmp->Canvas->Handle, 0, 0, ic); + ::SetMenuItemBitmaps(KExtCmd1->Handle, 0, 0, pbmp->Handle, pbmp->Handle); +#endif +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtEntClick(int n, TMenuItem *mp) +{ + AnsiString as = mp->Caption; + int r; + if(Font->Charset != SHIFTJIS_CHARSET){ + r = InputMB("Assign External Program", "Input Menu text", as); + } + else { + r = InputMB("ŠO•”ƒvƒƒOƒ‰ƒ€“o˜^", "ƒƒjƒ…[‚É•\ަ‚·‚é–¼‘O‚ð“ü—Í‚µ‚ĉº‚³‚¢.", as); + } + if( r == TRUE ){ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options << ofFileMustExist; + if( (Font->Charset != SHIFTJIS_CHARSET) ){ + OpenDialog->Title = "Select External Program"; + OpenDialog->Filter = "Program files(*.exe;*.lnk)|*.exe;*.lnk|All Files(*.*)|*.*|"; + } + else { + OpenDialog->Title = "ŽÀs‚·‚éƒvƒƒOƒ‰ƒ€‚ð‘I‘ð"; + OpenDialog->Filter = "ƒvƒƒOƒ‰ƒ€ƒtƒ@ƒCƒ‹(*.exe;*.lnk)|*.exe;*.lnk|‚·‚ׂẴtƒ@ƒCƒ‹(*.*)|*.*|"; + } + OpenDialog->FileName = sys.m_ExtCmd[n]; + OpenDialog->DefaultExt = "exe"; + OpenDialog->InitialDir = "\\"; + DisPaint = TRUE; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + sys.m_ExtCmd[n] = OpenDialog->FileName; + mp->Caption = as; + UpdateExtProgram(); + } + TopWindow(this); + DisPaint = FALSE; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtEnt1Click(TObject *Sender) +{ + KExtEntClick(0, KExtCmd1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtEnt2Click(TObject *Sender) +{ + KExtEntClick(1, KExtCmd2); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtEnt3Click(TObject *Sender) +{ + KExtEntClick(2, KExtCmd3); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtEnt4Click(TObject *Sender) +{ + KExtEntClick(3, KExtCmd4); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtCmdClick(int n) +{ + KExtSuspClick(NULL); + + char bf[256]; + SetDirName(bf, sys.m_ExtCmd[n].c_str()); + ::SetCurrentDirectory(bf); + ::WinExec(sys.m_ExtCmd[n].c_str(), SW_SHOWDEFAULT); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtCmd1Click(TObject *Sender) +{ + KExtCmdClick(0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtCmd2Click(TObject *Sender) +{ + KExtCmdClick(1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtCmd3Click(TObject *Sender) +{ + KExtCmdClick(2); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtCmd4Click(TObject *Sender) +{ + KExtCmdClick(3); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtResetClick(TObject *Sender) +{ + CWaitCursor wait; + pSound->m_suspack = 0; + pSound->m_susp = 0; + for( int i = 0; (i < 20) && !pSound->m_suspack; i++ ) ::Sleep(100); + if( pSound->m_susp ) return; + COMM.change = 1; + RADIO.change = 1; + TNC.change = 1; + OpenCloseCom(); + ::SetCurrentDirectory(BgnDir); + Log.Close(); + Log.Open(NULL, TRUE); + DisPaint = FALSE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtSuspClick(TObject *Sender) +{ + CWaitCursor wait; + pSound->m_suspack = 0; + pSound->m_susp = 1; + if( pComm != NULL ){ + delete pComm; + pComm = NULL; + } + if( pRadio != NULL ){ + delete pRadio; + pRadio = NULL; + } + if(pTnc != NULL ){ + delete pTnc; + pTnc = NULL; + } + Log.Close(); + Log.Open(NULL, TRUE); + int i; + for( i = 0; (i < 20) && !pSound->m_suspack; i++ ) ::Sleep(100); + pSound->m_suspack = 0; + DisPaint = TRUE; + if( !(Remote & REMSHOWOFF) ){ + Application->Minimize(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtDel1Click(TObject *Sender) +{ + KExtCmd1->Caption = "External 1"; + sys.m_ExtCmd[0] = ""; + UpdateExtProgram(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtDel2Click(TObject *Sender) +{ + KExtCmd2->Caption = "External 2"; + sys.m_ExtCmd[1] = ""; + UpdateExtProgram(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtDel3Click(TObject *Sender) +{ + KExtCmd3->Caption = "External 3"; + sys.m_ExtCmd[2] = ""; + UpdateExtProgram(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtDel4Click(TObject *Sender) +{ + KExtCmd4->Caption = "External 4"; + sys.m_ExtCmd[3] = ""; + UpdateExtProgram(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::DrawSQ(void) +{ + if( pSound == NULL ) return; + + TCanvas *pCanvas = pBitmapSQ->Canvas; + + TRect rc; + int XL = 0; + int XR = pBitmapSQ->Width - 1; + int YT = 0; + int YB = pBitmapSQ->Height - 1; + rc.Left = XL; + rc.Right = XR; + rc.Top = YT; + rc.Bottom = YB+1; + if( !(Remote & REMSHOWOFF) ){ + pCanvas->Brush->Color = clBlack; + pCanvas->FillRect(rc); + } + + rc.Left = XL; + int over = 0; + if( pSound->FSKDEM.m_Limit ){ + rc.Right = pSound->FSKDEM.m_avgdeff * XR / (10.0 * SQSCALE); + if( (pSound->FSKDEM.GetSQLevel() * 10.0) > pSound->FSKDEM.m_avgdeff ){ + pCanvas->Brush->Color = clGray; + } + else { + pCanvas->Brush->Color = clLime; + over = 1; + if( !m_FIGTimer && SBFIG->Down ){ + SBFIG->Down = FALSE; + SBFIGClick(NULL); + } + m_FIGTimer = 1000/Timer->Interval; + } + if( m_FIGTimer ) m_FIGTimer--; + RemoteSigLevel(pSound->FSKDEM.m_avgdeff/10.0); + } + else { + rc.Right = pSound->FSKDEM.m_avgdeff * XR / SQSCALE; + if( pSound->FSKDEM.GetSQLevel() > pSound->FSKDEM.m_avgdeff ){ + pCanvas->Brush->Color = clGray; + } + else { + pCanvas->Brush->Color = clLime; + over = 1; + } + RemoteSigLevel(pSound->FSKDEM.m_avgdeff); + } + if( Remote & REMSHOWOFF ) return; + if( !SBSQ->Down ){ + pCanvas->Brush->Color = clLime; + } + + if( rc.Right > XR ) rc.Right = XR; + rc.Top = YT; + rc.Bottom = YB+1; + pCanvas->FillRect(rc); + rc.Right = pSound->FSKDEM.GetSQLevel() * XR / SQSCALE; + rc.Left = rc.Right; + rc.Right++; + rc.Top = YT; + rc.Bottom = YB+1; + pCanvas->Brush->Color = over ? clBlack : clWhite; + pCanvas->FillRect(rc); +#if BITDEBUG + double tim = pSound->FSKDEM.m_bitCountA * 1000.0/DemSamp; +#if TXDDEBUG + if( pComm == NULL ) return; + char bf[32]; + pCanvas->Brush->Color = clWhite; + pCanvas->Font->Color = clBlack; + pCanvas->Font->Size = 12; + sprintf(bf, "%lu", pComm->m_bitCountA); + pCanvas->TextOut(0, 0, bf); +#else + if( over && (tim >= 140) && (tim < 400) ){ + char bf[32]; + pCanvas->Brush->Color = clWhite; + pCanvas->Font->Color = clBlack; + pCanvas->Font->Size = 12; +// sprintf(bf, "%05lf", pSound->FSKDEM.m_avgdeff); + sprintf(bf, "%.1lf", pSound->FSKDEM.m_bitCountA * 1000.0/DemSamp); + pCanvas->TextOut(0, 0, bf); + } +#endif +#endif +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxSQMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + pSound->FSKDEM.SetSQLevel(X * SQSCALE / (pBitmapSQ->Width - 1)); + if( !SBSQ->Down ){ + DrawSQ(); + PBoxSQPaint(NULL); + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PBoxSQPaint(TObject *Sender) +{ + if( PBoxSQ->Visible ){ + PBoxSQ->Canvas->Draw(0, 0, (TGraphic*)pBitmapSQ); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::LLPFClick(TObject *Sender) +{ + if( pSound == NULL ) return; + + switch(m_DemType){ + case 0: + case 1: + pSound->FSKDEM.m_lpf = pSound->FSKDEM.m_lpf ? 0 : 1; + UpdateItem(); + break; + default: + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateXYQuality(void) +{ + switch(m_XYQuality){ + case 0: + KXYQuality1->Checked = TRUE; + break; + case 1: + KXYQuality2->Checked = TRUE; + break; + case 2: + KXYQuality3->Checked = TRUE; + break; + default: + KXYQuality4->Checked = TRUE; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KXYQuality1Click(TObject *Sender) +{ + m_XYQuality = 0; + UpdateXYQuality(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KXYQuality2Click(TObject *Sender) +{ + m_XYQuality = 1; + UpdateXYQuality(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KXYQuality3Click(TObject *Sender) +{ + m_XYQuality = 2; + UpdateXYQuality(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KXYQuality4Click(TObject *Sender) +{ + m_XYQuality = 3; + UpdateXYQuality(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGLClick(TObject *Sender) +{ + sys.m_FFTGain = 0; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGMClick(TObject *Sender) +{ + sys.m_FFTGain = 1; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGHClick(TObject *Sender) +{ + sys.m_FFTGain = 2; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGTClick(TObject *Sender) +{ + sys.m_FFTGain = 3; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGS1Click(TObject *Sender) +{ + sys.m_FFTGain = 4; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGS2Click(TObject *Sender) +{ + sys.m_FFTGain = 5; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGS3Click(TObject *Sender) +{ + sys.m_FFTGain = 6; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTGS4Click(TObject *Sender) +{ + sys.m_FFTGain = 7; + pSound->fftIN.ClearBuf(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::LCallClick(TObject *Sender) +{ + m_Running = m_Running ? 0 : 1; + UpdateTitle(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSetHelpClick(TObject *Sender) +{ + DisPaint = TRUE; + TSetHelpBox *pBox = new TSetHelpBox(this); + + if( pBox->Execute() == TRUE ){ + AddHelpMenu(); + UpdateSystemFont(); + } + delete pBox; + TopWindow(this); + DisPaint = FALSE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::AddHelpMenu(void) +{ + if( (sys.m_HTMLHelp == HELPNAME_A) || (sys.m_HTMLHelp == HELPNAME_B) ){ + if( KMHelp->Items[0]->OnClick != KAndyHelp ){ + KMHelp->Delete(0); + KMHelp->Delete(0); + KMHelp->Delete(0); + KMHelp->Delete(0); + KMHelp->Delete(0); + KMHelp->Delete(0); + pAndyMenu = new TMenuItem(NULL); + pAndyMenu->Caption = "MMTTY Help"; + pAndyMenu->OnClick = KAndyHelp; + KMHelp->Insert(0, pAndyMenu); + } + } + else if( !sys.m_HTMLHelp.IsEmpty() ){ + if( KMHelp->Items[0]->OnClick == KAndyHelp ){ + KMHelp->Delete(0); + } + else { + pAndyMenu2 = new TMenuItem(NULL); + pAndyMenu2->Caption = "-"; + pAndyMenu2->OnClick = NULL; + KMHelp->Insert(0, pAndyMenu2); + } + char bf[256]; + pAndyMenu = new TMenuItem(NULL); + if( !strcmpi(GetEXT(sys.m_HTMLHelp.c_str()), "HLP") ){ + sprintf(bf, "MMTTY Help (%s)", sys.m_HTMLHelp.c_str()); + } + else { + sprintf(bf, "HTML Help (%s)", sys.m_HTMLHelp.c_str()); + } + pAndyMenu->Caption = bf; + pAndyMenu->OnClick = KAndyHelp; + KMHelp->Insert(0, pAndyMenu); + } + else { + if( KMHelp->Items[0]->OnClick == KAndyHelp ){ + KMHelp->Delete(0); + KMHelp->Delete(0); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KAndyHelp(TObject *Sender) +{ +#if 1 + ShowHtmlHelp(); +#else + char bf[512]; + + sprintf(bf, "%s%s", BgnDir, sys.m_HTMLHelp.c_str()); + FILE *fp; + if( (fp = fopen(bf, "rb"))!=NULL ){ + fclose(fp); + if( !strcmpi(GetEXT(bf), "HLP") ){ + ::WinHelp(Handle, bf, HELP_FINDER, 0); + } + else if( !strcmpi(GetEXT(bf), "CHM") ){ + ::ShellExecute(Handle, "open", bf, NULL, NULL, SW_SHOWDEFAULT); + } + else { + WebRef.ShowHTML(bf); + } + } + else if((sys.m_WinFontCharset != SHIFTJIS_CHARSET )){ + ErrorMB( "'%s' was not found.\r\n\r\nPlease search in the MMTTY English Web Site.", sys.m_HTMLHelp.c_str()); + } + else { + ErrorMB( "'%s'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ.\r\n\r\nMMTTY English Web Site ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚µ‚ĉº‚³‚¢.", sys.m_HTMLHelp.c_str()); + } +#endif +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSCharClick(TObject *Sender) +{ + m_SendWay = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSWordClick(TObject *Sender) +{ + m_SendWay = 1; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSLineClick(TObject *Sender) +{ + m_SendWay = 2; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTRSClick(TObject *Sender) +{ + sys.m_FFTResp = 3; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTRMClick(TObject *Sender) +{ + sys.m_FFTResp = 2; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KFFTRFClick(TObject *Sender) +{ + sys.m_FFTResp = 1; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KPasteClick(TObject *Sender) +{ + TClipboard *pClip = new TClipboard; + + + //char bf[1024]; + WideChar bf[1024]; //JA7UDE 0428 + + pClip->Open(); + pClip->GetTextBuf(bf, sizeof(bf)); + pClip->Close(); + delete pClip; + //jstrupr(bf); + _wcsupr(bf); //JA7UDE 0428 + char bbf[1024]; + wcstombs( bbf, bf, wcslen(bf) ); + WriteFifoEdit(bbf); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +// TNCƒf[ƒ^ŽóM‚̃Cƒxƒ“ƒg +void __fastcall TMmttyWd::OnTncEvent(TMessage &Message) +{ + if( pTnc == NULL ) return; + switch(Message.WParam){ + case MMTMSG_CHAR: + Message.Result = pTnc->PutRxFifo(BYTE(Message.LParam)); + break; + case MMTMSG_PTT: + RxCommon(Message.LParam ? TNC_PTTON : TNC_PTTOFF); + break; + case MMTMSG_COMMON: + RxCommon(BYTE(Message.LParam)); + break; + case MMTMSG_CLEARFIFO: + if( Message.LParam ){ + pTnc->ClearTxFifo(); + } + else { + pTnc->ClearRxFifo(); + } + break; + case MMTMSG_SETSWITCH: + Message.LParam &= ~0x00008000; + RemoteSwitch(Message.LParam); + break; + case MMTMSG_SETVIEW: + RemoteView(Message.LParam); + break; + case MMTMSG_CHARTXW: + if( Message.LParam != LF ) PushKey(char(Message.LParam)); + Message.Result = FifoEdit.GetLen(); + break; + case MMTMSG_WRITETXW: + if( !Message.LParam ) break; + WriteFifoEdit(LPCSTR(Message.LParam)); + Message.Result = FifoEdit.GetLen(); + break; + case MMTMSG_SETFREQ: + { + m_DisEvent++; + int mfq = LOWORD(Message.LParam); + int sfq = HIWORD(Message.LParam); + MarkFreq->Text = mfq; + pSound->FSKDEM.SetMarkFreq(mfq); + pSound->FSKDEM.SetSpaceFreq(sfq); + ShiftFreq->Text = sfq - mfq; + m_DisEvent--; + MarkFreqChange(NULL); + } + break; + case MMTMSG_SETBAUD: + { + int dd = Message.LParam; + if( (dd >= 2000) && (dd < 60000) ){ + pSound->FSKDEM.SetBaudRate(double(dd)/100.0); + pSound->FSKMOD.SetBaudRate(double(dd)/100.0); + SelectCombo(FALSE); + UpdateFSK(); + } + } + break; + case MMTMSG_SETSQ: + pSound->FSKDEM.SetSQLevel(Message.LParam); + break; + case MMTMSG_SETNOTCH: + pSound->m_lms.m_lmsNotch2 = HIWORD(Message.LParam); + pSound->m_lms.m_lmsNotch = LOWORD(Message.LParam); + if( SBLMS->Down ) pSound->CalcBPF(); + RemoteFreq(); + break; + case MMTMSG_SETDEFFREQ: + sys.m_DefMarkFreq = LOWORD(Message.LParam); + sys.m_DefShift = HIWORD(Message.LParam); + break; + case MMTMSG_SETPTTTIMER: + m_PttTimer = Message.LParam; + UpdatePttTimer(); + KPttTim->Checked = m_PttTimer ? 1 : 0; + break; + case MMTMSG_SETTNCTYPE: + TNC.Type = LOWORD(Message.LParam); + if( TNC.Type >= 3 ) TNC.Type = 0; + TNC.TncMode = HIWORD(Message.LParam); + if( TNC.Type == 2 ){ + TNC.TncMode = 0; + } + else if( TNC.TncMode ){ + CmdKAM(""); + } + break; + case MMTMSG_SETPRIORITY: + Message.Result = ::SetThreadPriority((HANDLE)pTnc->Handle, Message.LParam); + break; + case MMTMSG_SETLENGTH: + if( (Message.LParam >= 5) && (Message.LParam <= 8) ){ + pSound->FSKDEM.m_BitLen = Message.LParam; + pSound->FSKMOD.m_BitLen = Message.LParam; + UpdateFSK(); + } + break; + case MMTMSG_GETPROFILENAME: + Message.Result = NULL; + if( (Message.LParam >= 0) && (Message.LParam < 8) ){ + TMenuItem *tp = GetKS(Message.LParam); + if( tp->Enabled ){ + Message.Result = (DWORD)tp->Caption.c_str(); + } + } + break; + case MMTMSG_LOADPROFILE: + ReadProfile(Message.LParam, NULL); + UpdateItem(); + break; + case MMTMSG_SAVEPROFILE: + if( !Message.LParam ) break; + { + char bf[1024]; + StrCopy(bf, LPCSTR(Message.LParam), sizeof(bf)-1); + LPSTR t, p; + p = StrDlm(t, bf); + int n = atoin(t, -1); + if( (n >= 0) && (n < 8) ){ + TMenuItem *tp = GetKS(n); + LPCSTR dp; + if( *p ){ + dp = p; + } + else { + char bbf[32]; + sprintf(bbf, "Profile %d", n + 1); + dp = bbf; + } + tp->Caption = dp; + tp->Enabled = *p; + WriteProfile(n, dp, *p); + UpdateProfile(); + } + } + break; + case MMTMSG_SETRESO: + { + MSG msg; + msg.wParam = RXM_SETRESO; + msg.lParam = Message.LParam; + RemoteMMTTY(msg); + } + break; + case MMTMSG_SETLPF: + { + MSG msg; + msg.wParam = RXM_SETLPF; + msg.lParam = Message.LParam; + RemoteMMTTY(msg); + } + break; + default: + OnTncEvent(); + Message.Result = FALSE; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetNMMT(void) +{ + if( pTnc->IsMMT() ){ + NMMT *pNMMT = pTnc->GetNMMT(); + pNMMT->m_notch1 = pSound->m_lms.m_lmsNotch; + pNMMT->m_notch2 = pSound->m_lms.m_lmsNotch2; + pNMMT->m_txbuflen = GetTxBufCount() + strlen(m_TNCStg.c_str()); + pNMMT->m_codeswitch = GetRemoteSwitch(); + pNMMT->m_codeview = GetRemoteView(); + pNMMT->m_txwlen = FifoEdit.GetLen(); + pNMMT->m_baud = pSound->FSKDEM.GetBaudRate() * 100; + pNMMT->m_bitlength = pSound->FSKDEM.m_BitLen; + pNMMT->m_modetnc = MAKELONG(TNC.Type, TNC.TncMode); + pNMMT->m_fig = rtty.m_fig; + pNMMT->m_defmark = sys.m_DefMarkFreq; + pNMMT->m_defshift = sys.m_DefShift; + } +} +//--------------------------------------------------------------------------- +// TNCƒf[ƒ^ŽóM‚̃Cƒxƒ“ƒg +// +void __fastcall TMmttyWd::OnTncEvent(void) +{ + if( pTnc == NULL ) return; + + UpdateTNCPTT(); + SetNMMT(); + int txbuflen = GetTxBufCount(); + if( SBTX->Down && (TNC.flwXON || TNC.flwCTS) ){ + if( txbuflen >= (MODBUFMAX*3/4) ) return; + } + char c; + while(pTnc->m_rxcnt){ + c = pTnc->m_rxbuf[pTnc->m_rxrp]; + pTnc->m_rxrp++; + if( pTnc->m_rxrp >= sizeof(pTnc->m_rxbuf) ) pTnc->m_rxrp = 0; + pTnc->m_rxcnt--; + if( !RxCommon(c) ){ + switch(TNC.Type){ + case 0: + RxTnc241(c); + break; + case 1: + RxKAM(c); + break; + case 2: + if( SBTX->Down ){ + pSound->FSKMOD.PutData(BYTE(c)); + } + break; + } + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateTNCPTT(void) +{ + if( TNC.Type == 2 ){ + if( pTnc->m_PTT ){ + if( !SBTX->Down ) ToTX(""); + } + else { + if( SBTX->Down && IsTxIdle() ) ToRX(0); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::TncConvers(void) +{ + if( TNC.TncMode ){ + switch(TNC.Type){ + case 0: + pTnc->OutStr("K\r"); + CmdTnc241("K"); + break; + case 1: + pTnc->OutStr("RTTY\r"); + CmdKAM("RTTY"); + break; + } + } + TNC.TncMode = 0; +} +//--------------------------------------------------------------------------- +BOOL __fastcall TMmttyWd::RxCommon(BYTE c) +{ + BOOL r = TRUE; + switch(c){ + case TNC_PTTON: + ClearMacroTimer(); + TncConvers(); + if( TNC.Type == 2 ){ + pTnc->m_PTT = TRUE; + UpdateTNCPTT(); + } + else { + if( m_TNCStg.IsEmpty() ){ + ToTX(NULL); + } + else { + ToTX(m_TNCStg.c_str()); + OutputStr(m_TNCStg.c_str()); + m_TNCStg = ""; + } + } + break; + case TNC_PTTOFF: + ClearMacroTimer(); + TncConvers(); + if( TNC.Type == 2 ){ + pTnc->m_PTT = FALSE; + UpdateTNCPTT(); + } + else { + ToRX(1); + m_TNCStg = ""; + } + break; + case TNC_PTTFLUSH: + ClearMacroTimer(); + TncConvers(); + if( IsTxIdle() ){ + if( TNC.Type == 2 ){ + pTnc->m_PTT = FALSE; + UpdateTNCPTT(); + } + else { + ToRX(0); + } + } + else { + m_ReqRecv = 1; + } + break; + case TNC_CLEARBUF: + pSound->FSKMOD.DeleteTXBuf(); + m_TNCStg = ""; + break; + case TNC_AFCON: + SBAFC->Down = TRUE; + SBAFCClick(NULL); + break; + case TNC_AFCOFF: + SBAFC->Down = FALSE; + SBAFCClick(NULL); + break; + case TNC_NETON: + SBNET->Down = TRUE; + SBNETClick(NULL); + break; + case TNC_NETOFF: + SBNET->Down = FALSE; + SBNETClick(NULL); + break; + case TNC_REVON: + SBRev->Down = TRUE; + SBRevClick(NULL); + break; + case TNC_REVOFF: + SBRev->Down = FALSE; + SBRevClick(NULL); + break; + case TNC_HAM: + SBHAMClick(NULL); + break; + case TNC_ECHOON: + TNC.Echo = 2; + break; + case TNC_ECHOOFF: + TNC.Echo = 0; + break; + case TNC_CANCELPTTFLUSH: + m_ReqRecv = 0; + break; + default: + r = FALSE; + break; + } + return r; +} +void __fastcall TMmttyWd::RxTnc241(char c) +{ + char bf[256]; + + switch(c){ + case 0x12: // Ctrl+R + if( TNC.TncMode ) pTnc->OutStr("\r"); + RxCommon(TNC_PTTOFF); +// ToRX(0); +// TNC.TncMode = 0; +// m_TNCStg = ""; + break; + case 0x14: // Ctrl+T + if( TNC.TncMode ) pTnc->OutStr("\r"); + RxCommon(TNC_PTTON); +// TNC.TncMode = 0; +// ToTX(NULL); +// if( !m_TNCStg.IsEmpty() ){ +// OutputStr(m_TNCStg.c_str()); +// m_TNCStg = ""; +// } + break; + case 0x03: + if( TNC.TncMode ) pTnc->OutStr("\r"); + TNC.TncMode = 1; + pTnc->OutStr("\rcmd:"); + m_TNCStg = ""; + break; + case 0x04: // Ctrl+D + RxCommon(TNC_PTTFLUSH); +// if( IsTxIdle() ){ +// ToRX(0); +// } +// else { +// m_ReqRecv = 1; +// } +// TNC.TncMode = 0; + break; + case 0x18: // Ctrl+X + RxCommon(TNC_CLEARBUF); +// pSound->FSKMOD.DeleteTXBuf(); +// m_TNCStg = ""; + break; + default: + if( TNC.TncMode ){ // Commandƒ‚[ƒh + if( TNC.Echo ) pTnc->PutChar(c); + m_cmdTNC.WriteChar(c); + if( m_cmdTNC.LoadText(bf, sizeof(bf)) ){ + CmdTnc241(bf); + } + } + else { // ƒƒbƒZ[ƒWƒ‚[ƒh + if( TNC.Echo == 1 ) pTnc->PutChar(c); + if( (c != LF) && (c != '#') ){ + bf[0] = c; + bf[1] = 0; + if( SBTX->Down ){OutputStr(bf);}else {m_TNCStg += bf[0];} + if( c == CR ){ + bf[0] = LF; + if( SBTX->Down ){OutputStr(bf);}else {m_TNCStg += bf[0];} + } + } + } + break; + } +} +void __fastcall TMmttyWd::RxKAM(char c) +{ + char bf[256]; + static int MODE; + int dd; + + switch(c){ + case 0x03: // Ctrl+C + if( TNC.TncMode ){ + pTnc->OutStr("cmd:"); + m_TNCStg = ""; + } + else { + MODE = 1; + } + break; + case 0x0e: // Ctrl+N + OutputStr("%F"); + break; + case 0x0c: // Ctrl+L + OutputStr("%L"); + break; + case 0x18: // Ctrl+X + RxCommon(TNC_CLEARBUF); +// pSound->FSKMOD.DeleteTXBuf(); +// m_TNCStg = ""; + break; + default: + if( TNC.TncMode ){ // Commandƒ‚[ƒh + if( TNC.Echo ) pTnc->PutChar(c); + m_cmdTNC.WriteChar(c); + if( m_cmdTNC.LoadText(bf, sizeof(bf)) ){ + CmdKAM(bf); + } + } + else if( MODE ){ + MODE = 0; + c = char(toupper(c)); + switch(c){ + case 'S': // shift change + SetShift(170.0); + m_DisEvent++; + ShiftFreq->Text = pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq(); + m_DisEvent--; + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%d", &dd); //JA7UDE 0428 + pTnc->OutStr("-170 SHIFT-"); + break; + case 'I': // revers shift + SBRev->Down = SBRev->Down ? 0 : 1; + SBRevClick(NULL); + break; + case 'T': // TX + RxCommon(TNC_PTTON); +// ToTX(NULL); +// if( !m_TNCStg.IsEmpty() ){ +// OutputStr(m_TNCStg.c_str()); +// m_TNCStg = ""; +// } + break; + case 'R': // RX + RxCommon(TNC_PTTOFF); +// ToRX(0); +// m_TNCStg = ""; + break; + case 'E': // RX after TX + RxCommon(TNC_PTTFLUSH); +// if( IsTxIdle() ){ +// ToRX(0); +// } +// else { +// m_ReqRecv = 1; +// } + break; + case 'X': // To cmd + pTnc->OutStr("cmd:"); + TNC.TncMode = 1; + m_TNCStg = ""; + break; + default: + if( isdigit(c) ){ + const int tbl[]={ + 45, 45, 50, 57, 75, 100, 110, 150, 200, 300 + }; + dd = tbl[c & 0x0f]; + pSound->FSKDEM.SetBaudRate(dd != 45 ? dd : 45.45); + pSound->FSKMOD.SetBaudRate(dd != 45 ? dd : 45.45); + SelectCombo(FALSE); + } + } + } + else { // ƒƒbƒZ[ƒWƒ‚[ƒh + if( TNC.Echo == 1 ) pTnc->PutChar(c); + if( (c != LF) && (c != '#') ){ + bf[0] = c; + bf[1] = 0; + if( SBTX->Down ){OutputStr(bf);}else {m_TNCStg += bf[0];} + if( c == CR ){ + bf[0] = LF; + if( SBTX->Down ){OutputStr(bf);}else {m_TNCStg += bf[0];} + } + } + } + break; + } +} +void __fastcall TMmttyWd::CmdTnc241(LPSTR p) +{ + int dd; + + jstrupr(p); + LPSTR pCmd; + p = SkipSpace(StrDlm(pCmd, SkipSpace(p), ' ')); + if( !strcmp(pCmd, "MODE") ){ + TNC.TncMode = 2; + pTnc->OutLine("MODE was TTY R"); + } + else if( !strcmp(pCmd, "SHIFT") ){ + pTnc->OutLine("SHIFT was %s", ShiftFreq->Text.c_str()); + if( !strcmp(p, "M") ){ + dd = 170; + } + else { + sscanf(p, "%d", &dd); + } + SetShift(double(dd)); + m_DisEvent++; + ShiftFreq->Text = pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq(); + m_DisEvent--; + } + else if( !strcmp(pCmd, "RXREV") || !strcmp(pCmd, "TXREV") ){ + pTnc->OutLine("%s was %s", pCmd, SBRev->Down ? "OFF":"ON"); + if( !strcmp(p, "ON" ) ){ + SBRev->Down = 0; + SBRevClick(NULL); + } + else { + SBRev->Down = 1; + SBRevClick(NULL); + } + } + else if( !strcmp(pCmd, "RTBAUD") ){ + pTnc->OutLine("RTBAUD was %u", int(pSound->FSKDEM.GetBaudRate())); + sscanf(p, "%d", &dd); + if( (dd >= 20) && (dd < 600) ){ + pSound->FSKDEM.SetBaudRate(dd != 45 ? dd : 45.45); + pSound->FSKMOD.SetBaudRate(dd != 45 ? dd : 45.45); + SelectCombo(FALSE); + } + } + else if( !strcmp(pCmd, "K") ){ + TNC.TncMode = 0; + m_TNCStg = ""; + } + if( TNC.TncMode ){ + if( TNC.TncMode == 1 ){ + pTnc->OutStr("cmd:"); + } + else { + pTnc->OutStr("tty:"); + } + } + else { + pTnc->OutStr("\r"); + } +} +void __fastcall TMmttyWd::CmdKAM(LPSTR p) +{ + int dd; + + jstrupr(p); + LPSTR pCmd; + p = SkipSpace(StrDlm(pCmd, SkipSpace(p), ' ')); + if( !strcmp(pCmd, "RTTY") ){ + TNC.TncMode = 0; + pTnc->OutLine("-RTTY %u-", int(pSound->FSKDEM.GetBaudRate())); + m_TNCStg = ""; + } + else if( !strcmp(pCmd, "SPACE") ){ + pTnc->OutLine("SPACE was %s", pSound->FSKDEM.GetSpaceFreq()); + sscanf(p, "%d", &dd); + pSound->FSKDEM.SetSpaceFreq(dd); + pSound->FSKMOD.SetSpaceFreq(dd); + UpdateUI(); + } + else if( !strcmp(pCmd, "MARK") ){ + pTnc->OutLine("MARK was %s", pSound->FSKDEM.GetMarkFreq()); + sscanf(p, "%d", &dd); + pSound->FSKDEM.SetMarkFreq(dd); + pSound->FSKMOD.SetMarkFreq(dd); + if( pRadio != NULL ) pRadio->SetMarkFreq(dd); + UpdateUI(); + } + if( TNC.TncMode ){ + pTnc->OutStr("cmd:"); + } + else { + pTnc->OutStr("\r"); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PutTNC(char c) +{ + if( (pTnc != NULL) && !TNC.TncMode ){ + if( !SBTX->Down || ((TNC.Echo == 2) && (TNC.Type != 2)) || ((TNC.Type==2)&&(sys.m_echo==2)) ){ + pTnc->PutChar(c); + } + } + if( Remote ){ + PostApp(TXM_CHAR, (unsigned char)c); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OpenCloseTNC(void) +{ + if( pTnc != NULL ) delete pTnc; + pTnc = NULL; + TNC.change = 0; + KTNC->Checked = FALSE; + if( Remote ) return; + + if( strcmp(TNC.StrPort, "NONE" ) ){ + COMMPARA cm; + SetFSKPara(&cm); + pTnc = new CCtnc(TRUE); + pTnc->Open(&TNC, Handle, CM_CTNC, &cm); + if( (TNC.Type == 2) && (pTnc->m_CreateON != TRUE) ){ + if( (cm.BitLen == 5) && (cm.Stop == TWOSTOPBITS) ){ + cm.Stop = ONE5STOPBITS; // set 1.5bits + pTnc->Open(&TNC, Handle, CM_CTNC, &cm); + } + } + if( pTnc->m_CreateON != TRUE ){ + delete pTnc; + pTnc = NULL; + ErrorMB( (Font->Charset != SHIFTJIS_CHARSET)? "Cannot open '%s' for TNC":"TNC–Í‹[ƒ|[ƒg'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", TNC.StrPort); + } + else { + sys.m_DisTX &= ~1; + KTNC->Checked = TRUE; + if( TNC.Type != 2 ){ + pTnc->OutStr("\r\n" VERTTL "\r\n%sTNC emulation.\r\n", pTnc->IsMMT() ? "Custom " : ""); + if( !pTnc->IsMMT() ){ + if( TNC.Type ){ + pTnc->OutStr("Command 'RTTY'\r\n"); + pTnc->OutStr("To RX: Ctrl+C,R\r\n"); + pTnc->OutStr("To TX: Ctrl+C,T\r\n"); + } + else { + pTnc->OutStr("Command 'K'\r\n"); + pTnc->OutStr("To RX: Ctrl+R\r\n"); + pTnc->OutStr("To TX: Ctrl+T\r\n"); + } + } + pTnc->OutStr("\r\ncmd:"); + TNC.TncMode = 1; + } + else { + TNC.TncMode = 0; + } + m_TNCStg = ""; + SetNMMT(); + RemoteFreq(); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KTNCClick(TObject *Sender) +{ + TTNCSetDlg *pBox = new TTNCSetDlg(this); + + if( pBox->Execute() == TRUE ){ + FormResize(NULL); + UpdateStayOnTop(); + OpenCloseCom(); + } + delete pBox; + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RemoteFreq(void) +{ + if( !Remote && !pTnc ) return; + + int mark, space; + + if( SBTX->Down && (sys.m_echo != 2) ){ + mark = DWORD(pSound->FSKMOD.GetMarkFreq()); + space = DWORD(pSound->FSKMOD.GetSpaceFreq()); + } + else { + mark = DWORD(pSound->FSKDEM.GetMarkFreq()); + space = DWORD(pSound->FSKDEM.GetSpaceFreq()); + } + if( pTnc && pTnc->IsMMT() ){ + pTnc->NotifyFreq(mark, space); + } + if( !Remote ) return; + if( m_RemoteMark != mark ){ + PostApp(TXM_MARK, mark); + m_RemoteMark = mark; + } + if( m_RemoteSpace != space ){ + PostApp(TXM_SPACE, space); + m_RemoteSpace = space; + } + mark = pSound->m_lms.m_lmsNotch + (pSound->m_lms.m_lmsNotch2 << 16); + if( mark != m_RemoteNotch ){ + PostApp(TXM_NOTCH, mark); + m_RemoteNotch = mark; + } + if( int(sys.m_DefShift) != m_RemoteDefShift ){ + PostApp(TXM_DEFSHIFT, sys.m_DefShift); + m_RemoteDefShift = sys.m_DefShift; + } +} +//--------------------------------------------------------------------------- +DWORD __fastcall TMmttyWd::GetRemoteSwitch(void) +{ + DWORD d = pSound->FSKDEM.m_type & 0x03; //b0-b1 + d |= SBAFC->Down ? 0x0004 : 0; //b2 + d |= SBNET->Down ? 0x0008 : 0; //b3 + d |= SBATC->Down ? 0x0010 : 0; //b4 + d |= SBBPF->Down ? 0x0020 : 0; //b5 + d |= SBLMS->Down ? 0x0040 : 0; //b6 + d |= SBSQ->Down ? 0x0080 : 0; //b7 + d |= SBRev->Down ? 0x0100 : 0; //b8 + d |= SBUOS->Down ? 0x0200 : 0; //b9 + d |= (sys.m_FixShift << 10); //b10-b11 + d |= pSound->FSKDEM.m_lpf ? 0x1000 : 0; //b12 + d |= pSound->m_lms.m_Type ? 0x2000 : 0; //b13 + d |= pSound->m_lms.m_twoNotch ? 0x4000 : 0; // b14 + d |= (Remote & REMVIATX) ? 0x8000 : 0; // b15 + d |= KWP->Checked ? 0x10000 : 0; // b16 + d |= (m_SendWay << 17); // b17-b18 + // Added by JE3HHT on Sep.2010 + d |= pSound->FSKDEM.m_AA6YQ.m_fEnabled ? 0x80000 : 0; // b19 + return d; +} +//--------------------------------------------------------------------------- +DWORD __fastcall TMmttyWd::GetRemoteView(void) +{ + DWORD d = pSound->m_FFTFW & 0x0007; // 0000000000000xxx + d |= ((sys.m_FFTGain&0x0003) << 4); // 0000000000xx0000 + d |= ((sys.m_FFTResp - 1) << 6); // 00000000xx000000 + d |= (m_XYSize << 8); // 0000000x00000000 + d |= (m_XYQuality << 10); // 0000xx0000000000 + d |= KXYScope->Checked ? 0x1000 : 0; // 000x000000000000 + d |= ((sys.m_FFTGain&0x000c) << 11); // 0xx0000000000000 + return d; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RemoteStat(void) +{ + int d; + if( Remote ){ + d = Width + (Height << 16); + if( m_RemoteHeight != d ){ + PostApp(TXM_HEIGHT, d); + m_RemoteHeight = d; + } + d = DWORD(pSound->FSKDEM.GetBaudRate() * 100); + if( m_RemoteBaud != d ){ + PostApp(TXM_BAUD, d); + m_RemoteBaud = d; + } + } + RemoteFreq(); // MMT‚Ì‚½‚߂ɌĂÑo‚µ‚Ü‚· + if( !Remote ) return; + d = GetRemoteSwitch(); + if( m_RemoteSwitch != d ){ + PostApp(TXM_SWITCH, d); + m_RemoteSwitch = d; + } + d = GetRemoteView(); + if( m_RemoteView != d ){ + PostApp(TXM_VIEW, d); + m_RemoteView = d; + } + d = DWORD(pSound->FSKDEM.m_iirfw) + (DWORD(pSound->FSKDEM.GetFilterTap()) << 16); + if( m_RemoteIIR != d ){ + PostApp(TXM_RESO, d); + m_RemoteIIR = d; + } + d = DWORD(pSound->FSKDEM.GetSmoozFreq())+(DWORD(pSound->FSKDEM.m_lpffreq) << 16); + if( m_RemoteLPF != d ){ + PostApp(TXM_LPF, d); + m_RemoteLPF = d; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RemoteSwitch(DWORD d) +{ + pSound->FSKDEM.m_type = d & 0x0003; + pSound->m_lms.m_Type = d & 0x2000 ? 1 : 0; UpdateLMS(); + pSound->m_lms.m_twoNotch = d & 0x4000 ? 1 : 0; + SBAFC->Down = d & 0x0004 ? 1 : 0; SBAFCClick(NULL); + SBNET->Down = d & 0x0008 ? 1 : 0; SBNETClick(NULL); + SBATC->Down = d & 0x0010 ? 1 : 0; SBATCClick(NULL); + SBBPF->Down = d & 0x0020 ? 1 : 0; SBBPFClick(NULL); + SBLMS->Down = d & 0x0040 ? 1 : 0; SBLMSClick(NULL); + SBSQ->Down = d & 0x0080 ? 1 : 0; pSound->FSKDEM.SetSQ(SBSQ->Down); + SBRev->Down = d & 0x0100 ? 1 : 0; SBRevClick(NULL); + SBUOS->Down = d & 0x0200 ? 1 : 0; SBUOSClick(NULL); + sys.m_FixShift = (d >> 10) & 0x0003; + pSound->FSKDEM.m_lpf = d & 0x1000 ? 1 : 0; + if( d & 0x8000 ){ Remote |= REMVIATX;} else { Remote &= ~REMVIATX;} + KWP->Checked = d & 0x10000 ? 1 : 0; + m_SendWay = (d >> 17) & 0x03; + + // Added by JE3HHT on Sep.2010 + int f = (d & 0x80000) ? 1 : 0; // b19 + if( f != pSound->FSKDEM.m_AA6YQ.m_fEnabled ){ + pSound->FSKDEM.m_AA6YQ.m_fEnabled = f; + if( f ) pSound->FSKDEM.m_AA6YQ.Create(); + } + UpdateItem(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RemoteView(DWORD d) +{ + m_DisEvent++; + pSound->m_FFTFW = d & 0x0007; + sys.m_FFTGain = (d >> 4) & 0x0003; + sys.m_FFTGain |= (d >> 11) & 0x000c; + sys.m_FFTResp = ((d >> 6) & 0x0003) + 1; + m_XYSize = (d >> 8) & 0x0001; + m_XYQuality = (d >> 10) & 0x0003; + KXYScope->Checked = d & 0x1000 ? 1 : 0; + UpdateXYScope(); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RemoteSigLevel(DWORD d) +{ + if( !Remote && !pTnc ) return; + + DWORD sq = pSound->FSKDEM.GetSQLevel(); + if( Remote ){ + PostApp(TXM_LEVEL, (sq << 16) + d); + } + else if( pTnc ){ + pTnc->NotifyLevel(sq, d); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SetRemoteFFT(void) +{ + if( Remote & REMDISSHARED ) return; + + int i, x; + double smp = pMap->smpFFT ? 8000 : 11025; + if( sys.m_FFTGain >= 4 ){ + if( FFT_SIZE < 2048 ){ + smp *= 0.5; + for( i = 0; i < 2048; i++ ){ + x = (i * smp / SampFreq) + 0.5; + if( x < FFT_SIZE ){ + pMap->arrayFFT[i] = pSound->fftIN.m_fft[x] * 0.1; + } + else { + for( ; i < 2048; i++ ) pMap->arrayFFT[i] = 0; + } + } + pMap->smpFreq = pMap->smpFFT ? 8000 : 11025; + } + else if( SampType || pMap->smpFFT ){ + for( i = 0; i < 2048; i++ ){ + x = (i * smp / SampFreq) + 0.5; + if( x < FFT_SIZE ){ + pMap->arrayFFT[i] = pSound->fftIN.m_fft[x] * 0.1; + } + else { + for( ; i < 2048; i++ ) pMap->arrayFFT[i] = 0; + } + } + pMap->smpFreq = pMap->smpFFT ? 8000 : 11025; + } + else { + for( i = 0; i < 2048; i++ ){ + pMap->arrayFFT[i] = pSound->fftIN.m_fft[i] * 0.1; + } + pMap->smpFreq = SampFreq; + } + } + else { + if( FFT_SIZE < 2048 ){ + smp *= 0.5; + for( i = 0; i < 2048; i++ ){ + x = (i * smp / SampFreq) + 0.5; + if( x < FFT_SIZE ){ + pMap->arrayFFT[i] = pSound->fftIN.m_fft[x]; + } + else { + for( ; i < 2048; i++ ) pMap->arrayFFT[i] = 0; + } + } + pMap->smpFreq = pMap->smpFFT ? 8000 : 11025; + } + else if( SampType || pMap->smpFFT ){ + for( i = 0; i < 2048; i++ ){ + x = (i * smp / SampFreq) + 0.5; + if( x < FFT_SIZE ){ + pMap->arrayFFT[i] = pSound->fftIN.m_fft[x]; + } + else { + for( ; i < 2048; i++ ) pMap->arrayFFT[i] = 0; + } + } + pMap->smpFreq = pMap->smpFFT ? 8000 : 11025; + } + else { + memcpy(pMap->arrayFFT, pSound->fftIN.m_fft, sizeof(pMap->arrayFFT)); + pMap->smpFreq = SampFreq; + } + } + pMap->flagFFT = 1; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::InitRemoteStat(void) +{ + m_RemoteSwitch = -1; + m_RemoteView = -1; + m_RemoteBaud = -1; + m_RemoteHeight = -1; + m_RemoteIIR = -1; + m_RemoteLPF = -1; + m_RemoteMark = -1; + m_RemoteSpace = -1; + m_RemoteNotch = -1; + m_RemoteDefShift = -1; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RemoteMMTTY(tagMSG &Msg) +{ + char bf[16]; + double d; + int di; + + switch(Msg.wParam){ + case RXM_HANDLE: // ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Ì’Ê’m + m_RemoteTimer = 0; + APP_HANDLE = (HWND)Msg.lParam; + if( APP_HANDLE != HWND_BROADCAST){ + ::SetForegroundWindow(APP_HANDLE); + InitRemoteStat(); + RemoteStat(); + PostApp(TXM_PTTEVENT, SBTX->Down); + } + break; + case RXM_REQHANDLE: // ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Ì—v‹ + ::PostMessage(APP_HANDLE, MSG_MMTTY, TXM_HANDLE, (DWORD)Handle); + break; + case RXM_PTT: // ‘—Žó‚ÌØ‚è‘Ö‚¦ + switch(Msg.lParam){ + case 0: + case 5: + if( Remote & REMVIATX ) FifoEdit.Clear(); + ToRX(Msg.lParam ? 0 : 1); + break; + case 1: + if( ((Remote & REMVIATX) && FifoEdit.GetLen()) || !IsTxIdle() ){ + m_ReqRecv = 1; + } + else { + ToRX(0); + } + break; + case 2: + ToTX(NULL); + break; + case 3: + ToTX("~"); + break; + case 4: + if( Remote & REMVIATX ) FifoEdit.Clear(); + pSound->FSKMOD.DeleteTXBuf(); + if( pComm != NULL ) pComm->InitTxBuf(); + break; + } + break; + case RXM_CHAR: + bf[0] = char(Msg.lParam); + if( Remote & REMNOCNV ){ + pSound->FSKMOD.PutData(bf[0]); + } + else if( Remote & REMVIATX ){ + if( bf[0] != LF ) PushKey(bf[0]); + } + else if( bf[0] != '#' ){ + bf[1] = 0; + OutputStr(bf); + } + break; + case RXM_EXIT: + pMap = NULL; + Close(); + break; + case RXM_WINPOS: + Top = Msg.lParam >> 16; + Left = Msg.lParam & 0x0000ffff; + break; + case RXM_WIDTH: + di = Msg.lParam & 0x0000ffff; + if( di > 10 ) Width = di; + di = Msg.lParam >> 16; + if( di > 10 ) Height = di; + break; + case RXM_REQPARA: + InitRemoteStat(); + RemoteStat(); + break; + case RXM_SETBAUD: + if( (Msg.lParam > 10) && (Msg.lParam <= 120000) ){ + d = Msg.lParam; + d /= 100.0; + pSound->FSKMOD.SetBaudRate(d); + pSound->FSKDEM.SetBaudRate(d); + SelectCombo(FALSE); + } + RemoteStat(); + break; + case RXM_SETMARK: + if( (Msg.lParam > 100) && (Msg.lParam < 3000) ){ + d = Msg.lParam; + if( !SBTX->Down || (sys.m_echo != 2) ) pSound->FSKMOD.SetMarkFreq(d); + pSound->FSKDEM.SetMarkFreq(d); + if( pRadio != NULL ) pRadio->SetMarkFreq(d); + if( SBBPF->Down || SBLMS->Down ) pSound->CalcBPF(); + m_DisEvent++; + MarkFreq->Text = int(d); + ShiftFreq->Text = int(pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq()); + m_DisEvent--; + } + RemoteStat(); + break; + case RXM_SETSPACE: + if( (Msg.lParam > 100) && (Msg.lParam < 3000) ){ + d = Msg.lParam; + if( !SBTX->Down || (sys.m_echo != 2) ) pSound->FSKMOD.SetSpaceFreq(d); + pSound->FSKDEM.SetSpaceFreq(d); + if( SBBPF->Down || SBLMS->Down ) pSound->CalcBPF(); + m_DisEvent++; + MarkFreq->Text = int(pSound->FSKDEM.GetMarkFreq()); + ShiftFreq->Text = int(pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq()); + m_DisEvent--; + } + RemoteStat(); + break; + case RXM_SETSWITCH: + RemoteSwitch(Msg.lParam); + break; + case RXM_SETHAM: + SBHAMClick(NULL); + break; + case RXM_SHOWSETUP: + if( !m_OptionDialog ){ + m_OptionDialog++; + DoOption(NULL, Msg.lParam); + m_OptionDialog--; + ::SetForegroundWindow(APP_HANDLE); + } + else if( m_hOptionWnd ){ + ::SetForegroundWindow(m_hOptionWnd); + } + break; + case RXM_SETVIEW: + RemoteView(Msg.lParam); + break; + case RXM_SETSQLVL: + if( Msg.lParam >= SQSCALE ) Msg.lParam = SQSCALE - 1; + pSound->FSKDEM.SetSQLevel(Msg.lParam); + break; + case RXM_SHOW: + if( Msg.lParam ){ + if( !(Remote & REMSHOWOFF) ){ + Show(); + if( Remote & REMNOMOVE ){ + FormResize(NULL); + } + } + } + else { + Hide(); + } + break; + case RXM_SETFIG: + SBFIG->Down = Msg.lParam; + SBFIGClick(NULL); + break; + case RXM_SETRESO: + { + int f = 0; + di = Msg.lParam & 0x0000ffff; + if( (di > 0) && (di < 500) ){ + pSound->FSKDEM.SetIIR(di); + f = 1; + } + di = Msg.lParam >> 16; + if( (di > 0) && (di <= 512) ){ + pSound->FSKDEM.SetFilterTap(di); + f = 1; + } + if( f ) SelectCombo(FALSE); + } + break; + case RXM_SETLPF: + di = Msg.lParam & 0x0000ffff; + if( (di > 10) && (di < 1000) ){ + pSound->FSKDEM.SetSmoozFreq(di); + } + di = Msg.lParam >> 16; + if( (di > 10) && (di <= 1000) ){ + pSound->FSKDEM.m_lpffreq = di; + } + SelectCombo(FALSE); + break; + case RXM_SETTXDELAY: + di = Msg.lParam & 0x0000ffff; + if( (di >= 0) && (di < 10000) ){ + m_RemoteDelay = di; + } + break; + case RXM_UPDATECOM: + UpdateComarray(); + break; + case RXM_SUSPEND: + if( Msg.lParam ){ + KExtSuspClick(NULL); + if( !(Remote & REMSHOWOFF) ){ + Hide(); + } + } + else { + KExtResetClick(NULL); + if( !(Remote & REMSHOWOFF) ){ + Show(); + } + } + break; + case RXM_NOTCH: + pSound->m_lms.m_lmsNotch2 = pSound->m_lms.m_lmsNotch; + pSound->m_lms.m_lmsNotch = Msg.lParam & 0x0000ffff; + if( SBLMS->Down ) pSound->CalcBPF(); + RemoteFreq(); + break; + case RXM_PROFILE: + RemoteProfile(Msg.lParam); + break; + case RXM_TIMER: + if( Msg.lParam & 0xffff0000 ){ + KPttTimClick(NULL); + } + else { + m_PttTimer = Msg.lParam & 0x0000ffff; + UpdatePttTimer(); + KPttTim->Checked = m_PttTimer ? 1 : 0; + } + break; + case RXM_ENBFOCUS: + if( Msg.lParam ){ + Remote &= ~REMDISFOCUS; + } + else { + Remote |= REMDISFOCUS; + } + break; + case RXM_SETDEFFREQ: + sys.m_DefMarkFreq = LOWORD(Msg.lParam); + sys.m_DefShift = HIWORD(Msg.lParam); + break; + case RXM_SETLENGTH: + if( (Msg.lParam >= 5) && (Msg.lParam <= 8) ){ + pSound->FSKDEM.m_BitLen = Msg.lParam; + pSound->FSKMOD.m_BitLen = Msg.lParam; + UpdateFSK(); + } + break; + case RXM_ENBSHARED: + if( Msg.lParam ){ + Remote &= ~REMDISSHARED; + } + else { + Remote |= REMDISSHARED; + } + break; + case RXM_PTTFSK: // Added by JE3HHT on Sep.2010 + if( sys.m_TxPort != (Msg.lParam & 0x03) ){ + sys.m_TxPort = Msg.lParam & 0x03; + COMM.change = 1; + OpenCloseCom(); + } + break; + default: + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateMacroShow(int sw) +{ + if( Remote ) return; + + GroupM->Visible = KMac->Checked; + PanelMac->Visible = KMac->Checked ? 0 : 1; + TSpeedButton *tp; + int i; + if( GroupM->Visible == TRUE ){ + if( SBM1->Parent != GroupM ){ + for( i = 0; i < 16; i++ ){ + tp = GetSB(i); + PanelMac->RemoveControl(tp); + GroupM->InsertControl(tp); + tp->Parent = GroupM; + } + } + } + else { + if( SBM1->Parent != PanelMac ){ + for( i = 0; i < 16; i++ ){ + tp = GetSB(i); + GroupM->RemoveControl(tp); + PanelMac->InsertControl(tp); + tp->Parent = PanelMac; + } + } + } + if( sw ){ + PanelMac->Align = alNone; + PanelQSO->Align = alNone; + PanelRx->Align = alNone; + PanelIn->Align = alNone; + PanelStat->Align = alNone; + + PanelMac->Align = alTop; + PanelQSO->Align = alTop; + PanelRx->Align = alTop; + if( !sys.m_DisWindow ){ + PanelIn->Align = alBottom; + PanelStat->Align = alBottom; + } + FormResize(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KMacClick(TObject *Sender) +{ + KMac->Checked = KMac->Checked ? 0 : 1; + UpdateMacroShow(1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KENTClick(TObject *Sender) +{ + KENT->Checked = KENT->Checked ? 0 : 1; +} +#if 0 +//--------------------------------------------------------------------------- +// Radioƒf[ƒ^ŽóM‚̃Cƒxƒ“ƒg +// +// pRadio = new CCradio(TRUE); +// pRadio->Open(PortTnc, &ParaTnc, Handle, CM_COMM_UP); +void __fastcall TMmttyWd::CMCradio(TMessage *Message) +{ + if( pRadio == NULL ) return; + + char bf[RADIO_COMBUFSIZE]; + DWORD len = pRadio->RecvLen(); + if( len >= RADIO_COMBUFSIZE ) len = RADIO_COMBUFSIZE; + pRadio->Read((BYTE *)bf, len); +} +#endif +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::OpenCloseRadio(void) +{ + if( !RADIO.change ) return; + if( pRadio != NULL ) delete pRadio; + pRadio = NULL; + RADIO.change = 0; + if( strcmp(RADIO.StrPort, "NONE" ) ){ + pRadio = new CCradio(TRUE); + pRadio->Open(&RADIO, Handle, CM_CMMR, CM_CRADIO); + if( pRadio->m_CreateON != TRUE ){ + delete pRadio; + pRadio = NULL; + if( !Remote || !m_RemoteTimer ){ + ErrorMB( (Font->Charset != SHIFTJIS_CHARSET)? "Can't open '%s' for Radio commands":"RadioƒRƒ}ƒ“ƒhƒ|[ƒg'%s'‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", RADIO.StrPort); + } + } + else { + pRadio->SetMarkFreq(pSound->FSKDEM.GetMarkFreq()); + pRadio->SendCommand(RADIO.CmdInit.c_str()); + if( RADIO.PollScan ){ + m_DisEvent++; + Freq->Text = "???"; + m_DisEvent--; + RADIO.Cmdxx = 0x00; + pRadio->m_ScanAddr = 1; + } + } + } + if( (pMap != NULL) && !(Remote & REMDISSHARED) ) StrCopy(pMap->comRadio, RADIO.StrPort, sizeof(pMap->comRadio)-1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::HisCallClick(TObject *Sender) +{ + ClearMacroTimer(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateLWait(void) +{ + if( pSound->FSKMOD.m_CharWaitDiddle ) sys.m_LWait = 3; + m_DisEvent++; + switch(sys.m_LWait){ + case 0: // Char.wait + LWait->Caption = "Char. wait"; + TBCharWait->Position = SetTBValue(pSound->FSKMOD.m_CharWait, 50, 50); + break; + case 1: // Diddle. wait + LWait->Caption = "Diddle wait"; + TBCharWait->Position = SetTBValue(pSound->FSKMOD.m_DiddleWait, 50, 50); + break; + case 2: // Char+Diddle + LWait->Caption = "Both wait"; + TBCharWait->Position = SetTBValue(pSound->FSKMOD.m_CharWait, 50, 50); + break; + case 3: // No diddle wait + LWait->Caption = "Disable wait"; + TBCharWait->Position = SetTBValue(pSound->FSKMOD.m_CharWait, 50, 50); + break; + } + m_DisEvent--; +} +//--------------------------------------------------------------------------- +// Wait‚̃NƒŠƒbƒN +void __fastcall TMmttyWd::LWaitClick(TObject *Sender) +{ + sys.m_LWait++; + if( sys.m_LWait >= 4 ) sys.m_LWait = 0; + pSound->FSKMOD.m_CharWaitDiddle = ( sys.m_LWait == 3 ) ? 1 : 0; + UpdateLWait(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KWPClick(TObject *Sender) +{ + KWP->Checked = KWP->Checked ? 0 : 1; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBDataMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ){ + int n = Log.m_CurNo - 1; + if( n < 0 ){ + KQSOClick(NULL); + return; + } + + TQSODlgBox *pBox = new TQSODlgBox(this); + SDMMLOG sd; + Log.GetData(&sd, n); + CLogFind Find; + + Log.FindSet(&Find, sd.call); + + pBox->Execute(&Find, &sd, n); + delete pBox; + TopWindow(this); + if( !SBQSO->Down && Log.m_CurNo ){ + Log.SetLastPos(); + UpdateTextData(); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::PostApp(WPARAM wParam, LPARAM lParam) +{ + if(APP_HANDLE != HWND_BROADCAST){ + ::PostMessage(APP_HANDLE, MSG_MMTTY, wParam, lParam); + } +} +//--------------------------------------------------------------------------- +TMenuItem *__fastcall TMmttyWd::GetKS(int n) +{ + TMenuItem *__KS[]={ + KS1, KS2, KS3, KS4, KS5, KS6, KS7, KS8, + }; + return __KS[n]; +} +//--------------------------------------------------------------------------- +TMenuItem *__fastcall TMmttyWd::GetKDS(int n) +{ + TMenuItem *__KDS[]={ + KDS1, KDS2, KDS3, KDS4, KDS5, KDS6, KDS7, KDS8, + }; + return __KDS[n]; +} +//--------------------------------------------------------------------------- +TMenuItem *__fastcall TMmttyWd::GetKES(int n) +{ + TMenuItem *__KES[]={ + KES1, KES2, KES3, KES4, KES5, KES6, KES7, KES8, + }; + return __KES[n]; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdateProfile(void) +{ + int i; + for( i = 0; i < 8; i++ ){ + TMenuItem *p = GetKS(i); + GetKDS(i)->Caption = p->Caption; + GetKES(i)->Caption = p->Caption; + GetKDS(i)->Enabled = p->Enabled; + SetProMenuName(i, AnsiString(p->Caption).c_str()); //JA7UDE -428 + } +} +//--------------------------------------------------------------------------- +// ƒŒƒWƒXƒgƒŠ‚©‚ç‚̓ǂÝo‚µ +void __fastcall TMmttyWd::ReadProfileList(void) +{ + char bf[256]; + AnsiString as; + + sprintf(bf, "%sUserPara.ini", BgnDir); + TMemIniFile *pIniFile = new TMemIniFile(bf); + char key[32]; + int i; + for( i = 0; i < 8; i++ ){ + sprintf(key, "Define%d", i); + TMenuItem *p = GetKS(i); + as = pIniFile->ReadString(key, "Name", p->Caption); + p->Caption = as.c_str(); + p->Enabled = pIniFile->ReadInteger(key, "Enabled", p->Enabled); + if( pMap != NULL ){ + StrCopy(pMap->ProfileName[i], p->Enabled ? as.c_str() : "", 63); + } + } + if( pMap != NULL ){ + for( ; i < 16; i++ ){ + sprintf(key, "Define%d", i); + as = pIniFile->ReadString(key, "Name", ""); + StrCopy(pMap->ProfileName[i], as.c_str(), 63); + } + } + delete pIniFile; + UpdateProfile(); +} +//--------------------------------------------------------------------------- +// ƒŒƒWƒXƒgƒŠ‚©‚ç‚̓ǂÝo‚µ +void __fastcall TMmttyWd::ReadProfile(int n, LPCSTR pName) +{ + char bf[256]; + AnsiString as, ws; + + if( n == 1024 ){ + strcpy(bf, pName); + } + else { + sprintf(bf, "%sUserPara.ini", BgnDir); + } + TMemIniFile *pIniFile = new TMemIniFile(bf); + + char key[32]; + sprintf(key, "Define%d", n); + + pSound->Suspend(); + + sys.m_FixShift = pIniFile->ReadInteger(key, "AFCFixShift", sys.m_FixShift); + sys.m_AFC = pIniFile->ReadInteger(key, "AFC", sys.m_AFC); + sys.m_AFCSQ = pIniFile->ReadInteger(key, "AFCSQ", sys.m_AFCSQ); + sys.m_AFCTime = ReadDoubleIniFile(pIniFile, key, "AFCTime", sys.m_AFCTime); + sys.m_AFCSweep = ReadDoubleIniFile(pIniFile, key, "AFCSweep", sys.m_AFCSweep); + + rtty.m_uos = pIniFile->ReadInteger(key, "UOS", rtty.m_uos); + + sys.m_TxNet = pIniFile->ReadInteger(key, "TxNet", sys.m_TxNet); + sys.m_TxDisRev = pIniFile->ReadInteger(key, "TxDisRev", sys.m_TxDisRev); + sys.m_LimitGain = ReadDoubleIniFile(pIniFile, key, "LimitDxGain", sys.m_LimitGain); + pSound->FSKDEM.m_LimitOverSampling = pIniFile->ReadInteger(key, "LimitOverSampling", pSound->FSKDEM.m_LimitOverSampling); + pSound->FSKDEM.m_LimitAGC = pIniFile->ReadInteger(key, "LimitAGC", pSound->FSKDEM.m_LimitAGC); + pSound->FSKDEM.m_atc = pIniFile->ReadInteger(key, "ATC", pSound->FSKDEM.m_atc); + pSound->FSKDEM.m_atcMark.m_Max = pIniFile->ReadInteger(key, "ATCTime", pSound->FSKDEM.m_atcMark.m_Max); + pSound->FSKDEM.m_atcSpace.m_Max = pSound->FSKDEM.m_atcMark.m_Max; + + pSound->FSKDEM.m_majority = pIniFile->ReadInteger(key, "Majority", pSound->FSKDEM.m_majority); + pSound->FSKDEM.m_ignoreFream = pIniFile->ReadInteger(key, "IgnoreFreamError", pSound->FSKDEM.m_ignoreFream); + + pSound->FSKDEM.SetSQ(pIniFile->ReadInteger(key, "SQ", pSound->FSKDEM.GetSQ())); + pSound->FSKDEM.SetSQLevel(ReadDoubleIniFile(pIniFile, key, "SQLevel", pSound->FSKDEM.GetSQLevel())); + + sys.m_DefMarkFreq = ReadDoubleIniFile(pIniFile, key, "DefMarkFreq", sys.m_DefMarkFreq); + sys.m_DefShift = ReadDoubleIniFile(pIniFile, key, "DefShift", sys.m_DefShift); + sys.m_DefStopLen = pIniFile->ReadInteger(key, "DefStopLen", sys.m_DefStopLen); + + pSound->FSKMOD.SetOutputGain(ReadDoubleIniFile(pIniFile, key, "OutputGain", pSound->FSKMOD.GetOutputGain())); + + sys.m_echo = pIniFile->ReadInteger(key, "TXLoop", sys.m_echo); + pSound->FSKMOD.m_bpftap = pIniFile->ReadInteger(key, "TXBPFTAP", pSound->FSKMOD.m_bpftap); + pSound->FSKMOD.m_lpf = pIniFile->ReadInteger(key, "TXLPF", pSound->FSKMOD.m_lpf); + pSound->FSKMOD.SetLPFFreq(ReadDoubleIniFile(pIniFile, key, "TXLPFFreq", pSound->FSKMOD.GetLPFFreq())); + pSound->FSKMOD.CalcBPF(); + + sys.m_LWait = pIniFile->ReadInteger(key, "TXWaitType", sys.m_LWait); + pSound->FSKMOD.m_CharWait = pIniFile->ReadInteger(key, "TXCharWait", pSound->FSKMOD.m_CharWait); + pSound->FSKMOD.m_DiddleWait = pIniFile->ReadInteger(key, "TXDiddleWait", pSound->FSKMOD.m_DiddleWait); + pSound->FSKMOD.m_CharWaitDiddle = pIniFile->ReadInteger(key, "TXCharWaitDiddle", pSound->FSKMOD.m_CharWaitDiddle); + pSound->FSKMOD.m_RandomDiddle = pIniFile->ReadInteger(key, "TXRandomDiddle", pSound->FSKMOD.m_RandomDiddle); + pSound->FSKMOD.m_WaitTimer = pIniFile->ReadInteger(key, "TXWaitTimerDiddle", pSound->FSKMOD.m_WaitTimer); + + sys.m_Rev = pIniFile->ReadInteger(key, "Rev", sys.m_Rev); + + double oldshift = pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq(); + double sft = ReadDoubleIniFile(pIniFile, key, "ShiftFreq", oldshift); + double mark = pSound->FSKDEM.GetMarkFreq(); + mark -= (sft - oldshift) * 0.5; + if( sft < oldshift ){ + mark = int(mark); + } + else { + mark = int(mark+0.5); + } + double space = mark + sft; + pSound->FSKDEM.SetSpaceFreq(space); + pSound->FSKDEM.SetMarkFreq(mark); + pSound->FSKMOD.SetMarkFreq(mark); + pSound->FSKMOD.SetSpaceFreq(space); + m_RxMarkFreq = mark; + m_RxSpaceFreq = space; + + pSound->m_bpf = pIniFile->ReadInteger(key, "RXBPF", pSound->m_bpf); + pSound->m_bpftap = pIniFile->ReadInteger(key, "RXBPFTAP", pSound->m_bpftap); + pSound->m_bpfafc = pIniFile->ReadInteger(key, "RXBPFAFC", pSound->m_bpfafc); + pSound->m_bpffw = ReadDoubleIniFile(pIniFile, key, "RXBPFFW", pSound->m_bpffw); + + pSound->m_lmsbpf = pIniFile->ReadInteger(key, "RXlms", pSound->m_lmsbpf); + pSound->m_lms.m_lmsDelay = pIniFile->ReadInteger(key, "RXlmsDelay", pSound->m_lms.m_lmsDelay); + pSound->m_lms.m_lmsMU2 = ReadDoubleIniFile(pIniFile, key, "RXlmsMU2", pSound->m_lms.m_lmsMU2); + pSound->m_lms.m_lmsGM = ReadDoubleIniFile(pIniFile, key, "RXlmsGM", pSound->m_lms.m_lmsGM); + pSound->m_lms.m_lmsAGC = pIniFile->ReadInteger(key, "RXlmsAGC", pSound->m_lms.m_lmsAGC); + pSound->m_lms.m_lmsInv = pIniFile->ReadInteger(key, "RXlmsInv", pSound->m_lms.m_lmsInv); + pSound->m_lms.m_Tap = pIniFile->ReadInteger(key, "RXlmsTAP", pSound->m_lms.m_Tap); + pSound->m_lms.m_NotchTap = pIniFile->ReadInteger(key, "RXNotchTAP", pSound->m_lms.m_NotchTap); + pSound->m_lms.m_bpf = pIniFile->ReadInteger(key, "RXlmsBPF", pSound->m_lms.m_bpf); + pSound->m_lms.m_Type = pIniFile->ReadInteger(key, "RXlmsType", pSound->m_lms.m_Type); + pSound->m_lms.m_lmsNotch = pIniFile->ReadInteger(key, "RXlmsNotch", pSound->m_lms.m_lmsNotch); + pSound->m_lms.m_lmsNotch2 = pIniFile->ReadInteger(key, "RXlmsNotch2", pSound->m_lms.m_lmsNotch2); + pSound->m_lms.m_twoNotch = pIniFile->ReadInteger(key, "RXlmsTwoNotch", pSound->m_lms.m_twoNotch); + if( !pSound->m_lmsbpf && pSound->m_lms.m_twoNotch ) pSound->m_lms.m_lmsNotch = pSound->m_lms.m_lmsNotch2 = 0; + + pSound->CalcBPF(); + + pSound->FSKDEM.m_type = pIniFile->ReadInteger(key, "DEMTYPE", pSound->FSKDEM.m_type); + pSound->FSKDEM.SetBaudRate(ReadDoubleIniFile(pIniFile, key, "BaudRate", pSound->FSKDEM.GetBaudRate())); + pSound->FSKDEM.m_lpf = pIniFile->ReadInteger(key, "SmoozType", pSound->FSKDEM.m_lpf); + pSound->FSKDEM.m_lpfOrder = pIniFile->ReadInteger(key, "SmoozOrder", pSound->FSKDEM.m_lpfOrder); + pSound->FSKDEM.SetLPFFreq(ReadDoubleIniFile(pIniFile, key, "SmoozIIR", pSound->FSKDEM.m_lpffreq)); + pSound->FSKDEM.SetSmoozFreq(ReadDoubleIniFile(pIniFile, key, "Smooz", pSound->FSKDEM.GetSmoozFreq())); + + pSound->FSKDEM.m_BitLen = pIniFile->ReadInteger(key, "TTYBitLen", pSound->FSKDEM.m_BitLen); + pSound->FSKDEM.m_StopLen = pIniFile->ReadInteger(key, "TTYStopLen", pSound->FSKDEM.m_StopLen); + pSound->FSKDEM.m_Parity = pIniFile->ReadInteger(key, "TTYParity", pSound->FSKDEM.m_Parity); + pSound->FSKMOD.m_BitLen = pSound->FSKDEM.m_BitLen; + pSound->FSKMOD.m_StopLen = pSound->FSKDEM.m_StopLen; + pSound->FSKMOD.m_Parity = pSound->FSKDEM.m_Parity; + + pSound->FSKDEM.SetFilterTap(pIniFile->ReadInteger(key, "Tap", pSound->FSKDEM.GetFilterTap())); + pSound->FSKDEM.m_iirfw = pIniFile->ReadInteger(key, "IIRBW", pSound->FSKDEM.m_iirfw); + pSound->FSKDEM.SetIIR(pSound->FSKDEM.m_iirfw); + pSound->FSKDEM.m_Phase.m_TONES = pIniFile->ReadInteger(key, "FFTTones", pSound->FSKDEM.m_Phase.m_TONES); + pSound->FSKDEM.m_Phase.Create(); + + pSound->FSKDEM.m_pll.SetVcoGain(ReadDoubleIniFile(pIniFile, key, "pllVcoGain", pSound->FSKDEM.m_pll.m_vcogain)); + pSound->FSKDEM.m_pll.m_loopOrder = pIniFile->ReadInteger(key, "pllLoopOrder", pSound->FSKDEM.m_pll.m_loopOrder); + pSound->FSKDEM.m_pll.m_loopFC = ReadDoubleIniFile(pIniFile, key, "pllLoopFC", pSound->FSKDEM.m_pll.m_loopFC); + pSound->FSKDEM.m_pll.m_outOrder = pIniFile->ReadInteger(key, "pllOutOrder", pSound->FSKDEM.m_pll.m_outOrder); + pSound->FSKDEM.m_pll.m_outFC = ReadDoubleIniFile(pIniFile, key, "pllOutFC", pSound->FSKDEM.m_pll.m_outFC); + pSound->FSKDEM.m_pll.MakeLoopLPF(); + pSound->FSKDEM.m_pll.MakeOutLPF(); + + pSound->FSKMOD.m_diddle = pIniFile->ReadInteger(key, "Diddle", pSound->FSKMOD.m_diddle); + + sys.m_TxFixShift = pIniFile->ReadInteger(key, "TxFixShift", sys.m_TxFixShift); + sys.m_TxRxInv = pIniFile->ReadInteger(key, "InvPTT", sys.m_TxRxInv); + sys.m_txuos = pIniFile->ReadInteger(key, "TXUOS", sys.m_txuos); + +//AA6YQ option, Added by JE3HHT on Sep.2010 + CAA6YQ *pAA6YQ = &pSound->FSKDEM.m_AA6YQ; + pAA6YQ->m_fEnabled = pIniFile->ReadInteger(key, "AA6YQ.Enabled", 0); // 0 = for old profiles + pAA6YQ->m_bpfTaps = pIniFile->ReadInteger(key, "AA6YQ.TapsBPF", pAA6YQ->m_bpfTaps); + pAA6YQ->m_bpfFW = ReadDoubleIniFile(pIniFile, key, "AA6YQ.WidthBPF", pAA6YQ->m_bpfFW); + pAA6YQ->m_befTaps = pIniFile->ReadInteger(key, "AA6YQ.TapsBEF", pAA6YQ->m_befTaps); + pAA6YQ->m_befFW = ReadDoubleIniFile(pIniFile, key, "AA6YQ.WidthBEF", pAA6YQ->m_befFW); + pAA6YQ->m_afcERR = ReadDoubleIniFile(pIniFile, key, "AA6YQ.afcERR", pAA6YQ->m_afcERR); + int verAA6YQ = pIniFile->ReadInteger(key, "AA6YQ.Version", 0); + if( verAA6YQ < VERAA6YQ ){ + pAA6YQ->m_bpfTaps = 512; + pAA6YQ->m_befTaps = 256; + } + pAA6YQ->Create(); + + pSound->Resume(); + delete pIniFile; + if( Remote ) PostApp(TXM_PROFILE, 0x00000000 + n); + COMM.change = 1; + UpdateFSK(); + RemoteStat(); +} +//--------------------------------------------------------------------------- +// ƒŒƒWƒXƒgƒŠ‚Ö‚Ì‘‚«o‚µ +void __fastcall TMmttyWd::WriteProfile(int n, LPCSTR pName, int Flag) +{ + char bf[256]; + AnsiString as, ws; + + if( n == 1024 ){ + strcpy(bf, pName); + pName = sys.m_Call.c_str(); + } + else { + sprintf(bf, "%sUserPara.ini", BgnDir); + } + try { + + TMemIniFile *pIniFile = new TMemIniFile(bf); + + char key[32]; + sprintf(key, "Define%d", n); + + if( !Flag ){ + pIniFile->EraseSection(key); + pIniFile->WriteInteger(key, "Enabled", Flag); + if( (pMap != NULL) && !(Remote & REMDISSHARED) && (n >= 0) && (n < 16) ){ + pMap->ProfileName[n][0] = 0; + } + } + else { + pIniFile->WriteString(key, "Name", pName); + pIniFile->WriteInteger(key, "Enabled", Flag); + pIniFile->WriteInteger(key, "AFC", sys.m_AFC); + pIniFile->WriteInteger(key, "AFCFixShift", sys.m_FixShift); + pIniFile->WriteInteger(key, "AFCSQ", sys.m_AFCSQ); + WriteDoubleIniFile(pIniFile, key, "AFCTime", sys.m_AFCTime); + WriteDoubleIniFile(pIniFile, key, "AFCSweep", sys.m_AFCSweep); + + pIniFile->WriteInteger(key, "UOS", rtty.m_uos); + + pIniFile->WriteInteger(key, "TxNet", sys.m_TxNet); + pIniFile->WriteInteger(key, "TxDisRev", sys.m_TxDisRev); + WriteDoubleIniFile(pIniFile, key, "LimitDxGain", sys.m_LimitGain); + pIniFile->WriteInteger(key, "LimitOverSampling", pSound->FSKDEM.m_LimitOverSampling); + pIniFile->WriteInteger(key, "LimitAGC", pSound->FSKDEM.m_LimitAGC); + pIniFile->WriteInteger(key, "ATC", pSound->FSKDEM.m_atc); + pIniFile->WriteInteger(key, "ATCTime", pSound->FSKDEM.m_atcMark.m_Max); + + pIniFile->WriteInteger(key, "Majority", pSound->FSKDEM.m_majority); + pIniFile->WriteInteger(key, "IgnoreFreamError", pSound->FSKDEM.m_ignoreFream); + + pIniFile->WriteInteger(key, "SQ", pSound->FSKDEM.GetSQ()); + WriteDoubleIniFile(pIniFile, key, "SQLevel", pSound->FSKDEM.GetSQLevel()); + + WriteDoubleIniFile(pIniFile, key, "DefMarkFreq", sys.m_DefMarkFreq); + WriteDoubleIniFile(pIniFile, key, "DefShift", sys.m_DefShift); + pIniFile->WriteInteger(key, "DefStopLen", sys.m_DefStopLen); + + WriteDoubleIniFile(pIniFile, key, "OutputGain", pSound->FSKMOD.GetOutputGain()); + + pIniFile->WriteInteger(key, "TXLoop", sys.m_echo); + pIniFile->WriteInteger(key, "TXBPFTAP", pSound->FSKMOD.m_bpftap); + + pIniFile->WriteInteger(key, "TXLPF", pSound->FSKMOD.m_lpf); + WriteDoubleIniFile(pIniFile, key, "TXLPFFreq", pSound->FSKMOD.GetLPFFreq()); + + pIniFile->WriteInteger(key, "TXWaitType", sys.m_LWait); + pIniFile->WriteInteger(key, "TXCharWait", pSound->FSKMOD.m_CharWait); + pIniFile->WriteInteger(key, "TXDiddleWait", pSound->FSKMOD.m_DiddleWait); + pIniFile->WriteInteger(key, "TXCharWaitDiddle", pSound->FSKMOD.m_CharWaitDiddle); + pIniFile->WriteInteger(key, "TXRandomDiddle", pSound->FSKMOD.m_RandomDiddle); + pIniFile->WriteInteger(key, "TXWaitTimerDiddle", pSound->FSKMOD.m_WaitTimer); + pIniFile->WriteInteger(key, "Rev", sys.m_Rev); + + WriteDoubleIniFile(pIniFile, key, "ShiftFreq", pSound->FSKDEM.GetSpaceFreq() - pSound->FSKDEM.GetMarkFreq()); + pIniFile->WriteInteger(key, "RXBPF", pSound->m_bpf); + pIniFile->WriteInteger(key, "RXBPFTAP", pSound->m_bpftap); + pIniFile->WriteInteger(key, "RXBPFAFC", pSound->m_bpfafc); + WriteDoubleIniFile(pIniFile, key, "RXBPFFW", pSound->m_bpffw); + + pIniFile->WriteInteger(key, "RXlms", pSound->m_lmsbpf); + pIniFile->WriteInteger(key, "RXlmsDelay", pSound->m_lms.m_lmsDelay); + WriteDoubleIniFile(pIniFile, key, "RXlmsMU2", pSound->m_lms.m_lmsMU2); + WriteDoubleIniFile(pIniFile, key, "RXlmsGM", pSound->m_lms.m_lmsGM); + pIniFile->WriteInteger(key, "RXlmsAGC", pSound->m_lms.m_lmsAGC); + pIniFile->WriteInteger(key, "RXlmsInv", pSound->m_lms.m_lmsInv); + pIniFile->WriteInteger(key, "RXlmsTAP", pSound->m_lms.m_Tap); + pIniFile->WriteInteger(key, "RXNotchTAP", pSound->m_lms.m_NotchTap); + pIniFile->WriteInteger(key, "RXlmsBPF", pSound->m_lms.m_bpf); + pIniFile->WriteInteger(key, "RXlmsType", pSound->m_lms.m_Type); + pIniFile->WriteInteger(key, "RXlmsNotch", pSound->m_lms.m_lmsNotch); + pIniFile->WriteInteger(key, "RXlmsNotch2", pSound->m_lms.m_lmsNotch2); + pIniFile->WriteInteger(key, "RXlmsTwoNotch", pSound->m_lms.m_twoNotch); + + pIniFile->WriteInteger(key, "DEMTYPE", pSound->FSKDEM.m_type); + WriteDoubleIniFile(pIniFile, key, "BaudRate", pSound->FSKDEM.GetBaudRate()); + pIniFile->WriteInteger(key, "TTYBitLen", pSound->FSKDEM.m_BitLen); + pIniFile->WriteInteger(key, "TTYStopLen", pSound->FSKDEM.m_StopLen); + pIniFile->WriteInteger(key, "TTYParity", pSound->FSKDEM.m_Parity); + pIniFile->WriteInteger(key, "SmoozType", pSound->FSKDEM.m_lpf); + pIniFile->WriteInteger(key, "SmoozOrder", pSound->FSKDEM.m_lpfOrder); + WriteDoubleIniFile(pIniFile, key, "SmoozIIR", pSound->FSKDEM.m_lpffreq); + WriteDoubleIniFile(pIniFile, key, "Smooz", pSound->FSKDEM.GetSmoozFreq()); + + pIniFile->WriteInteger(key, "Tap", pSound->FSKDEM.GetFilterTap()); + pIniFile->WriteInteger(key, "IIRBW", pSound->FSKDEM.m_iirfw); + pIniFile->WriteInteger(key, "FFTTones", pSound->FSKDEM.m_Phase.m_TONES); + + WriteDoubleIniFile(pIniFile, key, "pllVcoGain", pSound->FSKDEM.m_pll.m_vcogain); + pIniFile->WriteInteger(key, "pllLoopOrder", pSound->FSKDEM.m_pll.m_loopOrder); + WriteDoubleIniFile(pIniFile, key, "pllLoopFC", pSound->FSKDEM.m_pll.m_loopFC); + pIniFile->WriteInteger(key, "pllOutOrder", pSound->FSKDEM.m_pll.m_outOrder); + WriteDoubleIniFile(pIniFile, key, "pllOutFC", pSound->FSKDEM.m_pll.m_outFC); + + pIniFile->WriteInteger(key, "Diddle", pSound->FSKMOD.m_diddle); + + pIniFile->WriteInteger(key, "TxFixShift", sys.m_TxFixShift); + pIniFile->WriteInteger(key, "InvPTT", sys.m_TxRxInv); + pIniFile->WriteInteger(key, "TXUOS", sys.m_txuos); + +//AA6YQ option, Added by JE3HHT on Sep.2010 + CAA6YQ *pAA6YQ = &pSound->FSKDEM.m_AA6YQ; + pIniFile->WriteInteger(key, "AA6YQ.Version", VERAA6YQ); + pIniFile->WriteInteger(key, "AA6YQ.Enabled", pAA6YQ->m_fEnabled); + pIniFile->WriteInteger(key, "AA6YQ.TapsBPF", pAA6YQ->m_bpfTaps); + WriteDoubleIniFile(pIniFile, key, "AA6YQ.WidthBPF", pAA6YQ->m_bpfFW); + pIniFile->WriteInteger(key, "AA6YQ.TapsBEF", pAA6YQ->m_befTaps); + WriteDoubleIniFile(pIniFile, key, "AA6YQ.WidthBEF", pAA6YQ->m_befFW); + WriteDoubleIniFile(pIniFile, key, "AA6YQ.afcERR", pAA6YQ->m_afcERR); + + } + pIniFile->UpdateFile(); + delete pIniFile; + if( Remote ) PostApp(TXM_PROFILE, (Flag ? 0x00010000 : 0x00020000) + n); + + } + catch(...){ + ErrorMB((Font->Charset != SHIFTJIS_CHARSET)?"Cannot update UserPara.INI":"UserPara.INI‚ðXV‚Å‚«‚Ü‚¹‚ñ."); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::WriteProfile(int n) +{ + AnsiString as; + TMenuItem *tp = NULL; + if( (n >= 0) && (n < 8) ){ + tp = GetKS(n); + as = tp->Caption; + } + else { + char bf[256]; + + sprintf(bf, "%sUserPara.ini", BgnDir); + TMemIniFile *pIniFile = new TMemIniFile(bf); + char key[32]; + sprintf(key, "Define%d", n); + as = pIniFile->ReadString(key, "Name", "User profile"); + delete pIniFile; + } + int r; + if( Font->Charset != SHIFTJIS_CHARSET ){ + r = InputMB("Assign profile", "Profile name", as); + } + else { + r = InputMB("ƒvƒƒtƒ@ƒCƒ‹‚Ì“o˜^", "ƒvƒƒtƒ@ƒCƒ‹‚Ì–¼‘O", as); + } + if( r == TRUE ){ + if( tp != NULL ){ + tp->Caption = as; + tp->Enabled = TRUE; + } + WriteProfile(n, as.c_str(), TRUE); + if( (pMap != NULL) && !(Remote & REMDISSHARED) && (n >= 0) && (n < 16) ){ + StrCopy(pMap->ProfileName[n], as.c_str(), 63); + } + UpdateProfile(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KESClick(TObject *Sender) +{ + int i; + for( i = 0; i < 8; i++ ){ + TMenuItem *tp = GetKES(i); + if( tp == (TMenuItem *)Sender ){ + WriteProfile(i); + break; + } + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KDSClick(TObject *Sender) +{ + int i; + for( i = 0; i < 8; i++ ){ + TMenuItem *tp = GetKDS(i); + if( tp == (TMenuItem *)Sender ){ + tp = GetKS(i); + tp->Enabled = FALSE; + char bf[32]; + sprintf(bf, "Profile %d", i + 1); + tp->Caption = bf; + WriteProfile(i, bf, FALSE); + UpdateProfile(); + break; + } + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSClick(TObject *Sender) +{ + int i; + for( i = 0; i < 8; i++ ){ + TMenuItem *tp = GetKS(i); + if( tp == (TMenuItem *)Sender ){ + ReadProfile(i, NULL); + UpdateItem(); + break; + } + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::RemoteProfile(DWORD flag) +{ + char bf[128]; + TMenuItem *tp; + + int n = flag & 0x0000ffff; + switch(flag & 0xffff0000){ + case 0x00000000: + if( ((n >= 0)&&(n <= 15)) || ((n>=1025)&&(n<=1026)) ){ + ReadProfile(n, NULL); + UpdateItem(); + } + break; + case 0x00010000: + if( (n >= 0)&&(n <= 15) ){ + if( pMap != NULL ){ + StrCopy(bf, pMap->ProfileName[n], 63); + } + else { + sprintf(bf, "Remote %d", n + 1); + } + if( n < 8 ){ + tp = GetKS(n); + tp->Caption = bf; + tp->Enabled = TRUE; + } + WriteProfile(n, bf, TRUE); + UpdateProfile(); + } + break; + case 0x00020000: + if( (n >= 0)&&(n <= 15) ){ + sprintf(bf, "Profile %d", n + 1); + if( n < 8 ){ + tp = GetKS(n); + tp->Caption = bf; + tp->Enabled = FALSE; + } + WriteProfile(n, bf, FALSE); + UpdateProfile(); + } + break; + case 0x00030000: + if( !m_OptionDialog ){ + KSLDClick(NULL); + } + break; + case 0x00040000: + if( !m_OptionDialog ){ + KSSVClick(NULL); + } + break; + case 0x00050000: + if( (n >= 0)&&(n <= 15) ){ + WriteProfile(n); + } + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSSVClick(TObject *Sender) +{ + if( (Font->Charset != SHIFTJIS_CHARSET) ){ + SaveDialog->Title = "Write Profile"; + SaveDialog->Filter = "Profiles(*.pro)|*.pro|"; + } + else { + SaveDialog->Title = "ƒvƒƒtƒ@ƒCƒ‹‚Ìì¬"; + SaveDialog->Filter = "ƒvƒƒtƒ@ƒCƒ‹(*.pro)|*.pro|"; + } + char bf[128]; + sprintf(bf, "%s.pro", ClipCall(sys.m_Call.c_str())); + SaveDialog->FileName = bf; + SaveDialog->DefaultExt = "pro"; + SaveDialog->InitialDir = BgnDir; + DisPaint = TRUE; + NormalWindow(this); + m_OptionDialog++; + if( Remote ){ + m_pRemOpenName = AnsiString(SaveDialog->Title).c_str(); //JA7UDE 0428 + PostApp(TXM_SHOWPROFILE, 1); + } + if( SaveDialog->Execute() == TRUE ){ + CWaitCursor w; + WriteProfile(1024, AnsiString(SaveDialog->FileName).c_str(), TRUE); //JA7UDE 0428 + } + m_pRemOpenName = NULL; + TopWindow(this); + m_OptionDialog--; + DisPaint = FALSE; + AdjustFocus(); + if( Remote ) PostApp(TXM_SHOWPROFILE, 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSLDClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options << ofFileMustExist; + if(Font->Charset != SHIFTJIS_CHARSET){ + OpenDialog->Title = "Load Profile"; + OpenDialog->Filter = "Profiles(*.pro)|*.pro|All files(*.*)|*.*|"; + } + else { + OpenDialog->Title = "ƒvƒƒtƒ@ƒCƒ‹‚̃[ƒh"; + OpenDialog->Filter = "ƒvƒƒtƒ@ƒCƒ‹(*.pro)|*.pro|‚·‚ׂẴtƒ@ƒCƒ‹(*.*)|*.*|"; + } + OpenDialog->FileName = ""; + OpenDialog->DefaultExt = "pro"; + OpenDialog->InitialDir = BgnDir; + DisPaint = TRUE; + NormalWindow(this); + m_OptionDialog++; + if( Remote ){ + m_pRemOpenName = AnsiString(OpenDialog->Title).c_str(); //JA7UDE 0428 + PostApp(TXM_SHOWPROFILE, 1); + } + if( OpenDialog->Execute() == TRUE ){ + CWaitCursor w; + ReadProfile(1024, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428 + UpdateItem(); + } + m_pRemOpenName = NULL; + TopWindow(this); + m_OptionDialog--; + DisPaint = FALSE; + AdjustFocus(); + if( Remote ) PostApp(TXM_SHOWPROFILE, 0); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSDEFClick(TObject *Sender) +{ + ReadProfile(1025, NULL); + UpdateItem(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KSRETClick(TObject *Sender) +{ + ReadProfile(1026, NULL); + UpdateItem(); + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KPttTimClick(TObject *Sender) +{ + AnsiString as; + + as = m_PttTimer; + if( InputMB("MMTTY", (Font->Charset != SHIFTJIS_CHARSET)?"Enter PTT timer value(sec). (0 = OFF)":"PTTƒ^ƒCƒ}[ŽžŠÔi•bj‚ð“ü—Í‚µ‚ĉº‚³‚¢. (0 = OFF)", as) == TRUE ){ + if( !as.IsEmpty() ){ + int d; + sscanf(as.c_str(), "%lu", &d); + m_PttTimer = d; + UpdatePttTimer(); + KPttTim->Checked = m_PttTimer ? 1 : 0; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::UpdatePttTimer(void) +{ + m_PttTimerCount = ::GetTickCount() + (m_PttTimer * 1000); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KROFClick(TObject *Sender) +{ + AnsiString as = LogDir; + if( InputMB("MMTTY", (Font->Charset != SHIFTJIS_CHARSET)?"Please enter folder name":"ƒtƒHƒ‹ƒ_–¼‚ð“ü—Í‚µ‚ĉº‚³‚¢.", as) == TRUE ){ + StrCopy(LogDir, as.c_str(), 255); + if( sys.m_log ){ + PrintText.MakeLogName(); + PrintText.OpenLogFile(); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KROTClick(TObject *Sender) +{ + sys.m_logTimeStamp = sys.m_logTimeStamp ? FALSE : TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KROTUClick(TObject *Sender) +{ + sys.m_TimeStampUTC = sys.m_TimeStampUTC ? FALSE : TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KROTDClick(TObject *Sender) +{ + sys.m_ShowTimeStamp = sys.m_ShowTimeStamp ? FALSE : TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KMFileClick(TObject *Sender) +{ + KRcvLog->Checked = sys.m_log; + KROT->Checked = sys.m_logTimeStamp; + KROTU->Checked = sys.m_TimeStampUTC; + KROTD->Checked = sys.m_ShowTimeStamp; + KFlush->Enabled = Log.IsOpen() && Log.IsEdit(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::AddCall(LPCSTR p) +{ + SYSTEMTIME now; + GetLocal(&now); + char bf[128]; + sprintf(bf, "%02u:%02u\t%s", now.wHour, now.wMinute, p); + + int i; + TMenuItem *pm; + for( i = 0; i < PopupC->Items->Count; i++ ){ + pm = PopupC->Items->Items[i]; + if( !strcmp(AnsiString(pm->Caption).c_str()+6, p) ){ //JA7UDE 0428 + if( !i ){ + pm->Caption = bf; + return; + } + else { + PopupC->Items->Delete(i); + break; + } + } + } + pm = new TMenuItem (this); + pm->Caption = bf; + pm->RadioItem = FALSE; + pm->OnClick = KCClick; + pm->Checked = FALSE; + pm->Enabled = TRUE; + if( (i >= PopupC->Items->Count) && (PopupC->Items->Count == CALLLISTMAX) ){ + PopupC->Items->Delete(CALLLISTMAX-1); + } + PopupC->Items->Insert(0, pm); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KCClick(TObject *Sender) +{ + TMenuItem *pm = (TMenuItem *)Sender; + if( strcmp(AnsiString(HisCall->Text).c_str(), (AnsiString(pm->Caption).c_str()+6)) ){ //JA7UDE 0428 + HisCall->Text = pm->Caption.c_str() + 6; + FindCall(); + } +} +//--------------------------------------------------------------------------- +/* +void __fastcall TMmsstv::SBRXIDMouseUp(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ){ + if( PopupC->Items->Count ){ + TControl *tp = (TControl *)Sender; + PopupC->Popup(Left + GBLog->Left + tp->Left + SBRXID->Width/2, m_MW + Top + GBLog->Top + tp->Top); + } + } +} +*/ +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::HisCallDblClick(TObject *Sender) +{ + if( PopupC->Items->Count ){ + int MW = Height - ClientHeight; + PopupC->Popup(Left + PanelQSO->Left + HisCall->Left + HisCall->Width/2, Top + MW + PanelQSO->Top + HisCall->Top + HisCall->Height/2); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::LCallMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ){ + HisCallDblClick(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SelectCombo(int sw) +{ + m_DisEvent++; + + // DemoBox1‚Ì‘I‘ð + if( m_Baud ){ // Baud•\ަ + if( sw ) SetComboBox(DemoBox1, m_asBaud.c_str()); + DemoBox1->Text = pSound->FSKDEM.GetBaudRate(); + } + else { + switch(pSound->FSKDEM.m_type){ + case 0: // IIR + if( sw ) SetComboBox(DemoBox1, m_asIIRBW.c_str()); + DemoBox1->Text = pSound->FSKDEM.m_iirfw; + break; + case 1: + if( sw ) SetComboBox(DemoBox1, m_asFilterTap.c_str()); + DemoBox1->Text = pSound->FSKDEM.GetFilterTap(); + break; + case 2: + if( sw ) SetComboBox(DemoBox1, m_asVCOGain.c_str()); + DemoBox1->Text = pSound->FSKDEM.m_pll.m_vcogain; + break; + case 3: // FFT + if( sw ) SetComboBox(DemoBox1, "2,3,4,5,6"); + DemoBox1->Text = pSound->FSKDEM.m_Phase.m_TONES; + break; + } + } + + // DemoBox2‚Ì‘I‘ð + switch(pSound->FSKDEM.m_type){ + case 0: // IIR or FIR + case 1: + case 3: + if( sw ) SetComboBox(DemoBox2, "20,22.5,25,30,35,40,45,50,60,70,80,100,150,200,300,600"); + if( pSound->FSKDEM.m_lpf ){ + DemoBox2->Text = pSound->FSKDEM.m_lpffreq; + } + else { + DemoBox2->Text = pSound->FSKDEM.GetSmoozFreq(); + } + break; + case 2: // PLL + if( sw ) SetComboBox(DemoBox2, m_asLoopFC.c_str()); + DemoBox2->Text = pSound->FSKDEM.m_pll.m_loopFC; + break; + } + m_ShowBaud = m_Baud; + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::DemoBox1Change(TObject *Sender) +{ + if( m_DisEvent ) return; + + double d; + sscanf(AnsiString(DemoBox1->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( m_Baud ){ // Baud + if( d > 0 ){ + if( sys.m_TxPort && (pSound->FSKDEM.GetBaudRate() != d) ) COMM.change = 1; + pSound->FSKDEM.SetBaudRate(d); + pSound->FSKMOD.SetBaudRate(d); + RemoteStat(); + UpdateFSK(); + } + } + else { + switch(pSound->FSKDEM.m_type){ + case 0: // IIR + if( (d > 0) && (d <= 500.0) ){ + pSound->FSKDEM.SetIIR(d); + } + break; + case 1: + { + int di = int(d + 0.1); + if( (di >= 2) && (di <= TAPMAX) ){ + pSound->FSKDEM.SetFilterTap(di); + } + } + break; + case 2: + if( (d > 0) && (d <= 1000.0) ){ + pSound->FSKDEM.m_pll.SetVcoGain(d); + } + break; + case 3: // FFT + if( (d > 2) && (d <= 6.0) ){ + pSound->FSKDEM.m_Phase.SetTones(d); + } + break; + } + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::DemoBox2Change(TObject *Sender) +{ + if( m_DisEvent ) return; + + double d; + sscanf(AnsiString(DemoBox2->Text).c_str(), "%lf", &d); //JA7UDE 0428 + switch(pSound->FSKDEM.m_type){ + case 0: + case 1: + case 3: + if( (d >= 20.0) && (d <= 1500.0) ){ + if( pSound->FSKDEM.m_lpf ){ + pSound->FSKDEM.SetLPFFreq(d); + } + else { + pSound->FSKDEM.SetSmoozFreq(d); + } + } + break; + case 2: + if( (d > 0) && (d <= 2000.0) ){ + pSound->FSKDEM.m_pll.m_loopFC = d; + pSound->FSKDEM.m_pll.MakeLoopLPF(); + } + break; + } + AdjustFocus(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::CMWheel(TMessage Message) +{ + if( Remote ) return; + + int z = Message.WParam >> 16; + z /= 120; + while( z ){ + if( z > 0 ){ + PrintText.ScrollBarUp(1); + z--; + } + else { + PrintText.ScrollBarDown(1); + z++; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::SBTXMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ){ + KOptionClick(KMacro); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::CMMML(TMessage Message) +{ + if( sys.m_LogLink != 2 ) return; + if( LogLink.m_pLink == NULL ) return; + + switch(Message.WParam){ + case MML_NOTIFYSESSION: + LogLink.NotifySession((LPCSTR)Message.LParam); + UpdateLogLink(); + break; + case MML_QRETURN: + if( !LogLink.IsLink() ) return; + if( LogLink.QReturn(&Log.m_sd, (const mmLOGDATA *)Message.LParam) ){ + UpdateTextData(); + } + break; + case MML_VFO: + if( !LogLink.IsLink() ) return; + if( Message.LParam ){ + Freq->Text = (LPCSTR)Message.LParam; + } + break; + } + Message.Result = TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::CMMMR(TMessage Message) +{ + if( pRadio == NULL ) return; + + switch(Message.WParam){ + case MMR_DEFCOMMAND: + { + LPCSTR p; + switch(Message.LParam){ + case 1: + p = RADIO.CmdRx.c_str(); + break; + case 2: + p = RADIO.CmdTx.c_str(); + break; + default: + p = RADIO.CmdInit.c_str(); + break; + } + pRadio->SendCommand(p); + } + break; + case MMR_VFO: + pRadio->UpdateFreq(double(Message.LParam)/10000.0); + break; + } + Message.Result = TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KTXClick(TObject *Sender) +{ + int dis = (sys.m_DisTX&1) ? FALSE : TRUE; + sys.m_DisTX &= ~1; + sys.m_DisTX |= dis; + if( dis && SBTX->Down ){ + SBTXOFFClick(NULL); + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KMOptClick(TObject *Sender) +{ + KTest->Enabled = !SBTX->Down; + switch(m_SendWay){ + case 0: + KSChar->Checked = TRUE; + break; + case 1: + KSWord->Checked = TRUE; + break; + default: + KSLine->Checked = TRUE; + break; + } + KTX->Checked = (sys.m_DisTX&1); +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KViewClick(TObject *Sender) +{ + switch(m_PanelSize){ + case 0: + KPanelSmall->Checked = TRUE; + break; + case 1: + KPanelMedium->Checked = TRUE; + break; + case 3: + KPanelSuper->Checked = TRUE; + break; + default: + KPanelBig->Checked = TRUE; + break; + } + + switch(sys.m_FFTGain){ + case 0: + KFFTGL->Checked = TRUE; + break; + case 1: + KFFTGM->Checked = TRUE; + break; + case 2: + KFFTGH->Checked = TRUE; + break; + case 3: + KFFTGT->Checked = TRUE; + break; + case 4: + KFFTGS1->Checked = TRUE; + break; + case 5: + KFFTGS2->Checked = TRUE; + break; + case 6: + KFFTGS3->Checked = TRUE; + break; + default: + KFFTGS4->Checked = TRUE; + break; + } + switch(sys.m_FFTResp){ + case 1: + KFFTRF->Checked = TRUE; + break; + case 2: + KFFTRM->Checked = TRUE; + break; + default: + KFFTRS->Checked = TRUE; + break; + } + switch(pSound->m_FFTFW){ + case 0: + KFFTWA->Checked = TRUE; + break; + case 1: + KFFTW05->Checked = TRUE; + break; + case 2: + KFFTW1->Checked = TRUE; + break; + case 3: + KFFTW15->Checked = TRUE; + break; + case 4: + KFFTW2->Checked = TRUE; + break; + default: + KFFTW3->Checked = TRUE; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmttyWd::KExtCmdClick(TObject *Sender) +{ + KExtReset->Enabled = pSound->m_susp; + KExtSusp->Enabled = !pSound->m_susp; +} +//--------------------------------------------------------------------------- diff --git a/Main.dfm b/Main.dfm new file mode 100644 index 0000000000000000000000000000000000000000..5099050d36842d077bada5266dba446171ac5fad GIT binary patch literal 24988 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. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef MainH +#define MainH +//--------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +//--------------------------------------------------------------------------- +#include "ComLib.h" +#include "Sound.h" +#include "Comm.h" +#include "Ctnc.h" +#include "Cradio.h" +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +#include "SendFile.h" +#define USEPAL 1 +#define SQSCALE 1024 // SQ ‚Ì•\ަƒXƒP[ƒ‹ +#define HELPNAME_A "MMTTY.CHM" +#define HELPNAME_B "MMTTY.HLP" +//--------------------------------------------------------------------------- +enum { + RXM_HANDLE=0x0000, // APP -> MMTTY + RXM_REQHANDLE, + RXM_EXIT, + RXM_PTT, + RXM_CHAR, + + RXM_WINPOS, // 5 + RXM_WIDTH, + RXM_REQPARA, + RXM_SETBAUD, + RXM_SETMARK, + + RXM_SETSPACE, // 10 + RXM_SETSWITCH, + RXM_SETHAM, + RXM_SHOWSETUP, + RXM_SETVIEW, + + RXM_SETSQLVL, // 15 + RXM_SHOW, + RXM_SETFIG, + RXM_SETRESO, + RXM_SETLPF, + + RXM_SETTXDELAY, // 20 + RXM_UPDATECOM, + RXM_SUSPEND, + RXM_NOTCH, + RXM_PROFILE, + + RXM_TIMER, // 25 + RXM_ENBFOCUS, + RXM_SETDEFFREQ, + RXM_SETLENGTH, + RXM_ENBSHARED, + + RXM_PTTFSK, // 30 Added by JE3HHT on Sep.2010 +//-------------------------------------- + TXM_HANDLE=0x8000, // MMTTY -> APP + TXM_REQHANDLE, + TXM_START, + TXM_CHAR, + TXM_PTTEVENT, + + TXM_HEIGHT, + TXM_BAUD, + TXM_MARK, + TXM_SPACE, + TXM_SWITCH, + + TXM_VIEW, + TXM_LEVEL, + TXM_FIGEVENT, + TXM_RESO, + TXM_LPF, + + TXM_THREAD, + TXM_PROFILE, + TXM_NOTCH, + TXM_DEFSHIFT, + TXM_RADIOFREQ, + + TXM_SHOWSETUP, + TXM_SHOWPROFILE, +}; +#pragma option -a- // Pack of structer +typedef struct { + LONG smpFreq; // MMTTY->APP + CHAR title[128]; // APP->MMTTY + CHAR comName[16];// APP->MMTTY + LONG smpFFT; // APP->MMTTY 0-11025, 1-8000 + + LONG flagFFT; + LONG arrayFFT[2048]; + LONG flagXY; + LONG arrayX[XYCOLLECT]; + LONG arrayY[XYCOLLECT]; + + CHAR verMMTTY[16]; + CHAR comRadio[16]; + LONG flagLostSound; // ƒTƒEƒ“ƒh‚ðˆê•”ޏ‚Á‚½(->APP) + LONG flagOverflow; // “ü—Í‚ª‘å‚«‰ß‚¬‚é(->APP) + LONG errorClock; // ppm + LONG smpDemFreq; // ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g” + LONG txBuffCount; // ‘—Mƒoƒbƒtƒ@‚Ì–¢‘—M•¶Žš” + CHAR ProfileName[16][64]; +}COMARRAY; +#pragma option -a. + +class TMmttyWd : public TForm +{ +__published: // IDE ŠÇ—‚̃Rƒ“ƒ|[ƒlƒ“ƒg + TTimer *Timer; + TPanel *PanelRx; + TPaintBox *PBoxRx; + TScrollBar *ScrollBarRx; + TPanel *PanelTop; + TMainMenu *MainMenu; + TMenuItem *KMFile; + TGroupBox *GroupCtr; + TSpeedButton *SBFIG; + TSpeedButton *SBUOS; + TGroupBox *GroupDem; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + TLabel *Label4; + TLabel *LTap; + TSpeedButton *SBRev; + TSpeedButton *SBHAM; + TSpeedButton *SBATC; + TSpeedButton *SBSQ; + TSpeedButton *SBAFC; + TComboBox *MarkFreq; + TComboBox *ShiftFreq; + TPanel *PanelFFT; + TPaintBox *PBoxFFTIN; + TPanel *PanelWater; + TPaintBox *PBoxWater; + TPanel *PanelQSO; + TPanel *PanelIn; + TPanel *PanelStat; + TLabel *LCall; + TEdit *HisCall; + TLabel *LName; + TEdit *HisName; + TLabel *LHIS; + TComboBox *HisRST; + TComboBox *MyRST; + TSpeedButton *SBQSO; + TPaintBox *PBoxIn; + TScrollBar *ScrollBarIn; + TLabel *LMY; + TSpeedButton *SBINClear; + TSpeedButton *SBIN1; + TSpeedButton *SBIN2; + TSpeedButton *SBIN3; + TSpeedButton *SBIN4; + TComboBox *MsgList; + TSpeedButton *SBINEdit; + TSpeedButton *SBTXOFF; + TSpeedButton *SBTX; + TMenuItem *KMEdit; + TMenuItem *KView; + TMenuItem *KMOpt; + TMenuItem *KMHelp; + TMenuItem *KOption; + TGroupBox *GroupM; + TSpeedButton *SBM1; + TSpeedButton *SBM2; + TSpeedButton *SBM3; + TSpeedButton *SBM4; + TSpeedButton *SBM5; + TSpeedButton *SBM6; + TSpeedButton *SBM7; + TSpeedButton *SBM8; + TSpeedButton *SBM9; + TSpeedButton *SBM10; + TSpeedButton *SBM11; + TSpeedButton *SBM12; + TSpeedButton *SBM13; + TSpeedButton *SBM14; + TSpeedButton *SBM15; + TSpeedButton *SBM16; + TMenuItem *KOS; + TMenuItem *KFFT; + TMenuItem *KMacro; + TMenuItem *KMsg; + TMenuItem *KWebHHT; + TMenuItem *N1; + TMenuItem *KHlpTxt; + TMenuItem *KVol; + TMenuItem *KRcvLog; + TMenuItem *KFileOut; + TOpenDialog *OpenDialog; + TMenuItem *N2; + TMenuItem *KExit; + TMenuItem *N3; + TMenuItem *KLog; + TMenuItem *KQSO; + TSpeedButton *SBFind; + TSpeedButton *SBData; + TEdit *HisQTH; + TSpeedButton *SBInit; + TMenuItem *N5; + TMenuItem *KOpenLog; + TMenuItem *KFlush; + TMenuItem *KTest; + TMenuItem *N4; + TMenuItem *KHlpLog; + TSaveDialog *SaveDialog; + TMenuItem *KSaveRx; + TMenuItem *KFFTFW; + TMenuItem *N6; + TMenuItem *KFFTWA; + TMenuItem *KFFTW1; + TMenuItem *KFFTW2; + TMenuItem *KFFTW3; + TMenuItem *KFFTW05; + TMenuItem *KFFTW15; + TSpeedButton *SBBPF; + TLabel *LLPF; + TLabel *Label7; + TMenuItem *N7; + TMenuItem *KDispVer; + TSpeedButton *SBLMS; + TLabel *LWait; + TTrackBar *TBCharWait; + TMenuItem *N8; + TMenuItem *KClrRx; + TPanel *PanelXY; + TPaintBox *PBoxXY; + TMenuItem *KXYScope; + TLabel *LHZ; + TSpeedButton *SBNET; + TMenuItem *N9; + TMenuItem *KRxRec; + TMenuItem *KRxPlay; + TMenuItem *KRxStop; + TMenuItem *KXYScopeSize; + TMenuItem *KXYSmall; + TMenuItem *KXYBig; + TMenuItem *KRxTime; + TMenuItem *KRxPause; + TSpeedButton *SBDem; + TMenuItem *KRxTop; + TMenuItem *KRxPos; + TMenuItem *KHlpDig; + TMenuItem *KShortCut; + TMenuItem *N10; + TMenuItem *KHint; + TMenuItem *KOptLog; + TMenuItem *KPanel; + TMenuItem *N11; + TMenuItem *KPanelSize; + TMenuItem *KPanelSmall; + TMenuItem *KPanelBig; + TMenuItem *KPanelMedium; + TMenuItem *KExtCmd; + TMenuItem *KExtCmd1; + TMenuItem *KExtCmd2; + TMenuItem *KExtCmd3; + TMenuItem *KExtCmd4; + TMenuItem *N12; + TMenuItem *KExtEnt; + TMenuItem *KExtEnt1; + TMenuItem *KExtEnt2; + TMenuItem *KExtEnt3; + TMenuItem *KExtEnt4; + TMenuItem *N13; + TMenuItem *KExtReset; + TMenuItem *KExtSusp; + TMenuItem *KExtDel; + TMenuItem *KExtDel1; + TMenuItem *KExtDel2; + TMenuItem *KExtDel3; + TMenuItem *KExtDel4; + TPanel *PanelSQ; + TPaintBox *PBoxSQ; + TMenuItem *KPanelSuper; + TMenuItem *KXYScopeQuality; + TMenuItem *KXYQuality1; + TMenuItem *KXYQuality2; + TMenuItem *KXYQuality3; + TMenuItem *KXYQuality4; + TMenuItem *KFFTGain; + TMenuItem *KFFTGL; + TMenuItem *KFFTGM; + TMenuItem *KFFTGH; + TMenuItem *KFFTGT; + TMenuItem *KWebJARTS; + TMenuItem *KWebGRP; + TMenuItem *KWebENG; + TComboBox *Freq; + TMenuItem *N14; + TMenuItem *KSetHelp; + TMenuItem *N15; + TMenuItem *KSend; + TMenuItem *KRun; + TMenuItem *KSChar; + TMenuItem *KSWord; + TMenuItem *KSLine; + TMenuItem *KFFTR; + TMenuItem *KFFTRS; + TMenuItem *KFFTRM; + TMenuItem *KFFTRF; + TMenuItem *KPaste; + TMenuItem *N16; + TMenuItem *KW7TI; + TMenuItem *KWebWSK; + TMenuItem *N17; + TMenuItem *KTNC; + TMenuItem *KRM; + TMenuItem *KMac; + TMenuItem *N18; + TMenuItem *KENT; + TMenuItem *N19; + TMenuItem *N20; + TMenuItem *KFFTGS1; + TMenuItem *KFFTGS2; + TMenuItem *KFFTGS3; + TMenuItem *KFFTGS4; + TPanel *PanelMac; + TMenuItem *KWP; + TMenuItem *KS; + TMenuItem *KS1; + TMenuItem *KS2; + TMenuItem *KS3; + TMenuItem *KS4; + TMenuItem *KS5; + TMenuItem *KS6; + TMenuItem *KS7; + TMenuItem *KS8; + TMenuItem *N21; + TMenuItem *KSDel; + TMenuItem *KSEnt; + TMenuItem *KDS1; + TMenuItem *KDS2; + TMenuItem *KDS3; + TMenuItem *KDS4; + TMenuItem *KDS5; + TMenuItem *KDS6; + TMenuItem *KDS7; + TMenuItem *KDS8; + TMenuItem *KES1; + TMenuItem *KES2; + TMenuItem *KES3; + TMenuItem *KES4; + TMenuItem *KES5; + TMenuItem *KES6; + TMenuItem *KES7; + TMenuItem *KES8; + TMenuItem *N22; + TMenuItem *KSSV; + TMenuItem *KSLD; + TMenuItem *N23; + TMenuItem *KSDEF; + TMenuItem *KSRET; + TMenuItem *KPttTim; + TMenuItem *KVolIn; + TMenuItem *KRO; + TMenuItem *KROT; + TMenuItem *KROF; + TMenuItem *KROTU; + TMenuItem *KROTD; + TMenuItem *N24; + TPopupMenu *PopupC; + TComboBox *DemoBox2; + TComboBox *DemoBox1; + TMenuItem *KTX; + TMenuItem *N25; + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + + void __fastcall PBoxFFTINPaint(TObject *Sender); + void __fastcall PBoxWaterPaint(TObject *Sender); + + void __fastcall SBFIGClick(TObject *Sender); + void __fastcall MarkFreqChange(TObject *Sender); + void __fastcall ShiftFreqChange(TObject *Sender); + + + void __fastcall SBUOSClick(TObject *Sender); + + + + + + + + + void __fastcall PBoxRxPaint(TObject *Sender); + void __fastcall FormPaint(TObject *Sender); + + void __fastcall SBRevClick(TObject *Sender); + + + + + void __fastcall SBATCClick(TObject *Sender); + + + + void __fastcall SBSQClick(TObject *Sender); + + void __fastcall SBTXClick(TObject *Sender); + + + + + void __fastcall FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift); + + + + + void __fastcall PBoxRxMouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall FormKeyPress(TObject *Sender, char &Key); + + + void __fastcall ScrollBarRxChange(TObject *Sender); + void __fastcall SBAFCClick(TObject *Sender); + + + void __fastcall PBoxInPaint(TObject *Sender); + void __fastcall ScrollBarInChange(TObject *Sender); + void __fastcall SBTXOFFClick(TObject *Sender); + void __fastcall SBINClearClick(TObject *Sender); + void __fastcall SBIN1Click(TObject *Sender); + void __fastcall SBIN2Click(TObject *Sender); + void __fastcall SBIN4Click(TObject *Sender); + void __fastcall SBIN3Click(TObject *Sender); + void __fastcall MsgListChange(TObject *Sender); + void __fastcall SBINEditClick(TObject *Sender); + void __fastcall KOptionClick(TObject *Sender); + void __fastcall HisCallKeyPress(TObject *Sender, char &Key); + void __fastcall SBMClick(TObject *Sender); + void __fastcall KOSClick(TObject *Sender); + void __fastcall KFFTClick(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + + + void __fastcall TimerTimer(TObject *Sender); + + + void __fastcall KWebHHTClick(TObject *Sender); + void __fastcall KHlpTxtClick(TObject *Sender); + void __fastcall KVolClick(TObject *Sender); + + + void __fastcall KRcvLogClick(TObject *Sender); + void __fastcall KFileOutClick(TObject *Sender); + void __fastcall KExitClick(TObject *Sender); + + void __fastcall KLogClick(TObject *Sender); + void __fastcall KQSOClick(TObject *Sender); + void __fastcall SBQSOClick(TObject *Sender); + void __fastcall SBFindClick(TObject *Sender); + void __fastcall HisCallChange(TObject *Sender); + + void __fastcall LNameClick(TObject *Sender); + void __fastcall SBInitClick(TObject *Sender); + void __fastcall PBoxInClick(TObject *Sender); + void __fastcall KTestClick(TObject *Sender); + void __fastcall SBHAMClick(TObject *Sender); + void __fastcall KOpenLogClick(TObject *Sender); + void __fastcall KFlushClick(TObject *Sender); + void __fastcall KHlpLogClick(TObject *Sender); + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall KSaveRxClick(TObject *Sender); + void __fastcall KFFTWAClick(TObject *Sender); + void __fastcall KFFTW1Click(TObject *Sender); + void __fastcall KFFTW2Click(TObject *Sender); + void __fastcall KFFTW3Click(TObject *Sender); + void __fastcall KFFTW05Click(TObject *Sender); + void __fastcall KFFTW15Click(TObject *Sender); + void __fastcall SBBPFClick(TObject *Sender); + + void __fastcall FormShow(TObject *Sender); + + + void __fastcall KDispVerClick(TObject *Sender); + void __fastcall SBLMSClick(TObject *Sender); + void __fastcall TBCharWaitChange(TObject *Sender); + void __fastcall KClrRxClick(TObject *Sender); + void __fastcall KXYScopeClick(TObject *Sender); + void __fastcall PBoxXYPaint(TObject *Sender); + + void __fastcall SBNETClick(TObject *Sender); + void __fastcall KRxRecClick(TObject *Sender); + void __fastcall KRxPlayClick(TObject *Sender); + void __fastcall KRxStopClick(TObject *Sender); + void __fastcall KXYSmallClick(TObject *Sender); + void __fastcall KXYBigClick(TObject *Sender); + void __fastcall KRxTimeClick(TObject *Sender); + void __fastcall KRxPauseClick(TObject *Sender); + void __fastcall SBDemClick(TObject *Sender); + void __fastcall KRxTopClick(TObject *Sender); + + + void __fastcall KRxPosClick(TObject *Sender); + void __fastcall KHlpDigClick(TObject *Sender); + void __fastcall KShortCutClick(TObject *Sender); + void __fastcall KHintClick(TObject *Sender); + + void __fastcall KOptLogClick(TObject *Sender); + void __fastcall KPanelClick(TObject *Sender); + void __fastcall KPanelSmallClick(TObject *Sender); + void __fastcall KPanelBigClick(TObject *Sender); + void __fastcall KPanelMediumClick(TObject *Sender); + void __fastcall KExtEnt1Click(TObject *Sender); + void __fastcall KExtEnt2Click(TObject *Sender); + void __fastcall KExtEnt3Click(TObject *Sender); + void __fastcall KExtEnt4Click(TObject *Sender); + void __fastcall KExtCmd1Click(TObject *Sender); + void __fastcall KExtCmd2Click(TObject *Sender); + void __fastcall KExtCmd3Click(TObject *Sender); + void __fastcall KExtCmd4Click(TObject *Sender); + void __fastcall KExtResetClick(TObject *Sender); + void __fastcall KExtSuspClick(TObject *Sender); + + + + + void __fastcall KExtDel1Click(TObject *Sender); + void __fastcall KExtDel2Click(TObject *Sender); + void __fastcall KExtDel3Click(TObject *Sender); + void __fastcall KExtDel4Click(TObject *Sender); + void __fastcall SBMMouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall SBIN1MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall SBIN2MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall SBIN3MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall SBIN4MouseUp(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + + void __fastcall PBoxSQMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall PBoxSQPaint(TObject *Sender); + void __fastcall KPanelSuperClick(TObject *Sender); + void __fastcall LLPFClick(TObject *Sender); + void __fastcall KXYQuality3Click(TObject *Sender); + void __fastcall KXYQuality2Click(TObject *Sender); + void __fastcall KXYQuality1Click(TObject *Sender); + void __fastcall KXYQuality4Click(TObject *Sender); + + + void __fastcall Label3Click(TObject *Sender); + void __fastcall KFFTGLClick(TObject *Sender); + void __fastcall KFFTGMClick(TObject *Sender); + void __fastcall KFFTGHClick(TObject *Sender); + void __fastcall KFFTGTClick(TObject *Sender); + void __fastcall KWebJARTSClick(TObject *Sender); + void __fastcall KWebGRPClick(TObject *Sender); + void __fastcall KWebENGClick(TObject *Sender); + void __fastcall LCallClick(TObject *Sender); + void __fastcall KSetHelpClick(TObject *Sender); + + + void __fastcall KSCharClick(TObject *Sender); + void __fastcall KSWordClick(TObject *Sender); + void __fastcall KSLineClick(TObject *Sender); + void __fastcall FreqChange(TObject *Sender); + void __fastcall KFFTRSClick(TObject *Sender); + void __fastcall KFFTRMClick(TObject *Sender); + void __fastcall KFFTRFClick(TObject *Sender); + void __fastcall KPasteClick(TObject *Sender); + void __fastcall KW7TIClick(TObject *Sender); + void __fastcall KWebWSKClick(TObject *Sender); + void __fastcall KTNCClick(TObject *Sender); + void __fastcall KRMClick(TObject *Sender); + + void __fastcall LTapClick(TObject *Sender); + + void __fastcall KMacClick(TObject *Sender); + void __fastcall KENTClick(TObject *Sender); + + void __fastcall KFFTGS1Click(TObject *Sender); + void __fastcall KFFTGS2Click(TObject *Sender); + void __fastcall KFFTGS4Click(TObject *Sender); + void __fastcall KFFTGS3Click(TObject *Sender); + void __fastcall PBoxFFTINMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall HisCallClick(TObject *Sender); + void __fastcall SBLMSMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall SBFindMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall LWaitClick(TObject *Sender); + void __fastcall KWPClick(TObject *Sender); + void __fastcall SBDataMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall KESClick(TObject *Sender); + void __fastcall KDSClick(TObject *Sender); + void __fastcall KSClick(TObject *Sender); + void __fastcall KSSVClick(TObject *Sender); + void __fastcall KSLDClick(TObject *Sender); + void __fastcall KSDEFClick(TObject *Sender); + void __fastcall KSRETClick(TObject *Sender); + void __fastcall KPttTimClick(TObject *Sender); + + + void __fastcall KROFClick(TObject *Sender); + void __fastcall KROTClick(TObject *Sender); + void __fastcall KROTUClick(TObject *Sender); + void __fastcall KROTDClick(TObject *Sender); + void __fastcall KMFileClick(TObject *Sender); + void __fastcall HisCallDblClick(TObject *Sender); + void __fastcall LCallMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall DemoBox2Change(TObject *Sender); + void __fastcall DemoBox1Change(TObject *Sender); + + + void __fastcall SBTXMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall KTXClick(TObject *Sender); + void __fastcall KMOptClick(TObject *Sender); + void __fastcall KViewClick(TObject *Sender); + void __fastcall KExtCmdClick(TObject *Sender); +private: // ƒ†[ƒU[錾 + WAVEFORMAT wfm; + + Graphics::TBitmap *pBitmapFFTIN; + Graphics::TBitmap *pBitmapWater; + Graphics::TBitmap *pBitmapXY; + Graphics::TBitmap *pBitmapSQ; + + Graphics::TBitmap *pBitmapRx; + Graphics::TBitmap *pBitmapIn; + + CAlignList AlignMain; + CAlignList AlignTop; + CAlignList AlignQSO; + CAlignList AlignStat; + + CWebRef WebRef; + + CRTTY rtty; + CRTTY rttysub; + CFifoEdit FifoEdit; + CComm *pComm; + CCtnc *pTnc; + CCradio *pRadio; + + int m_ReqRecv; + int m_DemType; + int m_LpfType; + int m_SendWay; + + double m_RxMarkFreq; + double m_RxSpaceFreq; + void __fastcall UpdateNet(void); + void __fastcall UpdateLogLink(void); + + void __fastcall UpdateColor(void); + + void __fastcall WndProc(TMessage &Message); + void __fastcall WndCopyData(TMessage &Message); + void __fastcall EntryAlignControl(void); + void __fastcall OnIdle(TObject *Sender, bool &Done); + void __fastcall OnMSG(tagMSG &Msg, bool &Handled); + void __fastcall OnActivate(TObject *Sender); + void __fastcall OnRestore(TObject *Sender); + + TSpeedButton *__fastcall GetSB(int n); + int __fastcall GetMacroIndex(TObject *Sender); + void __fastcall UpdateControlPanel(void); + void __fastcall UpdateXY2(void); + void __fastcall AlignLogPanel(void); + void __fastcall UpdatePanel(void); + void __fastcall UpdateItem(void); + void __fastcall UpdateMacro(void); + void __fastcall UpdateLMS(void); + void __fastcall UpdateUI(void); + void __fastcall ReadSampFreq(void); + void __fastcall ReadCombList(TMemIniFile *tp, AnsiString &as, LPCSTR pKey, LPCSTR pDef); + void __fastcall ReadRegister(void); + void __fastcall WriteRegister(void); + void __fastcall StoreCWID(LPSTR &tt, char c, int &nc, int size); + void __fastcall ConvString(LPSTR t, LPCSTR p, int size, int sw); + void __fastcall SetGreetingString(LPSTR t, LPCSTR pCall, int type); + void __fastcall UpdateFSK(void); + void __fastcall OpenCloseCom(void); + + void __fastcall DoOption(TObject *Sender, int sw); + void __fastcall SetFSKPara(COMMPARA *cp); + void __fastcall OpenClosePTT(void); + void __fastcall WriteFifoEdit(LPCSTR p); + void __fastcall PushKey(char Key); + + void __fastcall TimerFocus(void); + void __fastcall XMIT(int sw); + void __fastcall ToTX(LPCSTR p); + void __fastcall ToRX(int sw); + void __fastcall FindMsgList(AnsiString fs); + void __fastcall FindMsgLst(WORD nKey); + void __fastcall UpdateMsgList(void); + int __fastcall OutputFile(LPCSTR pName); + + void __fastcall SetShift(double sf); + void __fastcall UpdateLogData(void); + void __fastcall UpdateTextData(void); + int __fastcall DrawXY(void); + void __fastcall UpdateXYScope(void); + void __fastcall UpdateXYQuality(void); + void __fastcall UpdateCallsign(void); + + void __fastcall RecvJob(void); + + void __fastcall CallCapture(void); + void __fastcall QSOIN(void); + void __fastcall QSOOUT(int sw); + + CINTPXY2 i2m; + CINTPXY2 i2s; + CINTPXY4FIR i4m; + CINTPXY4FIR i4s; + CINTPXY8FIR i8m; + CINTPXY8FIR i8s; + + int m_XYSize; + int m_XYQuality; + int m_PanelSize; + + int m_InitFirst; + int m_DisAlign; + int m_BefHeight; + int m_DisEvent; + int m_MacroStat; + int m_Macro; + int m_PaletteQuery; + int m_NameQTH; + int m_Ctrl; + int m_ReqPaletteChange; + int m_PaletteTimer; + int m_Dupe; + int m_Running; + int m_Baud; + int m_RemoteTimer; + int m_RemoteDelay; + + int m_OptionDialog; + HWND m_hOptionWnd; + + AnsiString m_NowStr; + + int m_filemode; + int m_FifoOutTimer; + + int m_FIGTimer; + void __fastcall UpdateLWait(void); + int __fastcall IsTxIdle(void); + int __fastcall GetTxBufCount(void); + + TMenuItem *pAndyMenu; + TMenuItem *pAndyMenu2; + void __fastcall KAndyHelp(TObject *Sender); + void __fastcall AddHelpMenu(void); + + void __fastcall UpdateTitle(void); + void __fastcall AutoLogSave(void); + +// Profile‚̃Cƒ“ƒvƒŠƒƒ“ƒg + TMenuItem *__fastcall GetKS(int n); + TMenuItem *__fastcall GetKDS(int n); + TMenuItem *__fastcall GetKES(int n); + void __fastcall UpdateProfile(void); + void __fastcall ReadProfileList(void); + void __fastcall ReadProfile(int n, LPCSTR pName); + void __fastcall WriteProfile(int n); + void __fastcall WriteProfile(int n, LPCSTR pName, int Flag); + void __fastcall RemoteProfile(DWORD flag); + LPCSTR m_pRemOpenName; + +#if USEPAL +public: + HPALETTE UsrPal; +private: + HPALETTE OldPal; + void __fastcall ClosePalette(void); + void __fastcall SetupPalette(RGBQUAD *pTbl, int max); + int __fastcall EntryColor(RGBQUAD *pTbl, TColor col, int n); + void __fastcall SetColorIndex(void); + + DYNAMIC HPALETTE __fastcall GetPalette(void); +#endif + + CRecentMenu RecentMenu; + void __fastcall UpdateRecentMenu(void); + void __fastcall RecentAdd(LPCSTR pNew, int f); + void __fastcall OnRecentClick(TObject *Sender); + + void __fastcall SetHint(TControl *tp, WORD Key); + void __fastcall SetShortCut(TMenuItem *mp, WORD Key); + + void __fastcall UpdateExtProgram(void); + void __fastcall KExtEntClick(int n, TMenuItem *mp); + void __fastcall KExtCmdClick(int n); + + void __fastcall SBINMouseUp(int n); + + void __fastcall DrawSQ(void); + + void __fastcall EditMB(int n); + void __fastcall FindCall(void); +// PttTimer‚̃Cƒ“ƒvƒŠƒƒ“ƒg + int m_PttTimer; + int m_PttTimerCount; + void __fastcall UpdatePttTimer(void); + +// ƒtƒ@ƒCƒ‹‘—M‚̃Cƒ“ƒvƒŠƒƒ“ƒg + TSendFileDlg *p_SendFileDlg; + +// BARTG + int m_BARTGTimer; + void __fastcall UpdateBARTG(void); + +public: // ƒ†[ƒU[錾 + __fastcall TMmttyWd(TComponent* Owner); + __fastcall ~TMmttyWd(); + void __fastcall StartOption(void); + + CPrintText PrintText; + TSound *pSound; + + void __fastcall FirstFileMapping(void); + void __fastcall UpdateComarray(void); + void __fastcall UpdateRemort(void); + void __fastcall OutputStr(LPCSTR pOut); + + void __fastcall SetYourCallsign(LPCSTR pCall); + void __fastcall SetYourName(LPCSTR pName); + void __fastcall SetYourQTH(LPCSTR pQTH); + void __fastcall SetYourRST(LPCSTR pRST); + void __fastcall UpdateLimit(void); + + void __fastcall UpdateShortCut(BOOL bMenu); + + void __fastcall UpdateSystemFont(void); + void __fastcall ReqPaletteChange(void); + void __fastcall UpdateRev(void); + void __fastcall PostApp(WPARAM wParam, LPARAM lParam); + +//Macro Intval‚̃Cƒ“ƒvƒŠƒƒ“ƒg + void __fastcall ClearMacroTimer(void); + void __fastcall MacBtnExec(int n); + int m_MacRetry; + int m_MacTimer; + + void __fastcall AdjustFocus(void); + +//ƒR[ƒ‹ƒŠƒXƒg‚̃Cƒ“ƒvƒŠƒƒ“ƒg +#define CALLLISTMAX 32 + void __fastcall AddCall(LPCSTR p); + void __fastcall KCClick(TObject *Sender); + +//•œ’²ŠíƒRƒ“ƒ“ƒ{ƒ{ƒbƒNƒX‚̃Cƒ“ƒvƒŠƒƒ“ƒg + AnsiString m_asFilterTap; + AnsiString m_asVCOGain; + AnsiString m_asIIRBW; + AnsiString m_asBaud; + AnsiString m_asSmooth; + AnsiString m_asLoopFC; + int m_ShowBaud; + void __fastcall SelectCombo(int sw); + +//TNC–Í‹[‹@”\‚̃Cƒ“ƒvƒŠƒƒ“ƒg + void __fastcall OnTncEvent(void); + void __fastcall OpenCloseTNC(void); + void __fastcall UpdateTNCPTT(void); + void __fastcall SetNMMT(void); + void __fastcall TncConvers(void); + BOOL __fastcall RxCommon(BYTE c); + void __fastcall RxTnc241(char c); + void __fastcall RxKAM(char c); + void __fastcall CmdTnc241(LPSTR p); + void __fastcall CmdKAM(LPSTR p); + void __fastcall PutTNC(char c); + void __fastcall UpdateStayOnTop(void); + void __fastcall UpdateMacroShow(int sw); + +//ƒŠƒ‚[ƒg‹@”\‚̃Cƒ“ƒvƒŠƒƒ“ƒg + int m_cRemoteTimeout; + AnsiString m_strCommonMemory; + + HANDLE hMap; + COMARRAY *pMap; + int m_RemoteHeight; + int m_RemoteBaud; + int m_RemoteSwitch; + int m_RemoteView; + int m_RemoteIIR; + int m_RemoteLPF; + int m_RemoteMark; + int m_RemoteSpace; + int m_RemoteNotch; + int m_RemoteDefShift; + + void __fastcall RemoteFreq(void); + void __fastcall InitRemoteStat(void); + DWORD __fastcall GetRemoteSwitch(void); + DWORD __fastcall GetRemoteView(void); + void __fastcall RemoteStat(void); + void __fastcall RemoteSwitch(DWORD d); + void __fastcall RemoteView(DWORD d); + void __fastcall RemoteSigLevel(DWORD d); + void __fastcall RemoteMMTTY(tagMSG &Msg); + void __fastcall SetRemoteFFT(void); +//Radio command‹@”\‚̃Cƒ“ƒvƒŠƒƒ“ƒg + void __fastcall OpenCloseRadio(void); + +// void __fastcall TopWindow(void); + + CTextFifo m_cmdTNC; + AnsiString m_TNCStg; // ‘—M•Û—¯ƒf[ƒ^ +#define CM_CTNC (WM_USER+400) // Hook on WndProc + void __fastcall OnTncEvent(TMessage &Message); + +#define CM_CRADIO (WM_USER+401) +#define CM_CMML (WM_USER+402) +#define CM_CMMR (WM_USER+403) +protected: + void __fastcall CMWheel(TMessage Message); + void __fastcall CMMML(TMessage Message); + void __fastcall CMMMR(TMessage Message); + +BEGIN_MESSAGE_MAP + MESSAGE_HANDLER(WM_MOUSEWHEEL, TMessage, CMWheel) + MESSAGE_HANDLER(CM_CMML, TMessage, CMMML) + MESSAGE_HANDLER(CM_CMMR, TMessage, CMMMR) +END_MESSAGE_MAP(TForm) +}; +//--------------------------------------------------------------------------- +extern TMmttyWd *MmttyWd; +//--------------------------------------------------------------------------- +#endif + diff --git a/MmcgDlg.cpp b/MmcgDlg.cpp new file mode 100644 index 0000000..8790d44 --- /dev/null +++ b/MmcgDlg.cpp @@ -0,0 +1,243 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "MmcgDlg.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TMmcgDlgBox *MmcgDlgBox; +//--------------------------------------------------------------------- +__fastcall TMmcgDlgBox::TMmcgDlgBox(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + + if( Font->Charset != SHIFTJIS_CHARSET ){ + SBInc->Caption = "String"; + SBMask->Caption = "Area"; + CancelBtn->Caption = "Cancel"; + } + + m_DisEvent = 0; +} +//--------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::UpdateCaption(void) +{ + char bf[256]; + + if( Font->Charset != SHIFTJIS_CHARSET ){ + if( mmcg.m_Call[0] ){ + sprintf(bf, "MMCG [%s] Find: %d", mmcg.m_Call, mmcg.m_FindCnt); + } + else { + sprintf(bf, "MMCG Find: %d", mmcg.m_FindCnt); + } + } + else { + if( mmcg.m_Call[0] ){ + sprintf(bf, "MMCG [%s] Œó•â : %d", mmcg.m_Call, mmcg.m_FindCnt); + } + else { + sprintf(bf, "MMCG Œó•â: %d", mmcg.m_FindCnt); + } + } + Caption = bf; +} + +//--------------------------------------------------------------------- +int __fastcall TMmcgDlgBox::Execute(AnsiString &call, AnsiString &qth, AnsiString &op) +{ + StrCopy(mmcg.m_Call, call.c_str(), MLCALL); + mmcg.SetMask(); + SBMask->Down = TRUE; + if( mmcg.m_mask == -1 ) SBMask->Enabled = FALSE; + + char bf[256]; + + bf[0] = 0; + if( isdigit(*op.c_str()) ){ + strcpy(bf, op.c_str()); + } + else if( !qth.IsEmpty() ){ + strcpy(bf, qth.c_str()); + } + m_DisEvent++; + EditYomi->Text = bf; + mmcg.Find(bf); + UpdateCaption(); + m_DisEvent--; + Grid->RowCount = mmcg.m_FindCnt ? mmcg.m_FindCnt + 1 : 2; + if( ShowModal() == IDOK ){ + int n = Grid->Row - 1; + if( (n >= 0)&&(n < mmcg.m_FindCnt) ){ + qth = mmcg.GetQTH(mmcg.m_fp[n]); + op = mmcg.m_fp[n]->Code; + return TRUE; + } + } + return FALSE; +} +//--------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::GridDrawCell(TObject *Sender, int Col, int Row, + TRect &Rect, TGridDrawState State) +{ + char bf[256]; + MMCG *mp; + + Grid->Canvas->FillRect(Rect); + int X = Rect.Left + 4; + int Y = Rect.Top + 2; + + if( Row ){ + Row--; + bf[0] = 0; + if( Row < mmcg.m_FindCnt ){ + mp = mmcg.m_fp[Row]; + } + else { + mp = NULL; + } + switch(Col){ + case 0: // Code + if( mp != NULL ) strcpy(bf, mp->Code); + break; + case 1: // QTH + if( mp != NULL ) strcpy(bf, mmcg.GetQTH(mp)); + break; + case 2: // Key + if( mp != NULL ) strcpy(bf, mp->Key); + break; + } + Grid->Canvas->TextOut(X, Y, bf); + } + else { // ƒ^ƒCƒgƒ‹ + LPCSTR _tt[]={ + "Code","QTH","Key", + }; + Grid->Canvas->TextOut(X, Y, _tt[Col]); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::EditYomiChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + char bf[256]; + + strcpy(bf, AnsiString(EditYomi->Text).c_str()); + mmcg.Find(bf); + UpdateCaption(); + Grid->RowCount = mmcg.m_FindCnt ? mmcg.m_FindCnt + 1 : 2; + Grid->Invalidate(); +} +//--------------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::EditYomiKeyPress(TObject *Sender, char &Key) +{ + if( Key == 0x20 ){ + EditYomi->Text = ""; + Key = 0; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::EditYomiKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + switch(Key){ + case VK_UP: + if( Grid->Row >= 2 ) Grid->Row--; + Key = 0; + break; + case VK_DOWN: + if( Grid->Row < Grid->RowCount - 1 ) Grid->Row++; + Key = 0; + break; + case VK_HOME: + Grid->Row = 1; + Key = 0; + break; + case VK_END: + Grid->Row = Grid->RowCount - 1; + Key = 0; + break; + case VK_F1: + SBInc->Down = SBInc->Down ? 0 : 1; + SBIncClick(NULL); + Key = 0; + break; + case VK_F2: + SBMask->Down = SBMask->Down ? 0 : 1; + SBMaskClick(NULL); + Key = 0; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::EditYomiKeyUp(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + switch(Key){ + case VK_UP: + Key = 0; + break; + case VK_DOWN: + Key = 0; + break; + case VK_HOME: + Key = 0; + break; + case VK_END: + Key = 0; + break; + case VK_F1: + Key = 0; + break; + case VK_F2: + Key = 0; + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::SBMaskClick(TObject *Sender) +{ + if( SBMask->Down ){ + mmcg.SetMask(); + } + else { + mmcg.m_mask = -1; + } + EditYomiChange(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TMmcgDlgBox::SBIncClick(TObject *Sender) +{ + if( SBInc->Down ){ + mmcg.m_sinc = 1; + } + else { + mmcg.m_sinc = 0; + } + EditYomiChange(NULL); +} +//--------------------------------------------------------------------------- diff --git a/MmcgDlg.dfm b/MmcgDlg.dfm new file mode 100644 index 0000000000000000000000000000000000000000..ef39597986c62095ad22166fab0b9b3c7b7fb088 GIT binary patch literal 1323 zcma)*zi-?&6vrv*?x-IZ+whQ}L($ud7D~FLLyP)!KHt?oOR(hpm{MAzb%J@MK=E)+ zhoWQug$`Xhb?Z`~OSk+R`3r(99g2=BMV@L0Nq{T_zkK9-pZEA)*%@@rG1kE48pTUdZ z_rQ43+&Tqovr*(QK?DxPG55EiNoi11=jGMQvpWjm<&DQ9G$Rqou0 z%WFdGn20&cmhd~TMcTsbf?=9egyiG3l&UPrc!BFHQ^`xKt)%_6)z<}q)4}%9$Gw?~ zHSm)q7cyMS(e#0LKq=p-<-BseBf;0zoaN*iT3x~SZI$Y8!K>icU?;{xF{{^`){o z(=#r(xanaCW7T!A&Bz7qN-Jn~+e7hHV<1aut#8 z=h}ja{V%XztIB|WdYG5eX_u#bRqFCWq^tYQ_W$gCs~doOXucxt01x&SWhQvdFXd>y zI2?WX@CE@ms+*UX6$I^cevNh`c1)g6_=cg~&aypF*lHIGQrBqjmd%`K<9UVd+_Ick G3jaS4tDnvQ literal 0 HcmV?d00001 diff --git a/MmcgDlg.h b/MmcgDlg.h new file mode 100644 index 0000000..d9e197f --- /dev/null +++ b/MmcgDlg.h @@ -0,0 +1,78 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef MmcgDlgH +#define MmcgDlgH +//---------------------------------------------------------------------------- +/* JA7UDE 0428 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +//---------------------------------------------------------------------------- +#include "Mmcg.h" +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TMmcgDlgBox : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TStringGrid *Grid; + TEdit *EditYomi; + TSpeedButton *SBMask; + TSpeedButton *SBInc; + void __fastcall GridDrawCell(TObject *Sender, int Col, int Row, TRect &Rect, + TGridDrawState State); + void __fastcall EditYomiChange(TObject *Sender); + + + + + void __fastcall EditYomiKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall EditYomiKeyUp(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall SBMaskClick(TObject *Sender); + void __fastcall SBIncClick(TObject *Sender); + void __fastcall EditYomiKeyPress(TObject *Sender, char &Key); +private: + int m_DisEvent; + + void __fastcall UpdateCaption(void); +public: + virtual __fastcall TMmcgDlgBox(TComponent* AOwner); + + int __fastcall Execute(AnsiString &call, AnsiString &qth, AnsiString &op); +}; +//---------------------------------------------------------------------------- +//extern TMmcgDlgBox *MmcgDlgBox; +//---------------------------------------------------------------------------- +#endif diff --git a/Mmtty English.ini b/Mmtty English.ini new file mode 100644 index 0000000..e695946 --- /dev/null +++ b/Mmtty English.ini @@ -0,0 +1,802 @@ +[SoundCard] +SampFreq=1.102500e+04 +TxOffset=0.000000e+00 + +[ComboList] +Mark=2125,2000,1700,1445,1275,1170,1000,915 +Shift=23,85,160,170,182,200,240,350,425,850 +Baud=22,45,45.45,50,56,75,100,110,150,200,300 +RST=599,579,569,559,449,339,448,337,225,111 +IIRBW=15,20,25,30,35,40,45,50,60,70,80,90,100,150,200 +VCO=1.0,1.2,1.5,2.0,2.5,3.0,3.25,3.5,3.75,4.0,4.5,5.0,8.0 +LoopFC=30,40,50,80,100,150,200,250,300,350,400,450,500,600,800,1000 + +[Grid] +Log= +QSO= + +[Help] +HTML= +MMTTY=Mmtty.txt +MMTTYLOG=Mmttylog.txt +DIGITAL=Digital.txt +FontName=Arial +FontCharset=0 +FontSize=10 +UseNotePad=0 + +[Window] +WindowState=0 +ShowMacro=1 +MemoryWindow=0 +Disable=0 +StayOnTop=0 + +[WindowFont] +Name=Arial +Charset=0 +Style=0 +Adjust=0 + +[ButtonFont] +Name=Arial +Charset=0 +Style=0 +Adjust=0 + +[Font] +Name=Arial +Size=10 +AdjX=0 +AdjY=0 +Charset=0 +Zero=1 +Style=0 + +[Define] +ControlPanel=1 +FFT=1 +FFTFW=0 +FFTGain=1 +FFTResp=2 +UOS=1 +CodeSet=0 +XYScope=0 +XYScopeSize=0 +XYScopeReverse=0 +XYQuality=0 +PanelSize=2 +AFC=0 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +AutoCR=1 +WardWarp=1 +SendWay=0 +Running=0 +PttTimer=60 +TxNet=0 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +LimitAGC=1 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQ=1 +SQLevel=6.000000e+02 +DefFix45=1 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +Rev=0 +SpaceFreq=2.295000e+03 +MarkFreq=2.125000e+03 +VERFFTDEM=1 +DEMTYPE=1 +BaudRate=4.545000e+01 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.500000e+01 +Smooz=3.000000e+02 +FFTTones=4 +SoundRxFifo=12 +SoundTxFifo=4 +SoundPriority=1 +SoundDevice=2 +SoundOutDevice=5 +SoundStereo=0 +SoundMMW= +Tap=512 +IIRBW=60 +Diddle=2 +TxPort=0 +TxdJob=0 +TxFixShift=0 +PTT=NONE +InvPTT=0 +TXUOS=1 +MacroImm=0 +CharLenFile=1024 +DisTX=0 +TXLoop=1 +TXBPF=1 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +RXBPF=0 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlms=0 +RXlmsDelay=24 +RXlmsMU2=1.000000e-03 +RXlmsGM=9.998000e-01 +RXlmsInv=0 +RXlmsAGC=1 +RXlmsTAP=512 +RXNotchTAP=192 +RXlmsBPF=0 +RXlmsType=1 +RXlmsNotch=2210 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Call=JA7UDE + +[Button] +Hint=1 + +[Log] +Switch=0 +TimeStamp=1 +TimeStampUTC=0 +AutoUTCOffset=0 +UTCOffset=0 +UTCOffsetMin=0 +LogLink=1 +LinkPoll=0 +LinkPTT=0 +PathName= +ShowTimeStamp=1 + +[MMLink] +Name= + +[Dir] +OutFile= +ExtLog= +RecSound= + +[LogFile] +Name= + +[WaterFall] +Palette=0 + +[Input] +Height=97 + +[Color] +RXBack=16777215 +RXChar=0 +RXTXChar=0 +INBack=16777215 +INChar=0 +INTXChar=255 +WaterLow=0 +WaterHigh=16777215 +XYScope=16777215 + +[SysKey] +S1=0 +S2=0 +S3=0 +S4=0 +S5=0 +S6=0 +S7=0 +S8=0 +S9=321 +S10=0 +S11=335 +S12=332 +S13=324 +S14=0 +S15=0 +S16=579 +S17=0 +S18=0 +S19=0 +S20=0 +S21=0 +S22=0 +S23=0 +S24=0 +S25=120 +S26=119 +S27=0 +S28=323 +S29=334 +S30=337 +S31=338 +S32=326 +S33=112 +S34=0 +S35=0 +S36=0 +S37=0 +S38=36 +S39=35 +S40=0 +S41=0 +S42=33 +S43=34 +S44=0 +S45=0 +S46=0 +S47=0 +S48=0 +S49=0 +S50=294 +S51=296 +S52=0 +S53=0 +S54=588 +S55=0 +S56=549 +S57=551 +S58=596 +S59=0 +S60=322 +S61=0 +S62=0 +S63=0 +S64=0 +S65=0 +S66=0 +S67=0 +S68=0 +S69=0 +S70=0 +S71=0 +S72=0 +S73=0 +S74=0 +S75=0 +S76=0 +S77=0 +S78=0 +S79=0 +S80=582 + +[InBtnCol] +M1=0 +M2=0 +M3=0 +M4=0 + +[InBtnKey] +M1=113 +M2=114 +M3=115 +M4=116 + +[InBtnName] +M1=1X1 +M2=DEAR +M3=ANS +M4=BTU + +[InBtn] +M1="%c DE %m" +M2="DEAR %n" +M3="__\r\nRGR %c DE %m ALL OK DEAR %n\r\n" +M4="BTU %c DE %m KN\r\n_\\" + +[MacroTimer] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroCol] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroKey] +M1=305 +M2=306 +M3=307 +M4=308 +M5=309 +M6=310 +M7=311 +M8=312 +M9=313 +M10=121 +M11=122 +M12=123 +M13=0 +M14=0 +M15=118 +M16=117 + +[MacroEditKey] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroName] +M1=1X2 +M2=2X3 +M3=DE3 +M4=UR599 +M5=QANS +M6=M6 +M7=M7 +M8=M8 +M9=SK +M10=EE +M11=M11 +M12=M12 +M13=RY +M14=M14 +M15=CQ2 +M16=CQ1 + +[Macro] +M1="__\r\n%c DE %m %m K\r\n_\\" +M2="__\r\n%c %c DE %m %m %m K\r\n_\\" +M3="__\r\nDE %m %m %m K\r\n_\\" +M4="__\r\nQSL UR 599-599 TU\r\n_\\" +M5="__\r\nOK TNX %n\r\nUR %r %r NAME MAKO %c DE %m TU SK\r\n_\\" +M6="" +M7="" +M8="" +M9="\\\r\n73 TU SK SK\r\n%{TU}\\" +M10="[__~~__~\\" +M11="" +M12="" +M13="\r\nRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY#" +M14="" +M15="__\r\nRYRY CQ CQ CQ DE %m %m %m\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\" +M16="__\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\" + +[MsgKey] +M1=368 +M2=369 +M3=370 +M4=371 +M5=372 +M6=373 +M7=374 +M8=375 +M9=376 +M10=0 + +[MsgName] +M1=AF CALL1 +M2=FINAL3 +M3=FINAL2 +M4=FINAL +M5=AF CQ2 (GEAR) +M6=AF CQ1 +M7=AF CALL2 (GEAR) +M8=AF CALL1 (QUICK) +M9=FINAL (QUICK) +M10= + +[MsgList] +M1="\\__\r\nRGR %c DE %m %g DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c DE %m KN\r\n_\\" +M2="\\__\\" +M3="\\__\r\nTNX AGAIN DEAR %n CU SK\r\n__\\" +M4="\\__\r\nOK DEAR %n\r\nMANY THANK YOU FOR THE NICE QSO.\r\nI AM LOOKING FORWARD TO SEE YOU AGAIN ON CW AND PSK31.\r\nCUL! AND BEST 73\r\n%c DE %m TU SK SK..\r\n__" +M5="\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\" +M6="\\__\r\n%c %c DE %m %g\r\nTHANK YOU FOR YOUR CALL. I AM GLAD TO SEE YOU ON RTTY.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c %c DE %m KN\r\n_\\" +M7="\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE INFO.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\" +M8="\\__\r\nRGR TNX %n\r\nUR %r %r %r NAME IS MAKO MAKO MAKO\r\nHOW? BTU %c DE %m KN\r\n_\\" +M9="\\__\r\nOK DEAR %n\r\nTNX FB QSO, CUL BEST 73 %c DE %m TU SK..\r\n__\\" +M10= + +[ExtConv] +WDEF1=%YYYY-MM-DD +WLEN1=0 +WDEF2=%HHMM +WLEN2=0 +WDEF3=%EHHMM +WLEN3=0 +WDEF4=%CALL +WLEN4=0 +WDEF5=%HIS +WLEN5=0 +WDEF6=%MY +WLEN6=0 +WDEF7=%FREQ +WLEN7=0 +WDEF8=%MODE +WLEN8=0 +WDEF9=%POWER +WLEN9=0 +WDEF10=%NAME +WLEN10=0 +WDEF11=%QTH +WLEN11=0 +WDEF12=%REM +WLEN12=0 +WDEF13=%QSL +WLEN13=0 +WDEF14=%S +WLEN14=0 +WDEF15=%R +WLEN15=0 +WDEF16=%EOD +WLEN16=0 +WDEF17= +WLEN17=0 +WDEF18= +WLEN18=0 +WDEF19= +WLEN19=0 +WDEF20= +WLEN20=0 +WDEF21= +WLEN21=0 +WDEF22= +WLEN22=0 +WDEF23= +WLEN23=0 +WDEF24= +WLEN24=0 +WDEF25= +WLEN25=0 +WDEF26= +WLEN26=0 +WDEF27= +WLEN27=0 +WDEF28= +WLEN28=0 +WDEF29= +WLEN29=0 +WDEF30= +WLEN30=0 +WDEF31= +WLEN31=0 +WDEF32= +WLEN32=0 +WDEF33= +WLEN33=0 +WDEF34= +WLEN34=0 +WDEF35= +WLEN35=0 +WDEF36= +WLEN36=0 +WDEF37= +WLEN37=0 +WDEF38= +WLEN38=0 +WDEF39= +WLEN39=0 +WDEF40= +WLEN40=0 +WDEF41= +WLEN41=0 +WDEF42= +WLEN42=0 +WDEF43= +WLEN43=0 +WDEF44= +WLEN44=0 +WDEF45= +WLEN45=0 +WDEF46= +WLEN46=0 +WDEF47= +WLEN47=0 +WDEF48= +WLEN48=0 +WDEF49= +WLEN49=0 +WDEF50= +WLEN50=0 +WDEF51= +WLEN51=0 +WDEF52= +WLEN52=0 +WDEF53= +WLEN53=0 +WDEF54= +WLEN54=0 +WDEF55= +WLEN55=0 +WDEF56= +WLEN56=0 +WDEF57= +WLEN57=0 +WDEF58= +WLEN58=0 +WDEF59= +WLEN59=0 +WDEF60= +WLEN60=0 +WDEF61= +WLEN61=0 +WDEF62= +WLEN62=0 +WDEF63= +WLEN63=0 +WDEF64= +WLEN64=0 +RDEF1=%YYYY-MM-DD +RLEN1=0 +RDEF2=%HHMM +RLEN2=0 +RDEF3=%EHHMM +RLEN3=0 +RDEF4=%CALL +RLEN4=0 +RDEF5=%HIS +RLEN5=0 +RDEF6=%MY +RLEN6=0 +RDEF7=%FREQ +RLEN7=0 +RDEF8=%MODE +RLEN8=0 +RDEF9=%POWER +RLEN9=0 +RDEF10=%NAME +RLEN10=0 +RDEF11=%QTH +RLEN11=0 +RDEF12=%REM +RLEN12=0 +RDEF13=%QSL +RLEN13=0 +RDEF14=%S +RLEN14=0 +RDEF15=%R +RLEN15=0 +RDEF16=%EOD +RLEN16=0 +RDEF17= +RLEN17=0 +RDEF18= +RLEN18=0 +RDEF19= +RLEN19=0 +RDEF20= +RLEN20=0 +RDEF21= +RLEN21=0 +RDEF22= +RLEN22=0 +RDEF23= +RLEN23=0 +RDEF24= +RLEN24=0 +RDEF25= +RLEN25=0 +RDEF26= +RLEN26=0 +RDEF27= +RLEN27=0 +RDEF28= +RLEN28=0 +RDEF29= +RLEN29=0 +RDEF30= +RLEN30=0 +RDEF31= +RLEN31=0 +RDEF32= +RLEN32=0 +RDEF33= +RLEN33=0 +RDEF34= +RLEN34=0 +RDEF35= +RLEN35=0 +RDEF36= +RLEN36=0 +RDEF37= +RLEN37=0 +RDEF38= +RLEN38=0 +RDEF39= +RLEN39=0 +RDEF40= +RLEN40=0 +RDEF41= +RLEN41=0 +RDEF42= +RLEN42=0 +RDEF43= +RLEN43=0 +RDEF44= +RLEN44=0 +RDEF45= +RLEN45=0 +RDEF46= +RLEN46=0 +RDEF47= +RLEN47=0 +RDEF48= +RLEN48=0 +RDEF49= +RLEN49=0 +RDEF50= +RLEN50=0 +RDEF51= +RLEN51=0 +RDEF52= +RLEN52=0 +RDEF53= +RLEN53=0 +RDEF54= +RLEN54=0 +RDEF55= +RLEN55=0 +RDEF56= +RLEN56=0 +RDEF57= +RLEN57=0 +RDEF58= +RLEN58=0 +RDEF59= +RLEN59=0 +RDEF60= +RLEN60=0 +RDEF61= +RLEN61=0 +RDEF62= +RLEN62=0 +RDEF63= +RLEN63=0 +RDEF64= +RLEN64=0 + +[LogSet] +TimeZone=73 +DateType=0 +UpperName=0 +UpperQTH=0 +UpperREM=0 +UpperQSL=0 +DefMyRST=0 +Contest=0 +CopyFreq=0 +CopyHis=0 +CopyName=1 +CopyQTH=1 +CopyREM=0 +CopyQSL=1 +CopyREMB4=0 +CheckBand=1 +AutoSave=1 +QSOMacroFlag=0 +QSOMacro1=1 +QSOMacroKey1=0 +QSOMacroStr1="\r\n %c %c UR %R-%N-%N BK\r\n\\" +QSOMacro2=1 +QSOMacroKey2=0 +QSOMacroStr2="\r\nQSL TU QRZ? DE %m %m K\r\n\\" +QSOMacro3=1 +QSOMacroKey3=0 +QSOMacroStr3="\r\n %c SRI QSO B4 QRZ? DE %m %m K\r\n\\" +QSOMacro4=0 +QSOMacroKey4=0 +QSOMacroStr4="\r\nDE %m %m K\r\n\\" +QSOMacro5=0 +QSOMacroKey5=0 +QSOMacroStr5="\r\n %c %R-%N-%N TU\r\n\\" +THRTTY=RTY +THSSTV=STV +THTZ=0 +ClipRSTADIF=1 +Backup=1 +TH5Fields=3,3,7,4,12,28,54 + +[Program] +Name1=&G3PLX PSK31SBW +Command1= +Name2=&IZ8BLY Hellschreiber +Command2= +Name3=&External 3 +Command3= +Name4=E&xternal 4 +Command4= + +[TNC] +PortName=NONE +Type=0 +BaudRate=1200 +BitLen=1 +Stop=0 +Parity=0 +flwXON=1 +flwCTS=0 +Echo=2 + +[RADIO] +PortName=NONE +BaudRate=4800 +BitLen=1 +Stop=1 +Parity=0 +flwXON=0 +flwCTS=0 +usePTT=0 +ByteWait=0 +Cmdxx=0 +CmdInit= +CmdRx=\$000000000F +CmdTx=\$000000010F\w10 +FileGNR= +OpenGNR=0 +PollType=0 +PollInterval=5 +PollOffset=0 + +[AA6YQ] +Version=2 +Enabled=1 +TapsBPF=512 +WidthBPF=3.500000e+01 +TapsBEF=256 +WidthBEF=1.500000e+01 +afcERR=5.000000e+00 + diff --git a/Mmtty Japanese.ini b/Mmtty Japanese.ini new file mode 100644 index 0000000..2fe58fa --- /dev/null +++ b/Mmtty Japanese.ini @@ -0,0 +1,802 @@ +[SoundCard] +SampFreq=1.102500e+04 +TxOffset=0.000000e+00 + +[ComboList] +Mark=2125,2000,1700,1445,1275,1170,1000,915 +Shift=23,85,160,170,182,200,240,350,425,850 +Baud=22,45,45.45,50,56,75,100,110,150,200,300 +RST=599,579,569,559,449,339,448,337,225,111 +IIRBW=15,20,25,30,35,40,45,50,60,70,80,90,100,150,200 +VCO=1.0,1.2,1.5,2.0,2.5,3.0,3.25,3.5,3.75,4.0,4.5,5.0,8.0 +LoopFC=30,40,50,80,100,150,200,250,300,350,400,450,500,600,800,1000 + +[Grid] +Log= +QSO= + +[Help] +HTML= +MMTTY=Mmtty.txt +MMTTYLOG=Mmttylog.txt +DIGITAL=Digital.txt +FontName=‚l‚r ƒSƒVƒbƒN +FontCharset=128 +FontSize=10 +UseNotePad=0 + +[Window] +WindowState=0 +ShowMacro=1 +MemoryWindow=0 +Disable=0 +StayOnTop=0 + +[WindowFont] +Name=‚l‚r ‚oƒSƒVƒbƒN +Charset=128 +Style=0 +Adjust=0 + +[ButtonFont] +Name=‚l‚r ƒSƒVƒbƒN +Charset=128 +Style=0 +Adjust=0 + +[Font] +Name=‚l‚r ƒSƒVƒbƒN +Size=10 +AdjX=0 +AdjY=0 +Charset=128 +Zero=1 +Style=0 + +[Define] +ControlPanel=1 +FFT=1 +FFTFW=0 +FFTGain=1 +FFTResp=2 +UOS=1 +CodeSet=0 +XYScope=0 +XYScopeSize=0 +XYScopeReverse=0 +XYQuality=0 +PanelSize=2 +AFC=0 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +AutoCR=1 +WardWarp=1 +SendWay=0 +Running=0 +PttTimer=60 +TxNet=0 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +LimitAGC=1 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQ=1 +SQLevel=6.000000e+02 +DefFix45=1 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +Rev=0 +SpaceFreq=2.295000e+03 +MarkFreq=2.125000e+03 +VERFFTDEM=1 +DEMTYPE=1 +BaudRate=4.545000e+01 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.500000e+01 +Smooz=3.000000e+02 +FFTTones=4 +SoundRxFifo=12 +SoundTxFifo=4 +SoundPriority=1 +SoundDevice=2 +SoundOutDevice=5 +SoundStereo=0 +SoundMMW= +Tap=512 +IIRBW=60 +Diddle=2 +TxPort=0 +TxdJob=0 +TxFixShift=0 +PTT=NONE +InvPTT=0 +TXUOS=1 +MacroImm=0 +CharLenFile=1024 +DisTX=0 +TXLoop=1 +TXBPF=1 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +RXBPF=0 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlms=0 +RXlmsDelay=24 +RXlmsMU2=1.000000e-03 +RXlmsGM=9.998000e-01 +RXlmsInv=0 +RXlmsAGC=1 +RXlmsTAP=512 +RXNotchTAP=192 +RXlmsBPF=0 +RXlmsType=1 +RXlmsNotch=2210 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Call=JA7UDE + +[Button] +Hint=1 + +[Log] +Switch=0 +TimeStamp=1 +TimeStampUTC=0 +AutoUTCOffset=0 +UTCOffset=0 +UTCOffsetMin=0 +LogLink=1 +LinkPoll=0 +LinkPTT=0 +PathName=D:\MyProjects\amprog\MMTTY_XE4\.\ +ShowTimeStamp=1 + +[MMLink] +Name= + +[Dir] +OutFile=D:\MyProjects\amprog\MMTTY_XE4\.\ +ExtLog=D:\MyProjects\amprog\MMTTY_XE4\.\ +RecSound=D:\MyProjects\amprog\MMTTY_XE4\.\ + +[LogFile] +Name=D:\MyProjects\amprog\MMTTY_XE4\.MDT + +[WaterFall] +Palette=0 + +[Input] +Height=97 + +[Color] +RXBack=16777215 +RXChar=0 +RXTXChar=0 +INBack=16777215 +INChar=0 +INTXChar=255 +WaterLow=0 +WaterHigh=16777215 +XYScope=16777215 + +[SysKey] +S1=0 +S2=0 +S3=0 +S4=0 +S5=0 +S6=0 +S7=0 +S8=0 +S9=321 +S10=0 +S11=335 +S12=332 +S13=324 +S14=0 +S15=0 +S16=579 +S17=0 +S18=0 +S19=0 +S20=0 +S21=0 +S22=0 +S23=0 +S24=0 +S25=120 +S26=119 +S27=0 +S28=323 +S29=334 +S30=337 +S31=338 +S32=326 +S33=112 +S34=0 +S35=0 +S36=0 +S37=0 +S38=36 +S39=35 +S40=0 +S41=0 +S42=33 +S43=34 +S44=0 +S45=0 +S46=0 +S47=0 +S48=0 +S49=0 +S50=294 +S51=296 +S52=0 +S53=0 +S54=588 +S55=0 +S56=549 +S57=551 +S58=596 +S59=0 +S60=322 +S61=0 +S62=0 +S63=0 +S64=0 +S65=0 +S66=0 +S67=0 +S68=0 +S69=0 +S70=0 +S71=0 +S72=0 +S73=0 +S74=0 +S75=0 +S76=0 +S77=0 +S78=0 +S79=0 +S80=582 + +[InBtnCol] +M1=0 +M2=0 +M3=0 +M4=0 + +[InBtnKey] +M1=113 +M2=114 +M3=115 +M4=116 + +[InBtnName] +M1=1X1 +M2=DEAR +M3=ANS +M4=BTU + +[InBtn] +M1="%c DE %m" +M2="DEAR %n" +M3="__\r\nRGR %c DE %m ALL OK DEAR %n\r\n" +M4="BTU %c DE %m KN\r\n_\\" + +[MacroTimer] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroCol] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroKey] +M1=305 +M2=306 +M3=307 +M4=308 +M5=309 +M6=310 +M7=311 +M8=312 +M9=313 +M10=121 +M11=122 +M12=123 +M13=0 +M14=0 +M15=118 +M16=117 + +[MacroEditKey] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroName] +M1=1X2 +M2=2X3 +M3=DE3 +M4=UR599 +M5=QANS +M6=M6 +M7=M7 +M8=M8 +M9=SK +M10=EE +M11=M11 +M12=M12 +M13=RY +M14=M14 +M15=CQ2 +M16=CQ1 + +[Macro] +M1="__\r\n%c DE %m %m K\r\n_\\" +M2="__\r\n%c %c DE %m %m %m K\r\n_\\" +M3="__\r\nDE %m %m %m K\r\n_\\" +M4="__\r\nQSL UR 599-599 TU\r\n_\\" +M5="__\r\nOK TNX %n\r\nUR %r %r NAME MAKO %c DE %m TU SK\r\n_\\" +M6="" +M7="" +M8="" +M9="\\\r\n73 TU SK SK\r\n%{TU}\\" +M10="[__~~__~\\" +M11="" +M12="" +M13="\r\nRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY#" +M14="" +M15="__\r\nRYRY CQ CQ CQ DE %m %m %m\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\" +M16="__\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\" + +[MsgKey] +M1=368 +M2=369 +M3=370 +M4=371 +M5=372 +M6=373 +M7=374 +M8=375 +M9=376 +M10=0 + +[MsgName] +M1=AF CALL1 +M2=FINAL3 +M3=FINAL2 +M4=FINAL +M5=AF CQ2 (GEAR) +M6=AF CQ1 +M7=AF CALL2 (GEAR) +M8=AF CALL1 (QUICK) +M9=FINAL (QUICK) +M10= + +[MsgList] +M1="\\__\r\nRGR %c DE %m %g DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c DE %m KN\r\n_\\" +M2="\\__\\" +M3="\\__\r\nTNX AGAIN DEAR %n CU SK\r\n__\\" +M4="\\__\r\nOK DEAR %n\r\nMANY THANK YOU FOR THE NICE QSO.\r\nI AM LOOKING FORWARD TO SEE YOU AGAIN ON CW AND PSK31.\r\nCUL! AND BEST 73\r\n%c DE %m TU SK SK..\r\n__" +M5="\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\" +M6="\\__\r\n%c %c DE %m %g\r\nTHANK YOU FOR YOUR CALL. I AM GLAD TO SEE YOU ON RTTY.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c %c DE %m KN\r\n_\\" +M7="\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE INFO.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\" +M8="\\__\r\nRGR TNX %n\r\nUR %r %r %r NAME IS MAKO MAKO MAKO\r\nHOW? BTU %c DE %m KN\r\n_\\" +M9="\\__\r\nOK DEAR %n\r\nTNX FB QSO, CUL BEST 73 %c DE %m TU SK..\r\n__\\" +M10= + +[ExtConv] +WDEF1=%YYYY-MM-DD +WLEN1=0 +WDEF2=%HHMM +WLEN2=0 +WDEF3=%EHHMM +WLEN3=0 +WDEF4=%CALL +WLEN4=0 +WDEF5=%HIS +WLEN5=0 +WDEF6=%MY +WLEN6=0 +WDEF7=%FREQ +WLEN7=0 +WDEF8=%MODE +WLEN8=0 +WDEF9=%POWER +WLEN9=0 +WDEF10=%NAME +WLEN10=0 +WDEF11=%QTH +WLEN11=0 +WDEF12=%REM +WLEN12=0 +WDEF13=%QSL +WLEN13=0 +WDEF14=%S +WLEN14=0 +WDEF15=%R +WLEN15=0 +WDEF16=%EOD +WLEN16=0 +WDEF17= +WLEN17=0 +WDEF18= +WLEN18=0 +WDEF19= +WLEN19=0 +WDEF20= +WLEN20=0 +WDEF21= +WLEN21=0 +WDEF22= +WLEN22=0 +WDEF23= +WLEN23=0 +WDEF24= +WLEN24=0 +WDEF25= +WLEN25=0 +WDEF26= +WLEN26=0 +WDEF27= +WLEN27=0 +WDEF28= +WLEN28=0 +WDEF29= +WLEN29=0 +WDEF30= +WLEN30=0 +WDEF31= +WLEN31=0 +WDEF32= +WLEN32=0 +WDEF33= +WLEN33=0 +WDEF34= +WLEN34=0 +WDEF35= +WLEN35=0 +WDEF36= +WLEN36=0 +WDEF37= +WLEN37=0 +WDEF38= +WLEN38=0 +WDEF39= +WLEN39=0 +WDEF40= +WLEN40=0 +WDEF41= +WLEN41=0 +WDEF42= +WLEN42=0 +WDEF43= +WLEN43=0 +WDEF44= +WLEN44=0 +WDEF45= +WLEN45=0 +WDEF46= +WLEN46=0 +WDEF47= +WLEN47=0 +WDEF48= +WLEN48=0 +WDEF49= +WLEN49=0 +WDEF50= +WLEN50=0 +WDEF51= +WLEN51=0 +WDEF52= +WLEN52=0 +WDEF53= +WLEN53=0 +WDEF54= +WLEN54=0 +WDEF55= +WLEN55=0 +WDEF56= +WLEN56=0 +WDEF57= +WLEN57=0 +WDEF58= +WLEN58=0 +WDEF59= +WLEN59=0 +WDEF60= +WLEN60=0 +WDEF61= +WLEN61=0 +WDEF62= +WLEN62=0 +WDEF63= +WLEN63=0 +WDEF64= +WLEN64=0 +RDEF1=%YYYY-MM-DD +RLEN1=0 +RDEF2=%HHMM +RLEN2=0 +RDEF3=%EHHMM +RLEN3=0 +RDEF4=%CALL +RLEN4=0 +RDEF5=%HIS +RLEN5=0 +RDEF6=%MY +RLEN6=0 +RDEF7=%FREQ +RLEN7=0 +RDEF8=%MODE +RLEN8=0 +RDEF9=%POWER +RLEN9=0 +RDEF10=%NAME +RLEN10=0 +RDEF11=%QTH +RLEN11=0 +RDEF12=%REM +RLEN12=0 +RDEF13=%QSL +RLEN13=0 +RDEF14=%S +RLEN14=0 +RDEF15=%R +RLEN15=0 +RDEF16=%EOD +RLEN16=0 +RDEF17= +RLEN17=0 +RDEF18= +RLEN18=0 +RDEF19= +RLEN19=0 +RDEF20= +RLEN20=0 +RDEF21= +RLEN21=0 +RDEF22= +RLEN22=0 +RDEF23= +RLEN23=0 +RDEF24= +RLEN24=0 +RDEF25= +RLEN25=0 +RDEF26= +RLEN26=0 +RDEF27= +RLEN27=0 +RDEF28= +RLEN28=0 +RDEF29= +RLEN29=0 +RDEF30= +RLEN30=0 +RDEF31= +RLEN31=0 +RDEF32= +RLEN32=0 +RDEF33= +RLEN33=0 +RDEF34= +RLEN34=0 +RDEF35= +RLEN35=0 +RDEF36= +RLEN36=0 +RDEF37= +RLEN37=0 +RDEF38= +RLEN38=0 +RDEF39= +RLEN39=0 +RDEF40= +RLEN40=0 +RDEF41= +RLEN41=0 +RDEF42= +RLEN42=0 +RDEF43= +RLEN43=0 +RDEF44= +RLEN44=0 +RDEF45= +RLEN45=0 +RDEF46= +RLEN46=0 +RDEF47= +RLEN47=0 +RDEF48= +RLEN48=0 +RDEF49= +RLEN49=0 +RDEF50= +RLEN50=0 +RDEF51= +RLEN51=0 +RDEF52= +RLEN52=0 +RDEF53= +RLEN53=0 +RDEF54= +RLEN54=0 +RDEF55= +RLEN55=0 +RDEF56= +RLEN56=0 +RDEF57= +RLEN57=0 +RDEF58= +RLEN58=0 +RDEF59= +RLEN59=0 +RDEF60= +RLEN60=0 +RDEF61= +RLEN61=0 +RDEF62= +RLEN62=0 +RDEF63= +RLEN63=0 +RDEF64= +RLEN64=0 + +[LogSet] +TimeZone=73 +DateType=0 +UpperName=0 +UpperQTH=0 +UpperREM=0 +UpperQSL=0 +DefMyRST=0 +Contest=0 +CopyFreq=0 +CopyHis=0 +CopyName=1 +CopyQTH=1 +CopyREM=0 +CopyQSL=1 +CopyREMB4=0 +CheckBand=1 +AutoSave=1 +QSOMacroFlag=0 +QSOMacro1=1 +QSOMacroKey1=0 +QSOMacroStr1="\r\n %c %c UR %R-%N-%N BK\r\n\\" +QSOMacro2=1 +QSOMacroKey2=0 +QSOMacroStr2="\r\nQSL TU QRZ? DE %m %m K\r\n\\" +QSOMacro3=1 +QSOMacroKey3=0 +QSOMacroStr3="\r\n %c SRI QSO B4 QRZ? DE %m %m K\r\n\\" +QSOMacro4=0 +QSOMacroKey4=0 +QSOMacroStr4="\r\nDE %m %m K\r\n\\" +QSOMacro5=0 +QSOMacroKey5=0 +QSOMacroStr5="\r\n %c %R-%N-%N TU\r\n\\" +THRTTY=RTY +THSSTV=STV +THTZ=0 +ClipRSTADIF=1 +Backup=1 +TH5Fields=3,3,7,4,12,28,54 + +[Program] +Name1=&G3PLX PSK31SBW +Command1= +Name2=&IZ8BLY Hellschreiber +Command2= +Name3=&External 3 +Command3= +Name4=E&xternal 4 +Command4= + +[TNC] +PortName=NONE +Type=0 +BaudRate=1200 +BitLen=1 +Stop=0 +Parity=0 +flwXON=1 +flwCTS=0 +Echo=2 + +[RADIO] +PortName=NONE +BaudRate=4800 +BitLen=1 +Stop=1 +Parity=0 +flwXON=0 +flwCTS=0 +usePTT=0 +ByteWait=0 +Cmdxx=0 +CmdInit= +CmdRx=\$000000000F +CmdTx=\$000000010F\w10 +FileGNR= +OpenGNR=0 +PollType=0 +PollInterval=5 +PollOffset=0 + +[AA6YQ] +Version=2 +Enabled=1 +TapsBPF=512 +WidthBPF=3.500000e+01 +TapsBEF=256 +WidthBEF=1.500000e+01 +afcERR=5.000000e+00 + diff --git a/Mmtty.ini b/Mmtty.ini new file mode 100644 index 0000000..e695946 --- /dev/null +++ b/Mmtty.ini @@ -0,0 +1,802 @@ +[SoundCard] +SampFreq=1.102500e+04 +TxOffset=0.000000e+00 + +[ComboList] +Mark=2125,2000,1700,1445,1275,1170,1000,915 +Shift=23,85,160,170,182,200,240,350,425,850 +Baud=22,45,45.45,50,56,75,100,110,150,200,300 +RST=599,579,569,559,449,339,448,337,225,111 +IIRBW=15,20,25,30,35,40,45,50,60,70,80,90,100,150,200 +VCO=1.0,1.2,1.5,2.0,2.5,3.0,3.25,3.5,3.75,4.0,4.5,5.0,8.0 +LoopFC=30,40,50,80,100,150,200,250,300,350,400,450,500,600,800,1000 + +[Grid] +Log= +QSO= + +[Help] +HTML= +MMTTY=Mmtty.txt +MMTTYLOG=Mmttylog.txt +DIGITAL=Digital.txt +FontName=Arial +FontCharset=0 +FontSize=10 +UseNotePad=0 + +[Window] +WindowState=0 +ShowMacro=1 +MemoryWindow=0 +Disable=0 +StayOnTop=0 + +[WindowFont] +Name=Arial +Charset=0 +Style=0 +Adjust=0 + +[ButtonFont] +Name=Arial +Charset=0 +Style=0 +Adjust=0 + +[Font] +Name=Arial +Size=10 +AdjX=0 +AdjY=0 +Charset=0 +Zero=1 +Style=0 + +[Define] +ControlPanel=1 +FFT=1 +FFTFW=0 +FFTGain=1 +FFTResp=2 +UOS=1 +CodeSet=0 +XYScope=0 +XYScopeSize=0 +XYScopeReverse=0 +XYQuality=0 +PanelSize=2 +AFC=0 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +AutoCR=1 +WardWarp=1 +SendWay=0 +Running=0 +PttTimer=60 +TxNet=0 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +LimitAGC=1 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQ=1 +SQLevel=6.000000e+02 +DefFix45=1 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +Rev=0 +SpaceFreq=2.295000e+03 +MarkFreq=2.125000e+03 +VERFFTDEM=1 +DEMTYPE=1 +BaudRate=4.545000e+01 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.500000e+01 +Smooz=3.000000e+02 +FFTTones=4 +SoundRxFifo=12 +SoundTxFifo=4 +SoundPriority=1 +SoundDevice=2 +SoundOutDevice=5 +SoundStereo=0 +SoundMMW= +Tap=512 +IIRBW=60 +Diddle=2 +TxPort=0 +TxdJob=0 +TxFixShift=0 +PTT=NONE +InvPTT=0 +TXUOS=1 +MacroImm=0 +CharLenFile=1024 +DisTX=0 +TXLoop=1 +TXBPF=1 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +RXBPF=0 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlms=0 +RXlmsDelay=24 +RXlmsMU2=1.000000e-03 +RXlmsGM=9.998000e-01 +RXlmsInv=0 +RXlmsAGC=1 +RXlmsTAP=512 +RXNotchTAP=192 +RXlmsBPF=0 +RXlmsType=1 +RXlmsNotch=2210 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Call=JA7UDE + +[Button] +Hint=1 + +[Log] +Switch=0 +TimeStamp=1 +TimeStampUTC=0 +AutoUTCOffset=0 +UTCOffset=0 +UTCOffsetMin=0 +LogLink=1 +LinkPoll=0 +LinkPTT=0 +PathName= +ShowTimeStamp=1 + +[MMLink] +Name= + +[Dir] +OutFile= +ExtLog= +RecSound= + +[LogFile] +Name= + +[WaterFall] +Palette=0 + +[Input] +Height=97 + +[Color] +RXBack=16777215 +RXChar=0 +RXTXChar=0 +INBack=16777215 +INChar=0 +INTXChar=255 +WaterLow=0 +WaterHigh=16777215 +XYScope=16777215 + +[SysKey] +S1=0 +S2=0 +S3=0 +S4=0 +S5=0 +S6=0 +S7=0 +S8=0 +S9=321 +S10=0 +S11=335 +S12=332 +S13=324 +S14=0 +S15=0 +S16=579 +S17=0 +S18=0 +S19=0 +S20=0 +S21=0 +S22=0 +S23=0 +S24=0 +S25=120 +S26=119 +S27=0 +S28=323 +S29=334 +S30=337 +S31=338 +S32=326 +S33=112 +S34=0 +S35=0 +S36=0 +S37=0 +S38=36 +S39=35 +S40=0 +S41=0 +S42=33 +S43=34 +S44=0 +S45=0 +S46=0 +S47=0 +S48=0 +S49=0 +S50=294 +S51=296 +S52=0 +S53=0 +S54=588 +S55=0 +S56=549 +S57=551 +S58=596 +S59=0 +S60=322 +S61=0 +S62=0 +S63=0 +S64=0 +S65=0 +S66=0 +S67=0 +S68=0 +S69=0 +S70=0 +S71=0 +S72=0 +S73=0 +S74=0 +S75=0 +S76=0 +S77=0 +S78=0 +S79=0 +S80=582 + +[InBtnCol] +M1=0 +M2=0 +M3=0 +M4=0 + +[InBtnKey] +M1=113 +M2=114 +M3=115 +M4=116 + +[InBtnName] +M1=1X1 +M2=DEAR +M3=ANS +M4=BTU + +[InBtn] +M1="%c DE %m" +M2="DEAR %n" +M3="__\r\nRGR %c DE %m ALL OK DEAR %n\r\n" +M4="BTU %c DE %m KN\r\n_\\" + +[MacroTimer] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroCol] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroKey] +M1=305 +M2=306 +M3=307 +M4=308 +M5=309 +M6=310 +M7=311 +M8=312 +M9=313 +M10=121 +M11=122 +M12=123 +M13=0 +M14=0 +M15=118 +M16=117 + +[MacroEditKey] +M1=0 +M2=0 +M3=0 +M4=0 +M5=0 +M6=0 +M7=0 +M8=0 +M9=0 +M10=0 +M11=0 +M12=0 +M13=0 +M14=0 +M15=0 +M16=0 + +[MacroName] +M1=1X2 +M2=2X3 +M3=DE3 +M4=UR599 +M5=QANS +M6=M6 +M7=M7 +M8=M8 +M9=SK +M10=EE +M11=M11 +M12=M12 +M13=RY +M14=M14 +M15=CQ2 +M16=CQ1 + +[Macro] +M1="__\r\n%c DE %m %m K\r\n_\\" +M2="__\r\n%c %c DE %m %m %m K\r\n_\\" +M3="__\r\nDE %m %m %m K\r\n_\\" +M4="__\r\nQSL UR 599-599 TU\r\n_\\" +M5="__\r\nOK TNX %n\r\nUR %r %r NAME MAKO %c DE %m TU SK\r\n_\\" +M6="" +M7="" +M8="" +M9="\\\r\n73 TU SK SK\r\n%{TU}\\" +M10="[__~~__~\\" +M11="" +M12="" +M13="\r\nRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY#" +M14="" +M15="__\r\nRYRY CQ CQ CQ DE %m %m %m\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\" +M16="__\r\nRYRY CQ CQ CQ DE %m %m %m PSE K\r\n_\\" + +[MsgKey] +M1=368 +M2=369 +M3=370 +M4=371 +M5=372 +M6=373 +M7=374 +M8=375 +M9=376 +M10=0 + +[MsgName] +M1=AF CALL1 +M2=FINAL3 +M3=FINAL2 +M4=FINAL +M5=AF CQ2 (GEAR) +M6=AF CQ1 +M7=AF CALL2 (GEAR) +M8=AF CALL1 (QUICK) +M9=FINAL (QUICK) +M10= + +[MsgList] +M1="\\__\r\nRGR %c DE %m %g DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c DE %m KN\r\n_\\" +M2="\\__\\" +M3="\\__\r\nTNX AGAIN DEAR %n CU SK\r\n__\\" +M4="\\__\r\nOK DEAR %n\r\nMANY THANK YOU FOR THE NICE QSO.\r\nI AM LOOKING FORWARD TO SEE YOU AGAIN ON CW AND PSK31.\r\nCUL! AND BEST 73\r\n%c DE %m TU SK SK..\r\n__" +M5="\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE REPORT.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\" +M6="\\__\r\n%c %c DE %m %g\r\nTHANK YOU FOR YOUR CALL. I AM GLAD TO SEE YOU ON RTTY.\r\nYOU ARE %r %r %r IN OSAKA OSAKA OSAKA\r\nMY NAME IS MAKO MAKO MAKO\r\nHOW COPY? BTU %c %c DE %m KN\r\n_\\" +M7="\\__\r\nRGR %c DE %m ALL OK DEAR %n\r\nTHANK YOU FOR THE NICE INFO.\r\n\r\nI AM RUNNING 50W 50W INTO A SMALL LOOP ANTENNA(ONLY 90CM DIA!)\r\n\r\nRTTY MODEM IS HOMEMADE SOFTWARE ON WINDOWS-95 SOUNDBLASTER.\r\n\r\nTHANK YOU FOR THE NICE QSO DEAR %n\r\nMY QSL IS OK VIA THE BURO.\r\n\r\nHOW? BTU %c DE %m KN\r\n_\\" +M8="\\__\r\nRGR TNX %n\r\nUR %r %r %r NAME IS MAKO MAKO MAKO\r\nHOW? BTU %c DE %m KN\r\n_\\" +M9="\\__\r\nOK DEAR %n\r\nTNX FB QSO, CUL BEST 73 %c DE %m TU SK..\r\n__\\" +M10= + +[ExtConv] +WDEF1=%YYYY-MM-DD +WLEN1=0 +WDEF2=%HHMM +WLEN2=0 +WDEF3=%EHHMM +WLEN3=0 +WDEF4=%CALL +WLEN4=0 +WDEF5=%HIS +WLEN5=0 +WDEF6=%MY +WLEN6=0 +WDEF7=%FREQ +WLEN7=0 +WDEF8=%MODE +WLEN8=0 +WDEF9=%POWER +WLEN9=0 +WDEF10=%NAME +WLEN10=0 +WDEF11=%QTH +WLEN11=0 +WDEF12=%REM +WLEN12=0 +WDEF13=%QSL +WLEN13=0 +WDEF14=%S +WLEN14=0 +WDEF15=%R +WLEN15=0 +WDEF16=%EOD +WLEN16=0 +WDEF17= +WLEN17=0 +WDEF18= +WLEN18=0 +WDEF19= +WLEN19=0 +WDEF20= +WLEN20=0 +WDEF21= +WLEN21=0 +WDEF22= +WLEN22=0 +WDEF23= +WLEN23=0 +WDEF24= +WLEN24=0 +WDEF25= +WLEN25=0 +WDEF26= +WLEN26=0 +WDEF27= +WLEN27=0 +WDEF28= +WLEN28=0 +WDEF29= +WLEN29=0 +WDEF30= +WLEN30=0 +WDEF31= +WLEN31=0 +WDEF32= +WLEN32=0 +WDEF33= +WLEN33=0 +WDEF34= +WLEN34=0 +WDEF35= +WLEN35=0 +WDEF36= +WLEN36=0 +WDEF37= +WLEN37=0 +WDEF38= +WLEN38=0 +WDEF39= +WLEN39=0 +WDEF40= +WLEN40=0 +WDEF41= +WLEN41=0 +WDEF42= +WLEN42=0 +WDEF43= +WLEN43=0 +WDEF44= +WLEN44=0 +WDEF45= +WLEN45=0 +WDEF46= +WLEN46=0 +WDEF47= +WLEN47=0 +WDEF48= +WLEN48=0 +WDEF49= +WLEN49=0 +WDEF50= +WLEN50=0 +WDEF51= +WLEN51=0 +WDEF52= +WLEN52=0 +WDEF53= +WLEN53=0 +WDEF54= +WLEN54=0 +WDEF55= +WLEN55=0 +WDEF56= +WLEN56=0 +WDEF57= +WLEN57=0 +WDEF58= +WLEN58=0 +WDEF59= +WLEN59=0 +WDEF60= +WLEN60=0 +WDEF61= +WLEN61=0 +WDEF62= +WLEN62=0 +WDEF63= +WLEN63=0 +WDEF64= +WLEN64=0 +RDEF1=%YYYY-MM-DD +RLEN1=0 +RDEF2=%HHMM +RLEN2=0 +RDEF3=%EHHMM +RLEN3=0 +RDEF4=%CALL +RLEN4=0 +RDEF5=%HIS +RLEN5=0 +RDEF6=%MY +RLEN6=0 +RDEF7=%FREQ +RLEN7=0 +RDEF8=%MODE +RLEN8=0 +RDEF9=%POWER +RLEN9=0 +RDEF10=%NAME +RLEN10=0 +RDEF11=%QTH +RLEN11=0 +RDEF12=%REM +RLEN12=0 +RDEF13=%QSL +RLEN13=0 +RDEF14=%S +RLEN14=0 +RDEF15=%R +RLEN15=0 +RDEF16=%EOD +RLEN16=0 +RDEF17= +RLEN17=0 +RDEF18= +RLEN18=0 +RDEF19= +RLEN19=0 +RDEF20= +RLEN20=0 +RDEF21= +RLEN21=0 +RDEF22= +RLEN22=0 +RDEF23= +RLEN23=0 +RDEF24= +RLEN24=0 +RDEF25= +RLEN25=0 +RDEF26= +RLEN26=0 +RDEF27= +RLEN27=0 +RDEF28= +RLEN28=0 +RDEF29= +RLEN29=0 +RDEF30= +RLEN30=0 +RDEF31= +RLEN31=0 +RDEF32= +RLEN32=0 +RDEF33= +RLEN33=0 +RDEF34= +RLEN34=0 +RDEF35= +RLEN35=0 +RDEF36= +RLEN36=0 +RDEF37= +RLEN37=0 +RDEF38= +RLEN38=0 +RDEF39= +RLEN39=0 +RDEF40= +RLEN40=0 +RDEF41= +RLEN41=0 +RDEF42= +RLEN42=0 +RDEF43= +RLEN43=0 +RDEF44= +RLEN44=0 +RDEF45= +RLEN45=0 +RDEF46= +RLEN46=0 +RDEF47= +RLEN47=0 +RDEF48= +RLEN48=0 +RDEF49= +RLEN49=0 +RDEF50= +RLEN50=0 +RDEF51= +RLEN51=0 +RDEF52= +RLEN52=0 +RDEF53= +RLEN53=0 +RDEF54= +RLEN54=0 +RDEF55= +RLEN55=0 +RDEF56= +RLEN56=0 +RDEF57= +RLEN57=0 +RDEF58= +RLEN58=0 +RDEF59= +RLEN59=0 +RDEF60= +RLEN60=0 +RDEF61= +RLEN61=0 +RDEF62= +RLEN62=0 +RDEF63= +RLEN63=0 +RDEF64= +RLEN64=0 + +[LogSet] +TimeZone=73 +DateType=0 +UpperName=0 +UpperQTH=0 +UpperREM=0 +UpperQSL=0 +DefMyRST=0 +Contest=0 +CopyFreq=0 +CopyHis=0 +CopyName=1 +CopyQTH=1 +CopyREM=0 +CopyQSL=1 +CopyREMB4=0 +CheckBand=1 +AutoSave=1 +QSOMacroFlag=0 +QSOMacro1=1 +QSOMacroKey1=0 +QSOMacroStr1="\r\n %c %c UR %R-%N-%N BK\r\n\\" +QSOMacro2=1 +QSOMacroKey2=0 +QSOMacroStr2="\r\nQSL TU QRZ? DE %m %m K\r\n\\" +QSOMacro3=1 +QSOMacroKey3=0 +QSOMacroStr3="\r\n %c SRI QSO B4 QRZ? DE %m %m K\r\n\\" +QSOMacro4=0 +QSOMacroKey4=0 +QSOMacroStr4="\r\nDE %m %m K\r\n\\" +QSOMacro5=0 +QSOMacroKey5=0 +QSOMacroStr5="\r\n %c %R-%N-%N TU\r\n\\" +THRTTY=RTY +THSSTV=STV +THTZ=0 +ClipRSTADIF=1 +Backup=1 +TH5Fields=3,3,7,4,12,28,54 + +[Program] +Name1=&G3PLX PSK31SBW +Command1= +Name2=&IZ8BLY Hellschreiber +Command2= +Name3=&External 3 +Command3= +Name4=E&xternal 4 +Command4= + +[TNC] +PortName=NONE +Type=0 +BaudRate=1200 +BitLen=1 +Stop=0 +Parity=0 +flwXON=1 +flwCTS=0 +Echo=2 + +[RADIO] +PortName=NONE +BaudRate=4800 +BitLen=1 +Stop=1 +Parity=0 +flwXON=0 +flwCTS=0 +usePTT=0 +ByteWait=0 +Cmdxx=0 +CmdInit= +CmdRx=\$000000000F +CmdTx=\$000000010F\w10 +FileGNR= +OpenGNR=0 +PollType=0 +PollInterval=5 +PollOffset=0 + +[AA6YQ] +Version=2 +Enabled=1 +TapsBPF=512 +WidthBPF=3.500000e+01 +TapsBEF=256 +WidthBEF=1.500000e+01 +afcERR=5.000000e+00 + diff --git a/MyRIG.rcm b/MyRIG.rcm new file mode 100644 index 0000000..ced32c6 --- /dev/null +++ b/MyRIG.rcm @@ -0,0 +1,8 @@ +[RADIO] +CmdInit=\$0000000000 +CmdRx=\$0000000088 +CmdTx=\$0000000008\w10 +PollType=2 +PollOffset=0 +PollInterval=0 +Cmdxx=04 diff --git a/Option.cpp b/Option.cpp new file mode 100644 index 0000000..3f9dd85 --- /dev/null +++ b/Option.cpp @@ -0,0 +1,1585 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Option.h" +#include "EditDlg.h" +#include "LogFile.h" +#include "Main.h" +#include "FreqDisp.h" +#include "ClockAdj.h" +#include "radioset.h" +#include "TxdDlg.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TAgcSetDlg *AgcSetDlg; +int PageIndex = 0; +static int PageIndexBPF = 0; +//--------------------------------------------------------------------- +__fastcall TOptionDlg::TOptionDlg(TComponent* AOwner) + : TForm(AOwner) +{ + + m_DisEvent = 1; + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + pDem = NULL; + m_FontCharset = SHIFTJIS_CHARSET; + m_FontStyle = 0; + m_ColorChange = 0; + UpdateMacro(); + MarkFreq->Items->Assign(MmttyWd->MarkFreq->Items); + ShiftFreq->Items->Assign(MmttyWd->ShiftFreq->Items); + SetComboBox(IIRFW, MmttyWd->m_asIIRBW.c_str()); + SetComboBox(FilterTap, MmttyWd->m_asFilterTap.c_str()); + SetComboBox(SmoozFreq, MmttyWd->m_asSmooth.c_str()); + SmoozIIR->Items->Assign(SmoozFreq->Items); + SetComboBox(BaudRate, MmttyWd->m_asBaud.c_str()); + SetComboBox(pllVCOGain, MmttyWd->m_asVCOGain.c_str()); + SetComboBox(pllLoopFC, MmttyWd->m_asLoopFC.c_str()); + + //AA6YQ 1.66 + InputSoundcards->Items->BeginUpdate(); + InputSoundcards->Items->Clear(); + for( int i = 0; i < 16; i++ ){ + InputSoundcards->Items->Add(MmttyWd->pSound->GetInputSoundcard(i)); + } + InputSoundcards->Items->EndUpdate(); + + OutputSoundcards->Items->BeginUpdate(); + OutputSoundcards->Items->Clear(); + for( int i = 0; i < 16; i++ ){ + OutputSoundcards->Items->Add(MmttyWd->pSound->GetOutputSoundcard(i)); + } + OutputSoundcards->Items->EndUpdate(); + + + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = Remote ? SETUPTITLEREMOTE:SETUPTITLE; //AA6YQ 1.66C + DefBtn->Caption = "Set Default(Demodulator)"; + TabPara->Caption = "Decode"; + TabTx->Caption = "TX"; + TabFont->Caption = "Font/Window"; + TabMisc->Caption = "Misc"; + GrpDisc->Caption = "Discriminator"; + GrpLimit->Caption = "Limit Amp."; + GrpFilter->Caption = "Pre-Filter"; + DemType->Caption = "Type"; + DemType->Items->Strings[0] = "IIR resonator"; + DemType->Items->Strings[1] = "FIR BPF"; + DemType->Items->Strings[2] = "PLL"; + DemBpfBtn->Caption = "Show"; + GrpLPF->Caption = "Smooth LPF"; + LSmooz->Caption = "Order"; + PreBpfBtn->Caption = "Show"; + CheckRXBPFAFC->Caption = "AFC Connection"; + LMU2->Caption = "2µ"; + LGM->Caption = "Gm."; + CancelBtn->Caption = "Cancel"; + LLoopOrder->Caption = "Order"; + LOutOrder->Caption = "Order"; + LBaudRate->Caption = "BaudRate"; + CheckMajority->Caption = "Majority Logic"; + CheckIgnoreFream->Caption = "Ignore framing error"; + BitLen->Caption = "BitLength"; + StopLen->Caption = "StopLength"; + ParitySel->Caption = "Parity"; + DefStopBit->Caption = "Default RxStop bit"; + CheckDblSft->Caption = "Double shift"; + LOutLvl->Caption = "Digital Output"; + LCharW->Caption = "Char. Wait"; + PttInv->Caption = "Invert Logic"; + GrpInBtn->Caption = "Input Button"; + MacroImm->Caption = "Convert Immediately"; + LFont->Caption = "Font"; + FontBtn->Caption = "Ref"; + CheckPalette->Caption = "Use Palette"; + CheckZero->Caption = "slash zero"; + GrpDispAdj->Caption = "Adjust"; + LW->Caption = "Width"; + LH->Caption = "Height"; + XYInv->Caption = "Reverse rotation"; + GrpRx->Caption = "RxWindow"; + GrpIn->Caption = "TxWindow"; + LRXB->Caption = "Back"; + LRXC->Caption = "Char."; + LRXS->Caption = "Char. sent"; + LINB->Caption = "Back"; + LINC->Caption = "Char."; + LINS->Caption = "Char. sent"; + GrpCard->Caption = "Sound Card"; + RGLoop->Caption = "Sound loopback"; + RGLoop->Items->Strings[1] = "Int."; + RGLoop->Items->Strings[2] = "Ext.(SAT)"; + TxPort->Caption = "Tx Port"; + TxPort->Items->Strings[0] = "Sound"; + TxPort->Items->Strings[1] = "Sound + COM-TxD (FSK)"; + + CBFix45->Caption = "Fixes 45.45 baud"; + SBIN1->Font->Name = sys.m_BtnFontName; + SBIN1->Font->Charset = sys.m_BtnFontCharset; + SBIN2->Font->Name = sys.m_BtnFontName; + SBIN2->Font->Charset = sys.m_BtnFontCharset; + SBIN3->Font->Name = sys.m_BtnFontName; + SBIN3->Font->Charset = sys.m_BtnFontCharset; + SBIN4->Font->Name = sys.m_BtnFontName; + SBIN4->Font->Charset = sys.m_BtnFontCharset; + for( int i = 0; i < 16; i++ ){ + GetSB(i)->Font->Name = sys.m_BtnFontName; + GetSB(i)->Font->Charset = sys.m_BtnFontCharset; + } + } + else if( Remote ){ + Caption = "Ý’è‰æ–Ê"; + } + if( Remote ){ + GB5->Visible = FALSE; + GrpInBtn->Visible = FALSE; + LFont->Visible = FALSE; + FontName->Visible = FALSE; + FontBtn->Visible = FALSE; + CheckZero->Visible = FALSE; + GrpDispAdj->Visible = FALSE; + GrpRx->Visible = FALSE; + GrpIn->Visible = FALSE; + MemWin->Visible = FALSE; + if( Remote & REMNOPTT ){ + GPTT->Visible = FALSE; + } + if( Remote & REMSHOWOFF ){ + TabFont->TabVisible = FALSE; + GSFont->Visible = FALSE; + } + if( !(Remote & REMCTRL) ){ + GSFont->Visible = FALSE; + } + } + SBHelp->Visible = !JanHelp.IsEmpty(); + +//AA6YQ 1.66B moved here from TOptionDlg::DevNoDropDown + + m_MMListW.QueryList("MMW"); + for( int i = 0; i < m_MMListW.GetCount(); i++ ){ + DevNo->Items->Add(m_MMListW.GetItemName(i)); + DevOutNo->Items->Add(m_MMListW.GetItemName(i)); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::UpdateUI(void) +{ + if( PortName->Text == "NONE" ){ + TxPort->Controls[1]->Enabled = FALSE; + TxPort->Controls[2]->Enabled = FALSE; + TxdJob->Visible = FALSE; + } + else { + TxPort->Controls[1]->Enabled = TRUE; + TxPort->Controls[2]->Enabled = TRUE; + TxdJob->Visible = TxPort->ItemIndex ? TRUE : FALSE; + } + switch(DemType->ItemIndex){ + case 0: // IIR + IIRFW->Visible = TRUE; + FilterTap->Visible = FALSE; + Tones->Visible = FALSE; + LTAPFW->Caption = "BW"; + LHZ->Visible = TRUE; + LTAPFW->Visible = TRUE; + DemBpfBtn->Visible = TRUE; + GrpLimit->Enabled = TRUE; + break; + case 1: // FIR + IIRFW->Visible = FALSE; + FilterTap->Visible = TRUE; + Tones->Visible = FALSE; + LTAPFW->Caption = "Tap"; + LHZ->Visible = FALSE; + LTAPFW->Visible = TRUE; + DemBpfBtn->Visible = TRUE; + GrpLimit->Enabled = TRUE; + break; + case 2: + IIRFW->Visible = FALSE; + Tones->Visible = FALSE; + LHZ->Visible = FALSE; + FilterTap->Visible = FALSE; + LTAPFW->Visible = FALSE; + DemBpfBtn->Visible = FALSE; + GrpLimit->Enabled = TRUE; + break; + case 3: // FFT + IIRFW->Visible = FALSE; + FilterTap->Visible = FALSE; + Tones->Visible = TRUE; + LTAPFW->Caption = "Tones"; + LHZ->Visible = FALSE; + LTAPFW->Visible = TRUE; + DemBpfBtn->Visible = FALSE; + GrpLimit->Enabled = FALSE; + break; + } + SetGroupEnabled(GrpLimit); + + if( DemLpf->ItemIndex ){ // IIR + LSmooz->Visible = TRUE; + DemLpfOrder->Visible = TRUE; + SmoozFreq->Visible = FALSE; + SmoozIIR->Visible = TRUE; + LLPF->Caption = "LPF"; +// DispDemLpf->Visible = TRUE; + } + else { // FIR-Avg + LSmooz->Visible = FALSE; + DemLpfOrder->Visible = FALSE; + SmoozFreq->Visible = TRUE; + SmoozIIR->Visible = FALSE; + LLPF->Caption = "Freq"; +// DispDemLpf->Visible = FALSE; + } + int f; + m_DisEvent++; + if( lmsType->Checked ){ + lmsTap->Text = m_NotchTap; + f = FALSE; + } + else { + lmsTap->Text = m_lmsTap; + f = TRUE; + } + m_DisEvent--; + LDelay->Visible = f; + LMU2->Visible = f; + LGM->Visible = f; + lmsDelay->Visible = f; + lmsMU2->Visible = f; + lmsGM->Visible = f; + lmsAGC->Visible = f; + lmsBPF->Visible = f; + lmsInv->Visible = f; + lmsTwo->Visible = !f; + + int dd; + f = (sscanf(AnsiString(DevNo->Text).c_str(), "%d", &dd) == 1 ); //JA7UDE 0428 + GB4->Enabled = f; + SetGroupEnabled(GB4); + Source->Enabled = f; +} +//--------------------------------------------------------------------------- +TSpeedButton *__fastcall TOptionDlg::GetSB(int n) +{ + TSpeedButton *_sb[]={SBM1, SBM2, SBM3, SBM4, SBM5, SBM6, SBM7, + SBM8, SBM9, SBM10, SBM11, SBM12, SBM13, SBM14, SBM15, SBM16}; + if( (n >= 0) && (n < AN(_sb)) ){ + return _sb[n]; + } + else { + return NULL; + } +} +//--------------------------------------------------------------------------- +int __fastcall TOptionDlg::GetMacroIndex(TObject *Sender) +{ + for( int i = 0; i < 16; i++ ){ + TSpeedButton *_sb[]={SBM1, SBM2, SBM3, SBM4, SBM5, SBM6, SBM7, + SBM8, SBM9, SBM10, SBM11, SBM12, SBM13, SBM14, SBM15, SBM16}; + + if( ((TObject *)_sb[i]) == Sender ) return i; + } + return -1; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::UpdateMacro(void) +{ + SetButtonCaption(SBIN1, sys.m_InBtnName[0], 6, sys.m_SBINFontSize, sys.m_InBtnCol[0]); + SetButtonCaption(SBIN2, sys.m_InBtnName[1], 6, sys.m_SBINFontSize, sys.m_InBtnCol[1]); + SetButtonCaption(SBIN3, sys.m_InBtnName[2], 6, sys.m_SBINFontSize, sys.m_InBtnCol[2]); + SetButtonCaption(SBIN4, sys.m_InBtnName[3], 6, sys.m_SBINFontSize, sys.m_InBtnCol[3]); + for( int i = 0; i < 16; i++ ){ + SetButtonCaption(GetSB(i), sys.m_UserName[i], 4, sys.m_SBFontSize, sys.m_UserCol[i]); + } +} + +//AA6YQ 1.66 +int __fastcall TOptionDlg::IsSoundcard(LPCSTR t) +{ + for( ; ; t++ ){ + if (*t=='\0') { + return 1; + } + else if ((*t<'0')||(*t>'9')){ + return 0; + } + } +} + +int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp) +{ + + pDem = fp; + m_ColorChange = 0; + + m_TxdJob = sys.m_TxdJob; + EditSamp->Text = sys.m_SampFreq; + char bf[32]; + sprintf(bf, "%.2lf", sys.m_TxOffset); + TxOff->Text = bf; + WinFont->Text = sys.m_WinFontName; + m_WinFontCharset = sys.m_WinFontCharset; + m_WinFontStyle = sys.m_WinFontStyle; + MemWin->Checked = sys.m_MemWindow; + + BtnFont->Text = sys.m_BtnFontName; + m_BtnFontCharset = sys.m_BtnFontCharset; + m_BtnFontStyle = sys.m_BtnFontStyle; + + FontAdj->Text = sys.m_FontAdjSize; + BtnFontAdj->Text = sys.m_BtnFontAdjSize; + + DemType->ItemIndex = fp->m_type; + RGLoop->ItemIndex = sys.m_echo; + MacroImm->Checked = sys.m_MacroImm; + + pllVCOGain->Text = fp->m_pll.m_vcogain; + pllLoopOrder->Text = fp->m_pll.m_loopOrder; + pllLoopFC->Text = fp->m_pll.m_loopFC; + pllOutOrder->Text = fp->m_pll.m_outOrder; + pllOutFC->Text = fp->m_pll.m_outFC; + + WaitDiddle->Checked = mp->m_CharWaitDiddle; + TBDiddleWait->Position = SetTBValue(mp->m_DiddleWait, 50, 50); + TBCharWait->Position = SetTBValue(mp->m_CharWait, 50, 50); + + PCRXBack->Color = sys.m_ColorRXBack; + PCRXChar->Color = sys.m_ColorRX; + PCRXTXChar->Color = sys.m_ColorRXTX; + PCINBack->Color = sys.m_ColorINBack; + PCINChar->Color = sys.m_ColorIN; + PCINTx->Color = sys.m_ColorINTX; + PCLow->Color = sys.m_ColorLow; + PCHigh->Color = sys.m_ColorHigh; + PCXY->Color = sys.m_ColorXY; + + TxPort->ItemIndex = sys.m_TxPort; + CBFix45->Checked = sys.m_DefFix45; + DefMarkFreq->Text = sys.m_DefMarkFreq; + DefShift->Text = sys.m_DefShift; + DefStopBit->ItemIndex = sys.m_DefStopLen; + + MarkFreq->Text = fp->GetMarkFreq(); + ShiftFreq->Text = fp->GetSpaceFreq() - fp->GetMarkFreq(); + FilterTap->Text = fp->GetFilterTap(); + IIRFW->Text = fp->m_iirfw; + Tones->Text = fp->m_Phase.m_TONES; + CBAA6YQ->Checked = fp->m_AA6YQ.m_fEnabled; + + SmoozFreq->Text = fp->GetSmoozFreq(); + SmoozIIR->Text = fp->m_lpffreq; + DemLpf->ItemIndex = fp->m_lpf; + DemLpfOrder->Text = fp->m_lpfOrder; + LimitGain->Text = sys.m_LimitGain; + LimitOver->Checked = fp->m_LimitOverSampling; + LimitAGC->Checked = fp->m_LimitAGC; + + CheckInv->Checked = sys.m_Rev; + + BaudRate->Text = fp->GetBaudRate(); + BitLen->ItemIndex = fp->m_BitLen - 5; + StopLen->ItemIndex = fp->m_StopLen; + ParitySel->ItemIndex = fp->m_Parity; + RGC->ItemIndex = sys.m_CodeSet; + + PortName->Text = sys.m_TxRxName; + PttInv->Checked = sys.m_TxRxInv; + + DiddleSel->ItemIndex = mp->m_diddle; + RandomDiddle->Checked = mp->m_RandomDiddle; + WaitTimer->Checked = mp->m_WaitTimer; + + EditCall->Text = sys.m_Call; + + CheckTXUOS->Checked = sys.m_txuos; + CheckTXBPF->Checked = mp->m_bpf; + CheckDblSft->Checked = sys.m_dblsft; + CheckTXLPF->Checked = mp->m_lpf; + TxLpfFreq->Text = mp->GetLPFFreq(); + + TxBpfTap->Text = mp->m_bpftap; + TxDisRev->Checked = sys.m_TxDisRev; + TxFixShift->Checked = sys.m_TxFixShift; + + CheckAFC->Checked = sys.m_AFC; + FixShift->ItemIndex = sys.m_FixShift; + AFCTime->Text = sys.m_AFCTime; + AFCSQ->Text = sys.m_AFCSQ; + AFCSweep->Text = sys.m_AFCSweep; + + ATC->Checked = fp->m_atc; + ATCTime->Text = fp->m_atcMark.m_Max; + + TBOutLvl->Position = int(mp->GetOutputGain()*64.0/32768.0); + + FontName->Text = sys.m_FontName; + FontAdjX->Text = sys.m_FontAdjX; + FontAdjY->Text = sys.m_FontAdjY; + m_FontCharset = sys.m_FontCharset; + m_FontStyle = sys.m_FontStyle; + m_FontSize = sys.m_FontSize; + CheckZero->Checked = sys.m_FontZero; + + CheckPalette->Checked = sys.m_Palette; + + XYInv->Checked = sys.m_XYInv; + + FifoRX->Text = sys.m_SoundFifoRX; + FifoTX->Text = sys.m_SoundFifoTX; + SoundPriority->ItemIndex = sys.m_SoundPriority; + + if( sys.m_SoundDevice == -2 ){ + DevNo->Text = sys.m_SoundMMW; + } + else { + DevNo->Text = sys.m_SoundDevice; + } + + //AA6YQ 1.66 + if( sys.m_SoundOutDevice == -2 ){ + DevOutNo->Text = sys.m_SoundMMW; + } + else { + DevOutNo->Text = sys.m_SoundOutDevice; + } + + //AA6YQ 1.66 + if (IsSoundcard (AnsiString(DevNo->Text).c_str())) { //JA7UDE 0428 + InputSoundcards->ItemIndex = atoi(AnsiString(DevNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428 + } + else { + InputSoundcards->ItemIndex =-1; + } + + //AA6YQ 1.66 + if (IsSoundcard (AnsiString(DevOutNo->Text).c_str())) { //JA7UDE 0428 + OutputSoundcards->ItemIndex = atoi(AnsiString(DevOutNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428 + } + else { + OutputSoundcards->ItemIndex =-1; + } + + Source->ItemIndex = sys.m_SoundStereo; + + SelBPF->Checked = MmttyWd->pSound->m_bpf; + SelLMS->Checked = MmttyWd->pSound->m_lmsbpf; + CheckRXBPFAFC->Checked = MmttyWd->pSound->m_bpfafc; + RxBpfTap->Text = MmttyWd->pSound->m_bpftap; + RxBpfFW->Text = MmttyWd->pSound->m_bpffw; + m_lmsTap = MmttyWd->pSound->m_lms.m_Tap; + m_NotchTap = MmttyWd->pSound->m_lms.m_NotchTap; + // lmsTap->Text = MmttyWd->pSound->m_lms.m_Tap; + lmsType->Checked = MmttyWd->pSound->m_lms.m_Type; + lmsDelay->Text = MmttyWd->pSound->m_lms.m_lmsDelay; + lmsMU2->Text = MmttyWd->pSound->m_lms.m_lmsMU2; + lmsGM->Text = MmttyWd->pSound->m_lms.m_lmsGM; + lmsAGC->Checked = MmttyWd->pSound->m_lms.m_lmsAGC; + lmsInv->Checked = MmttyWd->pSound->m_lms.m_lmsInv; + lmsBPF->Checked = MmttyWd->pSound->m_lms.m_bpf; + lmsTwo->Checked = MmttyWd->pSound->m_lms.m_twoNotch; + + CheckMajority->Checked = fp->m_majority; + CheckIgnoreFream->Checked = fp->m_ignoreFream; + + if( (PageIndex >= 0) && (PageIndex < Page->PageCount) ){ + if( Page->Pages[PageIndex]->TabVisible == FALSE ){ + PageIndex = 0; + } + Page->ActivePage = Page->Pages[PageIndex]; + } + if( (PageIndexBPF >= 0) && (PageIndexBPF < PageBPF->PageCount) ){ + PageBPF->ActivePage = PageBPF->Pages[PageIndexBPF]; + } + UpdateUI(); + m_DisEvent = 0; + int r = ShowModal(); + if( r == IDOK ){ + m_DisEvent++; + double d; + int dd; + + sys.m_TxdJob = m_TxdJob; + sscanf(AnsiString(EditSamp->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= 5000.0) && (d <= 12500.0) ){ + sys.m_SampFreq = d; + } + sscanf(AnsiString(TxOff->Text).c_str(), "%lf", &d); //JA7UDE 0428 + sys.m_TxOffset = d; + + sys.m_WinFontName = WinFont->Text; + sys.m_WinFontCharset = m_WinFontCharset; + sys.m_WinFontStyle = m_WinFontStyle; + + sys.m_BtnFontName = BtnFont->Text; + sys.m_BtnFontCharset = m_BtnFontCharset; + sys.m_BtnFontStyle = m_BtnFontStyle; + + if( sscanf(AnsiString(FontAdj->Text).c_str(), "%ld", &dd) == 1 ){ //JA7UDE 0428 + sys.m_FontAdjSize = dd; + } + if( sscanf(AnsiString(BtnFontAdj->Text).c_str(), "%ld", &dd) == 1 ){ //JA7UDE 0428 + sys.m_BtnFontAdjSize = dd; + } + + fp->m_type = DemType->ItemIndex; + sys.m_echo = RGLoop->ItemIndex; + sys.m_MacroImm = MacroImm->Checked; + + sys.m_DefFix45 = CBFix45->Checked; + sscanf(AnsiString(DefMarkFreq->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= MARKL) && (d <= SPACEH) ){ + sys.m_DefMarkFreq = d; + } + sscanf(AnsiString(DefShift->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= SHIFTL) && (d <= 1500.0) ){ + sys.m_DefShift = d; + } + sys.m_DefStopLen = DefStopBit->ItemIndex; + + sscanf(AnsiString(MarkFreq->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= MARKL) && (d <= SPACEH) ){ + fp->SetMarkFreq(d); + mp->SetMarkFreq(d); + } + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= SHIFTL) && (d <= 1500.0) ){ + d += fp->GetMarkFreq(); + fp->SetSpaceFreq(d); + mp->SetSpaceFreq(d); + } + sscanf(AnsiString(FilterTap->Text).c_str(), "%u", &dd); //JA7UDE 0428 + if( dd >= 2 ){ + fp->SetFilterTap(dd); + } + sscanf(AnsiString(IIRFW->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( d > 0 ){ + fp->SetIIR(d); + } + sscanf(AnsiString(Tones->Text).c_str(), "%u", &dd); //JA7UDE 0428 + if( (dd >= 2) && (dd <= 6) ){ + fp->m_Phase.SetTones(dd); + } + + if( fp->m_AA6YQ.m_fEnabled != CBAA6YQ->Checked ){ + fp->m_AA6YQ.m_fEnabled = CBAA6YQ->Checked; + if( CBAA6YQ->Checked ) fp->m_AA6YQ.Create(); + } + + fp->m_lpf = DemLpf->ItemIndex; + sscanf(AnsiString(DemLpfOrder->Text).c_str(), "%u", &dd); //JA7UDE 0428 + if( (dd >= 1) && (dd <= 32) ){ + fp->m_lpfOrder = dd; + } + + sscanf(AnsiString(SmoozFreq->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= 20.0) && (d <= 1500.0) ){ + fp->SetSmoozFreq(d); + } + sscanf(AnsiString(SmoozIIR->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= 20.0) && (d <= 1500.0) ){ + fp->SetLPFFreq(d); + } + + sscanf(AnsiString(LimitGain->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d > 0.0) && (d <= 32768.0) ){ + sys.m_LimitGain = d; + } + fp->m_LimitOverSampling = LimitOver->Checked; + fp->m_LimitAGC = LimitAGC->Checked; + MmttyWd->UpdateLimit(); + + + sscanf(AnsiString(BaudRate->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( d > 0.0 ){ + fp->SetBaudRate(d); + mp->SetBaudRate(d); + } + + sys.m_TxFixShift = TxFixShift->Checked; + sys.m_TxDisRev = TxDisRev->Checked; + sys.m_Rev = CheckInv->Checked; + MmttyWd->UpdateRev(); + + fp->m_BitLen = BitLen->ItemIndex + 5; + fp->m_StopLen = StopLen->ItemIndex; + fp->m_Parity = ParitySel->ItemIndex; + sys.m_CodeSet = RGC->ItemIndex; + + sys.m_TxRxName = PortName->Text; + if( (PortName->Text != "NONE") && !strcmp(AnsiString(PortName->Text).c_str(), RADIO.StrPort) ){ //JA7UDE 0428 + strcpy(RADIO.StrPort, "NONE"); + } + sys.m_TxRxInv = PttInv->Checked; + + mp->m_diddle = DiddleSel->ItemIndex; + mp->m_RandomDiddle = RandomDiddle->Checked; + mp->m_WaitTimer = WaitTimer->Checked; + + char bf[MLCALL+1]; + StrCopy(bf, AnsiString(EditCall->Text).c_str(), MLCALL); //JA7UDE 0428 + jstrupr(bf); + sys.m_Call = bf; + + sys.m_txuos = CheckTXUOS->Checked; + mp->m_bpf = CheckTXBPF->Checked; + sys.m_dblsft = CheckDblSft->Checked; + + mp->m_lpf = CheckTXLPF->Checked; + sscanf(AnsiString(TxLpfFreq->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= 20.0) && (d <= 2000.0) ){ + mp->SetLPFFreq(d); + } + + sscanf(AnsiString(TxBpfTap->Text).c_str(), "%u", &dd); //JA7UDE 0428 + if( dd >= 2 ){ + mp->m_bpftap = dd; + mp->CalcBPF(); + } + + sys.m_AFC = CheckAFC->Checked; + sys.m_FixShift = FixShift->ItemIndex; + + sscanf(AnsiString(AFCTime->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= 1.0) && (d <= 128.0) ){ + sys.m_AFCTime = d; + } + sscanf(AnsiString(AFCSweep->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d >= 0.01) && (d <= 1.0) ){ + sys.m_AFCSweep = d; + } + sscanf(AnsiString(AFCSQ->Text).c_str(), "%u", &dd); //JA7UDE 0428 + if( dd >= 2 ){ + sys.m_AFCSQ = dd; + } + + fp->m_atc = ATC->Checked; + sscanf(AnsiString(ATCTime->Text).c_str(), "%u", &dd); //JA7UDE 0428 + if( (dd >= 0) && (dd <= 16) ){ + fp->m_atcMark.m_Max = dd; + fp->m_atcSpace.m_Max = dd; + } + + mp->SetOutputGain(TBOutLvl->Position*32768.0/64.0); + + mp->m_BitLen = fp->m_BitLen; + mp->m_StopLen = fp->m_StopLen; + mp->m_Parity = fp->m_Parity; + + r = 1; + if( sys.m_FontName != FontName->Text ){ + sys.m_FontName = FontName->Text; + r = 2; + } + if( sscanf(AnsiString(FontAdjX->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428 + if( dd != sys.m_FontAdjX ){ + r = 2; + sys.m_FontAdjX = dd; + } + } + if( sscanf(AnsiString(FontAdjY->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428 + if( dd != sys.m_FontAdjY ){ + r = 2; + sys.m_FontAdjY = dd; + } + } + if( (sys.m_FontCharset != m_FontCharset) || + (sys.m_FontStyle != m_FontStyle) || + (sys.m_FontSize != m_FontSize) + ){ + sys.m_FontCharset = m_FontCharset; + sys.m_FontStyle = m_FontStyle; + sys.m_FontSize = m_FontSize; + r = 2; + } + sys.m_FontZero = CheckZero->Checked; + + sys.m_Palette = CheckPalette->Checked; + + sys.m_XYInv = XYInv->Checked; + + if( sscanf(AnsiString(FifoRX->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd >= 2) && (dd <= 16) ){ + sys.m_SoundFifoRX = dd; + } + } + if( sscanf(AnsiString(FifoTX->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd >= 2) && (dd <= 16) ){ + sys.m_SoundFifoTX = dd; + } + } + + sys.m_SoundPriority = SoundPriority->ItemIndex; + + if( sscanf(AnsiString(DevNo->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428 + sys.m_SoundDevice = dd; + } + else { + sys.m_SoundDevice = -2; + sys.m_SoundMMW = DevNo->Text.c_str(); + } + + //AA6YQ 1.66 + if( sscanf(AnsiString(DevOutNo->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428 + sys.m_SoundOutDevice = dd; + } + else { + sys.m_SoundOutDevice = -2; + sys.m_SoundMMW = DevOutNo->Text.c_str(); + } + + sys.m_SoundStereo = Source->ItemIndex; + + MmttyWd->pSound->m_bpf = SelBPF->Checked; + MmttyWd->pSound->m_lmsbpf = SelLMS->Checked; + MmttyWd->pSound->m_bpfafc = CheckRXBPFAFC->Checked; + if( sscanf(AnsiString(RxBpfTap->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd >= 2) && (dd <= 512) ){ + MmttyWd->pSound->m_bpftap = dd; + } + } + if( sscanf(AnsiString(RxBpfFW->Text).c_str(), "%lf", &d) == 1 ){ //JA7UDE 0428 + if( (d >= 0.0) && (d <= 500.0) ){ + MmttyWd->pSound->m_bpffw = d; + } + } + if( sscanf(AnsiString(lmsDelay->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd >= 0) && (dd <= DELAYMAX) ){ + MmttyWd->pSound->m_lms.m_lmsDelay = dd; + } + } + MmttyWd->pSound->m_lms.m_Tap = m_lmsTap; + MmttyWd->pSound->m_lms.m_NotchTap = m_NotchTap; + if( sscanf(AnsiString(lmsMU2->Text).c_str(), "%lf", &d) == 1 ){ //JA7UDE 0428 + MmttyWd->pSound->m_lms.m_lmsMU2 = d; + } + if( sscanf(AnsiString(lmsGM->Text).c_str(), "%lf", &d) == 1 ){ //JA7UDE 0428 + MmttyWd->pSound->m_lms.m_lmsGM = d; + } + MmttyWd->pSound->m_lms.m_lmsInv = lmsInv->Checked; + MmttyWd->pSound->m_lms.m_lmsAGC = lmsAGC->Checked; + MmttyWd->pSound->m_lms.m_bpf = lmsBPF->Checked; + MmttyWd->pSound->m_lms.m_Type = lmsType->Checked; + MmttyWd->pSound->m_lms.m_twoNotch = lmsTwo->Checked; + + MmttyWd->pSound->CalcBPF(); + + if( sscanf(AnsiString(pllVCOGain->Text).c_str(), "%lf", &d) == 1 ){ //JA7UDE 0428 + if( d > 0.0 ) fp->m_pll.SetVcoGain(d); + } + if( sscanf(AnsiString(pllLoopOrder->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd > 0) && (dd < 32) ) fp->m_pll.m_loopOrder = dd; + } + if( sscanf(AnsiString(pllLoopFC->Text).c_str(), "%lf", &d) == 1 ){ //JA7UDE 0428 + if( d > 0.0 ) fp->m_pll.m_loopFC = d; + } + if( sscanf(AnsiString(pllOutOrder->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd > 0) && (dd < 32) ) fp->m_pll.m_outOrder = dd; + } + if( sscanf(AnsiString(pllOutFC->Text).c_str(), "%lf", &d) == 1 ){ + if( d > 0.0 ) fp->m_pll.m_outFC = d; + } + fp->m_pll.MakeLoopLPF(); + fp->m_pll.MakeOutLPF(); + + fp->m_majority = CheckMajority->Checked; + fp->m_ignoreFream = CheckIgnoreFream->Checked; + + sys.m_ColorRXBack = PCRXBack->Color; + sys.m_ColorRX = PCRXChar->Color; + sys.m_ColorRXTX = PCRXTXChar->Color; + sys.m_ColorINBack = PCINBack->Color; + sys.m_ColorIN = PCINChar->Color; + sys.m_ColorINTX = PCINTx->Color; + sys.m_ColorLow = PCLow->Color; + sys.m_ColorHigh = PCHigh->Color; + sys.m_ColorXY = PCXY->Color; + + mp->m_DiddleWait = GetTBValue(TBDiddleWait->Position, 50, 50) + 0.5; + mp->m_CharWait = GetTBValue(TBCharWait->Position, 50, 50) + 0.5; + mp->m_CharWaitDiddle = WaitDiddle->Checked; + + if( PortName->Text == "NONE" ) TxPort->ItemIndex = 0; + if( sys.m_TxPort != TxPort->ItemIndex ) COMM.change = 1; + sys.m_TxPort = TxPort->ItemIndex; + sys.m_MemWindow = MemWin->Checked; + } + else { + r = FALSE; + } + for( PageIndex = 0; PageIndex < Page->PageCount; PageIndex++ ){ + if( Page->ActivePage == Page->Pages[PageIndex] ) break; + } + for( PageIndexBPF = 0; PageIndexBPF < PageBPF->PageCount; PageIndexBPF++ ){ + if( PageBPF->ActivePage == PageBPF->Pages[PageIndexBPF] ) break; + } + return r; +} +//--------------------------------------------------------------------- +void __fastcall TOptionDlg::HamBtnClick(TObject *Sender) +{ + MarkFreq->Text = DefMarkFreq->Text.c_str(); + ShiftFreq->Text = DefShift->Text.c_str(); + BaudRate->Text = 45.45; + BitLen->ItemIndex = 0; + StopLen->ItemIndex = DefStopBit->ItemIndex + 3; + ParitySel->ItemIndex = 0; + if( sys.m_TxPort ) COMM.change = 1; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::FontBtnClick(TObject *Sender) +{ + FontDialog->Font->Name = FontName->Text; + FontDialog->Font->Size = m_FontSize; + FontDialog->Font->Charset = BYTE(m_FontCharset); + TFontStyles fs = Code2FontStyle(m_FontStyle); + FontDialog->Font->Style = fs; + NormalWindow(this); + if( FontDialog->Execute() == TRUE ){ + m_FontSize = FontDialog->Font->Size; + FontName->Text = FontDialog->Font->Name; + m_FontCharset = FontDialog->Font->Charset; + fs = FontDialog->Font->Style; + m_FontStyle = FontStyle2Code(fs); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBMClick(TObject *Sender) +{ + int n = GetMacroIndex(Sender); + if( n >= 0 ){ + TEditDlgBox *pBox = new TEditDlgBox(this); + pBox->ButtonName->Text = sys.m_UserName[n]; + if( pBox->Execute(sys.m_User[n], sys.m_UserKey[n], &sys.m_UserCol[n], &sys.m_UserTimer[n], 1) == TRUE ){ + if( !pBox->ButtonName->Text.IsEmpty() ){ + sys.m_UserName[n] = pBox->ButtonName->Text; + } + } + delete pBox; + UpdateMacro(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBINClick(int n) +{ + TEditDlgBox *pBox = new TEditDlgBox(this); + pBox->Caption = (Font->Charset != SHIFTJIS_CHARSET)? "Edit Button":"“ü—̓{ƒ^ƒ“•ÒW"; //AA6YQ 1.66 + pBox->ButtonName->Text = sys.m_InBtnName[n]; + if( pBox->Execute(sys.m_InBtn[n], sys.m_InBtnKey[n], &sys.m_InBtnCol[n], NULL, 0) == TRUE ){ + if( !pBox->ButtonName->Text.IsEmpty() ){ + sys.m_InBtnName[n] = pBox->ButtonName->Text; + } + } + delete pBox; + UpdateMacro(); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBIN1Click(TObject *Sender) +{ + SBINClick(0); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBIN2Click(TObject *Sender) +{ + SBINClick(1); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBIN3Click(TObject *Sender) +{ + SBINClick(2); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBIN4Click(TObject *Sender) +{ + SBINClick(3); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::DemBpfBtnClick(TObject *Sender) +{ + if( DemType->ItemIndex ){ + double HBPF1[TAPMAX+1]; + double HBPF2[TAPMAX+1]; + + double mfq; + double sft; + int tap; + sscanf(AnsiString(MarkFreq->Text).c_str(), "%lf", &mfq); //JA7UDE 0428 + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lf", &sft); //JA7UDE 0428 + double sfq = mfq + sft; + sscanf(AnsiString(FilterTap->Text).c_str(), "%u", &tap); //JA7UDE 0428 + if( !tap ) tap = 2; + + MakeFilter(HBPF1, tap, ffBPF, DemSamp, mfq-pDem->GetFilWidth(tap), mfq+pDem->GetFilWidth(tap), 60, 1.0); + MakeFilter(HBPF2, tap, ffBPF, DemSamp, sfq-pDem->GetFilWidth(tap), sfq+pDem->GetFilWidth(tap), 60, 1.0); + + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->m_Max = 3000; + pBox->Execute(HBPF1, HBPF2, tap, DemOver+1); + delete pBox; + } + else { + double mfq; + double sft; + double sfq; + double fw; + CIIRTANK iirm; + CIIRTANK iirs; + + sscanf(AnsiString(MarkFreq->Text).c_str(), "%lf", &mfq); //JA7UDE 0428 + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lf", &sft); //JA7UDE 0428 + sscanf(AnsiString(IIRFW->Text).c_str(), "%lf", &fw); //JA7UDE 0428 + sfq = mfq + sft; + iirm.SetFreq(mfq, DemSamp, fw); + iirs.SetFreq(sfq, DemSamp, fw); + + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->m_Max = 3000; + pBox->Execute(iirm.a0, iirm.b1, iirm.b2, iirs.a0, iirs.b1, iirs.b2, DemOver+1); + delete pBox; + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PreBpfBtnClick(TObject *Sender) +{ + CLMS lms; + CLMS lmsbak; + int nowbpf = MmttyWd->pSound->m_bpf; + int nowlms = MmttyWd->pSound->m_lmsbpf; + int nowtap = MmttyWd->pSound->m_bpftap; + int bpfafc = MmttyWd->pSound->m_bpfafc; + + lmsbak.Copy(MmttyWd->pSound->m_lms); + lms.Copy(MmttyWd->pSound->m_lms); + + int tap; + sscanf(AnsiString(RxBpfTap->Text).c_str(), "%u", &tap); //JA7UDE 0428 + if( !tap ) tap = 2; + + MmttyWd->pSound->m_bpftap = tap; + double mfq; + double sft; + double fw; + sscanf(AnsiString(MarkFreq->Text).c_str(), "%lf", &mfq); //JA7UDE 0428 + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lf", &sft); //JA7UDE 0428 + double sfq = mfq + sft; + sscanf(AnsiString(RxBpfFW->Text).c_str(), "%lf", &fw); //JA7UDE 0428 + + lms.m_Tap = m_lmsTap; + lms.m_NotchTap = m_NotchTap; + sscanf(AnsiString(lmsDelay->Text).c_str(), "%u", &lms.m_lmsDelay); //JA7UDE 0428 + sscanf(AnsiString(lmsMU2->Text).c_str(), "%lf", &lms.m_lmsMU2); //JA7UDE 0428 + sscanf(AnsiString(lmsGM->Text).c_str(), "%lf", &lms.m_lmsGM); //JA7UDE 0428 + lms.m_lmsAGC = lmsAGC->Checked; + lms.m_Type = lmsType->Checked; + lms.m_bpf = lmsBPF->Checked; + lms.m_twoNotch = lmsTwo->Checked; + lms.m_lmsNotch = (mfq + sfq) / 2; + lms.m_lmsNotch2 = mfq - 80; + + MmttyWd->pSound->m_lms.Copy(lms); + MmttyWd->pSound->m_bpf = 1; + MmttyWd->pSound->m_bpfafc = CheckRXBPFAFC->Checked; + MmttyWd->pSound->CalcBPF(mfq, sfq, fw); + + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->Timer->Enabled = TRUE; + if(PageBPF->ActivePage == TabBPF){ + MmttyWd->pSound->m_bpf = 1; + pBox->Execute(MmttyWd->pSound->HBPF, tap, 1); + } + else { + MmttyWd->pSound->m_bpf = SelBPF->Checked; + MmttyWd->pSound->m_lmsbpf = 1; + if( lms.m_Type ){ + if( lms.m_twoNotch ){ + pBox->Timer->Enabled = FALSE; + pBox->Execute(MmttyWd->pSound->m_lms.H, MmttyWd->pSound->m_lms.GetHBPF(), lms.m_NotchTap, 1); + } + else { + pBox->Execute(MmttyWd->pSound->m_lms.H, lms.m_NotchTap, 1); + } + } + else { + pBox->Execute(MmttyWd->pSound->m_lms.H, lms.m_Tap, 1); + } + } + delete pBox; + + MmttyWd->pSound->m_bpf = nowbpf; + MmttyWd->pSound->m_lmsbpf = nowlms; + MmttyWd->pSound->m_bpftap = nowtap; + MmttyWd->pSound->m_bpfafc = bpfafc; + MmttyWd->pSound->m_lms.Copy(lmsbak); + MmttyWd->pSound->CalcBPF(); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::DispTxBpfClick(TObject *Sender) +{ + double HBPF[TAPMAX+1]; + + double mfq; + double sft; + int tap; + sscanf(AnsiString(MarkFreq->Text).c_str(), "%lf", &mfq); //JA7UDE 0428 + sscanf(AnsiString(ShiftFreq->Text).c_str(), "%lf", &sft); //JA7UDE 0428 + double sfq = mfq + sft; + sscanf(AnsiString(TxBpfTap->Text).c_str(), "%u", &tap); //JA7UDE 0428 + if( !tap ) tap = 2; + + MakeFilter(HBPF, tap, ffBPF, SampFreq, mfq - 150, sfq + 150, 60, 1.0); + + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->Execute(HBPF, tap, 1); + delete pBox; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::DispDemLpfClick(TObject *Sender) +{ + int order; + double fc; + if( DemLpf->ItemIndex ){ // IIR + sscanf(AnsiString(SmoozIIR->Text).c_str(), "%lf", &fc); //JA7UDE 0428 + if( (fc >= 20.0) && (fc <= 1500.0) ){ + sscanf(AnsiString(DemLpfOrder->Text).c_str(), "%u", &order); //JA7UDE 0428 + if( (order >= 1) && (order <= 32) ){ + CIIR iir; + iir.MakeIIR(fc, DemSamp, order, 0, 1.0); + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->Execute(&iir, DemOver+1, 200.0); + delete pBox; + } + } + } + else { // FIR + sscanf(AnsiString(SmoozFreq->Text).c_str(), "%lf", &fc); //JA7UDE 0428 + if( (fc >= 20.0) && (fc <= 1500.0) ){ + double HLPF[TAPMAX+1]; + + int n = int((DemSamp) / fc + 0.5); + double d = 1 / double(n); + for( int i = 0; i < n; i++ ){ + HLPF[i] = d; + } + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->Execute(HLPF, n-1, DemOver+1, 200.0); + delete pBox; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::DispLoopLPFClick(TObject *Sender) +{ + int order; + double fc; + + sscanf(AnsiString(pllLoopFC->Text).c_str(), "%lf", &fc); //JA7UDE 0428 + if( fc > 0.0 ){ + sscanf(AnsiString(pllLoopOrder->Text).c_str(), "%u", &order); //JA7UDE 0428 + if( (order >= 1) && (order <= 32) ){ + CIIR iir; + iir.MakeIIR(fc, DemSamp, order, 0, 1.0); + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->Execute(&iir, DemOver+1, 800); + delete pBox; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::DispOutLPFClick(TObject *Sender) +{ + int order; + double fc; + + sscanf(AnsiString(pllOutFC->Text).c_str(), "%lf", &fc); //JA7UDE 0428 + if( fc > 0.0 ){ + sscanf(AnsiString(pllOutOrder->Text).c_str(), "%u", &order); //JA7UDE 0428 + if( (order >= 1) && (order <= 32) ){ + CIIR iir; + iir.MakeIIR(fc, DemSamp, order, 0, 1.0); + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->Execute(&iir, DemOver+1, 800); + delete pBox; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCRXBackClick(TObject *Sender) +{ + ColorDialog->Color = PCRXBack->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCRXBack->Color = ColorDialog->Color; + m_ColorChange = 1; + if( PCRXBack->Color != PCINBack->Color ){ + if( YesNoMB( (Font->Charset != SHIFTJIS_CHARSET) ? "Copy the color to InputWindow ?":"‚±‚ÌF‚ð“ü—͉æ–ʂ̔wŒiF‚É‚à“K‰ž‚µ‚Ü‚·‚©H") == IDYES ){ + PCINBack->Color = ColorDialog->Color; + } + } + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCRXCharClick(TObject *Sender) +{ + ColorDialog->Color = PCRXChar->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCRXChar->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCRXTXCharClick(TObject *Sender) +{ + ColorDialog->Color = PCRXTXChar->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCRXTXChar->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCINBackClick(TObject *Sender) +{ + ColorDialog->Color = PCINBack->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCINBack->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCINCharClick(TObject *Sender) +{ + ColorDialog->Color = PCINChar->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCINChar->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCINTxClick(TObject *Sender) +{ + ColorDialog->Color = PCINTx->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCINTx->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------- +void __fastcall TOptionDlg::PCLowClick(TObject *Sender) +{ + ColorDialog->Color = PCLow->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCLow->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCHighClick(TObject *Sender) +{ + ColorDialog->Color = PCHigh->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCHigh->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SetCustomColor(void) +{ + ColorDialog->CustomColors->Text = ""; + AddCustomColor(PCRXBack->Color); + AddCustomColor(PCRXChar->Color); + AddCustomColor(PCINBack->Color); + AddCustomColor(PCINChar->Color); + AddCustomColor(PCINTx->Color); + AddCustomColor(PCLow->Color); + AddCustomColor(PCHigh->Color); + AddCustomColor(PCXY->Color); +} +//--------------------------------------------------------------------- +void __fastcall TOptionDlg::AddCustomColor(TColor col) +{ + char bf[256]; + + sprintf(bf, "Color%c=%06lX", ColorDialog->CustomColors->Count + 'A', DWORD(col) & 0x00ffffff); + ColorDialog->CustomColors->Add(bf); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PortNameChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PCXYClick(TObject *Sender) +{ + ColorDialog->Color = PCXY->Color; + SetCustomColor(); + NormalWindow(this); + if( ColorDialog->Execute() == TRUE ){ + PCXY->Color = ColorDialog->Color; + m_ColorChange = 1; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::WinFontBtnClick(TObject *Sender) +{ + FontDialog->Font->Name = WinFont->Text; + FontDialog->Font->Charset = m_WinFontCharset; + TFontStyles fs = Code2FontStyle(m_WinFontStyle); + FontDialog->Font->Style = fs; + NormalWindow(this); + if( FontDialog->Execute() == TRUE ){ + WinFont->Text = FontDialog->Font->Name; + m_WinFontCharset = FontDialog->Font->Charset; + fs = FontDialog->Font->Style; + m_WinFontStyle = FontStyle2Code(fs); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::BtnFontBtnClick(TObject *Sender) +{ + FontDialog->Font->Name = BtnFont->Text; + FontDialog->Font->Charset = m_BtnFontCharset; + TFontStyles fs = Code2FontStyle(m_BtnFontStyle); + FontDialog->Font->Style = fs; + NormalWindow(this); + if( FontDialog->Execute() == TRUE ){ + BtnFont->Text = FontDialog->Font->Name; + m_BtnFontCharset = FontDialog->Font->Charset; + fs = FontDialog->Font->Style; + m_BtnFontStyle = FontStyle2Code(fs); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::JapaneseBtnClick(TObject *Sender) +{ + WinFont->Text = "‚l‚r ‚oƒSƒVƒbƒN"; + m_WinFontCharset = SHIFTJIS_CHARSET; + BtnFont->Text = "‚l‚r ƒSƒVƒbƒN"; + m_BtnFontCharset = SHIFTJIS_CHARSET; + m_WinFontStyle = 0; + m_BtnFontStyle = 0; + FontName->Text = "‚l‚r ƒSƒVƒbƒN"; + m_FontCharset = SHIFTJIS_CHARSET; + m_FontStyle = 0; + if( sys.m_WinFontCharset != SHIFTJIS_CHARSET ){ + Application->MessageBox(L"MMTTY‚ðÄ‹N“®‚·‚邯“ú–{Œêƒ‚[ƒh‚ɂȂè‚Ü‚·.\r\n(Please restart MMTTY for Japanese mode)", L"MMTTY", MB_ICONINFORMATION|MB_OK); //JA7UDE 0428 + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::EnglishBtnClick(TObject *Sender) +{ + WinFont->Text = "Times New Roman"; + m_WinFontCharset = ANSI_CHARSET; + BtnFont->Text = "Courier New"; + m_BtnFontCharset = ANSI_CHARSET; + m_WinFontStyle = 0; + m_BtnFontStyle = 0; + FontName->Text = "Courier New"; + m_FontCharset = ANSI_CHARSET; + m_FontStyle = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBClockAdjClick(TObject *Sender) +{ + double d; + sscanf(AnsiString(EditSamp->Text).c_str(), "%lf", &d); //JA7UDE 0428 + if( (d < 5000.0) || (d > 12500.0) ){ + d = sys.m_SampFreq; + } + + TClockAdjDlg *pBox = new TClockAdjDlg(this); + if( pBox->Execute(MmttyWd->pSound, d) == TRUE ){ + EditSamp->Text = d; + } + delete pBox; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::DefBtnClick(TObject *Sender) +{ + MarkFreq->Text = 2125; + ShiftFreq->Text = 170; + DefMarkFreq->Text = 2125; + DefShift->Text = 170; + DemType->ItemIndex = 0; + IIRFW->Text = 60; + FilterTap->Text = 72; + Tones->Text = 4; + LimitOver->Checked = 0; + LimitGain->Text = 200; + DemLpf->ItemIndex = 0; + SmoozIIR->Text = 45; + DemLpfOrder->Text = 5; + SmoozFreq->Text = 70; + ATC->Checked = FALSE; + ATCTime->Text = 4; + pllVCOGain->Text = 3; + pllLoopOrder->Text = 2; + pllLoopFC->Text = 250; + pllOutOrder->Text = 4; + pllOutFC->Text = 200; + HamBtnClick(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::RadioBtnClick(TObject *Sender) +{ + // ƒ‰ƒWƒIƒRƒ“ƒgƒ[ƒ‹ + TRADIOSetDlg *pBox = new TRADIOSetDlg(this); + + if( (PortName->Text != "NONE") && !strcmp(AnsiString(PortName->Text).c_str(), RADIO.StrPort) ){ //JA7UDE 0428 + strcpy(RADIO.StrPort, "NONE"); + RADIO.change = 1; + } + if( pBox->Execute() == TRUE ){ + if( (PortName->Text != "NONE") && !strcmp(AnsiString(PortName->Text).c_str(), RADIO.StrPort) ){ //JA7UDE 0428 + PortName->Text = "NONE"; + } + } + delete pBox; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::BaudRateChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + if( sys.m_TxPort ) COMM.change = 1; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::BitLenClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + if( sys.m_TxPort ) COMM.change = 1; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::TxdJobClick(TObject *Sender) +{ + TTxdDlgBox *pBox = new TTxdDlgBox(this); + m_TxdJob = pBox->Execute(m_TxdJob); + delete pBox; +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::lmsTapChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + int dd; + if( sscanf(AnsiString(lmsTap->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd >= 0) && (dd <= 512) ){ + if( lmsType->Checked ){ + m_NotchTap = dd; + } + else { + m_lmsTap = dd; + } + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBHelpClick(TObject *Sender) +{ +/* +Demodulator: demodulatortab.htm +AFC/ATC/PLL: afcatcplltab.htm +Decode: decodetab.htm +TX: txtab.htm +Font/Window: fontwindowtab.htm +Misc: misctab.htm +SoundCard: soundtab.htm +*/ + LPCSTR pContext; + if( Page->ActivePage == TabTx ){ + pContext = "txtab.htm"; + } + else if( Page->ActivePage == TabDem2 ){ + pContext = "afcatcplltab.htm"; + } + else if( Page->ActivePage == TabPara ){ + pContext = "decodetab.htm"; + } + else if( Page->ActivePage == TabFont ){ + pContext = "fontwindowtab.htm"; + } + else if( Page->ActivePage == TabMisc ){ + pContext = "misctab.htm"; + } + else if( Page->ActivePage == TabSound ){ + pContext = "soundtab.htm"; + } + else { + pContext = "demodulatortab.htm"; + } + ShowHtmlHelp(pContext); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::PortNameDropDown(TObject *Sender) +{ + if( m_DisEvent ) return; + + if( !m_MMList.IsQuery() ){ + m_MMList.QueryList("FSK"); + for( int i = 0; i < m_MMList.GetCount(); i++ ){ + PortName->Items->Add(m_MMList.GetItemName(i)); + } + PortName->DropDownCount = PortName->Items->Count; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionDlg::DevNoDropDown(TObject *Sender) +{ + +//AA6YQ 1.66B - handled in TOptionDlg::TOptionDlg +/* + if( m_DisEvent ) return; + + if( !m_MMListW.IsQuery() ){ + m_MMListW.QueryList("MMW"); + for( int i = 0; i < m_MMListW.GetCount(); i++ ){ + DevNo->Items->Add(m_MMListW.GetItemName(i)); + } + DevNo->DropDownCount = m_MMListW.GetCount() + 5; + } + +*/ +} +//--------------------------------------------------------------------------- + +// Value = 5148 Celeron 1.06GHz 2003/10/22 +void __fastcall TOptionDlg::DemBpfBtnMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + if( Button == mbRight ){ + CWaitCursor w; + TSound *pSound = MmttyWd->pSound; + if( pSound->m_ReqSpeedTest ) return; + pSound->m_ReqSpeedTest = 1; + while(pSound->m_ReqSpeedTest) ::Sleep(100); + InfoMB("%u", pSound->m_SpeedValue); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionDlg::DevOutNoDropDown(TObject *Sender) +{ + +//AA6YQ 1.66B - handled in TOptionDlg::TOptionDlg +/* + if( m_DisEvent ) return; + + if( !m_MMListW.IsQuery() ){ + m_MMListW.QueryList("MMW"); + for( int i = 0; i < m_MMListW.GetCount(); i++ ){ + DevOutNo->Items->Add(m_MMListW.GetItemName(i)); + } + DevOutNo->DropDownCount = m_MMListW.GetCount() + 5; + } + + */ +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionDlg::InputSoundcardsClick(TObject *Sender) +{ + //AA6YQ 1.66 + DevNo->ItemIndex = InputSoundcards->ItemIndex+1; +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionDlg::DevNoClick(TObject *Sender) +{ + //AA6YQ 1.66 + if (IsSoundcard (AnsiString(DevNo->Text).c_str())) { //JA7UDE 0428 + InputSoundcards->ItemIndex = atoi(AnsiString(DevNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428 + } + else { + InputSoundcards->ItemIndex =-1; + } +} +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- + +void __fastcall TOptionDlg::OutputSoundcardsClick(TObject *Sender) +{ + //AA6YQ 1.66 + DevOutNo->ItemIndex = OutputSoundcards->ItemIndex+1; +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionDlg::DevOutNoClick(TObject *Sender) +{ + //AA6YQ 1.66 + if (IsSoundcard (AnsiString(DevOutNo->Text).c_str())) { //JA7UDE 0428 + OutputSoundcards->ItemIndex = atoi(AnsiString(DevOutNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428 + } + else { + OutputSoundcards->ItemIndex =-1; + } +} +//--------------------------------------------------------------------------- +void __fastcall TOptionDlg::SBAA6YQClick(TObject *Sender) +{ + TFreqDispDlg *pBox = new TFreqDispDlg(this); + pBox->Timer->Enabled = TRUE; + pBox->m_Max = 3000; + pDem->m_AA6YQ.Create(); + CFIR2 *pBPF = &pDem->m_AA6YQ.m_BPF; + CFIR2 *pBEF = &pDem->m_AA6YQ.m_BEF; + pBox->Execute(pBPF->GetHP(), pBPF->GetTap(), pBEF->GetHP(), pBEF->GetTap(), 1); + delete pBox; +} +//--------------------------------------------------------------------------- + diff --git a/Option.dfm b/Option.dfm new file mode 100644 index 0000000000000000000000000000000000000000..01f7a1968c73012b54e636524b3b73cad6263d26 GIT binary patch literal 25967 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. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef OptionH +#define OptionH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "MMLink.h" +#include "Rtty.h" +//---------------------------------------------------------------------------- +class TOptionDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TPageControl *Page; + TTabSheet *TabDem; + TTabSheet *TabPara; + TRadioGroup *BitLen; + TRadioGroup *StopLen; + TRadioGroup *ParitySel; + TComboBox *BaudRate; + TLabel *LBaudRate; + TGroupBox *GrpDisc; + TLabel *L6; + TLabel *L7; + TLabel *LTAPFW; + TComboBox *MarkFreq; + TComboBox *ShiftFreq; + TComboBox *FilterTap; + TLabel *Label9; + TLabel *Label10; + TGroupBox *GrpLPF; + TLabel *LLPF; + TComboBox *SmoozFreq; + TLabel *Label12; + TButton *HamBtn; + TCheckBox *CheckInv; + TTabSheet *TabTx; + TGroupBox *GPTT; + TComboBox *PortName; + TLabel *L13; + TCheckBox *PttInv; + TGroupBox *GB5; + TLabel *L14; + TEdit *EditCall; + TGroupBox *GB6; + TCheckBox *CheckTXUOS; + TTabSheet *TabFont; + TEdit *FontName; + TLabel *LFont; + TGroupBox *GrpDispAdj; + TLabel *LW; + TEdit *FontAdjX; + TEdit *FontAdjY; + TLabel *LH; + TFontDialog *FontDialog; + TButton *FontBtn; + TCheckBox *CheckZero; + TCheckBox *CheckDblSft; + TGroupBox *GB9; + TGroupBox *GB10; + TCheckBox *CheckTXBPF; + TLabel *L25; + TComboBox *TxBpfTap; + TTrackBar *TBOutLvl; + TLabel *LOutLvl; + TSpeedButton *SBM1; + TSpeedButton *SBM2; + TSpeedButton *SBM3; + TSpeedButton *SBM4; + TSpeedButton *SBM8; + TSpeedButton *SBM7; + TSpeedButton *SBM6; + TSpeedButton *SBM5; + TSpeedButton *SBM9; + TSpeedButton *SBM10; + TSpeedButton *SBM11; + TSpeedButton *SBM12; + TSpeedButton *SBM13; + TSpeedButton *SBM14; + TSpeedButton *SBM15; + TSpeedButton *SBM16; + TGroupBox *GrpInBtn; + TSpeedButton *SBIN1; + TSpeedButton *SBIN2; + TSpeedButton *SBIN3; + TSpeedButton *SBIN4; + TTabSheet *TabMisc; + TCheckBox *CheckTXLPF; + TComboBox *TxLpfFreq; + TLabel *Label28; + TLabel *L29; + TGroupBox *GrpFilter; + TButton *DemBpfBtn; + TButton *PreBpfBtn; + TSpeedButton *DispTxBpf; + TCheckBox *CheckMajority; + TCheckBox *CheckIgnoreFream; + TGroupBox *GrpRx; + TLabel *LRXB; + TLabel *LRXC; + TPanel *PCRXBack; + TPanel *PCRXChar; + TColorDialog *ColorDialog; + TGroupBox *GrpIn; + TLabel *LINB; + TLabel *LINC; + TPanel *PCINBack; + TPanel *PCINChar; + TLabel *LINS; + TPanel *PCINTx; + TCheckBox *CheckPalette; + TPanel *PCLow; + TPanel *PCHigh; + TLabel *Label37; + TLabel *Label38; + TRadioGroup *TxPort; + TPageControl *PageBPF; + TTabSheet *TabBPF; + TTabSheet *TabLMS; + TLabel *LDelay; + TComboBox *lmsDelay; + TLabel *LMU2; + TLabel *LGM; + TComboBox *lmsMU2; + TComboBox *lmsGM; + TCheckBox *lmsAGC; + TCheckBox *CheckRXBPFAFC; + TLabel *LFW; + TComboBox *RxBpfFW; + TCheckBox *SelLMS; + TCheckBox *SelBPF; + TLabel *L31; + TComboBox *lmsTap; + TLabel *L30; + TComboBox *RxBpfTap; + TLabel *LCharW; + TTrackBar *TBCharWait; + TLabel *Label40; + TTrackBar *TBDiddleWait; + TCheckBox *lmsBPF; + TComboBox *IIRFW; + TLabel *LHZ; + TTabSheet *TabDem2; + TGroupBox *GB7; + TLabel *Label16; + TLabel *L17; + TLabel *L18; + TCheckBox *CheckAFC; + TGroupBox *GrpLimit; + TLabel *L8; + TComboBox *LimitGain; + TComboBox *AFCTime; + TComboBox *AFCSQ; + TComboBox *AFCSweep; + TRadioGroup *DemType; + TCheckBox *lmsInv; + TGroupBox *GB1; + TLabel *Label1; + TGroupBox *GroupBox17; + TLabel *LLoopOrder; + TComboBox *pllVCOGain; + TComboBox *pllLoopOrder; + TLabel *L3; + TComboBox *pllLoopFC; + TLabel *Label4; + TGroupBox *GroupBox18; + TLabel *LOutOrder; + TLabel *L44; + TLabel *Label45; + TComboBox *pllOutOrder; + TComboBox *pllOutFC; + TRadioGroup *DefStopBit; + TGroupBox *GSFont; + TEdit *WinFont; + TButton *WinFontBtn; + TLabel *L46; + TLabel *L47; + TEdit *BtnFont; + TButton *BtnFontBtn; + TButton *JapaneseBtn; + TButton *EnglishBtn; + TComboBox *FontAdj; + TComboBox *BtnFontAdj; + TGroupBox *GB2; + TPanel *PCXY; + TCheckBox *XYInv; + TCheckBox *WaitDiddle; + TRadioGroup *FixShift; + TRadioGroup *DemLpf; + TLabel *LSmooz; + TComboBox *DemLpfOrder; + TSpeedButton *DispDemLpf; + TComboBox *SmoozIIR; + TSpeedButton *DispLoopLPF; + TSpeedButton *DispOutLPF; + TCheckBox *LimitOver; + TGroupBox *GrpCard; + TLabel *Label27; + TComboBox *FifoRX; + TRadioGroup *SoundPriority; + TGroupBox *GB3; + TSpeedButton *SBClockAdj; + TLabel *Label5; + TGroupBox *GB8; + TRadioGroup *DiddleSel; + TCheckBox *RandomDiddle; + TCheckBox *WaitTimer; + TCheckBox *MacroImm; + TCheckBox *TxDisRev; + TButton *DefBtn; + TGroupBox *GrpATC; + TCheckBox *ATC; + TComboBox *ATCTime; + TLabel *L2; + TCheckBox *MemWin; + TButton *RadioBtn; + TComboBox *EditSamp; + TCheckBox *lmsType; + TCheckBox *lmsTwo; + TLabel *LRXS; + TPanel *PCRXTXChar; + TButton *TxdJob; + TRadioGroup *Source; + TCheckBox *TxFixShift; + TSpeedButton *SBHelp; + TCheckBox *LimitAGC; + TComboBox *FifoTX; + TLabel *L15; + TRadioGroup *RGLoop; + TLabel *L16; + TEdit *TxOff; + TLabel *L1; + TGroupBox *GB4; + TRadioGroup *RGC; + TGroupBox *GroupBox1; + TComboBox *DevNo; + TComboBox *DevOutNo; + TLabel *Label2; + TLabel *Label3; + TTabSheet *TabSound; + TRadioGroup *InputSoundcards; + TRadioGroup *OutputSoundcards; + TComboBox *Tones; + TGroupBox *GB20; + TEdit *DefMarkFreq; + TEdit *DefShift; + TCheckBox *CBFix45; + TCheckBox *CBAA6YQ; + TSpeedButton *SBAA6YQ; + void __fastcall HamBtnClick(TObject *Sender); + + + + + + + + + void __fastcall FontBtnClick(TObject *Sender); + void __fastcall SBMClick(TObject *Sender); + void __fastcall SBIN1Click(TObject *Sender); + void __fastcall SBIN2Click(TObject *Sender); + void __fastcall SBIN3Click(TObject *Sender); + void __fastcall SBIN4Click(TObject *Sender); + + void __fastcall DemBpfBtnClick(TObject *Sender); + void __fastcall PreBpfBtnClick(TObject *Sender); + void __fastcall DispTxBpfClick(TObject *Sender); + void __fastcall PCRXBackClick(TObject *Sender); + void __fastcall PCRXCharClick(TObject *Sender); + void __fastcall PCINBackClick(TObject *Sender); + void __fastcall PCINCharClick(TObject *Sender); + void __fastcall PCINTxClick(TObject *Sender); + void __fastcall PCLowClick(TObject *Sender); + void __fastcall PCHighClick(TObject *Sender); + void __fastcall PortNameChange(TObject *Sender); + + void __fastcall PCXYClick(TObject *Sender); + + + void __fastcall WinFontBtnClick(TObject *Sender); + void __fastcall BtnFontBtnClick(TObject *Sender); + void __fastcall JapaneseBtnClick(TObject *Sender); + void __fastcall EnglishBtnClick(TObject *Sender); + + + + + void __fastcall DispDemLpfClick(TObject *Sender); + void __fastcall DispLoopLPFClick(TObject *Sender); + void __fastcall DispOutLPFClick(TObject *Sender); + void __fastcall SBClockAdjClick(TObject *Sender); + void __fastcall DefBtnClick(TObject *Sender); + void __fastcall RadioBtnClick(TObject *Sender); + + + void __fastcall BaudRateChange(TObject *Sender); + + void __fastcall BitLenClick(TObject *Sender); + void __fastcall PCRXTXCharClick(TObject *Sender); + + void __fastcall TxdJobClick(TObject *Sender); + void __fastcall lmsTapChange(TObject *Sender); + void __fastcall SBHelpClick(TObject *Sender); + + void __fastcall PortNameDropDown(TObject *Sender); + void __fastcall DevNoDropDown(TObject *Sender); + + void __fastcall DemBpfBtnMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + + + void __fastcall DevOutNoDropDown(TObject *Sender); + + void __fastcall InputSoundcardsClick(TObject *Sender); + void __fastcall OutputSoundcardsClick(TObject *Sender); + + void __fastcall DevNoClick(TObject *Sender); + void __fastcall DevOutNoClick(TObject *Sender); + + void __fastcall SBAA6YQClick(TObject *Sender); +private: + int m_FontCharset; + int m_FontStyle; + int m_FontSize; + + int m_DisEvent; + + CFSKDEM *pDem; + + TSpeedButton *__fastcall GetSB(int n); + int __fastcall GetMacroIndex(TObject *Sender); + void __fastcall UpdateUI(void); + void __fastcall UpdateMacro(void); + void __fastcall SBINClick(int n); + void __fastcall SetCustomColor(void); + void __fastcall AddCustomColor(TColor col); + + int __fastcall IsSoundcard(LPCSTR t); + + BYTE m_WinFontCharset; + BYTE m_BtnFontCharset; + int m_WinFontStyle; + int m_BtnFontStyle; + + int m_TxdJob; + double m_lmsTap; + double m_NotchTap; + CMMList m_MMList; + CMMList m_MMListW; +public: + virtual __fastcall TOptionDlg(TComponent* AOwner); + + int __fastcall Execute(CFSKDEM *fp, CFSKMOD *mp); + int m_ColorChange; +}; +//---------------------------------------------------------------------------- +//extern TAgcSetDlg *AgcSetDlg; +extern int PageIndex; +//---------------------------------------------------------------------------- +#endif diff --git a/PlayDlg.cpp b/PlayDlg.cpp new file mode 100644 index 0000000..0a853e2 --- /dev/null +++ b/PlayDlg.cpp @@ -0,0 +1,102 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "PlayDlg.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TPlayDlgBox *PlayDlgBox; +//--------------------------------------------------------------------- +__fastcall TPlayDlgBox::TPlayDlgBox(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + + pWave = NULL; + m_DisEvent = 0; + + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "Adjust Play position"; + OKBtn->Caption = "Hide"; + StopBtn->Caption = "Stop"; + LRec->Caption = "RecTime"; + LNow->Caption = "NowTime"; + } +} +//--------------------------------------------------------------------- +void __fastcall TPlayDlgBox::UpdateItem(void) +{ + char bf[32]; + + sprintf(bf, "%u[s]", int(pWave->m_length * 0.5 / SampFreq)); + LTime->Caption = bf; + sprintf(bf, "%u[s]", int(pWave->GetPos() * 0.5 / SampFreq)); + LPos->Caption = bf; + m_DisEvent++; + ScrollBar->Max = int(pWave->m_length * 0.5 / SampFreq); + ScrollBar->Position = int(pWave->GetPos() * 0.5 / SampFreq); + CheckPause->Checked = pWave->m_pause; + m_DisEvent--; +} +//--------------------------------------------------------------------- +void __fastcall TPlayDlgBox::Execute(CWaveFile *wp) +{ + pWave = wp; + pWave->m_autopause = 1; + LName->Caption = pWave->m_FileName; + UpdateItem(); + ShowModal(); + pWave->m_autopause = 0; +} +//--------------------------------------------------------------------- +void __fastcall TPlayDlgBox::TimerTimer(TObject *Sender) +{ + UpdateItem(); +} +//--------------------------------------------------------------------------- +void __fastcall TPlayDlgBox::ScrollBarChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + int pos = ScrollBar->Position; + pWave->Seek(pos * SampFreq*2); + if( !CheckPause->Checked ) pWave->m_pause = 0; + char bf[32]; + sprintf(bf, "%u[s]", pos); + LPos->Caption = bf; +} +//--------------------------------------------------------------------------- +void __fastcall TPlayDlgBox::CheckPauseClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + pWave->m_pause = CheckPause->Checked; +} +//--------------------------------------------------------------------------- +void __fastcall TPlayDlgBox::StopBtnClick(TObject *Sender) +{ + pWave->FileClose(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- diff --git a/PlayDlg.dfm b/PlayDlg.dfm new file mode 100644 index 0000000000000000000000000000000000000000..562b35761b62f209ada16d74d4f482447f1e0657 GIT binary patch literal 1085 zcmaJ=J&)5c7Cb+-Qq?8sy8#NXm%ON-QHPN|oNL+3Pd+(G{KR>jtN%Oaoq6{p;N^~A@gYG=UJMshOxG3=}fC7yFP4 zw+t3=pm?Q{BE?gXr*N=AUMjT9Z@( literal 0 HcmV?d00001 diff --git a/PlayDlg.h b/PlayDlg.h new file mode 100644 index 0000000..6a6b623 --- /dev/null +++ b/PlayDlg.h @@ -0,0 +1,69 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef PlayDlgH +#define PlayDlgH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Sound.h" +//---------------------------------------------------------------------------- +class TPlayDlgBox : public TForm +{ +__published: + TButton *OKBtn; + TScrollBar *ScrollBar; + TLabel *LRec; + TLabel *LNow; + TLabel *LTime; + TLabel *LPos; + TTimer *Timer; + TLabel *LName; + TCheckBox *CheckPause; + TButton *StopBtn; + void __fastcall TimerTimer(TObject *Sender); + void __fastcall ScrollBarChange(TObject *Sender); + void __fastcall CheckPauseClick(TObject *Sender); + void __fastcall StopBtnClick(TObject *Sender); +private: + CWaveFile *pWave; + + int m_DisEvent; +public: + virtual __fastcall TPlayDlgBox(TComponent* AOwner); + + void __fastcall Execute(CWaveFile *wp); + void __fastcall UpdateItem(void); + +}; +//---------------------------------------------------------------------------- +//extern TPlayDlgBox *PlayDlgBox; +//---------------------------------------------------------------------------- +#endif diff --git a/QsoDlg.cpp b/QsoDlg.cpp new file mode 100644 index 0000000..754ac11 --- /dev/null +++ b/QsoDlg.cpp @@ -0,0 +1,548 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "QsoDlg.h" +#include "Country.h" +#include "MmcgDlg.h" +#include "Main.h" +#include "TextEdit.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TQSODlgBox *QSODlgBox; +//--------------------------------------------------------------------- +__fastcall TQSODlgBox::TQSODlgBox(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + LStat->Font->Name = ((TForm *)AOwner)->Font->Name; + LStat->Font->Charset = ((TForm *)AOwner)->Font->Charset; + m_fp = NULL; + + EditHis->Items->Assign(MmttyWd->HisRST->Items); + EditMy->Items->Assign(MmttyWd->MyRST->Items); + if( Font->Charset != SHIFTJIS_CHARSET ){ + Grid->Font->Name = ((TForm *)AOwner)->Font->Name; + Grid->Font->Charset = ((TForm *)AOwner)->Font->Charset; + Caption = "QSO Data"; + CancelBtn->Caption = "Close"; + OKBtn->Caption = "Write"; + RefBtn->Caption = "ReceiveWindow"; + } + switch(Log.m_LogSet.m_TimeZone){ + case 'I': + if( lcid == LANG_KOREAN ){ + LTimeZone->Caption = "KST"; + } + else { + LTimeZone->Caption = "JST"; + } + break; + default: + LTimeZone->Caption = "UTC"; + break; + } + if( Log.m_LogSet.m_DateType & 1 ){ + Grid->ColWidths[0] = (Grid->ColWidths[0] * 10) / 8; + } + m_EditFlag = 0; +} + +void __fastcall TQSODlgBox::UpdateBtn(void) +{ + OKBtn->Enabled = m_EditFlag; +} + +void __fastcall TQSODlgBox::SetCountry(void) +{ + m_Country = ""; + + if( !Cty.IsData() ) return; + LPCSTR p = ClipCC(m_fp->GetText()); + if( !(*p) ) return; + + SYSTEMTIME now; + GetUTC(&now); + + WORD tim = WORD((now.wHour * 60 + now.wMinute) * 30 + now.wSecond/2); + + int n; + if( (n = Cty.GetNoP(p))!=0 ){ + CTL *cp = Cty.GetCTL(n-1); + char bf[256]; + char tbf[5]; + tbf[0] = 0; + if( cp->TD != NULL ){ + tim = AdjustRolTimeUTC(tim, *cp->TD); + if( tim ){ + tim /= WORD(30); + sprintf(tbf, "%02u%02u%c", tim / 60, tim % 60, *cp->TD); + } + } + sprintf(bf, " %s/%s %s %s", + (cp->Name!=NULL) ? cp->Name : "", + (cp->Cont!=NULL) ? cp->Cont : "", + tbf, + (cp->QTH!=NULL) ? cp->QTH : "" + ); + m_Country = bf; + } +} + +int __fastcall TQSODlgBox::Execute(CLogFind *fp, SDMMLOG *sp, int n) +{ + m_fp = fp; + UpdateTextData(sp, n); + Grid->RowCount = fp->GetCount() ? fp->GetCount() + 1 : 2; +// Grid->TopRow = 1; + Grid->Row = 1; + Grid->Enabled = FALSE; + for( int i = 0; i < fp->GetCount(); i++ ){ + if( n == fp->pFindTbl[i] ){ + Grid->Enabled = TRUE; + Grid->Row = i + 1; + Grid->TopRow = (i > 4) ? Grid->Row - 4 : 1; + break; + } + } + SetCountry(); + char bf[512]; + strcpy(bf, ( Font->Charset != SHIFTJIS_CHARSET ) ? "Initial Data":"QSOƒf[ƒ^‰Šú’l"); + if( Grid->Enabled == TRUE ){ + if( sp->btime ){ + sprintf(bf, "[%s]", fp->GetText()); + strcat(bf, m_Country.c_str()); + } + else if( *fp->GetText() ){ + sprintf(bf, "[%s]", fp->GetText()); + strcat(bf, m_Country.c_str()); + } + } + Caption = bf; + UpdateStat(); + m_EditFlag = 0; + UpdateBtn(); + m_CurNo = n; + if( !sys.m_QSOGridWidths.IsEmpty() ){ + SetGridWidths(Grid, sys.m_QSOGridWidths.c_str()); + } + if( ShowModal() == IDOK ){ + if( m_EditFlag ){ + UpdateCurData(&m_sd); + Log.PutData(&m_sd, m_CurNo); + } + } + GetGridWidths(sys.m_QSOGridWidths, Grid); + if( m_CurNo == n ){ + memcpy(sp, &m_sd, sizeof(SDMMLOG)); + } + else { + Log.GetData(sp, n); + } + return TRUE; +} + +int __fastcall TQSODlgBox::ShowFind(CLogFind *fp) +{ + m_fp = fp; + if( fp->GetCount() ){ + Log.GetData(&m_sd, fp->pFindTbl[0]); + m_CurNo = fp->pFindTbl[0]; + } + else { + memset(&m_sd, 0, sizeof(SDMMLOG)); + OKBtn->Enabled = FALSE; + } + SetCountry(); + char bf[512]; + UpdateTextData(&m_sd, fp->pFindTbl[0]); + Grid->RowCount = fp->GetCount() ? fp->GetCount() + 1 : 2; + Grid->TopRow = 1; + Grid->Row = 1; + sprintf(bf, "[%s]", fp->GetText()); + strcat(bf, m_Country.c_str()); + Caption = bf; + UpdateStat(); + m_EditFlag = 0; + UpdateBtn(); + if( ShowModal() == IDOK ){ + if( m_EditFlag ){ + UpdateCurData(&m_sd); + Log.PutData(&m_sd, m_CurNo); + } + return TRUE; + } + else { + return FALSE; + } +} + +void __fastcall TQSODlgBox::UpdateTextData(SDMMLOG *sp, int n) +{ + m_CurNo = n; + memcpy(&m_sd, sp, sizeof(SDMMLOG)); + UpdateTextData(&m_sd); +} + +void __fastcall TQSODlgBox::UpdateTextData(SDMMLOG *sp) +{ + SDMMLOG sd; + memcpy(&sd, sp, sizeof(SDMMLOG)); + if( Log.m_LogSet.m_TimeZone != 'I' ){ + JSTtoUTC(&sd); + } + EditDate->Text = Log.GetDateString(&sd); + EditBgn->Text = Log.GetTimeString(sd.btime); + EditEnd->Text = Log.GetTimeString(sd.etime); + EditCall->Text = sp->call; + EditName->Text = sp->name; + EditQTH->Text = sp->qth; + EditHis->Text = sp->ur; + EditMy->Text = sp->my; + EditBand->Text = Log.GetFreqString(sp->band, sp->fq); + EditMode->Text = Log.GetModeString(sp->mode); + EditRem->Text = sp->rem; + EditQSL->Text = sp->qsl; + if( sp->env ){ + EditEnv->Text = sp->env; + } + else { + EditEnv->Text = ""; + } + EditOpt1->Text = Log.GetOptStr(0, sp); + EditOpt2->Text = Log.GetOptStr(1, sp); + EditUsr1->Text = Log.GetOptStr(2, sp); + EditUsr2->Text = Log.GetOptStr(3, sp); + EditS->Text = sp->send; + EditR->Text = sp->recv; + EditM->Text = sp->cq; + EditPow->Text = sp->pow; + m_EditFlag = 0; + UpdateBtn(); +} + +void __fastcall TQSODlgBox::UpdateCurData(SDMMLOG *sp) +{ + int y, m, d, h; + + switch(Log.m_LogSet.m_DateType){ + case 2: // dd-mm-yy + case 3: // dd-mm-yyyy + if( sscanf(AnsiString(EditDate->Text).c_str(), "%u.%u.%u", &d, &m, &y) == 3 ){ //JA7UDE 0428 + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + break; + case 4: // mm-dd-yy + case 5: // mm-dd-yyyy + if( sscanf(AnsiString(EditDate->Text).c_str(), "%u.%u.%u", &m, &d, &y) == 3 ){ //JA7UDE 0428 + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + break; + default: // yy-mm-dd, yyyy-mm-dd + if( sscanf(AnsiString(EditDate->Text).c_str(), "%u.%u.%u", &y, &m, &d) == 3 ){ //JA7UDE 0428 + sp->year = BYTE(y % 100); + sp->date = WORD(m * 100 + d); + } + break; + } + if( !EditBgn->Text.IsEmpty() ){ + if( sscanf(AnsiString(EditBgn->Text).c_str(), "%u", &d) == 1){ //JA7UDE 0428 + h = d / 100; + m = d % 100; + if( (sp->btime / 30) != (h * 60 + m) ){ + sp->btime = WORD((h * 60 + m) * 30 + 1); + } + } + } + if( !EditEnd->Text.IsEmpty() ){ + if( sscanf(AnsiString(EditEnd->Text).c_str(), "%u", &d) == 1){ //JA7UDE 0428 + h = d / 100; + m = d % 100; + if( (sp->etime / 30) != (h * 60 + m) ){ + sp->etime = WORD((h * 60 + m) * 30 + 1); + } + } + } + StrCopy(sp->call, AnsiString(EditCall->Text).c_str(), MLCALL); //JA7UDE 0428 + jstrupr(sp->call); + StrCopy(sp->name, AnsiString(EditName->Text).c_str(), MLNAME); //JA7UDE 0428 + if( Log.m_LogSet.m_UpperName ) jstrupr(sp->name); + StrCopy(sp->qth, AnsiString(EditQTH->Text).c_str(), MLQTH); //JA7UDE 0428 + if( Log.m_LogSet.m_UpperQTH ) jstrupr(sp->qth); + StrCopy(sp->ur, AnsiString(EditHis->Text).c_str(), MLRST); //JA7UDE 0428 + jstrupr(sp->ur); + StrCopy(sp->my, AnsiString(EditMy->Text).c_str(), MLRST); //JA7UDE 0428 + jstrupr(sp->my); + Log.SetFreq(sp, AnsiString(EditBand->Text).c_str()); //JA7UDE 0428 + Log.SetMode(sp, AnsiString(EditMode->Text).c_str()); //JA7UDE 0428 + StrCopy(sp->rem, AnsiString(EditRem->Text).c_str(), MLREM); //JA7UDE 0428 + if( Log.m_LogSet.m_UpperREM ) jstrupr(sp->rem); + StrCopy(sp->qsl, AnsiString(EditQSL->Text).c_str(), MLQSL); //JA7UDE 0428 + if( Log.m_LogSet.m_UpperQSL ) jstrupr(sp->qsl); + if( sscanf(AnsiString(EditEnv->Text).c_str(), "%u", &d) == 1){ //JA7UDE 0428 + sp->env = WORD(d); + } + else { + sp->env = 0; + } + Log.SetOptStr(0, sp, AnsiString(EditOpt1->Text).c_str()); //JA7UDE 0428 + Log.SetOptStr(1, sp, AnsiString(EditOpt2->Text).c_str()); //JA7UDE 0428 + Log.SetOptStr(2, sp, AnsiString(EditUsr1->Text).c_str()); //JA7UDE 0428 + Log.SetOptStr(3, sp, AnsiString(EditUsr2->Text).c_str()); //JA7UDE 0428 + sp->send = *EditS->Text.c_str(); //JA7UDE 0428 + sp->recv = *EditR->Text.c_str(); //JA7UDE 0428 + sp->cq = *EditM->Text.c_str(); //JA7UDE 0428 + sp->cq = char(toupper(sp->cq)); + StrCopy(sp->pow, AnsiString(EditPow->Text).c_str(), MLPOW); //JA7UDE 0428 + jstrupr(sp->pow); + if( Log.m_LogSet.m_TimeZone != 'I' ){ + UTCtoJST(sp); + } +} +//--------------------------------------------------------------------- +void __fastcall TQSODlgBox::UpdateStat(void) +{ + char bf[256]; + + int cmp1max = m_fp->m_FindCmp1Max; + int cmp2max = m_fp->m_FindCmp2Max; + if( cmp2max && (m_fp->pFindTbl[0] == Log.m_CurNo) ){ + cmp1max--; + cmp2max--; + } + if( Font->Charset != SHIFTJIS_CHARSET ){ + if( !cmp2max ){ + strcpy(bf, "No Data"); + } + else if( cmp1max != cmp2max ){ + sprintf(bf, "Perfect: %u SameCall: %u", cmp1max, cmp2max - cmp1max); + } + else { + sprintf(bf, "Perfect: %u", cmp1max ); + } + } + else { + if( !cmp2max ){ + strcpy(bf, "ˆê’v‚È‚µ"); + } + else if( cmp1max != cmp2max ){ + sprintf(bf, "Š®‘Sˆê’v: %uŒ “¯ˆêƒR[ƒ‹: %uŒ", cmp1max, cmp2max - cmp1max); + } + else { + sprintf(bf, "Š®‘Sˆê’v: %uŒ", cmp1max ); + } + } + LStat->Caption = bf; +} +//--------------------------------------------------------------------- +void __fastcall TQSODlgBox::GridDrawCell(TObject *Sender, int Col, int Row, + TRect &Rect, TGridDrawState State) +{ + char bf[256]; + SDMMLOG sd; + + Grid->Canvas->FillRect(Rect); + int X = Rect.Left + 4; + int Y = Rect.Top + 2; + + if( Row ){ + Row--; + bf[0] = 0; + if( Row < m_fp->GetCount() ){ + Log.GetData(&sd, m_fp->pFindTbl[Row]); + if( ((Row+1) != Grid->Row)||(Col != Grid->Col) ){ + if( m_fp->pFindTbl[Row] == Log.m_CurNo ){ + Grid->Canvas->Font->Color = clLtGray; + } + else if( Row < m_fp->m_FindCmp1Max ){ + Grid->Canvas->Font->Color = clRed; + } + else if( Row < m_fp->m_FindCmp2Max ){ + Grid->Canvas->Font->Color = clGreen; + } + } + if( Log.m_LogSet.m_TimeZone != 'I' ){ + JSTtoUTC(&sd); + } + } + else { + memset(&sd, 0, sizeof(SDMMLOG)); + } + switch(Col){ + case 0: // Date + strcpy(bf, Log.GetDateString(&sd)); + break; + case 1: // Time + strcpy(bf, Log.GetTimeString(sd.btime)); + break; + case 2: // Call + strcpy(bf, sd.call); + break; + case 3: // M + bf[0] = sd.cq; + bf[1] = 0; + break; + case 4: // HisRST + strcpy(bf, sd.ur); + break; + case 5: // MyRST + strcpy(bf, sd.my); + break; + case 6: // Band + strcpy(bf, Log.GetFreqString(sd.band, sd.fq)); + break; + case 7: // Mode + strcpy(bf, Log.GetModeString(sd.mode)); + break; + case 8: // Pow + strcpy(bf, sd.pow); + break; + case 9: // Name + strcpy(bf, sd.name); + break; + case 10: // QTH + strcpy(bf, sd.qth); + break; + case 11: // S + bf[0] = sd.send; + bf[1] = 0; + break; + case 12: // R + bf[0] = sd.recv; + bf[1] = 0; + break; + case 13: // REM + strcpy(bf, sd.rem); + break; + case 14: // QSL + strcpy(bf, sd.qsl); + break; + case 15: // etime; + strcpy(bf, Log.GetTimeString(sd.etime)); + break; + case 16: // Env + if( sd.env ) sprintf(bf, "%u", sd.env); + break; + case 17: // Opt1 + strcpy(bf, sd.opt1); + break; + case 18: // Opt2 + strcpy(bf, sd.opt2); + break; + case 19: // Usr1 + break; + case 20: // Usr2 + break; + } + Grid->Canvas->TextRect(Rect, X, Y, bf); + } + else { // ƒ^ƒCƒgƒ‹ + LPCSTR _tt[]={ + "Date","JST","Call","M", "His","My","Band","Mode","Pow","Name","QTH","S","R", + "REM","QSL", "End", "Env", "Opt1", "Opt2", "Usr1", "Usr2", + }; + if( Col == 1 ){ + Grid->Canvas->TextRect(Rect, X, Y, LTimeZone->Caption); + } + else { + Grid->Canvas->TextRect(Rect, X, Y, _tt[Col]); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TQSODlgBox::GridSelectCell(TObject *Sender, int Col, int Row, + bool &CanSelect) +{ + int n = Row - 1; + if( n < m_fp->GetCount() ){ + if( m_CurNo != m_fp->pFindTbl[n] ){ + if( m_EditFlag ){ + UpdateCurData(&m_sd); + Log.PutData(&m_sd, m_CurNo); + m_EditFlag = 0; + } + m_CurNo = m_fp->pFindTbl[n]; + Log.GetData(&m_sd, m_CurNo); + UpdateTextData(&m_sd, m_CurNo); + Grid->Invalidate(); + UpdateBtn(); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TQSODlgBox::SBMMCGClick(TObject *Sender) +{ + TMmcgDlgBox *pBox = new TMmcgDlgBox(this); + + AnsiString call = EditCall->Text; + AnsiString qth = EditQTH->Text; + AnsiString opt = EditOpt1->Text; + if( pBox->Execute( call, qth, opt) == TRUE ){ //JA7UDE 0428 + EditQTH->Text = qth; + EditOpt1->Text = opt; + } + delete pBox; +} +//--------------------------------------------------------------------------- +void __fastcall TQSODlgBox::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + if( Key == VK_F7 ){ + Key = 0; + } +} +//--------------------------------------------------------------------------- +void __fastcall TQSODlgBox::FormKeyUp(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + if( Key == VK_F7 ){ + SBMMCGClick(NULL); + Key = 0; + } +} +//--------------------------------------------------------------------------- +void __fastcall TQSODlgBox::RefBtnClick(TObject *Sender) +{ + AnsiString as; + MmttyWd->PrintText.GetString(as); + TTextEditDlg *pBox = new TTextEditDlg(this); + if( Font->Charset != SHIFTJIS_CHARSET ){ + pBox->Memo->Font->Name = sys.m_BtnFontName; + pBox->Memo->Font->Charset = sys.m_BtnFontCharset; + pBox->Execute(as, TRUE, "Receive Window"); + } + else { + pBox->Execute(as, TRUE, "ŽóM‰æ–Ê‹L˜^"); + } + delete pBox; +} +//--------------------------------------------------------------------------- +void __fastcall TQSODlgBox::EditDateChange(TObject *Sender) +{ + m_EditFlag = 1; + UpdateBtn(); +} +//--------------------------------------------------------------------------- diff --git a/QsoDlg.dfm b/QsoDlg.dfm new file mode 100644 index 0000000000000000000000000000000000000000..9132e69c959d3f0ef51929696249c130f716e6a7 GIT binary patch literal 5782 zcmb_gO>g7I877C)P?Ws3@mvsS8X6l-@Seg2Khl4RA(dR9DjTSfm^KG z`5ofsihj^!ff?R&nVQ+}mK@vlTdHAqLdW+Os3b|dk}1`s&-MT5f7WLV*I{0`$(+_< zsJtrYuzkmAhKI^ANgKZF2ddU^i=kJx8*HZRd*OBC&D*_Thj5?@UU%)rD9fCqYL)<)p>I(#0) zH+hT!P6H_l!7+*KQ9hQ^Yp&Ds)U@qFlwvxXfqAr8vO{|?z7)rniU>yoXT;Qe=^RS;&V6weh$Geh|D4}_ymV3yVhm`dt+GicEr0d z&P%HI63A6#{S!)#p_j&?%BIszU~i5njt~H zFA2rOA|ff3KSZ;XoRF2uy7yWVjEO~#MJahV20t|}IaTX~`6L=sOZiqLh;kmhkc3D1 zbr<~=PvhJ;xm-;`qxAY<6#B$CRH^$%32-6GE?0mDvQL;!soUKkX>|e9OZod`aIkvD zGCPblaiySUv061YFu@Qj$wj7OD)Esh&h9sq}^`;YM_=T5MOmtmLl8cdm7h?fe)U7t-b4%5n zcFF15`>^W6BVL>6eAQ_Le%C(;7q_bGi#JyXbzaK=_o3~zm^vF1VLRqm`Qu_MTEzZ{ zwI$}yPs^X3j2}un2H+|tP|W|cY58;K@(cg-^zFikef#2a@B!=JfLZUrlJ-alqovA&`dVwl+bBCrj*DDp8s+Re^XrD{DfRE|D_u9DCAfPrHUs3RMUZo)n&VPN+itbbPOy zn``+(%=0V=D~`wF_NE`)=k09Ek6*!U{PbeWF9r5d*>Ci^CUaRMWX)X52aDj?4t57H zignm)?^^+!$U$4m4xOzHzA5Bv&Ew-3%yrcn?&Y{OQ}b|K@oJX88niXw5&rMWWP?0Q zTyly068@hf&yb%Ile|u@kgLj@lJbT`ZjhVe9lVzYCvJ3)9rTaeeuYWfKh-;mr`_OG gj~@hoY5t@3i{Ab_pP8*!2PUKjpJX^@^hqZDAFimBfdBvi literal 0 HcmV?d00001 diff --git a/QsoDlg.h b/QsoDlg.h new file mode 100644 index 0000000..f479fdc --- /dev/null +++ b/QsoDlg.h @@ -0,0 +1,128 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef QsoDlgH +#define QsoDlgH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +#include "LogFile.h" +//---------------------------------------------------------------------------- +class TQSODlgBox : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TGroupBox *GroupBox1; + TStringGrid *Grid; + TLabel *Label1; + TEdit *EditDate; + TLabel *LTimeZone; + TEdit *EditBgn; + TLabel *Label3; + TEdit *EditEnd; + TLabel *Label4; + TEdit *EditCall; + TLabel *Label5; + TEdit *EditName; + TLabel *Label6; + TEdit *EditQTH; + TLabel *Label7; + TComboBox *EditMy; + TLabel *Label8; + TComboBox *EditHis; + TLabel *Label9; + TComboBox *EditBand; + TLabel *Label10; + TComboBox *EditMode; + TLabel *Label11; + TEdit *EditRem; + TLabel *Label12; + TEdit *EditQSL; + TLabel *Label13; + TLabel *Label14; + TLabel *Label15; + TEdit *EditEnv; + TLabel *Label16; + TEdit *EditOpt1; + TLabel *Label17; + TEdit *EditOpt2; + TLabel *Label18; + TComboBox *EditM; + TComboBox *EditS; + TComboBox *EditR; + TLabel *Label19; + TComboBox *EditPow; + TLabel *LStat; + TLabel *Label20; + TEdit *EditUsr1; + TLabel *Label21; + TEdit *EditUsr2; + TSpeedButton *SBMMCG; + TButton *RefBtn; + void __fastcall GridDrawCell(TObject *Sender, int Col, int Row, TRect &Rect, + TGridDrawState State); + void __fastcall GridSelectCell(TObject *Sender, int Col, int Row, + bool &CanSelect); + + + void __fastcall SBMMCGClick(TObject *Sender); + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall RefBtnClick(TObject *Sender); + void __fastcall EditDateChange(TObject *Sender); +private: + CLogFind *m_fp; + int m_EditFlag; + + int m_CurNo; + SDMMLOG m_sd; + + AnsiString m_Country; + void __fastcall UpdateBtn(void); + void __fastcall SetCountry(void); + +// CAlignList AlignList; +// void __fastcall EntryAlignControl(void); + void __fastcall UpdateStat(void); + + void __fastcall UpdateTextData(SDMMLOG *sp, int n); + void __fastcall UpdateTextData(SDMMLOG *sp); + void __fastcall UpdateCurData(SDMMLOG *sp); +public: + virtual __fastcall TQSODlgBox(TComponent* AOwner); + int __fastcall Execute(CLogFind *fp, SDMMLOG *sp, int n); + int __fastcall ShowFind(CLogFind *fp); +}; +//---------------------------------------------------------------------------- +//extern TQSODlgBox *QSODlgBox; +//---------------------------------------------------------------------------- +#endif diff --git a/Rtty.cpp b/Rtty.cpp new file mode 100644 index 0000000..4e5ec65 --- /dev/null +++ b/Rtty.cpp @@ -0,0 +1,2620 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Rtty.h" + +#define LOGFFT FALSE + +CSinTable g_SinTable; + +//--------------------------------------------------------------------------- +// CSinTableƒNƒ‰ƒX +// Added by JE3HHT on Aug.2010 +__fastcall CSinTable::CSinTable() +{ + m_Size = 48000; + m_tSin = new double[m_Size]; + double pi2t = 2 * PI / double(m_Size); + for( int i = 0; i < m_Size; i++ ){ + m_tSin[i] = sin(double(i) * pi2t); + } +} +//--------------------------------------------------------------------------- +__fastcall CSinTable::~CSinTable() +{ + delete[] m_tSin; +} +//--------------------------------------------------------------------------- +CTICK::CTICK() +{ + ptbl[0] = new int[12500]; + ptbl[1] = new int[12500]; + memset(ptbl[0], 0, sizeof(int[12500])); + memset(ptbl[1], 0, sizeof(int[12500])); +} +CTICK::~CTICK() +{ + delete[] ptbl[0]; //JA7UDE 0428 + delete[] ptbl[1]; //JA7UDE 0428 +} +void CTICK::Init(void) +{ + m_wsel = 0; + m_wp = ptbl[0]; + m_wcnt = 0; + m_Trig = 0; +} +void CTICK::Write(double d) +{ + *m_wp = int(d); + m_wp++; + m_wcnt++; + if( m_wcnt >= m_Samp ){ + m_wcnt = 0; + m_wsel++; + m_wsel &= 1; + m_wp = ptbl[m_wsel]; + m_Trig = 1; + } +} +int *CTICK::GetData(void) +{ + if( !m_Trig ) return NULL; + m_Trig = 0; + int sel = m_wsel + 1; + sel &= 1; + return ptbl[sel]; +} +//--------------------------------------------------------------------------- +// VCOƒNƒ‰ƒX +CVCO::CVCO() +{ + m_vlock = 0; + m_SampleFreq = SampFreq; + m_FreeFreq = 1900.0; + m_TableSize = int(SampFreq*2); + pSinTbl = new double[m_TableSize]; + m_c1 = m_TableSize/16.0; + m_c2 = int( double(m_TableSize) * m_FreeFreq / m_SampleFreq ); + m_z = 0; + double pi2t = 2 * PI / double(m_TableSize); + for( int i = 0; i < m_TableSize; i++ ){ + pSinTbl[i] = sin(double(i) * pi2t); + } +} + +CVCO::~CVCO() +{ + if( m_vlock ) ::VirtualUnlock(pSinTbl, sizeof(double)*m_TableSize); + delete[] pSinTbl; +} + +void CVCO::SetGain(double gain) +{ + m_c1 = double(m_TableSize) * gain / m_SampleFreq; +} + +void CVCO::VirtualLock(void) +{ + if( !m_vlock ){ + ::VirtualLock(pSinTbl, sizeof(double)*m_TableSize); + m_vlock = 1; + } +} + +void CVCO::SetSampleFreq(double f) +{ + m_SampleFreq = f; + int size = int(m_SampleFreq*2); + if( m_TableSize != size ){ + if( pSinTbl != NULL ){ + if( m_vlock ) ::VirtualUnlock(pSinTbl, sizeof(double)*m_TableSize); + delete[] pSinTbl; + } + m_TableSize = size; + pSinTbl = new double[m_TableSize]; + if( m_vlock ) ::VirtualLock(pSinTbl, sizeof(double)*m_TableSize); + double pi2t = 2 * PI / double(m_TableSize); + for( int i = 0; i < m_TableSize; i++ ){ + pSinTbl[i] = sin(double(i) * pi2t); + } + } + SetFreeFreq(m_FreeFreq); +} + +void CVCO::SetFreeFreq(double f) +{ + m_FreeFreq = f; + m_c2 = double(m_TableSize) * m_FreeFreq / m_SampleFreq; +} + +void CVCO::InitPhase(void) +{ + m_z = 0; +} + +double CVCO::Do(double d) +{ // -1 to 1 + m_z += (d * m_c1 + m_c2) + 0.5; + while( m_z >= m_TableSize ){ + m_z -= m_TableSize; + } + while( m_z < 0 ){ + m_z += m_TableSize; + } + return pSinTbl[int(m_z)]; +} + +//--------------------------------------------------------------------------- +// VCOXƒNƒ‰ƒX +__fastcall CVCOX::CVCOX() +{ + m_SampleFreq = SampFreq; + m_FreeFreq = 2000.0; + m_TableSize = g_SinTable.m_Size; + m_TableCOS = m_TableSize / 4; + m_c1 = 0.0; + m_c2 = double(m_TableSize) * m_FreeFreq / m_SampleFreq; + m_z = 0.0; +} + +__fastcall CVCOX::~CVCOX() +{ +} + +void __fastcall CVCOX::SetGain(double gain) +{ + m_c1 = double(m_TableSize) * gain / m_SampleFreq; +} + +void __fastcall CVCOX::SetSampleFreq(double f) +{ + m_SampleFreq = f; + SetFreeFreq(m_FreeFreq); +} + +void __fastcall CVCOX::SetFreeFreq(double f) +{ + m_FreeFreq = f; + m_c2 = double(m_TableSize) * m_FreeFreq / m_SampleFreq; + if( f < 1.0 ) m_z = 0; +} + +void __fastcall CVCOX::InitPhase(void) +{ + m_z = 0.0; +} +//------------------------------------------------------------------ +double __fastcall CVCOX::Do(void) +{ + m_z += m_c2; + if( m_z >= m_TableSize ){ + m_z -= m_TableSize; + } + if( m_z < 0 ){ + m_z += m_TableSize; + } + return g_SinTable.m_tSin[int(m_z)]; +} +//------------------------------------------------------------------ +double __fastcall CVCOX::Do(double d) +{ + // -1 to 1 + m_z += (d * m_c1 + m_c2); + while( m_z >= m_TableSize ){ + m_z -= m_TableSize; + } + while( m_z < 0 ){ + m_z += m_TableSize; + } + return g_SinTable.m_tSin[int(m_z)]; +} +//------------------------------------------------------------------ +double __fastcall CVCOX::DoCos(void) +{ + double z = m_z + m_TableCOS; + if(z >= m_TableSize ) z -= m_TableSize; + return g_SinTable.m_tSin[int(z)]; +} + +//--------------------------------------------------------------------------- +// CFSKMODƒNƒ‰ƒX +CFSKMOD::CFSKMOD() +{ + m_SampFreq = sys.m_SampFreq + sys.m_TxOffset; + vco.SetSampleFreq(m_SampFreq); + + memset(ZBPF, 0, sizeof(ZBPF)); + memset(HBPF, 0, sizeof(HBPF)); + m_bpftap = 48; + + m_rp = 0; + m_wp = 0; + m_cnt = 0; + + m_BitLen = 5; + m_StopLen = 4; // 0-1bit, 1-1.5bit, 2-2bit, 3-1.5bit, 4-1.5bit + m_Parity = 0; + m_SumParity = 0; + + m_Data = 0; + m_DataCount = 0; + m_mode = 0; + m_inv = 0; + m_diddle = 2; + m_fig = 0; + m_figout = 0; + + SetBaudRate(45.45); + SetOutputGain(24576.0); + + m_MarkFreq = 2125; + m_SpaceFreq = 2295; + SetMarkFreq(2125); + SetSpaceFreq(2295); + + m_out = 1; + m_bpf = 1; + SetLPFFreq(100.0); + m_lpf = 0; + + m_CharWaitCount = 0; + m_CharWait = 0; + m_DiddleWait = 0; + m_CharWaitDiddle = 0; + + m_idle = 1; + pDem = NULL; + m_RandomDiddle = 0; + m_WaitTimer = 0; + m_WaitTimerCount = 0; + + m_DisDiddle = 0; + + m_AmpVal = 0; +} + +void CFSKMOD::CalcBPF(void) +{ + MakeFilter(HBPF, m_bpftap, ffBPF, SampFreq, m_MarkFreq - 150, m_SpaceFreq + 150, 60, 1.0); +} + +void CFSKMOD::SetMarkFreq(double d) +{ + m_MarkFreq = d; + vco.SetFreeFreq(m_SpaceFreq); + vco.SetGain(m_MarkFreq - m_SpaceFreq); + CalcBPF(); +} + +void CFSKMOD::SetSpaceFreq(double d) +{ + m_SpaceFreq = d; + vco.SetFreeFreq(m_SpaceFreq); + vco.SetGain(m_MarkFreq - m_SpaceFreq); + CalcBPF(); +} + +void CFSKMOD::SetSampFreq(double f) +{ + m_SampFreq = sys.m_SampFreq + sys.m_TxOffset; + vco.SetSampleFreq(m_SampFreq); + SetBaudRate(m_BaudRate); + SetLPFFreq(m_LPFFreq); +} + +void CFSKMOD::SetBaudRate(double b) +{ + if( b >= 1.0 ){ + m_BaudRate = b; + m_Count = m_ReCount = int(m_SampFreq/b + 0.5); + m_Amp.SetMax(m_Count); + } +} + +void CFSKMOD::SetLPFFreq(double f) +{ + m_LPFFreq = f; + avgLPF.SetCount(int(m_SampFreq/f + 0.5)); +} + +void CFSKMOD::PutData(int d) +{ + if( m_cnt < MODBUFMAX ){ + m_idle = 0; + m_Buff[m_wp] = BYTE(d); + m_wp++; + if( m_wp >= MODBUFMAX ) m_wp = 0; + m_cnt++; + } +} + +void CFSKMOD::OutTone(int sw, int bsize) +{ + if( sw ){ + m_out = 1; + m_Count = m_ReCount/2; + } + else { + m_out = -1; + m_Count = m_ReCount * (1 + ((220 * bsize)/(m_SampFreq))); + } +} + +double CFSKMOD::Do(int echo){ + if( m_CharWaitDiddle && m_CharWaitCount ){ + m_CharWaitCount--; + } + if( m_DisDiddle > 0 ) m_DisDiddle--; + if( sys.m_TxPort && m_FSKCount ) m_FSKCount--; + if( !m_Count ){ + m_Count = m_ReCount; + switch(m_mode){ + case 0: // ƒXƒ^[ƒgƒrƒbƒgo—Í + if( sys.m_TxPort == txTXD ) FSKDeff = m_cnt - FSKCount; + if( !m_CharWaitDiddle ){ + if( m_CharWaitCount ){ + m_CharWaitCount--; + m_out = 1; + m_Count = 1; + break; + } + else if( m_CharWait && m_cnt ){ + m_CharWaitCount = m_CharWait * m_ReCount/3; + } + } +_try:; + if( m_cnt && + ((!m_CharWaitDiddle) || (!m_CharWaitCount)) && + ((sys.m_TxPort != txTXD) || (FSKCount <= m_cnt) || (m_FSKCount) || (m_Buff[m_rp]==0xff) || (m_Buff[m_rp]==0xfe) ) + ){ + m_WaitTimerCount = 4; + m_idle = 0; + m_out = 0; + if( m_figout && (m_fig == 0x1b) && (m_Buff[m_rp]!=0x1f) ){ + m_Data = 0x1b; + if( !echo ){ + pDem->WriteData(m_Data); + } + } + else { + if( sys.m_TxPort == txTXDOnly ){ // FSK OnlyŽž‚Ì“¯Šú +#if 0 + while( FSKCount1 == FSKCount2 ){ + ::Sleep(10); + } +#endif + FSKCount2++; + } + m_Data = m_Buff[m_rp]; + if( m_Data == 0xff ){ // ƒ}[ƒNM†‘—M + m_out = 1; + m_Count = m_ReCount * 3; + m_cnt--; + m_rp++; + if( m_rp >= MODBUFMAX ) m_rp = 0; + m_CharWaitCount = 0; + break; + } + else if( m_Data == 0xfe ){ // ƒLƒƒƒŠƒAØ’f + m_out = -1; + m_Count = m_ReCount * 3; + m_cnt--; + m_rp++; + if( m_rp >= MODBUFMAX ) m_rp = 0; + m_CharWaitCount = 0; + break; + } + else if( m_Data == 0xfd ){ // Dis Diddle + m_DisDiddle = -1; + m_cnt--; + m_rp++; + if( m_rp >= MODBUFMAX ) m_rp = 0; + goto _try; + } + else if( m_Data == 0xfc ){ // Enb Diddle + m_DisDiddle = 0; + m_cnt--; + m_rp++; + if( m_rp >= MODBUFMAX ) m_rp = 0; + goto _try; + } + else if( (m_Data == 0x1b)||(m_Data == 0x1f) ){ + m_fig = m_Data; + } + m_cnt--; + m_rp++; + if( m_rp >= MODBUFMAX ) m_rp = 0; + if( !echo ){ + pDem->WriteData(m_Data); + } + } + m_figout = 0; + m_DataCount = m_BitLen; + m_SumParity = 0; + m_mode++; + } + else if( m_Data == 0x00fe ){ + m_idle = 1; + m_out = -1; + m_Count = m_ReCount * 50; + m_Data = 0; + break; + } + else if( (m_BitLen < 6) && ((m_diddle && !m_DisDiddle) || ((sys.m_TxPort == txTXD)&& m_cnt)) ){ +// else if( m_diddle && (!m_DisDiddle || ((sys.m_TxPort == txTXD)&& m_cnt) ) ){ +// else if( m_diddle && !m_DisDiddle ){ +#if 0 + if( sys.m_TxPort == txTXDOnly ){ + ::Sleep((m_ReCount * m_BitLen)*1000/m_SampFreq); + } +#endif + if( !m_cnt ) m_idle = 1; + m_out = 0; + switch(m_diddle){ + case 1: // BLK + if( m_RandomDiddle && !(rand() & 3) ){ + m_Data = 0x1f; + if( m_BitLen <= 6 ) m_figout = 1; + } + else { + m_Data = 0x00; + } + break; + default: // LTR + if( m_RandomDiddle && !(rand() & 3) ){ + m_Data = 0x00; + } + else { + m_Data = 0x1f; + if( m_BitLen <= 6 ) m_figout = 1; + } + break; + } + m_DataCount = m_BitLen; + m_SumParity = 0; + m_mode++; + if( !m_CharWaitDiddle ){ + if( (sys.m_LWait == 2) || m_cnt ){ + m_CharWaitCount = m_CharWait * m_ReCount/3; + } + else if( m_DiddleWait ){ + m_CharWaitCount = m_DiddleWait * m_ReCount/3; + } + else { + m_CharWaitCount = 0; + } + if( sys.m_LWait != 2 ){ + if( m_WaitTimer ){ + if( !m_WaitTimerCount ){ + m_CharWaitCount = 0; + } + else { + m_WaitTimerCount--; + } + } + } + } + } + else { + if( !m_cnt ) m_idle = 1; + m_out = 1; + m_Count = 1; +#if 0 + if( sys.m_TxPort == txTXDOnly ){ + ::Sleep(11); + m_Count = m_ReCount; + } +#endif + } + if( m_CharWaitDiddle && (!m_CharWaitCount) ){ + if( m_Data != 0x1b ){ + m_CharWaitCount = m_CharWait * m_ReCount/3; + } + } + break; + case 1: // •„†o—Í + if( m_DataCount ){ + switch(m_BitLen){ + case 6: + m_out = (m_Data & 0x20) ? 1 : 0; + break; + case 7: + m_out = (m_Data & 0x40) ? 1 : 0; + break; + case 8: + m_out = (m_Data & 0x80) ? 1 : 0; + break; + default: + m_out = (m_Data & 0x10) ? 1 : 0; + break; + } + m_Data = BYTE(m_Data << 1); + m_DataCount--; + if( m_out ) m_SumParity++; + } + else { // ƒXƒgƒbƒvƒrƒbƒg + if( m_Parity ){ + m_mode++; + switch(m_Parity){ + case 1: // Even + m_out = m_SumParity & 1 ? 0 : 1; + break; + case 2: // Odd + m_out = m_SumParity & 1 ? 1 : 0; + break; + case 3: + m_out = 1; + break; + case 4: + m_out = 0; + break; + } + } + else { + m_mode++; + goto _nx; + } + } + break; + case 2: +_nx:; + m_out = 1; + m_mode++; + switch(m_StopLen){ + case 0: // 1bit + m_Count = 1; + break; + case 1: // 1.5bit + case 3: + case 4: + m_Count = (m_ReCount/2) - 1; + break; + case 2: // 2bit + m_Count = m_ReCount - 1; + break; + } + break; + case 3: // ƒXƒgƒbƒvƒrƒbƒgI—¹ + m_mode = 0; + break; + } + } + m_Count--; + double d; + if( m_lpf ){ // GMSK + if( m_inv ){ + d = m_out ? 0 : 1; + } + else { + d = m_out; + } + d = avgLPF.Avg(d); + d = vco.Do(d) * m_OutputGain; + } + else { // AFSK + if( m_inv ){ + d = vco.Do(m_out ? 0 : 1) * m_OutputGain; + } + else { + d = vco.Do(m_out) * m_OutputGain; + } + } + if( m_out < 0 ) d = 0; + if( m_bpf ){ + d = DoFIR(HBPF, ZBPF, d, m_bpftap); + } + return d * m_Amp.Do(m_AmpVal); +} + + +//--------------------------------------------------------------------------- +// CFSKDEMƒNƒ‰ƒX +CFSKDEM::CFSKDEM() +{ + m_OverFlow = 0; + m_lpf = 0; + m_lpfOrder = 5; + SetLPFFreq(40.0); + + m_pll.SetSampleFreq(DemSamp); + m_Phase.SetSampleFreq(DemSamp); + + memset(ZMark, 0, sizeof(ZMark)); + memset(ZSpace, 0, sizeof(ZSpace)); + memset(HMark, 0, sizeof(HMark)); + memset(HSpace, 0, sizeof(HSpace)); + i2 = 0; +// o1 = o2 = 0; + Count = 0; + + SetSmoozFreq(70.0); + avgMark.SetCount(m_Smooz); + avgSpace.SetCount(m_Smooz); + + m_BitLen = 5; + m_StopLen = 4; // 0-1bit, 1-1.5bit, 2-2bit, 3-1bit, 4-1.42bit + m_Parity = 0; + m_SumParity = 0; + + m_mode = 0; + m_DataCount = 0; + + m_inv = 0; + m_sq = 0; + m_SQLevel = 600.0; + m_Tap = 72; + m_FilWidth = GetFilWidth(m_Tap); + + m_wp = 0; + m_rp = 0; + m_BufCount = 0; + + SetBaudRate(45.45); + + m_MarkFreq = 2125; + m_SpaceFreq = 2295; + SetMarkFreq(2125); + SetSpaceFreq(2295); + + m_dMark = 0; + m_dSpace = 0; + + m_Scope = 0; + m_majority = 1; + m_ignoreFream = 0; + m_XYScope = 0; + SetIIR(60.0); + m_Limit = 1; + m_LimitGain = 10.0; + + m_deff = 0; + m_avgdeff = 0; + + m_sqcount = 0; +// SmoozSQ.SetCount(4); + SmoozSQ.SetCount(8); + + m_LimitOverSampling = 0; + + m_Tick = 0; + m_atcPLL.m_Max = 12; + + m_LimitAGC = 1; + m_limitMax = 1; + m_limitMin = -1; + m_d = 0; +} + +void CFSKDEM::SetIIR(double bw) +{ + m_iirfw = bw; + m_iirm.SetFreq(m_AFCMarkFreq, DemSamp, m_iirfw); + m_iirs.SetFreq(m_AFCSpaceFreq, DemSamp, m_iirfw); + m_pll.SetFreeFreq(m_AFCMarkFreq, m_AFCSpaceFreq); +} + +void CFSKDEM::SetBaudRate(double b) +{ + if( b >= 1.0 ){ + m_BaudRate = b; + m_Count = m_ReCount = int(DemSamp/b + 0.5); + } +} + +void CFSKDEM::SetSmoozFreq(double f) +{ + m_SmoozFreq = f; + m_Smooz = int(DemSamp / f + 0.5); + + avgMark.SetCount(m_Smooz); + avgSpace.SetCount(m_Smooz); +} + +void CFSKDEM::SetLPFFreq(double f) +{ + m_lpffreq = f; + LpfMark.MakeIIR(f, DemSamp, m_lpfOrder, 0, 1.0); + LpfSpace.MakeIIR(f, DemSamp, m_lpfOrder, 0, 1.0); +} + +void CFSKDEM::SetMarkFreq(double d) +{ + m_SetMarkFreq = m_AFCMarkFreq = m_MarkFreq = d; + MakeFilter(HMark, m_Tap, ffBPF, DemSamp, m_MarkFreq-m_FilWidth, m_MarkFreq+m_FilWidth, 60, 1.0); + SetIIR(m_iirfw); + m_Phase.SetCarrierFreq(m_AFCMarkFreq); + if( m_AFCSpaceFreq > m_AFCMarkFreq ) m_Phase.SetShift(m_AFCSpaceFreq - m_AFCMarkFreq); + m_AA6YQ.SetMarkFreq(m_AFCMarkFreq); +} + +void CFSKDEM::SetSpaceFreq(double d) +{ + m_SetSpaceFreq = m_AFCSpaceFreq = m_SpaceFreq = d; + MakeFilter(HSpace, m_Tap, ffBPF, DemSamp, m_SpaceFreq-m_FilWidth, m_SpaceFreq+m_FilWidth, 60, 1.0); + SetIIR(m_iirfw); + m_Phase.SetCarrierFreq(m_AFCMarkFreq); + if( m_AFCSpaceFreq > m_AFCMarkFreq ) m_Phase.SetShift(m_AFCSpaceFreq - m_AFCMarkFreq); + m_AA6YQ.SetSpaceFreq(m_AFCSpaceFreq); +} + +void CFSKDEM::AFCMarkFreq(double d) +{ + if( d != m_MarkFreq ){ + m_MarkFreq = d; + if( fabs(d - m_AFCMarkFreq) >= (m_type ? 10.0 : 5.0) ){ + m_AFCMarkFreq = d; + MakeFilter(HMark, m_Tap, ffBPF, DemSamp, m_MarkFreq-m_FilWidth, m_MarkFreq+m_FilWidth, 60, 1.0); + SetIIR(m_iirfw); + m_Phase.SetCarrierFreq(m_AFCMarkFreq); + } + m_AA6YQ.SetMarkFreqByAFC(d); + } +} + +void CFSKDEM::AFCSpaceFreq(double d) +{ + if( d != m_SpaceFreq ){ + m_SpaceFreq = d; + if( fabs(d - m_AFCSpaceFreq) >= (m_type ? 10.0 : 5.0) ){ + m_AFCSpaceFreq = d; + MakeFilter(HSpace, m_Tap, ffBPF, DemSamp, m_SpaceFreq-m_FilWidth, m_SpaceFreq+m_FilWidth, 60, 1.0); + SetIIR(m_iirfw); + } + m_AA6YQ.SetSpaceFreqByAFC(d); + } +} + +double CFSKDEM::GetFilWidth(int tap) +{ + double Width; + + if( tap >= 256 ){ + Width = 20; + } + else if( tap >= 192 ){ + Width = 30; + } + else { + Width = 40; + } + return Width; +} + +void CFSKDEM::SetFilterTap(int tap) +{ + if( tap != m_Tap ){ + m_Tap = tap; + m_FilWidth = GetFilWidth(tap); + MakeFilter(HSpace, m_Tap, ffBPF, DemSamp, m_SpaceFreq-m_FilWidth, m_SpaceFreq+m_FilWidth, 60, 1.0); + MakeFilter(HMark, m_Tap, ffBPF, DemSamp, m_MarkFreq-m_FilWidth, m_MarkFreq+m_FilWidth, 60, 1.0); + } +} + +void CFSKDEM::WriteData(BYTE d) +{ + if( m_BufCount < DEMBUFMAX ){ + m_Buff[m_wp] = d; + m_wp++; + m_BufCount++; + if( m_wp >= DEMBUFMAX ) m_wp = 0; + } +} + +void CFSKDEM::DoFSK(void) +{ + int b; + + if( m_Tick ){ + Tick.Write(m_dMark); + return; + } + if( m_dMark >= m_dSpace ){ // ƒ}[ƒN‚ÌŽž + b = m_inv ? 0 : 1; + } + else { // ƒXƒy[ƒX‚ÌŽž + b = m_inv ? 1 : 0; + } + double deff = fabs(m_dMark - m_dSpace); + +// Adjustment for the level meter, added by JE3HHT (Ver 1.68A) + if( m_AA6YQ.m_fEnabled && (m_type != 3) ){ + deff *= 4; + deff -= 30000; + } +// till end + + if( m_deff < deff ) m_deff = deff; + if( !m_sqcount ){ + m_avgdeff = SmoozSQ.Avg(m_deff); + m_deff = 0; + m_sqcount = DemSamp / 10; + } + m_sqcount--; + + if( m_sq ){ + if( !m_mode ){ + if( m_Limit ){ // ŽóMŽž + if( (m_SQLevel * 10.0) > m_avgdeff ){ + b = 1; + } + } + else { // ‘—MŽž + if( m_SQLevel > m_avgdeff ){ + b = 1; + } + } + } + } +// m_Bit = b; + if( m_Scope ){ + m_ScopeSync.WriteData(m_Count ? 0 : 8192.0); + m_ScopeBit.WriteData(b ? 8192.0 : 0); + } + switch(m_mode){ + case 0: // ƒXƒ^[ƒgƒrƒbƒgŒŸo‘Ò‚¿ + if( !b ){ + m_Count = m_ReCount/2; + if( m_majority ){ + m_mark = m_space = 0; + m_mode = 256; // ‘½”ŒˆƒƒWƒbƒN + } + else { + m_mode++; + } +#if BITDEBUG + m_bitCountA = m_bitCount; + m_bitCount = 0; +#endif + } + else { + m_Count = m_ReCount; + } + break; +// ’Ê탃WƒbƒN‚É‚æ‚é”»’è + case 1: // ƒXƒ^[ƒgƒrƒbƒgŒŸo‘Ò‚¿(Half) + if( b ){ + m_mode = 0; + } + else if( !m_Count ){ + if( m_Scope ){ + m_ScopeSync.UpdateData(-8192.0); // ƒXƒ^[ƒgƒrƒbƒgˆÊ’u + } + m_Count = m_ReCount; + m_Data = 0; + m_DataCount = m_BitLen; + m_SumParity = 0; + m_mode++; + } + break; + case 2: // •„†‹L˜^’† + if( !m_Count ){ + m_Count = m_ReCount; + m_Data = BYTE(m_Data << 1); + m_Data |= BYTE(b); + m_DataCount--; + if( !m_DataCount ){ + if( m_Parity ){ + m_mode++; + } + else { + m_mode += 2; + } + } + if( m_Parity ){ + m_SumParity += b; + } + } + break; + case 3: // ƒpƒŠƒeƒBƒrƒbƒg + if( !m_Count ){ + m_Count = m_ReCount; + m_mode++; + switch(m_Parity){ + case 1: // Even + if( (!(m_SumParity & 1) ^ b) & 1 ) m_mode = 0; // ƒpƒŠƒeƒBƒGƒ‰[ + break; + case 2: // Odd + if( ((m_SumParity & 1) ^ b) & 1 ) m_mode = 0; // ƒpƒŠƒeƒBƒGƒ‰[ + break; + case 3: + if( !b ) m_mode = 0; + break; + case 4: + if( b ) m_mode = 0; + break; + default: + break; + } + if( !m_mode ){ // ƒpƒŠƒeƒBƒGƒ‰[ + m_Count = m_ReCount; + m_mode = 7; + } + } + break; + case 4: // ƒXƒgƒbƒvƒrƒbƒg‚ÌŠm”F + if( !m_Count ){ + if( m_Scope ){ + m_ScopeSync.UpdateData(-4096.0); // StopbitˆÊ’u + } + if( b || m_ignoreFream ){ + if( m_BufCount < DEMBUFMAX ){ + m_Buff[m_wp] = m_Data; + m_wp++; + m_BufCount++; + if( m_wp >= DEMBUFMAX ) m_wp = 0; + } + switch(m_StopLen){ + case 2: // 2bit + m_Count = (m_ReCount * 11/8); // 23/16bitŽžŠÔ‚̃EƒGƒCƒg + break; + case 1: // 1.5bit + m_Count = (m_ReCount * 7/8); // 15/16bitŽžŠÔ‚̃EƒGƒCƒg + break; + case 4: // 1.42bit + m_Count = (m_ReCount * 4/5); // 0.82bitŽžŠÔ‚̃EƒGƒCƒg + break; + case 3: + default: // 1bit + m_Count = (m_ReCount * 3/8); // 7/16bitŽžŠÔ‚̃EƒGƒCƒg + break; + } + m_mode++; + } + if( !b ){ // ƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[ + m_mode = 8; + } + } + break; + case 5: // ƒXƒgƒbƒvƒrƒbƒgI—¹‘Ò‚¿ƒ^ƒCƒ}[ + if( !m_Count ){ + if( m_Scope ){ + m_ScopeSync.UpdateData(-4096.0); // StopbitsI—¹ˆÊ’u + } + m_mode++; + } + break; + case 6: // ƒXƒgƒbƒvI—¹‘Ò‚¿ + if( b ){ + m_Count = m_ReCount; + } + else { // ŽŸ‚̃Xƒ^[ƒgƒrƒbƒg + m_Count = m_ReCount/2; + m_mode = 0; + } + break; + case 7: // ƒpƒŠƒeƒBƒGƒ‰[Žž + if( !m_Count ){ + m_ScopeSync.UpdateData(-4096.0); // StopbitˆÊ’u + m_mode--; + } + break; + case 8: // ƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[Žž + m_Count = m_ReCount; + if( b ){ + m_mode = 0; + } + break; +// ‘½”ŒˆƒƒWƒbƒN‚É‚æ‚éƒf[ƒ^Žæ‚肱‚Ý + case 256: // ƒXƒ^[ƒgƒrƒbƒgŒŸo‘Ò‚¿(Half) + if( b ){m_mark++;} else {m_space++;} + if( !m_Count ){ + b = (m_mark >= m_space) ? 1 : 0; + if( b ){ + m_mode = 0; + } + else { + if( m_Scope ){ + m_ScopeSync.UpdateData(-8192.0); // ƒXƒ^[ƒgƒrƒbƒgˆÊ’u + } + m_Count = m_ReCount/2; + m_mode++; + } + } + break; + case 257: // ƒXƒ^[ƒgƒrƒbƒgI—¹‘Ò‚¿ + if( !m_Count ){ + if( m_Scope ){ + m_ScopeSync.UpdateData(-8192.0); // ƒXƒ^[ƒgƒrƒbƒgˆÊ’u + } + m_Count = m_ReCount; + m_mark = m_space = 0; + m_Data = 0; + m_DataCount = m_BitLen; + m_SumParity = 0; + m_mode++; + } + break; + case 258: // •„†‹L˜^’† + if( b ){m_mark++;} else {m_space++;} + if( !m_Count ){ + b = (m_mark >= m_space) ? 1 : 0; + m_mark = m_space = 0; + m_Count = m_ReCount; + m_Data = BYTE(m_Data << 1); + m_Data |= BYTE(b); + m_DataCount--; + if( !m_DataCount ){ + if( m_Parity ){ + m_mode++; + } + else { + switch(m_StopLen){ + case 2: // 2bit + case 1: // 1.5bit + case 4: // 1.42bit + break; + case 3: + default: // 1bit + m_Count = m_ReCount * 7 / 8; + break; + } + m_mode += 2; + } + } + if( m_Parity ){ + m_SumParity += b; + } + } + break; + case 259: // ƒpƒŠƒeƒBƒrƒbƒg + if( b ){ + m_mark++; + } + else { + m_space++; + } + if( !m_Count ){ + b = (m_mark >= m_space) ? 1 : 0; + m_mark = m_space = 0; + m_Count = m_ReCount; + m_mode++; + switch(m_Parity){ + case 1: // Even + if( (!(m_SumParity & 1) ^ b) & 1 ) m_mode = 0; // ƒpƒŠƒeƒBƒGƒ‰[ + break; + case 2: // Odd + if( ((m_SumParity & 1) ^ b) & 1 ) m_mode = 0; // ƒpƒŠƒeƒBƒGƒ‰[ + break; + case 3: + if( !b ) m_mode = 0; + break; + case 4: + if( b ) m_mode = 0; + break; + default: + break; + } + if( !m_mode ){ // ƒpƒŠƒeƒBƒGƒ‰[ + m_Count = m_ReCount; + m_mode = 7; + } + else { + switch(m_StopLen){ + case 2: // 2bit + case 1: // 1.5bit + case 4: // 1.42bit + break; + case 3: + default: // 1bit + m_Count = m_ReCount * 7 / 8; + break; + } + } + } + break; + case 260: // ƒXƒgƒbƒvƒrƒbƒg‚ÌŠm”F + if( b ){ + m_mark++; + } + else { + m_space++; + } + if( !m_Count ){ + b = (m_mark >= m_space) ? 1 : 0; + m_mark = m_space = 0; + if( m_Scope ){ + m_ScopeSync.UpdateData(-4096.0); // StopbitˆÊ’u + } + if( b || m_ignoreFream ){ + if( m_BufCount < DEMBUFMAX ){ + m_Buff[m_wp] = m_Data; + m_wp++; + m_BufCount++; + if( m_wp >= DEMBUFMAX ) m_wp = 0; + } + switch(m_StopLen){ + case 2: // 2bit + m_Count = (m_ReCount * 7/8); + break; + case 1: // 1.5bit + m_Count = (m_ReCount * 3/8); + break; + case 4: // 1.42bit + m_Count = (m_ReCount * 2/5); + break; + case 3: + default: // 1bit + m_Count = m_ReCount; + if( m_Scope ){ + m_ScopeSync.UpdateData(-4096.0); // StopbitsI—¹ˆÊ’u + } + m_mode = -1; + break; + } + m_mode++; + } + if( !b ){ // ƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[ + m_mode = 8; + } + } + break; + case 261: // ƒXƒgƒbƒvƒrƒbƒgI—¹‘Ò‚¿ƒ^ƒCƒ}[ + if( !m_Count ){ + if( m_Scope ){ + m_ScopeSync.UpdateData(-4096.0); // StopbitsI—¹ˆÊ’u + } + m_mode++; + } + break; + case 262: // ƒXƒgƒbƒvI—¹‘Ò‚¿ + if( b ){ + m_Count = m_ReCount; + } + else { // ŽŸ‚̃Xƒ^[ƒgƒrƒbƒg + m_Count = m_ReCount/2; + m_mode = 0; + } + break; + }; + m_Count--; +#if BITDEBUG + m_bitCount++; +#endif +} + +void CFSKDEM::Do(double d) +{ + if( m_AA6YQ.m_fEnabled ) d = m_AA6YQ.Do(d); + double ds = d; + + if( (d > 24578.0) || (d < -24578.0) ){ + m_OverFlow = 1; + } + if( m_Limit ){ + if( m_LimitAGC ){ + if( m_limitMax < d ) m_limitMax = d; + if( m_limitMin > d ) m_limitMin = d; + if( (d >= 0) && (m_d < 0) ){ + m_limitagc = (m_limitMax - m_limitMin); + if( m_limitagc ){ + m_limitagc = (64.0 * 16384.0)/ m_limitagc; + if( m_limitagc >= 4096.0 ) m_limitagc = 4096; + } + else { + m_limitagc = 200; + } + m_limitMax = 1; + m_limitMin = -1; + } + m_d = d; + if( m_LimitOverSampling ){ + d = OverLimit.Do(d, m_limitagc); + } + else { + d *= m_limitagc; + if( d > 16384.0 ) d = 16384.0; + if( d < -16384.0 ) d = -16384.0; + } + } + else { + if( m_LimitOverSampling ){ + d = OverLimit.Do(d, m_LimitGain); + } + else { + d *= m_LimitGain; + if( d > 16384.0 ) d = 16384.0; + if( d < -16384.0 ) d = -16384.0; + } + } +// if( m_AA6YQ.m_fEnabled ) d *= 0.3333; // Delete by JE3HHT (Ver1.68A) + } + if( (Count & 1) || (!DemOver) ){ + if( DemOver ) d = DECM2.Do(d, i2); // 1/2ƒfƒVƒ[ƒ^ + + switch(m_type){ + case 2: // PLL + { + double dm = m_iirm.Do(d); + double ds = m_iirs.Do(d); + d = m_pll.Do(d); + if( m_XYScope ){ // For XY-Scope + m_XYScopeMark.WriteData(dm); + m_XYScopeSpace.WriteData(ds); + } + if( m_Scope ){ // For Scope + m_ScopeMark[0].WriteData(dm); + m_ScopeSpace[0].WriteData(ds); + } + if( m_Scope ){ + m_ScopeMark[1].WriteData(m_pll.GetOut()); + m_ScopeSpace[1].WriteData(d); + } + d = m_atcPLL.Do(d + 8192.0) - 8192.0; + if( d >= 0 ){ + m_dMark = d; + m_dSpace = 0; + } + else { + m_dMark = 0; + m_dSpace = -d; + } + // •½ŠŠ + if( m_lpf ){ + m_dMark = LpfMark.Do(m_dMark); + m_dSpace = LpfSpace.Do(m_dSpace); + } + else { + m_dMark = avgMark.Avg(m_dMark); + m_dSpace = avgSpace.Avg(m_dSpace); + } + if( m_Scope ){ + m_ScopeMark[2].WriteData(m_dMark); + m_ScopeSpace[2].WriteData(m_dSpace); + } + if( m_atc ){ + m_dMark = m_atcMark.Do(m_dMark); + m_dSpace = m_atcSpace.Do(m_dSpace); + if( m_Scope ){ + m_ScopeMark[3].WriteData(m_dMark); + m_ScopeSpace[3].WriteData(m_dSpace); + } + } + break; + } + case 3: // FFT + { + m_Phase.DoFSK(ds); + m_dMark = m_Phase.m_dm; + m_dSpace = m_Phase.m_ds; + + if( m_XYScope || m_Scope ){ + double dm = m_iirm.Do(d); + double ds = m_iirs.Do(d); + + if( m_XYScope ){ // For XY-Scope + m_XYScopeMark.WriteData(dm); + m_XYScopeSpace.WriteData(ds); + } + if( m_Scope ){ // For Scope + m_ScopeMark[0].WriteData(dm); + m_ScopeSpace[0].WriteData(ds); + } + } + // ŒŸ”g +// m_dMark = fabs(m_dMark); +// m_dSpace = fabs(m_dSpace); + if( m_dMark < 0.0 ) m_dMark = -m_dMark; + if( m_dSpace < 0.0 ) m_dSpace = -m_dSpace; + if( m_Scope ){ + m_ScopeMark[1].WriteData(m_dMark); + m_ScopeSpace[1].WriteData(m_dSpace); + } + // •½ŠŠ + if( m_lpf ){ + m_dMark = LpfMark.Do(m_dMark); + m_dSpace = LpfSpace.Do(m_dSpace); + } + else { + m_dMark = avgMark.Avg(m_dMark); + m_dSpace = avgSpace.Avg(m_dSpace); + } + if( m_Scope ){ + m_ScopeMark[2].WriteData(m_dMark); + m_ScopeSpace[2].WriteData(m_dSpace); + } + if( m_atc ){ + m_dMark = m_atcMark.Do(m_dMark); + m_dSpace = m_atcSpace.Do(m_dSpace); + if( m_Scope ){ + m_ScopeMark[3].WriteData(m_dMark); + m_ScopeSpace[3].WriteData(m_dSpace); + } + } +#if 1 // ‚‘¬ŒvŽZ + m_dMark /= (64*32768.0); + m_dSpace /= (64*32768.0); +#else + m_dMark = m_dMark > 0.0 ? sqrt(m_dMark) : 0.0; + m_dSpace = m_dSpace > 0.0 ? sqrt(m_dSpace) : 0.0; + m_dMark *= (1.0/16.0); + m_dSpace *= (1.0/16.0); +#endif + break; + } + default: + { + if( m_type ){ // FIR + m_dMark = DoFIR(HMark, ZMark, d, m_Tap); + m_dSpace = DoFIR(HSpace, ZSpace, d, m_Tap); + } + else { // IIR + m_dMark = m_iirm.Do(d); + m_dSpace = m_iirs.Do(d); + } + if( m_XYScope ){ // For XY-Scope + m_XYScopeMark.WriteData(m_dMark); + m_XYScopeSpace.WriteData(m_dSpace); + } + if( m_Scope ){ // For Scope + m_ScopeMark[0].WriteData(m_dMark); + m_ScopeSpace[0].WriteData(m_dSpace); + } + // ŒŸ”g +// m_dMark = fabs(m_dMark); +// m_dSpace = fabs(m_dSpace); + if( m_dMark < 0 ) m_dMark = -m_dMark; + if( m_dSpace < 0 ) m_dSpace = -m_dSpace; + if( m_Scope ){ + m_ScopeMark[1].WriteData(m_dMark); + m_ScopeSpace[1].WriteData(m_dSpace); + } + // •½ŠŠ + if( m_lpf ){ + m_dMark = LpfMark.Do(m_dMark); + m_dSpace = LpfSpace.Do(m_dSpace); + } + else { + m_dMark = avgMark.Avg(m_dMark); + m_dSpace = avgSpace.Avg(m_dSpace); + } + if( m_Scope ){ + m_ScopeMark[2].WriteData(m_dMark); + m_ScopeSpace[2].WriteData(m_dSpace); + } + if( m_atc ){ + m_dMark = m_atcMark.Do(m_dMark); + m_dSpace = m_atcSpace.Do(m_dSpace); + if( m_Scope ){ + m_ScopeMark[3].WriteData(m_dMark); + m_ScopeSpace[3].WriteData(m_dSpace); + } + } + break; + } + } + DoFSK(); + } + else { + i2 = d; + } + Count++; +} + +int CFSKDEM::GetData(void) +{ + int r; + if( m_BufCount ){ + r = m_Buff[m_rp]; + m_BufCount--; + m_rp++; + if( m_rp >= DEMBUFMAX ) m_rp = 0; + } + else { + r = -1; + } + return r; +} + + +BCODETBL _TTY[]={ // S-BELL + // 0x20 - 0x7f + {0x04, 2}, {0x16, 1}, {0x11, 1}, {0x00, 2}, // !"# + {0x12, 1}, {0x00, 2}, {0x0b, 1}, {0x1a, 1}, // $%&' + {0x1e, 1}, {0x09, 1}, {0x00, 2}, {0x00, 2}, // ()*+ + {0x06, 1}, {0x18, 1}, {0x07, 1}, {0x17, 1}, // ,-./ + {0x0d, 1}, {0x1d, 1}, {0x19, 1}, {0x10, 1}, // 0123 30-33 + {0x0a, 1}, {0x01, 1}, {0x15, 1}, {0x1c, 1}, // 4567 34-37 + {0x0c, 1}, {0x03, 1}, {0x0e, 1}, {0x0f, 1}, // 89 38-3b + {0x00, 2}, {0x00, 2}, {0x00, 2}, {0x13, 1}, // <=>? 3c-3f + {0x00, 2}, {0x18, 0}, {0x13, 0}, {0x0e, 0}, // @ABC 40-43 + {0x12, 0}, {0x10, 0}, {0x16, 0}, {0x0b, 0}, // DEFG + {0x05, 0}, {0x0c, 0}, {0x1a, 0}, {0x1e, 0}, // HIJK + {0x09, 0}, {0x07, 0}, {0x06, 0}, {0x03, 0}, // LMNO + {0x0d, 0}, {0x1d, 0}, {0x0a, 0}, {0x14, 0}, // PQRS + {0x01, 0}, {0x1c, 0}, {0x0f, 0}, {0x19, 0}, // TUVW + {0x17, 0}, {0x15, 0}, {0x11, 0}, {0x00, 2}, // XYZ[ 58-5b + {0x00, 2}, {0x00, 2}, {0x00, 2}, {0x00, 2}, // \]^_ + {0x00, 2}, {0x18, 0}, {0x13, 0}, {0x0e, 0}, // @ABC 60-63 + {0x12, 0}, {0x10, 0}, {0x16, 0}, {0x0b, 0}, // DEFG + {0x05, 0}, {0x0c, 0}, {0x1a, 0}, {0x1e, 0}, // HIJK + {0x09, 0}, {0x07, 0}, {0x06, 0}, {0x03, 0}, // LMNO + {0x0d, 0}, {0x1d, 0}, {0x0a, 0}, {0x14, 0}, // PQRS + {0x01, 0}, {0x1c, 0}, {0x0f, 0}, {0x19, 0}, // TUVW + {0x17, 0}, {0x15, 0}, {0x11, 0}, {0x00, 2}, // XYZ[ 78-7b + {0x00, 2}, {0x00, 2}, {0x00, 2}, {0x00, 2}, // |{~ +}; + +const char _LTR[32]={ + 0x00, 'T', 0x0d, 'O', ' ', 'H', 'N', 'M', + 0x0a, 'L', 'R', 'G', 'I', 'P', 'C', 'V', + 'E', 'Z', 'D', 'B', 'S', 'Y', 'F', 'X', + 'A', 'W', 'J', 0x00, 'U', 'Q', 'K', 0x00, +}; +const char _FIG[32]={ + 0x00, '5', 0x0d, '9', ' ', 'h', ',', '.', + 0x0a, ')', '4', '&', '8', '0', ':', ';', + '3', '"', '$', '?', 's', '6', '!', '/', + '-', '2', 0x27, 0x00, '7', '1', '(', 0x00, +}; + +CRTTY::CRTTY() +{ + m_outfig = 3; + + m_fig = 0; + m_uos = 0; + + m_txuos = 1; + SetCodeSet(); +} + +void CRTTY::SetCodeSet(void) +{ + memcpy(m_TBL, _TTY, sizeof(m_TBL)); + if( sys.m_CodeSet ){ // J-BELL + m_TBL[7].Code = 0x14; + } +} + +// 11011 FIG +// 11111 LTR +char CRTTY::ConvAscii(int d) +{ + char c = 0; + d &= 0x1f; + if( d == 0x1b ){ // FIG + m_fig = 1; + } + else if( d == 0x1f ){ // LTR + m_fig = 0; + } + else if( m_fig ){ + c = _FIG[d]; + if( sys.m_CodeSet ){ + switch(c){ + case 's': + c = 0x27; + break; + case 0x27: + c = 'j'; + break; + } + } + if( m_uos ){ + switch(c){ + case ' ': +// case 0x0d: +// case 0x0a: + m_fig = 0; + break; + default: + break; + } + } + } + else { + c = _LTR[d]; + } + return c; +} + +int CRTTY::ConvRTTY(char d) +{ + int fig = 2; + int r = 0; + switch(d){ + case '_': + r = 0x00ff; + break; + case '~': + r = 0x00fe; + break; + case '[': + r = 0x00fd; + break; + case ']': + r = 0x00fc; + break; + case 0x0a: + r = 0x08; + break; + case 0x0d: + r = 0x02; + break; + case 0x1b: + r = 0x1b; + fig = 1; + break; + case 0x1f: + r = 0x1f; + fig = 0; + break; + default: + if( d >= 0x20 ){ + d -= char(0x20); + r = m_TBL[d].Code; + fig = m_TBL[d].Fig; + } + break; + } + if( fig != 2 ){ + if( fig != m_outfig ){ + r |= (fig ? 0x1b00 : 0x1f00); + m_outfig = fig; + } + } + else if( r == 0x04 ){ // ƒXƒy[ƒX‚ÌŽž + if( sys.m_txuos && (m_outfig == 1) ) m_outfig = 2; + } + return r; +} + +int CRTTY::ConvRTTY(BYTE *t, LPCSTR p) +{ + int n; + int d; + for( n = 0;*p; p++ ){ + d = ConvRTTY(*p); + if( d & 0x0000ff00 ){ + *t++ = BYTE(d >> 8); + n++; + if( sys.m_dblsft ){ + *t++ = BYTE(d >> 8); + n++; + } + } + *t++ = BYTE(d); + n++; + } + return n; +} + +int CRTTY::GetShift(char d) +{ + int fig = 2; + switch(d){ + default: + if( d >= 0x20 ){ + d -= char(0x20); + fig = m_TBL[d].Fig; + if( !m_TBL[d].Code ){ + fig = 2; + } + } + break; + } + return fig; +} + +char CRTTY::InvShift(char c) +{ + int fs = GetShift(c); + if( (c == 'h') || (c == 's') || (c == 'j') ) fs = 1; + int d = ConvRTTY(c) & 0x001f; + switch(fs){ + case 0: + if( _FIG[d] ){ + c = _FIG[d]; + if( sys.m_CodeSet ){ + switch(c){ + case 's': + c = 0x27; + break; + case 0x27: + c = 'j'; + break; + } + } + } + return c; + case 1: + return _LTR[d] ? _LTR[d] : c; + default: + return c; + } +} + +//-------------------------------------------------------- +// CScopeƒNƒ‰ƒX +CScope::CScope() +{ + m_ScopeSize = SCOPESIZE; + m_DataFlag = 0; + + pScopeData = new double[m_ScopeSize]; + memset(pScopeData, 0, sizeof(double)*m_ScopeSize); +} + +CScope::~CScope() +{ + delete[] pScopeData; +} + +void CScope::WriteData(double d) +{ + if( !m_DataFlag ){ + if( m_wp < m_ScopeSize ){ + pScopeData[m_wp] = d; + m_wp++; + if( m_wp >= m_ScopeSize ){ + m_DataFlag = 1; + } + } + } +} + +void CScope::UpdateData(double d) +{ + if( !m_DataFlag ){ + if( m_wp ){ + pScopeData[m_wp-1] = d; + } + } +} + +void CScope::Collect(int size) +{ + m_DataFlag = 1; + m_ScopeSize = size; + m_wp = 0; + m_DataFlag = 0; +} + + + +//-------------------------------------------------------- +// CNoiseƒNƒ‰ƒX +CNoise::CNoise() +{ + reg = 0x12345; + + memset(Z, 0, sizeof(Z)); + MakeFilter(H, NOISEBPFTAP, ffLPF, SampFreq, 3000.0, 3000.0, 60, 1.0); +}; + +double CNoise::GetNoise(void) +{ + DWORD r = reg >> 1; + if( (reg ^ r) & 1 ){ + r |= 0xffe00000; + } + else { + r &= 0x001fffff; + } + reg = r; + double d = double(reg) / 500000.0; +// return d; + return DoFIR(H, Z, d, NOISEBPFTAP); // ‘ш槌À +} + +//-------------------------------------------------------- +// CSamplePeakƒNƒ‰ƒX +CSamplePeak::CSamplePeak() +{ + memset(Strage, 0, sizeof(Strage)); + m_CurPeak = 0.0; + m_Peak = 0.0; + m_Strage = 8 - 1; + SetBaudRate(45.45); +} + +void CSamplePeak::SetBaudRate(double b) +{ + if( b >= 1.0 ){ + m_ReCount = m_Count = int(DemSamp/b + 0.5); + } +} + +void CSamplePeak::Sync(int Delay) +{ + m_Count = m_ReCount - Delay; + while( m_Count < 0 ) m_Count += m_ReCount; + memcpy(Strage, &Strage[1], sizeof(double)*m_Strage); + Strage[m_Strage] = m_CurPeak; + m_Peak = 0.0; + int i; + for( i = 0; i <= m_Strage; i++ ){ + if( m_Peak < Strage[i] ) m_Peak = Strage[i]; + } + m_CurPeak = 0.0; +} + +int CSamplePeak::Sample(double d) +{ + int r = 0; + + if( m_CurPeak < d ){ + m_CurPeak = d; + if( m_Peak < d ){ + m_Peak = d; + r = 1; + } + } + if( !m_Count ){ + Sync(0); + r = 1; + } + m_Count--; + return r; +} + +//-------------------------------------------------------- +// CAGCƒNƒ‰ƒX +CAGC::CAGC() +{ + m_MaxGain = 2048.0; + m_StepGain = 3.0; + m_MarkGain = 1.0; + m_SpaceGain = 1.0; + m_DeffGain = 12.0; + m_Sync = 1; +} + +void CAGC::Sync(int Delay) +{ + if( m_Sync ){ + Mark.Sync(Delay); + Space.Sync(Delay); + } +} + +double CAGC::SampleMark(double d) +{ + if( Mark.Sample(d) ){ + double gain = Mark.GetPeak(); + if( gain ){ + gain = 8192.0 / gain; + double ugain = m_MarkGain * m_StepGain; + double dgain = m_MarkGain / m_StepGain; + if( ugain < gain ){ + m_MarkGain = ugain; + } + else if( dgain > gain ){ + m_MarkGain = dgain; + } + else { + m_MarkGain = gain; + } + if( m_MarkGain > m_MaxGain ) m_MarkGain = m_MaxGain; + } + else { + m_MarkGain = 1.0; + } + } + return d * m_MarkGain; +} + +double CAGC::SampleSpace(double d) +{ + if( Space.Sample(d) ){ + double gain = Space.GetPeak(); + if( gain ){ + gain = 8192.0 / gain; + double ugain = m_SpaceGain * m_StepGain; + double dgain = m_SpaceGain / m_StepGain; + if( ugain < gain ){ + m_SpaceGain = ugain; + } + else if( dgain > gain ){ + m_SpaceGain = dgain; + } + else { + m_SpaceGain = gain; + } + if( m_SpaceGain > m_MaxGain ) m_SpaceGain = m_MaxGain; + if( m_SpaceGain > m_MarkGain ){ + if( m_SpaceGain > m_MarkGain * m_DeffGain ){ + m_SpaceGain = m_MarkGain * m_DeffGain; + } + } + else { + if( m_SpaceGain * m_DeffGain < m_MarkGain ){ + m_SpaceGain = m_MarkGain / m_DeffGain; + } + } + } + else { + m_SpaceGain = 1.0; + } + } + return d * m_SpaceGain; +} + +//-------------------------------------------------------- +// CATCƒNƒ‰ƒX +CATC::CATC() +{ + m_Low = 0; + m_High = 16384.0; + m_CurLow = MAXDOUBLE; + m_CurHigh = -MAXDOUBLE; + m_Max = 4; + m_Cnt = 0; + int i; + for( i = 0; i < ATCMAX; i++ ){ + m_LowList[i] = m_Low; + m_HighList[i] = m_High; + } + m_iir.MakeIIR(100, DemSamp, 3, 0, 0); +} + +double CATC::Do(double d) +{ + if( m_CurLow > d ) m_CurLow = d; + if( m_CurHigh < d ) m_CurHigh = d; +// if( m_Low > d ) m_Low = d; +// if( m_High < d ) m_High = d; + if( !m_Cnt ){ + m_Cnt = 64; + if( m_CurLow > (ATCC-ATCW) ) m_CurLow = (ATCC-ATCW); + if( m_CurHigh < (ATCC+ATCW) ) m_CurHigh = (ATCC+ATCW); + if( m_Max ){ + memcpy(m_LowList, &m_LowList[1], (m_Max)*sizeof(double)); + memcpy(m_HighList, &m_HighList[1], (m_Max)*sizeof(double)); + } + m_LowList[m_Max] = m_CurLow; + m_HighList[m_Max] = m_CurHigh; + int i; + m_Low = m_LowList[0]; + m_High = m_HighList[0]; + for( i = 1; i <= m_Max; i++ ){ + if( m_Low > m_LowList[i] ) m_Low = m_LowList[i]; + if( m_High < m_HighList[i] ) m_High = m_HighList[i]; + } + m_CurLow = MAXDOUBLE; + m_CurHigh = -MAXDOUBLE; + } + m_Cnt--; + double th = ((m_High + m_Low)*0.5); + th = m_iir.Do(th); + if( m_High > m_Low ){ + d = (d - th) * 1.1 + th; + } + d += (ATCC - th); + return d; +} + +//--------------------------------------------------------------------------- +// CFIRƒNƒ‰ƒX +__fastcall CFIR::CFIR() +{ + m_pZ = NULL; + m_pH = NULL; + m_Tap = 0; +} + +//--------------------------------------------------------------------------- +__fastcall CFIR::~CFIR() +{ + if( m_pZ ) delete[] m_pZ; + if( m_pH ) delete[] m_pH; +} +//--------------------------------------------------------------------------- +void __fastcall CFIR::Create(int tap, int type, double fs, double fcl, double fch, double att, double gain) +{ + m_Tap = tap; + if( m_pZ ) delete[] m_pZ; + if( m_pH ) delete[] m_pH; + m_pZ = new double[tap+1]; + m_pH = new double[tap+1]; + memset(m_pZ, 0, sizeof(double)*(tap+1)); + ::MakeFilter(m_pH, tap, type, fs, fcl, fch, att, gain); +} +//--------------------------------------------------------------------------- +double __fastcall CFIR::Do(double d) +{ + return DoFIR(m_pH, m_pZ, d, m_Tap); +} +//--------------------------------------------------------------------------- +void __fastcall CFIR::SaveCoef(LPCSTR pName) +{ + FILE *fp; + if( (fp = fopen(pName, "wt")) != NULL ){ + int i; + for( i = 0; i <= m_Tap; i++ ){ + fprintf(fp, "H[%u]=%lf\n", i, m_pH[i]); + } + fclose(fp); + } +} + +//--------------------------------------------------------------------------- +// CFIR2ƒNƒ‰ƒX +__fastcall CFIR2::CFIR2() +{ + m_pZ = NULL; + m_pH = NULL; + m_pZP = NULL; + m_W = 0; + m_Tap = 0; + m_fs = 0; +} + +//--------------------------------------------------------------------------- +__fastcall CFIR2::~CFIR2() +{ + if( m_pZ ) delete[] m_pZ; + if( m_pH ) delete[] m_pH; +} +//--------------------------------------------------------------------------- +void __fastcall CFIR2::Delete(void) +{ + if( m_pZ ) delete[] m_pZ; + if( m_pH ) delete[] m_pH; + m_pZ = NULL; + m_pH = NULL; + m_pZP = NULL; + m_W = 0; + m_Tap = 0; + m_fs = 0; +} +//--------------------------------------------------------------------------- +void __fastcall CFIR2::Create(int tap, int type, double fs, double fcl, double fch, double att, double gain) +{ + if( (m_Tap != tap) || !m_pZ || !m_pH ){ + if( m_pZ ) delete[] m_pZ; + m_pZ = new double[(tap+1)*2]; + memset(m_pZ, 0, sizeof(double)*(tap+1)*2); + if( m_pH ) delete[] m_pH; + m_pH = new double[tap+1]; + m_W = 0; + } + m_Tap = tap; + m_TapHalf = tap/2; + m_fs = fs; + ::MakeFilter(m_pH, tap, type, fs, fcl, fch, att, gain); +} +//--------------------------------------------------------------------------- +void __fastcall CFIR2::Create(int tap, double fs, double fcl, double fch) +{ + if( (m_Tap != tap) || !m_pZ || !m_pH ){ + if( m_pZ ) delete[] m_pZ; + m_pZ = new double[(tap+1)*2]; + memset(m_pZ, 0, sizeof(double)*(tap+1)*2); + if( m_pH ) delete[] m_pH; + m_pH = new double[tap+1]; + m_W = 0; + } + m_Tap = tap; + m_TapHalf = tap/2; + m_fs = fs; + ::MakeHilbert(m_pH, tap, fs, fcl, fch); +} +//--------------------------------------------------------------------------- +void __fastcall CFIR2::CreateSamp(int tap, double fs, const double *pSmpFQ) +{ + if( (m_Tap != tap) || !m_pZ || !m_pH ){ + if( m_pZ ) delete[] m_pZ; + m_pZ = new double[(tap+1)*2]; + memset(m_pZ, 0, sizeof(double)*(tap+1)*2); + if( m_pH ) delete[] m_pH; + m_pH = new double[tap+1]; + m_W = 0; + } + + int htap = tap/2; + int i, j; + double *pSamp = new double[tap+1]; + memcpy(pSamp, pSmpFQ, sizeof(double)*(tap/2)); + for( i = 0; i < tap/2; i++ ){ + pSamp[tap-i] = pSamp[i]; + } + pSamp[tap/2] = pSamp[tap/2 - 1]; + double *pH = new double[tap+1]; + double re, fm; + + for( i = 0; i <= htap; i++ ){ + re = 0.0; + for( j = 0; j < tap; j++ ){ + fm = 2.0 * PI * double((i*j)%tap)/double(tap); + re += pSamp[j] * cos(fm); + } + pH[i] = re / tap; + } +#if 0 + fm = 0; + for( i = 0; i <= htap; i++ ){ + fm += pH[i]; + } + fm = 0.5 / fm; + for( i = 0; i <= htap; i++ ){ + pH[i] *= fm; + } +#endif + for( i = 0; i <= htap; i++ ) m_pH[htap-i] = pH[i]; + for( i = 0; i < htap; i++ ) m_pH[tap-i] = m_pH[i]; + delete[] pH; + delete[] pSamp; + + m_Tap = tap; + m_TapHalf = htap; + m_fs = fs; +} +//--------------------------------------------------------------------------- +void __fastcall CFIR2::Clear(void) +{ + if( m_pZ ) memset(m_pZ, 0, sizeof(double)*(m_Tap+1)*2); + m_W = 0; +} +//--------------------------------------------------------------------------- +double __fastcall CFIR2::Do(double d) +{ + double *dp1 = &m_pZ[m_W+m_Tap+1]; + m_pZP = dp1; + *dp1 = d; + m_pZ[m_W] = d; + d = 0; + double *hp = m_pH; + for( int i = 0; i <= m_Tap; i++ ){ + d += (*dp1--) * (*hp++); + } + m_W++; + if( m_W > m_Tap ) m_W = 0; + return d; +} +//--------------------------------------------------------------------------- +double __fastcall CFIR2::Do(double *hp) +{ + double d = 0; + double *dp = m_pZP; + for( int i = 0; i <= m_Tap; i++ ){ + d += (*dp--) * (*hp++); + } + return d; +} +//--------------------------------------------------------------------------- +void __fastcall CFIR2::Do(CLX &z, double d) +{ + double *dp1 = &m_pZ[m_W+m_Tap+1]; + m_pZP = dp1; + *dp1 = d; + m_pZ[m_W] = d; + d = 0; + double *hp = m_pH; + for( int i = 0; i <= m_Tap; i++ ){ + d += (*dp1--) * (*hp++); + } + z.j = d; + z.r = m_pZ[m_W+m_TapHalf+1]; + m_W++; + if( m_W > m_Tap ) m_W = 0; +} + + +//--------------------------------------------------------------------------- +// CFIRXƒNƒ‰ƒX +__fastcall CFIRX::CFIRX() +{ + m_pZ = NULL; + m_pH = NULL; + m_pZP = NULL; + m_W = 0; + m_Tap = 0; + m_fs = 0; +} + +//--------------------------------------------------------------------------- +__fastcall CFIRX::~CFIRX() +{ + if( m_pZ ) delete[] m_pZ; + if( m_pH ) delete[] m_pH; +} +//--------------------------------------------------------------------------- +void __fastcall CFIRX::Create(int tap, int type, double fs, double fcl, double fch, double att, double gain) +{ + if( (m_Tap != tap) || !m_pZ || !m_pH ){ + if( m_pZ ) delete[] m_pZ; + m_pZ = new CLX[(tap+1)*2]; + memset(m_pZ, 0, sizeof(CLX)*(tap+1)*2); + if( m_pH ) delete[] m_pH; + m_pH = new double[tap+1]; + m_W = 0; + } + m_Tap = tap; + m_TapHalf = tap/2; + m_fs = fs; + ::MakeFilter(m_pH, tap, type, fs, fcl, fch, att, gain); +} +//--------------------------------------------------------------------------- +void __fastcall CFIRX::Clear(void) +{ + if( m_pZ ) memset(m_pZ, 0, sizeof(CLX)*(m_Tap+1)*2); + m_W = 0; +} +//--------------------------------------------------------------------------- +void __fastcall CFIRX::Do(CLX &d) +{ + CLX *dp1 = &m_pZ[m_W+m_Tap+1]; + m_pZP = dp1; + *dp1 = d; + m_pZ[m_W] = d; + CLX z = 0; + double *hp = m_pH; + for( int i = 0; i <= m_Tap; i++, dp1-- ){ + z.r += dp1->r * (*hp); + z.j += dp1->j * (*hp++); + } + m_W++; + if( m_W > m_Tap ) m_W = 0; + d = z; +} + +/*============================================================================= + CSlideFFTƒNƒ‰ƒX ƒXƒ‰ƒCƒfƒBƒ“ƒO@FFT +=============================================================================*/ +#define SLIDE_WINDOW_COEFF 0.9999 +__fastcall CSlideFFT::CSlideFFT(void) +{ + m_Length = 0; + m_Base = 0; + m_Tones = 0; + m_kWindow = 0; + m_pBase = NULL; + m_pCur = m_pEnd = NULL; +} + +//-------------------------------------------------------------------------- +__fastcall CSlideFFT::~CSlideFFT() +{ + if( m_pBase ) delete[] m_pBase; +} + +//-------------------------------------------------------------------------- +void __fastcall CSlideFFT::Create(int len, int base, int tones) +{ +#if LOGFFT + FILE *fp = fopen("SLIDERFFT.txt", "wt"); + fprintf(fp, "len=%d, base=%d, tones=%d\n", len, base, tones); + fclose(fp); +#endif + if( !m_pBase || (len != m_Length) ){ + if( m_pBase ) delete[] m_pBase; + m_pBase = new CLX[len]; + } + + memset(m_pBase, 0, sizeof(CLX)*len); + memset(m_tWindow, 0, sizeof(m_tWindow)); + memset(m_tData, 0, sizeof(m_tData)); + + m_Length = len; + m_Base = base; + m_Tones = tones; + + double k = 2.0 * PI / double(len); + for(int i = 0; i < tones; i++){ + m_tWindow[i].r = cos((i+base) * k) * SLIDE_WINDOW_COEFF; + m_tWindow[i].j = sin((i+base) * k) * SLIDE_WINDOW_COEFF; + } + m_kWindow = pow(SLIDE_WINDOW_COEFF, len); + m_pCur = m_pBase; + m_pEnd = &m_pBase[m_Length]; +} + +//-------------------------------------------------------------------------- +CLX* __fastcall CSlideFFT::Do(const CLX &zIn) +{ + CLX z; + + if( m_pCur >= m_pEnd ) m_pCur = m_pBase; + z = *m_pCur; + *m_pCur = zIn; + m_pCur++; + z *= m_kWindow; + + CLX *pData = m_tData; + CLX *pWindow = m_tWindow; + for( int i = 0; i < m_Tones; i++, pData++ ){ + *pData -= z; + *pData += zIn; + *pData *= *pWindow++; + } + return m_tData; +} + +/*============================================================================= + CPHASEƒNƒ‰ƒX +=============================================================================*/ +__fastcall CPHASE::CPHASE() +{ + m_TONES = 4; + m_SHIFT = 170.0; + m_SampleFreq = 11025.0*0.5; + m_CarrierFreq = 1750; + m_MixerFreq = 0; + SetSampleFreq(m_SampleFreq); +} +//-------------------------------------------------------------------------- +void __fastcall CPHASE::ShowPara(void) +{ +/* + if( Application->MainForm ){ + char bf[256]; + sprintf(bf, "Car=%.lf, Shift=%.lf", m_CarrierFreq, m_SHIFT); + Application->MainForm->Caption = bf; + } +*/ +} +//-------------------------------------------------------------------------- +void __fastcall CPHASE::SetSampleFreq(double f) +{ + m_SampleFreq = f; + Create(); +} +//-------------------------------------------------------------------------- +void __fastcall CPHASE::Create(void) +{ +// m_fftSHIFT = m_SHIFT * (m_TONES + 1) / m_TONES; + m_fftSHIFT = m_SHIFT * m_TONES / (m_TONES - 1); + m_SymbolLen = m_TONES * m_SampleFreq / m_fftSHIFT; + m_BASEPOINT = int(CPHASE_BASEFREQ * m_TONES / m_fftSHIFT); + + m_MixerFreq = double(m_BASEPOINT) * m_SampleFreq / m_SymbolLen; + m_VCO.SetSampleFreq(m_SampleFreq); + m_Hilbert.Create(20, m_SampleFreq, 25.0, m_SampleFreq*0.5 - 25.0); + m_Hilbert.Clear(); + SetCarrierFreq(m_CarrierFreq); + m_SlideFFT.Create(int(m_SymbolLen + 0.5), m_BASEPOINT, m_TONES); + m_AGC.SetSampleFreq(m_SampleFreq); + m_AGC.SetCarrierFreq(m_CarrierFreq); +// m_LPF.Create(192, ffBEF, m_SampleFreq, 85.0 - 20, 85.0 + 20, 60, 1.0); +#if LOGFFT + m_fp = fopen("FFT.txt", "wt"); +#endif +// ShowPara(); +} +//-------------------------------------------------------------------------- +void __fastcall CPHASE::SetShift(double f) +{ + m_SHIFT = f; + Create(); +} +//-------------------------------------------------------------------------- +void __fastcall CPHASE::SetCarrierFreq(double f) +{ + m_CarrierFreq = f; + m_VCO.SetFreeFreq(m_CarrierFreq - m_MixerFreq); + m_AGC.SetCarrierFreq(m_CarrierFreq); +// ShowPara(); +} +//-------------------------------------------------------------------------- +CLX* __fastcall CPHASE::Do(double d) +{ + m_Hilbert.Do(m_sig, d); // •¡‘f”‰» + + CLX z; + z.r = m_VCO.Do(); + z.j = m_VCO.DoCos(); + z *= m_sig; // Žü”g”•ÏŠ· + +// m_LPF.Do(z); + return m_SlideFFT.Do(z); +} +//-------------------------------------------------------------------------- +void __fastcall CPHASE::DoFSK(double d) +{ +// d = m_AGC.Do(d); + CLX *pFFT = Do(d); + m_dm = pFFT[0].vAbs(); + m_ds = pFFT[m_TONES-1].vAbs(); + +#if LOGFFT + for( int i = 0; i < m_TONES; i++ ){ + if( i ) fprintf(m_fp, ","); + fprintf(m_fp, "%.0lf", pFFT[i].vAbs()); + } + fprintf(m_fp, "\n"); +#endif +} +//-------------------------------------------------------------------------- +void __fastcall DoAvg(double &av, double in, double factor) +{ + av = av * (1.0 - factor) + (in * factor); +} +//--------------------------------------------------------------------------- +__fastcall CFAVG::CFAVG() +{ + Create(16); +} +//--------------------------------------------------------------------------- +void __fastcall CFAVG::Reset(void) +{ + m_Cnt = 0; + m_Sum = 0; + m_Avg = 0; +} +//--------------------------------------------------------------------------- +void __fastcall CFAVG::Reset(double d) +{ + m_Cnt = m_Max; + m_Sum = d * m_Max; + m_Avg = d; +} +//--------------------------------------------------------------------------- +void __fastcall CFAVG::Create(int max) +{ + m_Max = max; + m_Mul = 1.0 / m_Max; + Reset(); +} +//--------------------------------------------------------------------------- +double __fastcall CFAVG::DoZ(double d) +{ + m_Sum += d; + if( m_Cnt < m_Max ){ + m_Cnt++; + } + else { + m_Sum -= m_Avg; + } + m_Avg = m_Sum * m_Mul; + return m_Avg; +} +//--------------------------------------------------------------------------- +double __fastcall CFAVG::Do(double d) +{ + m_Sum += d; + if( m_Cnt < m_Max ){ + m_Cnt++; + m_Avg = m_Sum / m_Cnt; + } + else { + m_Sum -= m_Avg; + m_Avg = m_Sum * m_Mul; + } + return m_Avg; +} + +//-------------------------------------------------------- +// CAGCƒNƒ‰ƒX +__fastcall CAGCX::CAGCX() +{ + m_fc = 1000.0; + m_MonitorFreq = SampFreq/2048; + m_SampleFreq = SampFreq; + m_CarrierFreq = 1750.0; + m_LimitGain = 0.005; + m_AvgOver.Create(4); + Create(); +} +//-------------------------------------------------------- +void __fastcall CAGCX::Create(void) +{ + m_Count = 0; + m_Max = -1.0; + m_Min = 1.0; + m_d = 0; + m_agc = 1.0; +// m_Level.Create(ffLPF, 0.3, m_MonitorFreq, 3, 0, 0); + SetCarrierFreq(m_CarrierFreq); +} +//-------------------------------------------------------- +void __fastcall CAGCX::SetCarrierFreq(double f) +{ + m_CarrierFreq = f; + if( m_CarrierFreq >= 1000.0 ){ + m_Gain = (m_CarrierFreq / 1000.0); + +/* +500 0.003 333 +1000 0.0035 285 1.0 1.0 +1500 0.005 200 1.4 1.5 +1800 0.006 166 1.71 +2000 0.008 125 2.3 2.0 +2100 0.01 100 2.85 2.1 +2200 0.012 83 3.4 2.2 +2300 0.015 66 4.3 2.3 +2400 0.025 40 7.1 2.4 +2500 0.028 36 7.9 2.5 +2600 0.030 33 8.6 2.6 +*/ + if( m_Gain >= 2.35 ){ + m_Gain *= 7.1 / 2.4; + } + else if( m_Gain >= 2.25 ){ + m_Gain *= 4.3 / 2.3; + } + else if( m_Gain >= 2.15 ){ + m_Gain *= 3.4 / 2.2; + } + else if( m_Gain >= 2.05 ){ + m_Gain *= 2.9 / 2.1; + } + else if( m_Gain >= 1.8 ){ + m_Gain *= 2.3 / 2.2; + } + } + else { + m_Gain = 1.0; + } + SetFC(m_fc); +} +//-------------------------------------------------------- +void __fastcall CAGCX::SetFC(double fc) +{ + m_fc = fc; + if( fc > m_CarrierFreq*0.45 ) fc = m_CarrierFreq*0.45; +// m_LPF.Create(ffLPF, fc, m_CarrierFreq, 1, 0, 0); + m_LPF.MakeIIR(fc, m_CarrierFreq, 1, 0, 0); + m_d = 0; + m_TLimit = m_SampleFreq*0.8/m_CarrierFreq; + m_AvgOver.Reset(1.0); +} +//-------------------------------------------------------- +void __fastcall CAGCX::Reset(void) +{ + m_Max = -1.0; + m_Min = 1.0; + m_agc = 1.0; + m_d = 0; + m_Count = 0; + for( int i = 0; i < 12; i++ ){ + m_LPF.Do(1.0); +// m_Level.Do(0); + } + m_AvgOver.Reset(1.0); +} +//-------------------------------------------------------- +double __fastcall CAGCX::Do(double d) +{ + if( m_Max < d ) m_Max = d; + if( m_Min > d ) m_Min = d; + if( (d >= 0) && (m_d < 0) && (m_Count >= m_TLimit) ){ + double amp = m_Max - m_Min; + if( amp > 0.1 ){ + m_agc = m_LPF.Do(5.0/amp); + if( m_agc >= 1.0 ) m_agc = 1.0; + m_Max = -32768.0; + m_Min = 32768.0; + } + m_Count = 0; + } + m_Count++; + m_d = d; + d *= m_agc; + if( d > 2.5 ){ d = 2.5; } else if( d < -2.5 ){ d = -2.5; } + return d; +} +//-------------------------------------------------------- +BOOL __fastcall CAGCX::GetOver(void) +{ +// 5.0 / (65536 * 0.666) + return (m_AvgOver.Do(m_agc) < 0.0001146); +// return (m_agc < 0.0001146); +} +/******************************************************** +CAMPCONT class by JE3HHT on Sep.2010 +*********************************************************/ +__fastcall CAMPCONT::CAMPCONT() +{ + m_Max = g_SinTable.m_Size / 4; + m_iMax = g_SinTable.m_Size / 4; + m_Cnt = m_Max; + m_S = 0; + SetMax(16); +} +//--------------------------------------------------------------------------- +void __fastcall CAMPCONT::SetMax(int max) +{ + m_ADD = m_Max / double(max); +} +//--------------------------------------------------------------------------- +void __fastcall CAMPCONT::Reset(void) +{ + m_Cnt = m_Max; + m_S = 0; +} +//--------------------------------------------------------------------------- +double __fastcall CAMPCONT::Do(int s) +{ + if( s != m_S ){ + m_Cnt = 0.0; + m_S = s; + } + int r = m_Cnt; + if( r >= m_Max ) return s; + m_Cnt += m_ADD; + if( s ){ + return g_SinTable.m_tSin[r]; + } + else { + return g_SinTable.m_tSin[r+m_iMax]; + } +} +/******************************************************** +CAA6YQ class by JE3HHT on Sep.2010 +*********************************************************/ +__fastcall CAA6YQ::CAA6YQ(void) +{ + m_fEnabled = FALSE; + m_bpfTaps = 512; + m_bpfFW = 35.0; + m_befTaps = 256; + m_befFW = 15.0; + m_afcERR = 5.0; + + m_dblMark = 2125.0; + m_dblSpace = 2295.0; + m_dblMarkAFC = m_dblMark; + m_dblSpaceAFC = m_dblSpace; + Create(); +} +//-------------------------------------------------------- +void __fastcall CAA6YQ::Create(void) +{ + m_BPF.Create(m_bpfTaps, ffBPF, SampFreq, m_dblMark-m_bpfFW, m_dblSpace+m_bpfFW, 60.0, 1.0); + double fc = (m_dblMark + m_dblSpace)/2.0; + m_BEF.Create(m_befTaps, ffBEF, SampFreq, fc-m_befFW, fc+m_befFW, 10.0, 1.0); +} +//-------------------------------------------------------- +void __fastcall CAA6YQ::SetMarkFreq(double f) +{ + m_dblMark = f; + m_dblMarkAFC = f; + if( m_fEnabled ) Create(); +} +//-------------------------------------------------------- +void __fastcall CAA6YQ::SetSpaceFreq(double f) +{ + m_dblSpace = f; + m_dblSpaceAFC = f; + if( m_fEnabled ) Create(); +} +//-------------------------------------------------------- +void __fastcall CAA6YQ::SetMarkFreqByAFC(double f) +{ + m_dblMark = f; + double df = fabs(f - m_dblMarkAFC); + if( df >= m_afcERR ){ + m_dblMarkAFC = f; + if( m_fEnabled ) Create(); + } +} +//-------------------------------------------------------- +void __fastcall CAA6YQ::SetSpaceFreqByAFC(double f) +{ + m_dblSpace = f; + double df = fabs(f - m_dblSpaceAFC); + if( df >= m_afcERR ){ + m_dblSpaceAFC = f; + if( m_fEnabled ) Create(); + } +} +//-------------------------------------------------------- +double __fastcall CAA6YQ::Do(double d) +{ + return m_BEF.Do(m_BPF.Do(d)); +} +//-------------------------------------------------------- + + diff --git a/Rtty.h b/Rtty.h new file mode 100644 index 0000000..054873c --- /dev/null +++ b/Rtty.h @@ -0,0 +1,933 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef RttyH +#define RttyH +//--------------------------------------------------------------------------- +#include "Fir.h" +#include "CLX.h" + +#define VERFFTDEM 1 // CPhaseX Version +#define VERAA6YQ 2 // CAA6YQ Version + +#define BITDEBUG 0 // ƒLƒƒƒ‰ƒNƒ^’·‚Ì‘ª’è +#define TXDDEBUG 0 // FSK‚̃Lƒƒƒ‰ƒNƒ^’·‚Ì‘ª’è +#define FSKDEBUG 0 // FSK‚̃fƒoƒbƒOƒ‚[ƒh + +#ifndef SampFreq +extern double SampFreq; +#endif + +//--------------------------------------------------------------------------- +// Added by JE3HHT on Aug.2010 +class CFAVG +{ +private: + double m_Sum; + double m_Avg; + double m_Mul; + int m_Max; + int m_Cnt; +public: + __fastcall CFAVG(); + void __fastcall Reset(void); + void __fastcall Reset(double d); + void __fastcall Create(int max); + double __fastcall DoZ(double d); + double __fastcall Do(double d); + inline double __fastcall GetAvg(void){return m_Avg;}; + inline BOOL __fastcall IsFull(void){return m_Max == m_Cnt;}; + inline BOOL __fastcall IsHalf(void){return m_Max <= (m_Cnt*2);}; + inline int __fastcall GetCount(void){return m_Cnt;}; +}; +//-------------------------------------------------------- +// CAGCƒNƒ‰ƒX +// Added by JE3HHT on Aug.2010 +class CAGCX +{ +private: + double m_Max; + double m_Min; + double m_d; + double m_agc; + + double m_fc; + double m_Gain; + CIIR m_LPF; +// CIIR m_Level; + int m_Count; + int m_TLimit; + CFAVG m_AvgOver; +public: + double m_LimitGain; + double m_MonitorFreq; + double m_CarrierFreq; + double m_SampleFreq; +public: + __fastcall CAGCX(); + void __fastcall Create(void); + inline void __fastcall SetSampleFreq(double f){m_SampleFreq = f; Create();}; + void __fastcall SetCarrierFreq(double f); + void __fastcall SetFC(double fc); + void __fastcall Reset(void); + double __fastcall Do(double d); + inline void __fastcall ResetOver(void){m_AvgOver.Reset(1.0);}; + BOOL __fastcall GetOver(void); +}; + +//--------------------------------------------------------------------------- +class CSinTable +{ +public: + double *m_tSin; + int m_Size; +public: + __fastcall CSinTable(); + __fastcall ~CSinTable(); +}; + +//--------------------------------------------------------------------------- +class CAMPCONT +{ +private: + double m_Max; + double m_Cnt; + double m_ADD; + int m_S; + int m_iMax; +public: + __fastcall CAMPCONT(); + void __fastcall SetMax(int max); + void __fastcall Reset(void); + double __fastcall Do(int d); + + inline __fastcall IsMax(void){return m_Cnt >= m_Max;}; +}; + +//--------------------------------------------------------------------------- +class CTICK +{ +public: + int *ptbl[2]; + int m_wsel; + int *m_wp; + int m_wcnt; + int m_Trig; + int m_Samp; +public: + CTICK(); + ~CTICK(); + void Init(void); + void Write(double d); + inline int GetTrig(void){return m_Trig;}; + int *GetData(void); +}; + + +class CVCO +{ +private: + double m_c1; // VCO‚Ì—˜“¾ + double m_c2; // ƒtƒŠ[ƒ‰ƒ“ƒjƒ“ƒOŽü”g” + int m_z; + + int m_TableSize; + double *pSinTbl; + double m_FreeFreq; + double m_SampleFreq; + int m_vlock; +public: + CVCO(); + ~CVCO(); + void VirtualLock(void); + void InitPhase(void); + void SetGain(double gain); + void SetSampleFreq(double f); + void SetFreeFreq(double f); + double Do(double d); +}; + +//--------------------------------------------------------------------------- +// Added by JE3HHT on Aug.2010 +class CVCOX +{ +private: + double m_c1; // VCO‚Ì—˜“¾ + double m_c2; // ƒtƒŠ[ƒ‰ƒ“ƒjƒ“ƒOŽü”g” + double m_z; + + double m_FreeFreq; + double m_SampleFreq; + int m_TableSize; + double m_TableCOS; +public: + __fastcall CVCOX(); + __fastcall ~CVCOX(); + void __fastcall InitPhase(void); + void __fastcall SetGain(double gain); + void __fastcall SetSampleFreq(double f); + void __fastcall SetFreeFreq(double f); + double __fastcall Do(void); + double __fastcall Do(double d); + double __fastcall DoCos(void); +}; + +class CSmooz{ +private: + double *bp; + int Wp; + int Max; + int Cnt; + inline void IncWp(void){ + Wp++; + if( Wp >= Max ) Wp = 0; + }; + inline double Avg(void){ + double d = 0.0; + int i; + for( i = 0; i < Cnt; i++ ){ + d += bp[i]; + } + if( Cnt ){ + return d/double(Cnt); + } + else { + return 0; + } + }; +public: + inline CSmooz(int max = 60){ + Max = max; + bp = new double[max]; + Cnt = 0; + Wp = 0; + }; + inline ~CSmooz(void){ + delete[] bp; + }; + inline void SetCount(int n){ + double *np = new double[n]; + Max = n; + Cnt = Wp = 0; + double *op = bp; + bp = np; + delete[] op; //JA7UDE 0428 + //delete[] np; //JA7UDE 0428 + }; + inline double Avg(double d){ + bp[Wp] = d; + IncWp(); + if( Cnt < Max ){ + Cnt++; + } + return Avg(); + }; +}; + +//--------------------------------------------------------------------------- +// Added by JE3HHT on Aug.2010 +class CFIR +{ +private: + int m_Tap; + double *m_pZ; + double *m_pH; +public: + __fastcall CFIR(); + __fastcall ~CFIR(); + void __fastcall Create(int tap, int type, double fs, double fcl, double fch, double att, double gain); + double __fastcall Do(double d); + void __fastcall SaveCoef(LPCSTR pName); + inline double __fastcall GetHD(int n){return m_pH[n];}; + inline double *__fastcall GetHP(void){return m_pH;}; + inline int __fastcall GetTap(void){return m_Tap;}; +}; + +//--------------------------------------------------------------------------- +// ƒ_ƒuƒ‹ƒoƒbƒtƒ@‚É‚æ‚éFIRƒtƒBƒ‹ƒ^ +// Added by JE3HHT on Aug.2010 +class CFIR2 +{ +private: + int m_Tap; + int m_TapHalf; + double *m_pZ; + double *m_pH; + double *m_pZP; + + int m_W; + double m_fs; +public: + __fastcall CFIR2(); + __fastcall ~CFIR2(); + void __fastcall Delete(void); + void __fastcall Clear(void); + void __fastcall Create(int tap, int type, double fs, double fcl, double fch, double att, double gain); + void __fastcall Create(int tap, double fs, double fcl, double fch); + void __fastcall CreateSamp(int tap, double fs, const double *pSmpFQ); + double __fastcall Do(double d); + double __fastcall Do(double *hp); + void __fastcall Do(CLX &z, double d); + + inline double __fastcall GetHD(int n){return m_pH[n];}; + inline double *__fastcall GetHP(void){return m_pH;}; + inline int __fastcall GetTap(void){return m_Tap;}; + inline double __fastcall GetSampleFreq(void){return m_fs;}; +}; +//--------------------------------------------------------------------------- +// ƒ_ƒuƒ‹ƒoƒbƒtƒ@‚É‚æ‚éFIRƒtƒBƒ‹ƒ^(•¡‘f”—p) +// Added by JE3HHT on Aug.2010 +class CFIRX +{ +private: + int m_Tap; + int m_TapHalf; + CLX *m_pZ; + double *m_pH; + CLX *m_pZP; + + int m_W; + double m_fs; +public: + __fastcall CFIRX(); + __fastcall ~CFIRX(); + void __fastcall Clear(void); + void __fastcall Create(int tap, int type, double fs, double fcl, double fch, double att, double gain); + void __fastcall Do(CLX &d); + + inline double __fastcall GetHD(int n){return m_pH[n];}; + inline double *__fastcall GetHP(void){return m_pH;}; + inline int __fastcall GetTap(void){return m_Tap;}; + inline double __fastcall GetSampleFreq(void){return m_fs;}; +}; +//--------------------------------------------------------------------------- +// ƒXƒ‰ƒCƒfƒBƒ“ƒOFFT +// Added by JE3HHT on Aug.2010 +class CSlideFFT +{ +private: + int m_Length; + int m_Base; + int m_Tones; + + CLX m_tData[16]; + CLX m_tWindow[16]; + + CLX *m_pCur; + CLX *m_pEnd; + CLX *m_pBase; + + double m_kWindow; +private: +public: + __fastcall CSlideFFT(); + __fastcall ~CSlideFFT(); + + void __fastcall Create(int len, int base, int tones); + CLX* __fastcall Do(const CLX &zIn); +}; + +/*============================================================================= + CPHASEƒNƒ‰ƒX +=============================================================================*/ +#define CPHASE_BASEFREQ 0.0 +class CPHASE +{ +private: +// CFIRX m_LPF; + CVCOX m_VCO; + CFIR2 m_Hilbert; + CAGCX m_AGC; + + FILE *m_fp; +public: + CLX m_sig; + CSlideFFT m_SlideFFT; + + int m_TONES; + double m_SHIFT; + double m_fftSHIFT; + int m_BASEPOINT; + + double m_MixerFreq; + double m_SymbolLen; + double m_CarrierFreq; + double m_SampleFreq; + + double m_dm; + double m_ds; +private: +public: + __fastcall CPHASE(); + void __fastcall Create(void); + void __fastcall SetSampleFreq(double f); + void __fastcall SetCarrierFreq(double f); + inline void __fastcall AddCarrierFreq(double f){ + SetCarrierFreq(m_CarrierFreq + f); + }; + CLX* __fastcall Do(double d); + inline CFIR2* __fastcall GetFIR(void){return &m_Hilbert;}; + + void __fastcall DoFSK(double d); + void __fastcall SetShift(double f); + void __fastcall ShowPara(void); + + inline void SetTones(int n){ + m_TONES = n; + Create(); + } +}; + +class CPLL +{ +private: + CIIR loopLPF; + CIIR outLPF; + + double m_err; + double m_out; + double m_vcoout; + double m_SampleFreq; + double m_FreeFreq; + double m_Shift; +public: + int m_loopOrder; + double m_loopFC; + int m_outOrder; + double m_outFC; + double m_vcogain; +public: + CVCO vco; + inline CPLL(){ + m_err = 0; + m_out = 0; + m_vcoout = 0; + m_vcogain = 3.0; + m_SampleFreq = SampFreq * 0.5; + m_Shift = 170.0; + m_FreeFreq = (2125 + 2295)/2; + m_loopOrder = 2; + m_outOrder = 4; + m_loopFC = 250.0; + m_outFC = 200.0; + SetFreeFreq(2125, 2295); + SetSampleFreq(m_SampleFreq); + }; + inline void SetVcoGain(double g){ + m_vcogain = g; + vco.SetGain(-m_Shift * g); + }; + inline void MakeLoopLPF(void){ + loopLPF.MakeIIR(m_loopFC, m_SampleFreq, m_loopOrder, 0, 0); + } + inline void MakeOutLPF(void){ + outLPF.MakeIIR(m_outFC, m_SampleFreq, m_outOrder, 0, 0); + } + inline void SetFreeFreq(double f1, double f2){ + m_FreeFreq = (f1 + f2)/2.0; + m_Shift = f2 - f1; + vco.SetFreeFreq(m_FreeFreq); + vco.SetGain(-m_Shift * m_vcogain); + } + void SetSampleFreq(double f){ + m_SampleFreq = f; + vco.SetSampleFreq(f); + vco.SetFreeFreq(m_FreeFreq); + SetVcoGain(3.0); + MakeLoopLPF(); + MakeOutLPF(); + }; + double Do(double d){ + d /= 32768.0; + // Loop Filter + m_out = loopLPF.Do(m_err); + // VCO + m_vcoout = vco.Do(m_out); + // ˆÊ‘Š”äŠr + m_err = m_vcoout * d; + return outLPF.Do(m_out) * 32768.0; + }; + inline double GetErr(void){return m_err*32768;}; // Phase Det + inline double GetOut(void){return m_out*32768;}; // Phase Det + inline double GetVco(void){return m_vcoout;}; +}; + + +#define SCOPESIZE 8192 +class CScope +{ +private: + int m_DataFlag; + + int m_wp; + +public: + int m_ScopeSize; + double *pScopeData; + +public: + CScope(); + ~CScope(); + void WriteData(double d); + void UpdateData(double d); + inline int GetFlag(void){m_DataFlag; return 0;}; //JA7UDE 0428 + void Collect(int size); +}; + +#define SAMPLEPEAKMAX 16 +class CSamplePeak +{ +private: + double Strage[SAMPLEPEAKMAX]; + double m_CurPeak; + double m_Peak; + + int m_Strage; + int m_Count; + int m_ReCount; +public: + CSamplePeak(); + + inline int GetStrage(void){ return m_Strage + 1;}; + inline void SetStrage(int n){ + if( n > SAMPLEPEAKMAX ) n = SAMPLEPEAKMAX; + m_Strage = n ? (n - 1) : 0; + }; + double GetPeak(void){return m_Peak;}; + void SetBaudRate(double b); + void Sync(int Delay); + int Sample(double d); +}; + +class CAGC +{ +private: + double m_MarkGain; + double m_SpaceGain; +public: + int m_Sync; + double m_StepGain; + double m_MaxGain; + double m_DeffGain; + CSamplePeak Mark; + CSamplePeak Space; +public: + CAGC(); + void Sync(int Delay); + double SampleMark(double d); + double SampleSpace(double d); + +}; + +#define ATCMAX 17 +#define ATCC (8192.0) +#define ATCW (1024.0) +class CATC +{ +private: + double m_Low; + double m_High; + double m_CurLow; + double m_CurHigh; + double m_LowList[ATCMAX]; + double m_HighList[ATCMAX]; + int m_Cnt; + CIIR m_iir; +public: + int m_Max; +public: + CATC(); + double Do(double d); +}; + +/******************************************************** +CAA6YQ class by JE3HHT on Sep.2010 +*********************************************************/ +class CAA6YQ { // Added by JE3HHT on Sep.2010 +public: + BOOL m_fEnabled; + int m_bpfTaps; + int m_befTaps; + double m_bpfFW; + double m_befFW; + double m_afcERR; + + double m_dblMark; + double m_dblSpace; + double m_dblMarkAFC; + double m_dblSpaceAFC; + + CFIR2 m_BPF; + CFIR2 m_BEF; +private: +public: + __fastcall CAA6YQ(void); + void __fastcall Create(void); + void __fastcall SetMarkFreq(double f); + void __fastcall SetSpaceFreq(double f); + void __fastcall SetMarkFreqByAFC(double f); + void __fastcall SetSpaceFreqByAFC(double f); + double __fastcall Do(double d); +}; + +#define DEMBUFMAX 512 +#define DEMBPFTAP 36 +class CFSKDEM +{ +private: + double HMark[TAPMAX+1]; + double ZMark[TAPMAX+1]; + double HSpace[TAPMAX+1]; + double ZSpace[TAPMAX+1]; + + int Count; // ƒfƒ‚ƒWƒ…ƒŒ[ƒ^ƒfƒBƒXƒpƒbƒ` + double i2; // ƒfƒ‚ƒWƒ…ƒŒ[ƒ^2ndInput + + CDECM2 DECM2; // ƒfƒ‚ƒWƒ…ƒŒ[ƒ^ + + int m_Smooz; + CSmooz avgMark; + CSmooz avgSpace; + + double m_BaudRate; + int m_Count; + int m_ReCount; + + int m_mode; + int m_inv; + int m_sq; + double m_SQLevel; + + int m_Tap; + double m_FilWidth; + double m_MarkFreq; + double m_SpaceFreq; + double m_SetMarkFreq; + double m_SetSpaceFreq; + double m_AFCMarkFreq; + double m_AFCSpaceFreq; + + int m_DataCount; + BYTE m_Data; + + int m_BufCount; + BYTE m_Buff[DEMBUFMAX]; + int m_wp; + int m_rp; + + double m_dMark; + double m_dSpace; + int m_mark; + int m_space; + + double m_SmoozFreq; + + int m_SumParity; + + CIIRTANK m_iirm; + CIIRTANK m_iirs; + + int m_sqcount; + CSmooz SmoozSQ; + + COVERLIMIT OverLimit; +public: + int m_type; + double m_iirfw; + + int m_OverFlow; +// int m_Bit; + int m_Scope; + int m_XYScope; + + int m_BitLen; + int m_StopLen; + int m_Parity; + + int m_majority; // ‘½”ŒˆƒƒWƒbƒN + int m_ignoreFream; // ƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[‚Ì–³Ž‹ + + int m_Limit; + int m_LimitAGC; + double m_LimitGain; + + double m_limitMax; + double m_limitMin; + double m_d; + double m_limitagc; + + double m_deff; + double m_avgdeff; + + CScope m_XYScopeMark; + CScope m_XYScopeSpace; + CScope m_ScopeMark[4]; + CScope m_ScopeSpace[4]; + CScope m_ScopeSync; + CScope m_ScopeBit; + + CPLL m_pll; + + int m_lpf; + int m_lpfOrder; + double m_lpffreq; + CIIR LpfMark; + CIIR LpfSpace; + + int m_LimitOverSampling; + int m_Tick; + CTICK Tick; + int m_atc; + CATC m_atcMark; + CATC m_atcSpace; + CATC m_atcPLL; + + CPHASE m_Phase; + CAA6YQ m_AA6YQ; +#if BITDEBUG + int m_bitCount; + int m_bitCountA; +#endif +private: + void DoFSK(void); + + +public: + CFSKDEM(); + void Do(double d); + + inline void ClearMode(void){m_mode = 0;}; + double GetFilWidth(int tap); + + void SetIIR(double b); + + void AFCMarkFreq(double d); + void AFCSpaceFreq(double d); + void SetMarkFreq(double d); + void SetSpaceFreq(double d); + inline double GetMarkFreq(void){return m_MarkFreq;}; + inline double GetSpaceFreq(void){return m_SpaceFreq;}; + inline double GetSetMarkFreq(void){return m_SetMarkFreq;}; + inline double GetSetSpaceFreq(void){return m_SetSpaceFreq;}; + inline double GetAFCMarkFreq(void){return m_AFCMarkFreq;}; + inline double GetAFCSpaceFreq(void){return m_AFCSpaceFreq;}; + inline int GetRev(void){ return m_inv; }; + inline void SetRev(int inv){ m_inv = inv;}; + void SetBaudRate(double b); + inline double GetBaudRate(void){return m_BaudRate;}; + inline double GetSmoozFreq(void){return m_SmoozFreq;}; + inline int GetSmoozCount(void){return m_Smooz;}; + void SetSmoozCount(int n); + void SetSmoozFreq(double f); + void SetLPFFreq(double f); + inline int GetSQ(void){return m_sq;}; + inline void SetSQ(int sq){m_sq = sq;}; + inline double GetSQLevel(void){return m_SQLevel;}; + inline void SetSQLevel(double lvl){m_SQLevel = lvl;}; + + inline int GetFilterTap(void){return m_Tap;}; + void SetFilterTap(int tap); + inline int GetCount(void){return m_BufCount;}; + int GetData(); + inline void ClearRXBuf(void){ + m_BufCount = 0; + m_rp = m_wp = 0; + m_mode = 0; + }; + void WriteData(BYTE d); +}; + +#define MODBUFMAX 2048 +class CFSKMOD +{ +private: + double HBPF[TAPMAX+1]; + double ZBPF[TAPMAX+1]; + + CSmooz avgLPF; + double m_LPFFreq; + double m_SampFreq; + + CVCO vco; + + BYTE m_Buff[MODBUFMAX]; + int m_rp; + int m_wp; + int m_cnt; + + int m_Count; + int m_out; + + int m_inv; + + int m_mode; + int m_DataCount; + + double m_BaudRate; + double m_MarkFreq; + double m_SpaceFreq; + + double m_OutputGain; + + BYTE m_Data; + int m_FSKCount; + + int m_SumParity; + int m_fig; + int m_figout; + + int m_idle; + CFSKDEM *pDem; + +private: +public: + int m_BitLen; + int m_StopLen; + int m_Parity; + int m_diddle; + int m_bpf; + int m_bpftap; + int m_lpf; + + int m_DiddleWait; + int m_CharWait; + int m_CharWaitDiddle; + int m_RandomDiddle; + int m_WaitTimer; + int m_DisDiddle; + int m_CharWaitCount; + int m_WaitTimerCount; + + int m_ReCount; + + int m_CoutCount; + + int m_AmpVal; + CAMPCONT m_Amp; + + CFSKMOD(); + inline int IsIdle(void){return m_idle;}; + inline double GetBaudRate(void){return m_BaudRate;}; + void SetBaudRate(double b); + void CalcBPF(void); + void SetMarkFreq(double d); + void SetSpaceFreq(double d); + void SetSampFreq(double f); + inline void InitPhase(void){ + vco.InitPhase(); + m_mode = 0; + m_CharWaitCount = 0; + m_WaitTimerCount = 4; + m_Data = 0; + memset(ZBPF, 0, (m_bpftap+1) * sizeof(double)); + }; + void OutTone(int sw, int bsize); + inline int GetMode(void){ + return m_mode; + }; + inline double GetMarkFreq(void){return m_MarkFreq;}; + inline double GetSpaceFreq(void){return m_SpaceFreq;}; + inline int GetRev(void){return m_inv;}; + inline void SetRev(int inv){m_inv = inv;}; + inline double GetOutputGain(void){return m_OutputGain;}; + inline void SetOutputGain(double gain){m_OutputGain = gain;}; + inline void SetBPF(int sw){m_bpf = sw;}; + + inline double GetLPFFreq(void){return m_LPFFreq;}; + void SetLPFFreq(double f); + + inline void SetCount(int count){ + m_Count = count; + }; + inline void ClearTXBuf(void){ + m_out = -1; + m_Count = m_ReCount/2; + m_cnt = 0; + m_rp = m_wp = 0; + m_figout = 0; + m_DisDiddle = -1; + m_Data = 0; + m_FSKCount = m_SampFreq * 2; + }; + inline void DeleteTXBuf(void){ + m_cnt = 0; + m_rp = m_wp = 0; + m_figout = 0; + }; + inline int SetDiddleTimer(int n){ + m_DisDiddle = n; + return 0; //JA7UDE 0428 + }; + inline int GetBufCount(void){return m_cnt;}; + void PutData(int d); + double Do(int echo); + inline void SetDem(CFSKDEM *p){pDem = p;}; +}; + +#pragma option -a- // ƒpƒbƒN‚ÌŽwަ +typedef struct { + BYTE Code; + BYTE Fig; +}BCODETBL; +#pragma option -a. // ƒpƒbƒN‰ðœ‚ÌŽwަ + +class CRTTY +{ +private: + int m_outfig; + BCODETBL m_TBL[24*4]; + +public: + int m_fig; + int m_uos; + + int m_txuos; + CRTTY(); + char ConvAscii(int d); + int ConvRTTY(char d); + int ConvRTTY(BYTE *t, LPCSTR p); + inline int IsChar(int d){ + d &= 0x000000ff; + if( !d ) return 0; + if( d == 0x000000ff ) return 0; + return 1; + }; + inline void ClearTX(void){m_outfig = 3;}; + inline void ClearRX(void){m_fig = 0;}; + + int GetShift(char d); + char InvShift(char c); + void SetCodeSet(void); +}; + +#define NOISEBPFTAP 12 +class CNoise // MŒn—ñƒmƒCƒY N=22 (Tap=1) +{ +private: + double H[NOISEBPFTAP+1]; + double Z[NOISEBPFTAP+1]; + + DWORD reg; + +public: + CNoise(); + double GetNoise(void); +}; +#endif diff --git a/Scope.cpp b/Scope.cpp new file mode 100644 index 0000000..52cffbd --- /dev/null +++ b/Scope.cpp @@ -0,0 +1,407 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Scope.h" +#include "Option.h" +#include "Main.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TTScope *TScope; +static int m_SourceSel = 0; +static int m_XW = 2048; +static int m_XOFF = (8192 - m_XW)/2; +static int m_CursorX = m_XOFF+(m_XW/2); +static double m_Gain = 2.0; +//--------------------------------------------------------------------- +__fastcall TTScope::TTScope(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "MMTTY Digital Scope"; + OKBtn->Caption = "Close"; + SrcSel->Caption = "Source"; + SrcSel->Items->Strings[1] = "Det."; + SrcSel->Items->Strings[2] = "LPF"; + SBUpDown->Caption = "+-"; + UpBtn->Caption = "+"; + DownBtn->Caption = "-"; + LeftBtn->Caption = "<-"; + RightBtn->Caption = "->"; + } + + pBitmap = new Graphics::TBitmap(); + pBitmap->Width = PaintBox->Width; + pBitmap->Height = PaintBox->Height; + + TRect rc; + rc.Top = 0; + rc.Bottom = pBitmap->Height; + rc.Left = 0; + rc.Right = pBitmap->Width; + pBitmap->Canvas->Brush->Color = clBlack; + pBitmap->Canvas->FillRect(rc); + + pDem = NULL; + pMod = NULL; + +// m_XW = 2048; +// m_Gain = 1.0; +} +//--------------------------------------------------------------------- +__fastcall TTScope::~TTScope() +{ + delete pBitmap; +} +//--------------------------------------------------------------------- +void __fastcall TTScope::Execute(CFSKDEM *pd, CFSKMOD *pm) +{ + pDem = pd; + pMod = pm; + + SrcSel->ItemIndex = m_SourceSel; + UpdateBtn(); + ShowModal(); +} + +void __fastcall TTScope::TrigNext(void) +{ + pDem->m_Scope = 0; + for( int i = 0; i < 4; i++ ){ + pDem->m_ScopeMark[i].Collect(SCOPESIZE); + pDem->m_ScopeSpace[i].Collect(SCOPESIZE); + } + pDem->m_ScopeSync.Collect(SCOPESIZE); + pDem->m_ScopeBit.Collect(SCOPESIZE); + pDem->m_Scope = 1; +} + +#define GAGEWIDTH 5 + +void __fastcall TTScope::PaintPosition(void) +{ + TCanvas *pCanvas = pBitmap->Canvas; + + TRect rc; + rc.Top = 0; + rc.Bottom = GAGEWIDTH; + rc.Left = 0; + rc.Right = pBitmap->Width; + + pCanvas->Brush->Color = clBlack; + pCanvas->FillRect(rc); + + int xw = (m_XW * rc.Right) / pDem->m_ScopeBit.m_ScopeSize; + int x = (m_XOFF * rc.Right) / pDem->m_ScopeBit.m_ScopeSize; + int xc = (m_CursorX * rc.Right) / pDem->m_ScopeBit.m_ScopeSize; + pCanvas->Brush->Color = clGreen; + rc.Left = x; + rc.Right = x + xw; + pCanvas->FillRect(rc); + + pCanvas->Pen->Color = clYellow; + pCanvas->Pen->Style = psSolid; + pCanvas->MoveTo(xc, rc.Top); + pCanvas->LineTo(xc, rc.Bottom); + + pCanvas->Font->Color = clWhite; + pCanvas->Font->Size = 8; + char bf[32]; + sprintf(bf, "Gain:%.1lf", m_Gain); + ::SetBkMode(pCanvas->Handle, TRANSPARENT); + pCanvas->TextOut(0, 0, bf); +} + +void __fastcall TTScope::PaintScope(CScope *sp, int n) +{ + TRect rc; + + int YW = (pBitmap->Height - GAGEWIDTH) / 4; + rc.Top = (YW * n) + GAGEWIDTH; + rc.Bottom = rc.Top + YW; + rc.Left = 0; + rc.Right = pBitmap->Width; + + TCanvas *pCanvas = pBitmap->Canvas; + + pCanvas->Brush->Color = clBlack; + pCanvas->FillRect(rc); + + if( !sp->GetFlag() ) return; + + if( n < 2 ){ + pCanvas->Pen->Color = clWhite; + pBitmap->Canvas->Pen->Style = psDot; + pCanvas->MoveTo(rc.Left, rc.Top + YW/2); + pCanvas->LineTo(rc.Right, rc.Top + YW/2); + } + + pCanvas->Pen->Color = clWhite; + pBitmap->Canvas->Pen->Style = psSolid; + double d; + int x, y, xx, xe; + double ad = 0; + for( x = 0; x < rc.Right; x++ ){ + xx = (x * m_XW / rc.Right) + m_XOFF; + xe = xx + (m_XW / rc.Right); + if( xe >= sp->m_ScopeSize ) xe = sp->m_ScopeSize - 1; + for( ; xx <= xe; xx++ ){ + d = sp->pScopeData[xx]; + if( n >= 2 ){ + if( d < -8000.0 ){ + d = 8192.0; + pCanvas->Pen->Color = clYellow; + } + else if( d < -4000 ){ + d = 8192.0; + pCanvas->Pen->Color = clBlue; + } + else if( d || (ad == 0) ){ + pCanvas->Pen->Color = clWhite; + } + ad = d; + y = rc.Bottom - int(d * YW/10000.0) - 1; + } + else if( (m_SourceSel == 1) && (MmttyWd->pSound->FSKDEM.m_type == 2) ){ + y = rc.Bottom - int(d * YW * m_Gain/32768.0) - YW/2; + } + else if( m_SourceSel ){ + y = rc.Bottom - int(d * YW * m_Gain/16384.0) - 1; + } + else { + y = rc.Bottom - int(d * YW * m_Gain/32768.0) - YW/2; + } + if( y < rc.Top ) y = rc.Top; + if( y > rc.Bottom ) y = rc.Bottom; + if( x ){ + pCanvas->LineTo(x, y); + } + else { + pCanvas->MoveTo(x, y); + } + } + } +} + +void __fastcall TTScope::PaintCursor(void) +{ + int x = (m_CursorX - m_XOFF) * PaintBox->Width / m_XW; + if( (x >= 0) && (x < PaintBox->Width) ){ + PaintBox->Canvas->Pen->Color = clLime; + PaintBox->Canvas->Pen->Style = psDot; + PaintBox->Canvas->MoveTo(x, 5); + PaintBox->Canvas->LineTo(x, pBitmap->Height - GAGEWIDTH - 5); + } +} + +void __fastcall TTScope::PaintBoxPaint(TObject *Sender) +{ + if( pDem == NULL ) return; + + PaintScope(&pDem->m_ScopeMark[m_SourceSel], 0); + PaintScope(&pDem->m_ScopeSpace[m_SourceSel], 1); + PaintScope(&pDem->m_ScopeBit, 2); + PaintScope(&pDem->m_ScopeSync, 3); + PaintPosition(); + PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap); + PaintCursor(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::TimerTimer(TObject *Sender) +{ + if( pDem == NULL ) return; + + if( pDem->m_ScopeBit.GetFlag() ){ + PaintBoxPaint(NULL); + if( SBTrig->Down ){ + SBTrig->Down = FALSE; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::SBTrigClick(TObject *Sender) +{ + TrigNext(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::UpdateBtn(void) +{ + if( m_XW <= (pDem->m_ScopeBit.m_ScopeSize - 512) ){ + SBUpW->Enabled = TRUE; + } + else { + SBUpW->Enabled = FALSE; + } + if( m_XW >= 1024 ){ + SBDownW->Enabled = TRUE; + } + else { + SBDownW->Enabled = FALSE; + } + if( m_XOFF ){ + LeftBtn->Enabled = TRUE; + } + else { + LeftBtn->Enabled = FALSE; + } + if( (m_XOFF + m_XW) < pDem->m_ScopeBit.m_ScopeSize ){ + RightBtn->Enabled = TRUE; + } + else { + RightBtn->Enabled = FALSE; + } + if( pDem->m_atc ){ + SrcSel->Controls[3]->Enabled = TRUE; + } + else { + SrcSel->Controls[3]->Enabled = FALSE; + if( SrcSel->ItemIndex == 3 ){ + SrcSel->ItemIndex = m_SourceSel = 2; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::LeftBtnClick(TObject *Sender) +{ + if( m_XOFF ){ + m_XOFF -= m_XW/4; + if( m_XOFF < 0 ) m_XOFF = 0; + } + UpdateBtn(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::RightBtnClick(TObject *Sender) +{ + m_XOFF += m_XW/4; + if( (m_XOFF + m_XW) >= pDem->m_ScopeBit.m_ScopeSize ){ + m_XOFF = pDem->m_ScopeBit.m_ScopeSize - m_XW; + } + UpdateBtn(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::AdjXoff(int x) +{ + if( (x >= 0) && (x < PaintBox->Width) ){ + int xoff = x * m_XW / PaintBox->Width + m_XOFF + 1; + m_XOFF += (m_CursorX - xoff); + if( m_XOFF < 0 ){ + m_XOFF = 0; + } + else if( (m_XOFF + m_XW) > pDem->m_ScopeBit.m_ScopeSize ){ + m_XOFF = pDem->m_ScopeBit.m_ScopeSize - m_XW; + } + } + else if( (m_XOFF + m_XW) > pDem->m_ScopeBit.m_ScopeSize ){ + m_XOFF = pDem->m_ScopeBit.m_ScopeSize - m_XW; + } +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::SBDownWClick(TObject *Sender) +{ + int x = (m_CursorX - m_XOFF) * PaintBox->Width / m_XW; + if( m_XW >= 1024 ){ + m_XW -= 512; + AdjXoff(x); + PaintBoxPaint(NULL); + } + UpdateBtn(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::SBUpWClick(TObject *Sender) +{ + int x = (m_CursorX - m_XOFF) * PaintBox->Width / m_XW; + if( m_XW <= (pDem->m_ScopeBit.m_ScopeSize - 512) ){ + m_XW += 512; + AdjXoff(x); + PaintBoxPaint(NULL); + } + UpdateBtn(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::UpBtnClick(TObject *Sender) +{ + m_Gain *= 1.2; + PaintBoxPaint(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::DownBtnClick(TObject *Sender) +{ + m_Gain /= 1.2; + PaintBoxPaint(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::PaintBoxMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + m_CursorX = (X * m_XW / pBitmap->Width) + m_XOFF; + PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap); + PaintCursor(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::SBSetClick(TObject *Sender) +{ + TOptionDlg *pBox = new TOptionDlg(this); + + pBox->TabFont->TabVisible = FALSE; + pBox->TabMisc->TabVisible = FALSE; + pBox->Execute(pDem, pMod); + delete pBox; + UpdateBtn(); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::SrcSelClick(TObject *Sender) +{ + m_SourceSel = SrcSel->ItemIndex; + SBUpDownClick(NULL); +// PaintBoxPaint(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::SBUpDownClick(TObject *Sender) +{ + int x; + double d, peak; + peak = 0; + for( x = m_XOFF; x < (m_XOFF + m_XW); x++ ){ + d = fabs(pDem->m_ScopeMark[SrcSel->ItemIndex].pScopeData[x]); + if( peak < d ) peak = d; + d = fabs(pDem->m_ScopeSpace[SrcSel->ItemIndex].pScopeData[x]); + if( peak < d ) peak = d; + } + if( peak ){ + m_Gain = 16384.0 * 0.8 / peak; + } + PaintBoxPaint(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TTScope::SBPlayClick(TObject *Sender) +{ + if( MmttyWd->pSound->WaveFile.m_mode == 1 ){ + MmttyWd->KRxPosClick(NULL); + } + else { + MmttyWd->KRxPlayClick(NULL); + } +} +//--------------------------------------------------------------------------- diff --git a/Scope.dfm b/Scope.dfm new file mode 100644 index 0000000000000000000000000000000000000000..24bdc7687320c25f09e48bf7ffd0da2ffdb578fa GIT binary patch literal 1944 zcmb7_O^@3|7{~n*dmKBVFXtX|0KuVD<-!40mEvr}hBg~3o@I*=Ag?o`6C0 zCYInpEA>FnoREMIfW!%j6MN!AaN+1DHQNEi*m@dI6N?AgQ zeQi30@clt?TpSi36`vQA;=ST=aj%$fJ}4gaMmRx)?V)6O!pu)}PtFgM1v@dV6vK%pRIoz9!;k%RYS8L~G`W4M{cr=!)5Xbc*at zTfEH%TUvxXilbs*5=7{p<^(iP%9z1RDGlQcAu{5@q09}kgs?D<_yO&d?o)znF8C5~#mW>@bF+#$yF zj1LEC*L^3Wt8_vZXl>}q&`wDKGs3Nk?*mU##YB5n&}Wd&!h5V1UPyqvA>BLF#ikNDgUjwJlt|#fdQ1(ShG7mBNF+RA*@lzoqtDaKmBq0 z-S$_oi;kleW?gSe7ZIMLoKFnhfzi>dtVl!CG#dsHLD&}K8`67Ox0DsA(NI~JfQCV+hO7QJk(1|d2 zgx8ukBU8G{(JnnB;7UztmS#k(fquOup8TA(lb~!(<>l`$&bqPrra6P5^3%x9Aef;U8?*Z?J)hWr1&i}Zq>+X5xp8oTq_jG^4 z&}n`nWc*fM=DKbA!PxFR`tpmV-Ffo!({F8a2uGS5L>cd>G5>-%jS-GA!jtE1x$Kno zlzEhCe6wZrtF;dU. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef ScopeH +#define ScopeH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +#include "rtty.h" +class TTScope : public TForm +{ +__published: + TButton *OKBtn; + TPanel *Panel1; + TPaintBox *PaintBox; + TTimer *Timer; + TSpeedButton *SBTrig; + TButton *LeftBtn; + TButton *RightBtn; + TButton *UpBtn; + TButton *DownBtn; + TButton *SBDownW; + TButton *SBUpW; + TSpeedButton *SBSet; + TRadioGroup *SrcSel; + TButton *SBUpDown; + TSpeedButton *SBPlay; + void __fastcall PaintBoxPaint(TObject *Sender); + void __fastcall TimerTimer(TObject *Sender); + void __fastcall SBTrigClick(TObject *Sender); + void __fastcall LeftBtnClick(TObject *Sender); + void __fastcall RightBtnClick(TObject *Sender); + void __fastcall UpBtnClick(TObject *Sender); + void __fastcall DownBtnClick(TObject *Sender); + + + void __fastcall SBDownWClick(TObject *Sender); + void __fastcall SBUpWClick(TObject *Sender); + + void __fastcall PaintBoxMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + + void __fastcall SBSetClick(TObject *Sender); + void __fastcall SrcSelClick(TObject *Sender); + void __fastcall SBUpDownClick(TObject *Sender); + void __fastcall SBPlayClick(TObject *Sender); +private: + CFSKDEM *pDem; + CFSKMOD *pMod; + + Graphics::TBitmap *pBitmap; + + void __fastcall UpdateBtn(void); + void __fastcall TrigNext(void); + void __fastcall PaintCursor(void); + void __fastcall AdjXoff(int x); + + +public: + virtual __fastcall TTScope(TComponent* AOwner); + virtual __fastcall ~TTScope(); + + void __fastcall Execute(CFSKDEM *pd, CFSKMOD *pm); + void __fastcall PaintPosition(void); + void __fastcall PaintScope(CScope *sp, int n); +}; +//---------------------------------------------------------------------------- +//extern TTScope *TScope; +//---------------------------------------------------------------------------- +#endif diff --git a/SendFile.cpp b/SendFile.cpp new file mode 100644 index 0000000..d7405b0 --- /dev/null +++ b/SendFile.cpp @@ -0,0 +1,108 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "SendFile.h" +#include "Main.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//--------------------------------------------------------------------- +__fastcall TSendFileDlg::TSendFileDlg(TComponent* AOwner) + : TForm(AOwner) +{ + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "Sending file"; + AbortBtn->Caption = "Abort"; + Lline->Caption = "Letters per line"; + } + m_fp = NULL; + if( sys.m_CharLenFile < 20 ) sys.m_CharLenFile = 20; + if( sys.m_CharLenFile > 1024 ) sys.m_CharLenFile = 1024; + m_DisEvent = 1; + CharLen->Text = sys.m_CharLenFile; + m_DisEvent = 0; +} +__fastcall TSendFileDlg::~TSendFileDlg() +{ + if( m_fp != NULL ){ + fclose(m_fp); + m_fp = NULL; + } +} +//--------------------------------------------------------------------- +int __fastcall TSendFileDlg::Start(LPCSTR pName, int Y) +{ + m_FileName = pName; + LName->Caption = pName; + m_fp = fopen(pName, "rt"); + if( m_fp != NULL ){ + Show(); + Top = Y; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------- +int __fastcall TSendFileDlg::Timer(int buffcnt) +{ + if( m_fp == NULL ){ + return 2; + } + if( feof(m_fp) ){ + fclose(m_fp); + m_fp = NULL; + return 1; + } + if( buffcnt < 10 ){ + char bf[1025]; + if( fgets(bf, sys.m_CharLenFile, m_fp) != NULL ){ + ClipLF(bf); + MmttyWd->OutputStr(bf); + MmttyWd->OutputStr("\r\n"); + } + } + return 0; +} +//--------------------------------------------------------------------- +void __fastcall TSendFileDlg::AbortBtnClick(TObject *Sender) +{ + if( m_fp != NULL ){ + fclose(m_fp); + m_fp = NULL; + } +} +//--------------------------------------------------------------------------- +void __fastcall TSendFileDlg::CharLenChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + int dd; + sscanf(AnsiString(CharLen->Text).c_str(), "%u", &dd); //JA7UDE 0428 + if( (dd >= 20) && (dd <= 1024) ){ + sys.m_CharLenFile = dd; + } +} +//--------------------------------------------------------------------------- diff --git a/SendFile.dfm b/SendFile.dfm new file mode 100644 index 0000000000000000000000000000000000000000..3dcada06ba29e236af08c372c6588a071e22b817 GIT binary patch literal 926 zcmb7?&2AGh6os8hJ2S~7Y1$1-@&Z(Dq0lUwNkRrqlL!wg5)$A{ZW1ew9nH8R6@I8Cj)}x0LA8 z5Gq|M)V@2TQ4Gqelb+WN9(d%L+dFwkIzc(RPCr#be#XRDz6fBYob)1h`Bh4*K3%|` zt&`na-(EKmUVp$J@n`%VXDVqg4$^Od&*&Wz{fBx#;;2bqCSN5HrJ zBxlOrsHf;_+ZmpD!OS1;+9&5q67~}8YXGt|RZheCe{6nUhfR4%Bi&>|Q**ou%$djo zSJJ>oSzzPQChyMGVwf8L?%KZ;_!XQzSpq^<&^lL23j1UvBc;cltzE5Vuf?7x=~F_gi3)c7bDq{D=S$lA2K^*mAW0| zZe-(j!}1o8%)_jovM`ddoT!F(+G#Y8|GE`y?KY!g3RX22&C05$U=i;Vr8i<47fj;_ Yo5tOyY20g?#e>6RbL#*f-qCHKKV|G6C;$Ke literal 0 HcmV?d00001 diff --git a/SendFile.h b/SendFile.h new file mode 100644 index 0000000..2f34a31 --- /dev/null +++ b/SendFile.h @@ -0,0 +1,60 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef SendFileH +#define SendFileH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ComLib.h" +//---------------------------------------------------------------------------- +class TSendFileDlg : public TForm +{ +__published: + TButton *AbortBtn; + TLabel *LName; + TComboBox *CharLen; + TLabel *Lline; + void __fastcall AbortBtnClick(TObject *Sender); + void __fastcall CharLenChange(TObject *Sender); +private: + int m_DisEvent; + AnsiString m_FileName; + FILE *m_fp; +public: + virtual __fastcall TSendFileDlg(TComponent* AOwner); + __fastcall ~TSendFileDlg(); + + int __fastcall Start(LPCSTR pName, int Y); + int __fastcall TSendFileDlg::Timer(int buffcnt); +}; +//---------------------------------------------------------------------------- +//extern TSendFileDlg *SendFileDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/SetHelp.cpp b/SetHelp.cpp new file mode 100644 index 0000000..501fd5a --- /dev/null +++ b/SetHelp.cpp @@ -0,0 +1,193 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "SetHelp.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TSetHelpBox *SetHelpBox; +//--------------------------------------------------------------------- +__fastcall TSetHelpBox::TSetHelpBox(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + CancelBtn->Caption = "Cancel"; + NotePad->Caption = "Use NotePad"; + FontBtn->Caption = "Font"; + } +} +//--------------------------------------------------------------------- +int __fastcall TSetHelpBox::Execute(void) +{ + m_HelpFontName = sys.m_HelpFontName; + m_HelpFontCharset = sys.m_HelpFontCharset; + m_HelpFontSize = sys.m_HelpFontSize; + EditHTML->Text = sys.m_HTMLHelp; + EditMMTTY->Text = sys.m_Help; + EditLog->Text = sys.m_HelpLog; + EditDigital->Text = sys.m_HelpDigital; + NotePad->Checked = sys.m_HelpNotePad; + if( ShowModal() == IDOK ){ + sys.m_HelpFontName = m_HelpFontName; + sys.m_HelpFontCharset = m_HelpFontCharset; + sys.m_HelpFontSize = m_HelpFontSize; + + sys.m_HTMLHelp = EditHTML->Text; + sys.m_Help = EditMMTTY->Text; + sys.m_HelpLog = EditLog->Text; + sys.m_HelpDigital = EditDigital->Text; + + sys.m_HelpNotePad = NotePad->Checked; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------- +void __fastcall TSetHelpBox::JABtnClick(TObject *Sender) +{ + EditHTML->Text = ""; + EditMMTTY->Text = "Mmtty.txt"; + EditLog->Text = "Mmttylog.txt"; + EditDigital->Text = "Digital.txt"; + m_HelpFontName = "‚l‚r ƒSƒVƒbƒN"; + m_HelpFontCharset = SHIFTJIS_CHARSET; + m_HelpFontSize = 10; +} +//--------------------------------------------------------------------------- +void __fastcall TSetHelpBox::EngBtnClick(TObject *Sender) +{ + EditHTML->Text = "KB2EOQ.htm"; + EditMMTTY->Text = "MmttyE.txt"; + EditLog->Text = "LogE.txt"; + EditDigital->Text = "DigitalE.txt"; + m_HelpFontName = "Courier";//"Courier New"; + m_HelpFontCharset = ANSI_CHARSET; + m_HelpFontSize = 10; +} +//--------------------------------------------------------------------------- +void __fastcall TSetHelpBox::FontBtnClick(TObject *Sender) +{ + FontDialog->Font->Name = m_HelpFontName; + FontDialog->Font->Charset = m_HelpFontCharset; + FontDialog->Font->Size = m_HelpFontSize; + NormalWindow(this); + if( FontDialog->Execute() == TRUE ){ + m_HelpFontName = FontDialog->Font->Name; + m_HelpFontCharset = FontDialog->Font->Charset; + m_HelpFontSize = FontDialog->Font->Size; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +int TSetHelpBox::SetFileName(AnsiString &as) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options << ofFileMustExist; + if(sys.m_WinFontCharset != SHIFTJIS_CHARSET){ + OpenDialog->Title = "Choose help file"; + OpenDialog->Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*|"; + } + else { + OpenDialog->Title = "ƒwƒ‹ƒvƒtƒ@ƒCƒ‹‚Ì‘I‘ð"; + OpenDialog->Filter = "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹(*.txt)|*.txt|‚·‚ׂẴtƒ@ƒCƒ‹(*.*)|*.*|"; + } + OpenDialog->FileName = as.c_str(); + OpenDialog->DefaultExt = "txt"; + OpenDialog->InitialDir = BgnDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + char drive[_MAX_DRIVE]; + char dir[_MAX_DIR]; + char name[_MAX_FNAME]; + char ext[_MAX_EXT]; + + ::_splitpath(AnsiString(OpenDialog->FileName).c_str(), drive, dir, name, ext ); //JA7UDE 0428 + as = name; + as += ext; + TopWindow(this); + return TRUE; + } + else { + TopWindow(this); + return FALSE; + } +} +//--------------------------------------------------------------------------- +void __fastcall TSetHelpBox::RefMMTTYClick(TObject *Sender) +{ + AnsiString as = EditMMTTY->Text.c_str(); + if( SetFileName(as) == TRUE ){ + EditMMTTY->Text = as.c_str(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TSetHelpBox::RefLogClick(TObject *Sender) +{ + AnsiString as = EditLog->Text.c_str(); + if( SetFileName(as) == TRUE ){ + EditLog->Text = as.c_str(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TSetHelpBox::RefDigitalClick(TObject *Sender) +{ + AnsiString as = EditDigital->Text.c_str(); + if( SetFileName(as) == TRUE ){ + EditDigital->Text = as.c_str(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TSetHelpBox::RefHTMLClick(TObject *Sender) +{ + OpenDialog->Options >> ofCreatePrompt; + OpenDialog->Options << ofFileMustExist; + if(sys.m_WinFontCharset != SHIFTJIS_CHARSET){ + OpenDialog->Title = "Choose HTML/Windows help file"; + } + else { + OpenDialog->Title = "HTML/Windowsƒwƒ‹ƒvƒtƒ@ƒCƒ‹‚Ì‘I‘ð"; + } + OpenDialog->Filter = "HTML/Windows help files(*.chm;*.htm;*.html;*.hlp)|*.chm;*.htm;*.html;*.hlp"; + OpenDialog->FileName = EditHTML->Text.c_str(); + OpenDialog->DefaultExt = "chm"; + OpenDialog->InitialDir = BgnDir; + NormalWindow(this); + if( OpenDialog->Execute() == TRUE ){ + char drive[_MAX_DRIVE]; + char dir[_MAX_DIR]; + char name[_MAX_FNAME]; + char ext[_MAX_EXT]; + + ::_splitpath(AnsiString(OpenDialog->FileName).c_str(), drive, dir, name, ext ); //JA7UDE 0428 + AnsiString as; + as = name; + as += ext; + EditHTML->Text = as.c_str(); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- diff --git a/SetHelp.dfm b/SetHelp.dfm new file mode 100644 index 0000000000000000000000000000000000000000..69cd18e7c4d56cce2fd04d5a4d9048be165a190d GIT binary patch literal 2250 zcmb`IO>fjj7{|xq2T}sA!VHnyCj=6*^y|~L+jX+T`R`3cxOd& z;e-SS?uY{iB(7Bt1ywy)t@;JHbLZ4UrQY0m@$4*Z8VQoiYGytD{pb1nc`2I!4ce&F z-U?g&uK`?s+W-KC8_+`oOglImx5zgQn_0C z0G4my&+u3HBa{GfaStr@vm_{RL~);o<2FJvNqGd$(wGe50^>Yjm&ZjjEYh3~;)sQ7 zkI6R4u`PBwgt&dD2x% zD|Lo>SZ3wR@=^Js{7B2xS_S|vx?PYd&k9#9t_U^L6FJe7(O9{m!dX)ywzsxRrqu8C z5c)<#O;AVeB&9C@5zi#=lHgse+&NUZ3r_bw=HJy`?xk@-CS;HL-Co`4EixRY z`B3Xwl^qVZgFQV}Gi(-uVxGhbPjZeiVs+k#_s1FGN+Z?>p*Epbnc#5~*3)51qwG|T zXtDt2xhFB>jAkiAR7KYBtf^|0^`Xl>RGFvCUDdkwp*~B#rXW>(g}2-JaK``k<92cs zpB>NA$w>3<8Q+tre+f9eiz)@{Cs8{(g#UJ|l^QFHXXQTYBacfhOq)SZlCldGNad@C_=lF`TZ~4z{DdjI5NFa6KKDL<6brkozh$DWvU%g7{ut-g O&Gb^9^W}i!=fFSrji?_0 literal 0 HcmV?d00001 diff --git a/SetHelp.h b/SetHelp.h new file mode 100644 index 0000000..dc58d1f --- /dev/null +++ b/SetHelp.h @@ -0,0 +1,83 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef SetHelpH +#define SetHelpH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ComLib.h" +#include +//---------------------------------------------------------------------------- +class TSetHelpBox : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TGroupBox *GroupBox1; + TEdit *EditMMTTY; + TButton *RefMMTTY; + TGroupBox *GroupBox2; + TEdit *EditLog; + TButton *RefLog; + TGroupBox *GroupBox3; + TEdit *EditDigital; + TButton *RefDigital; + TButton *JABtn; + TButton *EngBtn; + TButton *FontBtn; + TFontDialog *FontDialog; + TOpenDialog *OpenDialog; + TCheckBox *NotePad; + TGroupBox *GroupBox4; + TEdit *EditHTML; + TButton *RefHTML; + void __fastcall JABtnClick(TObject *Sender); + void __fastcall EngBtnClick(TObject *Sender); + void __fastcall FontBtnClick(TObject *Sender); + void __fastcall RefMMTTYClick(TObject *Sender); + void __fastcall RefLogClick(TObject *Sender); + void __fastcall RefDigitalClick(TObject *Sender); + void __fastcall RefHTMLClick(TObject *Sender); +private: + int SetFileName(AnsiString &as); + + AnsiString m_HelpFontName; + BYTE m_HelpFontCharset; + int m_HelpFontSize; +public: + virtual __fastcall TSetHelpBox(TComponent* AOwner); + + int __fastcall Execute(void); +}; +//---------------------------------------------------------------------------- +//extern TSetHelpBox *SetHelpBox; +//---------------------------------------------------------------------------- +#endif diff --git a/ShortCut.cpp b/ShortCut.cpp new file mode 100644 index 0000000..ab3a6dc --- /dev/null +++ b/ShortCut.cpp @@ -0,0 +1,408 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ShortCut.h" +#include "LogFile.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TShortCutDlg *ShortCutDlg; +static int CurRow = 0; +static int TopRow = 0; +//--------------------------------------------------------------------- +__fastcall TShortCutDlg::TShortCutDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + m_DisEvent = 1; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "Assign ShortCut"; + DelBtn->Caption = "Del"; + CheckBtn->Caption = "Check Dupe"; + OKBtn->Caption = "Close"; + } + ShortCutName->Clear(); + int i; + for( i = 0; KEYTBL[i].Key; i++ ){ + ShortCutName->Items->Add(ToDXKey(KEYTBL[i].pName)); + } + m_DisEvent = 0; + SBHelp->Visible = !JanHelp.IsEmpty(); +} + +typedef struct { + LPCSTR pSys; + LPCSTR pUser; + WORD *pKey; +}DEFTBL; + +DEFTBL def[]={ + {"RcvLog","ŽóM‹L˜^i“ú•t–¼jƒtƒ@ƒCƒ‹", &sys.m_SysKey[kkRcvLog]}, + {"FileOut","ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‘—M", &sys.m_SysKey[kkFileOut]}, + {"SaveRx","ŽóM‰æ–ʂ̓à—e‚ðƒtƒ@ƒCƒ‹‚ɃZ[ƒu", &sys.m_SysKey[kkSaveRx]}, + + {"OpenLog","V‚µ‚¢ƒƒOƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“", &sys.m_SysKey[kkOpenLog]}, + {"Flush","ƒfƒBƒXƒN‚Ƀtƒ‰ƒbƒVƒ…", &sys.m_SysKey[kkFlush]}, + + {"RecTime","ŽóMƒTƒEƒ“ƒh‚ðŽž–¼‚̃tƒ@ƒCƒ‹‚É‹L˜^", &sys.m_SysKey[kkRecTime]}, + {"Rec","ŽóMƒTƒEƒ“ƒh‚ðƒtƒ@ƒCƒ‹‚É‹L˜^", &sys.m_SysKey[kkRec]}, + {"Play","ŽóMƒTƒEƒ“ƒh‚ðƒtƒ@ƒCƒ‹‚©‚çĶ", &sys.m_SysKey[kkPlay]}, + {"PlayPos","ĶˆÊ’u’²®", &sys.m_SysKey[kkPlayPos]}, + {"PlayStop","‹L˜^^Ķ‚ÌI—¹", &sys.m_SysKey[kkPlayStop]}, + + {"Paste","‘—M‰æ–ʂւ̓\‚è•t‚¯", &sys.m_SysKey[kkPaste]}, + {"Panel","Control Panel", &sys.m_SysKey[kkPanel]}, + {"MacBtn","Macro ƒ{ƒ^ƒ“", &sys.m_SysKey[kkMac]}, + {"Scope","ƒIƒVƒƒXƒR[ƒv", &sys.m_SysKey[kkScope]}, + {"ClrRxWindow","ŽóM‰æ–ʂ̃NƒŠƒA", &sys.m_SysKey[kkClrRxWindow]}, + {"LogList","LogList", &sys.m_SysKey[kkLogList]}, + {"QSOData","QSOData", &sys.m_SysKey[kkQSOData]}, + {"EntTX","TXƒ{ƒ^ƒ“‚ÅŽ©“®‰üs‘—M", &sys.m_SysKey[kkEntTX]}, + {"WordWrap","ƒL[ƒ{[ƒh‚̃[ƒhƒ‰ƒbƒv", &sys.m_SysKey[kkWordWrap]}, + {"RUN","ƒ‰ƒ“ƒjƒ“ƒOƒ‚[ƒh", &sys.m_SysKey[kkRun]}, + {"TNC","TNC–Í‹[ƒ‚[ƒhÝ’è", &sys.m_SysKey[kkTNC]}, + {"Option","Ý’è‰æ–Ê", &sys.m_SysKey[kkOption]}, + {"LogOpt","ƒƒOÝ’è‰æ–Ê", &sys.m_SysKey[kkLogOption]}, + + {"Profile1","Profile 1", &sys.m_SysKey[kkPro1]}, + {"Profile2","Profile 2", &sys.m_SysKey[kkPro2]}, + {"Profile3","Profile 3", &sys.m_SysKey[kkPro3]}, + {"Profile4","Profile 4", &sys.m_SysKey[kkPro4]}, + {"Profile5","Profile 5", &sys.m_SysKey[kkPro5]}, + {"Profile6","Profile 6", &sys.m_SysKey[kkPro6]}, + {"Profile7","Profile 7", &sys.m_SysKey[kkPro7]}, + {"Profile8","Profile 8", &sys.m_SysKey[kkPro8]}, + {"ProfileDef","MMTTY default", &sys.m_SysKey[kkProDef]}, + {"ProfileRet","Return to the startup", &sys.m_SysKey[kkProRet]}, + + {"ExtCmd1","External 1", &sys.m_SysKey[kkExtCmd1]}, + {"ExtCmd2","External 2", &sys.m_SysKey[kkExtCmd2]}, + {"ExtCmd3","External 3", &sys.m_SysKey[kkExtCmd3]}, + {"ExtCmd4","External 4", &sys.m_SysKey[kkExtCmd4]}, + {"ExtReset","ƒTƒXƒyƒ“ƒh‚̉ðœ", &sys.m_SysKey[kkExtReset]}, + {"ExtSusp","ƒTƒXƒyƒ“ƒh", &sys.m_SysKey[kkExtSusp]}, + + {"FIG","FIG Button", &sys.m_SysKey[kkFIG]}, + {"UOS","UOS Button", &sys.m_SysKey[kkUOS]}, + {"TX","TX Button", &sys.m_SysKey[kkTX]}, + {"TXOFF","TXOFF Button", &sys.m_SysKey[kkTXOFF]}, + {"QSO","QSO Button", &sys.m_SysKey[kkQSO]}, + {"OnQSO","QSO Button ON", &sys.m_SysKey[kkOnQSO]}, + {"OffQSO","QSO Button OFF", &sys.m_SysKey[kkOffQSO]}, + {"Capture","Capture Callsign", &sys.m_SysKey[kkCAPTURE]}, + {"InitBox","Init Button", &sys.m_SysKey[kkInitBox]}, + {"CALL","Call Box", &sys.m_SysKey[kkCall]}, + {"NAME","Name Box", &sys.m_SysKey[kkName]}, + {"QTH","QTH Box", &sys.m_SysKey[kkQTH]}, + {"RST","HisRST Box", &sys.m_SysKey[kkRST]}, + {"MyRST","MyRST Box", &sys.m_SysKey[kkMyRST]}, + {"Freq","Frequency Box", &sys.m_SysKey[kkFreq]}, + {"Find","Find Button", &sys.m_SysKey[kkFind]}, + {"Clear","Clear Button", &sys.m_SysKey[kkClear]}, + + {"TxUp","“ü—͉æ–Ê ª", &sys.m_SysKey[kkInUp]}, + {"TxDown","“ü—͉æ–Ê «", &sys.m_SysKey[kkInDown]}, + {"TxPUp","“ü—͉æ–Ê ƒy[ƒWª", &sys.m_SysKey[kkInPUp]}, + {"TxPDown","“ü—͉æ–Ê ƒy[ƒW«", &sys.m_SysKey[kkInPDown]}, + {"TxHome","“ü—͉æ–Ê æ“ª", &sys.m_SysKey[kkInHome]}, + {"TxEnd","“ü—͉æ–Ê ––”ö", &sys.m_SysKey[kkInEnd]}, + + {"RxUp","ŽóM‰æ–Ê ª", &sys.m_SysKey[kkRxUp]}, + {"RxDown","ŽóM‰æ–Ê «", &sys.m_SysKey[kkRxDown]}, + {"RxPUp","ŽóM‰æ–Ê ƒy[ƒWª", &sys.m_SysKey[kkRxPUp]}, + {"RxPDown","ŽóM‰æ–Ê ƒy[ƒW«", &sys.m_SysKey[kkRxPDown]}, + {"RxHome","ŽóM‰æ–Ê æ“ª", &sys.m_SysKey[kkRxHome]}, + {"RxEnd","ŽóM‰æ–Ê ––”ö", &sys.m_SysKey[kkRxEnd]}, + + {"CharWaitL","•¶ŽšWait©", &sys.m_SysKey[kkCharWaitLeft]}, + {"CharWaitR","•¶ŽšWait¨", &sys.m_SysKey[kkCharWaitRight]}, + {"DiddleWaitL","DiddleWait©", &sys.m_SysKey[kkDiddleWaitLeft]}, + {"DiddleWaitR","DiddleWait¨", &sys.m_SysKey[kkDiddleWaitRight]}, + + {"TxHeightUp","“ü—͉æ–ÊŠg‘å", &sys.m_SysKey[kkInHeightUp]}, + {"TxHeightDown","“ü—͉æ–Êk¬", &sys.m_SysKey[kkInHeightDown]}, + + {"TxLTR","LTR‘—M", &sys.m_SysKey[kkTxLTR]}, + {"TxFIG","FIG‘—M", &sys.m_SysKey[kkTxFIG]}, + + {"DecShift","SHIFT• ‹·‚ß‚é", &sys.m_SysKey[kkDecShift]}, + {"IncShift","SHIFT• L‚°‚é", &sys.m_SysKey[kkIncShift]}, + {"ChangeShift","SHIFT••ÏX (170/200/220/350/450)", &sys.m_SysKey[kkToggleShift]}, + + {"CallList","Callsign list", &sys.m_SysKey[kkCList]}, +}; + +void SetMenuName(LPCSTR pkey, LPCSTR p) +{ + int i; + for( i = 0; i < AN(def); i++ ){ + if( !strcmp(def[i].pSys, pkey) ){ + def[i].pUser = p; + return; + } + } +} + +void SetExtMenuName(int n, LPCSTR p) +{ + int i; + for( i = 0; i < AN(def); i++ ){ + if( !strcmp(def[i].pSys, "ExtCmd1") ){ + def[i+n].pUser = p; + return; + } + } +} + +void SetProMenuName(int n, LPCSTR p) +{ + int i; + for( i = 0; i < AN(def); i++ ){ + if( !strcmp(def[i].pSys, "Profile1") ){ + def[i+n].pUser = p; + return; + } + } +} + +const DEFTBL *GetDP(int n) +{ +static DEFTBL udef; +static char bf[32]; +static WORD dummy = 0; + + if( n < AN(def) ){ + return &def[n]; + } + n -= AN(def); + if( n < 4 ){ + sprintf(bf, "IN%u", n + 1); + udef.pSys = bf; + udef.pUser = sys.m_InBtnName[n].c_str(); + udef.pKey = &sys.m_InBtnKey[n]; + return &udef; + } + n -= 4; + if( n < 16 ){ + sprintf(bf, "M%u", n + 1); + udef.pSys = bf; + udef.pUser = sys.m_UserName[n].c_str(); + udef.pKey = &sys.m_UserKey[n]; + return &udef; + } + n -= 16; + if( n < MSGLISTMAX ){ + sprintf(bf, "ML%u", n + 1); + udef.pSys = bf; + udef.pUser = sys.m_MsgName[n].c_str(); + udef.pKey = &sys.m_MsgKey[n]; + return &udef; + } + n -= MSGLISTMAX; + if( n < 5 ){ + sprintf(bf, "QM%u", n + 1); + udef.pSys = bf; + udef.pUser = (sys.m_WinFontCharset != SHIFTJIS_CHARSET)?"QSO Button Macro":"QSO Button˜A“®ƒ}ƒNƒ"; + udef.pKey = &Log.m_LogSet.m_QSOMacroKey[n]; + return &udef; + } + n -= 5; + if( n < 16 ){ + sprintf(bf, "MEdit%u", n + 1); + udef.pSys = bf; + udef.pUser = sys.m_UserName[n].c_str(); + udef.pKey = &sys.m_UserEditKey[n]; + return &udef; + } + udef.pSys = ""; + udef.pUser = ""; + udef.pKey = &dummy; + return &udef; +} +//--------------------------------------------------------------------- +void __fastcall TShortCutDlg::UpdateUI(int n) +{ + if( n >= 0 ){ + const DEFTBL *dp = GetDP(n); + m_DisEvent++; + ShortCutName->Text = GetKeyName(*dp->pKey); + m_DisEvent--; + } +} +//--------------------------------------------------------------------- +void __fastcall TShortCutDlg::Execute(void) +{ + Grid->RowCount = AN(def) + 4 + 16 + 64 + 5 + 16 + 1; + if( CurRow ){ + Grid->Row = CurRow; + Grid->TopRow = TopRow; + } + UpdateUI(Grid->Row - 1); + ShowModal(); + CurRow = Grid->Row; + TopRow = Grid->TopRow; +} +//--------------------------------------------------------------------------- +// d•¡‚̃`ƒFƒbƒN +int __fastcall TShortCutDlg::IsDupe(int n) +{ +#if 0 + FILE *fp = fopen("F:\\LIST.TXT", "wt"); + const DEFTBL *dp; + for( int j = 0; j < Grid->RowCount-1; j++ ){ + dp = GetDP(j); + fprintf(fp, "%s : %s\n", dp->pSys, dp->pUser); + } + fclose(fp); +#endif + + WORD ks; + const DEFTBL *s; + const DEFTBL *t; + int j; + s = GetDP(n); + ks = *s->pKey; + if( ks ){ + for( j = 0; j < Grid->RowCount - 1; j++ ){ + if( n != j ){ + t = GetDP(j); + if( t->pKey ){ + if( ks == *t->pKey ){ + return 1; + } + } + } + } + } + return 0; +} +//--------------------------------------------------------------------- +void __fastcall TShortCutDlg::GridDrawCell(TObject *Sender, int Col, + int Row, TRect &Rect, TGridDrawState State) +{ + char bf[256]; + + Grid->Canvas->FillRect(Rect); + int X = Rect.Left + 4; + int Y = Rect.Top + 2; + + if( Row ){ + Row--; + const DEFTBL *dp = GetDP(Row); + bf[0] = 0; + switch(Col){ + case 0: // “à•”–¼ + strcpy(bf, dp->pSys); + break; + case 1: // ƒ†[ƒU–¼ + strcpy(bf, dp->pUser); + break; + case 2: // ƒVƒ‡[ƒgƒJƒbƒg + strcpy(bf, GetKeyName(*dp->pKey)); + if( IsDupe(Row) ){ + Grid->Canvas->Font->Color = clRed; + } + break; + } + Grid->Canvas->TextOut(X, Y, bf); + } + else if( Font->Charset != SHIFTJIS_CHARSET ){ + LPCSTR _tte[]={ + "Internal","Define Name","Key" + }; + Grid->Canvas->TextOut(X, Y, _tte[Col]); + } + else { // ƒ^ƒCƒgƒ‹ + LPCSTR _tt[]={ + "“à•”–¼","ƒ†[ƒU[’è‹`–¼","Š„‚è“–‚ăL[" + }; + Grid->Canvas->TextOut(X, Y, _tt[Col]); + } +} +//--------------------------------------------------------------------------- +void __fastcall TShortCutDlg::GridSelectCell(TObject *Sender, int Col, + int Row, bool &CanSelect) +{ + if( Row ){ + UpdateUI(Row - 1); + } +} +//--------------------------------------------------------------------------- +void __fastcall TShortCutDlg::ShortCutNameChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + m_DisEvent++; + int n = Grid->Row - 1; + if( n >= 0 ){ + const DEFTBL *dp = GetDP(n); + *dp->pKey = GetKeyCode(AnsiString(ShortCutName->Text).c_str()); //JA7UDE 0428 + Grid->Invalidate(); + } + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TShortCutDlg::CheckBtnClick(TObject *Sender) +{ + WORD ks; + AnsiString as; + const DEFTBL *s; + const DEFTBL *t; + int i, j; + for( i = 0; i < Grid->RowCount - 1; i++ ){ + s = GetDP(i); + ks = *s->pKey; + if( ks ){ + as = s->pSys; + for( j = i + 1; j < Grid->RowCount - 1; j++ ){ + t = GetDP(j); + if( t->pKey ){ + if( ks == *t->pKey ){ + Grid->Row = j + 1; + WarningMB((Font->Charset != SHIFTJIS_CHARSET)?"Duplicated key '%s' and '%s'":"'%s' ‚Æ '%s' ‚ªd•¡‚µ‚Ä‚¢‚Ü‚·.", as.c_str(), t->pSys); + return; + } + } + } + } + } + InfoMB( (Font->Charset != SHIFTJIS_CHARSET)?"No duplicated":"d•¡‚·‚éƒVƒ‡[ƒgƒJƒbƒgƒL[‚Í‚ ‚è‚Ü‚¹‚ñ." ); +} +//--------------------------------------------------------------------------- +void __fastcall TShortCutDlg::DelBtnClick(TObject *Sender) +{ + int n = Grid->Row - 1; + if( n >= 0 ){ + const DEFTBL *dp = GetDP(n); + *dp->pKey = 0; + UpdateUI(n); + Grid->Invalidate(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TShortCutDlg::SBHelpClick(TObject *Sender) +{ + ShowHtmlHelp("keyboardshortcuts.htm"); +} +//--------------------------------------------------------------------------- diff --git a/ShortCut.dfm b/ShortCut.dfm new file mode 100644 index 0000000000000000000000000000000000000000..36b00ae65692dbeed22c37e1a9f54c3b9d02f633 GIT binary patch literal 1308 zcmbVMzi-n(6h7OH&xz9?Wa~sWCXgi-n4oc*CZ%mcYzh<9v0t2{m%DJjsG%EU#l!%A z0t-ScNc{s?SdjPw*clj@*pR~6PMT7XkXWqy?%lojzVCg$X$kpWv)%RGdwzXq3ps0M z0U^KBaLT?n;6l1%S*NjmZoRYveQEqahR;VjwQF2NAUye$0=9ZdodlG}*bPRKa8@ZI zgif8W&QIr~^Tzq0zHimK>{0?uHi5(gX*|*F9N#CA92gzF;Bv|ZE{3!wStAIc+~7=J za|eM)K;kv8*=qRPE$@-r+~|6nekl)Um$14-gYeMK_VNn)_hN?jf+18a)zQ`I^=TD3 z)A!D)>gk=6C&)P1Xr)afS3n@4oiZz09iEVs3|<*=FBAaGRn3Dabp&D33j@X69PvHQ zz|2r&EqBNSXwm`EV&OnPDETm%(bX>@CG7|xs*R=O%=Btaprc&X&swUgaaSv3TIlQM zjKSr(qNaB1cQwizdtU2*lrUF)GK8eM2S?Q|9|r8a3T8j4aT=jgClHEkDxZb-NkV!Q zEZk;lVBsOQ^WHOn5cYFMh4vjax17+o3xpp2L8xM=ftJ59s0qT%A&o?qkwiH zQ9#!$Kj>wn(A7!X_oR|N-V!8Q%08(b_1ujpmrYq{R>s)Y3LBKf3>N~bl(m$zTs~$} zH;N54qDbLHM^={~<=eM$J2P%#uf{w(u@6G-5C(JH m1+$rTNMDKEZTX|L_. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef ShortCutH +#define ShortCutH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +#include "ComLib.h" +//---------------------------------------------------------------------------- +class TShortCutDlg : public TForm +{ +__published: + TButton *OKBtn; + TStringGrid *Grid; + TComboBox *ShortCutName; + TButton *CheckBtn; + TButton *DelBtn; + TSpeedButton *SBHelp; + void __fastcall GridDrawCell(TObject *Sender, int Col, int Row, + TRect &Rect, TGridDrawState State); + void __fastcall GridSelectCell(TObject *Sender, int Col, int Row, + bool &CanSelect); + void __fastcall ShortCutNameChange(TObject *Sender); + void __fastcall CheckBtnClick(TObject *Sender); + void __fastcall DelBtnClick(TObject *Sender); + void __fastcall SBHelpClick(TObject *Sender); +private: + int m_DisEvent; + void __fastcall UpdateUI(int n); + int __fastcall IsDupe(int n); + +public: + virtual __fastcall TShortCutDlg(TComponent* AOwner); + + void __fastcall Execute(void); +}; + +void SetMenuName(LPCSTR pkey, LPCSTR p); +void SetExtMenuName(int n, LPCSTR p); +void SetProMenuName(int n, LPCSTR p); +//---------------------------------------------------------------------------- +//extern TShortCutDlg *ShortCutDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/Sound.cpp b/Sound.cpp new file mode 100644 index 0000000..0ccffb8 --- /dev/null +++ b/Sound.cpp @@ -0,0 +1,1351 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include + +#include "Sound.h" +#include "Main.h" + +WAVEINCAPS InCaps; +WAVEOUTCAPS OutCaps; + +//--------------------------------------------------------------------------- +// ’ˆÓ: VCL ƒIƒuƒWƒFƒNƒg‚̃ƒ\ƒbƒh‚ƃvƒƒpƒeƒB‚ðŽg—p‚·‚é‚É‚Í, Synchronize +// ‚ðŽg‚Á‚½ƒƒ\ƒbƒhŒÄ‚Ño‚µ‚łȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñBŽŸ‚É—á‚ðŽ¦‚µ‚Ü‚·B +// +// Synchronize(UpdateCaption); +// +// ‚±‚±‚Å, UpdateCaption ‚ÍŽŸ‚̂悤‚É‹Lq‚Å‚«‚Ü‚·B +// +// void __fastcall TSound::UpdateCaption() +// { +// Form1->Caption = "ƒXƒŒƒbƒh‚©‚ç‘‚«Š·‚¦‚Ü‚µ‚½"; +// } +//--------------------------------------------------------------------------- +__fastcall TSound::TSound(bool CreateSuspended) + : TThread(CreateSuspended) +{ + ::VirtualLock(this, sizeof(TSound)); + + if( SampType == 2 ){ + m_FFTWINDOW = (3000 * FFT_SIZE / SampFreq); + } + else { + m_FFTWINDOW = (4000 * FFT_SIZE / SampFreq); + } + m_BuffSize = SampSize; + m_Stop = TRUE; + memset(ZBPF, 0, sizeof(ZBPF)); + memset(HBPF, 0, sizeof(HBPF)); + + m_ReqFifoSize = 0; + m_IDDevice = WAVE_MAPPER; + m_IDOutDevice = WAVE_MAPPER; //AA6YQ 1.6.6 + m_playmode = 0; + m_susp = 0; + m_suspack = 0; + m_bpf = 0; + m_lmsbpf = 0; + m_bpffw = 100.0; + m_bpftap = 56; + m_bpfafc = 1; + CalcBPF(); + + InitWFX(); + m_Test = 0; + m_Noise = 0; + m_FFTSW = 1; + m_FFTFW = 0; + m_Tx = m_ReqTx = 0; + FSKMOD.SetDem(&FSKDEM); + + m_FFTMax = 128; + m_FFTSumMax = 128*2; + + m_WaterMax = 128; + m_WaterSumMax = 128*8; + m_WaterMin = 0; + + m_ReqSpeedTest = 0; +} + +__fastcall TSound::~TSound() +{ + ::VirtualUnlock(this, sizeof(TSound)); +} + +void __fastcall TSound::InitWFX(void) +{ + m_WFX.wFormatTag = WAVE_FORMAT_PCM; + m_WFX.nChannels = WORD(sys.m_SoundStereo ? 2 : 1); + m_WFX.wBitsPerSample = 16; + m_WFX.nSamplesPerSec = int(SampBase); + m_WFX.nBlockAlign = WORD(m_WFX.nChannels *(m_WFX.wBitsPerSample/8)); + m_WFX.nAvgBytesPerSec = m_WFX.nBlockAlign * m_WFX.nSamplesPerSec; + m_WFX.cbSize = 0; + Wave.m_SoundStereo = sys.m_SoundStereo; +} + +void __fastcall TSound::CalcBPF(void) +{ + MakeFilter(HBPF, m_bpftap, ffBPF, SampFreq, FSKDEM.GetMarkFreq() - m_bpffw, FSKDEM.GetSpaceFreq() + m_bpffw, 60, 1.0); + m_lms.SetWindow(FSKDEM.GetMarkFreq(), FSKDEM.GetSpaceFreq()); +} + +void __fastcall TSound::CalcBPF(double fl, double fh, double fw) +{ + MakeFilter(HBPF, m_bpftap, ffBPF, SampFreq, fl - fw, fh + fw, 60, 1.0); + m_lms.SetWindow(fl, fh); +} + +void __fastcall TSound::Stop(void) +{ + if( m_Stop == FALSE ){ + Priority = tpNormal; + Terminate(); + WaitFor(); + Wave.InClose(); + Wave.OutAbort(); + } +} + +void __fastcall TSound::ReqStop(void) +{ + if( m_Stop == FALSE ){ + Priority = tpNormal; + Terminate(); + } +} + +void __fastcall TSound::WaitStop(void) +{ + WaitFor(); + Wave.InClose(); + Wave.OutAbort(); +} + +void __fastcall TSound::InitSound(void) +{ + Suspend(); + FSKMOD.SetSampFreq(SampFreq + sys.m_TxOffset); + InitWFX(); + m_ReqFifoSize = TRUE; + Resume(); +} +//--------------------------------------------------------------------------- +void __fastcall TSound::ErrorMsg(void) +{ + if( m_IDDevice == -2 ){ + InfoMB("Sound I/O failed in the MMW (%s)", sys.m_SoundMMW.c_str()); + } + else { + ErrorMB((sys.m_WinFontCharset != SHIFTJIS_CHARSET)?"Can't open Sound card (%d)":"ƒTƒEƒ“ƒhƒJ[ƒh‚ªƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", m_IDDevice); + } +} +//--------------------------------------------------------------------------- +BOOL __fastcall TSound::ReInitSound(void) +{ + if( Terminated == TRUE ) return FALSE; + Wave.OutAbort(); + Wave.InClose(); + InitWFX(); + if( m_Err >= 3 ){ + m_Err = 5; + ::Sleep(100); + } + else { + m_Err++; + } + if( m_Tx || (m_playmode == 1) ){ + if( (sys.m_TxPort != txTXDOnly) || (m_playmode == 1) ){ + if( Wave.OutOpen(&m_WFX, m_IDOutDevice, m_BuffSize) ) return TRUE; //AA6YQ 1.66 + } + } + else { + if( Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize) ) return TRUE; + } + return FALSE; +} +//--------------------------------------------------------------------------- +int __fastcall TSound::UpdateFifoSize(void) +{ + int r = 2; + if( !m_ReqFifoSize ) return 1; + + int fi = Wave.IsInOpen(); + int fo = Wave.IsOutOpen(); + if( fi ) Wave.InClose(); + if( fo ) Wave.OutAbort(); + Wave.m_InFifoSize = sys.m_SoundFifoRX; + Wave.m_OutFifoSize = sys.m_SoundFifoTX; + m_IDDevice = sys.m_SoundDevice; + m_IDOutDevice = sys.m_SoundOutDevice; //AA6YQ 1.66 + Wave.UpdateDevice(m_IDDevice); + if( fi ){ + if( !Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize) ) r = FALSE; + } + if( fo ){ + if( !Wave.OutOpen(&m_WFX, m_IDOutDevice, m_BuffSize) ) r = FALSE; //AA6YQ 1.66 + } + TaskPriority(); + m_ReqFifoSize = 0; + return r; +} +//--------------------------------------------------------------------------- +void __fastcall TSound::TaskPriority(void) +{ + switch(sys.m_SoundPriority){ + case 0: + if( Priority != tpNormal ){ + Priority = tpNormal; //ƒXƒŒƒbƒh‚Í’Êí‚Ì—Dæ“x‚Å‚ ‚é + } + break; + case 1: + if( Priority != tpHigher ){ + Priority = tpHigher; //ƒXƒŒƒbƒh‚Ì—Dæ“x‚Í’Êí‚æ‚è‚à 1 ƒ|ƒCƒ“ƒg‚‚¢ + } + break; + case 2: + if( Priority != tpHighest ){ + Priority = tpHighest; //ƒXƒŒƒbƒh‚Ì—Dæ“x‚Í’Êí‚æ‚è‚à 2 ƒ|ƒCƒ“ƒg‚‚¢ + } + break; + default: + if( Priority != tpTimeCritical ){ + Priority = tpTimeCritical; //ƒXƒŒƒbƒh‚Í‚à‚Á‚Æ‚à‚‚¢—Dæ“x‚ðŽæ“¾‚·‚é + } + break; + } +} +//--------------------------------------------------------------------------- +void __fastcall TSound::Execute() +{ + static double Buff[8192]; + double *lp; + int i; + int Len; + + m_Stop = FALSE; + memset(Buff, 0, sizeof(Buff)); + TaskPriority(); + ::Sleep(200); // 200ms + Wave.m_InFifoSize = sys.m_SoundFifoRX; + Wave.m_OutFifoSize = sys.m_SoundFifoTX; + m_IDDevice = sys.m_SoundDevice; + m_IDOutDevice = sys.m_SoundOutDevice; //AA6YQ 1.66 + Wave.UpdateDevice(m_IDDevice); +_init:; + Wave.InClose(); + if( Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize) != TRUE ){ + int timeout = Wave.GetTimeout() / 200; + for( int i = 0; i < timeout; i++ ){ + ::Sleep(200); + if( Terminated == TRUE ) goto _ex; + if( UpdateFifoSize() == 2 ) goto _init; + if( Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize) == TRUE ) break; + } + if( Wave.IsInOpen() != TRUE ){ + if( timeout ) ErrorMsg(); + if( Terminated == TRUE ) goto _ex; + int Count = 3000/50; + while(1){ // ‹[Ž—ŽÀs + if( Terminated == TRUE ) goto _ex; + ::Sleep(50); + Wave.PumpMessages(); + if( (m_Tx != m_ReqTx) || m_ReqFifoSize || !Count ){ + Count = 3000/50; + if( UpdateFifoSize() == 2 ) goto _init; + m_Tx = m_ReqTx; + if( Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize) == TRUE ) break; + } + Count--; + } + m_Tx = 0; + } + } + m_Tx = 0; + Wave.OutAbort(); + Len = m_BuffSize; + while(1){ + if( Terminated == TRUE ) break; + if( Wave.IsInOpen() ){ + if( Wave.InRead(Buff, m_BuffSize) == FALSE ){ + if( !ReInitSound() ) goto _init; + } + } + if( m_playmode && (!m_Tx || (m_playmode != 1))) WaveFile.ReadWrite(Buff, m_BuffSize); + if( Terminated == TRUE ) break; + if( m_Test && !m_Tx ){ + for( i = 0, lp = Buff; i < Len; i++, lp++ ){ + if( m_Test ) *lp += FSKMOD.Do(1); + } + } + if( m_bpf || m_lmsbpf ){ + for( i = 0, lp = Buff; i < Len; i++, lp++ ){ + if( m_bpf ){ + *lp = DoFIR(HBPF, ZBPF, *lp, m_bpftap); + } + if( m_lmsbpf ){ + *lp = m_lms.Do(*lp); + } + } + } + if( m_FFTSW ) fftIN.CollectFFT(Buff, Len); + if( !m_Tx || sys.m_echo ){ + for( i = 0, lp = Buff; i < Len; i++, lp++ ){ + FSKDEM.Do(*lp); + } + } +_skip1:; + if( m_Tx ){ + if( (sys.m_echo == 2) && Wave.IsInBufCritical() && Wave.IsInOpen() ) goto _skip2; + for( i = 0, lp = Buff; i < Len; i++, lp++ ){ + *lp = FSKMOD.Do(sys.m_echo); + if( (m_ReqTx != m_Tx) && !m_ReqTx && (!FSKMOD.GetMode()) ){ + for( ; i < Len; i++, lp++ ) *lp = 0; + break; + } + } + if( (sys.m_TxPort == txTXDOnly) && !Wave.IsInOpen() && (m_ReqTx == m_Tx)){ + if( FSKCount1 <= FSKCount2 ){ + ::Sleep(Len * 1000 / SampFreq); + } + else { + ::Sleep(1); + } + } + } + if( Wave.IsOutOpen() == TRUE ){ + if( Wave.OutWrite(Buff, Len) != TRUE ){ + ReInitSound(); + if( Wave.OutWrite(Buff, Len) != TRUE ){ + if( !ReInitSound() ) goto _init; + } + } + else { + if( (sys.m_echo == 2) && m_Tx && Wave.IsInBufNull() && !Wave.IsOutBufFull() ) goto _skip1; +// if( (sys.m_echo == 2) && m_Tx && !Wave.IsInBufCritical() && !Wave.IsOutBufFull() ) goto _skip1; + } + } +_skip2:; + if( m_Tx != m_ReqTx ){ + if( !m_ReqTx ){ // To RX + Wave.OutAbort(); + fftIN.ClearBuf(); + if( !Wave.IsInOpen() ){ + Wave.m_InFifoSize = sys.m_SoundFifoRX; + Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize); + FSKDEM.m_OverFlow = 0; + FSKDEM.ClearMode(); + } + m_Tx = m_ReqTx = 0; + Wave.SetPTT(m_Tx); + TaskPriority(); + } + else { // To TX + if( sys.m_echo != 2 ){ + Wave.InClose(); + fftIN.ClearBuf(); + } + FSKMOD.InitPhase(); + FSKMOD.SetCount(m_BuffSize * 3); + if((sys.m_TxPort != txTXDOnly) && (m_playmode != 1) ){ + Wave.m_OutFifoSize = sys.m_SoundFifoTX; + m_IDOutDevice = sys.m_SoundOutDevice; //AA6YQ 1.66 + Wave.OutOpen(&m_WFX, m_IDOutDevice, m_BuffSize); //AA6YQ 1.66 + if( sys.m_echo == 2 ){ + memset(Buff, 0, sizeof(Buff)); + for( i = 0; (i < 4) && !Wave.IsOutBufFull(); i++ ){ + if( Wave.OutWrite(Buff, Len) != TRUE ) break; + } + } + } + if( sys.m_echo != 2 ){ + FSKDEM.m_OverFlow = 0; + FSKDEM.ClearMode(); + } + m_Tx = m_ReqTx; + Wave.SetPTT(m_Tx); + TaskPriority(); + } + if( m_playmode == 1 ) m_playmode = 0; + } + if( m_ReqFifoSize ){ + if( !UpdateFifoSize() ) goto _init; + } + if( (!m_Tx) && (WaveFile.m_mode != m_playmode) ){ + if( WaveFile.m_mode == 1 ){ + Wave.InClose(); + Wave.m_OutFifoSize = sys.m_SoundFifoTX; + m_IDOutDevice = sys.m_SoundOutDevice; //AA6YQ 1.66 + Wave.OutOpen(&m_WFX, m_IDOutDevice, m_BuffSize); //AA6YQ 1.66 + FSKDEM.m_OverFlow = 0; + } + else if( m_playmode == 1 ){ + Wave.OutClose(); + Wave.m_InFifoSize = sys.m_SoundFifoRX; + Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize); + FSKDEM.m_OverFlow = 0; + } + m_playmode = WaveFile.m_mode; + } + if( m_susp ){ + JobSuspend(); + } + if( m_ReqSpeedTest ){ + JobSpeedTest(); + } + } +_ex:; + Wave.InClose(); + Wave.OutAbort(); + Wave.UpdateDevice(-1); + m_Stop = TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall TSound::JobSuspend(void) +{ + Wave.InClose(); + Wave.OutAbort(); + m_suspack = 1; + Priority = tpNormal; + while(1){ + if( Terminated == TRUE ){ + m_Stop = TRUE; + return; + } + if( m_Tx != m_ReqTx ){ + m_Tx = m_ReqTx; + } + Sleep(100); + Wave.PumpMessages(); + if( !m_susp ){ + for( int i = 0; i < 5; i++ ){ + if( Wave.InOpen(&m_WFX, m_IDDevice, m_BuffSize) == TRUE ) break; + ::Sleep(100); + Wave.PumpMessages(); + } + if( Wave.IsInOpen() ){ + m_suspack = 1; + break; + } + else { + m_susp = 1; + m_suspack = 1; + ErrorMsg(); + } + } + } + TaskPriority(); + m_Tx = 0; + m_playmode = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TSound::JobSpeedTest() +{ + DWORD tc = ::GetTickCount(); +// RTTYMOD.InitTXBuf(); +// RTTYDEM.Stop(); + for( int i = 0; i < 1000000; i++ ){ + FSKMOD.Do(0); + FSKDEM.Do(0); + } + m_SpeedValue = ::GetTickCount() - tc; + m_ReqSpeedTest = 0; +} +//--------------------------------------------------------------------------- +// ƒXƒŒƒbƒh“à‚ŃR[ƒ‹‚µ‚Ă͂¢‚¯‚È‚¢ +#define AFC_PEAKDOWN 128 +int __fastcall TSound::DoAFC(void) +{ + if( !sys.m_AFC ) return 0; + if( sys.m_echo != 2 ){ + if( m_Tx ) return 0; // ‘—M’†‚ÍŽÀs‚µ‚È‚¢ + } + + double mfq = FSKDEM.GetMarkFreq(); + double sfq = FSKDEM.GetSpaceFreq(); + double sft = sfq - mfq; + double sk = sft * 0.5; + + int nb = (sft < 50.0) ? 1 : 0; + int xm = mfq * (FFT_SIZE / SampFreq); + int xs = sfq * (FFT_SIZE / SampFreq); + int xc = int((xs - xm) * sys.m_AFCSweep); + int xe = int(xc * 1.2); + if( nb ) xe = 80 * (FFT_SIZE / SampFreq); + int n = 0; + int avg = 0; + + int x, xx; + int d; + int max1H = -MAXINT; + int m1H = 0; + for( x = 0; x < xc; x++ ){ // Mark Peak + + xx = xm + x; + if( (xx >= 0) && (xx < m_FFTWINDOW) ){ + d = fftIN.m_fft[xx]; + if( max1H < d ){ + max1H = d; + m1H = xx; + } + else if( (d + AFC_PEAKDOWN) < max1H ){ + break; + } + } + } + int max1L = -MAXINT; + int m1L = 0; + for( x = 0; x < xe; x++ ){ // Mark Peak - + xx = xm - x; + if( (xx >= 0) && (xx < m_FFTWINDOW) ){ + d = fftIN.m_fft[xx]; + avg += d; + n++; + if( max1L < d ){ + max1L = d; + m1L = xx; + } + else if( (d + AFC_PEAKDOWN) < max1L ){ + break; + } + } + } + + int max2H = -MAXINT; + int m2H = 0; + for( x = 0; x < xe; x++ ){ // Space Peak + + xx = xs + x; + if( (xx >= 0) && (xx < m_FFTWINDOW) ){ + d = fftIN.m_fft[xx]; + avg += d; + n++; + if( max2H < d ){ + max2H = d; + m2H = xx; + } + else if( (d + AFC_PEAKDOWN) < max2H ){ + break; + } + } + } + + int max2L = -MAXINT; + int m2L = 0; + for( x = 0; x < xc; x++ ){ // Space Peak - + xx = xs - x; + if( (xx >= 0) && (xx < m_FFTWINDOW) ){ + d = fftIN.m_fft[xx]; + if( max2L < d ){ + max2L = d; + m2L = xx; + } + else if( (d + AFC_PEAKDOWN) < max2L ){ + break; + } + } + } + if( n ) avg /= n; + +// m1l - m1h m2l - m2h +#if 0 + FILE *fp = fopen("f:\\test.txt", "at"); + fprintf(fp, "%5u %5u %5u %5u\n", m1L, m1H, m2L, m2H); + fclose(fp); +#endif + + if( nb ){ + if( max1L < max1H ){ max1L = max1H; m1L = m1H; } + if( max1L < max2L ){ max1L = max2L; m1L = m2L; } + if( max1L < max2H ){ max1L = max2H; m1L = m2H; } + max2L = max1L; + m2L = m1L; + } + else if( m1H == m2L ){ + if( max2H > max1L ){ + max1L = max1H; + m1L = m1H; + max2L = max2H; + m2L = m2H; + } + } + else { + if( max1H > max1L ){ + m1L = m1H; + max1L = max1H; + } + if( max2H > max2L ){ + m2L = m2H; + max2L = max2H; + } + } + if( !nb ){ + switch(sys.m_FFTGain){ + case 0: + if( ((max1L - avg) < sys.m_AFCSQ) || ((max2L - avg) < sys.m_AFCSQ) ) return 0; + break; + case 1: + if( ((max1L - avg) < sys.m_AFCSQ*1.2) || ((max2L - avg) < sys.m_AFCSQ*1.2) ) return 0; + break; + case 2: + if( ((max1L - avg) < sys.m_AFCSQ*1.5) || ((max2L - avg) < sys.m_AFCSQ*1.5) ) return 0; + break; + case 3: + if( ((max1L - avg) < sys.m_AFCSQ*1.8) || ((max2L - avg) < sys.m_AFCSQ*1.8) ) return 0; + break; + default: + if( ((max1L - avg) < sys.m_AFCSQ*0.5) || ((max2L - avg) < sys.m_AFCSQ*0.5) ) return 0; + break; + } + } + else { + if( (max1L - avg) < sys.m_AFCSQ*0.5 ) return 0; + } + int ns = m2L - m1L; // ŒŸo‚µ‚½ƒVƒtƒg• + if( !nb ){ + if( ns < int(140.0 * (FFT_SIZE / SampFreq)) ) return 0; + } + if( ns > int(1500.0 * (FFT_SIZE / SampFreq)) ) return 0; + + int os = (sft * (FFT_SIZE / SampFreq)); // Œ»Ý‚̃Vƒtƒg• + double nmfq = m1L * (SampFreq / FFT_SIZE); + double nsfq = m2L * (SampFreq / FFT_SIZE); + int ds = ABS(ns-os); // ƒVƒtƒg•‚Ì· + switch(sys.m_FixShift){ + case 0: // Free + if( nb ) goto _fixed; + if( ((ds <= (os * 1.2)) || nb) && ((nsfq - nmfq) >= 15.0) ){ + if( fabs(nmfq - mfq) >= 2.0 ){ + mfq += (nmfq - mfq)/sys.m_AFCTime; + } + if( fabs(nsfq - sfq) >= 2.0 ){ + sfq += (nsfq - sfq)/sys.m_AFCTime; + } + mfq = double(int(mfq+0.5)); + sfq = double(int(sfq+0.5)); + if( mfq < MARKL ) mfq = MARKL; + if( sfq > SPACEH ) sfq = SPACEH; + Suspend(); + FSKDEM.AFCMarkFreq(mfq); + FSKDEM.AFCSpaceFreq(sfq); + if( m_bpfafc && (FSKDEM.GetAFCMarkFreq() == mfq) && (FSKDEM.GetAFCSpaceFreq() == sfq) ){ + CalcBPF(); + } + Resume(); + return 1; + } + break; + case 1: // Fixed Shift +_fixed:; + if( nb ){ + double fq = (nmfq + nsfq) / 2; + nmfq = fq - sft/2; + nsfq = fq + sft/2; + } + if( ((ds <= (os * 0.25)) || nb) && ((nsfq - nmfq) >= 15.0) ){ + double cfq = (nmfq + nsfq)/2.0; + nmfq = cfq - sk; + if( fabs(nmfq - mfq) >= 2.0 ){ + if( nb && (fabs(nmfq - mfq) < 10.0) ){ + mfq += (nmfq - mfq)/(sys.m_AFCTime * 4.0); + } + else { + mfq += (nmfq - mfq)/sys.m_AFCTime; + } + mfq = double(int(mfq+0.5)); + if( mfq < MARKL ) mfq = MARKL; + if( (mfq + sft) > SPACEH ) mfq = SPACEH - sft; + sfq = mfq + sft; + Suspend(); + FSKDEM.AFCMarkFreq(mfq); + FSKDEM.AFCSpaceFreq(sfq); + if( m_bpfafc && (FSKDEM.GetAFCMarkFreq() == mfq) && (FSKDEM.GetAFCSpaceFreq() == sfq) ){ + CalcBPF(); + } + Resume(); + return 1; + } + } + break; + case 2: // HAM + if( nb ) goto _fixed; + if( (ns >= 140.0*FFT_SIZE/SampFreq) && (ns <= 260.0*FFT_SIZE/SampFreq) ){ + sft = nsfq - nmfq; + if( sft > 230.0 ){ + sft = 240.0; + } + else if( sft > 210.0 ){ + sft = 220.0; + } + else if( sft > 185 ){ + sft = 200.0; + } + else { + sft = 170.0; + } + nsfq = nmfq + sft; + if( fabs(nmfq - mfq) >= 2.0 ){ + mfq += (nmfq - mfq)/sys.m_AFCTime; + } + if( fabs(nsfq - sfq) >= 2.0 ){ + sfq += (nsfq - sfq)/sys.m_AFCTime; + } + mfq = double(int(mfq+0.5)); + sfq = double(int(sfq+0.5)); + if( mfq < MARKL ) mfq = MARKL; + if( sfq > SPACEH ) sfq = SPACEH; + Suspend(); + FSKDEM.AFCMarkFreq(mfq); + FSKDEM.AFCSpaceFreq(sfq); + if( m_bpfafc && (FSKDEM.GetAFCMarkFreq() == mfq) && (FSKDEM.GetAFCSpaceFreq() == sfq) ){ + CalcBPF(); + } + Resume(); + return 1; + } + break; + case 3: // FSK + if( (ns >= 140.0*FFT_SIZE/SampFreq) && (ns <= 260.0*FFT_SIZE/SampFreq) ){ + sft = nsfq - nmfq; + if( sft > 230.0 ){ + sft = 240.0; + } + else if( sft > 210.0 ){ + sft = 220.0; + } + else if( sft > 185 ){ + sft = 200.0; + } + else { + sft = 170.0; + } + nsfq = nmfq + sft; + if( fabs(nmfq - mfq) >= 2.0 ){ + nmfq = mfq + (nmfq - mfq)/sys.m_AFCTime; + } + if( fabs(nsfq - sfq) >= 2.0 ){ + nsfq = sfq + (nsfq - sfq)/sys.m_AFCTime; + } + sft = nsfq - nmfq; + if( sft < 175 ) sft = 170; + if( sft > 195 ) sft = 200; + sft = double(int((sft*0.5)+0.5)); + nmfq = ((sfq + mfq)*0.5) - sft; + nsfq = ((sfq + mfq)*0.5) + sft; + mfq = double(int(nmfq+0.5)); + sfq = double(int(nsfq+0.5)); + if( mfq < MARKL ) mfq = MARKL; + if( sfq > SPACEH ) sfq = SPACEH; + Suspend(); + FSKDEM.AFCMarkFreq(mfq); + FSKDEM.AFCSpaceFreq(sfq); + if( m_bpfafc && (FSKDEM.GetAFCMarkFreq() == mfq) && (FSKDEM.GetAFCSpaceFreq() == sfq) ){ + CalcBPF(); + } + Resume(); + return 1; + } + break; + } + return 0; +} +//--------------------------------------------------------------------------- +double __fastcall TSound::GetScopeRange(double &low, double center, double shift) +{ + double FM; + + switch(m_FFTFW ){ + case 0: // Auto + if( shift >= 800 ){ + FM = 3000 * FFT_SIZE / SampFreq; + low = center - 1500; + } + else if( shift >= 400 ){ + FM = 2000 * FFT_SIZE / SampFreq; + low = center - 1000; + } + else { + FM = 1000 * FFT_SIZE / SampFreq; + low = center - 500; + } + break; + case 1: // 500 + FM = 500 * FFT_SIZE / SampFreq; + low = center - 250; + break; + case 2: // 1000 + FM = 1000 * FFT_SIZE / SampFreq; + low = center - 500; + break; + case 3: // 1500 + FM = 1500 * FFT_SIZE / SampFreq; + low = center - 750; + break; + case 4: // 2000 + FM = 2000 * FFT_SIZE / SampFreq; + low = center - 1000; + break; + default: // 3000 + FM = 3000 * FFT_SIZE / SampFreq; + low = center - 1500; + break; + } + return FM; +} +//--------------------------------------------------------------------------- +// ƒXƒŒƒbƒh“à‚ŃR[ƒ‹‚µ‚Ă͂¢‚¯‚È‚¢ +int __fastcall TSound::DrawFFT(Graphics::TBitmap *pBitmap, int sw, int XRD) +{ + if( m_FFTSW ){ + if( fftIN.m_CollectFFT ){ + switch(sys.m_FFTGain){ + case 0: + fftIN.CalcFFT(m_FFTWINDOW, 30.0, sys.m_FFTResp); + break; + case 1: + fftIN.CalcFFT(m_FFTWINDOW, 34.0, sys.m_FFTResp); + break; + case 2: + fftIN.CalcFFT(m_FFTWINDOW, 42.0, sys.m_FFTResp); + break; + case 3: + fftIN.CalcFFT(m_FFTWINDOW, 54.0, sys.m_FFTResp); + break; + default: + fftIN.CalcFFT(m_FFTWINDOW, (sys.m_echo != 2 && m_Tx) ? 0.02 : 0.1, sys.m_FFTResp); + break; + } + fftIN.TrigFFT(); + } + else if( !sw ){ + return 0; + } + } + if( Remote & REMSHOWOFF ) return 2; + + TCanvas *tp = pBitmap->Canvas; + TRect rc; + int XL = 0; + int XR = pBitmap->Width - 1; + int YT = 0; + int YB = pBitmap->Height - 1; + rc.Left = XL; + rc.Right = XR; + rc.Top = YT; + rc.Bottom = YB+1; + tp->Brush->Color = clBlack; + tp->FillRect(rc); + XR -= XRD; + + int i, x; + if( m_Err || FSKDEM.m_OverFlow ){ + if( m_Err || (!m_Tx && !m_Test) ){ + tp->Font->Color = clWhite; + tp->Font->Size = 10; + char bf[32]; + strcpy(bf, m_Err ? "Lost sound" : "Overflow"); + x = tp->TextWidth(bf); + tp->TextOut(XR - x - 3, 0, bf); + } + FSKDEM.m_OverFlow = 0; + if( m_Err ) m_Err--; + } + if( WaveFile.m_mode ){ + tp->Font->Color = clWhite; + tp->Font->Size = 10; + if( WaveFile.m_pause ){ + tp->TextOut(3, 0, "Pause"); + } + else { + switch(WaveFile.m_mode){ + case 1: + tp->TextOut(3, 0, "Play"); + break; + case 2: + tp->TextOut(3, 0, "Rec."); + break; + } + } + } + double space = FSKDEM.GetSpaceFreq(); + double mark = FSKDEM.GetMarkFreq(); + double shift = fabs(mark - space); + double center = (mark + space)/2.0; + double low; + int FM = GetScopeRange(low, center, shift) + 0.5; + tp->Pen->Color = clYellow; + tp->Pen->Style = psSolid; + x = int(((mark-low)*FFT_SIZE*double(XR)/double(SampFreq*FM)) + 0.5); + tp->MoveTo(x, YT); + tp->LineTo(x, YB); + x = int(((space-low)*FFT_SIZE*double(XR)/double(SampFreq*FM)) + 0.5); + tp->MoveTo(x, YT); + tp->LineTo(x, YB); + + if( sw || (!m_FFTSW) ) return 1; + + int offx = int((low * FFT_SIZE / SampFreq) + ((FM/XR)/2.0) + 0.5); + tp->Pen->Color = clWhite; + + int d; + int max = 0; + double k; + if( sys.m_FFTGain >= 4 ){ + switch(sys.m_FFTGain){ + case 4: + k = double(YB) * 0.85 / m_FFTMax; + break; + case 5: + k = double(YB) * 1.0 / m_FFTMax; + break; + case 6: + k = double(YB) * 1.2 / m_FFTMax; + break; + case 7: + k = double(YB) * 1.5 / m_FFTMax; + break; + } + } + else { + k = double(YB)/256.0; + } + for( i = 0; i < XR; i++ ){ + x = (i * FM)/XR + offx; + if( (x >= 0) && (x < m_FFTWINDOW) ){ + d = fftIN.m_fft[x]; + if( d > max ) max = d; + d *= k; + } + else { + d = 0; + } + if( d >= (YB-YT) ) d = YB - YT - 1; + if( i ){ + tp->LineTo(i, YB-d); + } + else { + tp->MoveTo(i, YB-d); + } + } + if( sys.m_FFTGain >= 4 ){ + m_FFTSumMax -= m_FFTMax; + m_FFTSumMax += max; + if( m_FFTSumMax < 64 ) m_FFTSumMax = 64; + m_FFTMax = m_FFTSumMax / 2; + } + + if( m_lmsbpf && m_lms.m_Type ){ + if( m_lms.m_lmsNotch ){ + tp->Pen->Color = clYellow; + tp->Pen->Style = psSolid; + x = int(((m_lms.m_lmsNotch-low)*FFT_SIZE*double(XR)/double(SampFreq*FM)) + 0.5); + //POINT ary[3]; //JA7UDE 0428 + TPoint ary[3]; //JA7UDE 0428 + ary[0].x = x, ary[0].y = YB; + ary[1].x = x-3, ary[1].y = YB-5; + ary[2].x = x+3, ary[2].y = YB-5; + tp->Brush->Color = clRed; + tp->Polygon(ary, 2); + if( m_lms.m_twoNotch && m_lms.m_lmsNotch2 ){ + x = int(((m_lms.m_lmsNotch2-low)*FFT_SIZE*double(XR)/double(SampFreq*FM)) + 0.5); + ary[0].x = x, ary[0].y = YB; + ary[1].x = x-3, ary[1].y = YB-5; + ary[2].x = x+3, ary[2].y = YB-5; + tp->Brush->Color = clBlue; + tp->Polygon(ary, 2); + } + } + } + return 2; +} + +double __fastcall TSound::GetScreenFreq(int x, int XW, int XRD) +{ + double space = FSKDEM.GetSpaceFreq(); + double mark = FSKDEM.GetMarkFreq(); + double shift = fabs(mark - space); + double center = (mark + space)/2.0; + double low; + double FW = GetScopeRange(low, center, shift) * SampFreq / FFT_SIZE; + return ((x * FW) / (XW-XRD)) + low; +} + +//--------------------------------------------------------------------------- +// ƒXƒŒƒbƒh“à‚ŃR[ƒ‹‚µ‚Ă͂¢‚¯‚È‚¢ +int __fastcall TSound::DrawFFTWater(Graphics::TBitmap *pBitmap, int sw, int XRD) +{ + if( Remote & REMSHOWOFF ) return 2; + TCanvas *tp = pBitmap->Canvas; + TRect rc; + int XL = 0; + int XR = pBitmap->Width - 1; + int YT = 0; + int YB = pBitmap->Height - 1; + rc.Left = XL; + rc.Right = XR; + rc.Top = YT; + rc.Bottom = YB+1; + if( sw ){ + tp->Brush->Color = clBlack; + tp->FillRect(rc); + return 1; + } + int i, x; + int XRR = XR - XRD; + + double space = FSKDEM.GetSpaceFreq(); + double mark = FSKDEM.GetMarkFreq(); + double shift = fabs(mark - space); + double center = (mark + space)/2.0; + double low; + int FM = GetScopeRange(low, center, shift) + 0.5; + + TRect src(rc); + src.Bottom--; + rc.Top++; + tp->CopyRect(rc, tp, src); + + int offx = int((low * FFT_SIZE / SampFreq) + ((FM/XRR)/2.0) + 0.5); + int d; + int mx = -MAXINT; + int mi = 0; + int micnt = 0; + double k1 = 128.0/double(m_WaterMax - m_WaterMin); + for( i = 0; i < XR; i++ ){ + x = (i * FM)/XRR + offx; + if( ((x >= 0) && (x < m_FFTWINDOW)) ){ + d = fftIN.m_fft[x] / 2; + if( mx < d ) mx = d; + mi += d; + micnt++; + + d -= m_WaterMin; + d = double(d) * k1; + + if( d >= 128 ) d = 127; + if( d < 0 ) d = 0; + } + else { + d = 0; + } + tp->Pixels[i][0] = TColor(ColorTable[127-d] | sys.d_PaletteMask); + } + m_WaterSumMax -= m_WaterMax; + m_WaterSumMax += mx; + if( sys.m_FFTGain >= 4 ){ + if( m_WaterSumMax < (16*2) ) m_WaterSumMax = (16*2); + if( m_WaterSumMax > 512 ) m_WaterSumMax = 512; + } + else { + if( m_WaterSumMax < (128*2) ) m_WaterSumMax = (128*2); + } + m_WaterMax = m_WaterSumMax / 8; + if( micnt ){ + m_WaterMin = mi/micnt; + } + if( sys.m_FFTGain >= 4 ){ + if( m_WaterMin >= (m_WaterMax - 4) ) m_WaterMax = m_WaterMin + 4; + } + else { + if( m_WaterMin >= (m_WaterMax - 32) ) m_WaterMax = m_WaterMin + 32; + } + return 2; +} + + +//--------------------------------------------------------------------------- +//AA6YQ 1.6.6 +LPCSTR __fastcall TSound::GetInputSoundcard(unsigned int ID) +{ + + if (MMSYSERR_NOERROR==(waveInGetDevCaps(ID,&InCaps,sizeof(InCaps)))) { + return InCaps.szPname; + } + else { + return ""; + } +} + +//--------------------------------------------------------------------------- +//AA6YQ 1.6.6 +LPCSTR __fastcall TSound::GetOutputSoundcard(unsigned int ID) +{ + + if (MMSYSERR_NOERROR==(waveOutGetDevCaps(ID,&OutCaps,sizeof(OutCaps)))) { + return OutCaps.szPname; + } + else { + return ""; + } +} +//--------------------------------------------------------------------------- + +void __fastcall CWaveFile::ReadWrite(double *s, int size) +{ + SHORT d; + + if( m_Handle != NULL ){ + if( m_mode == 2 ){ // ‘‚«‚±‚Ý + if( !m_pause ){ + for( ; size; s++, size-- ){ + d = SHORT(*s); + if( mmioWrite(m_Handle, (const char*)&d, 2) != 2 ){ + mmioClose(m_Handle, 0); + m_Handle = 0; + m_mode = 0; + break; + } + else { + m_pos += 2; + } + } + } + } + else { // “Ç‚Ýo‚µ + if( m_pause || m_dis ){ + memset(s, 0, sizeof(double)*size); + } + else { + for( ; size; s++, size-- ){ + if( mmioRead(m_Handle, (char *)&d, 2) == 2 ){ + *s = d; + m_pos += 2; + } + else if( m_autopause ){ + m_pause = 1; + break; + } + else { + mmioClose(m_Handle, 0); + m_Handle = 0; + m_mode = 0; + break; + } + } + for( ; size; s++, size-- ){ + *s = 0; + } + } + } + } +} + +__fastcall CWaveFile::CWaveFile() +{ + m_mode = 0; + m_pause = 0; + m_Handle = NULL; + m_dis = 0; + m_autopause = 0; +} + +__fastcall CWaveFile::~CWaveFile() +{ + FileClose(); +} + +void __fastcall CWaveFile::FileClose(void) +{ + m_mode = 0; + m_pause = 0; + if( m_Handle != NULL ){ + mmioClose(m_Handle, 0); + m_Handle = 0; + } +} + +void __fastcall CWaveFile::Rec(LPCSTR pName) +{ + FileClose(); + m_FileName = pName; + m_Handle = mmioOpen(m_FileName.c_str(), NULL, MMIO_CREATE|MMIO_WRITE|MMIO_ALLOCBUF); + if( m_Handle == NULL ){ + ErrorMB( (sys.m_WinFontCharset != SHIFTJIS_CHARSET)?"Can't open '%s'":"'%s'‚ð쬂ł«‚Ü‚¹‚ñ.", pName); + return; + } + m_Head[0] = 0x55; + m_Head[1] = 0xaa; + m_Head[2] = char(SampType); + m_Head[3] = 0; + mmioWrite(m_Handle, (const char *)m_Head, 4); + m_pos = 4; + m_mode = 2; + m_pause = 0; + m_dis = 0; +} + +int SampTable[]={11025, 8000, 6000, 12000, 16000, 18000, 22050, 24000, 44100}; +BOOL __fastcall CWaveFile::Play(LPCSTR pName) +{ + FileClose(); + FILE *fp = fopen(pName, "rb"); + if( fp == NULL ){ + ErrorMB( (sys.m_WinFontCharset != SHIFTJIS_CHARSET)?"Can't open '%s'":"'%s'‚ðƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } + m_length = filelength(fileno(fp)); + m_FileName = pName; + fclose(fp); + m_Handle = mmioOpen(m_FileName.c_str(), NULL, MMIO_READ|MMIO_ALLOCBUF); + if( m_Handle == NULL ){ + ErrorMB( (sys.m_WinFontCharset != SHIFTJIS_CHARSET)?"Can't open '%s'":"'%s'‚ðƒI[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", pName); + return FALSE; + } + m_pos = 0; + if( mmioRead(m_Handle, (char *)m_Head, 4) == 4 ){ + int type = 0; + if( (m_Head[0] == 0x55)&&(m_Head[1] == 0xaa) ){ + type = m_Head[2]; + m_pos = 4; + m_length -= 4; + } + if( type > 8 ) type = 0; + if( type != SampType ){ + if( YesNoMB( + (sys.m_WinFontCharset != SHIFTJIS_CHARSET) + ? "%s\r\n\r\nThis file has been recorded based on %uHz, play it with sampling conversion?" + : "%s\r\n\r\n‚±‚̃tƒ@ƒCƒ‹‚Í %uHz ƒx[ƒX‚Å‹L˜^‚³‚ê‚Ä‚¢‚Ü‚·. Žü”g”•ÏŠ·‚µ‚ÄĶ‚µ‚Ü‚·‚©H", + m_FileName.c_str(), SampTable[type] ) == IDNO ){ + mmioClose(m_Handle, 0); + m_Handle = 0; + return TRUE; + } + else { + mmioClose(m_Handle, 0); + m_Handle = 0; + char bf[1024]; + strcpy(bf, pName); + SetEXT(bf, ""); + char wName[1024]; + sprintf(wName, "%s_%u.MMV", bf, int(SampBase)); + if( ChangeSampFreq(wName, pName, SampTable[type]) == TRUE ){ + Play(wName); + } + } + } + } + m_mode = 1; + m_pause = 0; + m_dis = 0; + return TRUE; +} + +void __fastcall CWaveFile::Rewind(void) +{ + if( m_Handle != NULL ){ + m_dis++; + if( m_mode == 2 ){ + mmioSeek(m_Handle, 4, SEEK_SET); + m_pos = 4; + } + else { + mmioSeek(m_Handle, 0, SEEK_SET); + m_pos = 0; + } + m_dis--; + } +} + +void __fastcall CWaveFile::Seek(int n) +{ + if( m_Handle != NULL ){ + m_dis++; + if( (m_Head[0] == 0x55)&&(m_Head[1] == 0xaa) ){ + mmioSeek(m_Handle, n + 4, SEEK_SET); + m_pos = n + 4; + } + else { + mmioSeek(m_Handle, n, SEEK_SET); + m_pos = n; + } + m_dis--; + } +} + +long __fastcall CWaveFile::GetPos(void) +{ + if( (m_Head[0] == 0x55)&&(m_Head[1] == 0xaa) ){ + long n = m_pos - 4; + if( n < 0 ) n = 0; + return n; + } + else { + return m_pos; + } +} + +int __fastcall CWaveFile::ChangeSampFreq(LPCSTR tName, LPCSTR pName, int sSamp) +{ + int rr = FALSE; + FILE *fp = fopen(pName, "rb"); + if( fp != NULL ){ + CWaitCursor w; + BYTE head[4]; + memset(head, 0, sizeof(head)); + head[0] = 0x55; + head[1] = 0xaa; + head[2] = char(SampType); + head[3] = 0; + FILE *wfp = fopen(tName, "wb"); + if( wfp != NULL ){ + fwrite(head, 1, 4, wfp); + + int rsize = 16384; + int wsize = rsize * SampBase/double(sSamp); + short *rp = new short[rsize]; + short *wp = new short[wsize]; + CIIR riir; + riir.MakeIIR(2800, sSamp, 8, 0, 0); + CIIR wiir; + wiir.MakeIIR(2800, SampBase, 16, 0, 0); + int rlen, wlen; + short *tp; + int i, r; + while(1){ + rlen = fread(rp, 1, rsize * 2, fp); + if( !rlen ) break; + rlen /= 2; + if( SampBase < sSamp ){ // ƒfƒVƒ[ƒVƒ‡ƒ“ + tp = rp; + for( i = 0; i < rlen; i++, tp++ ){ + *tp = riir.Do(*tp); + } + } + tp = wp; + wlen = rlen * SampBase / sSamp; + if( wlen > wsize ) wlen = wsize; + for( i = 0; i < wlen; i++ ){ + r = int(double(i) * sSamp / SampBase); + *tp++ = wiir.Do(rp[r]); + } + if( fwrite(wp, 1, wlen * 2, wfp) != size_t(wlen * 2) ) break; + } + if( !fclose(wfp) ) rr = TRUE; + delete[] rp; + delete[] wp; + } + fclose(fp); + } + return rr; +} + diff --git a/Sound.h b/Sound.h new file mode 100644 index 0000000..262a263 --- /dev/null +++ b/Sound.h @@ -0,0 +1,171 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef FilterH +#define FilterH +//--------------------------------------------------------------------------- +#include + +#include "Wave.h" +#include "fft.h" +#include "rtty.h" +//--------------------------------------------------------------------------- +class CWaveFile +{ +private: + HMMIO m_Handle; + int m_dis; + BYTE m_Head[4]; +public: + long m_length; + long m_pos; + int m_mode; + int m_pause; + int m_autopause; + AnsiString m_FileName; + + __fastcall CWaveFile(); + __fastcall ~CWaveFile(); + void __fastcall FileClose(void); + void __fastcall Rec(LPCSTR pName); + BOOL __fastcall Play(LPCSTR pName); + void __fastcall Rewind(void); + void __fastcall ReadWrite(double *s, int size); + long __fastcall GetPos(void); + void __fastcall Seek(int n); + int __fastcall ChangeSampFreq(LPCSTR tName, LPCSTR pName, int sSamp); +}; + + +class TSound : public TThread +{ +private: + double ZBPF[TAPMAX+1]; + + BOOL m_Stop; + WAVEFORMATEX m_WFX; + + int m_FFTMax; + int m_FFTSumMax; + + int m_WaterMax; + int m_WaterSumMax; + int m_WaterMin; + + CWave Wave; + CNoise Noise; + + int m_ReqFifoSize; + + void __fastcall ErrorMsg(void); + double __fastcall GetScopeRange(double &low, double center, double shift); + void __fastcall ReadWrite(double *s, int size); + int __fastcall UpdateFifoSize(void); + BOOL __fastcall ReInitSound(void); + void __fastcall JobSuspend(void); + +protected: + void __fastcall Execute(); + + +public: + __fastcall TSound(bool CreateSuspended); + __fastcall ~TSound(); + + void __fastcall Stop(void); + void __fastcall ReqStop(void); + void __fastcall WaitStop(void); + void __fastcall TimingWait(void); + + void __fastcall InitSound(void); + double __fastcall GetScreenFreq(int x, int XW, int XRD); + int __fastcall DrawFFT(Graphics::TBitmap *pBitmap, int sw, int XRD); + int __fastcall DrawFFTWater(Graphics::TBitmap *pBitmap, int sw, int XRD); + void __fastcall SetTXRX(int sw); + int __fastcall DoAFC(void); + + void __fastcall CalcBPF(void); + void __fastcall CalcBPF(double fl, double fh, double fw); + void __fastcall TaskPriority(void); + + LPCSTR __fastcall GetInputSoundcard(unsigned int ID); + LPCSTR __fastcall GetOutputSoundcard(unsigned int ID); + + CFSKDEM FSKDEM; + CFSKMOD FSKMOD; + + CWaveFile WaveFile; + + int m_Test; + + void __fastcall FileClose(void); + void __fastcall Rec(LPCSTR pName); + void __fastcall Play(LPCSTR pName); + void __fastcall Rewind(void); + + void __fastcall InitWFX(void); + + UINT m_IDDevice; + UINT m_IDOutDevice; //AA6YQ 1.6.6 + + int m_playmode; + int m_susp; + int m_suspack; + + int m_bpf; + int m_bpftap; + int m_bpfafc; + double m_bpffw; + int m_lmsbpf; + CLMS m_lms; + double HBPF[TAPMAX+1]; + + int m_Tx; + int m_ReqTx; + + CFFT fftIN; + + int m_Err; + int m_BuffSize; + + int m_Noise; + + int m_FFTSW; + int m_FFTFW; + + int m_FFTWINDOW; + + int m_ReqSpeedTest; + DWORD m_SpeedValue; + void __fastcall JobSpeedTest(); + + inline int __fastcall GetOutCount(int sw){ + return (sw ? Wave.GetOutBCC() : Wave.GetOutBC()) * m_BuffSize; + } + inline void __fastcall TrigBCC(void){ + Wave.SetOutBCC(Wave.GetOutBC()); + } + inline int __fastcall GetBCC(void){ + return Wave.GetOutBCC(); + } +}; +//--------------------------------------------------------------------------- +#endif + diff --git a/TH5Len.cpp b/TH5Len.cpp new file mode 100644 index 0000000..69d5bdb --- /dev/null +++ b/TH5Len.cpp @@ -0,0 +1,62 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "TH5Len.h" +#include "ComLib.h" +#include "Hamlog5.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TTH5LenDlg *TH5LenDlg; +//--------------------------------------------------------------------- +__fastcall TTH5LenDlg::TTH5LenDlg(TComponent* AOwner) + : TForm(AOwner) +{ + Caption = (sys.m_WinFontCharset != SHIFTJIS_CHARSET) ? "Set fields length" : "ƒtƒB[ƒ‹ƒh’·‚ÌÝ’è"; +} +//--------------------------------------------------------------------- +int __fastcall TTH5LenDlg::Execute(void) +{ + UHis->Position = Log.m_LogSet.m_Hamlog5Len[8]; + UMy->Position = Log.m_LogSet.m_Hamlog5Len[9]; + UFreq->Position = Log.m_LogSet.m_Hamlog5Len[10]; + UMode->Position = Log.m_LogSet.m_Hamlog5Len[11]; + UName->Position = Log.m_LogSet.m_Hamlog5Len[12]; + UQTH->Position = Log.m_LogSet.m_Hamlog5Len[13]; + URem->Position = Log.m_LogSet.m_Hamlog5Len[14]; + if( ShowModal() == IDOK ){ + Log.m_LogSet.m_Hamlog5Len[8] = UHis->Position; + Log.m_LogSet.m_Hamlog5Len[9] = UMy->Position; + Log.m_LogSet.m_Hamlog5Len[10] = UFreq->Position; + Log.m_LogSet.m_Hamlog5Len[11] = UMode->Position; + Log.m_LogSet.m_Hamlog5Len[12] = UName->Position; + Log.m_LogSet.m_Hamlog5Len[13] = UQTH->Position; + Log.m_LogSet.m_Hamlog5Len[14] = URem->Position; + Log.m_LogSet.m_Hamlog5Len[15] = Log.m_LogSet.m_Hamlog5Len[14]; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------- + diff --git a/TH5Len.dfm b/TH5Len.dfm new file mode 100644 index 0000000000000000000000000000000000000000..6457467876b8002cfe6cc11a59e6ba9566c082f0 GIT binary patch literal 2225 zcmbW2KX21O7{;Bmor{yS&Cmg)3L%8psQNE$#nd)&NZX_hi9<(llWSt(`cnIn@4c){YSkQaKz*Z7| zx_tZQ%ZJNs!8DLX%E;(+iTF~;u;&A#O}gTXM7D%2GGFNGwu1=FHOkv1ZD+gjs8HUl zH&iXnUSkv6FxxT@46BXLG;~ff^aXPTKNR}3ryrx_%!PSj-@L$s#^B-LaInW5Xv&O` zs$s|Q;=$=2ZnSKKtb!X3*;6&+9GOlH+1pmD3m&IEhVPyel3GPSL?);#(h-0;I)Pc4 zUINS}gM-SZX>_b(*AY$=z3$z3=hPv_Q9m4uST-Di8!kl+=l{nLRQnOXW#*To0js{> ztw{pPB^#a0M=V#^+Mltt=X}rGlXyy1+(r@0{E+2>Z+T}TOK;f`%T;FioTaS!mNzD` z6d!2ih~pY_6cTin!M*QI;t1>LSht_J3y0d)DIwUB_jk95#hkyhti;c{8#rGN%L4Xy zVG$karzTM{?hJLajvV&^BvP7wxbJ=ZfWXa_f^M~t83OVw`ZyrT4k{r?e*gOG$In9u zz!3>SkTtb!5J`30OT&Y8I+Yne`(lv&8dm|y`wS%$%Yj-{tNp0>Zj4wQ70asE%cy)O zMlSjCwSX%)os_1J}y7>^-Jqq?{P~d0a2{#=O7z?bpny^ zSdk8Fz32XB1Q4+q?3givAzjJv3h_@wdK4iyc@r2UnBoe6Uc9p8OQL( zd>d}eUpU@*%8^Dn66a*cIlNguCw6GE>Yb;YEahzQ`(!z1YLp{2!vgx4*s;;RQp%i1 o5uftkPB6zY)8m-1rzgWby>e=j>K><. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef OCBH +#define OCBH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TTH5LenDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TLabel *L1; + TLabel *L2; + TLabel *L3; + TLabel *L4; + TLabel *L5; + TLabel *L6; + TLabel *L7; + TEdit *EHis; + TEdit *EMy; + TEdit *EFreq; + TEdit *EMode; + TEdit *EName; + TEdit *EQTH; + TEdit *ERem; + TUpDown *UHis; + TUpDown *UMy; + TUpDown *UFreq; + TUpDown *UMode; + TUpDown *UName; + TUpDown *UQTH; + TUpDown *URem; +private: +public: + virtual __fastcall TTH5LenDlg(TComponent* AOwner); + + int __fastcall Execute(void); +}; +//---------------------------------------------------------------------------- +//extern PACKAGE TTH5LenDlg *TH5LenDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/TextEdit.cpp b/TextEdit.cpp new file mode 100644 index 0000000..c489fcd --- /dev/null +++ b/TextEdit.cpp @@ -0,0 +1,172 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ComLib.h" +#include "TextEdit.h" +//--------------------------------------------------------------------------- +enum TFontPitch { fpDefault, fpVariable, fpFixed }; +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TTextEditDlg *TextEditDlg; +//--------------------------------------------------------------------- +__fastcall TTextEditDlg::TTextEditDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + ap = NULL; + Memo->Font->Pitch = fpFixed; + EntryAlignControl(); + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; +// Memo->Font->Name = sys.m_BtnFontName; +// Memo->Font->Charset = sys.m_BtnFontCharset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + CancelBtn->Caption = "Cancel"; + FontBtn->Caption = "Font"; + } +} +//--------------------------------------------------------------------- +int __fastcall TTextEditDlg::Execute(AnsiString &as, int flag, LPCSTR pTitle /* = NULL*/) +{ + CWaitCursor tw; + ap = as.c_str(); + if( flag != TRUE ){ + OKBtn->Visible = FALSE; + CancelBtn->Caption = ( Font->Charset != SHIFTJIS_CHARSET ) ? "Close":"•‚¶‚é"; + Memo->ReadOnly = TRUE; + } + if( pTitle != NULL ){ + Caption = pTitle; + } + tw.Delete(); + int r = ShowModal(); + if( r == IDOK ){ + if( Memo->Modified == FALSE ) return FALSE; + if( flag == TRUE ){ + as = Memo->Text; + } + return TRUE; + } + return FALSE; +} + +void __fastcall TTextEditDlg::FontBtnClick(TObject *Sender) +{ + FontDialog->Font->Assign(Memo->Font); + NormalWindow(this); + if( FontDialog->Execute() == TRUE ){ + CWaitCursor tw; + Memo->Font->Assign(FontDialog->Font); + Memo->Update(); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +// ƒTƒCƒY•ÏXƒRƒ“ƒgƒ[ƒ‹‚Ì“o˜^ +void __fastcall TTextEditDlg::EntryAlignControl(void) +{ + RECT rc; + rc.left = 0; + rc.top = 0; + rc.right = 792-1; + rc.bottom = 572-1; + + AlignList.EntryControl(OKBtn, &rc, OKBtn->Font); + AlignList.EntryControl(CancelBtn, &rc, CancelBtn->Font); + AlignList.EntryControl(FontBtn, &rc, FontBtn->Font); + AlignList.EntryControl(Memo, &rc, Memo->Font); + + int CX = ::GetSystemMetrics(SM_CXFULLSCREEN); + int CY = ::GetSystemMetrics(SM_CYFULLSCREEN); +// int CX = ::GetSystemMetrics(SM_CXSCREEN); +// int CY = ::GetSystemMetrics(SM_CYSCREEN); + if( (CX < Width)||(CY < Height) ){ + Top = 0; + Left = 0; + Width = CX; + Height = CY; + } + FormCenter(this, CX, CY); + if( Owner != NULL ){ + WindowState = ((TForm *)Owner)->WindowState; + } +} +//--------------------------------------------------------------------------- +void __fastcall TTextEditDlg::FormResize(TObject *Sender) +{ + CWaitCursor tw; + AlignList.NewAlign(this); +} +//--------------------------------------------------------------------------- +void __fastcall TTextEditDlg::FormPaint(TObject *Sender) +{ + if( ap == NULL ) return; + CWaitCursor tw; + Memo->Text = ap; + ap = NULL; + Memo->Update(); +} +//--------------------------------------------------------------------------- +// ƒeƒLƒXƒgƒwƒ‹ƒv‚Ì•\ަ +void __fastcall ShowHelp(TForm *pForm, LPCSTR pName) +{ + char bf[2048]; + char Name[256]; + AnsiString in; + FILE *fp; + + sprintf(Name, "%s%s", BgnDir, pName); + CWaitCursor w; + if( (fp = fopen(Name, "rt"))!=NULL ){ + while(!feof(fp)){ + if( fgets(bf, 2048, fp) != NULL ){ + ClipLF(bf); + in += bf; + in += "\r\n"; + } + } + fclose(fp); + } + else { + if((sys.m_WinFontCharset != SHIFTJIS_CHARSET )){ + ErrorMB( "'%s' was not found.\r\n\r\nPlease search in the MMTTY English Web Site.", Name); + } + else { + ErrorMB( "'%s'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ.\r\n\r\nMMTTY English Web Site ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚µ‚ĉº‚³‚¢.", Name); + } + return; + } + if( sys.m_HelpNotePad ){ + sprintf( bf, "NOTEPAD.EXE %s", Name); + WinExec(bf, SW_SHOWDEFAULT); + } + else { + TTextEditDlg *Box = new TTextEditDlg(pForm); + Box->Memo->Font->Name = sys.m_HelpFontName; + Box->Memo->Font->Charset = sys.m_HelpFontCharset; + Box->Memo->Font->Size = sys.m_HelpFontSize; + Box->Execute(in, FALSE, pName); + delete Box; + } +} +//--------------------------------------------------------------------------- diff --git a/TextEdit.dfm b/TextEdit.dfm new file mode 100644 index 0000000000000000000000000000000000000000..7c1faad9bb03c97ac92365617cabb9183eb3712a GIT binary patch literal 1038 zcmb_bO^(wr7nK)GTI#puI_{jB1@{!UOJ9O_;Hjz562IW(joSmWpfDWLyTl6zWLWM zz;CYU4#|@C900)W>TY!l1l6bDBKRD93>tt`y<*e{*JGB4k`hH@nN#U{i7dEEGr}mc zSK?4`YMU;1P|Ope7m>!7OH(>AKcZ#vnj#GwDb6V?6DlK~E#M2U7Giz39zeK% zs+8cJc%tWRv`b;Fopl3tj41G#z21Ivt0s&mXh4t2DO0XL6**y=OgFIQVDi%39k#$0 z-3b(n0g&8*;&P^_tl%~U3G~I?zkWT9XzE=(Keqt0iE@}aJ)2=g0a4i7V^sS36-kQR`13F z&Wv!S6)oMJn5aIxkrF!p@~YR?H~boW2z~@#f*rJ_^P`iWogkxz#xorNKCbZx1z}=t jve}eZ(5#!WS;2F0RwwP!TljvJx6njo)iML_Ylp!v$00=C literal 0 HcmV?d00001 diff --git a/TextEdit.h b/TextEdit.h new file mode 100644 index 0000000..be2f86f --- /dev/null +++ b/TextEdit.h @@ -0,0 +1,69 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef TextEditH +#define TextEditH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TTextEditDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TMemo *Memo; + TButton *FontBtn; + TFontDialog *FontDialog; + void __fastcall FontBtnClick(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + + + + + void __fastcall FormPaint(TObject *Sender); + +private: + int InitFlag; + LPCSTR ap; + + CAlignList AlignList; + void __fastcall EntryAlignControl(void); +public: + virtual __fastcall TTextEditDlg(TComponent* AOwner); + + int __fastcall Execute(AnsiString &as, int flag, LPCSTR pTitle = NULL); +}; +//---------------------------------------------------------------------------- +//extern TTextEditDlg *TextEditDlg; + +extern void __fastcall ShowHelp(TForm *pForm, LPCSTR pName); +//---------------------------------------------------------------------------- +#endif diff --git a/TncSet.cpp b/TncSet.cpp new file mode 100644 index 0000000..4af4794 --- /dev/null +++ b/TncSet.cpp @@ -0,0 +1,125 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "TncSet.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//--------------------------------------------------------------------- +__fastcall TTNCSetDlg::TTNCSetDlg(TComponent* AOwner) + : TForm(AOwner) +{ + m_DisEvent = 1; + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "TNC emulation mode"; + CancelBtn->Caption = "Cancel"; + LMSG->Caption = "Note: Use a null modem cable for connecting to the other PC."; + } + SBHelp->Visible = !JanHelp.IsEmpty(); + m_MMList.QueryList("MMT"); + for( int i = 0; i < m_MMList.GetCount(); i++ ){ + PortName->Items->Insert(1, m_MMList.GetItemName(i)); + } + PortName->DropDownCount = m_MMList.GetCount() + 10; +} +//--------------------------------------------------------------------- +void __fastcall TTNCSetDlg::UpdateUI(void) +{ + m_DisEvent++; + int cf = (m_MMList.IndexOf(AnsiString(PortName->Text).c_str()) < 0); + int f; + if( TNCType->ItemIndex == 2 ){ + f = FALSE; + } + else { + f = cf; + } + for(int i = 0; i < GroupBox1->ControlCount; i++ ){ + if( (GroupBox1->Controls[i]->Name != "PortName") && + (GroupBox1->Controls[i]->Name != "L1") + ){ + GroupBox1->Controls[i]->Enabled = f; + } + } + flwXON->Enabled = f; + flwCTS->Enabled = f; + Echo->Enabled = !(TNCType->ItemIndex == 2); + LMSG->Enabled = cf; + m_DisEvent--; +} +//--------------------------------------------------------------------- +int __fastcall TTNCSetDlg::Execute(void) +{ + PortName->Text = TNC.StrPort; + Baud->Text = TNC.BaudRate; + BitLen->ItemIndex = TNC.BitLen; + Parity->ItemIndex = TNC.Parity; + Stop->ItemIndex = TNC.Stop; + flwXON->Checked = TNC.flwXON; + flwCTS->Checked = TNC.flwCTS; + + Echo->ItemIndex = TNC.Echo; + TNCType->ItemIndex = TNC.Type; + DisWindow->Checked = sys.m_DisWindow; + StayOnTop->Checked = sys.m_StayOnTop; + UpdateUI(); + m_DisEvent = 0; + if( ShowModal() == IDOK ){ + StrCopy(TNC.StrPort, AnsiString(PortName->Text).c_str(), 31); + int dd; + if( sscanf(AnsiString(Baud->Text).c_str(), "%u", &dd) == 1 ){ + TNC.BaudRate = dd; + } + TNC.BitLen = BitLen->ItemIndex; + TNC.Parity = Parity->ItemIndex; + TNC.Stop = Stop->ItemIndex; + TNC.flwXON = flwXON->Checked; + TNC.flwCTS = flwCTS->Checked; + + TNC.Echo = Echo->ItemIndex; + TNC.Type = TNCType->ItemIndex; + sys.m_DisWindow = DisWindow->Checked; + sys.m_StayOnTop = StayOnTop->Checked; + TNC.change = 1; + return TRUE; + } + else { + return FALSE; + } +} + +void __fastcall TTNCSetDlg::TNCTypeClick(TObject *Sender) +{ + if( m_DisEvent ) return; + + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TTNCSetDlg::SBHelpClick(TObject *Sender) +{ + ShowHtmlHelp("usemmttyasamodem.htm"); +} +//--------------------------------------------------------------------------- + diff --git a/TncSet.dfm b/TncSet.dfm new file mode 100644 index 0000000000000000000000000000000000000000..fe1ad48da4304609fda2a27448c670e49551d13d GIT binary patch literal 2493 zcmbVN&u`;I6n1Q994G0v+Y>#Y^-3#oVt4w3-4-FC#%bEnG>K|Mx2MImCyA*u6YL3T z5sP*&NQgTUNPFY}7qkKiI3OetAdX!258w)j18_k|VLTJtNw-Ca%S*=g`|*A6dvC@? z$+nxOwPjZu+Y(&(P?sdTU4upb6wzwX)#La4pV~kjs{AP_HW|o4sX{^zg%&*xkXAT~ zs=gDDu4Xy|>Jz-k0!g;iluXHxuDb7ym(6?cr@n<4~ z{F}~CO{b3*3#_82$E#yQg5yu&XYd>NF%$tfhLUut6?kTd9Ew^oGQH3ykspK6E)9s~ zh6rJk6_3JVJM=NNT!$eC1JWcI0eur?ip&VV(fY+D0_yvmSLf`L`pLBT*Y^=^*W zu{)_lUP{Wik|YPY=VzNy-fUX+|I-LCZ~J`|8BH`Y_DSEt(@g-Ks6qlyDz=@FaUFNB zpuOZr{!ze)Xkn%o_gE{5+WA3}G+Q9bw|1Fq1fU0J0KND)Ai1@xRZ+(o22?NY5zh(s zQN#{%u3$SyTmmv9Jc+KG4t7y2Op)P_3o`)mrJhi?m}g-|<6!(?{O0(*@k}l`%axNP z-QEt#a8My9dh%y^N+1yr-Ox6JJdx2xQ)ar+FnH@UsV?K*2(hC+>DO&Tvam_U#ZQw0B| z;@o4UEw4Zb)Rnc^uC2#*<0iBD)uKdf3z1oQOZu18{OgNz zs>>`H$giA9sm!JXYzg@ER0xN|RlZA-{&f!C$@ghmbcXm zDq8-vXnDf*J8AAWQm)ILfQ$^6?W>Rk8HxE=Lp|gkvq=D*V063HoPr}iH5nwFh$x%D z0{isF?N+Up1rv&#ie}o@bhQ18qbcmuED&2YvrKD~=@D@6@zs`Yn};b}n!+tG2ZOSC zJ4-QOFILu;fwH@~2g>o(5Nh;^hx$`wE9oYm8Qa;K)GfD1rVCQuO`4xoMAC|i4Z<#D z12LzwH7SfmAh()eZnML#Z^J^^V~b&`Am06?PkPml4t(s9k;r~uZ2D4iNq?U5k#*}5 v^KsZ6WsJCEMm5|0nF4f+I;SnnuKbzE*OJIzofEkf`xpcpZ2YpYfHm+R?e*#V literal 0 HcmV?d00001 diff --git a/TncSet.h b/TncSet.h new file mode 100644 index 0000000..cf3f760 --- /dev/null +++ b/TncSet.h @@ -0,0 +1,81 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef TncSetH +#define TncSetH +//---------------------------------------------------------------------------- +/* JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +//---------------------------------------------------------------------------- +#include "Ctnc.h" +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TTNCSetDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TGroupBox *GroupBox1; + TComboBox *PortName; + TLabel *L1; + TLabel *L2; + TComboBox *Baud; + TRadioGroup *BitLen; + TRadioGroup *Stop; + TRadioGroup *Parity; + TRadioGroup *TNCType; + TLabel *LMSG; + TGroupBox *GroupBox3; + TCheckBox *flwXON; + TCheckBox *flwCTS; + TRadioGroup *Echo; + TCheckBox *DisWindow; + TCheckBox *StayOnTop; + TSpeedButton *SBHelp; + void __fastcall TNCTypeClick(TObject *Sender); + void __fastcall SBHelpClick(TObject *Sender); + +private: + int m_DisEvent; + CMMList m_MMList; + + void __fastcall UpdateUI(void); + +public: + virtual __fastcall TTNCSetDlg(TComponent* AOwner); + int __fastcall Execute(void); +}; +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#endif diff --git a/TxdDlg.cpp b/TxdDlg.cpp new file mode 100644 index 0000000..fa6fa06 --- /dev/null +++ b/TxdDlg.cpp @@ -0,0 +1,58 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "TxdDlg.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TTxdDlgBox *TxdDlgBox; +//--------------------------------------------------------------------- +__fastcall TTxdDlgBox::TTxdDlgBox(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + CancelBtn->Caption = "Cancel"; + LMsg->Caption = "Please try to test B, C, D, if you have a trouble in the USB-COM adaptor. (C)Limiting speed seems to be well."; + TxdJob->Caption = "Processing method"; + TxdJob->Items->Strings[0] = "A: Normal"; + TxdJob->Items->Strings[1] = "B: Polling"; + TxdJob->Items->Strings[2] = "C: Limiting speed"; + TxdJob->Items->Strings[3] = "D: Polling and Limiting speed"; + + } + else { + LMsg->Caption = "FSK‚ªUSBƒVƒŠƒAƒ‹ƒAƒ_ƒvƒ^[‚ų‚µ‚­“®ì‚µ‚È‚¢ê‡‚ÍB, C, D‚ðŽŽ‚µ‚ĉº‚³‚¢B(C)‘—M‘¬“x‚̧ŒÀ‚ª—Ç‚¢‚悤‚Å‚·."; + } +} +//--------------------------------------------------------------------- +int __fastcall TTxdDlgBox::Execute(int sel) +{ + TxdJob->ItemIndex = sel; + if( ShowModal() == IDOK ){ + sel = TxdJob->ItemIndex; + } + return sel; +} + diff --git a/TxdDlg.dfm b/TxdDlg.dfm new file mode 100644 index 0000000000000000000000000000000000000000..ffccc8080e23f3fc054ccd9cc8441aa968bb7018 GIT binary patch literal 767 zcmZuvJ#W)M7(Uz0*^U!Zm|#G7W~eI0un^m%Nt+KVK1d}bkP}}MOIM#|UxYy{*b72P zZK!A`W*EA&AtnaYKfu5*Kp-(NF@QgkR3Nr{Kkj*+_j%vnWq{DGVRW{%{w~;D|H=b^ z%;shpp~x}FM5B?sdaZTv9us~70a2ePibewm2Nruouqcf}!?g*Wh`Q}FmwK>v$I?`j z22AbeiHc5K?6DShCsQU|;*=sDx(=HP*SSiQdTc|V+Chk!xNf!DO|;#%9_X#cz`Bjf zMVS&Bh?OxJx}HNHA{;R#FBGW!4>^x|_CAKSn8bk^)5J>dCZnWRAmnNlAel6DGnwKA zpIYMpV^2@T;h<~=uE(sgoz4V(+M^zZdE`h{(~U3*O&qkn@sy9s8U2E|1|aI#BTUvh z-Eflo#LJmY!dp-(M!d|yMe|LmF=NznA7e=xrXCIh+m`_lkv3zDdZqr3#=HXKMvn1) zfx+KjLR?$f%=dRh1Mk^0!epgO9h(erm. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef TxdDlgH +#define TxdDlgH +//---------------------------------------------------------------------------- +/* JA7UDE 0428 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +//---------------------------------------------------------------------------- +class TTxdDlgBox : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TRadioGroup *TxdJob; + TLabel *LMsg; +private: +public: + virtual __fastcall TTxdDlgBox(TComponent* AOwner); + + int __fastcall Execute(int sel); +}; +//---------------------------------------------------------------------------- +//extern TTxdDlgBox *TxdDlgBox; +//---------------------------------------------------------------------------- +#endif diff --git a/UserPara.ini b/UserPara.ini new file mode 100644 index 0000000..daaa4c1 --- /dev/null +++ b/UserPara.ini @@ -0,0 +1,739 @@ +[Define0] +Name=Standard RTTY +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=0 +RXBPFTAP=56 +RXBPFAFC=1 +RXBPFFW=1.000000e+02 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2136 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=0 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=4 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=60 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +FFTTones=4 +AA6YQ.Version=2 +AA6YQ.Enabled=0 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define1] +Name=Fluttered signals +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=1 +RXBPFTAP=56 +RXBPFAFC=1 +RXBPFFW=1.000000e+02 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2136 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=0 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=4 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=90 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +FFTTones=4 +AA6YQ.Version=2 +AA6YQ.Enabled=0 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define7] +Name=23Hz RTTY (MTTY) +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=2.300000e+01 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=2.300000e+01 +RXBPF=1 +RXBPFTAP=80 +RXBPFAFC=1 +RXBPFFW=0.000000e+00 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2210 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=2 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=3 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=20 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=4.000000e+01 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +FFTTones=4 +AA6YQ.Version=2 +AA6YQ.Enabled=0 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define2] +Name=Fluttered signals (FIR) +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=1 +RXBPFTAP=56 +RXBPFAFC=1 +RXBPFFW=1.000000e+02 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2096 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=1 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=4 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=90 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +FFTTones=4 +AA6YQ.Version=2 +AA6YQ.Enabled=0 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define1025] +Name=Default +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=0 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=0 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=0 +RXBPFTAP=56 +RXBPFAFC=1 +RXBPFFW=1.000000e+02 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2210 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=0 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=4 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=60 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +FFTTones=4 +LimitAGC=1 +TXLoop=1 +AA6YQ.Version=2 +AA6YQ.Enabled=0 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define1026] +Name=Return to the startup +Enabled=1 +AFC=0 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=0 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=0 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlms=0 +RXlmsDelay=24 +RXlmsMU2=1.000000e-03 +RXlmsGM=9.998000e-01 +RXlmsAGC=1 +RXlmsInv=0 +RXlmsTAP=512 +RXNotchTAP=192 +RXlmsBPF=0 +RXlmsType=1 +RXlmsNotch=2210 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=1 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=3 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.500000e+01 +Smooz=3.000000e+02 +Tap=512 +IIRBW=60 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +FFTTones=4 +LimitAGC=1 +TXLoop=1 +AA6YQ.Version=2 +AA6YQ.Enabled=1 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define3] +Name=Multi-path +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=1 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=0 +RXBPFTAP=56 +RXBPFAFC=1 +RXBPFFW=1.000000e+02 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2094 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=0 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=3 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=90 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +FFTTones=4 +AA6YQ.Version=2 +AA6YQ.Enabled=0 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define4] +Name=AA6YQ FIR512 +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=0 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +LimitAGC=1 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXLoop=1 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=0 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlms=0 +RXlmsDelay=24 +RXlmsMU2=1.000000e-03 +RXlmsGM=9.998000e-01 +RXlmsAGC=1 +RXlmsInv=0 +RXlmsTAP=512 +RXNotchTAP=192 +RXlmsBPF=0 +RXlmsType=1 +RXlmsNotch=2199 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=1 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=3 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.500000e+01 +Smooz=3.000000e+02 +Tap=512 +IIRBW=60 +FFTTones=4 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +AA6YQ.Version=2 +AA6YQ.Enabled=1 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define5] +Name=FFT demodulator +Enabled=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=1 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2203 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=3 +BaudRate=4.545000e+01 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=60 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +AFC=1 +UOS=1 +LimitAGC=1 +SQ=1 +TXLoop=1 +RXlms=0 +RXNotchTAP=72 +TTYBitLen=5 +TTYStopLen=4 +TTYParity=0 +FFTTones=4 +AA6YQ.Version=2 +AA6YQ.Enabled=0 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + +[Define6] +Enabled=0 + diff --git a/VerDsp.cpp b/VerDsp.cpp new file mode 100644 index 0000000..99a7534 --- /dev/null +++ b/VerDsp.cpp @@ -0,0 +1,67 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "VerDsp.h" +#include "ComLib.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +//TVerDspDlg *VerDspDlg; +//--------------------------------------------------------------------- +__fastcall TVerDspDlg::TVerDspDlg(TComponent* AOwner) + : TForm(AOwner) +{ + IconImage->Picture->Assign(Application->Icon); + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; +// Version->Font->Name = ((TForm *)AOwner)->Font->Name; +// Version->Font->Charset = ((TForm *)AOwner)->Font->Charset; + LFree->Font->Name = ((TForm *)AOwner)->Font->Name; + LFree->Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + Caption = "Version Information"; + LFree->Caption = "Free Software"; + LTNX->Font->Size = LTNX->Font->Size - 1; + } + Version->Caption = VERTTL; + LTNX->Caption = + "------ Programming ------\r\n" + "Dave, AA6YQ (updated 1.65D -> 1.66G)\r\n" + "------ Help, FAQ and Remote mode, etc... ------\r\n" + "Jan, KX2A Ken, VE5KC Bill, KB4IJ Andy, K3UK(KB2EOQ)\r\n" + "Bill, K5YG Phil, GU0SUP, Josef, OK2WO Oba, JA7UDE\r\n" + "Bill, W7TI Ed, K4SB Eddie, W6/G0AZT Geoff, G3NPA\r\n" + "Bob, K4CY Eike, DM3ML Antonio, EA1MV Edoardo, I5PAC\r\n" + "Joe, W4TV\r\n" + "------ Japanese friends ------\r\n" + "Fumio, JA1IQV Nori, JA1WSK Oba, JA7UDE\r\n" + "Kaz, 7L1CUH Nobu, JA2BQX Hiro, JH1BIH, Isao JK1IQK\r\n" + "------ Reflector and Web sites ------\r\n" + "MMTTY User's group http://groups.yahoo.com/group/MMTTY/\r\n" + "MMTTY-Web http://mmhamsoft.amateur-radio.ca/\r\n" + "JARTS-Web http://jarts.web.fc2.com/\r\n" + "\r\nAll friends of Radio Amateurs\r\n" + "And my wife Midori, JI3IVL, for her invisible help." + ; +} +//--------------------------------------------------------------------- diff --git a/VerDsp.dfm b/VerDsp.dfm new file mode 100644 index 0000000000000000000000000000000000000000..28d81152568a7af451adb8274e8826ccf396dcf0 GIT binary patch literal 1041 zcmbu8PjAyO7{*g)&ELURP8>k=$O#R;L7Vg+>)NQX3KEmRO}#XlYe$JI4Q^|0T)4nT z;EMPFd;)H8XBVyrv=106HH9OC>MPt zA<&h8tg7;NS}{tUJ62=CS(v=Q*8f^Qzp7;?K$)<(0%U1IZf}laZ1*BYDFp*1 z7}VE#>#GIQU$x&BuvGr9RsOe1dl%aJ_nO@xNlfQrJJaGwk-fCMIT<$!Uc5YgQXGnR zT(pW#(WrVdU0bBfX&XiO-}rP^N&a>uzFn1%tN6(Mtv_K&?^}I1c&s>8C8tj5{5B|^ z>xY%UTiI)#1K?rCNQe rNM%l$;K4eQJDW~mxNrLS2rUS=-2*m7WQ223fQkjtWVpJ?Koid|qV!9- literal 0 HcmV?d00001 diff --git a/VerDsp.h b/VerDsp.h new file mode 100644 index 0000000..e9833ff --- /dev/null +++ b/VerDsp.h @@ -0,0 +1,52 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef VerDspH +#define VerDspH +//---------------------------------------------------------------------------- +//JA7UDE 0427 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TVerDspDlg : public TForm +{ +__published: + TButton *OKBtn; + TLabel *Version; + TImage *IconImage; + TLabel *LFree; + TLabel *LTNX; + TLabel *Label1; +private: +public: + virtual __fastcall TVerDspDlg(TComponent* AOwner); +}; +//---------------------------------------------------------------------------- +//extern TVerDspDlg *VerDspDlg; +//---------------------------------------------------------------------------- +#endif diff --git a/Wave.cpp b/Wave.cpp new file mode 100644 index 0000000..d4b911b --- /dev/null +++ b/Wave.cpp @@ -0,0 +1,852 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#include +#pragma hdrstop + +#include "Wave.h" + +//--------------------------------------------------------------------------- +// ‰Šú‰» +__fastcall CWave::CWave(void) +{ + m_Error = 0; + m_InOpen = m_OutOpen = FALSE; + m_hin = NULL; + m_hout = NULL; + m_InEvent = NULL; + m_OutEvent = NULL; + for( int i = 0; i < WAVE_FIFO_MAX; i++ ){ + m_pInBuff[i] = m_pOutBuff[i] = NULL; + } + m_pOutBase = m_pInBase = NULL; + m_InBuffSize = 1024; + m_OutBuffSize = 1024; + m_OutFirst = FALSE; + m_InFifoSize = 12; + m_OutFifoSize = 4; + m_SoundStereo = 1; + m_pDLL = NULL; + ::InitializeCriticalSection(&m_InCS); + ::InitializeCriticalSection(&m_OutCS); +} + +//--------------------------------------------------------------------------- +// I—¹ŽžŽÀsƒ‹[ƒ`ƒ“ +__fastcall CWave::~CWave() +{ + ::DeleteCriticalSection(&m_InCS); + ::DeleteCriticalSection(&m_OutCS); + if( m_pDLL ){ + delete m_pDLL; + m_pDLL = NULL; + } +} +#if 0 +//--------------------------------------------------------------------------- +// ƒTƒEƒ“ƒhƒJ[ƒh‚Ì–â‚¢‡‚킹 +BOOL __fastcall CWave::IsFormatSupported(LPWAVEFORMATEX pWFX, UINT IDDevice) +{ + return (::waveOutOpen( + NULL, // ptr can be NULL for query + IDDevice, // the device identifier + pWFX, // defines requested format + NULL, // no callback + NULL, // no instance data + WAVE_FORMAT_QUERY // query only, do not open device + ) ? FALSE : TRUE); +} +#endif +//--------------------------------------------------------------------------- +// ƒTƒEƒ“ƒhƒJ[ƒh‚Ì“ü—͂ł̃I[ƒvƒ“ +// WFX.wFormatTag = WAVE_FORMAT_PCM; +// WFX.nChannels = 1; +// WFX.wBitsPerSample = 16; +// WFX.nSamplesPerSec = 11025; +// WFX.nBlockAlign = WORD(WFX.nChannels *(WFX.wBitsPerSample/8)); +// WFX.nAvgBytesPerSec = WFX.nBlockAlign * WFX.nSamplesPerSec; +// WFX.cbSize = 0; +BOOL __fastcall CWave::InOpen(LPWAVEFORMATEX pWFX, UINT IDDevice, DWORD Size) +{ + if( m_pDLL ){ + m_InOpen = m_pDLL->InOpen(pWFX->nSamplesPerSec, Size); + if( !m_InOpen ) PumpMessages(); + return m_InOpen; + } + int i; + + if( m_InOpen ) InClose(); + m_Error = 0; + m_InWait = m_InOver = FALSE; + m_InWP = m_InRP = m_InBC = 0; + m_IWFX = *pWFX; + m_InBuffSize = Size * (m_IWFX.wBitsPerSample/8) * m_IWFX.nChannels; + m_InMemSize = sizeof(WAVEHDR) + m_InBuffSize; + if( m_InMemSize & 3 ) m_InMemSize += 4 - (m_InMemSize & 3); + m_InAllocSize = m_InMemSize * m_InFifoSize; + m_InEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); + // ƒTƒEƒ“ƒhƒJ[ƒh‚̃I[ƒvƒ“ + if( (m_Error = ::waveInOpen( &m_hin, IDDevice, pWFX, (DWORD)WaveInProc, (DWORD)this, CALLBACK_FUNCTION ) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + // ƒoƒbƒtƒ@‚Ì€”õ + m_pInBase = new char[m_InAllocSize]; + ::VirtualLock(m_pInBase, m_InAllocSize); + memset(m_pInBase, 0, m_InAllocSize); + LPSTR p = m_pInBase; + for( i=0; i < m_InFifoSize; i++, p += m_InMemSize ){ + m_pInBuff[i] = (WAVEHDR *)p; + ((WAVEHDR *)p)->dwBufferLength = m_InBuffSize; + ((WAVEHDR *)p)->dwFlags = 0; + ((WAVEHDR *)p)->dwUser = NULL; + ((WAVEHDR *)p)->dwBytesRecorded = NULL; + ((WAVEHDR *)p)->lpData = p + sizeof(WAVEHDR); + if( (m_Error = ::waveInPrepareHeader(m_hin, (WAVEHDR *)p, sizeof(WAVEHDR)) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + if( (m_Error = ::waveInAddBuffer(m_hin, (WAVEHDR *)p, sizeof(WAVEHDR)) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + } + // Žæ‚肱‚݂̊JŽn + if( (m_Error = ::waveInStart(m_hin) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + m_InOpen = TRUE; + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall CWave::InClose() +{ + if( m_pDLL ){ + m_pDLL->InClose(); + m_InOpen = FALSE; + PumpMessages(); + return; + } + int i; + + if(NULL != m_hin){ + ::waveInReset(m_hin); + if( m_pInBase != NULL ){ + for( i=0; i < m_InFifoSize; i++ ){ + if( m_pInBuff[i] != NULL ){ + if( m_pInBuff[i]->dwFlags & WHDR_PREPARED ){ + ::waveInUnprepareHeader(m_hin, m_pInBuff[i], sizeof(WAVEHDR)); + } + } + } + } + ::waveInClose(m_hin); + m_hin = NULL; + if( m_pInBase != NULL ){ + ::VirtualUnlock(m_pInBase, m_InAllocSize); + delete[] m_pInBase; //JA7UDE 0428 + m_pInBase = NULL; + } + } + if(m_InEvent != NULL){ + ::CloseHandle(m_InEvent); + m_InEvent = NULL; + } + m_InOpen = FALSE; +} +//--------------------------------------------------------------------------- +BOOL __fastcall CWave::InRead(double* pData, int Len) +{ + if( m_pDLL ){ + return m_pDLL->InRead(pData, Len); + } + int i; + + if( !m_InOpen ){ + m_Error = 1; + return FALSE; + } + if( m_InOver ){ + m_Error = 1; + InClose(); + return FALSE; + } + + ::EnterCriticalSection(&m_InCS); + if( !m_InBC ){ // ‚Ü‚¾ƒf[ƒ^‚ª‘¶Ý‚µ‚È‚¢Žž + m_InWait++; + ::LeaveCriticalSection(&m_InCS); + // ƒoƒbƒtƒ@‚Ƀf[ƒ^‚ª—­‚Ü‚é‚܂ő҂ + if( ::WaitForSingleObject( m_InEvent, WAVE_TIMEOUT_EVENT ) != WAIT_OBJECT_0 ){ + m_Error = 1; + InClose(); + return FALSE; + } + } + else { + ::LeaveCriticalSection(&m_InCS); + } + // ƒf[ƒ^‚ð•‚“®­”“_‚ɕϊ· + LPWAVEHDR hp = m_pInBuff[m_InRP]; + if( m_IWFX.wBitsPerSample == 16 ){ // 16bits + SHORT *rp = (SHORT *)hp->lpData; + if( m_IWFX.nChannels == 2 ){ + if( m_SoundStereo == 1 ){ // Left + for( i = 0; i < Len; i++, pData++ ){ + *pData = double(*rp++); + rp++; + } + } + else { // Right + for( i = 0; i < Len; i++, pData++ ){ + rp++; + *pData = double(*rp++); + } + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + *pData = double(*rp++); + } + } + } + else { // 8bits + union { + struct { + BYTE low; + BYTE high; + }bd; + SHORT wd; + }data; + data.bd.low = 0; + BYTE *rp = (BYTE *)hp->lpData; + if( m_IWFX.nChannels == 2 ){ + if( m_SoundStereo == 1 ){ // Left + for( i = 0; i < Len; i++, pData++ ){ + data.bd.high = BYTE((*rp++) - 128); + *pData = double(data.wd); + rp++; + } + } + else { // Right + for( i = 0; i < Len; i++, pData++ ){ + rp++; + data.bd.high = BYTE((*rp++) - 128); + *pData = double(data.wd); + } + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + data.bd.high = BYTE((*rp++) - 128); + *pData = double(data.wd); + } + } + } + hp->dwBytesRecorded = NULL; + ::waveInAddBuffer(m_hin, hp, sizeof(WAVEHDR)); + m_InBC--; // ‚P–½—߂œWŠJ‚³‚ê‚é‚̂ŠCriticalSection ‚Í•s—v + m_InRP++; + if( m_InRP >= m_InFifoSize){ + m_InRP = 0; + } + return TRUE; +} +//--------------------------------------------------------------------------- +//void CALLBACK WaveProc(hWave, uMsg, dwInstance, dwParam1, dwParam2) +// +//HWAVE hWave; /* ƒEƒF[ƒuƒtƒH[ƒ€ ƒfƒoƒCƒX‚̃nƒ“ƒhƒ‹ */ +//UINT uMsg; /* ‘—‚郃bƒZ[ƒW */ +//DWORD dwInstance; /* ƒCƒ“ƒXƒ^ƒ“ƒX ƒf[ƒ^ */ +//DWORD dwParam1; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +//DWORD dwParam2; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +void CALLBACK WaveInProc(HWAVE m_hin, UINT uMsg, CWave* pWave, DWORD dwParam1, DWORD dwParam2 ) +{ + if( uMsg == MM_WIM_DATA ){ + ::EnterCriticalSection(&pWave->m_InCS); + pWave->m_InBC++; + pWave->m_InWP++; + if( pWave->m_InWP >= pWave->m_InFifoSize ) pWave->m_InWP = 0; + if( pWave->m_InBC > pWave->m_InFifoSize ) pWave->m_InOver = TRUE; + if(pWave->m_InWait){ + pWave->m_InWait--; + ::SetEvent(pWave->m_InEvent); + } + ::LeaveCriticalSection(&pWave->m_InCS); + } +} +//--------------------------------------------------------------------------- +// ƒTƒEƒ“ƒhƒJ[ƒh‚Ìo—͂ł̃I[ƒvƒ“ +// WFX.wFormatTag = WAVE_FORMAT_PCM; +// WFX.nChannels = 1; +// WFX.wBitsPerSample = 16; +// WFX.nSamplesPerSec = 11025; +// WFX.nBlockAlign = WORD(WFX.nChannels *(WFX.wBitsPerSample/8)); +// WFX.nAvgBytesPerSec = WFX.nBlockAlign * WFX.nSamplesPerSec; +// WFX.cbSize = 0; +BOOL __fastcall CWave::OutOpen(LPWAVEFORMATEX pWFX, UINT IDDevice, DWORD Size) +{ + if( m_pDLL ){ + m_OutOpen = m_pDLL->OutOpen(pWFX->nSamplesPerSec, Size); + if( !m_OutOpen ) PumpMessages(); + return m_OutOpen; + } + if( m_OutOpen ) OutAbort(); + m_Error = 0; + m_OutBCC = 0x7fffffff; + m_OutWait = FALSE; + m_OutUnder = FALSE; + m_OutWP = m_OutRP = m_OutBC = 0; + m_OWFX = *pWFX; + m_OutBuffSize = Size * (m_OWFX.wBitsPerSample/8) * m_OWFX.nChannels; + m_OutMemSize = sizeof(WAVEHDR) + m_OutBuffSize; + if( m_OutMemSize & 3 ) m_OutMemSize += 4 - (m_OutMemSize & 3); + m_OutAllocSize = m_OutMemSize * m_OutFifoSize; + m_OutEvent = ::CreateEvent(NULL, FALSE,FALSE,NULL); + if( (m_Error = ::waveOutOpen( &m_hout, IDDevice , pWFX, (DWORD)WaveOutProc, (DWORD)this, CALLBACK_FUNCTION ) ) != MMSYSERR_NOERROR ){ + OutAbort(); + return FALSE; + } + if( (m_Error = ::waveOutPause(m_hout))!= MMSYSERR_NOERROR ){ + OutAbort(); + return FALSE; + } + // ƒoƒbƒtƒ@[‚Ì€”õ + m_pOutBase = new char[m_OutAllocSize]; + ::VirtualLock(m_pOutBase, m_OutAllocSize); + memset(m_pOutBase, 0, m_OutAllocSize); + LPSTR p = m_pOutBase; + for(int i = 0; i < m_OutFifoSize; i++, p += m_OutMemSize ){ + m_pOutBuff[i] = (WAVEHDR *)p; + ((WAVEHDR *)p)->dwBufferLength = m_OutBuffSize; + ((WAVEHDR *)p)->dwFlags = 0; + ((WAVEHDR *)p)->dwUser = NULL; + ((WAVEHDR *)p)->dwLoops = NULL; + ((WAVEHDR *)p)->lpData = p + sizeof(WAVEHDR); + if( (m_Error = ::waveOutPrepareHeader(m_hout, (WAVEHDR *)p, sizeof(WAVEHDR)) ) != MMSYSERR_NOERROR ){ + OutAbort(); + return FALSE; + } + } + m_OutOpen = TRUE; + m_OutFirst = TRUE; + return TRUE; +} +#if 0 +//--------------------------------------------------------------------------- +DWORD __fastcall CWave::GetOutVolume(void) +{ + if( !m_OutOpen ){ + return 0x8000; + } + DWORD vol; + ::waveOutGetVolume(m_hout, &vol); + return vol; +} +//--------------------------------------------------------------------------- +BOOL __fastcall CWave::SetOutVolume(DWORD vol) +{ + if( !m_OutOpen ){ + return FALSE; + } + ::waveOutSetVolume(m_hout, vol); + return TRUE; +} +#endif +//--------------------------------------------------------------------------- +BOOL __fastcall CWave::OutWrite(double *pData, int Len) +{ + if( m_pDLL ){ + return m_pDLL->OutWrite(pData, Len); + } + if( !Len ) return 0; + int i; + if( !m_OutOpen ){ + m_Error = 1; + return FALSE; + } + if( m_OutUnder ){ + m_Error = 1; + OutAbort(); + return FALSE; + } + + // ‘—Mƒoƒbƒtƒ@‹ó‚«‘Ò‚¿ + EnterCriticalSection(&m_OutCS); + if( m_OutBC >= m_OutFifoSize ){ + m_OutWait++; + ::LeaveCriticalSection(&m_OutCS); + if( ::WaitForSingleObject( m_OutEvent, WAVE_TIMEOUT_EVENT ) != WAIT_OBJECT_0 ){ + m_Error = 2; + OutAbort(); + return FALSE; + } + } + else { + ::LeaveCriticalSection(&m_OutCS); + } + + // ƒf[ƒ^‚̕ϊ· + LPWAVEHDR hp = m_pOutBuff[m_OutWP]; + if(m_OWFX.wBitsPerSample == 16){ // 16bits + SHORT *wp = (SHORT *)hp->lpData; + if( m_OWFX.nChannels == 2 ){ + for( i = 0; i < Len; i++, pData++ ){ + *wp++ = (SHORT)(*pData); + *wp++ = (SHORT)(*pData); + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + *wp++ = (SHORT)(*pData); + } + } + } + else { // 8bits + BYTE *wp = (BYTE *)hp->lpData; + union { + struct { + BYTE low; + BYTE high; + }bd; + SHORT wd; + }data; + if( m_OWFX.nChannels == 2 ){ + for( i = 0; i < Len; i++, pData++ ){ + data.wd = (SHORT)((*pData) + 32768); + *wp++ = data.bd.high; + *wp++ = data.bd.high; + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + data.wd = (SHORT)((*pData) + 32768); + *wp++ = data.bd.high; + } + } + } + ::waveOutWrite(m_hout, hp, sizeof(WAVEHDR) ); + m_OutBC++; // ‚P–½—߂œWŠJ‚³‚ê‚é‚̂ŠCriticalSection ‚Í•s—v + if( m_OutFirst ){ + if( (m_OutBC >= 8) || (m_OutBC >= (m_OutFifoSize-1)) ){ + m_OutFirst = FALSE; + ::waveOutRestart( m_hout ); + } + } + m_OutWP++; + if( m_OutWP >= m_OutFifoSize){ + m_OutWP = 0; + } + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall CWave::OutFlush() +{ + if( m_pDLL ){ + m_pDLL->OutFlush(); + return; + } + if(m_hout != NULL){ + // ƒoƒbƒtƒ@‘—M‘Ò‚¿ + while(1){ + ::EnterCriticalSection(&m_OutCS); + if( m_OutBC > 0 ){ // –¢‘—oƒf[ƒ^‚ª‘¶Ý‚·‚éê‡ + m_OutWait++; + ::LeaveCriticalSection(&m_OutCS); + if( ::WaitForSingleObject( m_OutEvent, WAVE_TIMEOUT_EVENT ) != WAIT_OBJECT_0 ){ + m_Error = 2; + break; + } + } + else { + ::LeaveCriticalSection(&m_OutCS); + break; + } + } + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::OutAbort() +{ + if( m_pDLL ){ + m_pDLL->OutAbort(); + m_OutOpen = FALSE; + PumpMessages(); + return; + } + if(m_hout != NULL){ + ::waveOutReset(m_hout); + ::Sleep(1); // for the timing + // ƒoƒbƒtƒ@‚̉ð•ú + if( m_pOutBase != NULL ){ + for(int i = 0; i < m_OutFifoSize; i++ ){ + if( m_pOutBuff[i] != NULL ){ + if( m_pOutBuff[i]->dwFlags & WHDR_PREPARED ){ + ::waveOutUnprepareHeader(m_hout, m_pOutBuff[i], sizeof(WAVEHDR)); + } + } + } + } + ::waveOutClose(m_hout); + m_hout = NULL; + if( m_pOutBase != NULL ){ + ::VirtualUnlock(m_pOutBase, m_OutAllocSize); + delete[] m_pOutBase; + m_pOutBase = NULL; + } + } + if(m_OutEvent != NULL){ + ::CloseHandle(m_OutEvent); + m_OutEvent = NULL; + } + m_OutOpen = FALSE; +} +//--------------------------------------------------------------------------- +//void CALLBACK WaveProc(hWave, uMsg, dwInstance, dwParam1, dwParam2) +// +//HWAVE hWave; /* ƒEƒF[ƒuƒtƒH[ƒ€ ƒfƒoƒCƒX‚̃nƒ“ƒhƒ‹ */ +//UINT uMsg; /* ‘—‚郃bƒZ[ƒW */ +//DWORD dwInstance; /* ƒCƒ“ƒXƒ^ƒ“ƒX ƒf[ƒ^ */ +//DWORD dwParam1; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +//DWORD dwParam2; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +void CALLBACK WaveOutProc(HWAVE m_hout, UINT uMsg, CWave* pWave, DWORD dwParam1, DWORD dwParam2 ) +{ + if( uMsg == WOM_DONE ){ + EnterCriticalSection(&pWave->m_OutCS); + pWave->m_OutBCC--; + pWave->m_OutBC--; + pWave->m_OutRP++; + if( pWave->m_OutRP >= pWave->m_OutFifoSize) pWave->m_OutRP = 0; + if( !pWave->m_OutBC ) pWave->m_OutUnder = TRUE; + if(pWave->m_OutWait){ + pWave->m_OutWait--; + SetEvent(pWave->m_OutEvent); + } + LeaveCriticalSection(&pWave->m_OutCS); + } +} + +//--------------------------------------------------------------------------- +int __fastcall CWave::GetInBC(void) +{ + if( m_pDLL ){ + return m_pDLL->GetInBC(); + } + else { + return m_InBC; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::GetOutBC(void) +{ + if( m_pDLL ){ + return m_pDLL->GetOutBC(); + } + else { + return m_OutBC; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::GetOutBCC(void) +{ + if( m_pDLL ){ + return m_pDLL->GetOutBCC(); + } + else { + return m_OutBCC; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::SetOutBCC(int count) +{ + if( m_pDLL ){ + m_pDLL->SetOutBCC(count); + } + else { + m_OutBCC = count; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::IsInBufCritical(void) +{ + if( m_pDLL ){ + return m_pDLL->IsInBufCritical(); + } + else { + return ( m_InBC >= (m_InFifoSize/2) ) ? 1 : 0; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::IsOutBufCritical(void) +{ + if( m_pDLL ){ + return m_pDLL->IsOutBufCritical(); + } + else { + return (m_OutBC <= (m_OutFifoSize/2)) ? 1 : 0; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::IsOutBufFull(void) +{ + if( m_pDLL ){ + return m_pDLL->IsOutBufFull(); + } + else { + return (m_OutBC >= m_OutFifoSize) ? 1 : 0; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::SetPTT(LONG tx) +{ + if( m_pDLL ) m_pDLL->SetPTT(tx); +} +//--------------------------------------------------------------------------- +int __fastcall CWave::GetTimeout(void) +{ + if( m_pDLL ){ + return m_pDLL->GetTimeout(); + } + else { + return 5000; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::UpdateDevice(int ID) +{ + if( ID == -2 ){ + if( (m_pDLL == NULL) || m_pDLL->IsNameChange() ){ + if( m_pDLL ) delete m_pDLL; + m_pDLL = new CXWave(sys.m_SoundMMW.c_str()); + } + } + else if( m_pDLL != NULL ){ + delete m_pDLL; + m_pDLL = NULL; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::PumpMessages(void) +{ + if( m_pDLL ){ + m_pDLL->PumpMessages(); + } +} + + + +//*************************************************************************** +// CXWave class +//--------------------------------------------------------------------------- +__fastcall CXWave::CXWave(LPCSTR pName) +{ + m_ItemName = pName; + + char Name[MAX_PATH]; + if( !*GetEXT(pName) ){ + wsprintf(Name, "%s.mmw", pName); + pName = Name; + } + + m_hLib = ::LoadLibrary(pName); + if( m_hLib ){ + + fmmwPumpMessages = PROC(mmwPumpMessages); + fmmwSetPTT = PROC(mmwSetPTT); + fmmwGetTimeout = PROC(mmwGetTimeout); + + fmmwInOpen = PROC(mmwInOpen); + fmmwInClose = PROC(mmwInClose); + fmmwInRead = PROC(mmwInRead); + + fmmwGetInExist = PROC(mmwGetInExist); + fmmwIsInCritical = PROC(mmwIsInCritical); + + fmmwOutOpen = PROC(mmwOutOpen); + fmmwOutAbort = PROC(mmwOutAbort); + fmmwOutFlush = PROC(mmwOutFlush); + fmmwOutWrite = PROC(mmwOutWrite); + + fmmwIsOutCritical = PROC(mmwIsOutCritical); + fmmwIsOutFull = PROC(mmwIsOutFull); + fmmwGetOutRemaining = PROC(mmwGetOutRemaining); + fmmwGetOutCounter = PROC(mmwGetOutCounter); + fmmwSetOutCounter = PROC(mmwSetOutCounter); + + + if( !m_hLib ){ + FreeLib(); + } + } +} +//--------------------------------------------------------------------------- +__fastcall CXWave::~CXWave(void) +{ + if( m_hLib ){ + fmmwOutAbort(); + fmmwInClose(); + } + FreeLib(); +} +//--------------------------------------------------------------------------- +FARPROC __fastcall CXWave::GetProc(LPCSTR pName) +{ + if( !m_hLib ) return NULL; + + FARPROC fn = ::GetProcAddress(m_hLib, pName+1); + if( fn == NULL ){ + fn = ::GetProcAddress(m_hLib, pName); + if( fn == NULL ) FreeLib(); + } + return fn; +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::FreeLib(void) +{ + if( m_hLib ){ + FreeLibrary(m_hLib); + m_hLib = NULL; + } +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::IsNameChange(void) +{ + return strcmpi(m_ItemName.c_str(), sys.m_SoundMMW.c_str()); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::PumpMessages(void) +{ + if( !IsLib() ) return; + + fmmwPumpMessages(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::InOpen(int sampfreq, int size) +{ + if( !IsLib() ) return FALSE; + + return fmmwInOpen(sampfreq, size); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::InClose(void) +{ + if( !IsLib() ) return; + + fmmwInClose(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::InRead(double *p, int len) +{ + if( !IsLib() ) return FALSE; + + int r = fmmwInRead(m_InBuff); + if( r ){ + SHORT *s = m_InBuff; + for( int i = 0; i < len; i++ ){ + *p++ = *s++; + } + } + return r; +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetInBC(void) +{ + if( !IsLib() ) return 0; + return fmmwGetInExist(); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::IsInBufCritical(void) +{ + if( !IsLib() ) return 0; + return fmmwIsInCritical(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::OutOpen(int sampfreq, int size) +{ + if( !IsLib() ) return FALSE; + return fmmwOutOpen(sampfreq, size); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::OutFlush(void) +{ + if( !IsLib() ) return; + fmmwOutFlush(); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::OutAbort(void) +{ + if( !IsLib() ) return; + fmmwOutAbort(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::OutWrite(double *p, int len) +{ + if( !IsLib() ) return FALSE; + SHORT *t = m_OutBuff; + for( int i = 0; i < len; i++ ){ + *t++ = *p++; + } + return fmmwOutWrite(m_OutBuff); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetOutBC(void) +{ + if( !IsLib() ) return 0; + return fmmwGetOutRemaining(); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetOutBCC(void) +{ + if( !IsLib() ) return 0; + return fmmwGetOutCounter(); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::SetOutBCC(int count) +{ + if( !IsLib() ) return; + fmmwSetOutCounter(count); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::IsOutBufCritical(void) +{ + if( !IsLib() ) return 0; + return fmmwIsOutCritical(); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::IsOutBufFull(void) +{ + if( !IsLib() ) return 0; + return fmmwIsOutFull(); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::SetPTT(int tx) +{ + if( !IsLib() ) return; + fmmwSetPTT(tx); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetTimeout(void) +{ + if( !IsLib() ) return 200; + return fmmwGetTimeout(); +} +//--------------------------------------------------------------------------- + + diff --git a/Wave.h b/Wave.h new file mode 100644 index 0000000..488f3b4 --- /dev/null +++ b/Wave.h @@ -0,0 +1,191 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef WAVE_H +#define WAVE_H +//--------------------------------------------------------------------------- +#include +#include "mmw.h" +#include "ComLib.h" +//--------------------------------------------------------------------------- +#ifndef PROC +#define PROC(Key) ((t##Key)GetProc("_" #Key)) +#endif +//--------------------------------------------------------------------------- +class CXWave +{ +private: + AnsiString m_ItemName; + //HANDLE m_hLib; + HINSTANCE m_hLib; //ja7ude 0522 + + SHORT m_InBuff[8192]; + SHORT m_OutBuff[8192]; + + tmmwPumpMessages fmmwPumpMessages; + tmmwGetTimeout fmmwGetTimeout; + tmmwSetPTT fmmwSetPTT; + + tmmwInOpen fmmwInOpen; + tmmwInClose fmmwInClose; + tmmwInRead fmmwInRead; + + tmmwGetInExist fmmwGetInExist; + tmmwIsInCritical fmmwIsInCritical; + + tmmwOutOpen fmmwOutOpen; + tmmwOutAbort fmmwOutAbort; + tmmwOutFlush fmmwOutFlush; + tmmwOutWrite fmmwOutWrite; + + tmmwIsOutCritical fmmwIsOutCritical; + tmmwIsOutFull fmmwIsOutFull; + tmmwGetOutRemaining fmmwGetOutRemaining; + tmmwGetOutCounter fmmwGetOutCounter; + tmmwSetOutCounter fmmwSetOutCounter; + +private: + FARPROC __fastcall GetProc(LPCSTR pName); + void __fastcall FreeLib(void); + +public: + __fastcall CXWave(LPCSTR pName); + __fastcall ~CXWave(void); + inline BOOL __fastcall IsLib(void){return m_hLib != NULL;}; + BOOL __fastcall IsNameChange(void); +public: + BOOL __fastcall InOpen(int sampfreq, int size); + void __fastcall InClose(void); + BOOL __fastcall InRead(double *p, int len); + + int __fastcall GetInBC(void); + int __fastcall IsInBufCritical(void); + + BOOL __fastcall OutOpen(int sampfreq, int size); + void __fastcall OutFlush(void); + void __fastcall OutAbort(void); + BOOL __fastcall OutWrite(double *p, int len); +// inline void __fastcall OutClose(void){OutFlush(); OutAbort();}; + + int __fastcall GetOutBC(void); + int __fastcall GetOutBCC(void); + void __fastcall SetOutBCC(int count); + int __fastcall IsOutBufCritical(void); + int __fastcall IsOutBufFull(void); + + void __fastcall SetPTT(int tx); + int __fastcall GetTimeout(void); + void __fastcall PumpMessages(void); +}; +//--------------------------------------------------------------------------- +#define WAVE_TIMEOUT_EVENT 2000 // ƒoƒbƒtƒ@ƒŠƒNƒGƒXƒg‚̃^ƒCƒ€ƒAƒEƒg +#define WAVE_FIFO_MAX 32 // zŠÂƒoƒbƒtƒ@‚ÌÅ‘åŒÂ” +//--------------------------------------------------------------------------- +class CWave +{ + friend void CALLBACK WaveInProc(HWAVE m_hin, UINT uMsg, CWave* pWave, DWORD dwParam1, DWORD dwParam2 ); + friend void CALLBACK WaveOutProc(HWAVE m_hout, UINT uMsg, CWave* pWave, DWORD dwParam1, DWORD dwParam2 ); + +public: + int m_InFifoSize; + int m_OutFifoSize; + int m_SoundStereo; + +private: + LPWAVEHDR m_pInBuff[WAVE_FIFO_MAX]; // “ü—̓oƒbƒtƒ@ + LPWAVEHDR m_pOutBuff[WAVE_FIFO_MAX]; // o—̓oƒbƒtƒ@ + WAVEFORMATEX m_OWFX; // o—̓tƒH[ƒ}ƒbƒg + WAVEFORMATEX m_IWFX; // “ü—̓tƒH[ƒ}ƒbƒg + + CRITICAL_SECTION m_InCS; + CRITICAL_SECTION m_OutCS; + + HANDLE m_InEvent; + HANDLE m_OutEvent; + BOOL m_InWait; + BOOL m_InOver; + BOOL m_OutWait; + BOOL m_OutUnder; + + int m_InWP; + int m_InRP; + + int m_OutWP; + int m_OutRP; + + int m_Error; + BOOL m_InOpen; + BOOL m_OutOpen; + + LPSTR m_pInBase; + LPSTR m_pOutBase; + int m_InBuffSize; + int m_InMemSize; + int m_InAllocSize; + int m_OutBuffSize; + int m_OutMemSize; + int m_OutAllocSize; + BOOL m_OutFirst; + //HWAVE m_hin; + //HWAVE m_hout; + HWAVEIN m_hin; //ja7ude 0522 + HWAVEOUT m_hout; + + volatile int m_InBC; + volatile int m_OutBC; + volatile int m_OutBCC; + + CXWave *m_pDLL; +public: + __fastcall CWave(void); + __fastcall ~CWave(); +// BOOL __fastcall IsFormatSupported(LPWAVEFORMATEX pWFX, UINT IDDevice); + BOOL __fastcall InOpen(LPWAVEFORMATEX pWFX, UINT IDDevice, DWORD Size); + inline __fastcall BOOL IsInOpen(){return m_InOpen;}; + BOOL __fastcall InRead(double *pData, int Len); + void __fastcall InClose(); + BOOL __fastcall OutOpen(LPWAVEFORMATEX pWFX, UINT IDDevice, DWORD Size); + inline __fastcall BOOL IsOutOpen(){return m_OutOpen;}; + BOOL __fastcall OutWrite( double *pData, int Len); + void __fastcall OutFlush(); + void __fastcall OutAbort(); + void __fastcall OutClose(){OutFlush();OutAbort();}; +// DWORD __fastcall GetOutVolume(void); +// BOOL __fastcall SetOutVolume(DWORD vol); + + int __fastcall GetInBC(void); + int __fastcall GetOutBC(void); + int __fastcall GetOutBCC(void); + void __fastcall SetOutBCC(int count); + + inline int __fastcall IsInBufNull(void){return !GetInBC();}; + int __fastcall IsInBufCritical(void); + int __fastcall IsOutBufCritical(void); + int __fastcall IsOutBufFull(void); + + void __fastcall SetPTT(LONG tx); + int __fastcall GetTimeout(void); + void __fastcall UpdateDevice(int ID); + void __fastcall PumpMessages(void); + + +}; +//--------------------------------------------------------------------------- +#endif + diff --git a/_BAK.MDT b/_BAK.MDT new file mode 100644 index 0000000000000000000000000000000000000000..e8d15f358482d5013820c9fa14ed92f8debb29de GIT binary patch literal 240 dcmebE_3?LCaB&QAR0vBgGSo9LkYX6l003sX1l<4t literal 0 HcmV?d00001 diff --git a/aa6yq.pro b/aa6yq.pro new file mode 100644 index 0000000..8b71e78 --- /dev/null +++ b/aa6yq.pro @@ -0,0 +1,82 @@ +[Define1024] +Name=JE3HHT +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=0 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +LimitAGC=1 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXLoop=1 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=0 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlms=0 +RXlmsDelay=24 +RXlmsMU2=1.000000e-03 +RXlmsGM=9.998000e-01 +RXlmsAGC=1 +RXlmsInv=0 +RXlmsTAP=512 +RXNotchTAP=192 +RXlmsBPF=0 +RXlmsType=1 +RXlmsNotch=2199 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=1 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=3 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.500000e+01 +Smooz=3.000000e+02 +Tap=512 +IIRBW=60 +FFTTones=4 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +AA6YQ.Version=2 +AA6YQ.Enabled=1 +AA6YQ.TapsBPF=512 +AA6YQ.WidthBPF=3.500000e+01 +AA6YQ.TapsBEF=256 +AA6YQ.WidthBEF=1.500000e+01 +AA6YQ.afcERR=5.000000e+00 + diff --git a/country.cpp b/country.cpp new file mode 100644 index 0000000..c6880f8 --- /dev/null +++ b/country.cpp @@ -0,0 +1,350 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +/************************************************************************ + ƒJƒ“ƒgƒŠŽ¯•ʈ—ƒ‚ƒWƒ…[ƒ‹ + + Copyright (C) JE3HHT 1993-2000. +************************************************************************/ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ComLib.h" +#include "Country.h" +#include "string.h" +#include "stdlib.h" + +CCountry Cty; +/*#$% +======================================================== + •¶Žš—ñ‚©‚çŽw’è‚Ì•¶Žš‚ðƒNƒŠƒbƒv‚·‚é +-------------------------------------------------------- + s : •¶Žš—ñ‚̃|ƒCƒ“ƒ^ +-------------------------------------------------------- +-------------------------------------------------------- +======================================================== +*/ +static char *_delchr(char *s, char c) +{ + char *p; + + for( p = s; *p; p++ ){ + if( *p == c ){ + strcpy(p, p+1); + p--; + } + } + return(s); +} + +/*#$% +====================================================== + ˆÙ‚È‚é•¶Žš—ñ‚̃|ƒCƒ“ƒ^‚ð•Ô‚· +------------------------------------------------------ + n : ”͈͔‚ÌŠi”[ˆÊ’u‚̃|ƒCƒ“ƒ^ + t : ƒvƒŠƒtƒBƒbƒNƒX‚̃|ƒCƒ“ƒ^ + p : ƒvƒŠƒtƒBƒbƒNƒX‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static LPSTR lcmpp(int *n, LPSTR s, LPSTR p) +{ + LPSTR t; + + for( t = s; *p && *t; p++, t++ ){ + if( *p != *t ){ + *n = (*p - *t) + 1; + if( *n > 26 ) *n = 26; + return(t); + } + } + *n = 0; + return(s); +} + +/*#$% +====================================================== + •¶Žš—ñ‚Ì”äŠr‚ðs‚¤ +------------------------------------------------------ + t : ‘ÎÛ•¶Žš—ñ + s : Šî€•¶Žš—ñ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static int strcmpv(LPCSTR t, LPCSTR s) +{ + for( ; *s; s++, t++ ){ + if( *t != *s ) return(1); + } + return(0); +} + +static int svf; /* Š®‘Sˆê’vƒtƒ‰ƒO */ +/*#$% +================================================================ + ƒvƒŠƒtƒBƒbƒNƒXŒŸõ—p•¶Žš—ñ”äŠr +---------------------------------------------------------------- +---------------------------------------------------------------- +---------------------------------------------------------------- +================================================================ +*/ +static int _strcmp(LPCSTR t, LPCSTR v) +{ +/* printf( "<%s>-<%s>\n", v, t ); */ + for( ; *v; v++, t++ ){ + if( *v == '*' ){ + for( v++; *t && strcmpv(t, v); t++ ); + if( !*t ) return(1); + } + else if( *v == '\\' ){ + if( *t ) return(1); + } + else if( (*v!='?') && (*v != *t) ){ + return(1); + } + } + if( svf && *t ) return(1); + return(0); +} + +/*#$% +====================================================== + ƒRƒ“ƒXƒgƒ‰ƒNƒ^[ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +CCountry::CCountry() +{ + Init(); +} + +CCountry::~CCountry(void) +{ + Free(); +} + +/*#$% +====================================================== + ‚c‚w‚b‚b’è‹`—̈æ‚ðŠJ•ú‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CCountry::Init(void) +{ + cmax = 0; + memset(ctl, 0, sizeof(ctl)); +} + +/*#$% +====================================================== + ‚c‚w‚b‚b’è‹`—̈æ‚ðŠJ•ú‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CCountry::Free(void) +{ + int i; + CTL *cp; + for( cp = ctl, i = 0; i < cmax; i++, cp++ ){ + if( cp->Name != NULL ) delete[] cp->Name; + if( cp->Code != NULL ) delete[] cp->Code; + if( cp->QTH != NULL ) delete[] cp->QTH; + if( cp->Cont != NULL ) delete[] cp->Cont; + if( cp->TD != NULL ) delete[] cp->TD; + } + Init(); +} + + +/*#$% +====================================================== + ƒvƒŠƒtƒBƒbƒNƒX‚©‚çƒJƒ“ƒgƒŠƒR[ƒh‚𓾂é +------------------------------------------------------ + p : ƒvƒŠƒtƒBƒbƒNƒX‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + ƒJƒ“ƒgƒŠƒR[ƒh +------------------------------------------------------ +====================================================== +*/ +int CCountry::GetNo(LPCSTR s) +{ + LPSTR p, pb, t, pp; + int i; + int j; + + if( !*s ) return(0); + for( i = 0; i < cmax; i++ ){ + strcpy(wbf, ctl[i].Code); + for( p = wbf; *p; ){ + p = StrDlm(pb, p, ','); + if( (t = strchr(pb, '-')) != NULL ){ + *t = 0; + t++; + if( (*pb == *s) || (*pb != *t) ){ + for( pp = lcmpp(&j, pb, t); j; (*pp)++, j-- ){ + if( !_strcmp(s, pb) ) return(i+1); + } + } + } + else { + if( !_strcmp(s, pb) ) return(i+1); + } + } + } + return(0); +} + +/*#$% +====================================================== + ƒR[ƒ‹ƒTƒCƒ“‚©‚çƒ|ƒCƒ“ƒ^‚𓾂é +------------------------------------------------------ + p : ƒR[ƒ‹ƒTƒCƒ“‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + ƒ|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +int CCountry::GetNoP(LPCSTR p) +{ + int n; + + svf = 1; + if( (n = GetNo(p))!=0 ) return(n); + svf = 0; + if( (n = GetNo(p))!=0 ) return(n); + return(0); +} + +/*#$% +====================================================== + ƒR[ƒ‹ƒTƒCƒ“‚©‚çƒJƒ“ƒgƒŠ–¼‚𓾂é +------------------------------------------------------ + p : ƒR[ƒ‹ƒTƒCƒ“‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + ƒJƒ“ƒgƒŠ–¼‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +LPCSTR CCountry::GetCountry(LPCSTR p) +{ + if( !cmax ) return ""; + int n; + + if( !(*p) ) return("?"); + if( ((n = GetNoP(p))!=0) && (ctl[n-1].Name != NULL) ){ + strcpy(wbf, ctl[n-1].Name); + return(wbf); + } + else { + return("?"); + } +} + +/*#$% +====================================================== + ƒR[ƒ‹ƒTƒCƒ“‚©‚ç‘å—¤–¼‚𓾂é +------------------------------------------------------ + p : ƒR[ƒ‹ƒTƒCƒ“‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + ƒJƒ“ƒgƒŠ–¼‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +LPCSTR CCountry::GetCont(LPCSTR p) +{ + if( !cmax ) return ""; + int n; + + if( !(*p) ) return("?"); + if( ((n = GetNoP(p))!=0) && (ctl[n-1].Cont != NULL) ){ + strcpy(wbf, ctl[n-1].Cont); + return(wbf); + } + else { + return("?"); + } +} + +/*#$% +====================================================== + ‚c‚w‚b‚b’è‹`ƒtƒ@ƒCƒ‹‚ð“ǂݞ‚Þ +------------------------------------------------------ + fm : ƒtƒ@ƒCƒ‹–¼‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CCountry::Load(LPCSTR fm) +{ + FILE *fp; + LPCSTR p; + char hbf[512]; + + Free(); + if( (fp = fopen(fm, "rt"))!=NULL ){ + while( !feof(fp) ){ + if( fgets(hbf, 512, fp)!=NULL ){ + if( hbf[0] == '$' ) break; + ClipLF(hbf); + _delchr(hbf, TAB); + if( hbf[0] != '!' ){ + p = StrDlmCpy(wbf, hbf, ';', 512); + clipsp(wbf); + ctl[cmax].Name = StrDupe(wbf); + if( p != NULL ){ + p = StrDlmCpy(wbf, p, ';', 512); + clipsp(wbf); + ctl[cmax].Code = StrDupe(wbf); + } + if( p != NULL ){ + p = StrDlmCpy(wbf, p, ';', 512); + clipsp(wbf); + ctl[cmax].QTH = StrDupe(wbf); + } + if( p != NULL ){ + p = StrDlmCpy(wbf, p, ';', 512); + clipsp(wbf); + ctl[cmax].Cont = StrDupe(wbf); + } + if( p != NULL ){ + StrDlmCpy(wbf, p, ';', 512); + clipsp(wbf); + ctl[cmax].TD = StrDupe(wbf); + } + cmax++; + if( cmax >= CTMAX ) break; + } + } + } + fclose(fp); + } + else { + WarningMB((sys.m_WinFontCharset != SHIFTJIS_CHARSET ) ? "'ARRL.DX' was not found.\r\n\r\nYou cannot use a DXCC function.\r\nThis is not a problem if you do not need it":"'ARRL.DX'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ.\r\n\r\nDXƒGƒ“ƒeƒBƒeƒB‚ÌŽ©“®”»’è‹@”\‚ÍŽg—p‚Å‚«‚Ü‚¹‚ñ."); + } +} + diff --git a/country.h b/country.h new file mode 100644 index 0000000..0d90430 --- /dev/null +++ b/country.h @@ -0,0 +1,60 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef CountryH +#define CountryH + +extern LPSTR StrDupe(LPCSTR s); + +#define CTMAX 512 +typedef struct { + LPSTR Name; + LPSTR Code; + LPSTR QTH; + LPSTR Cont; + LPSTR TD; +}CTL; + +class CCountry +{ +private: + int cmax; + CTL ctl[CTMAX]; + + char wbf[512]; +public: + CCountry(); + ~CCountry(void); + + inline CTL *GetCTL(int n){ return &ctl[n];}; + void Init(void); + void Free(void); + int GetNo(LPCSTR s); + int GetNoP(LPCSTR p); + LPCSTR GetCountry(LPCSTR p); + LPCSTR GetCont(LPCSTR p); + void Load(LPCSTR fm); + inline int IsData(void){ + return cmax; + }; +}; + +extern CCountry Cty; +#endif + diff --git a/cradio.cpp b/cradio.cpp new file mode 100644 index 0000000..0a4dc31 --- /dev/null +++ b/cradio.cpp @@ -0,0 +1,1074 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Cradio.h" +#include "ComLib.h" + +#define WAITSTAT 0 + +CRADIOPARA RADIO; +void InitRADIOPara(void) +{ + RADIO.change = 1; + strcpy(RADIO.StrPort, "NONE"); // ƒ|[ƒg‚Ì–¼‘O + RADIO.BaudRate = 4800; // ƒ{[ƒŒ[ƒg + RADIO.BitLen = 1; // 0-7Bit, 1-8Bit + RADIO.Stop = 1; // 0-1Bit, 1-2Bit + RADIO.Parity = 0; // 0-PN, 1-PE, 2-PO + RADIO.flwXON = 0; // Xon/Xoff ON + RADIO.flwCTS = 0; // CTS-RTS ON + RADIO.usePTT = 0; + RADIO.Cmdxx = 0; + RADIO.CmdInit = ""; + RADIO.CmdRx = "\\$000000000F"; + RADIO.CmdTx = "\\$000000010F\\w10"; + RADIO.ByteWait = 0; + RADIO.cmdGNR = ""; + RADIO.openGNR = 0; + + RADIO.PollType = 0; + RADIO.PollInterval = 5; + RADIO.PollOffset = 0; + RADIO.PollScan = 0; +} + +void LoadRADIOSetup(TMemIniFile *pIniFile) +{ + AnsiString as = RADIO.StrPort; + as = pIniFile->ReadString("RADIO", "PortName", as); + StrCopy(RADIO.StrPort, as.c_str(), 31); + RADIO.BaudRate = pIniFile->ReadInteger("RADIO", "BaudRate", RADIO.BaudRate); + RADIO.BitLen = pIniFile->ReadInteger("RADIO", "BitLen", RADIO.BitLen); + RADIO.Stop = pIniFile->ReadInteger("RADIO", "Stop", RADIO.Stop); + RADIO.Parity = pIniFile->ReadInteger("RADIO", "Parity", RADIO.Parity); + RADIO.flwXON = pIniFile->ReadInteger("RADIO", "flwXON", RADIO.flwXON); + RADIO.flwCTS = pIniFile->ReadInteger("RADIO", "flwCTS", RADIO.flwCTS); + RADIO.usePTT = pIniFile->ReadInteger("RADIO", "usePTT", RADIO.usePTT); + + RADIO.ByteWait = pIniFile->ReadInteger("RADIO", "ByteWait", RADIO.ByteWait); + + RADIO.Cmdxx = pIniFile->ReadInteger("RADIO", "Cmdxx", RADIO.Cmdxx); + RADIO.CmdInit = pIniFile->ReadString("RADIO", "CmdInit", RADIO.CmdInit); + RADIO.CmdRx = pIniFile->ReadString("RADIO", "CmdRx", RADIO.CmdRx); + RADIO.CmdTx = pIniFile->ReadString("RADIO", "CmdTx", RADIO.CmdTx); + + RADIO.cmdGNR = pIniFile->ReadString("RADIO", "FileGNR", RADIO.cmdGNR); + RADIO.openGNR = pIniFile->ReadInteger("RADIO", "OpenGNR", RADIO.openGNR); + + RADIO.PollType = pIniFile->ReadInteger("RADIO", "PollType", RADIO.PollType); + RADIO.PollInterval = pIniFile->ReadInteger("RADIO", "PollInterval", RADIO.PollInterval); + RADIO.PollOffset = pIniFile->ReadInteger("RADIO", "PollOffset", RADIO.PollOffset); +} +void SaveRADIOSetup(TMemIniFile *pIniFile) +{ + pIniFile->WriteString("RADIO", "PortName", RADIO.StrPort); + pIniFile->WriteInteger("RADIO", "BaudRate", RADIO.BaudRate); + pIniFile->WriteInteger("RADIO", "BitLen", RADIO.BitLen); + pIniFile->WriteInteger("RADIO", "Stop", RADIO.Stop); + pIniFile->WriteInteger("RADIO", "Parity", RADIO.Parity); + pIniFile->WriteInteger("RADIO", "flwXON", RADIO.flwXON); + pIniFile->WriteInteger("RADIO", "flwCTS", RADIO.flwCTS); + pIniFile->WriteInteger("RADIO", "usePTT", RADIO.usePTT); + + pIniFile->WriteInteger("RADIO", "ByteWait", RADIO.ByteWait); + + pIniFile->WriteInteger("RADIO", "Cmdxx", RADIO.Cmdxx); + pIniFile->WriteString("RADIO", "CmdInit", RADIO.CmdInit); + pIniFile->WriteString("RADIO", "CmdRx", RADIO.CmdRx); + pIniFile->WriteString("RADIO", "CmdTx", RADIO.CmdTx); + + pIniFile->WriteString("RADIO", "FileGNR", RADIO.cmdGNR); + pIniFile->WriteInteger("RADIO", "OpenGNR", RADIO.openGNR); + + pIniFile->WriteInteger("RADIO", "PollType", RADIO.PollType); + pIniFile->WriteInteger("RADIO", "PollInterval", RADIO.PollInterval); + pIniFile->WriteInteger("RADIO", "PollOffset", RADIO.PollOffset); +} +//--------------------------------------------------------------------------- +// ’ˆÓ: VCL ƒIƒuƒWƒFƒNƒg‚̃ƒ\ƒbƒh‚ƃvƒƒpƒeƒB‚ðŽg—p‚·‚é‚É‚Í, Synchronize +// ‚ðŽg‚Á‚½ƒƒ\ƒbƒhŒÄ‚Ño‚µ‚łȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñBŽŸ‚É—á‚ðŽ¦‚µ‚Ü‚·B +// +// Synchronize(UpdateCaption); +// +// ‚±‚±‚Å, UpdateCaption ‚ÍŽŸ‚̂悤‚É‹Lq‚Å‚«‚Ü‚·B +// +// void __fastcall CCradio::UpdateCaption() +// { +// Form1->Caption = "ƒXƒŒƒbƒh‚©‚ç‘‚«Š·‚¦‚Ü‚µ‚½"; +// } +//--------------------------------------------------------------------------- +__fastcall CCradio::CCradio(bool CreateSuspended) + : TThread(CreateSuspended) +{ + m_CreateON = FALSE; // ƒNƒŠƒGƒCƒgƒtƒ‰ƒO + m_fHnd = NULL; // ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹ + m_wHnd = NULL; // e‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + m_uMsg = WM_USER; + m_ID = 0; // ƒƒbƒZ[ƒW‚Ì‚h‚c”Ô† + m_Command = 0; // ƒXƒŒƒbƒh‚ւ̃Rƒ}ƒ“ƒh + m_TxAbort = 0; // ‘—M’†Ž~ƒtƒ‰ƒO + m_txwp = m_txrp = m_txcnt = 0; + m_PSKGNRId = 0; + m_OpenGNR = 0; + + m_PollCnt = 0; + m_rxcnt = 0; + m_FreqEvent = 0; + m_Freq[0] = 0; + m_MarkFreq = 2125; + + m_ScanAddr = 0; + m_pRadio = NULL; +} + +//--------------------------------------------------------------------------- +void __fastcall CCradio::Execute() +{ + //---- ƒXƒŒƒbƒh‚̃R[ƒh‚ð‚±‚±‚É‹Lq ---- +// Priority = tpLower; + while(1){ + if( Terminated == TRUE ){ + return; + } + if( m_Command == CRADIO_CLOSE ){ + m_Command = 0; + return; + } + if( m_CreateON == TRUE ){ + if( m_txcnt ){ + if( m_pRadio != NULL ){ + if( !(m_pRadio->GetStatus() & mmrpstatusTXBUSY) ){ + m_pRadio->PutChar(m_txbuf[m_txrp]); + m_txrp++; + if( m_txrp >= RADIO_TXBUFSIZE ){ + m_txrp = 0; + } + m_txcnt--; + } + } + else if( !TxBusy() ){ + DWORD size=0; + ::WriteFile( m_fHnd, &m_txbuf[m_txrp], 1, &size, NULL ); + if( size ){ + m_txrp++; + if( m_txrp >= RADIO_TXBUFSIZE ){ + m_txrp = 0; + } + m_txcnt--; + } + if( RADIO.ByteWait ) ::Sleep(RADIO.ByteWait); + } + ::Sleep(1); + } + else if( m_pRadio != NULL ){ + if( m_pRadio->GetStatus() & mmrpstatusFREQ ){ + long fq = m_pRadio->GetFreq(); + if( fq ) UpdateFreq(double(fq)/1e4); + } + while(m_pRadio->GetStatus() & mmrpstatusRX){ + CatchPoll(m_pRadio->GetChar()); + } + ::Sleep(10); + } + else { + BYTE dmy[256]; + while(1){ + int len = RecvLen(); + if( !len ) break; + if( len >= sizeof(dmy) ) len = sizeof(dmy); + Read(dmy, len); + if( RADIO.PollType ){ + BYTE *p = dmy; + for( ; len; p++, len-- ){ + CatchPoll(*p); + } + } + } + ::Sleep(10); + } + } + else { + ::Sleep(10); + } + } +} +//--------------------------------------------------------------------------- +/*#$% +============================================================== + ’ÊM‰ñü‚ðƒI[ƒvƒ“‚µƒXƒŒƒbƒh‚ðƒAƒNƒeƒBƒu‚É‚·‚é +-------------------------------------------------------------- +PortName : ‰ñü‚Ì–¼‘O +pCP : COMMPARA‚̃|ƒCƒ“ƒ^iƒkƒ‹‚ÌŽž‚̓fƒtƒHƒ‹ƒg‚ʼnŠú‰»j +pWnd : ƒƒbƒZ[ƒW‘—Mæ‚̃EƒCƒ“ƒhƒEƒNƒ‰ƒX‚̃|ƒCƒ“ƒ^iƒkƒ‹‚ÌŽž‚ÍÒ²ÝÌڰѳ²ÝÄÞ³j +nID : ƒf[ƒ^ŽóMŽž‚̃ƒbƒZ[ƒW‚h‚c +RBufSize : ŽóMƒoƒbƒtƒ@‚̃TƒCƒY(default=2048) +TBufSize : ‘—Mƒoƒbƒtƒ@‚̃TƒCƒY(default=2048) +-------------------------------------------------------------- +TRUE/FALSE +-------------------------------------------------------------- +============================================================== +*/ +BOOL CCradio::Open(CRADIOPARA *cp, HWND hwnd, UINT uMsg, UINT nID) +{ + if( m_CreateON == TRUE ) Close(); + m_TxAbort = FALSE; + m_PSKGNRId = 0; + m_OpenGNR = 0; + if( !strcmpi(cp->StrPort, "PSKGNR") || !strcmpi(cp->StrPort, "WD5GNR") || !strcmpi(cp->StrPort, "LOGGER")){ + m_PSKGNRId = ::RegisterWindowMessage("PSKGNRFUNC"); + m_CreateON = TRUE; + if( RADIO.openGNR && (!RADIO.cmdGNR.IsEmpty()) && (strcmpi(cp->StrPort, "LOGGER")) ){ + if( FindWindow("ThunderRT6Main", NULL) == NULL ){ + ::WinExec(RADIO.cmdGNR.c_str(), SW_HIDE); + m_OpenGNR = 1; + } + } + return m_CreateON; + } + + //AA6YQ 1.66 enable use of 2-digit com ports per http://support.microsoft.com/kb/115831/EN-US/ + char *ComPort = new char[33]; + StrCopy(ComPort,"\\\\.\\"); + StrCat(ComPort,cp->StrPort); + + m_fHnd = ::CreateFile(ComPort, GENERIC_READ | GENERIC_WRITE, + 0, NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL + ); + m_wHnd = hwnd; + m_uMsg = uMsg; + m_ID = nID; + if( m_fHnd == INVALID_HANDLE_VALUE ) goto _mmr; + // setup device buffers + if( ::SetupComm( m_fHnd, DWORD(RADIO_COMBUFSIZE), DWORD(RADIO_COMBUFSIZE) ) == FALSE ){ + ::CloseHandle(m_fHnd); +_mmr:; + m_pRadio = new CMMRadio(hwnd, uMsg); + if( m_pRadio->Open(cp->StrPort) ){ + m_CreateON = TRUE; + Priority = tpLower; + Resume(); // ƒXƒŒƒbƒh‚ÌŽÀs + return TRUE; + } + else { + delete m_pRadio; + m_pRadio = NULL; + return FALSE; + } + } + + // purge any information in the buffer + ::PurgeComm( m_fHnd, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR ); + + // set up for overlapped I/O + COMMTIMEOUTS TimeOut; + + TimeOut.ReadIntervalTimeout = 0xffffffff; + TimeOut.ReadTotalTimeoutMultiplier = 0; + TimeOut.ReadTotalTimeoutConstant = 0; + TimeOut.WriteTotalTimeoutMultiplier = 0; + TimeOut.WriteTotalTimeoutConstant = 20000; +// TimeOut.WriteTotalTimeoutConstant = 1; + if( !::SetCommTimeouts( m_fHnd, &TimeOut ) ){ + ::CloseHandle( m_fHnd ); + return FALSE; + } + ::GetCommState( m_fHnd, &m_dcb ); + m_dcb.BaudRate = cp->BaudRate; + m_dcb.fBinary = TRUE; + m_dcb.ByteSize = USHORT(cp->BitLen ? 8 : 7); + const UCHAR _tp[]={NOPARITY, EVENPARITY, ODDPARITY}; + m_dcb.Parity = _tp[cp->Parity]; + const UCHAR _ts[]={ONESTOPBIT,TWOSTOPBITS}; + m_dcb.StopBits = _ts[cp->Stop]; + if( cp->usePTT ){ + m_dcb.fRtsControl = RTS_CONTROL_DISABLE; // ‘—M‹ÖŽ~ + m_dcb.fDtrControl = DTR_CONTROL_DISABLE; // ‘—M‹ÖŽ~ + } + else { + m_dcb.fRtsControl = RTS_CONTROL_ENABLE; + } + m_dcb.fOutxCtsFlow = (cp->flwCTS && !cp->usePTT) ? TRUE : FALSE; + m_dcb.fInX = m_dcb.fOutX = cp->flwXON ? TRUE : FALSE; + m_dcb.XonChar = 0x11; + m_dcb.XoffChar = 0x13; + m_dcb.fParity = FALSE; + m_dcb.EvtChar = 0x0d; // dummy setting +// m_dcb.fTXContinueOnXoff = TRUE; + m_dcb.XonLim = USHORT(RADIO_COMBUFSIZE/4); // 1/4 of RBufSize + m_dcb.XoffLim = USHORT(RADIO_COMBUFSIZE*3/4); // 3/4 of RBufSize + m_dcb.DCBlength = sizeof( DCB ); + if( !::SetCommState( m_fHnd, &m_dcb ) ){ + ::CloseHandle( m_fHnd ); + return FALSE; + } + // get any early notifications + if( !::SetCommMask( m_fHnd, EV_RXFLAG ) ){ + ::CloseHandle(m_fHnd); + return FALSE; + } + m_CreateON = TRUE; + Priority = tpLower; + Resume(); // ƒXƒŒƒbƒh‚ÌŽÀs + return TRUE; +} +/*#$% +============================================================== + ’ÊM‰ñü‚ðƒNƒ[ƒY‚·‚é +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- + ƒXƒŒƒbƒh‚ªI—¹‚·‚é‚܂ő҂ +============================================================== +*/ +void CCradio::Close(void) +{ + if( m_CreateON == TRUE ){ + if( m_PSKGNRId ){ + if( (m_OpenGNR || RADIO.change) && RADIO.openGNR ) ::SendMessage(HWND_BROADCAST, m_PSKGNRId, 1 , 0); + m_PSKGNRId = 0; + } + else { + if( m_ID ){ + m_Command = CRADIO_CLOSE; // ƒXƒŒƒbƒhI—¹ƒRƒ}ƒ“ƒh + Priority = tpNormal; //ƒXƒŒƒbƒh‚Í’Êí‚Ì—Dæ“x‚Å‚ ‚é + WaitFor(); + } + if( m_pRadio != NULL ){ + delete m_pRadio; + m_pRadio = NULL; + } + else { + ::CloseHandle(m_fHnd); + } + } + } + m_CreateON = FALSE; + m_TxAbort = TRUE; +} +void CCradio::ReqClose(void) +{ + if( m_CreateON == TRUE ){ + if( m_PSKGNRId ){ + return; + } + else { + if( m_ID ){ + m_Command = CRADIO_CLOSE; // ƒXƒŒƒbƒhI—¹ƒRƒ}ƒ“ƒh + Priority = tpNormal; //ƒXƒŒƒbƒh‚Í’Êí‚Ì—Dæ“x‚Å‚ ‚é + } + } + } +} +void CCradio::WaitClose(void) +{ + if( m_CreateON == TRUE ){ + if( m_PSKGNRId ){ + if( (m_OpenGNR || RADIO.change) && RADIO.openGNR ) ::SendMessage(HWND_BROADCAST, m_PSKGNRId, 1 , 0); + m_PSKGNRId = 0; + } + else { + if( m_ID && m_Command ){ + WaitFor(); + } + if( m_pRadio != NULL ){ + delete m_pRadio; + m_pRadio = NULL; + } + else { + ::CloseHandle(m_fHnd); + } + } + m_CreateON = FALSE; + } + m_TxAbort = TRUE; +} +/*#$% +============================================================== + ŽóMƒoƒbƒtƒ@“à‚ÌŠi”[ƒf[ƒ^’·‚𓾂é +-------------------------------------------------------------- +-------------------------------------------------------------- + ƒf[ƒ^‚Ì’·‚³ +-------------------------------------------------------------- +============================================================== +*/ +DWORD CCradio::RecvLen(void) +{ + COMSTAT ComStat; + DWORD dwErrorFlags; + + ::ClearCommError( m_fHnd, &dwErrorFlags, &ComStat ); + return ComStat.cbInQue; +} + +/*#$% +============================================================== + ‘—MƒrƒW[‚©‚Ç‚¤‚©’²‚ׂé +-------------------------------------------------------------- +-------------------------------------------------------------- + : ‘—MƒrƒW[ó‘Ô +-------------------------------------------------------------- +============================================================== +*/ +int CCradio::TxBusy(void) +{ +#if 0 + COMSTAT ComStat; + DWORD dwErrorFlags; + + if( m_TxAbort ) return FALSE; + ClearCommError( m_fHnd, &dwErrorFlags, &ComStat ); + int f = ComStat.fRlsdHold; + if( f ) return TRUE; + if( m_dcb.fOutxCtsFlow ){ + f |= ComStat.fCtsHold; + } + if( m_dcb.fOutX ){ + f |= ComStat.fXoffHold; + } + return f ? TRUE : FALSE; +#else + COMSTAT ComStat; + DWORD dwErrorFlags; + + ::ClearCommError( m_fHnd, &dwErrorFlags, &ComStat ); + return ComStat.cbOutQue; +#endif +} + +/*#$% +============================================================== + ’ÊM‰ñü‚©‚çƒf[ƒ^‚ðŽæ‚èo‚· +-------------------------------------------------------------- +p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ +len : ƒoƒbƒtƒ@‚̃TƒCƒY +-------------------------------------------------------------- +ŽÀÛ‚ÉŽóM‚µ‚½ƒTƒCƒY +-------------------------------------------------------------- +============================================================== +*/ +DWORD CCradio::Read(BYTE *p, DWORD len) +{ + DWORD size=0; + + if( m_CreateON == TRUE ){ + ::ReadFile( m_fHnd, p, len, &size, NULL ); + } + return size; +} + +/*#$% +============================================================== + ’ÊM‰ñü‚Ƀf[ƒ^‚ð‘—M‚·‚é +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- +============================================================== +*/ +void CCradio::PutChar(char c) +{ + if( m_CreateON == TRUE ){ + if( m_PSKGNRId ) return; + if( m_txcnt < RADIO_TXBUFSIZE ){ + m_txbuf[m_txwp] = c; + m_txwp++; + if( m_txwp >= RADIO_TXBUFSIZE ) m_txwp = 0; + m_txcnt++; + } + } +} + +/*#$% +============================================================== + ’ÊM‰ñü‚Ƀf[ƒ^‚ð‘—M‚·‚é +-------------------------------------------------------------- +p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ +len : ‘—M‚·‚éƒTƒCƒY +-------------------------------------------------------------- +ŽÀÛ‚É‘—M‚µ‚½ƒTƒCƒY +-------------------------------------------------------------- +============================================================== +*/ +void CCradio::Write(void *s, DWORD len) +{ + if( m_CreateON == TRUE ){ + if( m_PSKGNRId ) return; + char *p; + for( p = (char *)s; len; len--, p++ ){ + PutChar(*p); + } + } +} + +/*#$% +============================================================== + ’ÊM‰ñü‚Ƀf[ƒ^‚ð‘—M‚·‚é +-------------------------------------------------------------- +p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ +len : ‘—M‚·‚éƒTƒCƒY +-------------------------------------------------------------- +ŽÀÛ‚É‘—M‚µ‚½ƒTƒCƒY +-------------------------------------------------------------- +============================================================== +*/ +void CCradio::OutStr(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + Write(bf, strlen(bf)); +} + +void CCradio::OutLine(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + Write(bf, strlen(bf)); + char r[] = "\r"; //JA7UDE 0428 + Write(r, 1); +} + +void CCradio::SendCommand(LPCSTR p) +{ + int c; + int f; + + for(f = 0; *p; p++){ + if( *p == '\\' ){ + f = 0; + p++; + switch(*p){ + case '$': + f = 1; + continue; + case 'x': + case 'X': + p++; + if( *p == 'x' ){ + c = RADIO.Cmdxx; + } + else { + c = htoin(p, 2); + } + p++; + break; + case 'r': + c = CR; + break; + case 'n': + c = LF; + break; + case 'w': + p++; + c = atoin(p, 2); + if( (c < 0) || (c >= 100) ) c = 100; + if( c ) ::Sleep(c * 10); + p++; + continue; + case '\\': + c = '\\'; + break; + case 'c': // comment + return; + } + } + else if( f ){ + p = SkipSpace(p); + if( *p == 'x' ){ + c = RADIO.Cmdxx; + } + else { + c = htoin(p, 2); + } + p++; + } + else { + c = *p; + } + PutChar(BYTE(c)); + } +} + +void CCradio::SetPTT(int sw) +{ + if( m_PSKGNRId ){ + ::SendMessage(HWND_BROADCAST, m_PSKGNRId, 0 , sw ? 1 : 0); + if( sw ) ::Sleep(50); + } + else { + if( sw ){ + if( m_pRadio != NULL ){ + m_pRadio->SetPTT(sw); + } + else if( RADIO.usePTT ){ + ::EscapeCommFunction(m_fHnd, SETRTS); + ::EscapeCommFunction(m_fHnd, SETDTR); + } + SendCommand(RADIO.CmdTx.c_str()); + } + else { + if( m_pRadio != NULL ){ + m_pRadio->SetPTT(sw); + } + else if( RADIO.usePTT ){ + ::EscapeCommFunction(m_fHnd, CLRRTS); + ::EscapeCommFunction(m_fHnd, CLRDTR); + } + SendCommand(RADIO.CmdRx.c_str()); + } + } +} + +//-------------------------------------------------------- +// Žü”g”‚ª•ω»‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©’²‚ׂé +int CCradio::IsFreqChange(LPCSTR pFreq) +{ + if( RADIO.PollType ){ + if( m_FreqEvent ) return 1; + if( m_Freq[0] ){ + if( strcmp(m_Freq, pFreq) ) return 1; + } + } + return 0; +} + +//-------------------------------------------------------- +// ƒ^ƒCƒ}[ˆ— +void CCradio::Timer(int tx, int interval) +{ + if( m_CreateON == TRUE ){ + if( m_PSKGNRId ) return; + if( m_pRadio != NULL ){ + if( m_pRadio->GetStatus() & mmrpstatusDEFCMD ){ + LPCSTR p; + switch(m_pRadio->GetDefCommand()){ + case 1: + p = RADIO.CmdTx.c_str(); + break; + case 2: + p = RADIO.CmdRx.c_str(); + break; + default: + p = RADIO.CmdInit.c_str(); + break; + } + SendCommand(p); + m_PollCnt = (5 + RADIO.PollInterval); + } + } + if( (!tx) && RADIO.PollType ){ + if( !m_PollCnt ){ + if( m_pRadio != NULL ) m_pRadio->Polling(); + if( m_ScanAddr ){ // ƒAƒhƒŒƒXƒXƒLƒƒƒ“ + m_PollCnt = 4; + if( m_ScanAddr <= 3 ){ + m_ScanAddr++; + } + else { + RADIO.Cmdxx++; + if( RADIO.Cmdxx >= 0x80 ){ + RADIO.Cmdxx = 0; + } + } + } + else { + m_PollCnt = (5 + RADIO.PollInterval); + } + if( interval ){ + m_PollCnt = m_PollCnt * 100 / interval; + } + switch(RADIO.PollType){ + case RADIO_POLLYAESUHF: + case RADIO_POLLFT1000D: + case RADIO_POLLFT920: + m_rxcnt = 0; + SendCommand("\\$0000000210"); + break; + case RADIO_POLLYAESUVU: + m_rxcnt = 0; + SendCommand("\\$0000000003"); + break; + + //1.66B AA6YQ + case RADIO_POLLFT9000: + case RADIO_POLLFT2000: + case RADIO_POLLFT950: + case RADIO_POLLFT450: + m_rxcnt = 0; + SendCommand("IF;"); + break; + + case RADIO_POLLICOM: + case RADIO_POLLOMNIVI: + m_rxcnt = 0; + SendCommand("\\$FEFExxE003FD"); + break; + case RADIO_POLLICOMN: + case RADIO_POLLOMNIVIN: + if( !m_Freq[0] || m_ScanAddr ){ + m_rxcnt = 0; + SendCommand("\\$FEFExxE003FD"); + } + break; + case RADIO_POLLKENWOOD: + m_rxcnt = 0; + SendCommand("IF;"); + break; + case RADIO_POLLKENWOODN: + if( !m_Freq[0] ){ + m_rxcnt = 0; + SendCommand("AI1;"); + } + break; + case RADIO_POLLJST245: + m_rxcnt = 0; + SendCommand("I\r\n"); + break; + case RADIO_POLLJST245N: + if( !m_Freq[0] ){ + m_rxcnt = 0; + SendCommand("I1\r\nL\r\n"); + } + break; + default: + break; + } + } + m_PollCnt--; + } + } +} + +//-------------------------------------------------------- +// Žü”g”ƒ|[ƒŠƒ“ƒOƒf[ƒ^‚ÌŽóM +void CCradio::CatchPoll(BYTE c) +{ + switch(RADIO.PollType){ + case RADIO_POLLYAESUHF: + case RADIO_POLLFT1000D: + case RADIO_POLLFT920: + if( m_rxcnt < 5 ){ + m_rxbuf[m_rxcnt] = c; + m_rxcnt++; + if( m_rxcnt == 5 ){ + FreqYaesuHF(); + } + } + break; + + //1.66B AA6YQ + case RADIO_POLLFT9000: + case RADIO_POLLFT2000: + case RADIO_POLLFT950: + case RADIO_POLLFT450: + if( m_rxcnt < sizeof(m_rxbuf) ){ + if( (c != 0x0d) && (c != 0x0f) ){ + if( (c != ' ') || m_rxcnt ){ + m_rxbuf[m_rxcnt] = c; // Data + m_rxcnt++; + if( c == ';' ){ + if( (m_rxbuf[0] == 'I') && (m_rxbuf[1]=='F') ){ + if( m_rxcnt >= 13 ) FreqYaesu9K2K(); + } + m_rxcnt = 0; + } + } + } + } + else { + m_rxcnt = 0; + } + break; + + case RADIO_POLLYAESUVU: + if( m_rxcnt < 5 ){ + m_rxbuf[m_rxcnt] = c; + m_rxcnt++; + if( m_rxcnt == 5 ){ + FreqYaesuVU(); + } + } + break; + case RADIO_POLLICOM: + case RADIO_POLLICOMN: + case RADIO_POLLOMNIVI: + case RADIO_POLLOMNIVIN: + switch(m_rxcnt){ + case 0: + if( c == 0xfe ){ + m_rxbuf[m_rxcnt] = c; // ƒvƒŠƒAƒ“ƒuƒ‹ + m_rxcnt++; + } + break; + case 1: + if( c != 0xfe ){ + m_rxbuf[m_rxcnt] = c; // PC-Addr + m_rxcnt++; + } + break; + case 2: + if( (c == RADIO.Cmdxx) || + (m_ScanAddr && c) ){ + m_rxbuf[m_rxcnt] = c; // Radio-Addr + m_rxcnt++; + } + else { + m_rxcnt = 0; + } + break; + case 3: + if( (c == 0x03) || ((c == 0x00)&&((RADIO.PollType == RADIO_POLLICOMN)||(RADIO.PollType == RADIO_POLLOMNIVIN))) ){ + m_rxbuf[m_rxcnt] = c; // Respons-command + m_rxcnt++; + } + else { + m_rxcnt = 0; + } + break; + default: + if( m_rxcnt < sizeof(m_rxbuf) ){ + m_rxbuf[m_rxcnt] = c; // Data + m_rxcnt++; + if( c == 0xfd ){ + if( m_rxcnt >= 9 ){ + FreqICOM(); + if( m_ScanAddr && m_rxbuf[2] ){ + RADIO.Cmdxx = m_rxbuf[2]; + RADIO.PollScan = 0; + m_ScanAddr = 0; + } + } + m_rxcnt = 0; + } + } + else { + m_rxcnt = 0; + } + break; + } + break; + case RADIO_POLLKENWOOD: + case RADIO_POLLKENWOODN: + if( m_rxcnt < sizeof(m_rxbuf) ){ + if( (c != 0x0d) && (c != 0x0f) ){ + if( (c != ' ') || m_rxcnt ){ + m_rxbuf[m_rxcnt] = c; // Data + m_rxcnt++; + if( c == ';' ){ + if( (m_rxbuf[0] == 'I') && (m_rxbuf[1]=='F') ){ + if( m_rxcnt >= 13 ) FreqKenwood(); + } + m_rxcnt = 0; + } + } + } + } + else { + m_rxcnt = 0; + } + break; + case RADIO_POLLJST245: + case RADIO_POLLJST245N: + if( m_rxcnt < sizeof(m_rxbuf) ){ + if( (c == 'I') || m_rxcnt ){ + m_rxbuf[m_rxcnt] = c; // Data + m_rxcnt++; + if( (c == 0x0d) || (c == 0x0f) ){ + if( m_rxcnt >= 12 ) FreqJST245(); + m_rxcnt = 0; + } + } + } + else { + m_rxcnt = 0; + } + break; + default: + break; + } +} +//---------------------------------------------------------- +// Žü”g”‚ÌXV (freq=MHz) +// +void CCradio::UpdateFreq(double freq) +{ + if( freq < 0.001 ) return; + + switch(RADIO.PollOffset){ + case 1: + freq -= m_MarkFreq/1000000.0; + break; + case 2: + freq += m_MarkFreq/1000000.0; + break; + default: + break; + } + + char bf[32]; + sprintf(bf, "%.3lf", freq); + if( strcmp(m_Freq, bf) ){ + strcpy(m_Freq, bf); + m_FreqEvent = 1; + } +} + +void CCradio::FreqYaesuHF(void) +{ + ULONG fq; + fq = m_rxbuf[1]; + fq = fq << 8; + fq |= m_rxbuf[2]; + fq = fq << 8; + fq |= m_rxbuf[3]; + fq = fq << 8; + fq |= m_rxbuf[4]; + + double f; + switch(RADIO.PollType){ + case RADIO_POLLFT1000D: // FT1000D + f = 25600000.0; + break; + case RADIO_POLLFT920: // FT920 + f = 1000000.0; + break; + default: // FT1000MP + f = 1600000.0; + break; + } + + UpdateFreq(double(fq)/f); +} + +void CCradio::FreqYaesuVU(void) +{ + ULONG fq; + fq = m_rxbuf[0] >> 4; + fq *= 10; + fq += m_rxbuf[0] & 0x0f; + fq *= 10; + fq += m_rxbuf[1] >> 4; + fq *= 10; + fq += m_rxbuf[1] & 0x0f; + fq *= 10; + fq += m_rxbuf[2] >> 4; + fq *= 10; + fq += m_rxbuf[2] & 0x0f; + + UpdateFreq( double(fq) / 1000.0 ); +} + +void CCradio::FreqICOM(void) +{ +// 0 1 2 3 4 5 6 7 8 9 +// fe e0 40 03 90 09 02 07 00 fd +// fe e0 40 03 90 09 02 07 fd + + ULONG fq = 0; + if( m_rxbuf[8] != 0xfd ){ + fq = (m_rxbuf[8] >> 4); + fq *= 10; + fq += (m_rxbuf[8] & 0x0f); + } + fq *= 10; + fq += m_rxbuf[7] >> 4; + fq *= 10; + fq += m_rxbuf[7] & 0x0f; + fq *= 10; + fq += m_rxbuf[6] >> 4; + fq *= 10; + fq += m_rxbuf[6] & 0x0f; + fq *= 10; + fq += m_rxbuf[5] >> 4; + fq *= 10; + fq += m_rxbuf[5] & 0x0f; + fq *= 10; + fq += m_rxbuf[4] >> 4; + fq *= 10; + fq += m_rxbuf[4] & 0x0f; + + UpdateFreq(double(fq)/1e6); +} + +void CCradio::FreqKenwood(void) +{ +//0123456789012 +//IF00021155000 +001000 0002000008 ; +//abcdefghijklmnopqrstuvwxyz1234567890 <----@Œ…ˆÊ’u +//c - m Žü”g”@21.155MHz + + ULONG fq = 0; + + m_rxbuf[13] = 0; + if( sscanf((LPCSTR)&m_rxbuf[2], "%lu", &fq) == 1 ){ + if( fq ) UpdateFreq(double(fq)/1e6); + } +} + +//AA6YQ 1.66B +void CCradio::FreqYaesu9K2K(void) +{ +//0123456789012 +//IF00021155000 +001000 0002000008 ; +//abcdefghijklmnopqrstuvwxyz1234567890 <----@Œ…ˆÊ’u +//f - m Žü”g”@21.155MHz + + ULONG fq = 0; + + m_rxbuf[13] = 0; + if( sscanf((LPCSTR)&m_rxbuf[5], "%lu", &fq) == 1 ){ + if( fq ) UpdateFreq(double(fq)/1e6); + } +} + +void CCradio::FreqJST245(void) +{ +// 0 1 2 3 4 5 6 7 8 9 10 11 12 +//@h‚h‚‚‚‚„‚†‚†‚†‚†‚†‚†‚†‚†‚‡h +//@@‚hFƒwƒbƒ_[‹L† +//@@‚FŽg—pƒAƒ“ƒeƒi‚PŒ…i‚P`‚Rj +//@@‚‚Fƒoƒ“ƒh•‚PŒ…i‚O`‚Qj +//@@‚„Fƒ‚[ƒh‚PŒ…i‚O`‚Tj +//@@‚†F‘—ŽóMŽü”g”‚WŒ…i‚O‚O‚P‚O‚O‚O‚O‚O`‚T‚R‚X‚X‚X‚X‚X‚Wj +//@@‚‡F‚`‚f‚b‚PŒ…i‚O`‚Qj + + ULONG fq = 0; + + m_rxbuf[12] = 0; + LPCSTR p = (LPCSTR)&m_rxbuf[4]; + for( ; *p; p++ ) if( !isdigit(*p) ) return; + if( sscanf((LPCSTR)&m_rxbuf[4], "%lu", &fq) == 1 ){ + if( fq ) UpdateFreq(double(fq)/1e6); + } +} + + diff --git a/cradio.h b/cradio.h new file mode 100644 index 0000000..af3a020 --- /dev/null +++ b/cradio.h @@ -0,0 +1,172 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +///---------------------------------------------------------- +/// RadioƒRƒ~ƒjƒ…ƒP[ƒVƒ‡ƒ“ƒNƒ‰ƒX +/// +/// (C) JE3HHT Makoto.Mori +/// +//--------------------------------------------------------------------------- +#ifndef CradioH +#define CradioH +#include "ComLib.h" +#include "mmlink.h" +//--------------------------------------------------------------------------- +#include +typedef struct { + int change; + + char StrPort[32]; // ƒ|[ƒg‚Ì–¼‘O + int BaudRate; // ƒ{[ƒŒ[ƒg + int BitLen; // 0-7Bit, 1-8Bit + int Stop; // 0-1Bit, 1-2Bit + int Parity; // 0-PN, 1-PE, 2-PO + int flwXON; // Xon/Xoff ON + int flwCTS; // CTS-RTS ON + int usePTT; + + long ByteWait; // ƒoƒCƒgŠÔ‚Ì‘—MƒEƒGƒCƒg + + int Cmdxx; + + AnsiString CmdInit; + AnsiString CmdRx; + AnsiString CmdTx; + + AnsiString cmdGNR; + int openGNR; + + int PollType; + int PollInterval; + int PollOffset; + + int PollScan; +}CRADIOPARA; +extern CRADIOPARA RADIO; +//--------------------------------------------------------------------------- +void LoadRADIOSetup(TMemIniFile *pIniFile); +void SaveRADIOSetup(TMemIniFile *pIniFile); +//#define CR 0x0d +//#define LF 0x0a +#define CRADIO_CLOSE 1 +#define RADIO_COMBUFSIZE 4096 +#define RADIO_TXBUFSIZE 256 +#define RADIO_RXBUFSIZE 256 + +enum { + RADIO_POLLNULL, + RADIO_POLLYAESUHF, + RADIO_POLLYAESUVU, + RADIO_POLLICOM, + RADIO_POLLICOMN, + RADIO_POLLOMNIVI, + RADIO_POLLOMNIVIN, + RADIO_POLLKENWOOD, + RADIO_POLLKENWOODN, + RADIO_POLLFT1000D, + RADIO_POLLFT920, + RADIO_POLLJST245, + RADIO_POLLJST245N, + RADIO_POLLFT9000, //1.66B AA6YQ add new radios at end of list as this value is stored in mmtty.ini + RADIO_POLLFT2000, //1.66B AA6YQ + RADIO_POLLFT950, //1.66B AA6YQ + RADIO_POLLFT450, //1.66B AA6YQ +}; + +class CCradio : public TThread +{ +public: + BOOL m_CreateON; // ƒNƒŠƒGƒCƒgƒtƒ‰ƒO + DCB m_dcb; // ‚c‚b‚a + HANDLE m_fHnd; // ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹ + HWND m_wHnd; // e‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + UINT m_uMsg; + UINT m_ID; // ƒƒbƒZ[ƒW‚Ì‚h‚c”Ô† + volatile int m_Command; // ƒXƒŒƒbƒh‚ւ̃Rƒ}ƒ“ƒh + BOOL m_TxAbort; // ‘—M’†Ž~ƒtƒ‰ƒO + AnsiString Name; + CMMRadio *m_pRadio; + + int m_PSKGNRId; + int m_OpenGNR; + + char m_txbuf[RADIO_TXBUFSIZE]; + int m_txcnt; + int m_txwp; + int m_txrp; + + int m_PollCnt; + unsigned char m_rxbuf[RADIO_RXBUFSIZE]; + int m_rxcnt; + int m_FreqEvent; + char m_Freq[32]; + int m_MarkFreq; + + int m_ScanAddr; +protected: + void virtual __fastcall Execute(); + BOOL OpenPipe(CRADIOPARA *cp, HWND hwnd, UINT nID); + void CatchPoll(BYTE c); + void FreqYaesuHF(void); + void FreqYaesuVU(void); + void FreqICOM(void); + void FreqKenwood(void); + void FreqYaesu9K2K(void); + void FreqJST245(void); + +public: + __fastcall CCradio(bool CreateSuspended); + __fastcall ~CCradio(){ + Close(); + }; + inline BOOL IsOpen(void){ + return m_CreateON; + }; + inline void UpdateHandle(HWND hwnd, UINT uMsg){ + m_wHnd = hwnd; m_uMsg = uMsg; + }; + BOOL Open(CRADIOPARA *cp, HWND hwnd, UINT uMsg, UINT nID); + void Close(void); + void ReqClose(void); + void WaitClose(void); + DWORD RecvLen(void); + int TxBusy(void); + DWORD Read(BYTE *p, DWORD len); + void Write(void *p, DWORD len); + void PutChar(char c); + void OutStr(LPCSTR fmt, ...); + void OutLine(LPCSTR fmt, ...); + void SendCommand(LPCSTR p); + void SetPTT(int sw); + void Timer(int tx, int interval); + + inline LPCSTR GetFreq(void){ + m_FreqEvent = 0; + return m_Freq; + }; + inline void SetMarkFreq(int f){ + m_MarkFreq = f; + }; + int IsFreqChange(LPCSTR p); + void UpdateFreq(double freq); +}; + +void InitRADIOPara(void); +#endif + diff --git a/ctnc.cpp b/ctnc.cpp new file mode 100644 index 0000000..95fa1de --- /dev/null +++ b/ctnc.cpp @@ -0,0 +1,702 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Ctnc.h" +#include "ComLib.h" + +#define WAITSTAT 0 + +CTNCPARA TNC; +void InitTNCPara(void) +{ + strcpy(TNC.StrPort, "NONE"); // ƒ|[ƒg‚Ì–¼‘O + TNC.BaudRate = 1200; // ƒ{[ƒŒ[ƒg + TNC.BitLen = 1; // 0-7Bit, 1-8Bit + TNC.Stop = 0; // 0-1Bit, 1-2Bit + TNC.Parity = 0; // 0-PN, 1-PE, 2-PO + TNC.flwXON = 1; // Xon/Xoff ON + TNC.flwCTS = 0; // CTS-RTS ON + + TNC.Echo = 2; + TNC.Type = (lcid != LANG_JAPANESE) ? 1 : 0; // 0-TNC241, 1-KAM + TNC.TncMode = 1; // Command mode + TNC.change = 1; +} +void LoadTNCSetup(TMemIniFile *pIniFile) +{ + AnsiString as = TNC.StrPort; + as = pIniFile->ReadString("TNC", "PortName", as); + StrCopy(TNC.StrPort, as.c_str(), 31); + TNC.Type = pIniFile->ReadInteger("TNC", "Type", TNC.Type); + TNC.BaudRate = pIniFile->ReadInteger("TNC", "BaudRate", TNC.BaudRate); + TNC.BitLen = pIniFile->ReadInteger("TNC", "BitLen", TNC.BitLen); + TNC.Stop = pIniFile->ReadInteger("TNC", "Stop", TNC.Stop); + TNC.Parity = pIniFile->ReadInteger("TNC", "Parity", TNC.Parity); + TNC.flwXON = pIniFile->ReadInteger("TNC", "flwXON", TNC.flwXON); + TNC.flwCTS = pIniFile->ReadInteger("TNC", "flwCTS", TNC.flwCTS); + TNC.Echo = pIniFile->ReadInteger("TNC", "Echo", TNC.Echo); +} +void SaveTNCSetup(TMemIniFile *pIniFile) +{ + pIniFile->WriteString("TNC", "PortName", TNC.StrPort); + pIniFile->WriteInteger("TNC", "Type", TNC.Type); + pIniFile->WriteInteger("TNC", "BaudRate", TNC.BaudRate); + pIniFile->WriteInteger("TNC", "BitLen", TNC.BitLen); + pIniFile->WriteInteger("TNC", "Stop", TNC.Stop); + pIniFile->WriteInteger("TNC", "Parity", TNC.Parity); + pIniFile->WriteInteger("TNC", "flwXON", TNC.flwXON); + pIniFile->WriteInteger("TNC", "flwCTS", TNC.flwCTS); + pIniFile->WriteInteger("TNC", "Echo", TNC.Echo); +} +//--------------------------------------------------------------------------- +// ’ˆÓ: VCL ƒIƒuƒWƒFƒNƒg‚̃ƒ\ƒbƒh‚ƃvƒƒpƒeƒB‚ðŽg—p‚·‚é‚É‚Í, Synchronize +// ‚ðŽg‚Á‚½ƒƒ\ƒbƒhŒÄ‚Ño‚µ‚łȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñBŽŸ‚É—á‚ðŽ¦‚µ‚Ü‚·B +// +// Synchronize(UpdateCaption); +// +// ‚±‚±‚Å, UpdateCaption ‚ÍŽŸ‚̂悤‚É‹Lq‚Å‚«‚Ü‚·B +// +// void __fastcall CCtnc::UpdateCaption() +// { +// Form1->Caption = "ƒXƒŒƒbƒh‚©‚ç‘‚«Š·‚¦‚Ü‚µ‚½"; +// } +//--------------------------------------------------------------------------- +__fastcall CCtnc::CCtnc(bool CreateSuspended) + : TThread(CreateSuspended) +{ + m_CreateON = FALSE; // ƒNƒŠƒGƒCƒgƒtƒ‰ƒO + m_fHnd = NULL; // ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹ + m_wHnd = NULL; // e‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + m_ID = 0; // ƒƒbƒZ[ƒW‚Ì‚h‚c”Ô† + m_Command = 0; // ƒXƒŒƒbƒh‚ւ̃Rƒ}ƒ“ƒh + m_TxAbort = 0; // ‘—M’†Ž~ƒtƒ‰ƒO + ClearTxFifo(); + ClearRxFifo(); + m_timeout = 200; + m_pMMT = NULL; +} +//--------------------------------------------------------------------------- +void __fastcall CCtnc::ClearRxFifo(void) +{ + m_rxwp = m_rxrp = m_rxcnt = 0; +} +//--------------------------------------------------------------------------- +void __fastcall CCtnc::ClearTxFifo(void) +{ + m_txwp = m_txrp = m_txcnt = 0; +} +//--------------------------------------------------------------------------- +const BYTE tbl[]={ + 0x00, 0x10, 0x08, 0x18, // 00000 10000 01000 11000 + 0x04, 0x14, 0x0c, 0x1c, // 00100 10100 01100 11100 + 0x02, 0x12, 0x0a, 0x1a, // 00010 10010 01010 11010 + 0x06, 0x16, 0x0e, 0x1e, // 00110 10110 01110 11110 + 0x01, 0x11, 0x09, 0x19, // 00001 10001 01001 11001 + 0x05, 0x15, 0x0d, 0x1d, // 00101 10101 01101 11101 + 0x03, 0x13, 0x0b, 0x1b, // 00011 10011 01011 11011 + 0x07, 0x17, 0x0f, 0x1f, // 00111 10111 01111 11111 +}; +//--------------------------------------------------------------------------- +BOOL __fastcall CCtnc::PutRxFifo(BYTE c) +{ + if( m_rxcnt >= TNC_RXBUFSIZE ) return FALSE; + if( (TNC.Type == 2) && (cm.BitLen <= 6) ){ + if( m_pMMT && (c >= 0x20) ){ + m_rxbuf[m_rxwp] = c; + } + else { + m_rxbuf[m_rxwp] = tbl[c&0x1f]; + } + } + else { + m_rxbuf[m_rxwp] = c; + } + m_rxwp++; + if( m_rxwp >= (int)sizeof(m_rxbuf) ) m_rxwp = 0; //JA7UDE 0428 + m_rxcnt++; + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall CCtnc::Execute() +{ + //---- ƒXƒŒƒbƒh‚̃R[ƒh‚ð‚±‚±‚É‹Lq ---- +// Priority = tpLower; + if( TNC.Type == 2 ){ + m_PTT = GetPTT(); + } + while(1){ + if( Terminated == TRUE ){ + return; + } + if( m_Command == CTNC_CLOSE ){ + m_Command = 0; + return; + } + if( m_CreateON == TRUE ){ + if( m_txcnt ){ + if( !TxBusy() ){ + BYTE d = m_txbuf[m_txrp]; + if( TNC.Type == 2 && (cm.BitLen <= 6) ){ + d = tbl[d & 0x1f]; + } + if( IOPutChar(d) ){ + m_txrp++; + if( m_txrp >= TNC_TXBUFSIZE ){ + m_txrp = 0; + } + m_txcnt--; + } + } + ::Sleep(1); + } + else if( m_rxcnt < (TNC_RXBUFSIZE/2) ){ + int len = RecvLen(); + if( len ){ + BYTE bf[256]; + if( len >= (int)sizeof(bf) ) len = sizeof(bf); + if( len && (m_rxcnt < int(sizeof(m_rxbuf) - len)) ){ + int size = IORead(bf, len); + for( int i = 0; i < size; i++ ){ + PutRxFifo(bf[i]); + } + if( m_wHnd != NULL ){ + PostMessage( m_wHnd, m_ID, MMTMSG_NULL, 0); + } + } + } + ::Sleep(((TNC.Type != 2) || m_pMMT) ? 10 : 1); + } + else { + ::Sleep(10); + } + if( (TNC.Type == 2) && !m_pMMT ){ + BOOL tx = GetPTT(); + if( (tx != m_PTT) && (tx || !m_rxcnt) ){ + m_PTT = tx; + PostMessage(m_wHnd, m_ID, MMTMSG_NULL, 0); + } + ::Sleep(1); + } + } + else { + ::Sleep(20); + } + } +} + +//--------------------------------------------------------------------------- +/*#$% +============================================================== + ’ÊM‰ñü‚ðƒI[ƒvƒ“‚µƒXƒŒƒbƒh‚ðƒAƒNƒeƒBƒu‚É‚·‚é +-------------------------------------------------------------- +PortName : ‰ñü‚Ì–¼‘O +pCP : COMMPARA‚̃|ƒCƒ“ƒ^iƒkƒ‹‚ÌŽž‚̓fƒtƒHƒ‹ƒg‚ʼnŠú‰»j +pWnd : ƒƒbƒZ[ƒW‘—Mæ‚̃EƒCƒ“ƒhƒEƒNƒ‰ƒX‚̃|ƒCƒ“ƒ^iƒkƒ‹‚ÌŽž‚ÍÒ²ÝÌڰѳ²ÝÄÞ³j +nID : ƒf[ƒ^ŽóMŽž‚̃ƒbƒZ[ƒW‚h‚c +RBufSize : ŽóMƒoƒbƒtƒ@‚̃TƒCƒY(default=2048) +TBufSize : ‘—Mƒoƒbƒtƒ@‚̃TƒCƒY(default=2048) +-------------------------------------------------------------- +TRUE/FALSE +-------------------------------------------------------------- +============================================================== +*/ +BOOL __fastcall CCtnc::Open(CTNCPARA *cp, HWND hwnd, UINT nID, COMMPARA *pp) +{ + if( m_CreateON == TRUE ) Close(); + m_TxAbort = FALSE; + m_wHnd = hwnd; + m_ID = nID; + m_fHnd = ::CreateFile(cp->StrPort, GENERIC_READ | GENERIC_WRITE, + 0, NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL + ); + if( m_fHnd == INVALID_HANDLE_VALUE ) goto _mmt; + // setup device buffers + if( ::SetupComm( m_fHnd, DWORD(TNC_COMBUFSIZE), DWORD(TNC_COMBUFSIZE) ) == FALSE ){ + ::CloseHandle(m_fHnd); +_mmt:; + m_pMMT = new CMMTnc; + if( m_pMMT->Open(cp->StrPort, m_wHnd, m_ID) ){ + m_CreateON = TRUE; + Priority = tpLower; + Resume(); // ƒXƒŒƒbƒh‚ÌŽÀs + return TRUE; + } + else { + delete m_pMMT; + m_pMMT = NULL; + return FALSE; + } + } + + // purge any information in the buffer + ::PurgeComm( m_fHnd, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR ); + + // set up for overlapped I/O + COMMTIMEOUTS TimeOut; + + TimeOut.ReadIntervalTimeout = 0xffffffff; + TimeOut.ReadTotalTimeoutMultiplier = 0; + TimeOut.ReadTotalTimeoutConstant = 0; + TimeOut.WriteTotalTimeoutMultiplier = 0; + TimeOut.WriteTotalTimeoutConstant = 20000; +// TimeOut.WriteTotalTimeoutConstant = 1; + if( !::SetCommTimeouts( m_fHnd, &TimeOut ) ){ + ::CloseHandle( m_fHnd ); + return FALSE; + } + ::GetCommState( m_fHnd, &m_dcb ); + m_dcb.fBinary = TRUE; + const UCHAR _tp[]={NOPARITY, EVENPARITY, ODDPARITY}; + const UCHAR _ts[]={ONESTOPBIT,TWOSTOPBITS}; + if( TNC.Type == 2 ){ + memcpy(&cm, pp, sizeof(cm)); + m_dcb.BaudRate = pp->Baud; + m_dcb.ByteSize = WORD(pp->BitLen); + m_dcb.Parity = WORD(pp->Parity); + m_dcb.StopBits = WORD(pp->Stop); + m_dcb.fOutxCtsFlow = FALSE; + m_dcb.fInX = m_dcb.fOutX = FALSE; + } + else { + m_dcb.BaudRate = cp->BaudRate; + m_dcb.ByteSize = USHORT(cp->BitLen ? 8 : 7); + m_dcb.Parity = _tp[cp->Parity]; + m_dcb.StopBits = _ts[cp->Stop]; + m_dcb.fOutxCtsFlow = cp->flwCTS ? TRUE : FALSE; + m_dcb.fInX = m_dcb.fOutX = cp->flwXON ? TRUE : FALSE; + } + m_dcb.fRtsControl = RTS_CONTROL_ENABLE; + m_dcb.XonChar = 0x11; + m_dcb.XoffChar = 0x13; + m_dcb.fParity = FALSE; + m_dcb.EvtChar = 0x00; // dummy setting +// m_dcb.fTXContinueOnXoff = TRUE; + m_dcb.XonLim = USHORT(TNC_COMBUFSIZE/4); // 1/4 of RBufSize + m_dcb.XoffLim = USHORT(TNC_COMBUFSIZE*3/4); // 3/4 of RBufSize + m_dcb.DCBlength = sizeof( DCB ); + if( !::SetCommState( m_fHnd, &m_dcb ) ){ + ::CloseHandle( m_fHnd ); + return FALSE; + } + // get any early notifications + if( !::SetCommMask( m_fHnd, EV_RXFLAG ) ){ + ::CloseHandle(m_fHnd); + return FALSE; + } + m_CreateON = TRUE; + Priority = tpLower; + Resume(); // ƒXƒŒƒbƒh‚ÌŽÀs + return TRUE; +} +/*#$% +============================================================== + ’ÊM‰ñü‚ðƒNƒ[ƒY‚·‚é +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- + ƒXƒŒƒbƒh‚ªI—¹‚·‚é‚܂ő҂ +============================================================== +*/ +void __fastcall CCtnc::Close(void) +{ + if( m_CreateON == TRUE ){ + if( m_ID ){ + m_Command = CTNC_CLOSE; // ƒXƒŒƒbƒhI—¹ƒRƒ}ƒ“ƒh + Priority = tpNormal; //ƒXƒŒƒbƒh‚Í’Êí‚Ì—Dæ“x‚Å‚ ‚é + WaitFor(); + } + if( m_pMMT ){ + delete m_pMMT; + m_pMMT = NULL; + } + else { + ::CloseHandle(m_fHnd); + } + m_CreateON = FALSE; + } + m_TxAbort = TRUE; +} +void __fastcall CCtnc::ReqClose(void) +{ + if( m_CreateON == TRUE ){ + if( m_ID ){ + m_Command = CTNC_CLOSE; // ƒXƒŒƒbƒhI—¹ƒRƒ}ƒ“ƒh + Priority = tpNormal; //ƒXƒŒƒbƒh‚Í’Êí‚Ì—Dæ“x‚Å‚ ‚é + } + } +} +void __fastcall CCtnc::WaitClose(void) +{ + if( m_CreateON == TRUE ){ + if( m_ID && m_Command ){ + WaitFor(); + } + if( m_pMMT ){ + delete m_pMMT; + m_pMMT = NULL; + } + else { + ::CloseHandle(m_fHnd); + } + m_CreateON = FALSE; + } + m_TxAbort = TRUE; +} +//---------------------------------------------------------------------- +BOOL __fastcall CCtnc::GetPTT(void) +{ + DWORD d = 0; + BOOL tx = FALSE; + if( !m_pMMT ){ + if( ::GetCommModemStatus(m_fHnd, &d) ){ + tx = (d & MS_CTS_ON) != 0; + } + } + return tx; +} +/*#$% +============================================================== + ŽóMƒoƒbƒtƒ@“à‚ÌŠi”[ƒf[ƒ^’·‚𓾂é +-------------------------------------------------------------- +-------------------------------------------------------------- + ƒf[ƒ^‚Ì’·‚³ +-------------------------------------------------------------- +============================================================== +*/ +DWORD __fastcall CCtnc::RecvLen(void) +{ + if( m_pMMT ){ + return m_pMMT->GetRxLen(); + } + else { + COMSTAT ComStat; + DWORD dwErrorFlags; + + ::ClearCommError( m_fHnd, &dwErrorFlags, &ComStat ); + return ComStat.cbInQue; + } +} + +/*#$% +============================================================== + ‘—MƒrƒW[‚©‚Ç‚¤‚©’²‚ׂé +-------------------------------------------------------------- +-------------------------------------------------------------- +TRUE : ‘—MƒrƒW[ó‘Ô +-------------------------------------------------------------- +============================================================== +*/ +int __fastcall CCtnc::TxBusy(void) +{ + if( m_pMMT ){ + return m_pMMT->IsTxBusy(); + } + else { + COMSTAT ComStat; + DWORD dwErrorFlags; + + ::ClearCommError( m_fHnd, &dwErrorFlags, &ComStat ); + return ComStat.cbOutQue; + } +} + +/*#$% +============================================================== + ’ÊM‰ñü‚©‚çƒf[ƒ^‚ðŽæ‚èo‚· +-------------------------------------------------------------- +p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ +len : ƒoƒbƒtƒ@‚̃TƒCƒY +-------------------------------------------------------------- +ŽÀÛ‚ÉŽóM‚µ‚½ƒTƒCƒY +-------------------------------------------------------------- +============================================================== +*/ +int __fastcall CCtnc::IORead(BYTE *p, DWORD len) +{ + DWORD size=0; + + if( m_CreateON == TRUE ){ + if( m_pMMT ){ + for( ; len; len--, size++ ){ + *p++ = m_pMMT->GetChar(); + } + } + else { + ::ReadFile( m_fHnd, p, len, &size, NULL ); + } + } + return size; +} +int __fastcall CCtnc::IOPutChar(BYTE c) +{ + DWORD size=0; + + if( m_CreateON == TRUE ){ + if( m_pMMT ){ + m_pMMT->PutChar(c); + size = 1; + } + else { + ::WriteFile( m_fHnd, &c, 1, &size, NULL ); + } + } + return size; +} + +/*#$% +============================================================== + ’ÊM‰ñü‚Ƀf[ƒ^‚ð‘—M‚·‚é +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- +============================================================== +*/ +void __fastcall CCtnc::PutChar(char c) +{ + if( m_CreateON == TRUE ){ + if( m_txcnt < TNC_TXBUFSIZE ){ + m_txbuf[m_txwp] = c; + m_txwp++; + if( m_txwp >= TNC_TXBUFSIZE ) m_txwp = 0; + m_txcnt++; + } + } +} + +/*#$% +============================================================== + ’ÊM‰ñü‚Ƀf[ƒ^‚ð‘—M‚·‚é +-------------------------------------------------------------- +p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ +len : ‘—M‚·‚éƒTƒCƒY +-------------------------------------------------------------- +ŽÀÛ‚É‘—M‚µ‚½ƒTƒCƒY +-------------------------------------------------------------- +============================================================== +*/ +void __fastcall CCtnc::Write(void *s, DWORD len) +{ + if( m_CreateON == TRUE ){ + char *p; + for( p = (char *)s; len; len--, p++ ){ + PutChar(*p); + } + } +} + +/*#$% +============================================================== + ’ÊM‰ñü‚Ƀf[ƒ^‚ð‘—M‚·‚é +-------------------------------------------------------------- +p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ +len : ‘—M‚·‚éƒTƒCƒY +-------------------------------------------------------------- +ŽÀÛ‚É‘—M‚µ‚½ƒTƒCƒY +-------------------------------------------------------------- +============================================================== +*/ +void CCtnc::OutStr(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + Write(bf, strlen(bf)); +} + +void CCtnc::OutLine(LPCSTR fmt, ...) +{ + va_list pp; + char bf[1024]; + + va_start(pp, fmt); + vsprintf( bf, fmt, pp ); + va_end(pp); + Write(bf, strlen(bf)); + char r[] = "\r"; + Write( r, 1 ); + //Write("\r", 1); +} +//--------------------------------------------------------------------------- +void __fastcall CCtnc::SetPTT(int tx) +{ + if( m_pMMT ) m_pMMT->SetPTT(tx); +} +//--------------------------------------------------------------------------- +void __fastcall CCtnc::NotifyFreq(LONG mark, LONG space) +{ + if( m_pMMT ){ + m_pMMT->m_NMMT.m_markfreq = mark; + m_pMMT->m_NMMT.m_spacefreq = space; + } +} +//--------------------------------------------------------------------------- +void __fastcall CCtnc::NotifyLevel(LONG sq, LONG lvl) +{ + if( m_pMMT ){ + m_pMMT->m_NMMT.m_sqlevel = sq; + m_pMMT->m_NMMT.m_siglevel = lvl; + } +} +//============================================================================== +// CMMTnc ƒJƒXƒ^ƒ€TNCƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“ +//============================================================================== +//--------------------------------------------------------------------------- +__fastcall CMMTnc::CMMTnc(void) +{ + m_hLib = NULL; + memset(&m_NMMT, 0, sizeof(m_NMMT)); + m_NMMT.m_sampfreq = SampFreq; + m_NMMT.m_demfreq = DemSamp; + m_QueryResult = 0; +} +//--------------------------------------------------------------------------- +__fastcall CMMTnc::~CMMTnc() +{ + Close(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMTnc::FreeLib(void) +{ + if( m_hLib ){ + FreeLibrary(m_hLib); + m_hLib = NULL; + } +} +//--------------------------------------------------------------------------- +FARPROC __fastcall CMMTnc::GetProc(LPCSTR pName) +{ + if( !m_hLib ) return NULL; + + FARPROC fn = ::GetProcAddress(m_hLib, pName+1); + if( fn == NULL ){ + fn = ::GetProcAddress(m_hLib, pName); + if( fn == NULL ) FreeLib(); + } + return fn; +} +//--------------------------------------------------------------------------- +void __fastcall CMMTnc::Close(void) +{ + if( IsLib() ){ + fmmtClose(); + FreeLib(); + } +} +//--------------------------------------------------------------------------- +BOOL __fastcall CMMTnc::Open(LPCSTR pItemName, HWND hWnd, UINT uMsg) +{ + Close(); + + m_ItemName = pItemName; + char LibName[MAX_PATH]; + if( !*GetEXT(pItemName) ){ + sprintf(LibName, "%s.mmt", pItemName); + pItemName = LibName; + } + m_hLib = ::LoadLibrary(pItemName); + if( m_hLib ){ + + fmmtQueryTnc = PROC(mmtQueryTnc); + fmmtOpen = PROC(mmtOpen); + fmmtClose = PROC(mmtClose); + fmmtSetPTT = PROC(mmtSetPTT); + fmmtPutChar = PROC(mmtPutChar); + fmmtGetChar = PROC(mmtGetChar); + fmmtIsTxBusy = PROC(mmtIsTxBusy); + fmmtGetRxLen = PROC(mmtGetRxLen); + fmmtNotify = PROC(mmtNotify); + fmmtNotifyFFT = PROC(mmtNotifyFFT); + fmmtNotifyXY = PROC(mmtNotifyXY); + + if( m_hLib ){ + m_QueryResult = fmmtQueryTnc((LPLONG)&TNC.Type, (LPLONG)&TNC.Echo); + if( !fmmtOpen(hWnd, uMsg, TNC.Type) ){ + FreeLib(); + } + } + } + return IsLib(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMTnc::SetPTT(int ptt) +{ + if( !IsLib() ) return; + fmmtSetPTT(ptt); +} +//--------------------------------------------------------------------------- +void __fastcall CMMTnc::PutChar(BYTE c) +{ + if( !IsLib() ) return; + fmmtPutChar(c); +} +//--------------------------------------------------------------------------- +BYTE __fastcall CMMTnc::GetChar(void) +{ + if( !IsLib() ) return 0; + return fmmtGetChar(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CMMTnc::IsTxBusy(void) +{ + if( !IsLib() ) return FALSE; + return fmmtIsTxBusy(); +} +//--------------------------------------------------------------------------- +LONG __fastcall CMMTnc::GetRxLen(void) +{ + if( !IsLib() ) return 0; + return fmmtGetRxLen(); +} +//--------------------------------------------------------------------------- +void __fastcall CMMTnc::Notify(void) +{ + if( !IsLib() ) return; + if( m_QueryResult & ntNOTIFY ) fmmtNotify(&m_NMMT); +} +//--------------------------------------------------------------------------- +void __fastcall CMMTnc::NotifyFFT(const int *pFFT) +{ + if( !IsLib() ) return; + if( m_QueryResult & ntNOTIFYFFT ) fmmtNotifyFFT(pFFT, FFT_SIZE, SampFreq); +} +//--------------------------------------------------------------------------- +void __fastcall CMMTnc::NotifyXY(const double *pX, const double *pY) +{ + if( !IsLib() ) return; + if( !(m_QueryResult & ntNOTIFYXY) ) return; + + LPLONG px = m_XY; + LPLONG py = &m_XY[XYCOLLECT]; + for( int i = 0; i < XYCOLLECT; i++ ){ + *px++ = LONG(*pX++); + *py++ = LONG(*pY++); + } + fmmtNotifyXY(m_XY); +} +//--------------------------------------------------------------------------- diff --git a/ctnc.h b/ctnc.h new file mode 100644 index 0000000..1bcdbbf --- /dev/null +++ b/ctnc.h @@ -0,0 +1,325 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +///---------------------------------------------------------- +/// TNCƒVƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“ƒNƒ‰ƒX +/// +/// (C) JE3HHT Makoto.Mori +/// +//--------------------------------------------------------------------------- +#ifndef CtncH +#define CtncH +#include "ComLib.h" +#include "comm.h" +#include "Mmlink.h" +//--------------------------------------------------------------------------- +#include +typedef struct { + int change; + + char StrPort[32]; // ƒ|[ƒg‚Ì–¼‘O + int BaudRate; // ƒ{[ƒŒ[ƒg + int BitLen; // 0-7Bit, 1-8Bit + int Stop; // 0-1Bit, 1-2Bit + int Parity; // 0-PN, 1-PE, 2-PO + int flwXON; // Xon/Xoff ON + int flwCTS; // CTS-RTS ON + + int Echo; + int Type; // 0-TNC241, 2-KAM + int TncMode; // 0-Message, 1-Cmd, 2-TTy +}CTNCPARA; +extern CTNCPARA TNC; +//--------------------------------------------------------------------------- +enum { + TNC_PTTON = 0x00f0, + TNC_PTTOFF, + TNC_PTTFLUSH, + TNC_CLEARBUF, + TNC_AFCON, + TNC_AFCOFF, + TNC_NETON, + TNC_NETOFF, + TNC_REVON, + TNC_REVOFF, + TNC_HAM, + TNC_ECHOON, + TNC_ECHOOFF, + TNC_CANCELPTTFLUSH, +}; +enum { + MMTMSG_NULL, + MMTMSG_CHAR, + MMTMSG_PTT, + MMTMSG_COMMON, + MMTMSG_CLEARFIFO, + MMTMSG_SETSWITCH, + MMTMSG_SETVIEW, + MMTMSG_CHARTXW, + MMTMSG_WRITETXW, + MMTMSG_SETFREQ, + MMTMSG_SETBAUD, + MMTMSG_SETSQ, + MMTMSG_SETNOTCH, + MMTMSG_SETDEFFREQ, + MMTMSG_SETPTTTIMER, + MMTMSG_SETTNCTYPE, + MMTMSG_SETPRIORITY, + MMTMSG_SETLENGTH, + MMTMSG_SETRESO, + MMTMSG_SETLPF, + MMTMSG_GETPROFILENAME, + MMTMSG_LOADPROFILE, + MMTMSG_SAVEPROFILE, +}; +#pragma pack(push, 1) +typedef struct { + DWORD m_markfreq; + DWORD m_spacefreq; + DWORD m_siglevel; + DWORD m_sqlevel; + DWORD m_txbuflen; + DWORD m_codeswitch; + DWORD m_codeview; + DWORD m_notch1; + DWORD m_notch2; + DWORD m_baud; + DWORD m_bitlength; + DWORD m_txwlen; + DWORD m_sampfreq; + DWORD m_demfreq; + DWORD m_radiofreq; + DWORD m_modetnc; + DWORD m_fig; + DWORD m_defmark; + DWORD m_defshift; + DWORD m_Reserved[45]; +}NMMT; +#pragma pack(pop) +typedef DWORD (__stdcall *tmmtQueryTnc)(LPLONG pType, LPLONG pEcho); +typedef BOOL (__stdcall *tmmtOpen)(HWND hWnd, UINT uMsg, LONG type); +typedef void (__stdcall *tmmtClose)(void); +typedef void (__stdcall *tmmtSetPTT)(LONG tx); +typedef BOOL (__stdcall *tmmtIsTxBusy)(void); +typedef void (__stdcall *tmmtPutChar)(BYTE c); +typedef LONG (__stdcall *tmmtGetRxLen)(void); +typedef BYTE (__stdcall *tmmtGetChar)(void); +typedef void (__stdcall *tmmtNotify)(NMMT *pNMMT); +typedef void (__stdcall *tmmtNotifyFFT)(const int *pFFT, LONG size, LONG sampfreq); +typedef void (__stdcall *tmmtNotifyXY)(const LONG *pXY); +#define ntNOTIFY 1 +#define ntNOTIFYFFT 2 +#define ntNOTIFYXY 4 +class CMMTnc +{ +private: + AnsiString m_ItemName; + + DWORD m_QueryResult; + //HANDLE m_hLib; + HINSTANCE m_hLib; + LONG m_XY[XYCOLLECT*2]; +public: + NMMT m_NMMT; +private: + tmmtQueryTnc fmmtQueryTnc; + tmmtOpen fmmtOpen; + tmmtClose fmmtClose; + tmmtSetPTT fmmtSetPTT; + tmmtIsTxBusy fmmtIsTxBusy; + tmmtPutChar fmmtPutChar; + tmmtGetRxLen fmmtGetRxLen; + tmmtGetChar fmmtGetChar; + tmmtNotify fmmtNotify; + tmmtNotifyFFT fmmtNotifyFFT; + tmmtNotifyXY fmmtNotifyXY; + +private: + void __fastcall FreeLib(void); + FARPROC __fastcall GetProc(LPCSTR pName); +public: + __fastcall CMMTnc(void); + __fastcall ~CMMTnc(); +public: + BOOL __fastcall Open(LPCSTR pLibName, HWND hWnd, UINT uMsg); + void __fastcall Close(void); + inline BOOL __fastcall IsLib(void){ return (m_hLib != NULL);}; + inline LPCSTR __fastcall GetItemName(void){return m_ItemName.c_str();}; + + void __fastcall SetPTT(int ptt); + void __fastcall PutChar(BYTE c); + BYTE __fastcall GetChar(void); + BOOL __fastcall IsTxBusy(void); + LONG __fastcall GetRxLen(void); + void __fastcall Notify(); + void __fastcall NotifyFFT(const int *pFFT); + void __fastcall NotifyXY(const double *pX, const double *pY); +}; + +//--------------------------------------------------------------------------- +void LoadTNCSetup(TMemIniFile *pIniFile); +void SaveTNCSetup(TMemIniFile *pIniFile); +//#define CR 0x0d +//#define LF 0x0a +#define CTNC_CLOSE 1 +#define TNC_COMBUFSIZE 4096 +#define TNC_TXBUFSIZE 1024 +#define TNC_RXBUFSIZE 1024 +class CCtnc : public TThread +{ +public: + BOOL m_CreateON; // ƒNƒŠƒGƒCƒgƒtƒ‰ƒO + DCB m_dcb; // ‚c‚b‚a + HANDLE m_fHnd; // ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹ + HWND m_wHnd; // e‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + UINT m_ID; // ƒƒbƒZ[ƒW‚Ì‚h‚c”Ô† + volatile int m_Command; // ƒXƒŒƒbƒh‚ւ̃Rƒ}ƒ“ƒh + BOOL m_TxAbort; // ‘—M’†Ž~ƒtƒ‰ƒO + AnsiString Name; + + char m_txbuf[TNC_TXBUFSIZE]; + int m_txcnt; + int m_txwp; + int m_txrp; + int m_timeout; + + char m_rxbuf[TNC_RXBUFSIZE]; + int m_rxcnt; + int m_rxwp; + int m_rxrp; + + CMMTnc *m_pMMT; + + COMMPARA cm; + BOOL m_PTT; +protected: + void virtual __fastcall Execute(); +public: + __fastcall CCtnc(bool CreateSuspended); + __fastcall ~CCtnc(){ + Close(); + }; + inline BOOL IsOpen(void){ + return m_CreateON; + }; + inline void UpdateHandle(HWND hwnd){ + m_wHnd = hwnd; + }; + BOOL __fastcall Open(CTNCPARA *cp, HWND hwnd, UINT nID, COMMPARA *pp); + void __fastcall Close(void); + void __fastcall ReqClose(void); + void __fastcall WaitClose(void); + BOOL __fastcall GetPTT(void); + DWORD __fastcall RecvLen(void); + int __fastcall TxBusy(void); + int __fastcall IORead(BYTE *p, DWORD len); + int __fastcall IOPutChar(BYTE c); + + void __fastcall ClearRxFifo(void); + void __fastcall ClearTxFifo(void); + BOOL __fastcall PutRxFifo(BYTE c); + void __fastcall Write(void *p, DWORD len); + void __fastcall PutChar(char c); + void OutStr(LPCSTR fmt, ...); + void OutLine(LPCSTR fmt, ...); + + void __fastcall NotifyFreq(LONG mark, LONG space); + void __fastcall SetPTT(int tx); + inline BOOL IsMMT(void){return m_pMMT!=NULL;}; + NMMT* __fastcall GetNMMT(void){return &m_pMMT->m_NMMT;}; + void __fastcall NotifyLevel(LONG sq, LONG lvl); + inline void __fastcall Notify(void){ + if( m_pMMT ) m_pMMT->Notify(); + } + inline void __fastcall NotifyFFT(const int *pFFT){ + if( m_pMMT ) m_pMMT->NotifyFFT(pFFT); + } + inline void __fastcall NotifyXY(const double *pX, const double *pY){ + if( m_pMMT ) m_pMMT->NotifyXY(pX, pY); + } +}; + +void InitTNCPara(void); + +///--------------------------------------------------------- +/// ƒeƒLƒXƒg•¶Žš—ñ‚e‚h‚e‚n +class CTextFifo +{ +private: + LPSTR bp, wp, rp; + int Cnt; + int Max; + int Line; +public: + inline CTextFifo(int max = TNC_COMBUFSIZE){ + Max = max; + bp = new char[Max]; + wp = rp = bp; + Cnt = 0; + Line = 0; + }; + inline ~CTextFifo(){ + delete[] bp; + }; + inline void WriteChar(char c){ + if( Cnt < Max ){ + if( c != LF ){ + *wp = c; + wp++; + if( wp >= (bp+Max) ){ + wp = bp; + } + Cnt++; + } + if( c == CR ){ + Line++; + } + } + } + inline void WriteString(LPCSTR sp){ + for( ; *sp; sp++ ){ + WriteChar(*sp); + } + }; + inline int GetLine(void){ + return Line; + }; + inline int LoadText(LPSTR tp, int len){ + if( !Line ) return FALSE; + while(1){ + char c = *rp; + rp++; + if( rp >= (bp+Max) ) rp = bp; + Cnt--; + + if( c == CR ){ + *tp = 0; + Line--; + break; + } + else if( (len - 1) > 0 ){ + *tp++ = c; + len--; + } + } + return TRUE; + }; +}; +#endif + diff --git a/digital.txt b/digital.txt new file mode 100644 index 0000000..97a65e8 --- /dev/null +++ b/digital.txt @@ -0,0 +1,365 @@ +MMTTY‚̃fƒWƒ^ƒ‹M†ˆ— + + ‰”Å 2000.07.18 JE3HHT X ½ + ‰ü’è 2000.10.19 JE3HHT X ½ + + +@MMTTY‚ÅŽg‚Á‚Ä‚¢‚éŠeM†ˆ—‚ɂ‚¢‚ÄŠÈ’P‚ɉðà‚µ‚Ü‚·B + + +FIRƒtƒBƒ‹ƒ^ +~~~~~~~~~~~~~ + FIR(Finite Impulse Response)ƒtƒBƒ‹ƒ^‚̓fƒWƒ^ƒ‹M†ˆ—‚ÌÅ‚àŠî–{‚ƂȂéƒtƒBƒ‹ƒ^‚ÅAˆê’èŠÔŠu‚ŃTƒ“ƒvƒŠƒ“ƒO‚³‚ꂽ‰ß‹Ž‚̃f[ƒ^‚ÆA‚ ‚éŒvŽZ‚©‚瓾‚ç‚ꂽŒW”‚ð‚»‚ê‚¼‚êŠ|‚¯‡‚킹A‚·‚ׂĂ̑˜a‚𓾂鎖‚É‚æ‚èŽÀŒ»‚Å‚«‚Ü‚·B + +In@--> Z-1 --> Z-1 --> Z-1 --- EEEE Z-1 -- + | | | | + H0 H1 H2 EEEE Hn + | | | | + ------> + ----> + ---------------------> + ----> Out + + uZ-1v‚Í’x‰„Ší‚ð•\‚µA‚±‚ꂪ˜A‘±‚µ‚ăgƒRƒƒeƒ“‚̂悤‚É•À‚ñ‚Å‚¢‚Ü‚·BuH0v`uHnv‚Í‚»‚ꂼ‚ê‚ÌŠ|‚¯‡‚킹‚éŒW”‚ð•\‚µ‚Ü‚·B +@‚±‚̂悤‚ÈŒvŽZ‚ð‚½‚½‚Ýž‚݉‰ŽZiMAC‰‰ŽZj‚ƌĂт܂·B + +@—Ⴆ‚ΉߋŽ10“_‚̃Tƒ“ƒvƒŠƒ“ƒOƒf[ƒ^‚ÉA‚·‚ׂ睂¶ŒW”0.1‚ðŠ|‚¯‡‚킹‚»‚ê‚ð‡Œv‚·‚ê‚ÎA‚»‚ê‚Í10“_‚É‚¨‚¯‚镽‹Ï’l‚ð‹‚߂Ă¢‚邱‚ƂɂȂèAŒ‹‰Ê‚Æ‚µ‚ăXƒ€[ƒWƒ“ƒO‚³‚ꂽLPF‚Æ‚µ‚Ä“­‚­‚±‚ƂɂȂè‚Ü‚·B + +@‚±‚ÌŒW”H0`Hn‚Ì‚»‚ꂼ‚ê‚ÉA‚ ‚é“Á«‚©‚犄‚èo‚³‚ê‚é’liŠó–]‚·‚éŽü”g”“Á«‚̃Cƒ“ƒpƒ‹ƒX‰ž“šj‚ð—^‚¦‚邯A”CˆÓ‚̃tƒBƒ‹ƒ^‚Æ‚µ‚Ä“­‚©‚¹‚鎖‚ª‚Å‚«‚Ü‚·B + +@FIRƒtƒBƒ‹ƒ^‚Í‚»‚Ì–¼‘O‚Ì’Ê‚èƒCƒ“ƒpƒ‹ƒX‰ž“š‚ª—LŒÀŽžŠÔ‚ÅI—¹‚µ‚Ü‚·‚̂Ŕ­U‚É”Y‚Ü‚³‚ê‚éS”z‚ª‚ ‚è‚Ü‚¹‚ñB‚Ü‚½ŒW”‚ð‘ÎÛ«‚É‚·‚éiH0=Hn, H1=Hn-1,¥¥¥j‚±‚Ƃɂæ‚èA’¼üˆÊ‘Š“Á«‚ɂȂèA‚»‚ꂪ‚±‚̃tƒBƒ‹ƒ^‚ÌÅ‘å‚Ì“Á’·‚Å‚à‚ ‚è‚Ü‚·Bˆê•û‰s‚¢“Á«‚𓾂悤‚Æ‚·‚é‚ÆŽŸ”‚ð‘å‚«‚­‚·‚é•K—v‚ª‚ ‚èA‰ž“š‚ª’x‰„‚·‚邯‚¢‚¤Œ‡“_‚ðŽ‚¿‡‚킹‚Ä‚¢‚Ü‚·B + +@ƒfƒWƒ^ƒ‹M†ˆ—‚̃tƒBƒ‹ƒ^‚ÆŒ¾‚¦‚ÎA‚Ü‚¸‚±‚ÌFIRƒtƒBƒ‹ƒ^‚ÌŽ–‚ðŽw‚·‚ÆŽv‚Á‚Ä‚àŠÔˆá‚¢‚È‚¢‚®‚ç‚¢‚É—Ç‚­Žg‚í‚ê‚Ä‚¢‚Ü‚·B + + +IIRƒtƒBƒ‹ƒ^ +~~~~~~~~~~~~~ +@IIR(Infinite Impulse Response)ƒtƒBƒ‹ƒ^‚͈ȉº‚ÉŽ¦‚·‚悤‚É‹AŠÒ‰ñ˜H‚ª‚ ‚èA‚»‚Ì–¼‘O‚Ì’Ê‚èƒCƒ“ƒpƒ‹ƒX‰ž“š‚ª–³ŒÀ‚É‘±‚«‚Ü‚·B‚»‚Ì“®ì‚̓AƒiƒƒO‰ñ˜H‚ÌLCƒtƒBƒ‹ƒ^‚âƒAƒNƒeƒBƒuƒtƒBƒ‹ƒ^‚ȂǂƓ¯‚¶‚Å‚·‚Ì‚ÅA‚±‚¿‚ç‚̂ق¤‚ªOM‚³‚ñ‚ɂ͓éõ‚݂₷‚¢‚©‚à’m‚ê‚Ü‚¹‚ñB + + +In -----+---------------> b0 --+------ Out + | | | + + <- a1 <- Z-1 -> b1 ->+ + | | | + + <- a2 <- Z-2 -> b2 ->+ + +@IIRƒtƒBƒ‹ƒ^‚ÌÝŒv‚ÍA‚Ü‚¸Šó–]‚·‚éŽü”g”“Á«‚̃AƒiƒƒOƒtƒBƒ‹ƒ^‚ðÝŒv‚µA‚»‚ê‚ðƒfƒWƒ^ƒ‹ƒtƒBƒ‹ƒ^‚ÌŒW”‚ɕϊ·‚·‚é•û–@‚ª—Ç‚­Žæ‚ç‚ê‚Ü‚·B‚±‚Ì•û–@‚ł̓AƒiƒƒOƒtƒBƒ‹ƒ^‚Æ“¯—lAƒoƒ^[ƒ[ƒX“Á«‚âƒ`ƒFƒrƒVƒt“Á«‚ðŽ‚½‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + +@IIRƒtƒBƒ‹ƒ^‚ÌÅ‘å‚Ì“Á’·‚Í­‚È‚¢ŽŸ”‚ʼns‚¢“Á«‚̃tƒBƒ‹ƒ^‚ð쬂ł«‚é“_‚Å‚·B‚Ü‚½‰ž“š’x‚ꂪ­‚È‚¢iŬˆÊ‘ŠjƒVƒXƒeƒ€‚ð\¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B +@ˆê•ûˆÊ‘Š“Á«‚Í•½’R‚ł͂Ȃ­AƒAƒiƒƒOƒtƒBƒ‹ƒ^‚Æ“¯—l‚ÌŒQ’x‰„˜c‚Ý‚ª‚ ‚èA‚Ü‚½ŒW”—ÊŽq‰»Œë·iŒvŽZ‹@‚̌꒷§ŒÀ‚É‚æ‚éŠÛ‚ߌë·j‚≉ŽZŒë·iæŽZ‚Ìۂ̌꒷§ŒÀ‚É‚æ‚éŠÛ‚ߌë·j‚̉e‹¿‚ðŽó‚¯‚â‚·‚¢‚Æ‚¢‚¤Œ‡“_‚ðŽ‚¿‡‚킹‚Ä‚¢‚Ü‚·‚Ì‚ÅAŒÅ’謔“_‰‰ŽZ‚̃fƒWƒ^ƒ‹M†ˆ—‚Å‚ÍAIIRƒtƒBƒ‹ƒ^‚Í‚ ‚Ü‚èŽg‚í‚ê‚Ü‚¹‚ñB + + +IIRŒ^‹¤UŠí +~~~~~~~~~~~~~ +@IIRƒtƒBƒ‹ƒ^‚̈êŽí‚Æ‚µ‚ĉº‹L‚̂悤‚È‹¤UŠí‚ð\¬‚Å‚«‚Ü‚·BMMTTY‚ÌŽü”g”•Ù•ÊŠí‚Ì‚P‚‚͂±‚ê‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·B + +In --- b --+---------------------- Out + | | + + <- a1 <- Z-1 + | | + + <- a2 <- Z-2 + +@‚»‚ꂼ‚ê‚ÌŒW”‚ÍA + + a1 = 2‚…‚˜‚(-ƒÎBT)E‚ƒ‚‚“(2ƒÎFT) + a2 = -‚…‚˜‚(-2ƒÎBT) + b = AE‚“‚‰‚Ž(2ƒÎFT) + + F:‹¤UŽü”g”(Hz) + B:Žü”g”‘шæ•(Hz) + T:ƒTƒ“ƒvƒŠƒ“ƒOŠÔŠu(s) = 1/fs + A:ƒQƒCƒ“ + +‚ÅŠÈ’P‚É‹‚߂邱‚Æ‚ª‚Å‚«AIIRƒtƒBƒ‹ƒ^‚ðÝŒv‚·‚éꇂ̂悤‚È‚â‚₱‚µ‚¢ŒvŽZ‚à•s—v‚Å‚·B + + B‚ð0‚É‚·‚邯‹¤U‰ñ˜H‚ÌQ‚ª–³ŒÀ‘å‚ɂȂèAŠ®‘S–³‘¹Ž¸‚ɂȂè‚Ü‚·‚Ì‚ÅAZ-1‚ɉŠú’l‚ð—^‚¦‚Ä‚¨‚¯‚ÎA‚»‚̂܂ܔ­UŠí‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B + + +ŒŸ”gŠí +~~~~~~~~ +@ƒn[ƒhƒEƒGƒA‚ł̓_ƒCƒI[ƒh‚ðŽg‚¢‚Ü‚·‚ªAƒfƒWƒ^ƒ‹M†ˆ—‚Ìꇂ̓}ƒCƒiƒX‚Ì’l‚¾‚¯‚ð‚O‚É‚·‚é‚©A‚»‚̂܂܃vƒ‰ƒX‚É‚·‚éiâ‘Î’l‚𓾂éj‚¾‚¯‚ÅOK‚Å‚·B + + +Ï•ªŠí +~~~~~~~~ +@‚¢‚ë‚¢‚ë‚È•û–@‚ÅŽÀŒ»‚Å‚«‚邯Žv‚¢‚Ü‚·‚ªAMMTTY‚Ìê‡‚Í‰ß‹Ž‚ÌM†‚ðˆê’èŠúŠÔ‚ɂ‚¢‚Ä•½‹Ï‚·‚éFIRƒtƒBƒ‹ƒ^A‚Ü‚½‚̓oƒ^[ƒ[ƒX“Á«(N*6dB/Oct)‚ðŽ‚ÂIIRƒtƒBƒ‹ƒ^‚Ì‚¢‚¸‚ê‚©‚ð‘I‘ð‚Å‚«‚Ü‚·B + +@‚¢‚¸‚ê‚Ì•ûŽ®‚ð‘I‘ð‚µ‚Ä‚àŒ€“I‚ɂ͕ω»‚µ‚È‚¢‚悤‚Å‚·‚ªAŽóM‚·‚éM†‚ÌŽ¿‚É‚æ‚Á‚Ă͔÷–­‚ÉˆÙ‚È‚é‚æ‚¤‚Å‚·B + +@Ý’è‚·‚éƒXƒ€[ƒWƒ“ƒOŽü”g”‚ÍAFIRƒtƒBƒ‹ƒ^‚Ìꇂ͕½‹Ï‚·‚éŽüŠúŠúŠÔ‚Ì‹t”‚Å—^‚¦AIIRƒtƒBƒ‹ƒ^‚Ìꇂ͂»‚̃JƒbƒgƒIƒtŽü”g”‚Å—^‚¦‚Ü‚·‚ªAFIRƒtƒBƒ‹ƒ^‚ÅÝ’è‚·‚éƒXƒ€[ƒWƒ“ƒOŽü”g”‚æ‚è‚ÍAIIRƒtƒBƒ‹ƒ^‚̃JƒbƒgƒIƒtŽü”g”‚Í’á‚­Ý’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·iÏ•ªŠí‚ÌꇂÌFIRƒtƒBƒ‹ƒ^‚É—^‚¦‚éƒXƒ€[ƒWƒ“ƒOŽü”g”‚Í‚»‚ÌLPF“Á«‚̃JƒbƒgƒIƒtŽü”g”‚ł͂Ȃ­’P‚É•½‹ÏŽüŠú‚Ì‹t”‚Å‚ ‚邱‚Ƃɗ¯ˆÓ‚µ‚ĉº‚³‚¢jB + +@ƒfƒtƒHƒ‹ƒg‚Å‚ÍFIRƒtƒBƒ‹ƒ^‚ɂȂÁ‚Ä‚¢‚Ü‚·‚ªAIIRƒtƒBƒ‹ƒ^‚̂ق¤‚ª—y‚©‚Ɉ—‚ªŒy‚¢‚Å‚·‚Ì‚ÅA‚±‚¿‚ç‚̂ق¤‚ð‘I‘ð‚³‚ê‚é‚Ù‚¤‚ªFB‚©‚à’m‚ê‚Ü‚¹‚ñB’᎟‚Ìꇂ̃JƒbƒgƒIƒtŽü”g”‚Í‚TŽŸ‚ÌꇂÍ40Hz‚®‚ç‚¢A3ŽŸ‚ÌꇂÍ30Hz‚ ‚½‚肪—Ç‚³‚»‚¤‚Å‚·‚ªA‚±‚ê‚ÉŠÖ‚·‚鎄‚ÌŽÀŒ±‚̃Tƒ“ƒvƒ‹”‚Í­‚È‚¢‚Å‚·B + + +VCO +~~~~~ + VCO‚ÍRTTYM†‚̕ϒ²Ší‚âAPLL•ûŽ®‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^‚ÅŽg‚¢‚Ü‚·BƒfƒWƒ^ƒ‹M†ˆ—‚Å‚ÌVCO‚͉º‹L‚̂悤‚È\¬‚ɂȂè‚Ü‚·B + + C2 + | +In --> C1 --+---+-----> sin --> Out + | | + -- Z-1 <- + + C1:VCOƒQƒCƒ“ + C2:ƒtƒŠ[ƒ‰ƒ“ƒjƒ“ƒOŽü”g”‚ðŒˆ’è‚·‚é’l + +@‚±‚̂܂܃vƒƒOƒ‰ƒ€‚·‚邯Z-1‚͂ǂñ‚Ç‚ñ‘å‚«‚È’l‚ɂȂÁ‚Ä‚¢‚«‚Ü‚·‚Ì‚ÅA‚»‚ê‚ð0`2ƒÎ‚܂ł͈̔͂ÅzŠÂ‚·‚邿‚¤‚É‚µ‚Ä‚¨‚«‚Ü‚·(‹ï‘Ì“I‚É‚Í2ƒÎ‚ÅŠ„‚Á‚Ä—]‚è‚ð‹‚߂邩A‚Ü‚½‚Í2ƒÎˆÈã‚ɂȂÁ‚½Žž‚É2ƒÎ‚ðˆø‚¯‚ÎOK‚Å‚·)B +@‚Ü‚½‚PƒTƒ“ƒvƒŠƒ“ƒO–ˆ‚Éusinv‚ðŒvŽZ‚·‚é‚͈̂—‚ÉŽžŠÔ‚ª‚©‚©‚è‰ß‚¬‚Ü‚·‚Ì‚ÅA‚ ‚ç‚©‚¶‚ßusinv‚ðŒvŽZ‚µ‚½‘å‚«‚ȃe[ƒuƒ‹‚ðì‚Á‚Ä‚¨‚«A‚»‚ê‚ðŽQÆ‚·‚é•û–@‚ň—‘¬“x‚𓾂鎖‚ª‚Å‚«‚Ü‚·B + +@ƒfƒWƒ^ƒ‹M†ˆ—‚Å‚ÌVCO‚ÍŽü”g”‚ªˆÀ’肵‚Ä‚¢‚Ü‚·‚Ì‚ÅA‚»‚̂܂ÜFSK‚̕ϒ²Ší‚Æ‚µ‚Ä—˜—p‚µ‚Ä‚à‚Ü‚Á‚½‚­–â‘è‚ ‚è‚Ü‚¹‚ñB + + +PLL +~~~~~ + PLL‚͉º‹L‚ÉŽ¦‚·‚悤‚È\¬‚Å‚±‚ê‚̓AƒiƒƒO‰ñ˜H‚Ƃ܂Á‚½‚­“¯‚¶‚Å‚·BƒfƒWƒ^ƒ‹M†ˆ—‚Å‚ÌˆÊ‘ŠŒŸ”gŠí(Phase Det.)‚ÍA’P‚É—¼ŽÒ‚Ì’l‚ðŠ|‚¯‡‚킹‚邾‚¯‚Å—Ç‚­A‚ƂĂàŠÈ’P‚ÉŽÀŒ»‚Å‚«‚Ü‚·B + +In - Phase Det. -> LoopLPF ---> OutLPF --> Out + | | + | | + +---- VCO <-------+ + +@‚±‚ÌˆÊ‘ŠŒŸ”gŠí‚Ìo—͂ɂ͗¼ŽÒ‚ÌŽü”g”‚̘a‚Æ·‚̬•ª‚ªŒ»‚êA—~‚µ‚¢‚̂ͷ‚̬•ª‚Ȃ̂ÅA‚»‚ê‚ðŽæ‚èo‚·‚½‚ß‚ÉIIRŒ^‚ÌLPF‚Åì‚Á‚½ƒ‹[ƒvƒtƒBƒ‹ƒ^(LoopLPF)‚ð’Ê‚µ‚Ü‚·B‚µ‚©‚µ‚±‚̃tƒBƒ‹ƒ^‚̓‹[ƒv“à‚É‚ ‚邽‚ß‚ÉPLL‚̉ž“š“Á«‚ɑ傫‚­‰e‹¿‚µA‚ ‚Ü‚è‰s‚¢“Á«‚ðŽ‚½‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB’Êí‚Í1ŽŸƒtƒBƒ‹ƒ^‚ª—Ç‚­Žg‚í‚ê‚Ü‚·iƒn[ƒhƒEƒGƒA‚Å\¬‚·‚éPLL‚Ƃ܂Á‚½‚­“¯‚¶‚Å‚·jB + ‚µ‚½‚ª‚Á‚Ä‚±‚ꂾ‚¯‚ł͑jŽ~ˆæ‚ÌŒ¸Š—Ê‚ª•s‘«‚µAŠ®‘S‚ɂ͘a‚̬•ª‚𜋎‚Å‚«‚È‚¢‚Ì‚ÅAo—Í•”‚É‚à‚¤‚P‚ÂLPF(OutLPF)‚ð“ü‚ê‚Ä‚»‚ê‚ðŽæ‚èœ‚«‚Ü‚·B + + RTTY‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^‚Æ‚µ‚ÄŽg‚¤ê‡Aƒ‹[ƒvƒtƒBƒ‹ƒ^‚̃JƒbƒgƒIƒtŽü”g”‚̓Vƒtƒg•‚æ‚è‚à‘å‚«‚­‚µ‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + +@PLL•ûŽ®‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^‚Í‚‘¬ƒfƒR[ƒh‚ª—v‹‚³‚ê‚éꇂɓK‚µ‚Ä‚¢‚Ü‚·‚ªARTTYM†‚̂悤‚ÉA‚»‚̃{[ƒŒ[ƒg‚ª’x‚¢ê‡‚ÍAŽü”g”•Ù•ÊŠí•ûŽ®‚Ì•û‚ªŒü‚¢‚Ä‚¢‚邿‚¤‚ÉŽv‚¢‚Ü‚·B +@‚µ‚©‚µˆ—‚͂ƂĂàŒy‚­‚Äς݂܂·‚Ì‚ÅAOutLPF‚ÌŽŸ”‚ð‘å‚«‚­‚µA‚»‚ÌŒã‚ÌÏ•ªŠí‚ðIIRŒ^‚É‚·‚ê‚ÎA’x‚¢CPU‚Å‚à“®ì‚µ‚Ü‚·B + + +“K‰žƒtƒBƒ‹ƒ^ +~~~~~~~~~~~~~~ + “K‰žƒtƒBƒ‹ƒ^‚̓fƒWƒ^ƒ‹M†ˆ—‚̉Ԍ`‚Å‚·BˆÈ‰º‚É’Pƒ‰»‚µ‚½\¬—á‚ðŽ¦‚µ‚Ü‚·B + +In ------ ’x‰„Ší@-->ƒgƒ‰ƒ“ƒXƒo[ƒTƒ‹ƒtƒBƒ‹ƒ^ ---> Out + | | | + - (Œë·~2ƒÊ)---------> ŒW”XV(ƒÁ) | + | | + ------------------------------------------- +@(ŽQÆM†) + +@‚Ü‚¸In‚©‚ç‚ÌM†‚ð“K“–‚È’x‰„Ší‚ð’Ê‚µ‚ÄAƒgƒ‰ƒ“ƒXƒo[ƒTƒ‹ƒtƒBƒ‹ƒ^iFIRƒtƒBƒ‹ƒ^j‚É“ü—Í‚µ‚Ü‚·BŽŸ‚Ƀgƒ‰ƒ“ƒXƒo[ƒTƒ‹ƒtƒBƒ‹ƒ^‚ðŒo‚½M†‚ð“ü—ÍM†‚ÆŒ¸ŽZ‚µ‚Ä‚»‚̌뷂ð‹‚ßA‚»‚ê‚ðŒ³‚ÉƒtƒBƒ‹ƒ^‚ÌŒW”‚ðXV‚µ‚Ü‚·B + +@ˆê”ʂɎG‰¹‚Ȃǂ̃‰ƒ“ƒ_ƒ€‚ÈM†‚ÌŽ©ŒÈ‘ŠŠÖŠÖ”‚Í’x‰„‚ª‘å‚«‚­‚È‚é‚ɂ‚ê‚Ä‹}Œƒ‚ÉŒ¸­‚µ‚Ü‚·B‚±‚ê‚É‚æ‚è“ü—Í“_‚Æo—Í“_‚ÌŽG‰¹¬•ª‚Ì‘ŠŠÖ‚Í”ñí‚ɬ‚³‚È’l‚ɂȂè‚Ü‚·Bˆê•û–Ú•W‚Æ‚·‚éŽüŠú“I‚Ȭ•ª‚Ì‘ŠŠÖ‚Í‚ ‚é’ö“x‘å‚«‚È’l‚ɂȂè‚Ü‚·B‚±‚Ì}‚ł͌W”XV‚É‚æ‚èA“ü—Í‚Æo—ÍiŽQÆM†j‚Ì“ñæŒë·‚ª¬‚³‚­‚È‚é‚æ‚¤‚Éì—p‚µ‚Ü‚·‚Ì‚ÅAo—Í“_‚Å‚Í‘ŠŠÖ‚Ì‘å‚«‚Ȭ•ª‚Í‹­’²‚³‚êA‹t‚É‘ŠŠÖ‚Ì¬‚³‚Ȭ•ª‚Í—}§‚³‚ê‚Ä‚¢‚«‚Ü‚·B + +@ÅI“I‚É‚ÍuOutv‚©‚çM†‚ðŽæ‚èo‚¹‚ÎAŽüŠú“I‚ÈM†‚ð‹­’²‚µ‚½ƒmƒCƒYƒXƒ€[ƒT“I‚ÈiƒXƒyƒNƒgƒ‹‹­’²Šíj“®ì‚ɂȂèA‚Ü‚½Œë·M†‚ðo—͂ɂ·‚邯ŽüŠú“I‚ÈM†‚ðŽæ‚èœ‚¢‚½ƒI[ƒgƒmƒbƒ`ƒtƒBƒ‹ƒ^‚Æ‚µ‚Ä“®ì‚µ‚Ü‚·B + + MMTTY‚ÅÝ’è‚Å‚«‚éƒpƒ‰ƒ[ƒ^‚͈ȉº‚Ì’Ê‚è‚Å‚·B + + Tap ƒgƒ‰ƒ“ƒXƒo[ƒTƒ‹ƒtƒBƒ‹ƒ^‚ÌŽŸ” + Delay ‘ŠŠÖ’x‰„Ší‚̌” + 2ƒÊ ‚±‚Ì’l‚ð‘å‚«‚­‚·‚邯‰ž“š‚ª‘¬‚­‚È‚è‚Ü‚·B + ƒÁ ‚±‚Ì’l‚𬂳‚­‚·‚邯Œ¸Š‰ž“š‚ª‘¬‚­‚È‚è‚Ü‚·B + Inv ‚±‚ê‚Ƀ`ƒFƒbƒN‚ð•t‚¯‚邯Œë·M†‚ðo—Í‚µ‚Ü‚·B + AGC ŒW”‚Ì’l‚ª¬‚³‚¢Žž‚Éo—Í‚ð‘å‚«‚­‚µ‚Ü‚·B + BPF ƒfƒtƒHƒ‹ƒg‚ÅBPF“Á«‚ðŽ‚½‚¹‚Ü‚·B + + ƒÊ‚ð‘å‚«‚­‚·‚邯‰ž“š‚ª‘‚Ü‚è‚Ü‚·‚ªAŽû‘©‚µ‚É‚­‚­‚È‚è‚Ü‚·B + ƒÁ‚𬂳‚­‚·‚邯A“ü—ÍM†‚ª–³‚­‚È‚Á‚½Žž‚ÌŠeŒW”‚̉º‚ª‚è‹ï‡‚ª‘‚Ü‚è‚Ü‚·‚ªA‚ ‚܂謂³‚­‚µ‚·‚¬‚邯‹t‚ÉŽû‘©‚µ‚È‚­‚È‚Á‚½‚è”­U‚µ‚½‚肵‚Ü‚·B‚±‚̃Á‚Ì“­‚«‚ðŒ©‚é‚É‚ÍA\•ª‚ÉŽû‘©‚µ‚½ó‘Ô‚Å“ü—ÍM†‚ð“Ë‘RØ‚Á‚Ä‚Ý‚é‚Æ‚æ‚¢‚Å‚µ‚傤B•’Ê‚Í1.0‚æ‚è­‚µ‚¾‚¯¬‚³‚È’l‚ðݒ肵‚Ü‚·B + + AGC‚ÆBPF‚Í–{—ˆ‚ÌLMSƒAƒ‹ƒSƒŠƒYƒ€‚ɂ͂ ‚è‚Ü‚¹‚ñ‚ªARTTY—p‚ÉŽÀŒ±“I‚É•t‚¯‚Ă݂½‚à‚̂ł·BAGC‚ÍŽã‚¢M†‚ÌŽž‚É‚à‚ ‚é’ö“x‚̃tƒBƒ‹ƒ^ƒQƒCƒ“‚ðŠm•Û‚·‚邿‚¤‚É“­‚«ABPF‚̓fƒtƒHƒ‹ƒg‚ÅBPF“Á«‚ðŒy‚­Ž‚½‚¹‚邿‚¤‚É“­‚«‚Ü‚·B + + “K‰žƒtƒBƒ‹ƒ^‚Ì“®ì‹ï‡‚̓ʂƃÁ‚¾‚¯‚ł͂Ȃ­ADelay‚ÆTap‚Ì”‚à–§Ú‚ÉŠÖŒW‚µ‚Ü‚·‚Ì‚ÅA‚±‚ê‚ç‚·‚ׂĂð“K“–‚É’²®‚µ‚ÄŽ©•ªD‚݂̓K‰ž“®ì‚ÉŽdã‚°‚ÄŽg‚Á‚ĉº‚³‚¢B + + ­‚µLMS‚Ì’²®‚ð‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªAŽã‚¢M†‚ł͂ ‚Ü‚èŽ|‚­“­‚©‚È‚¢Ž–‚ª‘½‚­A“®ì‚Í–Ê”’‚¢‚Å‚·‚ªAŽÀۂɂ͖ð‚ɂ͗§‚½‚È‚¢‚©‚à’m‚ê‚Ü‚¹‚ñBHi ŠF‚³‚ñ‚àFX‚ÆŽŽ‚µ‚ÄŽÀŒ±‚µ‚Ă݂ĉº‚³‚¢B—Ç‚¢ƒpƒ‰ƒ[ƒ^‚ªŒ©‚‚©‚Á‚½Žž‚ɂ͂º‚Ћ³‚¦‚Ä‚ËI + + +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚Ì\¬ +~~~~~~~~~~~~~~~~~~~~~~ +@ˆÈ‰º‚É‚»‚ꂼ‚ê‚Ì\¬}‚ðŽ¦‚µ‚Ü‚·B + +mŽü”g”•Ù•ÊŠí•ûŽ®n + + (Mark) + +-> ‹¤UŠí -> ŒŸ”g -> Ï•ªŠí - ATC -+ + | | +Sound -> ƒŠƒ~ƒbƒ^ -+ cmp -> 0 or 1 + | (Space) | + +-> ‹¤UŠí -> ŒŸ”g -> Ï•ªŠí - ATC -+ + + +mPLL•ûŽ®n + +Sound -> ƒŠƒ~ƒbƒ^ - Phase Det. > LoopLPF -+-> OutLPF --> Ï•ªŠí --> + | | + | | + +---- VCO <------+ + + + Žü”g”•Ù•ÊŠí•ûŽ®‚ÍAIIRŒ^‹¤UŠí‚Ü‚½‚ÍFIRŒ^BPF‚Ì‚¢‚¸‚ê‚©‚ð‘I‘ð‚·‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚Ì—¼ŽÒ‚Ì“Á«‚̈Ⴂ‚ÍXY-Scope•\ަ‚ð‚·‚é‚ÆŒ°’˜‚É•\‚ê‚Ü‚·‚̂Ŗʔ’‚¢‚ÆŽv‚¢‚Ü‚·BIIRŒ^‹¤UŠí‚ÍLC‹¤U‰ñ˜H‚ɋ߂¢“Á«‚ÅAˆê•ûFIRŒ^BPF‚Í’¼üˆÊ‘Š“Á«‚ª•ÛØ‚³‚ê‚Ü‚·B + + ‚¢‚¸‚ê‚Ìê‡‚à‚±‚Ì‚Q‚‚̋¤UŠíi‚Ü‚½‚ÍBPFj‚Ìo—Í‚ðŒŸ”g‚µ‚½ŒãA‚»‚ꂼ‚ꕽ‹ÏŒ^iFIRŒ^j‚Ü‚½‚ÍIIRŒ^LPF‚Å\¬‚µ‚½Ï•ªŠí‚ð’Ê‚µA‚»‚Ìo—͂̑嬂ð”äŠr‚µ‚Ä‚¢‚Ü‚·B + Ver1.19‚܂ł͌Ÿ”gŠí‚Ì‚ ‚Æ‚ÉAGC‚ð“ü‚ê‚Ä‚¢‚Ü‚µ‚½‚ªA‚ ‚Ü‚èŒø‰Ê‚ª‚È‚©‚Á‚½‚Ì‚ÅAŒ‹‹ÇƒI[ƒ\ƒhƒbƒNƒX‚ÈƒŠƒ~ƒbƒ^ƒAƒ“ƒv‚ð‘O’u‚·‚邿‚¤‚É–ß‚µ‚Ü‚µ‚½B‚Ü‚½Ver1.58‚©‚ç‚ÍATC‚ð’ljÁ‚µ‚Ä‚ ‚è‚Ü‚·B + +@PLL•ûŽ®‚à‹³‰È‘’Ê‚è‚Ì\¬‚Å‚·BXY-Scope‚ð•\ަ‚³‚¹‚邽‚ß‚ÉAIIRŒ^‹¤UŠí‚É‚àM†‚ðƒpƒ‰‚Å“ü‚ê‚Ä‚ ‚è‚Ü‚·‚ªA‚±‚Ì‹¤UŠí‚Ìo—͂̓fƒR[ƒh‚ɂ͊֌W‚µ‚Ü‚¹‚ñB + + ‚¢‚¸‚ê‚ÌꇂàŠeƒpƒ‰ƒ[ƒ^‚ð’²®‚·‚éÛA•\ަƒƒjƒ…[‚ÌuƒIƒVƒƒXƒR[ƒvv‚ð‘I‘ð‚·‚é‚ÆƒIƒVƒƒXƒR[ƒv‰æ–Ê‚ð•\ަ‚µ‚Ü‚·‚Ì‚ÅAuTrigvƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚ÄŠeM†‚Ìó‘Ô‚ðŠÏ‘ª‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + ‚±‚̃IƒVƒƒXƒR[ƒv‚Í‚SŒ»Û‚ÅAã‚©‚çƒ}[ƒNŽü”g”M†AƒXƒy[ƒXŽü”g”M†AƒRƒ“ƒpƒŒ[ƒ^‚Ìo—ÍM†AƒfƒR[ƒh“¯Šúƒpƒ‹ƒXM†‚Ì‚S‚‚ð•\ަ‚µ‚Ü‚·B + ƒ}[ƒNŽü”g”M†‚¨‚æ‚уXƒy[ƒXŽü”g”M†‚ÍAuM†Œ¹v‚ðØ‚è‘Ö‚¦‚邱‚Ƃɂæ‚èŠÏ‘ªƒvƒ[ƒu‚̈ʒu‚ªˆÈ‰º‚̂悤‚ÉØ‚è‘Ö‚í‚è‚Ü‚·B + +[Žü”g”•Ù•ÊŠí•ûŽ®‚Ìê‡] + 1.IIRŒ^‹¤UŠí‚Ü‚½‚ÍFIRŒ^BPFo—ÍŒã‚Ì”gŒ` + 2.ŒŸ”gŒã‚Ì”gŒ` + 3.Ï•ªŠí’ʉߌã‚Ì”gŒ` + +[PLL•ûŽ®‚Ìê‡] + 1.IIR‹¤UŠío—ÍŒã‚Ì”gŒ`iƒfƒR[ƒh‚ɂ͊֌W‚µ‚Ü‚¹‚ñj + 2.オLoopLPF‚Ìo—ÍA‰º‚ªOutLPF‚Ìo—Í + 3.Ï•ªŠí’ʉߌã‚Ì”gŒ` + + ƒfƒR[ƒh“¯Šúƒpƒ‹ƒX‚ÍAˆÈ‰º‚̂悤‚ÈF•ª‚¯‚ª‚³‚ê‚Ä‚¢‚Ü‚·B + + ‰©F ƒXƒ^[ƒgƒrƒbƒgŒŸoˆÊ’u + ”’‰© ƒf[ƒ^Žæ‚肱‚݈ʒu + ÂF ƒXƒgƒbƒvƒrƒbƒg—\‘zˆÊ’u + + ƒXƒgƒbƒvƒrƒbƒg‚ª³‚µ‚­ŒŸo‚³‚ê‚½Žž‚ÍAÂFƒpƒ‹ƒX‚Í‚QŒÂ˜A‘±•\ަ‚³‚êA³‚µ‚­ŒŸo‚³‚ê‚È‚©‚Á‚½ŽžiƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[Žžj‚ÍA‚PŒÂ‚µ‚©•\ަ‚³‚ê‚Ü‚¹‚ñB + ‚±‚Ì‚QŒÂ–Ú‚ÌÂFƒpƒ‹ƒX‚̓Xƒgƒbƒvƒrƒbƒg‚ÌI—¹—\‘zˆÊ’u‚̂قñ‚Ì­‚µŽè‘O‚Éݒ肵‚Ä‚ ‚èAƒfƒR[ƒ_[‚Í‚±‚̈ʒu‚©‚玟‚̃Xƒ^[ƒgƒrƒbƒg‚ÌŒŸo“®ì‚É“ü‚è‚Ü‚·B“¯Šúƒpƒ‹ƒX‚Íí‚Ƀf[ƒ^‚Ì^’†•t‹ß‚Ɉʒu‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–ʂ̃fƒR[ƒhƒy[ƒW‚ÅAu‘½”Œˆ˜_—ƒfƒR[ƒhv‚Ƀ`ƒFƒbƒN‚ð•t‚¯‚Ä‚¢‚éê‡A“¯Šúƒpƒ‹ƒX‚̓f[ƒ^‚̕ω»“_‚Ɉʒu‚·‚邿‚¤‚ɂȂè‚Ü‚·B‚±‚ÌꇃXƒ^[ƒgƒrƒbƒg‚ð•\‚·‰©F‚Ì“¯Šúƒpƒ‹ƒX‚ÍŒŸoˆÊ’u‚ƃf[ƒ^ŠJŽnˆÊ’u‚É‚Q–{•\ަ‚³‚ê‚Ü‚·BƒfƒR[ƒ_[‚Í‚PƒrƒbƒgŠúŠÔ‚ ‚½‚è‚̃}[ƒN‚ƃXƒy[ƒX‚̃Tƒ“ƒvƒ‹”‚𒲂×A‚»‚Ì”‚Ì‘½‚¢‚Ù‚¤‚ðƒf[ƒ^‚Æ‚µ‚ÄŽæ‚肱‚݂܂·B‚±‚Ìê‡ARxStopƒrƒbƒg‚ð‚Pƒrƒbƒg‚É‚µ‚Ä‚¢‚éê‡AÂFƒpƒ‹ƒX‚Íí‚É‚P‚‚µ‚©•\ަ‚³‚ê‚Ü‚¹‚ñB + ‚Ü‚½Ý’è‰æ–ʂ̃fƒR[ƒhƒy[ƒW‚ÅuƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[‚Ì–³Ž‹v‚Ƀ`ƒFƒbƒN‚ð•t‚¯‚Ä‚¢‚éê‡AƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[‚Í–³Ž‹‚³‚êAƒXƒgƒbƒvƒrƒbƒg‚Ìó‘Ô‚ÉŠÖ‚í‚炸ƒf[ƒ^‚ÍŽæ‚肱‚Ü‚ê‚邿‚¤‚ɂȂè‚Ü‚·B + ƒtƒŒ[ƒ~ƒ“ƒOƒGƒ‰[‚𖳎‹‚·‚邯AƒXƒgƒbƒvƒrƒbƒg‚¾‚¯‚ª—Ž‚¿‚½ê‡‚ೂµ‚­•¶Žš‚Æ‚µ‚Ä•\ަ‚³‚ê‚Ü‚·‚ªA–³M†Žž‚É‚à•¶Žš‚ª•\ަ‚³‚ê‚éŠm—§‚Í‚‚­‚È‚è‚Ü‚·B + + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–ʂ̃fƒR[ƒhƒy[ƒW‚ÅAƒ{[ƒŒ[ƒgCƒrƒbƒg’·CƒXƒgƒbƒvƒrƒbƒgCƒpƒŠƒeƒB“™‚̃fƒR[ƒhƒpƒ‰ƒ[ƒ^‚à•ÏX‚Å‚«‚Ü‚·‚ªAƒAƒ}ƒ`ƒ…ƒA‚ÌRTTY‚Ìꇂ̓fƒtƒHƒ‹ƒg(BaudRate=45.45, BitLength=5, RxStop=1 or 1.42, Parity=NONE)‚©‚ç•ÏX‚µ‚È‚¢‚ʼnº‚³‚¢B + +*RxStop=1 ‚Ü‚½‚Í 1.42‚ð‘I‘ð‚µ‚Ä‚àA‘—M‚·‚é•„†‚̃Xƒgƒbƒvƒrƒbƒg‚Í1.5bit‚Å‚·B + + +ƒI[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO +~~~~~~~~~~~~~~~~~~~~~~ +@ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð“à•”‚Å•ÏX‚·‚éƒI[ƒo[ƒTƒ“ƒvƒŠƒ“ƒOiƒ}ƒ‹ƒ`ƒŒ[ƒgƒVƒXƒeƒ€j‚Æ‚¢‚¤‹Zp‚ªAˆ—‘¬“x‚ð‰Ò‚®‚½‚߂ɃfƒWƒ^ƒ‹M†ˆ—‚ł͂²‚­íޝ“I‚ÉŽg‚í‚ê‚Ä‚¢‚Ü‚·BMMTTY‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^•”‚àƒI[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚Ü‚·BˆÈ‰º‚ɃI[ƒo[ƒTƒ“ƒvƒŠƒ“ƒOƒVƒXƒeƒ€‚Ì\¬}‚ðŽ¦‚µ‚Ü‚·B + + A/D --> LPF --> «M --> ±Ìߨ¹°¼®Ý --> ªL --> LPF --> D/A + + ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð‰º‚°‚é•”•ª‚ðƒfƒWƒ[ƒ^i«Mj‚ƌĂÑA—Ⴆ‚Î1/2‚É‚·‚éꇂɂÍAƒTƒ“ƒvƒŠƒ“ƒOƒf[ƒ^‚ð‚Q‰ñ‚É‚P‰ñ‚ÆŠÔˆø‚¯‚Ηǂ¢‚킯‚Å‚·‚©‚ç˜b‚ÍŠÈ’P‚Å‚·B +@‚½‚¾‚±‚̂܂܂¾‚Æ“ü—Í•”‚Ì•¨—“I‚ȃTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð‰º‚°‚é‚̂Ƃ܂Á‚½‚­“¯‚¶‚±‚ƂɂȂèA’á‚¢Žü”g”‚ÅÜ‚è•Ô‚µ˜c‚Ý‚ª”­¶‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·‚Ì‚ÅA‚±‚Ì•”•ª‚Ì‘O‚ɃfƒWƒ^ƒ‹ƒtƒBƒ‹ƒ^‚É‚æ‚éLPF‚ð“ü‚ê‚Ä‚¨‚«‚Ü‚·B + +@ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ðã‚°‚é•”•ª‚̓Cƒ“ƒ^[ƒ|[ƒŒ[ƒ^iªLj‚ƌĂÑA—Ⴆ‚Î2”{‚É‚·‚éꇂɂÍA‚PƒTƒ“ƒvƒŠƒ“ƒO‚Ì“r’†‚Ì“_‚ðì‚ç‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Ì‚ÅA­‚µ“‚»‚¤‚ÉŽv‚¦‚Ü‚·‚ªA‚±‚ê‚͂Ƃ肠‚¦‚¸‚»‚Ì“r’†‚Ì“_‚ðƒGƒCƒ„ƒb‚Æ‚O‚É‚µ‚Ä‚µ‚Ü‚¢AƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð–³—‚â‚èã‚°‚Ä‚¨‚¢‚Ä‚©‚çA‚»‚Ì‚ ‚ƃfƒWƒ^ƒ‹ƒtƒBƒ‹ƒ^‚É‚æ‚éLPF‚ŃXƒ€[ƒWƒ“ƒO‚µ‚ĕ⊮‚µ‚Ü‚·B + +@2”{‚̃I[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO‚ðs‚¤‚±‚Ƃɂæ‚èA—Ⴆ‚ÎFIRŒ^ƒtƒBƒ‹ƒ^‚ł͂»‚ÌŽŸ”‚ª”¼•ª‚Å“¯‚¶“Á«‚̃tƒBƒ‹ƒ^‚𓾂鎖‚ª‚Å‚«‚邿‚¤‚ɂȂè‚Ü‚·B‚Ü‚½‚PƒTƒ“ƒvƒŠƒ“ƒOŠúŠÔ‚ª2”{‚ɂȂè‚Ü‚·‚Ì‚ÅAˆ—‚É‚à—]—T‚ª¶‚Ü‚ê‚Ü‚·B +@‚½‚¾‚µƒAƒvƒŠƒP[ƒVƒ‡ƒ“•”‚ł̃iƒCƒLƒXƒgŽü”g”iˆ—‰Â”\‚ÈŽü”g”=ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚Ì1/2j‚Í”¼•ª‚ɂȂè‚Ü‚·‚Ì‚ÅA‚±‚Ì”{—¦‚ɂ͂¨‚Ì‚¸‚ÆŒÀŠE‚ª‚ ‚邱‚ƂɂȂè‚Ü‚·B + + +›ƒŠƒ~ƒbƒ^[‚̈—Žü”g” +~~~~~~~~~~~~~~~~~~~~~~~~ + ƒfƒtƒHƒ‹ƒg‚Å‚ÍƒŠƒ~ƒbƒ^[‚̓Tƒ“ƒvƒŠƒ“ƒOŽü”g”11025Hz‚Å“®ì‚µ‚Ä‚¨‚èA‚±‚Ì•”•ª‚ÅˆÊ‘Š˜c‚Ý‚ª”­¶‚µ‚Ü‚·B‚±‚ê‚̓fƒR[ƒh“®ì‚ɂ͑傫‚­‰e‹¿‚µ‚È‚¢‚悤‚Å‚·‚ªAXYScope‚Ì•\ަ‚ɘc‚݂ƂȂÁ‚ÄŒ»‚ê‚Ü‚·B + + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÅƒŠƒ~ƒbƒ^[‚ÌuOver Samplingv‚̃`ƒFƒbƒN‚ð•t‚¯‚邯AMMTTY‚͈ȉº‚̂悤‚ÉƒŠƒ~ƒbƒ^[‚¾‚¯‚ð‚S”{‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”(44100Hz)‚Å“®ì‚³‚¹‚±‚̘c‚Ý‚ðŠÉ˜a‚³‚¹‚Ü‚·B + +Sound --> ªL(4) -> LPF --> Limiter --> LPF -> «M(1/4) --> LimitOut +11025Hz 44100Hz 11025Hz + + CPUƒpƒ[‚É—]—T‚ª‚ ‚éꇂÍAuOver Samplingv‚̃`ƒFƒbƒN‚ð“ü‚ê‚Ä‚¨‚¢‚½‚Ù‚¤‚ªXYScope‚Ì•\ަ‚ª­‚µãY—í‚É‚È‚é‚ÆŽv‚¢‚Ü‚·B + + + ‚Ü‚½‚±‚ê‚Æ‚͕ʂɕ\ަƒƒjƒ…[‚ÌXYScope‚̈—•iŽ¿‚ð‚‚­‚·‚邯AMMTTY‚͈ȉº‚̂悤‚ÉXYScope‚É—^‚¦‚éM†‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚¾‚¯‚ð‚‚­‚µ‚Ü‚·B + + Mark ---> ªL(N) -> LPF --> X + Space ---> ªL(N) -> LPF --> Y + + ‚±‚̈—‚ÍƒŠƒ~ƒbƒ^‚Å‚ÌˆÊ‘Š˜c‚݂ɑ΂µ‚Ă͌ø‰Ê‚Í‚ ‚è‚Ü‚¹‚ñ‚ªA•\ަ•ª‰ð”\‚ª‚‚Ü‚èXYScope‚ªŒ©‚â‚·‚­‚È‚è‚Ü‚·B + + +FFT +~~~~~ + FFT‚ÍŽQl•¶Œ£‚à‘½‚­A‚±‚±‚Å‚ÍÚ‚µ‚­G‚ê‚Ü‚¹‚ñ‚ªAŽžŠÔ—̈æ‚ÌM†‚ðŽü”g”—̈æi‚Ü‚½‚Í‚»‚Ì‹tj‚ɕϊ·‚·‚é‚̂Ɏg‚í‚êAMMTTY‚ł͎ü”g”ƒXƒyƒNƒgƒ‹•\ަ‚¨‚æ‚ÑWaterFall•\ަ‚ÌÛ‚ÉŽg‚Á‚Ä‚¢‚Ü‚·B +@•’ʂ̑f’¼‚ÈDFTi—£ŽU“Iƒt[ƒŠƒG•ÏŠ·j‚Å‚ÍA—Ⴆ‚ÎN“_‚̉ðÍ‚ðs‚¤ê‡‚ÉN~N‰ñ‚ÌŒvŽZ‚ª•K—v‚Å‚·‚ªAFFT‚ÌꇂÍN‚ð‚Q‚ׂ̂«æ‚É‘I‚Ô‚±‚Ƃɂæ‚èN~log2(N)‰ñ‚ÉŒ¸‚ç‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B +@ˆÈ‰º‚̑ЂɃTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ªÚ‚Á‚Ä‚¢‚Ü‚·B‘¼‚É‚à”»‚èˆÕ‚­‰ðà‚³‚ꂽ‘Ђª‘½‚­‚ ‚è‚Ü‚·‚̂ł»‚ê‚ç‚ðŽQÆ‚³‚ê‚邯—Ç‚¢‚Å‚µ‚傤B + +Basic‚Ì—á +@ŽO’J ­ºuƒfƒWƒ^ƒ‹ƒtƒBƒ‹ƒ^ƒfƒUƒCƒ“viŠ”jºW“° •½¬‚U”N‚SŒŽ +Pascal‚Ì—á +@ŽOã ’¼Ž÷uƒfƒWƒ^ƒ‹M†ˆ—ƒvƒƒOƒ‰ƒ~ƒ“ƒO“ü–åvCQo”ÅiŠ”j1993 + +@‚È‚¨AMMTTY‚ÌFIRƒtƒBƒ‹ƒ^‚ÌŽü”g”“Á«•\ަ‚ÍFFT‚ł͂Ȃ­DFT‚Ȃ̂ÅAˆ—‚ª‚ƂĂàd‚¢‚Å‚·BHi + + +ƒTƒEƒ“ƒhƒJ[ƒh‚̃x[ƒXƒTƒ“ƒvƒŠƒ“ƒOŽü”g” +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + MMTTY‚̓TƒEƒ“ƒhƒJ[ƒh‚ɑ΂µ‚ăfƒtƒHƒ‹ƒg‚ŃTƒ“ƒvƒŠƒ“ƒOŽü”g”11025Hz‚ðŽw’肵‚Ü‚·B‚±‚ê‚Í‘S‚ẴTƒEƒ“ƒhƒJ[ƒh‚ª•W€‚ŃTƒ|[ƒg‚·‚éÅ‚àˆÀ‘S‚ÈŽü”g”‚Å‚·B +@‚µ‚©‚µ‚ ‚È‚½‚̃TƒEƒ“ƒhƒJ[ƒh‚ª‘Ήž‚·‚é‚È‚ç‚ÎAMMTTY‚ÌClock’l‚ð•ÏX‚µ‚ÄA6000Hz,8000Hz‚Ü‚½‚Í12000Hzƒx[ƒX‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚ŃTƒEƒ“ƒhƒJ[ƒh‚ð“®ì‚³‚¹‚邱‚Æ‚à‚Å‚«‚Ü‚·B + +@Clockƒx[ƒX’l‚ÆClock”͈ÍAŠe“®ìŽü”g”‚͈ȉº‚̂悤‚ɂȂè‚Ü‚·B + +ƒx[ƒX’l 6000 8000 11025 12000 +----------Clock”͈Í---------------------------------- +Clock‰ºŒÀ 5000 7000 10000 11600 +ClockãŒÀ 6999 9999 11599 12500 +----------Demodulator-------------------------------- +ƒI[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO ‚È‚µ ‚È‚µ 1/2 1/2 +ƒiƒCƒLƒXƒgŽü”g” 3000 4000 2756 3000 +----------Modulator---------------------------------- +ƒiƒCƒLƒXƒgŽü”g” 3000 4000 5513 6000 +----------FFT---------------------------------------- +FFT“_” 1024 1024 2048 2048 +ƒiƒCƒLƒXƒgŽü”g” 3000 4000 5513 6000 +ŽûWŽžŠÔ[ms] 171 128 186 171 +----------XY Scope----------------------------------- +ƒf[ƒ^“_” 512 512 512 512 +ƒiƒCƒLƒXƒgŽü”g” 3000 4000 2756 3000 +ŽûWŽžŠÔ[ms] 85 128 93 85 + +*ƒiƒCƒLƒXƒgŽü”g”=˜_—ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚Ì1/2‚ÌŽü”g”iƒfƒWƒ^ƒ‹M†ˆ—‚ÅŒ³‚ÌM†‚É•œŒ³‰Â”\‚Ș_—ŒÀŠEŽü”g”j + + +@—Ⴆ‚Î6000Hzƒx[ƒX‚ð‘I‘ð‚·‚éê‡AƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Êu‚»‚Ì‘¼vƒy[ƒW‚ÅAƒTƒEƒ“ƒhƒJ[ƒhClock’l‚É6000‚ð‘I‘ð‚µ‚½ŒãAˆê’UMMTTY‚ðI—¹‚µ‚ÄÄ‹N“®‚µ‚ĉº‚³‚¢BˆÈŒãMMTTY‚Í6000Hz‚ŃTƒEƒ“ƒhƒJ[ƒh‚ð“®ì‚³‚¹‚Ü‚·B + Šù‚É‚ ‚½‚È‚ª11025ƒx[ƒX‚ŃNƒƒbƒN•Ⳃðs‚Á‚Ä‚¢‚éê‡AŽŸ‚̂悤‚ÉClock‚ÉÝ’è‚·‚鳊m‚È’l‚ðŒvŽZ‚Å‹‚߂邱‚Æ‚à‚Å‚«‚Ü‚·i’[”‚ÍŽlŽÌŒÜ“ü‚µ‚ĉº‚³‚¢jB + + Clock = ]—ˆ‚Ì•â³Clock’l x Šó–]‚·‚éƒx[ƒX’l / 11025 + +@ƒTƒEƒ“ƒhƒJ[ƒh‚̃x[ƒXŽü”g”‚ð‰º‚°‚邯CPU‚Ö‚Ì•‰‰×‚Í’˜‚µ‚­ŒyŒ¸‚³‚ê‚Ü‚·B“Á‚É6000Hz‚ð‘I‘ð‚µ‚½ê‡‚»‚ÌŒø‰Ê‚ÍŒ°’˜‚Å‚·B + ‚½‚¾‚µƒfƒtƒHƒ‹ƒg‚̃pƒ‰ƒ[ƒ^‚Í11025Hz‚Å’²®‚³‚ê‚Ä‚¢‚邽‚ßA‚ ‚È‚½Ž©g‚Å“®ìƒpƒ‰ƒ[ƒ^‚ðŽáб’²®‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢ê‡‚ª‚ ‚è‚Ü‚·B + +6000Hzƒx[ƒX‚Ìê‡ +~~~~~~~~~~~~~~~~~~ +@‚Ù‚Æ‚ñ‚ǂ̃pƒ‰ƒ[ƒ^‚Í•ÏX‚µ‚È‚­‚Ä‚à‚»‚̂܂܎g—p‚Å‚«‚Ü‚·BƒTƒEƒ“ƒhƒJ[ƒh‚̃oƒbƒtƒ@ƒTƒCƒY‚̓fƒtƒHƒ‹ƒg‚æ‚è‚àŒ¸­‚³‚¹‚½•û‚ª‘€ì«‚͉ü‘P‚µ‚Ü‚·B +@‘O’uƒtƒBƒ‹ƒ^‚ÆTxBPF‚Ì“Á«‚Í11025Hzƒx[ƒX‚Æ”äŠr‚µ‚ĉs‚­‚È‚è‚Ü‚·‚Ì‚ÅA‚¨D‚Ý‚Ìó‘Ô‚É’²®‚µ‚ĉº‚³‚¢BTap”‚𔼕ª‚É‚·‚邯ƒfƒtƒHƒ‹ƒg‚Ƃقړ¯‚¶“Á«‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚·B“Á‚ÉTxBPF‚Í‚»‚̂܂܂ł͋·‰ß‚¬‚Ü‚·‚Ì‚ÅTap”‚ðŒ¸­‚³‚¹‚½‚Ù‚¤‚ª—Ç‚¢‚©‚à’m‚ê‚Ü‚¹‚ñB + +8000Hzƒx[ƒX‚Ìê‡ +~~~~~~~~~~~~~~~~~~ +@‚±‚ÌŽü”g”‚͂قƂñ‚ǂ̃TƒEƒ“ƒhƒJ[ƒh‚ÅŽg—p‰Â”\‚̂悤‚Å‚·‚ªAƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚̈—Žü”g”‚ª‚‚­‚È‚è‰ß‚¬‚邽‚ßA6000Hzƒx[ƒX‚Æ”äŠr‚µ‚ÄCPU•‰‰×‚ɑ΂·‚éƒƒŠƒbƒg‚Í‚ ‚Ü‚è‘å‚«‚­‚ ‚è‚Ü‚¹‚ñB + Žü”g”•Ù•ÊŠí‚ÉFIRŒ^BPF‚ð‘I‘ð‚·‚éê‡ATap”‚ð–ñ1.4”{(96ŽŸ‚®‚ç‚¢)‚É‘‰Á‚³‚¹‚é•K—v‚ª‚ ‚é‚©‚à’m‚ê‚Ü‚¹‚ñB‚µ‚©‚µIIRŒ^‹¤UŠí‚Ì“Á«‚͂قƂñ‚Ǖω»‚¹‚¸‚»‚̂܂܂̃pƒ‰ƒ[ƒ^‚ÅŽg—p‚Å‚«‚Ü‚·B +@‚±‚ÌꇂàƒTƒEƒ“ƒhƒJ[ƒh‚̃oƒbƒtƒ@ƒTƒCƒY‚̓fƒtƒHƒ‹ƒg‚æ‚è‚àŒ¸­‚³‚¹‚½‚Ù‚¤‚ª‘€ì«‚͉ü‘P‚µ‚Ü‚·B +@‘O’uƒtƒBƒ‹ƒ^‚ÆTxBPF‚Ì“Á«‚Í11025Hzƒx[ƒX‚Æ”äŠr‚µ‚ĉs‚­‚È‚è‚Ü‚·‚Ì‚ÅA‚¨D‚Ý‚Ìó‘Ô‚É’²®‚µ‚ĉº‚³‚¢BTap”‚ð–ñ0.7”{‚ÉŒ¸­‚³‚¹‚邯ƒfƒtƒHƒ‹ƒg‚Ƃقړ¯‚¶“Á«‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚·B“Á‚ÉTxBPF‚Í‚»‚̂܂܂łͭ‚µ‹·‰ß‚¬‚Ü‚·‚Ì‚ÅTap”‚ðŒ¸­‚³‚¹‚½‚Ù‚¤‚ª—Ç‚¢‚©‚à’m‚ê‚Ü‚¹‚ñB + +12000Hzƒx[ƒX‚Ìê‡ +~~~~~~~~~~~~~~~~~~~ +@‚·‚ׂẴpƒ‰ƒ[ƒ^‚ð•ÏX‚¹‚¸‚ɂقړ¯“™‚Ì“Á«‚ª“¾‚ç‚ê‚Ü‚·B‚±‚Ìê‡11025Hz‚Æ”äŠr‚µ‚ÄCPU‚Ì•‰‰×‚͎኱㸂µ‚Ü‚·B + + +@ˆÈ‰º‚ÉŠeƒTƒ“ƒvƒŠƒ“ƒOƒx[ƒX‚Å‚ÌMMTTY‚Ì“®ì\¬‚ð®—‚µ‚Ä‚¨‚«‚Ü‚·B + +[ŽóM- 11025/12000] + +---> BPF -> Notch/LMS -> Limitter -> M(1/2) -> Demodulator + ~~~~~~~~~~ 11025/12000 ~~~~~~~~~~~|~~~~~~~ 5513/6000 + +[ŽóM- 6000/8000] + +---> BPF -> Notch/LMS -> Limitter -> Demodulator + ~~~~~~~~~~~~~~~~ 6000/8000 ~~~~~~~~~~~~~~~~ + +[‘—M] +TxLPF ----> VCO ----> TxBPF +~~ 6000/8000/11025/12000 ~~ + + +@‘O’uƒtƒBƒ‹ƒ^AƒŠƒ~ƒbƒ^[ATxLPFATxBPFAFFT“™‚̓fƒ‚ƒWƒ…ƒŒ[ƒ^‚̃I[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO‚Ƃ͖³ŠÖŒW‚Å‚·B‚±‚ê‚ç‚Íí‚É•¨—ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚Å“®ì‚µ‚Ü‚·B +@ƒI[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO‚Ì€‚ʼnðà‚µ‚½‚悤‚ÉAƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð‰º‚°‚邯“¯‚¶ŽŸ”‚Å‚à‰s‚¢“Á«‚̃tƒBƒ‹ƒ^‚ª“¾‚ç‚ê‚邱‚Æ‚ðŽv‚¢o‚µ‚ĉº‚³‚¢B•¨—ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð‰º‚°‚邱‚Æ‚ÍCPU•‰‰×‚ɑ΂µ‚Ĉȉº‚Ì“_‚ÅŒø‰Ê“I‚Å‚· + +EƒTƒ“ƒvƒŠƒ“ƒOŠÔŠu‚ª’·‚­‚È‚é‚̂ł»‚ꂾ‚¯ˆ—‚̃}[ƒWƒ“‚ª‘‚¦‚é +E­‚È‚¢ŽŸ”‚Å“¯‚¶“Á«‚ÌFIRƒtƒBƒ‹ƒ^‚ª\¬‚Å‚«‚é +Eƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚̃I[ƒo[ƒTƒ“ƒvƒŠƒ“ƒOˆ—‚Ì•K—v‚ª‚È‚­‚È‚é + + +@ƒx[ƒXŽü”g”‚É6000Hz‚Ü‚½‚Í12000Hz‚ð‘I‘ð‚µ‚½ê‡Aƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚̃iƒCƒLƒXƒgŽü”g”(3000Hz)‚ÍÅ‚à“K‚µ‚½ó‘ԂɂȂè‚Ü‚·B‚µ‚©‚µƒTƒEƒ“ƒhƒJ[ƒh‚É‚æ‚Á‚Ä‚ÍA‚±‚ê‚ç‚ÌŽü”g”‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢ê‡‚ª‚ ‚èAX‚ÉMMTTY‚ɃGƒ‰[‚ð’Ê’m‚µ‚È‚¢ê‡‚ª‚ ‚è‚Ü‚·‚Ì‚ÅA•K‚¸‘—ŽóM‚ɈÙ킪‚È‚¢‚©Šm”F‚µ‚ĉº‚³‚¢B + +@ˆÙ‚È‚éƒx[ƒXŽü”g”‚Ř^‰¹‚µ‚½MMVƒtƒ@ƒCƒ‹‚ͳ‚µ‚­Ä¶‚Å‚«‚Ü‚¹‚ñB‚Ü‚½ƒx[ƒXŽü”g”‚ð‰º‚°‚邯˜^‰¹‚³‚ê‚éMMVƒtƒ@ƒCƒ‹‚Ì—e—ʂ͓¯‚¶˜^‰¹ŽžŠÔ‚łଂ³‚­‚È‚è‚Ü‚·B + +@6000Hzƒx[ƒX‚ð‘I‘ð‚µ‚½ê‡AƒiƒCƒLƒXƒgŽü”g”‹ß•Ó‚Å‚ÍAD/AƒRƒ“ƒo[ƒ^‚̗뎟ƒz[ƒ‹ƒh“Á«(ƒAƒp[ƒ`ƒƒŒø‰Ê)‚É‚æ‚èo—̓Œƒxƒ‹‚ªÅ‘å4dB’ö“x’ቺ‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B‚‚¢Žü”g”‚ÅL‚¢ƒVƒtƒg•‚ðÝ’è‚·‚邯Aƒ}[ƒNŽü”g”‚ƃXƒy[ƒXŽü”g”‚ŃŒƒxƒ‹·‚ª”­¶‚·‚é‰Â”\«‚ª‚ ‚邱‚Ƃɗ¯ˆÓ‚µ‚ĉº‚³‚¢iƒAƒ}ƒ`ƒ…ƒA–³ü‚ÌRTTY‚ł͂±‚̂悤‚ÈŽg‚¢•û‚Í‚µ‚È‚¢‚̂Ŗâ‘è‚͂Ȃ¢‚ÆŽv‚¢‚Ü‚·jB + + +ÅŒã‚É +~~~~~~~~ + ‰½‚ÆŒ¾‚Á‚Ä‚àƒfƒWƒ^ƒ‹M†ˆ—‚ÍAƒCƒ“ƒs[ƒ_ƒ“ƒX‚ðl—¶‚µ‚È‚­‚Ä—Ç‚¢“_‚ªŠy‚¾‚ÆŽv‚¢‚Ü‚·Bƒf[ƒ^‚ÍŒ³‚Ìó‘Ԃ𑹂Ȃ킸‚ɉ½“x‚Å‚àƒRƒs[‚Å‚«‚Ü‚·‚Ì‚ÅA‚±‚ê‚Ío—̓Cƒ“ƒs[ƒ_ƒ“ƒX‚Oƒ¶‚ÉA“ü—̓Cƒ“ƒs[ƒ_ƒ“ƒX‡ƒ¶‚ðÚ‘±‚µ‚Ä‚¢‚é‚̂Ɠ¯‚¶‚Å‚·B + +@‚Ü‚½¡‰ñ‚̂悤‚É•‚“®¬”“_‰‰ŽZ‚ðŽg‚¤‚ÆAŒÅ’謔“_‰‰ŽZ‚ł͋ê˜J‚·‚éŒW”—ÊŽq‰»Œë·‚≉ŽZŒë·‚É‚æ‚é“Á«—ò‰»‚ð‚ ‚Ü‚è‹C‚É‚µ‚È‚­‚Ä‚·‚݂܂·‚Ì‚ÅA‚Ù‚ÚŒvŽZ’Ê‚è‚ÌŒ‹‰Ê‚ð”äŠr“IŠÈ’P‚É“¾‚鎖‚ª‚Å‚«‚邯Žv‚¢‚Ü‚·B + \ No newline at end of file diff --git a/eremote.txt b/eremote.txt new file mode 100644 index 0000000..d09b197 --- /dev/null +++ b/eremote.txt @@ -0,0 +1,779 @@ +Remote control mode of MMTTY + Written on September 30, 2000 + Lastly updated on September 21, 2010 + By JE3HHT Makoto Mori + Translated into English by JA7UDE Nobuyuki Oba + + This document describes how to utilize the MMTTY remote mode. With this mode, you can make use of the RTTY engine of the MMTTY from your program. + +================ +Revision history +================ + +2010.09.21 Added a start-up option that specifies the startup time limit +2010.09.21 Added a start-up option that specifies the shared memory name +2010.09.19 Added Dual Peak Filter on/off property to the switch information +2010.09.16 Added RXM_PTTFSK +2003.01.30 Added TXM_SHOWSETUP, TXM_SHOWPROFILE +2003.01.28 Added RXM_ENBSHARED +2003.01.28 Added -Z, -a start-up options +January 23, 2003 - Added RXM_ENBFOCUS, RXM_SETDEFFREQ, RXM_SETLENGTH +July 2, 2002 - Added TXM_RADIOFREQ +April 14, 2002 - Added the application disable option to RXM_SHOWSETUP +February 11, 2001 - Added ProfileNames[] into the shared memory (version 1.61 or later) +February 11, 2001 - Added TXM_DEFSHIFT (version 1.61 or later) +February 11, 2001 - Added TXM_NOTCH (version 1.61 or later) +February 11, 2001 - Added RXM_TIMER (version 1.61 or later) +January 5, 2001 - Added the profile function and the variables in the shared memory (version 1.61 or later) +December 23, 2000 - Added the abort function call to immediately clear the TX buffer +December 13, 2000 - Added the transmission mode through the keyboard buffer +November 26, 2000 - Added -n option (since version 1.60) +November 10, 2000 - Added -h option (since version 1.60) +November 08, 2000 - Corrected the size of the title array in the shared memory +November 08, 2000 - Added a VB sample code offered by Bob Furzer K4CY +November 08, 2000 - Added RXM_NOTCH message (since version 1.59a) +November 08, 2000 - Added Notch/LMS switch information (since version 1.59a) + + +============ +Introduction +============ + I have been receiving many emails concerning about the logging and contest utilities of MMTTY. I am afraid I won't be able to accommodate all the requests in my limited time. + + For this reason, I added the TNC emulation mode, which makes the PC running MMTTY act as a TNC. You can control the PC as a TNC by connecting to another PC with a null modem cable. This emulation mode, however, requires two PCs or one PC with three COM ports; it is not a smart implementation. + + I asked Bob Furzer, K4CY, for any good idea. He has quickly proposed a method using a simple inter-process communication (many thanks to Bob). + + This method makes it possible that MMTTY can easily communicate with other applications without using Windows registry. Based on his idea, I added a remote control mode to MMTTY. + + According to the discussion with Bob, I have incrementally added various functions to the mode. You can make full use of these functions by using Windows messages. + + Although I explain the usage of the functions in C, you can use other languages such as Visual Basic because the API should be the same. + +============================= +Receive and transmit messages +============================= + To communicate with MMTTY, you at first get a special message by + +UINT MSG_MMTTY = ::RegisterWindowMessage("MMTTY"); + +From now on, you are going to use this message value. + + To send a message to MMTTY, use the following API function. + + BOOL PostMessage(hwnd, uMsg, wParam, lParam) + HWND hwnd; // The handle of the receiver window + UINT uMsg; // The message to post + WPARAM wParam; // The first parameter of the message + LPARAM lParam; // The second parameter of the message + + To make MMTTY switch to TX, for example, you will send the following message. + + ::PostMessage(MMTTY_Handle, MSG_MMTTY, RXM_PTT, 2); + +You can use the following alternative scheme. + + BOOL PostThreadMessage(dwThreadId, uMsg, wParam, lParam) + DWORD dwThreadId; // Thread ID + UINT uMsg; // Message to post + WPARAM wParam; // The first parameter of the message + LPARAM lParam; // The second parameter of the message + + MMTTY accepts both methods. It should be noted, however, that MMTTY always sends a message to your window handle. + +================== +How to start MMTTY +================== + To communicate with MMTTY, you have to start MMTTY with an option. It is a good idea to start MMTTY by using the CreateProcess or WinExec function. + +MMTTY options + +Available options are: + +Option Button Menu +-t No No + FFT spectrum, Waterfall, and XY scope are displayed. + e.g. MMTTY -t + +Option Button Menu +-s No Yes + Control menus are displayed in addition to the above components. + e.g. MMTTY -s + +Option Button Menu +-u Yes No + Control buttons are displayed. + e.g. MMTTY -u + +Option Button Menu +-r Yes Yes + Control menus are also displayed in addition to the above components. + e.g. MMTTY -r + +Option +-f + The user cannot change the MMTTY window size with a mouse; still you can change the size by using a message. + e.g. MMTTY -r -f + +Option +-d + The MMTTY window does not have a title bar, and therefore, the user cannot change the MMTTY window size and location with a mouse. You can involve the MMTTY window as a control panel in your application window. It should be noted that, if you want to display your windows, such as a pop-up menu and a dialog box, you should keep them on the top of the Z order or turn off the MMTTY window. This option starts MMTTY with turning the MMTTY display off. You have to set the size and location of the MMTTY window and then turn its display on. + e.g. MMTTY -t -d + +Option +-m + MMTTY is iconized. This option is useful when you want to hide the MMTTY window. You can obtain the information on the FFT spectrum and XY scope through the shared memory. + e.g. MMTTY -m + + +Option +-hxxx... + xxx is a Window handle in hexadecimal. When you invoke MMTTY with -h option, MMTTY assumes xxx is the Window handle of your program and sends messages to it without using HWND_BORADCAST. xxx must be in hex. In case you cannot receive HWND_BROADCAST messages, you should use this option. Even with this option, you must notify MMTTY your Window handle when you receive TXM_HANDLE message from MMTTY. + +Option +-n +MMTTY does not translate the received characters to the BAUDOT code. + +Option +-p +MMTTY does not allow users to change the COM setting in the setup window. + +option +-Z + This option allows two or more MMTTY instances running simultaneously + e.g. MMTTY -m -Z +option +-a + This option disables the stay-on-top attribute of the MMTTY window. + +option +-Cxxx +This option specifies the name of the shared memory. xxx = shared memory name string. + +option +-Txxx +This option specifies the startup time limit. xxx = seconds in decimal. + + When MMTTY is invoked with one of these options (-r, -s, -t, -u), it displays the control panel only. The panel is always placed on the top of the window so that you can view it as a part of your program. The panel does not have a window for receive/transmission or logging. + + MMTTY memorizes the window size and position in the MMTTY.INI file. Therefore, you will have the same window size and position when you start MMTTY again, and you do not have to control them. + + The choice of the options is on you. I am going to explain the usage of messages and shared memory, but if you use -r option, you will only have to control TX/RX and character send/receive. If, however, you want to have more flexibility, use -t or -m option. + + +======================= +Exchange window handles +======================= + When MMTTY is invoked with a remote option, it sends the thread ID, window handle and the information on first-time invocation in the broadcast mode. + + ::PostMessage(HWND_BROADCAST, MSG_MMTTY, TXM_THREAD, MMTTY_ThreadId); + ::PostMessage(HWND_BROADCAST, MSG_MMTTY, TXM_HANDLE, MMTTY_Handle); + ::PostMessage(HWND_BROADCAST, MSG_MMTTY, TXM_START, 0x00000000); + + When you receive the message (TXM_HANDLE), you must send the window handle of your program back to MMTTY by + + ::PostMessage(MMTTY_Handle, MSG_MMTTY, TXM_HANDLE, Your_Handle); + + After receiving this message, MMTTY sends the messages only to Your_Handle. If MMTTY does not receive your message for 5 to 10 seconds, it automatically terminates itself. + + The method of receiving messages is dependent on a Compiler. Refer to the manual of your environment. + + +================= +Messages to MMTTY +================= + wParam is the message number. In C, each parameter is sequentially assigned a number. In the following example, 0x0003 is assigned to RXM_PTT. + +enum { + RXM_HANDLE=0x0000, // APP -> MMTTY + RXM_REQHANDLE, + RXM_EXIT, + RXM_PTT, + RXM_CHAR, + + RXM_WINPOS, + RXM_WIDTH, + RXM_REQPARA, + RXM_SETBAUD, + RXM_SETMARK, + + RXM_SETSPACE, + RXM_SETSWITCH, + RXM_SETHAM, + RXM_SHOWSETUP, + RXM_SETVIEW, + + RXM_SETSQLVL, + RXM_SHOW, + RXM_SETFIG, + RXM_SETRESO, + RXM_SETLPF + + RXM_SETTXDELAY, + RXM_UPDATECOM, + RXM_SUSPEND, + RXM_NOTCH, + RXM_PROFILE, + + RXM_TIMER, + RXM_ENBFOCUS, + RXM_SETDEFFREQ, + RXM_SETLENGTH, + RXM_ENBSHARED, + + RXM_PTTFSK, +}; + +1. Notification of the window handle + wParam = RXM_HANDLE + lParam = Your window handle + + When you change your window handle, you must send this message. + +2. Request of the window handle - you do not have to use this message. + wParam = RXM_REQHANDLE + lParam = 0x00000000 + +3. Termination of MMTTY + wParam = RXM_EXIT + lParam = 0x00000000 + + When you terminate your program, you must send this message to terminate MMTTY as well. MMTTY in the remote mode does not have any way to terminate itself. + +4. Switch TX/RX + wParam = RXM_PTT + lParam = 0x00000000 Switch to RX immediately + lParam = 0x00000001 Switch to RX after the transmission is completed + lParam = 0x00000002 Switch to TX + lParam = 0x00000004 Clear the TX buffer + +5. Send character + wParam = RXM_CHAR + lParam = Character code (ASCII) + This message functions only when MMTTY is in TX. + +When Bit 15 of the RXM_SETSWITCH message is 1, MMTTY uses the internal keyboard buffer for sending characters. With the keyboard buffer, you can use the BS code, the transmission buffering (i.e., Character out, Word out, or Line out), and the word-wrap function. +If MMTTY is started with -n option, MMTTY does not perform the ASCII-BAUDOT translation. MMTTY sends the character specified in lParam "as is." In this case, Bit 15 of the RXM_SETSWITCH is ignored. + +6. Move the display position + wParam = RXM_WINPOS + lParam (upper 16 bits) = Y-axis position (screen pixel value) + lParam (lower 16 bits) = X-axis position (screen pixel value) + +7. Resize the display width + wParam = RXM_WIDTH + lParam (upper 16 bits) = Display height (screen pixel value) + lParam (lower 16 bits) = Display width (screen pixel value) + +8. Request of parameters + wParam = RXM_REQPARA + lParam = 0 + + In response to this message, MMTTY sends back all the current parameters. + +9. Setting of baud rate + wParam = RXM_SETBAUD + lParam = Baud rate + + The real baud rate is given by multiplying 0.01 to this value; if lParam=4545 then baud_rate =45.45 for instance + +10. Mark frequency + wParam = RXM_SETMARK + lParam = Mark frequency (Hz) + +11. Space frequency + wParam = RXM_SETSPACE + lParam = Space frequency (Hz) + +12. Switch information (see below for details) + wParam = RXM_SETSWITCH + lParam = Switch information + +13. Set the HAM default + wParam = RXM_SETHAM + lParam = 0x00000000 + +14. Display of the setup window + wParam = RXM_SHOWSETUP + lParam = Disable application (0-OFF, 1-ON) + + If lParam is 1, the calling application does not respond to the keyboard or mouse when the setup window is shown. This is similar to the modal dialog box. + +15. Set of the display information (see below for details) + wParam = RXM_SETVIEW + lParam = Display information + +16. Squelch level + wParam = RXM_SETSQLVL + lParam = squelch level(0-1024) + +17. Display of the control panel (on/off) + wParam = RXM_SHOW + lParam = 0-OFF, 1-ON + +18. Setting of FIG/LTR + wParam = RXM_SETFIG + lParam = 0-LTR, 1-FIG + +19. Parameters of the resonator + wParam = RXM_SETRESO + lParam (lower 16 bits) = IIR BW + lParam (upper 16 bits) = FIR order + +20. Parameters of the integrator + wParam = RXM_SETLPF + lParam (lower 16 bits) = FIR smoothing filter frequency + lParam (upper 16 bits) = IIR-LPF cut-off frequency + +21. Transmission delay - default is 0 msec. + wParam = RXM_SETTXDELAY + lParam = 0 - 10000 (msec) + + MMTTY sends the TXM_PTTEVENT message at the timing of TX/RX switching. You can switch TX/RX PTT by receiving this message. However, you will have to delay the transmission if you have a time lag in switching. This delay could happen if you use the radio command. + +22. Notification of shared memory update + wParam = RXM_UPDATECOM + lParam = 0 + + You send this message to MMTTY when you change comName, comRadio, or title. Upon receiving this message, MMTTY updates these three members. + +23. Suspend + wParam = RXM_SUSPEND + lParam = 0 - restore, 1 - suspend + + lParam = 1: MMTTY releases the resources of the sound card and COM port, and hides itself. lParam = 0: MMTTY obtains the resources of the sound card and COM Port, and unhides itself. + Note that MMTTY will not unhide itself if it is started with the -m option. In case you use the sound card or the COM port by yourself, use this message to suspend MMTTY or terminate MMTTY. + +24. Notch (effective in version 1.59a or later) + wParam = RXM_NOTCH + lParam = Notch frequency (Hz) + +25. Save and load the profile (effective in version 1.61 or later) + wParam = RXM_PROFILE + lParam (lower 16 bits) = Slot number + lParam (upper 16 bits) = 0-Retrieve, 1-Store, 2-Delete, 3-Load, 4-Save, 5-Assign + + You can store the states of the demodulator, decoder, and modulator as the profile. + +Retrieve (upper 16 bits of lParam is 0) + Retrieve the profile from the specified slot. + The name of the profile can be referred to by the shared memory ProfileNames[x]. When you do not use the shared memory, you cannot refer to the name. + + +Store (upper 16 bits of lParam is 1) + Store the profile into the specified slot. + The name of the profile must be preassigned to the ProfileNames[x] of the shared memory. When you do not use the shared memory, MMTTY assigns an appropriate name to it. + + +Delete (upper 16 bits of lParam is 2) + Delete the profile in the specified slot. + + All the profile data are saved into UserPara.ini. For details, refer to "Store and Retrieve the Profile" in the later section of this document. + +Load (upper 16 bits of lParam is 3) + Display the file selection dialog box and load the profile from a file. + +Save (upper 16 bits of lParam is 4) + Display the file selection dialog box and save the profile to a file. + +Assign (upper 16 bits of lParam is 5) + Display the profile definition dialog box and register the profile. + + + It should be noted that you should not use Load/Save if the application is in the state of AlwaysStayOnTop. It is because the file selection dialog box might be hidden behind the application's window. + + +26. PTT timer (available version 1.61 or later) + wParam = RXM_TIMER, + lParam = Timer time (second) + + To turn PTT timer off, put 0 to the Timer time. + +27. Focus change enable/disable (effective in version 1.63A or later) + wParam = RXM_ENBFOCUS + lParam = 0-disable, 1-enable + + This parameter enables and disables the focus change driven by MMTTY. The default is "enable." + +28. Default frequency (effective in version 1.63B or later) + wParam = RXM_SETDEFFREQ + lParam = Upper 16 bits Default shift width [Hz] + lParam = Lower 16 bits Default mark frequency [Hz] + + These parameters specify the default mark frequency and shift width. MMTTY uses these values when the HAM button is depressed or when it is switched to TX with NET OFF. + +29. Bit length (effective in version 1.63B or later) + wParam = RXM_SETLENGTH + lParam = Bit length (5, 6, 7, 8) + + This parameter specifies the bit length of the TX code. Even if 8 bit is selected, code between 0xF0 and 0xFF are used by MMTTY and therefore not transmitted. + +30. Enable/disable the shared memory update (effective in version 1.64 or later) + wParam = RXM_ENBSHARED + lParam = 0-disable, 1-enable + + This parameter enables or disables the update operation to the shared memory. The default is Enabled. + +31. FSK keying via a PTT (Ver1.67B or later) + wParam = RXM_PTTFSK + lParam = 0-NONE, 1-ON(+Sound), 2-ON + + This parameter selects the PTT FSK keying. 0 for AFSK only, 1 for AFSK+FSK, 2 for FSK + +=================== +Messages from MMTTY +=================== + wParam is the message number. In C language, each parameter is assigned a number sequentially . In the following example, 0x8003 is assigned to TXM_CHAR. + +enum { + TXM_HANDLE=0x8000, // MMTTY -> APP + TXM_REQHANDLE, + TXM_START, + TXM_CHAR, + TXM_PTTEVENT, + + TXM_WIDTH, + TXM_BAUD, + TXM_MARK, + TXM_SPACE, + TXM_SWITCH, + + TXM_VIEW, + TXM_LEVEL, + TXM_FIGEVENT, + TXM_RESO, + TXM_LPF, + + TXM_THREAD + TXM_PROFILE, + TXM_NOTCH, + TXM_DEFSHIFT, + TXM_RADIOFREQ, + + TXM_SHOWSETUP, + TXM_SHOWPROFILE, +}; + +1. Notification of the window handle + wParam = TXM_HANDLE + lParam = MMTTY window handle + + MMTTY never changes its window handle but you must overwrite the MMTTY window handle if you receive this message just for sure. + +2. Request of the window handle - this message is not in use now. + wParam = TXM_REQHANDLE + lParam = 0x00000000 + +3. MMTTYstart information + wParam = TXM_START + lParam = 0x00000000 + + When MMTTY is executed for the first time, it sends this message in the broadcast mode (HWND_BROADCAST). + +4. Receive/transmit character + wParam = TXM_CHAR + lParam = Receive/transmit character (ASCII) +If MMTTY is started with -n option, MMTTY does not perform the ASCII-BAUDOT translation. MMTTY puts the received/transmitted character to lParam "as is." + + Every time MMTTY receives or transmits a character, it sends this message. + +5. Event notification of TX/RX switching + wParam = TXM_PTTEVENT + lParam = 0x00000000 MMTTY switches to RX + lParam = 0x00000001 MMTTY switches to TX + +6. Display height + wParam = TXM_WIDTH + lParam (upper 16 bits) = Display height (screen pixel value) + lParam (lower 16 bits) = Display width (screen pixel value) + +7. Baud rate + wParam = TXM_BAUD + lParam = Baud rate ( x 100 ) + (45.45[boo], lParam = 4545) + +8. Mark frequency + wParam = TXM_MARK + lParam = Mark frequency (Hz) + +9. Space frequency + wParam = TXM_SPACE + lParam = Space frequency (Hz) + +10. Switch information (see below for details) + wParam = TXM_SWITCH + lParam = Switch information + +11. Display information (see below for details) + wParam = TXM_VIEW + lParam = Display information + +12. Signal level + wParam = TXM_LEVEL + lParam (upper 16 bits) = squelch level (0-1024) + lParam (lower 16 bits) = signal level + + You can use this message to make an indicator. When you use a shared memory with MMTTY, you are notified the update event by this message. + +13. Notification of the shift state + wParam = TXM_FIGEVENT + lParam = 0-LTR, 1-FIG + +14. Parameters of the resonator + wParam = TXM_RESO + lParam (upper 16 bits) = IIR BW + lParam (lower 16 bits) = FIR order + +15. Parameters of the integrator + wParam = TXM_LPF + lParam (upper 16 bits) = FIR smoothing filter frequency + lParam (lower 16 bits) = IIR LPF cut-off frequency + +16. MMTTY thread ID + wParam = TXM_THREAD + lParam = thread ID + +17. Profile retrieving and storing (effective in version 1.61 or later) + wParam = TXM_PROFILE + lParam (upper 16 bits) = 0-Retrieve, 1-Store, 2-Delete + lParam (lower 16 bits = Slot number + +This event occurs when the profile is retrieved, stored, or deleted. + +18. Notch frequency (available in version 1.61 or later) + wParam = TXM_NOTCH + lParam (upper 16 bits) = Notch 1 frequency + lParam (lower 16 bits9 = Notch 2 frequency + +19. HAM default shift (available in version 1.61 or later ) + wParam = TXM_DEFSHIFT + lParam = shift frequency + +20. VFO polling frequency of RadioCommand (effective in version 1.62C or later) + wParam = TXM_RADIOFREQ + lParam = Frequency (KHz) + +21. Notification of the event of the setup window + wParam = TXM_SHOWSETUP + lParam = 0-closed, 1-opened + +22. Notification of the event of the profile load/save window + wParam = TXM_SHOWPROFILE + lParam = 0-closed, 1-opened + + +================================================ +Bit definition of Switch and Display information +================================================ +[lParam of the switch information] + b0-b1 Demodulator type 0-IIR, 1-FIR, 2-PLL + b2 AFC + b3 NET + b4 ATC + b5 BPF + b6 LMS/Notch + b7 SQ + b8 Rev + b9 UOS + b10-b11 AFC shift algorithm + b12 Integrator type 0-FIR, 1-IIR + b13 LMS or Notch 0-LMS, 1-Notch + b14 0-single notch, 1-two notches + b15 RXM_CHAR method 0-Key buffer OFF, 1-Key buffer ON + b16 Word wrap (effective only when the keyboard buffer is ON) + b17-b18 Way to send (effective only when the keyboard buffer is ON) + 0-Char, 1-Word, 2-Line + b19 Dual Peak Filter 0-OFF, 1-ON + +[lParam of the display information] + b0-b2 Display width of FFT spectrum + b4-b5 FFT gain + b6-b7 FFT response time + b8 XY scope size + b10-b11 XY scope quality + b12 XY scope display on/off + b13 FFT gain test mode + +============= +Shared memory +============= + MMTTY can get you the raw data of the FFT spectrum and XY scope. By this, you can arbitrarily display the FFT spectrum and XY scope in your window. If you use the MMTTY control panel, you need not this data. + + To utilize the shared memory, you must execute the following step before invoking MMTTY. + +#pragma pack(1) // Enable pack of structer (VisualC++) +#pragma option -a- // Enable pack of structer (Borland C++Builder) +typedef struct { + LONG smpFreq; // FFT display sampling frequency (->APP) + CHAR title[128]; // Control panel title (->MMTTY) + CHAR comName[16]; // PTT/FSK port name(->MMTTY) + LONG smpFFT; // 0-11025Hz 1-8000Hz base(->MMTTY) + LONG flagFFT; // FFT update flag (MMTTY <-> APP) + LONG arrayFFT[2048]; // FFT raw data (->APP) + LONG flagXY; // XY scope update flag (MMTTY <-> APP) + LONG arrayX[512]; // Mark signal raw data (->APP) + LONG arrayY[512]; // Space signal raw data (->APP) + CHAR verMMTTY[16]; // MMTTY version number (->APP) + CHAR RadioName[16]; // The port name for radio command (->MMTTY) + LONG flagLostSound; // True if MMTTY has lost the sound (->APP) + LONG flagOverflow; // True if the input level is too high (->APP) + LONG errorClock; // Clock adjustment value for the sound card (ppm) (->APP) + LONG smpDemFreq; // Sampling frequency of the demodulator (->APP) + LONG TxBufCount; // The number of data that have not sent yet and remain in the TX buffer (->APP) + CHAR ProfileName[16][64]; // Profile names + + LONG dummy[2048]; // Reserved +}COMARRAY; +#pragma pack() // Disable pack of structer (VisualC++) +#pragma option -a. // Disable pack of structer (Borland C++Builder) + + The instruction of the structure pack is dependent on a compiler. Make sure that there is no dummy space between members. Of course, you can access each atom with an offset address by declaring the whole struct in byte or long. + +HANDLE hMap; +COMARRAY *pMap = NULL; +hMap = ::CreateFileMapping(HANDLE(0xffffffff), NULL, PAGE_READWRITE, + 0, sizeof(COMARRAY), "MMTTY"); +if( hMap != NULL ){ + pMap = (COMARRAY *)::MapViewOfFile(hMap, FILE_MAP_WRITE, + 0, 0, 0); + if( pMap != NULL ){ + memset(pMap, 0, sizeof(COMARRAY)); // fill memory by 0 + } +} + + When MMTTY is invoked in the remote mode, it tries to open an inter-process shared memory named "MMTTY." If MMTTY successfully opened it, MMTTY then checks the title, comName and comRadio of the shared memory. + + In the title member, you specify the ASCIIZ text string that is appeared in the MMTTY control panel title and the Windows task bar. If the text string is NULL, MMTTY uses the default text string. + In the comName member, you specify the port name for the PTT control in the ASCIIZ format. If it is NULL, MMTTY uses the default port name defined by the user. + In the comRadio member, you specify the port name for the Radio Command in the ASCIIZ format. If it is NULL, MMTTY uses the default port name defined by the user. + + MMTTY periodically updates arrayFFT, arrayX, and arrayY, and then sends the TXM_LEVEL message. At this timing, if flagFFT is 0, MMTTY updates only arrayFFT and puts 1 to flagFFT. In the same manner, if flagXY is 0, MMTTY updates only arrayX and arrayY, and then puts 1 to flagXY. Irrespective of the flags' state, MMTTY periodically sends the TXM_LEVEL message. + + You can obtain the data by using the TXM_LEVEL message or by using the event of your timer. Be sure that flagFFT and flagXY are active. To continuously obtain the data, you must clear flagFFT and flagXY to 0 after you get the array data. + + MMTTY puts the raw data in the shared memory so as not to sacrifice the flexibility of your program. + + The frequency resolution of the FFT depends on the sampling frequency of MMTTY. The sampling frequency is specified by the smpFreq member in the shared memory. The initial value is 11025 Hz, but it can be changed by the user. The maximal amplitude of the FFT data is 256, but it can be a little bit over 256. + + If you want to use 8000 Hz as the sampling frequency base, you put 1 to the smpFFT member. In this case, MMTTY converts the FFT data from 11025 Hz base to 8000 Hz base. + + The XY scope data is constantly given at a half of 11025 Hz base sampling. I do not think you have to pay special attention to it. The amplitude can exceed +-16384. + + The default value of the flagLostSound member is 0, but it is set to non 0 if MMTTY cannot process the decoding operation presumably due to the CPU overload. + The default value of the flagOverflow member is 0, but it is set to non 0 if the input level is too high, that is, the input level exceeds the 3/4 of the maximal level. + These members automatically go back to 0 after the fault condition is cleared. It is a good idea to capture these conditions at the timing of the TXM_LEVEL message. + + The errorClock member has the clock adjustment value in PPM. The user can adjust the soundcard clock in the Setup window. + The smpDemFreq member has the sampling frequency of the MMTTY demodulator. + + The txBufCount member has the number of data that are in the TX buffer. It is a good idea to capture this data at the timing of the TXM_LEVEL message. + + +========================================================== +VB sample code for shared memory access by Bob Furzer K4CY +========================================================== +Here is a sample code for accessing the shared memory from VB. Bob sent me this code for reference (thanks again to Bob). Since I am not familiar with VB, I put the code unmodified. + +DO NOT SEND QUESTIONS ON THIS CODE TO BOB. I CANNOT ANSWER, EITHER. + +Global hMap As Long +Global pMap As Long + +Type COMARRAY + smpFreq As Long + title As String * 64 + comName As String * 8 + smpFFT As Long + flagFFT As Long + arrayFFT(2048) As Long + flagXY As Long + arrayX(512) As Long + arrayY(512) As Long + verMMTTY As String * 8 + dummy(2048) As Long +End Type + +Global SharedMemory As COMARRAY + +Private Sub Form_Load() + + Const PAGE_READWRITE = &H4 + Const SECTION_ALL_ACCESS = &H1 Or &H2 Or &H4 Or &H8 Or &H10 Or &HF0000 + + On Error Resume Next + + MMTTY_MSG = RegisterWindowMessage("MMTTY") + hMap = CreateFileMapping(-1, ByVal 0&, &H4, 0&, 20672, "MMTTY") + If hMap <> 0 Then + pMap = MapViewOfFile(hMap, SECTION_ALL_ACCESS, 0, 0, 0) + If pMap <> 0 Then + ZeroMemory ByVal pMap, 20672 + + SharedMemory.title = "RTTY Engine" & Chr$(0) + SharedMemory.radioName = "NONE" & Chr$(0) + SharedMemory.comName = "NONE" & Chr$(0) + SharedMemory.smpFFT = 1 + SharedMemory.flagFFT = 0 + + CopyMemory ByVal pMap + 4, ByVal SharedMemory.title, Len(SharedMemory.title) + CopyMemory ByVal pMap + 132, ByVal SharedMemory.radioName, Len(SharedMemory.radioName) + CopyMemory ByVal pMap + 12464, ByVal SharedMemory.comName, Len(SharedMemory.comName) + CopyMemory ByVal pMap + 148, VarPtr(SharedMemory.smpFFT), 4 + CopyMemory ByVal pMap + 152, VarPtr(SharedMemory.flagFFT), 4 + + X& = Shell("mmtty -t -h" & Hex$(Me.hwnd)) + MMTTYhWnd = FindWindow(vbNullString, SharedMemory.title) + Form1.Caption = Str$(MMTTYhWnd) + Else + X& = MsgBox("MapViewOfFile API Failed", vbOKOnly, "Catastrophic Error") + End If + Else + X& = MsgBox("CreateFileMapping API falied", vbOKOnly, "Catastrophic error") + End If +End Sub + +Private Sub Form_Unload(Cancel As Integer) + If UnmapViewOfFile(pMap) <> 0 Then Call CloseHandle(hMap) + X = PostMessage(MMTTYhWnd, MMTTY_MSG, 0, 0) +End Sub + +================== +Setup dialogue box +================== + MMTTY has many parameters. You can make MMTTY display the setup dialogue box by sending the RXM_SHOWSETUP message and provide a user with the setup user interface. + You might not be very happy with the dialogue box. However, you will not have to modify your program a lot even if MMTTY changes the demodulator/modulator in the future. + + +================== +Store and Retrieve of the Profile +================== + MMTTY has many parameters. It should not be a convenient way that the user opens the dialog box and changes the parameters' value during the RTTY operation. For this reason, I have added the profile menu in version 1.60B, so that the user can retrieve and store the parameters in a simple way. The profile has the parameters for the demodulator, decoder, and modulator. + + The stand-alone MMTTY has eight slots for the profile saving, while the remote-mode MMTTY has 16 slots (Slots 0 to 15) at maximum. Slots 0 to 7 are common to the stand-alone MMTTY. + + All the parameters in Slots 0 to 15 are stored as Define entries 0 to 15 in UserPara.ini file. + + The application even could modify the parameter in UserPara.ini file and send the RXM_PROFILE message to MMTTY in order to change the specific parameter. It is recommended to use Slot 15 as a temporary slot. + + If you have figured out a parameter set that works effectively for flutter or multi-path, it is a good idea to provide it to the users with your UserPara.ini, which you will include in your distribution package. In UserPara.ini, you can delete the definition lines of parameters that you do not want to change. + + When MMTTY saves the profile in the remote mode, it automatically assigns Remote 1 to Remote 16 to the names of profiles (Name=) in UserPara.ini. If you want to define another entry in UserPara.ini, you can create a specific entry (e.g., RemoteName=) and save a parameter there. MMTTY will not change the entry you have added. + + In case you do not use the shared memory, MMTTY automatically uses the names, Remote 1 - Remote 16, as the default profile names in UserPara.ini. If you define other names in your program, it is a good idea to make your own entry (e.g., RemoteName=) in UserPara.ini and store the data there. MMTTY never changes the entries you added. + + + +=============== +Closing comment +=============== +You may utilize the MMTTY remote mode with your program under the following conditions: + +1) - If you distribute your program as freeware, you can use the MMTTY remote mode and include MMTTY as a part of the distribution. + +2) - If you distribute a commercial program, you can include a code that uses the MMTTY remote mode in your software. However, you cannot include MMTTY as a part of the distribution. + +Authors of the software using the MMTTY remote mode do not have to get permission of JE3HHT - Makoto (Mako) Mori. Feel free to use MMTTY, as it is freeware. + + +73, Mako - JE3HHT + diff --git a/eupdate.txt b/eupdate.txt new file mode 100644 index 0000000..968948d --- /dev/null +++ b/eupdate.txt @@ -0,0 +1,180 @@ +MMTTY version up information + +*********************************************************************** +Revision history Ver1.68 -> Ver1.68A (JE3HHT) +*********************************************************************** +- Fixed RX level inconsistency +- Fixed context-sensitive help problem + +*********************************************************************** +Revision history Ver1.66G -> Ver1.68 (JE3HHT) +*********************************************************************** +- Added an FFT-based demodulator +- Updated the MMTTY web URL +- Added RXM_PTTFSK to the remote mode (Tnx to K4CY) +- Deleted Cabrillo export function +- Added Dual Peak Filter (Tnx to AA6YQ) + +*********************************************************************** +Revision history Ver1.66F -> Ver1.66G (AA6YQ) +*********************************************************************** + +1. Changes to the Main window's Options menu +- Soundcard Output Level works on Vista (tnx to Ken VE5KC) +- Soundcard Input Level works on Vista (tnx to Ken VE5KC) + +*********************************************************************** +Revision history Ver1.65D -> Ver1.66F (AA6YQ) +*********************************************************************** + +Dave, AA6YQ begins updating MMTTY + +1. Changes to the "MMTTY Setup" window + +A. "TX" tab +- renamed the "PTT" panel to "PTT & FSK" (tnx to Joe W4TV) +- added com8 through com16 to the "PTT & FSK" panel's "Port" selector +- clicking a button in the "Input Button" panel from a non-Japanese locale displays a window entitled "Edit Button" (tnx to Joe W + +B. "Misc" tab +- the new "Device Identifiers" panel enables independent selection of soundcard devices for reception ("RX") and transmission ("TX"); any of 16 input and output soundcard devices can be selected (tnx to Gil W0MN and Joe W4TV) +- selecting an "RX" or "TX" device identifier in the "Device Identifiers" panel updates the respective "Reception" or "Transmission" panels shown on the new "Soundcard" tab + +C. "Soundcard" tab (new) +- the "Reception" panel shows all installed soundcard input devices; selecting an input device updates the "RX" selector in the "Misc" tab's "Device Identifiers" panel +- the "Transmission" panel shows all installed soundcard output devices; selecting an output device updates the "TX" selector in the "Misc" tab's "Device Identifiers" panel + +2. Changes to the "Radio Command" window +- added com8 through com16 to the "Port" selector +- added 38400 and 57600 to the "Baud" selector (tnx to Joe W4TV) +- named the selector in the lower-left corner "Group" +- modified the contents of the "Group" selector: + +*** renamed the previous "Yaesu HF? (FT-1000MP,...)" entry to "Yaesu FT 1000D, 1000MP, 920" +*** renamed the previous "Yaesu VU? (FT-736,FT-847)" entry to "Yaesu FT 736, 817, 847, 857, 897" +*** added a "Yaesu FT 9000, 2000, 950, 450" entry (tnx to Joe W4TV and Art W2NRA) +*** renamed the previous "Kenwood" entry to "Kenwood, Elecraft" (tnx to Joe W4TV) + +- renamed the "Commands" panel's "VFO Polling" selector to "Model", and added entries for the Yaesu FT 9000, 2000, 950, and 450 (tnx to Joe W4TV) + +*********************************************************************** +Revision history Ver1.65 -> Ver1.65D +*********************************************************************** +- Added a gateway to Turbo Hamlog/Win version 5 (Tnx to JG1MOU) +- Fixed minor bugs + +*********************************************************************** +Revision history Ver1.64 -> Ver1.65 +*********************************************************************** +- Fixed a bug that caused the uncertain transmission in the remote mode. +- Fixed minor bugs + +*********************************************************************** +Revision history Ver1.63 -> Ver1.64 +*********************************************************************** + +- Improved the TX/RX switching speed in FSK +- Added custom log link +- Added custom RadioCommand +- Added custom sound +- Added custom TNC emulation +- Fixed minor bugs + +*********************************************************************** +Revision history Ver1.62 -> Ver1.63 +*********************************************************************** + +- Improved the low-level sound buffer processing +- Added the full-duplex mode +- Added TX offset for the soundcard +- Supported BARTG contest (serial number + UTC) +- Moved the RX log settings from the setup menu to the File menu +- Added JST245 support in frequency polling +- Added a menu for the version up information +- Added EXTFSK port (EXTFSK.DLL required) +- Added an option to accommodate J-BELL and S-BELL code sets +- Improved the program termination speed +- Supported WM_MOUSEWHEEL message +- Fixed some minor bugs + + +================================== +Improvement on the low-level sound processing +================================== + +The low-level sound processing has been improved. The user can preset the sizes of TX and RX FIFO buffers even independently. If you frequently see "Sound lost" in the spectrum scope window, try increasing the sizes of the FIFO buffers. + +Click on Option, Setup MMTTY, and Misc tab. You will find the drop down list for presetting the sizes at the top left corner of the window. + +* MMTTY now automatically adjusts the buffer size, which was defined in the Setup menu in the previous MMTTY versions. + + +================================ +Full duplex mode +================================ + +Version 1.62B has an option that simultaneously runs the record and play functions of the soundcard, so that it can make the external loop back possible. This is useful for the satellite communication and the monitor of the FSK operation. +Click Option, Setup MMTTY, and Misc tab. Select Ext.(SAT) in the Sound loopback pane to enable the full duplex mode. +The local echo option in the TX window of the Setup MMTTY has been deleted as it would result in the same effect as the no loop back mode. + +The internal linkage of the TX and RX modules for the no loop back, internal loop back, and external loop back modes are as follows: + + + + TxData ---> Modulator ---> Sound Out --> + | + --> RX window + + + + TxData ---> Modulator ---> Sound Out --> + | + --> Demodulator -> RX window + + + + TxData ---> Modulator ---> Sound Out ----> + + -- Sound In <-- + | + --> Demodulator -> RX window + + +=================================== +TX offset +=================================== + +Some soundcards inadvertently have different sampling frequencies in the record (RX) and play (TX) operations. With MMTTY version 1.62A, the user can calibrate the sampling frequency for TX. The parameter to be set in the TX offset is the same as that of MMSSTV. To obtain the precise value of the parameter, you have to use MMSSTV. In the case of RTTY, however, the TX offset is not necessarily very accurate contrary to SSTV. So the simple adjustment procedure shown below should give enough accuracy for RTTY. + +1) Adjust the RX sampling frequency. +2) Click on Option, Setup MMTTY, and Misc tab. Select Ext.(SAT) in the loop back. +3) Connect the output and input of the soundcard, or select "loop-back" or "Stereo/monaural mixer" in the mixer program of the volume control. +4) Adjust the TXOffset so that the twin peaks in the spectrum scope are on the line marker. + +According to my experiences, recent soundcards tend to come into one of the following three categories. + + RX TX TX offset + ~11025 ~11025 0 + ~11025 ~11100 75.00 + ~11100 ~11025 -75.00 + +Therefore, if you find some discrepancy in the spectrum scope, try putting 75.00 or -75.00 in the TXOffset. + +In RTTY, offset frequency 75Hz with respect to base frequency 11025Hz results in 5 to 15Hz frequency discrepancy. The baud rate discrepancy is about 6800ppm (0.68%). RTTY has substantial amount of margin for the discrepancies, so I do not think they are problematic in real QSOs. + + +================================================ +RX log setting moved from the setup menu to the File menu +================================================ +To save the system resources in the remote mode, the settings of the RX log have been moved from the setup menu to the File menu. Click on File and select Options of received-log. + +================== +EXTFSK port +================== +EXTFSK is used for the USB-FSK interface made by JA7UDE Oba. To use the EXTFSK port, select EXTFSK from the PTT port drop-down list in MMTTY Setup window. EXTFSK.DLL must exist in the same folder where MMTTY is installed. For more information, refer to the following web site. + +http://www.archi.is.tohoku.ac.jp/~ooba/ja7ude + + +73, Mako + diff --git a/fir.cpp b/fir.cpp new file mode 100644 index 0000000..09be08b --- /dev/null +++ b/fir.cpp @@ -0,0 +1,2181 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include +#include "fir.h" + +//------------------------------------------------- +// ‚e‚h‚qƒtƒBƒ‹ƒ^‚Ì‚½‚½‚«ž‚݉‰ŽZ +double __fastcall DoFIR(double *hp, double *zp, double d, int tap) +{ + memcpy(zp, &zp[1], sizeof(double)*tap); + zp[tap] = d; + d = 0.0; + for( int i = 0; i <= tap; i++, hp++, zp++ ){ + d += (*zp) * (*hp); + } + return d; +} +//--------------------------------------------------------------------------- +CIIRTANK::CIIRTANK() +{ + b1 = b2 = a0 = z1 = z2 = 0; + SetFreq(2000.0, SampFreq, 50.0); +} +//--------------------------------------------------------------------------- +void CIIRTANK::SetFreq(double f, double smp, double bw) +{ + double lb1, lb2, la0; + lb1 = 2 * exp(-PI * bw/smp) * cos(2 * PI * f / smp); + lb2 = -exp(-2*PI*bw/smp); + if( bw ){ +#if 0 + const double _gt[]={18.0, 26.0, 20.0, 20.0}; + la0 = sin(2 * PI * f/smp) / (_gt[SampType] * 50 / bw); +#else + la0 = sin(2 * PI * f/smp) / ((smp/6.0) / bw); +#endif + } + else { + la0 = sin(2 * PI * f/smp); + } + b1 = lb1; b2 = lb2; a0 = la0; +} +//--------------------------------------------------------------------------- +double CIIRTANK::Do(double d) +{ + d *= a0; + d += (z1 * b1); + d += (z2 * b2); + z2 = z1; + if( fabs(d) < 1e-37 ) d = 0.0; + z1 = d; + return d; +} +//--------------------------------------------------------------------------- +CLMS::CLMS() +{ + Z = new double[TAPMAX+1]; + H = new double[TAPMAX+1]; + D = new double[DELAYMAX+1]; + memset(Z, 0, sizeof(double[TAPMAX+1])); + memset(H, 0, sizeof(double[TAPMAX+1])); + memset(D, 0, sizeof(double[DELAYMAX+1])); + + m_lmsADJSC = 1.0 / double(32768 * 32768); // ƒXƒP[ƒ‹’²®’l + m_lmsErr = m_lmsMErr = 0; + + m_Type = 1; // 0-LMS, 1-NOTICH + m_lmsNotch = 0; + m_lmsNotch2 = 0; + m_twoNotch = 0; + m_Tap = 56; + m_NotchTap = 72; + m_lmsInv = 0; + m_lmsDelay = 0; // LMS Delay + m_lmsAGC = 0; // LMS AGC + m_lmsMU2 = 0.003; // LMS 2ƒÊ + m_lmsGM = 0.9999; // LMS ƒÁ + m_bpf = 1; + SetWindow(2125, 2125+170); +} + +CLMS::~CLMS() +{ + delete[] D; + delete[] H; + delete[] Z; +} + +void CLMS::Copy(CLMS &other) +{ + m_Type = other.m_Type; + m_Tap = other.m_Tap; + m_NotchTap = other.m_NotchTap; + m_lmsInv = other.m_lmsInv; // LMS InvOutput + m_lmsDelay = other.m_lmsDelay; // LMS Delay + m_lmsAGC = other.m_lmsAGC; // LMS AGC + m_lmsMU2 = other.m_lmsMU2; // LMS 2ƒÊ + m_lmsGM = other.m_lmsGM; // LMS ƒÁ + m_lmsNotch = other.m_lmsNotch; + m_lmsNotch2 = other.m_lmsNotch2; + m_twoNotch = other.m_twoNotch; + m_bpf = other.m_bpf; + SetWindow(m_MarkFreq, m_SpaceFreq); +} + +void CLMS::GetFW(double &fl, double &fh, double fq) +{ + double fw; + if( fq < m_MarkFreq ){ + fw = m_MarkFreq - fq; + if( fw < 80.0 ){ + fw = 15.0; + } + else { + fw *= 0.5; + } + } + else if( fq > m_SpaceFreq ){ + fw = fq - m_SpaceFreq; + if( fw < 80.0 ){ + fw = 15.0; + } + else { + fw *= 0.5; + } + } + else { + fq = (m_MarkFreq + m_SpaceFreq)/2.0; + fw = 15.0; + } + fh = fq + fw; + fl = fq - fw; +} + +void CLMS::SetWindow(double mfq, double sfq) +{ + m_MarkFreq = mfq; + m_SpaceFreq = sfq; + if( m_Type ){ + if( m_lmsNotch && (m_lmsNotch2 == m_lmsNotch) ) m_lmsNotch2 = 0; + double fl, fh; + double c = (m_MarkFreq + m_SpaceFreq)/2; + if( !m_lmsNotch || ((m_lmsNotch >= m_MarkFreq) && (m_lmsNotch <= m_SpaceFreq)) ){ + m_lmsNotch = c; + GetFW(fl, fh, c); + MakeFilter(H, m_NotchTap, ffBEF, SampFreq, fl, fh, 10, 1.0); + if( (m_lmsNotch2 >= m_MarkFreq) && (m_lmsNotch2 <= m_SpaceFreq) ){ + m_lmsNotch2 = 0; + } + if( m_lmsNotch2 ){ + GetFW(fl, fh, m_lmsNotch2); + MakeFilter(HBPF, m_NotchTap, ffBEF, SampFreq, fl, fh, 10, 1.0); + } + } + else { + GetFW(fl, fh, m_lmsNotch); + MakeFilter(H, m_NotchTap, ffBEF, SampFreq, fl, fh, 10, 1.0); + if( (m_lmsNotch2 >= m_MarkFreq) && (m_lmsNotch2 <= m_SpaceFreq) ){ + m_lmsNotch2 = c; + } + if( m_lmsNotch2 ){ + GetFW(fl, fh, m_lmsNotch2); + MakeFilter(HBPF, m_NotchTap, ffBEF, SampFreq, fl, fh, 10, 1.0); + } + } + } + else { + MakeFilter(HBPF, m_Tap, ffBPF, SampFreq, m_MarkFreq - 150, m_SpaceFreq + 150, 60, 0.00002); + } +} +//------------------------------------------------- +// “K‰žƒtƒBƒ‹ƒ^‚̉‰ŽZ +double CLMS::Do(double d) +{ + double a = 0.0; + int i; + double *zp = Z; + double *hp = H; + if( m_Type ){ + if( !m_NotchTap ) return d; // ƒXƒ‹[‚ÌŽž + // ƒmƒbƒ`ƒtƒBƒ‹ƒ^ + memcpy(Z, &Z[1], sizeof(double)*m_NotchTap); + Z[m_NotchTap] = d; + for( i = 0; i <= m_NotchTap; i++, zp++, hp++ ){ + a += (*zp) * (*hp); + } + if( m_lmsNotch2 && m_twoNotch ){ + memcpy(D, &D[1], sizeof(double)*m_NotchTap); + D[m_NotchTap] = a; + zp = D; + hp = HBPF; + a = 0; + for( i = 0; i <= m_NotchTap; i++, zp++, hp++ ){ + a += (*zp) * (*hp); + } + } + return a; + } + else { + if( !m_Tap ) return d; // ƒXƒ‹[‚ÌŽž + // ƒgƒ‰ƒ“ƒXƒo[ƒTƒ‹ƒtƒBƒ‹ƒ^ + memcpy(Z, &Z[1], sizeof(double)*m_Tap); + Z[m_Tap] = D[0]; + for( i = 0; i <= m_Tap; i++, zp++, hp++ ){ + a += (*zp) * (*hp); + } + } + // Œë·ŒvŽZ + m_lmsErr = d - a; + m_lmsMErr = m_lmsErr * m_lmsMU2 * m_lmsADJSC; // lmsADJSC = 1/(32768 * 32768) ƒXƒP[ƒŠƒ“ƒO’²®’l + + // ’x‰„Ší‚̈ړ® + if( m_lmsDelay ) memcpy(D, &D[1], sizeof(double)*m_lmsDelay); + D[m_lmsDelay] = d; + + // ŒW”XV + zp = Z; + hp = H; + if( m_lmsAGC ){ + double sum = 0.0; + for( i = 0; i <= m_Tap; i++, zp++, hp++ ){ + *hp = (m_lmsMErr * (*zp)) + (*hp * m_lmsGM); + if( m_bpf ) *hp += HBPF[i]; + sum += fabs(*hp); + } + if( sum >= 1e-3 ) a /= sum; + } + else { + for( i = 0; i <= m_Tap; i++, zp++, hp++ ){ + *hp = (m_lmsMErr * (*zp)) + (*hp * m_lmsGM); + if( m_bpf ) *hp += HBPF[i]; + } + } + return m_lmsInv ? m_lmsErr : a; +} + +//********************************************************************* +// CDECM2 1/2ƒfƒVƒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CDECM2::CDECM2() +{ + memset(Z1, 0, sizeof(Z1)); + memset(Z2, 0, sizeof(Z2)); + ::MakeFilter(H, 36, ffLPF, SampFreq, 2900, 3000, 70, 1.0); +} + +double CDECM2::Do(double d1, double d2) +{ + memcpy(Z1, &Z1[1], sizeof(double)*18); + memcpy(Z2, &Z2[1], sizeof(double)*17); + Z1[18] = d1; + Z2[17] = d2; + + double a; + a = Z1[0] * H[36]; + a += Z2[0] * H[35]; + a += Z1[1] * H[34]; + a += Z2[1] * H[33]; + a += Z1[2] * H[32]; + a += Z2[2] * H[31]; + a += Z1[3] * H[30]; + a += Z2[3] * H[29]; + a += Z1[4] * H[28]; + a += Z2[4] * H[27]; + a += Z1[5] * H[26]; + a += Z2[5] * H[25]; + a += Z1[6] * H[24]; + a += Z2[6] * H[23]; + a += Z1[7] * H[22]; + a += Z2[7] * H[21]; + a += Z1[8] * H[20]; + a += Z2[8] * H[19]; + a += Z1[9] * H[18]; + a += Z2[9] * H[17]; + a += Z1[10] * H[16]; + a += Z2[10] * H[15]; + a += Z1[11] * H[14]; + a += Z2[11] * H[13]; + a += Z1[12] * H[12]; + a += Z2[12] * H[11]; + a += Z1[13] * H[10]; + a += Z2[13] * H[9]; + a += Z1[14] * H[8]; + a += Z2[14] * H[7]; + a += Z1[15] * H[6]; + a += Z2[15] * H[5]; + a += Z1[16] * H[4]; + a += Z2[16] * H[3]; + a += Z1[17] * H[2]; + a += Z2[17] * H[1]; + a += Z1[18] * H[0]; + return a; +} + +#if 0 +//********************************************************************* +// CDECM2H 1/2ƒfƒVƒ[ƒ^ˆ—ƒNƒ‰ƒX 64tap +// +CDECM2H::CDECM2H() +{ + memset(Z1, 0, sizeof(Z1)); + memset(Z2, 0, sizeof(Z2)); + ::MakeFilter(H, 64, ffLPF, SampFreq, 2900, 3000, 70, 1.0); +} + +double CDECM2H::Do(double d1, double d2) +{ + memcpy(Z1, &Z1[1], sizeof(double)*32); + memcpy(Z2, &Z2[1], sizeof(double)*31); + Z1[32] = d1; + Z2[31] = d2; + + double a; + a = Z1[0] * H[64]; + a += Z2[0] * H[63]; + a += Z1[1] * H[62]; + a += Z2[1] * H[61]; + a += Z1[2] * H[60]; + a += Z2[2] * H[59]; + a += Z1[3] * H[58]; + a += Z2[3] * H[57]; + a += Z1[4] * H[56]; + a += Z2[4] * H[55]; + a += Z1[5] * H[54]; + a += Z2[5] * H[53]; + a += Z1[6] * H[52]; + a += Z2[6] * H[51]; + a += Z1[7] * H[50]; + a += Z2[7] * H[49]; + a += Z1[8] * H[48]; + a += Z2[8] * H[47]; + a += Z1[9] * H[46]; + a += Z2[9] * H[45]; + a += Z1[10] * H[44]; + a += Z2[10] * H[43]; + a += Z1[11] * H[42]; + a += Z2[11] * H[41]; + a += Z1[12] * H[40]; + a += Z2[12] * H[39]; + a += Z1[13] * H[38]; + a += Z2[13] * H[37]; + a += Z1[14] * H[36]; + a += Z2[14] * H[35]; + a += Z1[15] * H[34]; + a += Z2[15] * H[33]; + a += Z1[16] * H[32]; + a += Z2[16] * H[31]; + a += Z1[17] * H[30]; + a += Z2[17] * H[29]; + a += Z1[18] * H[28]; + a += Z2[18] * H[27]; + a += Z1[19] * H[26]; + a += Z2[19] * H[25]; + a += Z1[20] * H[24]; + a += Z2[20] * H[23]; + a += Z1[21] * H[22]; + a += Z2[21] * H[21]; + a += Z1[22] * H[20]; + a += Z2[22] * H[19]; + a += Z1[23] * H[18]; + a += Z2[23] * H[17]; + a += Z1[24] * H[16]; + a += Z2[24] * H[15]; + a += Z1[25] * H[14]; + a += Z2[25] * H[13]; + a += Z1[26] * H[12]; + a += Z2[26] * H[11]; + a += Z1[27] * H[10]; + a += Z2[27] * H[9]; + a += Z1[28] * H[8]; + a += Z2[28] * H[7]; + a += Z1[29] * H[6]; + a += Z2[29] * H[5]; + a += Z1[30] * H[4]; + a += Z2[30] * H[3]; + a += Z1[31] * H[2]; + a += Z2[31] * H[1]; + a += Z1[32] * H[0]; + return a; +} +#endif +#if 0 +//********************************************************************* +// CINTP2 ~2ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTP2::CINTP2() +{ + memset(Z, 0, sizeof(Z)); + ::MakeFilter(H, 36, ffLPF, SampFreq, 2900, 3000, 70, 2.0); +} + +void CINTP2::Do(double &d1, double &d2, double d) +{ + memcpy(Z, &Z[1], sizeof(double)*18); + Z[18] = d; + + d1 = Z[0] * H[36]; + d2 = Z[1] * H[35]; + d1 += Z[1] * H[34]; + d2 += Z[2] * H[33]; + d1 += Z[2] * H[32]; + d2 += Z[3] * H[31]; + d1 += Z[3] * H[30]; + d2 += Z[4] * H[29]; + d1 += Z[4] * H[28]; + d2 += Z[5] * H[27]; + d1 += Z[5] * H[26]; + d2 += Z[6] * H[25]; + d1 += Z[6] * H[24]; + d2 += Z[7] * H[23]; + d1 += Z[7] * H[22]; + d2 += Z[8] * H[21]; + d1 += Z[8] * H[20]; + d2 += Z[9] * H[19]; + d1 += Z[9] * H[18]; + d2 += Z[10] * H[17]; + d1 += Z[10] * H[16]; + d2 += Z[11] * H[15]; + d1 += Z[11] * H[14]; + d2 += Z[12] * H[13]; + d1 += Z[12] * H[12]; + d2 += Z[13] * H[11]; + d1 += Z[13] * H[10]; + d2 += Z[14] * H[9]; + d1 += Z[14] * H[8]; + d2 += Z[15] * H[7]; + d1 += Z[15] * H[6]; + d2 += Z[16] * H[5]; + d1 += Z[16] * H[4]; + d2 += Z[17] * H[3]; + d1 += Z[17] * H[2]; + d2 += Z[18] * H[1]; + d1 += Z[18] * H[0]; +} + +//********************************************************************* +// CDECM3 1/3ƒfƒVƒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CDECM3::CDECM3() +{ + memset(Z1, 0, sizeof(Z1)); + memset(Z2, 0, sizeof(Z2)); + memset(Z3, 0, sizeof(Z3)); + ::MakeFilter(H, 48, ffLPF, SampFreq, 1300, 3000, 70, 1.0); +} + +double CDECM3::Do(double d1, double d2, double d3) +{ + memcpy(Z1, &Z1[1], sizeof(double)*16); + memcpy(Z2, &Z2[1], sizeof(double)*15); + memcpy(Z3, &Z3[1], sizeof(double)*15); + Z1[16] = d1; + Z2[15] = d2; + Z3[15] = d3; + + double a; + a = Z1[0] * H[48]; + a += Z3[0] * H[47]; + a += Z2[0] * H[46]; + a += Z1[1] * H[45]; + a += Z3[1] * H[44]; + a += Z2[1] * H[43]; + a += Z1[2] * H[42]; + a += Z3[2] * H[41]; + a += Z2[2] * H[40]; + a += Z1[3] * H[39]; + a += Z3[3] * H[38]; + a += Z2[3] * H[37]; + a += Z1[4] * H[36]; + a += Z3[4] * H[35]; + a += Z2[4] * H[34]; + a += Z1[5] * H[33]; + a += Z3[5] * H[32]; + a += Z2[5] * H[31]; + a += Z1[6] * H[30]; + a += Z3[6] * H[29]; + a += Z2[6] * H[28]; + a += Z1[7] * H[27]; + a += Z3[7] * H[26]; + a += Z2[7] * H[25]; + a += Z1[8] * H[24]; + a += Z3[8] * H[23]; + a += Z2[8] * H[22]; + a += Z1[9] * H[21]; + a += Z3[9] * H[20]; + a += Z2[9] * H[19]; + a += Z1[10] * H[18]; + a += Z3[10] * H[17]; + a += Z2[10] * H[16]; + a += Z1[11] * H[15]; + a += Z3[11] * H[14]; + a += Z2[11] * H[13]; + a += Z1[12] * H[12]; + a += Z3[12] * H[11]; + a += Z2[12] * H[10]; + a += Z1[13] * H[9]; + a += Z3[13] * H[8]; + a += Z2[13] * H[7]; + a += Z1[14] * H[6]; + a += Z3[14] * H[5]; + a += Z2[14] * H[4]; + a += Z1[15] * H[3]; + a += Z3[15] * H[2]; + a += Z2[15] * H[1]; + a += Z1[16] * H[0]; + return a; +} + +//********************************************************************* +// CINTP3 ~3ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTP3::CINTP3() +{ + memset(Z, 0, sizeof(Z)); + ::MakeFilter(H, 48, ffLPF, SampFreq, 1300, 3000, 70, 3.0); +} + +void CINTP3::Do(double &d1, double &d2, double &d3, double d) +{ + memcpy(Z, &Z[1], sizeof(double)*16); + Z[16] = d; + + d1 = Z[0] * H[48]; + d3 = Z[1] * H[47]; + d2 = Z[1] * H[46]; + d1 += Z[1] * H[45]; + d3 += Z[2] * H[44]; + d2 += Z[2] * H[43]; + d1 += Z[2] * H[42]; + d3 += Z[3] * H[41]; + d2 += Z[3] * H[40]; + d1 += Z[3] * H[39]; + d3 += Z[4] * H[38]; + d2 += Z[4] * H[37]; + d1 += Z[4] * H[36]; + d3 += Z[5] * H[35]; + d2 += Z[5] * H[34]; + d1 += Z[5] * H[33]; + d3 += Z[6] * H[32]; + d2 += Z[6] * H[31]; + d1 += Z[6] * H[30]; + d3 += Z[7] * H[29]; + d2 += Z[7] * H[28]; + d1 += Z[7] * H[27]; + d3 += Z[8] * H[26]; + d2 += Z[8] * H[25]; + d1 += Z[8] * H[24]; + d3 += Z[9] * H[23]; + d2 += Z[9] * H[22]; + d1 += Z[9] * H[21]; + d3 += Z[10] * H[20]; + d2 += Z[10] * H[19]; + d1 += Z[10] * H[18]; + d3 += Z[11] * H[17]; + d2 += Z[11] * H[16]; + d1 += Z[11] * H[15]; + d3 += Z[12] * H[14]; + d2 += Z[12] * H[13]; + d1 += Z[12] * H[12]; + d3 += Z[13] * H[11]; + d2 += Z[13] * H[10]; + d1 += Z[13] * H[9]; + d3 += Z[14] * H[8]; + d2 += Z[14] * H[7]; + d1 += Z[14] * H[6]; + d3 += Z[15] * H[5]; + d2 += Z[15] * H[4]; + d1 += Z[15] * H[3]; + d3 += Z[16] * H[2]; + d2 += Z[16] * H[1]; + d1 += Z[16] * H[0]; +} +#endif + + +/********************************************************************** + ‚e‚h‚qƒtƒBƒ‹ƒ^ÝŒvŠÖ” +**********************************************************************/ +/* +==================================================== + ƒxƒbƒZƒ‹ŠÖ” +==================================================== +*/ +static double I0(double x) +{ + double sum, xj; + int j; + + sum = 1.0; + xj = 1.0; + j = 1; + while(1){ + xj *= ((0.5 * x) / (double)j); + sum += (xj*xj); + j++; + if( ((0.00000001 * sum) - (xj*xj)) > 0 ) break; + } + return(sum); +} + +/* +==================================================== + ‚e‚h‚qƒtƒBƒ‹ƒ^‚ÌÝŒv +==================================================== +*/ +void MakeFilter(double *HP, int tap, int type, double fs, double fcl, double fch, double att, double gain) +{ + FIR fir; + + fir.typ = type; + fir.n = tap; + fir.fs = fs; + fir.fcl = fcl; + fir.fch = fch; + fir.att = att; + fir.gain = gain; + MakeFilter(HP, &fir); +} + +void MakeFilter(double *HP, FIR *fp) +{ + int j, m; + double alpha, win, fm, w0, sum; + double *hp; + + if( fp->typ == ffHPF ){ + fp->fc = 0.5*fp->fs - fp->fcl; + } + else if( fp->typ != ffLPF ){ + fp->fc = (fp->fch - fp->fcl)/2.0; + } + else { + fp->fc = fp->fcl; + } + if( fp->att >= 50.0 ){ + alpha = 0.1102 * (fp->att - 8.7); + } + else if( fp->att >= 21 ){ + alpha = (0.5842 * pow(fp->att - 21.0, 0.4)) + (0.07886 * (fp->att - 21.0)); + } + else { + alpha = 0.0; + } + + hp = fp->hp; + sum = PI*2.0*fp->fc/fp->fs; + if( fp->att >= 21 ){ // ƒCƒ“ƒpƒ‹ƒX‰ž“š‚Æ‘‹ŠÖ”‚ðŒvŽZ + for( j = 0; j <= (fp->n/2); j++, hp++ ){ + fm = (double)(2 * j)/(double)fp->n; + win = I0(alpha * sqrt(1.0-(fm*fm)))/I0(alpha); + if( !j ){ + *hp = fp->fc * 2.0/fp->fs; + } + else { + *hp = (1.0/(PI*(double)j))*sin((double)j*sum)*win; + } + } + } + else { // ƒCƒ“ƒpƒ‹ƒX‰ž“š‚̂݌vŽZ + for( j = 0; j <= (fp->n/2); j++, hp++ ){ + if( !j ){ + *hp = fp->fc * 2.0/fp->fs; + } + else { + *hp = (1.0/(PI*(double)j))*sin((double)j*sum); + } + } + } + hp = fp->hp; + sum = *hp++; + for( j = 1; j <= (fp->n/2); j++, hp++ ) sum += 2.0 * (*hp); + hp = fp->hp; + if( sum > 0.0 ){ + for( j = 0; j <= (fp->n/2); j++, hp++ ) (*hp) /= sum; + } + + // Žü”g”•ÏŠ· + + if( fp->typ == ffHPF ){ + hp = fp->hp; + for( j = 0; j <= (fp->n/2); j++, hp++ ) (*hp) *= cos((double)j*PI); + } + else if( fp->typ != ffLPF ){ + w0 = PI * (fp->fcl + fp->fch) / fp->fs; + if( fp->typ == ffBPF ){ + hp = fp->hp; + for( j = 0; j <= (fp->n/2); j++, hp++ ) (*hp) *= 2.0*cos((double)j*w0); + } + else { + hp = fp->hp; + *hp = 1.0 - (2.0 * (*hp)); + for( hp++, j = 1; j <= (fp->n/2); j++, hp++ ) (*hp) *= -2.0*cos((double)j*w0); + } + } + for( m = fp->n/2, hp = &fp->hp[m], j = m; j >= 0; j--, hp-- ){ + *HP++ = (*hp) * fp->gain; + } + for( hp = &fp->hp[1], j = 1; j <= (fp->n/2); j++, hp++ ){ + *HP++ = (*hp) * fp->gain; + } +} + +//--------------------------------------------------------------------------- +//‚e‚h‚qƒtƒBƒ‹ƒ^iƒqƒ‹ƒxƒ‹ƒg•ÏŠ·ƒtƒBƒ‹ƒ^j‚ÌÝŒv +// Added by JE3HHT on Aug.2010 +void __fastcall MakeHilbert(double *H, int N, double fs, double fc1, double fc2) +{ + int L = N / 2; + double T = 1.0 / fs; + + double W1 = 2 * PI * fc1; + double W2 = 2 * PI * fc2; + + // 2*fc2*T*SA((n-L)*W2*T) - 2*fc1*T*SA((n-L)*W1*T) + + double w; + int n; + double x1, x2; + for( n = 0; n <= N; n++ ){ + if( n == L ){ + x1 = x2 = 0.0; + } + else if( (n - L) ){ + x1 = ((n - L) * W1 * T); + x1 = cos(x1) / x1; + x2 = ((n - L) * W2 * T); + x2 = cos(x2) / x2; + } + else { + x1 = x2 = 1.0; + } + w = 0.54 - 0.46 * cos(2*PI*n/(N)); + H[n] = -(2 * fc2 * T * x2 - 2 * fc1 * T * x1) * w; + } + + if( N < 8 ){ + w = 0; + for( n = 0; n <= N; n++ ){ + w += fabs(H[n]); + } + if( w ){ + w = 1.0 / w; + for( n = 0; n <= N; n++ ){ + H[n] *= w; + } + } + } +} + +//--------------------------------------------------------------------- +// Žü”g”“Á«ƒOƒ‰ƒtiƒtƒBƒ‹ƒ^ƒXƒŒƒbƒh“à‚ŃR[ƒ‹‚µ‚Ă͂¢‚¯‚È‚¢j +// +// H(ejƒÖT) = [ƒ°0]Hm cos(mƒÖT) - j[ƒ°1]Hm sin(mƒÖT) +// +void DrawGraph(Graphics::TBitmap *pBitmap, const double *H, int Tap, int Over, int &nmax, int init, TColor col) +{ + int k, x, y; + double f, gdb, g, pi2t, fs; + double max; + char bf[80]; + + TCanvas *tp = pBitmap->Canvas; + TRect rc; + rc.Left = 0; + rc.Right = pBitmap->Width; + rc.Top = 0; + rc.Bottom = pBitmap->Height; + if( init ){ + tp->Brush->Color = clWhite; + tp->FillRect(rc); + } + int LM; // Žü”g”•\ަ‚Ì‚ ‚郉ƒCƒ“” + int DM; // “à•”ü‚Ì” + int MM; // ŽÀü‚ÌŠÔŠu + switch(Over){ + case 2: + max = 3000; + fs = SampFreq/2.0; + break; + case 3: + max = 2000; + fs = SampFreq/3.0; + break; + default: + max = 4000; + fs = SampFreq; + break; + } + if( nmax ){ + max = nmax; + } + else { + nmax = max; + } + switch(nmax){ + case 3000: + LM = 3; + DM = 14; + MM = 5; + break; + case 100: + case 200: + case 2000: + LM = 4; + DM = 19; + MM = 5; + break; + case 400: + case 800: + case 4000: + LM = 4; + DM = 19; + MM = 5; + break; + default: // 6000 + LM = 3; + DM = 11; + MM = 4; + break; + } + int XL = 32; + int XR = pBitmap->Width - 16; + int YT = 16; + int YB = pBitmap->Height - 24; + + int i; + if( init ){ + tp->Pen->Color = clBlack; + tp->Font->Size = 8; + tp->MoveTo(XL, YT); tp->LineTo(XR, YT); tp->LineTo(XR, YB); tp->LineTo(XL, YB); tp->LineTo(XL, YT); + tp->Pen->Color = clGray; + for( i = 0; i < 7; i++ ){ + tp->Pen->Style = (i & 1) ? psSolid : psDot; + y = (int)(double(i + 1) * double(YB - YT)/8.0 + YT); + tp->MoveTo(XL, y); tp->LineTo(XR, y); + } + for( i = 1; i < 5; i++ ){ + y = (int)(double(i) * double(YB - YT)/4.0 + YT); + sprintf( bf, "-%2u", (80 / 4)*i ); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(XL - 6 - tp->TextWidth(bf), y - (tp->TextHeight(bf)/2), bf); + } + strcpy(bf, "dB"); + tp->TextOut(XL - 6 - tp->TextWidth(bf), YT-(tp->TextHeight(bf)/2), bf); + for( i = 1; i <= DM; i++ ){ + tp->Pen->Style = (i % MM) ? psDot : psSolid; + x = (int)(double(i) * double(XR - XL)/double(DM+1) + XL); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + } + for( i = 0; i <= LM; i++ ){ + x = (int)(double(i) * double(XR - XL)/double(LM) + XL); + sprintf(bf, "%4.0lf", (max*i)/LM); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(x - (tp->TextWidth(bf)/2), YB + 6, bf); + } + tp->Pen->Color = clRed; + tp->Pen->Style = psDot; + x = (int)(XL + (fs/2) * (double(XR-XL)/max)); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + + tp->Pen->Color = clBlue; + tp->Pen->Style = psSolid; + } + int ay = 0; + double ra, im; + pi2t = 2.0 * PI / fs; + tp->Pen->Color = col; + for( x = XL, f = 0.0; x < XR; x++, f += (max/double(XR-XL)) ){ + if( Tap ){ + ra = im = 0.0; + for( k = 0; k <= Tap; k++ ){ + ra += H[k] * cos(pi2t*f*k); + if( k ) im -= H[k] * sin(pi2t*f*k); + } + if( ra * im ){ + g = sqrt(ra * ra + im * im); + } + else { + g = 0.0; + } + } + else { + g = 1.0; + } + if( g == 0 ) g = 1.0e-38; + gdb = 20*0.4342944*log(fabs(g)) + 80.0; + if( gdb < 0.0 ) gdb = 0.0; + gdb = (gdb * double(YB-YT))/80.0; + y = YB - (int)gdb; + if( x == XL ){ + tp->MoveTo(x, y); + tp->LineTo(x, y); + } + else { + tp->MoveTo(x-1, ay); + tp->LineTo(x, y); + } + ay = y; + } +} + +void DrawGraph2(Graphics::TBitmap *pBitmap, const double *H1, int Tap1, const double *H2, int Tap2, int Over, int &nmax, int init, TColor col) +{ + int k, x, y; + double f, gdb, g, pi2t, fs; + double max; + char bf[80]; + + TCanvas *tp = pBitmap->Canvas; + TRect rc; + rc.Left = 0; + rc.Right = pBitmap->Width; + rc.Top = 0; + rc.Bottom = pBitmap->Height; + if( init ){ + tp->Brush->Color = clWhite; + tp->FillRect(rc); + } + int LM; // Žü”g”•\ަ‚Ì‚ ‚郉ƒCƒ“” + int DM; // “à•”ü‚Ì” + int MM; // ŽÀü‚ÌŠÔŠu + switch(Over){ + case 2: + max = 3000; + fs = SampFreq/2.0; + break; + case 3: + max = 2000; + fs = SampFreq/3.0; + break; + default: + max = 4000; + fs = SampFreq; + break; + } + if( nmax ){ + max = nmax; + } + else { + nmax = max; + } + switch(nmax){ + case 3000: + LM = 3; + DM = 14; + MM = 5; + break; + case 100: + case 200: + case 2000: + LM = 4; + DM = 19; + MM = 5; + break; + case 400: + case 800: + case 4000: + LM = 4; + DM = 19; + MM = 5; + break; + default: // 6000 + LM = 3; + DM = 11; + MM = 4; + break; + } + int XL = 32; + int XR = pBitmap->Width - 16; + int YT = 16; + int YB = pBitmap->Height - 24; + + int i; + if( init ){ + tp->Pen->Color = clBlack; + tp->Font->Size = 8; + tp->MoveTo(XL, YT); tp->LineTo(XR, YT); tp->LineTo(XR, YB); tp->LineTo(XL, YB); tp->LineTo(XL, YT); + tp->Pen->Color = clGray; + for( i = 0; i < 7; i++ ){ + tp->Pen->Style = (i & 1) ? psSolid : psDot; + y = (int)(double(i + 1) * double(YB - YT)/8.0 + YT); + tp->MoveTo(XL, y); tp->LineTo(XR, y); + } + for( i = 1; i < 5; i++ ){ + y = (int)(double(i) * double(YB - YT)/4.0 + YT); + sprintf( bf, "-%2u", (80 / 4)*i ); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(XL - 6 - tp->TextWidth(bf), y - (tp->TextHeight(bf)/2), bf); + } + strcpy(bf, "dB"); + tp->TextOut(XL - 6 - tp->TextWidth(bf), YT-(tp->TextHeight(bf)/2), bf); + for( i = 1; i <= DM; i++ ){ + tp->Pen->Style = (i % MM) ? psDot : psSolid; + x = (int)(double(i) * double(XR - XL)/double(DM+1) + XL); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + } + for( i = 0; i <= LM; i++ ){ + x = (int)(double(i) * double(XR - XL)/double(LM) + XL); + sprintf(bf, "%4.0lf", (max*i)/LM); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(x - (tp->TextWidth(bf)/2), YB + 6, bf); + } + tp->Pen->Color = clRed; + tp->Pen->Style = psDot; + x = (int)(XL + (fs/2) * (double(XR-XL)/max)); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + + tp->Pen->Color = clBlue; + tp->Pen->Style = psSolid; + } + int ay = 0; + double ra, im; + pi2t = 2.0 * PI / fs; + tp->Pen->Color = col; + for( x = XL, f = 0.0; x < XR; x++, f += (max/double(XR-XL)) ){ + if( Tap1 ){ + ra = im = 0.0; + for( k = 0; k <= Tap1; k++ ){ + ra += H1[k] * cos(pi2t*f*k); + if( k ) im -= H1[k] * sin(pi2t*f*k); + } + if( ra * im ){ + g = sqrt(ra * ra + im * im); + } + else { + g = 0.0; + } + } + else { + g = 1.0; + } + if( Tap2 ){ + ra = im = 0.0; + for( k = 0; k <= Tap2; k++ ){ + ra += H2[k] * cos(pi2t*f*k); + if( k ) im -= H2[k] * sin(pi2t*f*k); + } + if( ra * im ){ + g *= sqrt(ra * ra + im * im); + } + else { + g *= 0.0; + } + } + else { + g *= 1.0; + } + if( g == 0 ) g = 1.0e-38; + gdb = 20*0.4342944*log(fabs(g)) + 80.0; + if( gdb < 0.0 ) gdb = 0.0; + gdb = (gdb * double(YB-YT))/80.0; + y = YB - (int)gdb; + if( x == XL ){ + tp->MoveTo(x, y); + tp->LineTo(x, y); + } + else { + tp->MoveTo(x-1, ay); + tp->LineTo(x, y); + } + ay = y; + } +} + +//--------------------------------------------------------------------- +// Žü”g”“Á«ƒOƒ‰ƒtiƒtƒBƒ‹ƒ^ƒXƒŒƒbƒh“à‚ŃR[ƒ‹‚µ‚Ă͂¢‚¯‚È‚¢j +// +// +void DrawGraphIIR(Graphics::TBitmap *pBitmap, double a0, double a1, double a2, double b1, double b2, int Over, int &nmax, int init, TColor col) +{ + int x, y; + double f, gdb, g, pi2t, pi4t, fs; + double max; + char bf[80]; + + TCanvas *tp = pBitmap->Canvas; + TRect rc; + rc.Left = 0; + rc.Right = pBitmap->Width; + rc.Top = 0; + rc.Bottom = pBitmap->Height; + if( init ){ + tp->Brush->Color = clWhite; + tp->FillRect(rc); + } + int LM; // Žü”g”•\ަ‚Ì‚ ‚郉ƒCƒ“” + int DM; // “à•”ü‚Ì” + int MM; // ŽÀü‚ÌŠÔŠu + switch(Over){ + case 2: + max = 3000; + fs = SampFreq/2.0; + break; + case 3: + max = 2000; + fs = SampFreq/3.0; + break; + default: + max = 4000; + fs = SampFreq; + break; + } + if( nmax ){ + max = nmax; + } + else { + nmax = max; + } + switch(nmax){ + case 3000: + LM = 3; + DM = 14; + MM = 5; + break; + case 100: + case 200: + case 2000: + LM = 4; + DM = 19; + MM = 5; + break; + case 400: + case 800: + case 4000: + LM = 4; + DM = 19; + MM = 5; + break; + default: // 6000 + LM = 3; + DM = 11; + MM = 4; + break; + } + int XL = 32; + int XR = pBitmap->Width - 16; + int YT = 16; + int YB = pBitmap->Height - 24; + + int i; + if( init ){ + tp->Pen->Color = clBlack; + tp->Font->Size = 8; + tp->MoveTo(XL, YT); tp->LineTo(XR, YT); tp->LineTo(XR, YB); tp->LineTo(XL, YB); tp->LineTo(XL, YT); + tp->Pen->Color = clGray; + for( i = 0; i < 5; i++ ){ + tp->Pen->Style = (i & 1) ? psSolid : psDot; + y = (int)(double(i + 1) * double(YB - YT)/6.0 + YT); + tp->MoveTo(XL, y); tp->LineTo(XR, y); + } + for( i = 1; i < 4; i++ ){ + y = (int)(double(i) * double(YB - YT)/3.0 + YT); + sprintf( bf, "-%2u", (60 / 3)*i ); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(XL - 6 - tp->TextWidth(bf), y - (tp->TextHeight(bf)/2), bf); + } + strcpy(bf, "dB"); + tp->TextOut(XL - 6 - tp->TextWidth(bf), YT-(tp->TextHeight(bf)/2), bf); + for( i = 1; i <= DM; i++ ){ + tp->Pen->Style = (i % MM) ? psDot : psSolid; + x = (int)(double(i) * double(XR - XL)/double(DM+1) + XL); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + } + for( i = 0; i <= LM; i++ ){ + x = (int)(double(i) * double(XR - XL)/double(LM) + XL); + sprintf(bf, "%4.0lf", (max*i)/LM); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(x - (tp->TextWidth(bf)/2), YB + 6, bf); + } + tp->Pen->Color = clRed; + tp->Pen->Style = psDot; + x = (int)(XL + (fs/2) * (double(XR-XL)/max)); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + + tp->Pen->Color = clBlue; + tp->Pen->Style = psSolid; + } + int ay = 0; + pi2t = 2.0 * PI / fs; + pi4t = 2.0 * pi2t; + tp->Pen->Color = col; + double A, B, C, D, P, R; + double cosw, sinw, cos2w, sin2w; + for( x = XL, f = 0.0; x < XR; x++, f += (max/double(XR-XL)) ){ + cosw = cos(pi2t*f); + sinw = sin(pi2t*f); + cos2w = cos(pi4t*f); + sin2w = sin(pi4t*f); + A = a0 + a1 * cosw + a2 * cos2w; + B = 1 + b1 * cosw + b2 * cos2w; + C = a1 * sinw + a2 * sin2w; + D = b1 * sinw + b2 * sin2w; + P = A*A + C*C; + R = B*B + D*D; + g = sqrt(P/R); + if( g == 0 ) g = 1.0e-38; + gdb = 20*0.4342944*log(fabs(g)) + 60.0; + if( gdb < 0.0 ) gdb = 0.0; + gdb = (gdb * double(YB-YT))/60.0; + y = YB - (int)gdb; + if( x == XL ){ + tp->MoveTo(x, y); + tp->LineTo(x, y); + } + else { + tp->MoveTo(x-1, ay); + tp->LineTo(x, y); + } + ay = y; + } +} + +//--------------------------------------------------------------------- +// Žü”g”“Á«ƒOƒ‰ƒtiƒtƒBƒ‹ƒ^ƒXƒŒƒbƒh“à‚ŃR[ƒ‹‚µ‚Ă͂¢‚¯‚È‚¢j +// +// +void DrawGraphIIR(Graphics::TBitmap *pBitmap, CIIR *ip, int Over, int &nmax, int init, TColor col) +{ + int x, y; + double f, gdb, g, pi2t, pi4t, fs; + double max; + char bf[80]; + + TCanvas *tp = pBitmap->Canvas; + TRect rc; + rc.Left = 0; + rc.Right = pBitmap->Width; + rc.Top = 0; + rc.Bottom = pBitmap->Height; + if( init ){ + tp->Brush->Color = clWhite; + tp->FillRect(rc); + } + int LM; // Žü”g”•\ަ‚Ì‚ ‚郉ƒCƒ“” + int DM; // “à•”ü‚Ì” + int MM; // ŽÀü‚ÌŠÔŠu + switch(Over){ + case 2: + max = 3000; + fs = SampFreq/2.0; + break; + case 3: + max = 2000; + fs = SampFreq/3.0; + break; + default: + max = 4000; + fs = SampFreq; + break; + } + if( nmax ){ + max = nmax; + } + else { + nmax = max; + } + switch(nmax){ + case 3000: + LM = 3; + DM = 14; + MM = 5; + break; + case 100: + case 200: + case 2000: + LM = 4; + DM = 19; + MM = 5; + break; + case 400: + case 800: + case 4000: + LM = 4; + DM = 19; + MM = 5; + break; + default: // 6000 + LM = 3; + DM = 11; + MM = 4; + break; + } + int XL = 32; + int XR = pBitmap->Width - 16; + int YT = 16; + int YB = pBitmap->Height - 24; + + int i; + if( init ){ + tp->Pen->Color = clBlack; + tp->Font->Size = 8; + tp->MoveTo(XL, YT); tp->LineTo(XR, YT); tp->LineTo(XR, YB); tp->LineTo(XL, YB); tp->LineTo(XL, YT); + tp->Pen->Color = clGray; + for( i = 0; i < 5; i++ ){ + tp->Pen->Style = (i & 1) ? psSolid : psDot; + y = (int)(double(i + 1) * double(YB - YT)/6.0 + YT); + tp->MoveTo(XL, y); tp->LineTo(XR, y); + } + for( i = 1; i < 4; i++ ){ + y = (int)(double(i) * double(YB - YT)/3.0 + YT); + sprintf( bf, "-%2u", (60 / 3)*i ); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(XL - 6 - tp->TextWidth(bf), y - (tp->TextHeight(bf)/2), bf); + } + strcpy(bf, "dB"); + tp->TextOut(XL - 6 - tp->TextWidth(bf), YT-(tp->TextHeight(bf)/2), bf); + for( i = 1; i <= DM; i++ ){ + tp->Pen->Style = (i % MM) ? psDot : psSolid; + x = (int)(double(i) * double(XR - XL)/double(DM+1) + XL); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + } + for( i = 0; i <= LM; i++ ){ + x = (int)(double(i) * double(XR - XL)/double(LM) + XL); + sprintf(bf, "%4.0lf", (max*i)/LM); + ::SetBkMode(tp->Handle, TRANSPARENT); + tp->TextOut(x - (tp->TextWidth(bf)/2), YB + 6, bf); + } + tp->Pen->Color = clRed; + tp->Pen->Style = psDot; + x = (int)(XL + (fs/2) * (double(XR-XL)/max)); + tp->MoveTo(x, YT); tp->LineTo(x, YB); + + tp->Pen->Color = clBlue; + tp->Pen->Style = psSolid; + } + int ay = 0; + pi2t = 2.0 * PI / fs; + pi4t = 2.0 * pi2t; + tp->Pen->Color = col; + double A, B, C, D, P, R; + double cosw, sinw, cos2w, sin2w; + for( x = XL, f = 0.0; x < XR; x++, f += (max/double(XR-XL)) ){ + cosw = cos(pi2t*f); + sinw = sin(pi2t*f); + cos2w = cos(pi4t*f); + sin2w = sin(pi4t*f); + g = 1.0; + double *ap = ip->A; + double *bp = ip->B; + for( i = 0; i < ip->m_order/2; i++, ap += 3, bp += 2 ){ +/* + A = a0 + a1 * cosw + a2 * cos2w; + B = 1 + b1 * cosw + b2 * cos2w; + C = a1 * sinw + a2 * sin2w; + D = b1 * sinw + b2 * sin2w; +*/ + A = bp[0] + bp[1] * cosw + bp[0] * cos2w; + B = 1 + -ap[1] * cosw + -ap[2] * cos2w; + C = bp[1] * sinw + bp[0] * sin2w; + D = -ap[1] * sinw + -ap[2] * sin2w; + P = A*A + C*C; + R = B*B + D*D; + g *= sqrt(P/R); + } + if( ip->m_order & 1 ){ + A = bp[0] + bp[1] * cosw; + B = 1 + -ap[1] * cosw; + C = bp[1] * sinw; + D = -ap[1] * sinw; + P = A*A + C*C; + R = B*B + D*D; + g *= sqrt(P/R); + } + if( g == 0 ) g = 1.0e-38; + gdb = 20*0.4342944*log(fabs(g)) + 60.0; + if( gdb < 0.0 ) gdb = 0.0; + gdb = (gdb * double(YB-YT))/60.0; + y = YB - (int)gdb; + if( x == XL ){ + tp->MoveTo(x, y); + tp->LineTo(x, y); + } + else { + tp->MoveTo(x-1, ay); + tp->LineTo(x, y); + } + ay = y; + } +} + +double asinh(double x) +{ + return log(x + sqrt(x*x+1.0)); +} + +//------------------------------------------------------------------ +// bc : 0-ƒoƒ^[ƒ[ƒX, 1-ƒ`ƒFƒrƒVƒt +// rp : ’ʉ߈æ‚ÌƒŠƒbƒvƒ‹ +void MakeIIR(double *A, double *B, double fc, double fs, int order, int bc, double rp) +{ + double w0, wa, u, zt, x; + int j, n; + + if( bc ){ // ƒ`ƒFƒrƒVƒt + u = 1.0/double(order)*asinh(1.0/sqrt(pow(10.0,0.1*rp)-1.0)); + } + wa = tan(PI*fc/fs); + w0 = 1.0; + n = (order & 1) + 1; + double *pA = A; + double *pB = B; + double d1, d2; + for( j = 1; j <= order/2; j++, pA+=3, pB+=2 ){ + if( bc ){ // ƒ`ƒFƒrƒVƒt + d1 = sinh(u)*cos(n*PI/(2*order)); + d2 = cosh(u)*sin(n*PI/(2*order)); + w0 = sqrt(d1 * d1 + d2 * d2); + zt = sinh(u)*cos(n*PI/(2*order))/w0; + } + else { // ƒoƒ^[ƒ[ƒX + w0 = 1.0; + zt = cos(n*PI/(2*order)); + } + pA[0] = 1 + wa*w0*2*zt + wa*w0*wa*w0; + pA[1] = -2 * (wa*w0*wa*w0 - 1)/pA[0]; + pA[2] = -(1.0 - wa*w0*2*zt + wa*w0*wa*w0)/pA[0]; + pB[0] = wa*w0*wa*w0 / pA[0]; + pB[1] = 2*pB[0]; + n += 2; + } + if( bc && !(order & 1) ){ + x = pow( 1.0/pow(10.0,rp/20.0), 1/double(order/2) ); + pB = B; + for( j = 1; j <= order/2; j++, pB+=2 ){ + pB[0] *= x; + pB[1] *= x; + } + } + if( order & 1 ){ + if( bc ) w0 = sinh(u); + j = (order / 2); + pA = A + (j*3); + pB = B + (j*2); + pA[0] = 1 + wa*w0; + pA[1] = -(wa*w0 - 1)/pA[0]; + pB[0] = wa*w0/pA[0]; + pB[1] = pB[0]; + } +} + +//--------------------------------------------------------------------------- +CIIR::CIIR() +{ + m_order = 0; + A = new double[IIRMAX*3]; + B = new double[IIRMAX*2]; + Z = new double[IIRMAX*2]; + memset(A, 0, sizeof(double[IIRMAX*3])); + memset(B, 0, sizeof(double[IIRMAX*2])); + memset(Z, 0, sizeof(double[IIRMAX*2])); +} + +CIIR::~CIIR() +{ + if( A != NULL ) delete[] A; + if( B != NULL ) delete[] B; + if( Z != NULL ) delete[] Z; +} + +void CIIR::Clear(void) +{ + memset(Z, 0, sizeof(double[IIRMAX*2])); +} + +void CIIR::MakeIIR(double fc, double fs, int order, int bc, double rp) +{ + m_order = order; + m_bc = bc; + m_rp = rp; + ::MakeIIR(A, B, fc, fs, order, bc, rp); +} + +double CIIR::Do(double d) +{ + double *pA = A; + double *pB = B; + double *pZ = Z; + double o; + for( int i = 0; i < m_order/2; i++, pA+=3, pB+=2, pZ+=2 ){ + d += pZ[0] * pA[1] + pZ[1] * pA[2]; + o = d * pB[0] + pZ[0] * pB[1] + pZ[1] * pB[0]; + pZ[1] = pZ[0]; + if( fabs(d) < 1e-37 ) d = 0.0; + pZ[0] = d; + d = o; + } + if( m_order & 1 ){ + d += pZ[0] * pA[1]; + o = d * pB[0] + pZ[0] * pB[0]; + if( fabs(d) < 1e-37 ) d = 0.0; + pZ[0] = d; + d = o; + } + return d; +} + +//********************************************************************* +// CINTPXY XYScope —p ~2ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTPXY2::CINTPXY2() +{ + iir.MakeIIR(2800, DemSamp * 2.0, 14, 0, 0); +} + +void __fastcall CINTPXY2::Do(double *p, double d) +{ + *p++ = iir.Do(d); + *p = iir.Do(d); +} + +#if 0 +//********************************************************************* +// CINTPXY XYScope —p ~4ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTPXY4::CINTPXY4() +{ + iir.MakeIIR(2800, DemSamp * 4.0, 24, 0, 0); +} + +void __fastcall CINTPXY4::Do(double *p, double d) +{ + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p = iir.Do(d); +} + +//********************************************************************* +// CINTPXY XYScope —p ~8ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTPXY8::CINTPXY8() +{ + iir.MakeIIR(2800, DemSamp * 8.0, 30, 0, 0); +} + +void __fastcall CINTPXY8::Do(double *p, double d) +{ + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p++ = iir.Do(d); + *p = iir.Do(d); +} + +//********************************************************************* +// CINTPXYFIR XYScope —p ~2ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTPXY2FIR::CINTPXY2FIR() +{ + memset(Z, 0, sizeof(Z)); + ::MakeFilter(H, 32, ffLPF, DemSamp * 2.0, 2800, 3000, 40, 1.7); +} + +void CINTPXY2FIR::Do(double *dp, double d) +{ + memcpy(Z, &Z[1], sizeof(double)*16); + Z[16] = d; + + dp[0] = Z[0] * H[32]; + dp[1] = Z[1] * H[31]; + dp[0] += Z[1] * H[30]; + dp[1] += Z[2] * H[29]; + dp[0] += Z[2] * H[28]; + dp[1] += Z[3] * H[27]; + dp[0] += Z[3] * H[26]; + dp[1] += Z[4] * H[25]; + dp[0] += Z[4] * H[24]; + dp[1] += Z[5] * H[23]; + dp[0] += Z[5] * H[22]; + dp[1] += Z[6] * H[21]; + dp[0] += Z[6] * H[20]; + dp[1] += Z[7] * H[19]; + dp[0] += Z[7] * H[18]; + dp[1] += Z[8] * H[17]; + dp[0] += Z[8] * H[16]; + dp[1] += Z[9] * H[15]; + dp[0] += Z[9] * H[14]; + dp[1] += Z[10] * H[13]; + dp[0] += Z[10] * H[12]; + dp[1] += Z[11] * H[11]; + dp[0] += Z[11] * H[10]; + dp[1] += Z[12] * H[9]; + dp[0] += Z[12] * H[8]; + dp[1] += Z[13] * H[7]; + dp[0] += Z[13] * H[6]; + dp[1] += Z[14] * H[5]; + dp[0] += Z[14] * H[4]; + dp[1] += Z[15] * H[3]; + dp[0] += Z[15] * H[2]; + dp[1] += Z[16] * H[1]; + dp[0] += Z[16] * H[0]; +} +#endif + +//********************************************************************* +// CINTPXYFIR XYScope —p ~4ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTPXY4FIR::CINTPXY4FIR() +{ + memset(Z, 0, sizeof(Z)); + ::MakeFilter(H, 64, ffLPF, DemSamp * 4.0, 2800, 3000, 60, 4.0); +} + +void __fastcall CINTPXY4FIR::Do(double *dp, double d) +{ + memcpy(Z, &Z[1], sizeof(double)*16); + Z[16] = d; + + dp[0] = Z[0] * H[64]; + dp[1] = Z[1] * H[63]; + dp[2] = Z[1] * H[62]; + dp[3] = Z[1] * H[61]; + dp[0] += Z[1] * H[60]; + dp[1] += Z[2] * H[59]; + dp[2] += Z[2] * H[58]; + dp[3] += Z[2] * H[57]; + dp[0] += Z[2] * H[56]; + dp[1] += Z[3] * H[55]; + dp[2] += Z[3] * H[54]; + dp[3] += Z[3] * H[53]; + dp[0] += Z[3] * H[52]; + dp[1] += Z[4] * H[51]; + dp[2] += Z[4] * H[50]; + dp[3] += Z[4] * H[49]; + dp[0] += Z[4] * H[48]; + dp[1] += Z[5] * H[47]; + dp[2] += Z[5] * H[46]; + dp[3] += Z[5] * H[45]; + dp[0] += Z[5] * H[44]; + dp[1] += Z[6] * H[43]; + dp[2] += Z[6] * H[42]; + dp[3] += Z[6] * H[41]; + dp[0] += Z[6] * H[40]; + dp[1] += Z[7] * H[39]; + dp[2] += Z[7] * H[38]; + dp[3] += Z[7] * H[37]; + dp[0] += Z[7] * H[36]; + dp[1] += Z[8] * H[35]; + dp[2] += Z[8] * H[34]; + dp[3] += Z[8] * H[33]; + dp[0] += Z[8] * H[32]; + dp[1] += Z[9] * H[31]; + dp[2] += Z[9] * H[30]; + dp[3] += Z[9] * H[29]; + dp[0] += Z[9] * H[28]; + dp[1] += Z[10] * H[27]; + dp[2] += Z[10] * H[26]; + dp[3] += Z[10] * H[25]; + dp[0] += Z[10] * H[24]; + dp[1] += Z[11] * H[23]; + dp[2] += Z[11] * H[22]; + dp[3] += Z[11] * H[21]; + dp[0] += Z[11] * H[20]; + dp[1] += Z[12] * H[19]; + dp[2] += Z[12] * H[18]; + dp[3] += Z[12] * H[17]; + dp[0] += Z[12] * H[16]; + dp[1] += Z[12] * H[15]; + dp[2] += Z[12] * H[14]; + dp[3] += Z[12] * H[13]; + dp[0] += Z[12] * H[12]; + dp[1] += Z[12] * H[11]; + dp[2] += Z[12] * H[10]; + dp[3] += Z[12] * H[9]; + dp[0] += Z[12] * H[8]; + dp[1] += Z[12] * H[7]; + dp[2] += Z[12] * H[6]; + dp[3] += Z[12] * H[5]; + dp[0] += Z[12] * H[4]; + dp[1] += Z[12] * H[3]; + dp[2] += Z[12] * H[2]; + dp[3] += Z[12] * H[1]; + dp[0] += Z[12] * H[0]; +} + +//********************************************************************* +// CINTPXYFIR XYScope —p ~8ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTPXY8FIR::CINTPXY8FIR() +{ + memset(Z, 0, sizeof(Z)); + ::MakeFilter(H, 96, ffLPF, DemSamp * 8.0, 2800, 3000, 60, 8.0); +} + +void __fastcall CINTPXY8FIR::Do(double *dp, double d) +{ + memcpy(Z, &Z[1], sizeof(double)*12); + Z[12] = d; + + dp[0] = Z[0] * H[96]; + dp[1] = Z[1] * H[95]; + dp[2] = Z[1] * H[94]; + dp[3] = Z[1] * H[93]; + dp[4] = Z[1] * H[92]; + dp[5] = Z[1] * H[91]; + dp[6] = Z[1] * H[90]; + dp[7] = Z[1] * H[89]; + + dp[0] += Z[1] * H[88]; + dp[1] += Z[2] * H[87]; + dp[2] += Z[2] * H[86]; + dp[3] += Z[2] * H[85]; + dp[4] += Z[2] * H[84]; + dp[5] += Z[2] * H[83]; + dp[6] += Z[2] * H[82]; + dp[7] += Z[2] * H[81]; + + dp[0] += Z[2] * H[80]; + dp[1] += Z[3] * H[79]; + dp[2] += Z[3] * H[78]; + dp[3] += Z[3] * H[77]; + dp[4] += Z[3] * H[76]; + dp[5] += Z[3] * H[75]; + dp[6] += Z[3] * H[74]; + dp[7] += Z[3] * H[73]; + + dp[0] += Z[3] * H[72]; + dp[1] += Z[4] * H[71]; + dp[2] += Z[4] * H[70]; + dp[3] += Z[4] * H[69]; + dp[4] += Z[4] * H[68]; + dp[5] += Z[4] * H[67]; + dp[6] += Z[4] * H[66]; + dp[7] += Z[4] * H[65]; + + dp[0] += Z[4] * H[64]; + dp[1] += Z[5] * H[63]; + dp[2] += Z[5] * H[62]; + dp[3] += Z[5] * H[61]; + dp[4] += Z[5] * H[60]; + dp[5] += Z[5] * H[59]; + dp[6] += Z[5] * H[58]; + dp[7] += Z[5] * H[57]; + + dp[0] += Z[5] * H[56]; + dp[1] += Z[6] * H[55]; + dp[2] += Z[6] * H[54]; + dp[3] += Z[6] * H[53]; + dp[4] += Z[6] * H[52]; + dp[5] += Z[6] * H[51]; + dp[6] += Z[6] * H[50]; + dp[7] += Z[6] * H[49]; + + dp[0] += Z[6] * H[48]; + dp[1] += Z[7] * H[47]; + dp[2] += Z[7] * H[46]; + dp[3] += Z[7] * H[45]; + dp[4] += Z[7] * H[44]; + dp[5] += Z[7] * H[43]; + dp[6] += Z[7] * H[42]; + dp[7] += Z[7] * H[41]; + + dp[0] += Z[7] * H[40]; + dp[1] += Z[8] * H[39]; + dp[2] += Z[8] * H[38]; + dp[3] += Z[8] * H[37]; + dp[4] += Z[8] * H[36]; + dp[5] += Z[8] * H[35]; + dp[6] += Z[8] * H[34]; + dp[7] += Z[8] * H[33]; + + dp[0] += Z[8] * H[32]; + dp[1] += Z[9] * H[31]; + dp[2] += Z[9] * H[30]; + dp[3] += Z[9] * H[29]; + dp[4] += Z[9] * H[28]; + dp[5] += Z[9] * H[27]; + dp[6] += Z[9] * H[26]; + dp[7] += Z[9] * H[25]; + + dp[0] += Z[9] * H[24]; + dp[1] += Z[10] * H[23]; + dp[2] += Z[10] * H[22]; + dp[3] += Z[10] * H[21]; + dp[4] += Z[10] * H[20]; + dp[5] += Z[10] * H[19]; + dp[6] += Z[10] * H[18]; + dp[7] += Z[10] * H[17]; + + dp[0] += Z[10] * H[16]; + dp[1] += Z[11] * H[15]; + dp[2] += Z[11] * H[14]; + dp[3] += Z[11] * H[13]; + dp[4] += Z[11] * H[12]; + dp[5] += Z[11] * H[11]; + dp[6] += Z[11] * H[10]; + dp[7] += Z[11] * H[9]; + + dp[0] += Z[11] * H[8]; + dp[1] += Z[12] * H[7]; + dp[2] += Z[12] * H[6]; + dp[3] += Z[12] * H[5]; + dp[4] += Z[12] * H[4]; + dp[5] += Z[12] * H[3]; + dp[6] += Z[12] * H[2]; + dp[7] += Z[12] * H[1]; + + dp[0] += Z[12] * H[0]; +} + +#if OVERFIR +//********************************************************************* +// CDECM4 1/4ƒfƒVƒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CDECM4::CDECM4() +{ + const double _mt[]={1.11, 1.25, 1.40, 1.11}; + memset(Z1, 0, sizeof(Z1)); + memset(Z2, 0, sizeof(Z2)); + memset(Z3, 0, sizeof(Z3)); + memset(Z4, 0, sizeof(Z4)); + ::MakeFilter(H, 80, ffLPF, SampFreq*4, 2800, 3000, 50, _mt[SampType]); +} + +double __fastcall CDECM4::Do(double *dp) +{ + memcpy(Z1, &Z1[1], sizeof(double)*20); + memcpy(Z2, &Z2[1], sizeof(double)*19); + memcpy(Z3, &Z3[1], sizeof(double)*19); + memcpy(Z4, &Z4[1], sizeof(double)*19); +#if 1 + Z4[19] = *dp++; + Z3[19] = *dp++; + Z2[19] = *dp++; + Z1[20] = *dp; +#else + Z1[20] = *dp++; + Z2[19] = *dp++; + Z3[19] = *dp++; + Z4[19] = *dp; +#endif + double a; + a = Z1[0] * H[80]; + a += Z4[0] * H[79]; + a += Z3[0] * H[78]; + a += Z2[0] * H[77]; + a += Z1[1] * H[76]; + a += Z4[1] * H[75]; + a += Z3[1] * H[74]; + a += Z2[1] * H[73]; + a += Z1[2] * H[72]; + a += Z4[2] * H[71]; + a += Z3[2] * H[70]; + a += Z2[2] * H[69]; + a += Z1[3] * H[68]; + a += Z4[3] * H[67]; + a += Z3[3] * H[66]; + a += Z2[3] * H[65]; + a += Z1[4] * H[64]; + a += Z4[4] * H[63]; + a += Z3[4] * H[62]; + a += Z2[4] * H[61]; + a += Z1[5] * H[60]; + a += Z4[5] * H[59]; + a += Z3[5] * H[58]; + a += Z2[5] * H[57]; + a += Z1[6] * H[56]; + a += Z4[6] * H[55]; + a += Z3[6] * H[54]; + a += Z2[6] * H[53]; + a += Z1[7] * H[52]; + a += Z4[7] * H[51]; + a += Z3[7] * H[50]; + a += Z2[7] * H[49]; + a += Z1[8] * H[48]; + a += Z4[8] * H[47]; + a += Z3[8] * H[46]; + a += Z2[8] * H[45]; + a += Z1[9] * H[44]; + a += Z4[9] * H[43]; + a += Z3[9] * H[42]; + a += Z2[9] * H[41]; + a += Z1[10] * H[40]; + a += Z4[10] * H[39]; + a += Z3[10] * H[38]; + a += Z2[10] * H[37]; + a += Z1[11] * H[36]; + a += Z4[11] * H[35]; + a += Z3[11] * H[34]; + a += Z2[11] * H[33]; + a += Z1[12] * H[32]; + a += Z4[12] * H[31]; + a += Z3[12] * H[30]; + a += Z2[12] * H[29]; + a += Z1[13] * H[28]; + a += Z4[13] * H[27]; + a += Z3[13] * H[26]; + a += Z2[13] * H[25]; + a += Z1[14] * H[24]; + a += Z4[14] * H[23]; + a += Z3[14] * H[22]; + a += Z2[14] * H[21]; + a += Z1[15] * H[20]; + a += Z4[15] * H[19]; + a += Z3[15] * H[18]; + a += Z2[15] * H[17]; + a += Z1[16] * H[16]; + a += Z4[16] * H[15]; + a += Z3[16] * H[14]; + a += Z2[16] * H[13]; + a += Z1[17] * H[12]; + a += Z4[17] * H[11]; + a += Z3[17] * H[10]; + a += Z2[17] * H[9]; + a += Z1[18] * H[8]; + a += Z4[18] * H[7]; + a += Z3[18] * H[6]; + a += Z2[18] * H[5]; + a += Z1[19] * H[4]; + a += Z4[19] * H[3]; + a += Z3[19] * H[2]; + a += Z2[19] * H[1]; + a += Z1[20] * H[0]; + return a; +} + +//********************************************************************* +// CINTP4 x4ƒCƒ“ƒ^ƒ|[ƒŒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CINTP4::CINTP4() +{ + memset(Z, 0, sizeof(Z)); + ::MakeFilter(H, 80, ffLPF, SampFreq*4, 2800, 3000, 50, 4.0); +} + +void __fastcall CINTP4::Do(double *dp, double d) +{ + memcpy(Z, &Z[1], sizeof(double)*20); + Z[20] = d; + + dp[0] = Z[0] * H[80]; + dp[1] = Z[1] * H[79]; + dp[2] = Z[1] * H[78]; + dp[3] = Z[1] * H[77]; + dp[0] += Z[1] * H[76]; + dp[1] += Z[2] * H[75]; + dp[2] += Z[2] * H[74]; + dp[3] += Z[2] * H[73]; + dp[0] += Z[2] * H[72]; + dp[1] += Z[3] * H[71]; + dp[2] += Z[3] * H[70]; + dp[3] += Z[3] * H[69]; + dp[0] += Z[3] * H[68]; + dp[1] += Z[4] * H[67]; + dp[2] += Z[4] * H[66]; + dp[3] += Z[4] * H[65]; + dp[0] += Z[4] * H[64]; + dp[1] += Z[5] * H[63]; + dp[2] += Z[5] * H[62]; + dp[3] += Z[5] * H[61]; + dp[0] += Z[5] * H[60]; + dp[1] += Z[6] * H[59]; + dp[2] += Z[6] * H[58]; + dp[3] += Z[6] * H[57]; + dp[0] += Z[6] * H[56]; + dp[1] += Z[7] * H[55]; + dp[2] += Z[7] * H[54]; + dp[3] += Z[7] * H[53]; + dp[0] += Z[7] * H[52]; + dp[1] += Z[8] * H[51]; + dp[2] += Z[8] * H[50]; + dp[3] += Z[8] * H[49]; + dp[0] += Z[8] * H[48]; + dp[1] += Z[9] * H[47]; + dp[2] += Z[9] * H[46]; + dp[3] += Z[9] * H[45]; + dp[0] += Z[9] * H[44]; + dp[1] += Z[10] * H[43]; + dp[2] += Z[10] * H[42]; + dp[3] += Z[10] * H[41]; + dp[0] += Z[10] * H[40]; + dp[1] += Z[11] * H[39]; + dp[2] += Z[11] * H[38]; + dp[3] += Z[11] * H[37]; + dp[0] += Z[11] * H[36]; + dp[1] += Z[12] * H[35]; + dp[2] += Z[12] * H[34]; + dp[3] += Z[12] * H[33]; + dp[0] += Z[12] * H[32]; + + dp[1] += Z[13] * H[31]; + dp[2] += Z[13] * H[30]; + dp[3] += Z[13] * H[29]; + dp[0] += Z[13] * H[28]; + dp[1] += Z[14] * H[27]; + dp[2] += Z[14] * H[26]; + dp[3] += Z[14] * H[25]; + dp[0] += Z[14] * H[24]; + dp[1] += Z[15] * H[23]; + dp[2] += Z[15] * H[22]; + dp[3] += Z[15] * H[21]; + dp[0] += Z[15] * H[20]; + dp[1] += Z[16] * H[19]; + dp[2] += Z[16] * H[18]; + dp[3] += Z[16] * H[17]; + dp[0] += Z[16] * H[16]; + dp[1] += Z[17] * H[15]; + dp[2] += Z[17] * H[14]; + dp[3] += Z[17] * H[13]; + dp[0] += Z[17] * H[12]; + dp[1] += Z[18] * H[11]; + dp[2] += Z[18] * H[10]; + dp[3] += Z[18] * H[9]; + dp[0] += Z[18] * H[8]; + dp[1] += Z[19] * H[7]; + dp[2] += Z[19] * H[6]; + dp[3] += Z[19] * H[5]; + dp[0] += Z[19] * H[4]; + dp[1] += Z[20] * H[3]; + dp[2] += Z[20] * H[2]; + dp[3] += Z[20] * H[1]; + dp[0] += Z[20] * H[0]; +} +#endif + +//********************************************************************* +// COVERLIMIT ‚•iŽ¿ƒŠƒ~ƒbƒ^ +// +COVERLIMIT::COVERLIMIT() +{ +#if !OVERFIR + iira.MakeIIR(2800, SampFreq * 4.0, 24, 0, 0); + iirb.MakeIIR(2800, SampFreq * 4.0, 24, 0, 0); +#endif +} + +double COVERLIMIT::Do(double d, double lmt) +{ +#if OVERFIR + double dt[4]; + + intp.Do(dt, d); + + dt[0] *= lmt; + if( dt[0] > 16384.0 ) dt[0] = 16384.0; + if( dt[0] < -16384.0 ) dt[0] = -16384.0; + dt[1] *= lmt; + if( dt[1] > 16384.0 ) dt[1] = 16384.0; + if( dt[1] < -16384.0 ) dt[1] = -16384.0; + dt[2] *= lmt; + if( dt[2] > 16384.0 ) dt[2] = 16384.0; + if( dt[2] < -16384.0 ) dt[2] = -16384.0; + dt[3] *= lmt; + if( dt[3] > 16384.0 ) dt[3] = 16384.0; + if( dt[3] < -16384.0 ) dt[3] = -16384.0; + + return decm.Do(dt); +#else + double d1, d2, d3, d4; + + // X4 ƒCƒ“ƒ^[ƒ|[ƒŒ[ƒ^ + d1 = iira.Do(d); + d2 = iira.Do(d); + d3 = iira.Do(d); + d4 = iira.Do(d); + + d1 *= lmt; + if( d1 > 16384.0 ) d1 = 16384.0; + if( d1 < -16384.0 ) d1 = -16384.0; + d2 *= lmt; + if( d2 > 16384.0 ) d2 = 16384.0; + if( d2 < -16384.0 ) d2 = -16384.0; + d3 *= lmt; + if( d3 > 16384.0 ) d3 = 16384.0; + if( d3 < -16384.0 ) d3 = -16384.0; + d4 *= lmt; + if( d4 > 16384.0 ) d4 = 16384.0; + if( d4 < -16384.0 ) d4 = -16384.0; + + // 1/4 ƒfƒVƒ[ƒ^ + iirb.Do(d1); + iirb.Do(d2); + iirb.Do(d3); + return iirb.Do(d4); +#endif +} + +//********************************************************************* +// CDECM2IIR 1/2ƒfƒVƒ[ƒ^ˆ—ƒNƒ‰ƒX +// +CDECM2IIR::CDECM2IIR() +{ + iir.MakeIIR(2900, SampFreq, 12, 0, 0); +} + +double CDECM2IIR::Do(double d1, double d2) +{ + iir.Do(d2); + return iir.Do(d1); +} + +#if 0 +//********************************************************************* +// CHILL ƒqƒ‹ƒxƒ‹ƒg•ÏŠ·ƒNƒ‰ƒX +// +CHILL::CHILL() +{ + memset(Z, 0, sizeof(Z)); + m_tap = 8; + m_htap = m_tap / 2; + m_CenterFreq = 2125 + 170*0.5; + SetSampFreq(SampFreq); + SetFreq(2125, 2125+170); +} + +void CHILL::SetSampFreq(double samp) +{ + m_SampFreq = samp; + m_OUT = 32768.0 * m_SampFreq / (2 * PI * 800); + m_OFF = (2 * PI * m_CenterFreq) / m_SampFreq; +} + +void CHILL::SetFreq(double mark, double space) +{ + m_MarkFreq = mark; + m_SpaceFreq = space; + m_CenterFreq = (mark + space) * 0.5; + m_OFF = (2 * PI * m_CenterFreq) / m_SampFreq; + + MakeFilter(H, m_tap, ffLPF, m_SampFreq, m_CenterFreq, m_CenterFreq, 6, 1.0); + H[m_htap] = 0; + for( int i = 0; i < m_htap; i++ ){ + H[i] = -H[i]; + } + m_A[0] = m_A[1] = m_A[2] = m_A[3] = 0; + m_ph = &Z[m_htap]; +} + +void CHILL::SetMarkFreq(double mark) +{ + SetFreq(mark, m_SpaceFreq); +} + +void CHILL::SetSpaceFreq(double space) +{ + SetFreq(m_MarkFreq, space); +} + +double CHILL::Do(double d) +{ + d = DoFIR(H, Z, d, m_tap); + double a = *m_ph; + if( a ) a = atan2(d, a); + d = a - m_A[0]; + m_A[0] = a; + if( d >= PI ){ + d = d - PI*2; + } + else if( d <= -PI ){ + d = d + PI*2; + } + d += m_OFF; + return d * m_OUT; +} +#endif + + diff --git a/fir.h b/fir.h new file mode 100644 index 0000000..4387f59 --- /dev/null +++ b/fir.h @@ -0,0 +1,321 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#ifndef firH +#define firH +#include + +//--------------------------------------------------------------------------- +#include "ComLib.h" +#define TAPMAX 512 + +#define PI 3.1415926535897932384626433832795 + +enum { + ffLPF, + ffHPF, + ffBPF, + ffBEF, + ffUSER, + ffLMS, +}; + +typedef struct { + int n; + int typ; + double fs; + double fcl; + double fch; + double att; + double gain; + double fc; + double hp[TAPMAX+1]; /* ŒW””z—ñ */ +}FIR; +void MakeFilter(double *HP, int tap, int type, double fs, double fcl, double fch, double att, double gain); +void MakeFilter(double *HP, FIR *fp); +void __fastcall MakeHilbert(double *H, int N, double fs, double fc1, double fc2); +void DrawGraph(Graphics::TBitmap *pBitmap, const double *H, int Tap, int Over, int &nmax, int init, TColor col); +void DrawGraphIIR(Graphics::TBitmap *pBitmap, double a0, double a1, double a2, double b1, double b2, int Over, int &nmax, int init, TColor col); +void DrawGraph2(Graphics::TBitmap *pBitmap, const double *H1, int Tap1, const double *H2, int Tap2, int Over, int &nmax, int init, TColor col); + +double __fastcall DoFIR(double *hp, double *zp, double d, int tap); + +class CDECM2{ // 36 Tap FIR 1/2 DECM +private: + double Z1[19]; + double Z2[18]; + double H[37]; +public: + CDECM2(); + double Do(double d1, double d2); +}; + +#if 0 +class CDECM2H{ // 64 Tap FIR 1/2 DECM +private: + double Z1[33]; + double Z2[32]; + double H[65]; +public: + CDECM2H(); + double Do(double d1, double d2); +}; +#endif + +#if 0 +class CINTP2{ // 36 Tap FIR x2 INTP +private: + double Z[19]; + double H[37]; +public: + CINTP2(); + void Do(double &d1, double &d2, double d); +}; + +class CDECM3{ // 48 Tap FIR 1/3 DECM +private: + double Z1[17]; + double Z2[16]; + double Z3[16]; + double H[49]; +public: + CDECM3(); + double Do(double d1, double d2, double d3); +}; + +class CINTP3{ // 48 Tap FIR x3 INTP +private: + double Z[17]; + double H[49]; +public: + CINTP3(); + void Do(double &d1, double &d2, double &d3, double d); +}; +#endif + +#define DELAYMAX 4096 +class CLMS +{ +private: + double *Z; // FIR Z Application + double *D; // LMS Delay; + + double m_MarkFreq; // for RTTY + double m_SpaceFreq; // for RTTY + double HBPF[TAPMAX+1]; // for RTTY + + double m_lmsADJSC; // ƒXƒP[ƒ‹’²®’l + double m_lmsErr; // LMS Œë·ƒf[ƒ^ + double m_lmsMErr; // LMS Œë·ƒf[ƒ^i~‚QƒÊj + + void GetFW(double &fl, double &fh, double fq); +public: + int m_Type; + int m_Tap; + int m_NotchTap; // Notch Taps + int m_lmsInv; // LMS InvOutput + int m_lmsDelay; // LMS Delay + int m_lmsAGC; // LMS AGC + double m_lmsMU2; // LMS 2ƒÊ + double m_lmsGM; // LMS ƒÁ + double *H; // ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒtƒBƒ‹ƒ^‚ÌŒW” + + int m_lmsNotch; // ƒmƒbƒ`Žü”g” + int m_lmsNotch2; // ƒmƒbƒ`Žü”g” + int m_twoNotch; // ‚Q‚‚߂̃mƒbƒ`‚Ì‹–‰Â + int m_bpf; // For RTTY +public: + CLMS(); + ~CLMS(); + + void Copy(CLMS &other); + double Do(double d); + void SetWindow(double mfq, double sfq); + inline double *GetHBPF(void){return HBPF;}; +}; + +class CIIRTANK +{ +private: + double z1, z2; +public: + double a0; + double b1, b2; +public: + CIIRTANK(); + void SetFreq(double f, double smp, double bw); + double Do(double d); +}; + +#define IIRMAX 16 +class CIIR +{ +private: + double *Z; +public: + double *A; + double *B; + int m_order; + int m_bc; + double m_rp; + CIIR(); + ~CIIR(); + void MakeIIR(double fc, double fs, int order, int bc, double rp); + double Do(double d); + void Clear(void); +}; + +class CINTPXY2{ // IIR x2 INTP for XY Scope +private: + CIIR iir; +public: + CINTPXY2(); + inline void Clear(void){iir.Clear();}; + void __fastcall Do(double *p, double d); +}; + +#if 0 +class CINTPXY4{ // IIR x4 INTP for XY Scope +private: + CIIR iir; +public: + CINTPXY4(); + inline void Clear(void){iir.Clear();}; + void __fastcall Do(double *p, double d); +}; + +class CINTPXY8{ // IIR x8 INTP for XY Scope +private: + CIIR iir; +public: + CINTPXY8(); + inline void Clear(void){iir.Clear();}; + void __fastcall Do(double *p, double d); +}; + +class CINTPXY2FIR{ // 32 Tap FIR x2 INTP +private: + double Z[17]; + double H[33]; +public: + CINTPXY2FIR(); + inline void Clear(void){memset(Z, 0, sizeof(Z));}; + void __fastcall Do(double *p, double d); +}; +#endif + +class CINTPXY4FIR{ // 64 Tap FIR x4 INTP +private: + double Z[17]; + double H[65]; +public: + CINTPXY4FIR(); + inline void Clear(void){memset(Z, 0, sizeof(Z));}; + void __fastcall Do(double *p, double d); +}; + +class CINTPXY8FIR{ // 96 Tap FIR x8 INTP +private: + double Z[13]; + double H[97]; +public: + CINTPXY8FIR(); + inline void Clear(void){memset(Z, 0, sizeof(Z));}; + void __fastcall Do(double *p, double d); +}; + +#define OVERFIR 1 +#if OVERFIR +class CDECM4{ // 80 Tap FIR 1/4 DECM +private: + double Z1[21]; + double Z2[20]; + double Z3[20]; + double Z4[20]; + double H[81]; +public: + CDECM4(); + double __fastcall Do(double *dp); +}; + +class CINTP4{ // 80 Tap FIR x4 INTP +private: + double Z[21]; + double H[81]; +public: + CINTP4(); + inline void Clear(void){memset(Z, 0, sizeof(Z));}; + void __fastcall Do(double *p, double d); +}; +#endif + +class COVERLIMIT{ +private: +#if OVERFIR + CDECM4 decm; + CINTP4 intp; +#else + CIIR iira; + CIIR iirb; +#endif +public: + COVERLIMIT(); + double Do(double d, double lmt); +}; + +class CDECM2IIR{ // IIR 1/2 DECM +private: + CIIR iir; +public: + CDECM2IIR(); + double Do(double d1, double d2); +}; + +#if 0 +#define HILLTAP 48 +class CHILL +{ +public: + double Z[HILLTAP+1]; + double H[HILLTAP+1]; + double m_A[4]; + double m_OFF; + double m_OUT; + double *m_ph; + int m_htap; + int m_tap; + double m_SampFreq; + double m_CenterFreq; + double m_MarkFreq; + double m_SpaceFreq; +public: + CHILL(); + void SetSampFreq(double samp); + void SetFreq(double mark, double space); + void SetMarkFreq(double mark); + void SetSpaceFreq(double space); + + double Do(double d); +}; +#endif + +void DrawGraphIIR(Graphics::TBitmap *pBitmap, CIIR *ip, int Over, int &nmax, int init, TColor col); +#endif + diff --git a/je3hht.pro b/je3hht.pro new file mode 100644 index 0000000..4e32d26 --- /dev/null +++ b/je3hht.pro @@ -0,0 +1,76 @@ +[Define1024] +Name=JE3HHT +Enabled=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=1 +SQLevel=1.100000e+02 +DefMarkFreq=2.125000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=1 +RXBPFTAP=64 +RXBPFAFC=1 +RXBPFFW=2.500000e+02 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2210 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=3 +BaudRate=4.545000e+01 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=60 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +AFC=1 +UOS=1 +LimitAGC=1 +SQ=1 +TXLoop=1 +RXlms=0 +RXNotchTAP=72 +TTYBitLen=5 +TTYStopLen=4 +TTYParity=0 +FFTTones=4 + diff --git a/mmcg.cpp b/mmcg.cpp new file mode 100644 index 0000000..381ee44 --- /dev/null +++ b/mmcg.cpp @@ -0,0 +1,1525 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +/************************************************************************ + MMCG + + Copyright (C) JE3HHT 1993. + Modifed on 2000 for MMTTY by JE3HHT +************************************************************************/ +#include +#pragma hdrstop + +#include "ComLib.h" +#include "Mmcg.h" +#include "string.h" +#include "stdlib.h" +#include "Country.h" + +CMMCG mmcg; + +static LPCSTR ptbl[]={ + "", + "–kŠC“¹", "ÂXŒ§","ŠâŽèŒ§","H“cŒ§","ŽRŒ`Œ§","‹{錧","•Ÿ“‡Œ§","VŠƒŒ§", + "’·–쌧", "“Œ‹ž“s","_“Þ쌧","ç—tŒ§","é‹ÊŒ§","ˆï錧","“È–ØŒ§","ŒQ”nŒ§", + "ŽR—œŒ§","ɪŒ§","Šò•ŒŒ§","ˆ¤’mŒ§","ŽOdŒ§","‹ž“s•{","Ž ‰êŒ§","“Þ—ÇŒ§", + "‘åã•{","˜a‰ÌŽRŒ§","•ºŒÉŒ§","•xŽRŒ§","•ŸˆäŒ§","Î쌧","‰ªŽRŒ§","“‡ªŒ§", + "ŽRŒûŒ§","’¹ŽæŒ§","L“‡Œ§","쌧","“¿“‡Œ§","ˆ¤•QŒ§","‚’mŒ§","•Ÿ‰ªŒ§", + "²‰êŒ§","’·èŒ§","ŒF–{Œ§","‘啪Œ§","‹{茧","Ž­Ž™“‡Œ§","‰«“ꌧ" +}; + +static LPCSTR ptbleng[]={ + "", + "Hokkaido", "Aomori","Iwate","Akita","Yamagata","Miyazaki","Fukushima","Nigata", + "Nagano", "Tokyo","Kanagawa","Chiba","Saitama","Ibaragi","Tochigi","Gunma", + "Yamanashi","Shizuoka","Gifu","Aichi","Mie","Kyoto","Shiga","Nara", + "Osaka","Wakayama","Hyogo","Toyama","Fukui","Ishikawa","Okayama","Shimane", + "Yamaguchi","Tottri","Hiroshima","Kagawa","Tokushima","Ehime","Kochi","Fukuoka", + "Saga","Nagasaki","Kumamoto","Oita","Miyazaki","Kagoshima","Okinawa" +}; + +CMMCG::CMMCG() +{ + m_bp = NULL; + m_Max = 0; + m_Cnt = 0; + m_sinc = 0; + m_mask = -1; +} + +CMMCG::~CMMCG() +{ + Free(); +} + +void CMMCG::Free(void) +{ + if( m_bp != NULL ){ + int i; + MMCG *mp; + + for( mp = m_bp, i = 0; i < m_Cnt; i++, mp++ ){ + if( mp->Code != NULL ) delete[] mp->Code; + if( mp->QTH != NULL ) delete[] mp->QTH; + if( mp->Key != NULL ) delete[] mp->Key; + } + m_bp = NULL; + } + if( m_fp != NULL ){ + delete[] m_fp; + m_fp = NULL; + } + m_Max = m_Cnt = m_FindCnt = 0; +} + +void CMMCG::Alloc(int n) +{ + if( n >= m_Max ){ + int max = m_Max ? m_Max * 2 : 256; + MMCG *np = (MMCG *)new BYTE[sizeof(MMCG) * max]; + if( m_bp != NULL ){ + memcpy(np, m_bp, sizeof(MMCG) * m_Cnt); + delete[] m_bp; + } + m_bp = np; + m_Max = max; + } +} + +/*#$% +====================================================== + ƒ[ƒ}’Ô‚è‚ð’²®‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +LPSTR CMMCG::adjspl(LPSTR p) +{ + static char bf[50]; + LPCSTR tp[]={ + "TSU","TU", + "CHA","CYA", + "CHI","CI", + "CHU","CYU", + "CHO","CYO", + "JYA","JA", + "JYU","JU", + "JYO","JO", + "SHA","SYA", + "SHI","SI", + "SHU","SYU", + "SHE","SYE", + "SHO","SYO", + }; + int i, f; + char *t; + + for( t = bf; *p;){ + for( f = 0, i = 0; i < AN(tp); i+=2 ){ + if( !strncmp(p, tp[i], strlen(tp[i])) ){ + strcpy(t, tp[i+1]); + t += strlen(t); + p += strlen(tp[i]); + f++; + break; + } + } + if( !f ){ + *t++ = *p++; + } + } + *t = 0; + return(bf); +} + +/*#$% +====================================================== + ÅŒã‚̃[ƒ}’Ô‚è‚ÅŒŸõ‹N“®‚ð’f”O‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int CMMCG::chkspl(LPCSTR p) +{ + static char *tp[]={ + "TS","CH","JY","SH", + }; + int i; + + i = strlen(p); + if( i >= 2 ){ + p += (i-2); + for( i = 0; i < AN(tp); i++ ){ + if( !strcmp(tp[i], p) ) return 0; + } + } + return 1; +} + +/*#$% +====================================================== + •¶Žš—ñ‚ÌÅŒã‚̈ê’v‚𒲂ׂé +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int CMMCG::LastMatch(LPSTR t, LPSTR s) +{ + t = lastp(t) - strlen(s) + 1; + return !strcmp(t, s); +} + +/*#$% +====================================================== + “ü—Í‚³‚ꂽ‚p‚s‚g‚ð³‹K‰»‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int CMMCG::NormQth(LPSTR p) +{ + int i; + LPCSTR *cp; + + for( i = 1, cp = &ptbl[1]; i < AN(ptbl); i++, cp++ ){ + if( !strncmp(p, *cp, strlen(*cp)) ){ + if( *(p + strlen(*cp)) ){ + strcpy(p, p + strlen(*cp)); + return 1; + } + } + } + return 0; +} + +/*#$% +====================================================== + ƒGƒŠƒAƒ}ƒXƒN‚ðÝ’è‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CMMCG::SetMask(void) +{ + LPCSTR p; + + m_mask = -1; + if( m_Call[0] ){ /* ƒGƒŠƒAƒ}ƒXƒN */ + p = m_Call; + if( (m_Call[0] == '7') && (m_Call[1] != 'J') ){ + m_mask = 1; + p += 3; + } + for( ; *p; p++ ){ + if( isdigit(*(LPUSTR)p) ) m_mask = ((*p) & 0x0f); + } + } +} + +/*#$% +====================================================== + ƒR[ƒh‚©‚猟õ‘ÎÛ‚É‚·‚é‚©‚Ç‚¤‚©’²‚ׂé +------------------------------------------------------ + p : ƒR[ƒh‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int CMMCG::isfind(LPCSTR p) +{ + const char _tt[]={ + -1, + 8, /* 01 */ + 7, 7, 7, 7, 7, 7, /* 02-07 */ + 0, 0, /* 08-09 */ + 1, 1, 1, 1, 1, 1, 1, 1, /* 10-17 */ + 2, 2, 2, 2, /* 18-21 */ + 3, 3, 3, 3, 3, 3, /* 22-27 */ + 9, 9, 9, /* 28-30 */ + 4, 4, 4, 4, 4, /* 31-35 */ + 5, 5, 5, 5, /* 36-39 */ + 6, 6, 6, 6, 6, 6, 6, 6, /* 40-47 */ + }; + + if( m_mask == -1 ){ + return 1; + } + else { + return( (_tt[atoin(p, 2)] == m_mask) ? 1 : 0 ); + } +} + + +/*#$% +====================================================== + Žw’èˆÊ’u‚Ì•¶Žš‚ÌŽí—ނ𓾂é +------------------------------------------------------ + p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ + x : ˆÊ’u +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int CMMCG::_ischrtyp(char *p, int x) +{ + int xx, jis; + + for( jis = xx = 0; xx < x; xx++, p++ ){ + if( jis ){ + jis = 0; + } + else if( _mbsbtype((unsigned char *)p, 0) == _MBC_LEAD ){ + jis = 1; + } + } + if( jis ){ /* KANJI2 */ + return 2; + } + else if( _mbsbtype((unsigned char *)p, 0) == _MBC_LEAD ){ /* KANJI1 */ + return 1; + } + else { /* ANK */ + return 0; + } +} + +/*#$% +====================================================== + ƒf[ƒ^ƒtƒ@ƒCƒ‹‚ð“ǂݞ‚Þ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CMMCG::LoadDef(LPCSTR pFileName) +{ + FILE *fp; + char hbf[512]; + LPSTR t, p; + + Free(); + if( (fp = fopen(pFileName, "rt"))!=NULL ){ + while( !feof(fp) ){ + if( fgets(hbf, 512, fp)!=NULL ){ + if( hbf[0] == '$' ) break; + ClipLF(hbf); + if( hbf[0] != '!' ){ + p = StrDlm(t, hbf, TAB); + clipsp(t); + Alloc(m_Cnt); + m_bp[m_Cnt].Code = StrDupe(t); + if( p != NULL ){ + p = StrDlm(t, p, TAB); + if( *t == '%' ) *t = 0; + clipsp(t); + m_bp[m_Cnt].QTH = StrDupe(SkipSpace(t)); + } + else { + m_bp[m_Cnt].QTH = StrDupe(""); + } + if( p != NULL ){ + clipsp(p); + m_bp[m_Cnt].Key = StrDupe(SkipSpace(p)); + } + else { + m_bp[m_Cnt].Key = StrDupe(""); + } + m_Cnt++; + } + } + } + fclose(fp); + m_fp = (MMCG **)new BYTE[sizeof(MMCG*)*m_Cnt]; + } + else { + WarningMB((sys.m_WinFontCharset != SHIFTJIS_CHARSET )?"'%s' was not found.\r\n\r\nYou cannot use a JCC/JCG list function.\r\nThis is not a problem if you do not need it":"'%s'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ.", pFileName); + } +} + +/*#$% +====================================================== + ƒR[ƒh‚©‚猧–¼‚𓾂é +------------------------------------------------------ + code : ƒR[ƒh‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + Œ§–¼‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +LPCSTR CMMCG::getprf(LPCSTR pCode) +{ + int n; + + n = atoin(pCode, 2); + if( sys.m_WinFontCharset != SHIFTJIS_CHARSET ){ + return(ptbleng[n]); + } + else { + return(ptbl[n]); + } +} + +/*#$% +====================================================== + ŒS–¼‚𓾂é +------------------------------------------------------ + p : ’¬‘ºƒR[ƒh‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + QTH‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +void CMMCG::GetGun(LPSTR t, LPCSTR pCode) +{ + strcpy(wbf, pCode); + wbf[5] = 0; + MMCG *mp = m_bp; + int i; + for( i = 0; i < m_Cnt; i++, mp++ ){ + if( !strcmp(mp->Code, wbf) ){ + strcpy(t, mp->QTH); + return; + } + } + *t = 0; +} + +/*#$% +====================================================== + ‚p‚s‚g‚Ì•¶Žš—ñ‚𓾂é +------------------------------------------------------ + cp : ƒf[ƒ^‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ + QTH‚̃|ƒCƒ“ƒ^ +------------------------------------------------------ +====================================================== +*/ +LPCSTR CMMCG::GetQTH(MMCG *mp) +{ + char bf[512]; + + if( sys.m_WinFontCharset != SHIFTJIS_CHARSET ){ + char qth[128]; + strcpy(qth, mp->Key); + LPSTR t; + LPSTR p = qth; + while(*p){ + p = StrDlm(t, p, ','); + } + if( strlen(mp->Code) == 6 ){ + if( isalpha((unsigned char)LastC(mp->Code)) ){ /* ’¬‘ºƒR[ƒh */ + strcpy(bf, t); + strcat(bf, ","); + GetGun(qth, mp->Code); + strcat(bf, qth); + } + else { /* ­—ߎw’è“sŽs */ + strcpy(bf, t); + } + } + else { /* “s“¹•{Œ§‚ð’ljÁ */ + if( *t ){ + sprintf( bf, "%s,%s", t, getprf(mp->Code)); + } + else { + sprintf( bf, "%s", getprf(mp->Code)); + } + } + } + else { + if( strlen(mp->Code) == 6 ){ + if( isalpha((unsigned char)LastC(mp->Code)) ){ /* ’¬‘ºƒR[ƒh */ + GetGun(bf, mp->Code); + strcat(bf, mp->QTH); + } + else { /* ­—ߎw’è“sŽs */ + strcpy(bf, mp->QTH); + } + } + else { /* “s“¹•{Œ§‚ð’ljÁ */ + sprintf( bf, "%s%s", getprf(mp->Code), mp->QTH); + } + } + bf[MLQTH] = 0; + m_QTH = bf; + return m_QTH.c_str(); + + +} + + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤i‚·‚ׂÄj +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CMMCG::FindAll(void) +{ + MMCG *mp; + int i; + + m_FindCnt = 0; + mp = m_bp; + for( i = 0; i < m_Cnt; i++, mp++ ){ + if( isfind(mp->Code) ){ + m_fp[m_FindCnt] = mp; + m_FindCnt++; + } + } +} + +/*#$% +====================================================== + “¯ˆêƒf[ƒ^‚ª‘¶Ý‚·‚é‚©’²‚ׂé +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int CMMCG::isEnt(MMCG *mp) +{ + int i; + + for( i = 0; i < m_FindCnt; i++ ){ + if( m_fp[i] == mp ) return 1; + } + return 0; +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CMMCG::FindQTH(LPSTR pKey) +{ + MMCG *mp; + int i; + int len, kj; + LPSTR t, p; + + kj = _mbsbtype((unsigned char *)pKey, 0) == _MBC_LEAD ? 1 : 0; + if( kj ) NormQth(pKey); + len = strlen(pKey); + m_FindCnt = 0; + mp = m_bp; + char bf[256]; + for( i = 0; i < m_Cnt; i++, mp++ ){ + if( isfind(mp->Code) ){ + if( kj ){ + if( strstr(mp->QTH, pKey) != NULL ){ + m_fp[m_FindCnt] = mp; + m_FindCnt++; + goto _nx; + } + } + strcpy(bf, mp->Key); + for( p = bf; *p; ){ + p = StrDlm(t, p, ','); + if( (!strncmp(t, pKey, len)) || (m_sinc && (strstr(t, pKey)!=NULL)) ){ + m_fp[m_FindCnt] = mp; + m_FindCnt++; + break; + } + } +_nx:; + } + } +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CMMCG::FindNumb(LPSTR pKey) +{ + MMCG *mp; + int i; + int len; + + m_FindCnt = 0; + len = strlen(pKey); + mp = m_bp; + for( i = 0; i < m_Cnt; i++, mp++ ){ + if( (!strncmp(mp->Code, pKey, len)) || (m_sinc && (strstr(mp->Code, pKey)!=NULL)) ){ + m_fp[m_FindCnt] = mp; + m_FindCnt++; + } + } +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void CMMCG::Find(LPSTR p) +{ + if( *p ){ + if( isdigit(*(LPUSTR)p) ){ + FindNumb(p); + } + else { + jstrupr(p); + if( chkspl(p) ) FindQTH(adjspl(p)); + } + } + else { + FindAll(); + } +} + +#if 0 +/*#$% +====================================================== + ’è‹`—̈æ‚ðŠm•Û‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int allocdef(int blk) +{ + if( cseg == 0 ){ + if( (cseg=__malloc(blk))!=0 ){ /* ƒƒ‚ƒŠ‚ÌŠm•Û */ + return(NOERR); + } + return(ERR); + } + return(NOERR); +} + +/*#$% +====================================================== + ’è‹`—̈æ‚ðŠJ•ú‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void freedef(void) +{ + if( cseg ){ + __free(cseg); + cseg = 0; + } +} + +#define XW 60 +#define YW 16 +/*#$% +====================================================== + ŒŸõƒf[ƒ^‚̃ƒjƒ…[•\ަ‚ðƒI[ƒvƒ“‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +VEWP *opencc(void) +{ + cc.xw = XW-1; + cc.yw = YW-1; + cc.x = (crt.hmax-cc.xw+2)/2; + cc.y = (crt.vmax-cc.yw+2)/2; + cc.yt = cc.y; + cc.ye = cc.y + cc.yw; + cc.tb = cc.cy = 0; + cc.xe = cc.x + cc.xw - 1; + if( (cc.vp=openvew(cc.x, cc.y, cc.x+cc.xw, cc.ye, _menuwcol))!=NULL ){ + _dprintf( cc.x, cc.yt, " ŒŸõ>" ); + cc.x++; + cc.y++; +/* _dprintf( cc.x, cc.ye, "’†Ž~, Œˆ’è, <«><ª>‘I‘ð, ¸Ø±, ´Ø±/ALL" );*/ + _dprintf( cc.x, cc.ye, "’†Ž~,Œˆ’è,¸Ø±,ŒŸõ•û–@,´Ø±/ALL" ); + } + return(cc.vp); +} + +/*#$% +====================================================== + ŒŸõƒf[ƒ^‚̃ƒjƒ…[•\ަ‚ðƒNƒ[ƒY‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void closecc(void) +{ + if( cc.vp ){ + closevew(cc.vp); + cc.vp = NULL; + } +} + +/*#$% +====================================================== + ‚Ps‚Ì•\ަ‚ðs‚¤ +------------------------------------------------------ + y : •\ަˆÊ’u + tp: ƒe[ƒuƒ‹”Ô† +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near dspone(int y, int tp) +{ + CD cd; + int l; + uchar bf[60]; + +/*0123456789012345678901234567890123456789012345678901234567*/ +/*250119__ ‘åã•{__ ‘åãŽsˆ¢”{–ì‹æ______ ABENO______________*/ +/*12345678 12345678 12345678901234567890 1234567890123456789*/ + + _fills(cc.x, y, cc.xe, y); + if( tp < cc.fn ){ + getdat(cc.ctbl[tp], &cd); + l = strlen(cd.code); + _dprintf(cc.x, y, "%-.8s", cd.code ); + _dprintf(cc.x+9, y, "%-.8s", getprf(cd.code)); + if( l == 6 ){ + if( isalpha(lastc(cd.code)) ){ /* ’¬‘º */ + GetGun(bf, cd.code); + } + else { /* §—ß */ + bf[0] = 0; + } + strcat(bf, cd.qth); + _dprintf(cc.x+18, y, "%-.20s", bf ); + } + else { + _dprintf(cc.x+18, y, "%-.20s", cd.qth ); + } + _dprintf(cc.x+39, y, "%-.19s", cd.key ); + } +} + +/*#$% +====================================================== + ŒŸõƒf[ƒ^‚Ì•\ަ‚ð‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near dspcc(void) +{ + int y, cp; + CD cd; + + for( cp = cc.tb, y = cc.y; y < cc.ye; y++, cp++ ){ + dspone(y, cp); + } +} + +/*#$% +====================================================== + ƒJ[ƒ\ƒ‹‚Ì•\ަ +------------------------------------------------------ + sw : 0-OFF, 1-ON +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near ecursor(int sw) +{ + int at; + + at = sw ? _menuccol : CRT_ATTR_NORMAL; + _afill(cc.x, cc.y + cc.cy, cc.xe, cc.y + cc.cy, at ); +} + +/*#$% +====================================================== + ƒJ[ƒ\ƒ‹‚̃Aƒbƒv +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near cup(void) +{ + if( cc.cy ){ + cc.cy--; + } + else if( cc.tb ){ + cc.tb--; + _scrdwn(cc.x, cc.y, cc.xe, cc.ye-1); + dspone(cc.y, cc.tb); + } +} + +/*#$% +====================================================== + ƒJ[ƒ\ƒ‹‚̃_ƒEƒ“ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near cdown(void) +{ + if( (cc.tb + cc.cy) < (cc.fn - 1) ){ + if( cc.cy < (cc.yw - 2) ){ + cc.cy++; + } + else { + cc.tb++; + _scrup(cc.x, cc.y, cc.xe, cc.ye-1); + dspone(cc.ye-1, cc.tb+cc.cy); + } + } +} + +/*#$% +====================================================== + Žw’èˆÊ’u‚Ö‚Ì‚r‚d‚d‚j +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near cdseek(int tp) +{ + if( tp >= cc.fn ) tp = cc.fn - 1; + if( tp < 0 ) tp = 0; + cc.tb = tp; + cc.cy = 0; + dspcc(); +} + +/*#$% +====================================================== + ƒy[ƒWƒAƒbƒv +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near pup(void) +{ + CD cd; + int tp, m; + + tp = cc.tb + cc.cy; + getdat(cc.ctbl[tp], &cd); + m = atoin(cd.code, 2); + for( tp--; tp >= 0; tp-- ){ + getdat(cc.ctbl[tp], &cd); + if( m != atoin(cd.code, 2) ){ + cdseek(tp); + return; + } + } + cdseek(0); +} + +/*#$% +====================================================== + ƒy[ƒWƒ_ƒEƒ“ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near pdown(void) +{ + CD cd; + int tp, m; + + tp = cc.tb + cc.cy; + getdat(cc.ctbl[tp], &cd); + m = atoin(cd.code, 2); + for( tp++; tp < cc.fn; tp++ ){ + getdat(cc.ctbl[tp], &cd); + if( m != atoin(cd.code, 2) ){ + cdseek(tp); + return; + } + } + cdseek(32767); +} + +/*#$% +====================================================== + ƒoƒbƒtƒ@“à—e‚Ì•\ަ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +static void near dspbf(void) +{ + _dprintf(cc.x+5, cc.yt, "%-40s", kbf ); + _dprintf(cc.xe - 15, cc.yt, sinc ? "ŠÜ‚Ý":"擪"); + _dprintf(cc.xe - 10, cc.yt, (m_mask != -1) ? "%u´Ø±" : "ALL ", m_mask ); + _dprintf(cc.xe-4, cc.yt, "%4u", cc.fn ); +} + +/*#$% +====================================================== + ‚l‚l‚b‚f‚̈—‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void mmcg(void) +{ + int c; + int xx; + + loaddat(); + if( nosel == 1 ){ + strcpy(kbf, _dspopt(optnmb, &cc.sd)); + findnosel(jstrupr(kbf)); + setdat(); + return; + } + if( opencc() == NULL ) return; + find1st(); + if( nosel == 2 ){ + if( cc.fn == 1 ) setdat(); + closecc(); + return; + } + dspcc(); + xx = strlen(kbf); + _cursor(ON); + while(1){ + dspbf(); + _locate(cc.x+5 + xx, cc.yt); + ecursor(ON); + c = _bgetch(); + ecursor(OFF); + switch(c){ + case K_RU: + pdown(); + break; + case K_RD: + pup(); + break; + case K_UP: + cup(); + break; + case K_DOWN: + cdown(); + break; + case ESC: + goto _ex; + case K_CR: + setdat(); + goto _ex; + case K_BS: + if( xx ){ + xx--; + if( xx && (_ischrtyp(kbf, xx)==2) ) xx--; + kbf[xx] = 0; + find(kbf); + dspcc(); + } + break; + case ' ': + kbf[0] = 0; + xx = 0; + findall(); + dspcc(); + break; + case K_F1: + sinc = sinc ? 0 : 1; + find(kbf); + dspcc(); + break; + case K_F2: + case K_HOME: + if( mask == -1 ){ + setmask(); + } + else { + mask = -1; + } + find(kbf); + dspcc(); + break; + default: + if( (c > 0x0020) && (c <= 0x00ff) ){ + if( xx < 40 ){ + kbf[xx] = c; + xx++; + kbf[xx] = 0; + if( _ischrtyp(kbf, xx-1) != 1 ){ + finds(kbf); + } + dspcc(); + } + } + break; + } + } +_ex:; + closecc(); +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤i‚·‚ׂÄj +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void findall(void) +{ + CD cd; + int cp, np; + + cc.tb = cc.cy = cc.fn = 0; + for( cp = 0; cp < cc.cwp; cp = np){ + np = getdat(cp, &cd); + if( isfind(cd.code) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + if( cc.fn >= CTMAX ) break; + } + } +} + +/*#$% +====================================================== + “¯ˆêƒf[ƒ^‚ª‘¶Ý‚·‚é‚©’²‚ׂé +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +int isEnt(int n) +{ + int i; + + for( i = 0; i < cc.fn; i++ ){ + if( cc.ctbl[i] == n ){ + return(ON); + } + } + return(OFF); +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void findqth(uchar *key) +{ + CD cd; + int cp, np; + int len, kj; + uchar *t, *p; + + if( (kj = iskanji(*key))!=0 ) NormQth(key); + len = strlen(key); + cc.tb = cc.cy = cc.fn = 0; + for( cp = 0; cp < cc.cwp; cp = np){ + np = getdat(cp, &cd); + if( isfind(cd.code) ){ + if( kj ){ + if( jstrstr(cd.qth, key) != NULL ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + goto _nx; + } + } + for( p = cd.key; *p; ){ + p = strdm(&t, p); + if( (!strncmp(t, key, len)) || (sinc && (strstr(t, key)!=NULL)) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + break; + } + } +_nx:; + if( cc.fn >= CTMAX ) break; + } + if( _bkbhit() ) break; + } +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void findqths(uchar *key) +{ + CD cd; + int cp; + int len, fn, nn, f, kj; + uchar *t, *p; + + if( (kj = iskanji(*key))!=0 ){ + if( NormQth(key) ){ + findqth(key); + return; + } + } + len = strlen(key); + fn = cc.fn; + cc.tb = cc.cy = cc.fn = 0; + f = OFF; + if( lastc(key) == '\\' ){ + f = ON; + *lastp(key) = 0; + } + for( nn = 0; nn < fn; nn++){ + cp = cc.ctbl[nn]; + getdat(cp, &cd); + if( kj ){ + if( jstrstr(cd.qth, key) != NULL ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + goto _nx; + } + } + for( p = cd.key; *p; ){ + p = strdm(&t, p); + if( f ){ + if( (!strcmp(t, key)) || (sinc && (LastMatch(t,key))) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + break; + } + } + else { + if( (!strncmp(t, key, len)) || (sinc && (strstr(t, key)!=NULL)) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + break; + } + } + } +_nx:; + if( cc.fn >= CTMAX ) break; + } +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void findnmb(uchar *key) +{ + CD cd; + int cp, np; + int len; + + cc.tb = cc.cy = cc.fn = 0; + len = strlen(key); + for( cp = 0; cp < cc.cwp; cp = np){ + np = getdat(cp, &cd); + if( (!strncmp(cd.code, key, len)) || (sinc && (strstr(cd.code, key)!=NULL)) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + if( cc.fn >= CTMAX ) break; + } + } +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void findnmbs(uchar *key) +{ + CD cd; + int cp; + int len, fn, nn, f; + + fn = cc.fn; + cc.tb = cc.cy = cc.fn = 0; + f = OFF; + if( lastc(key) == '\\' ){ + f = ON; + *lastp(key) = 0; + } + len = strlen(key); + for( nn = 0; nn < fn; nn++){ + cp = cc.ctbl[nn]; + getdat(cp, &cd); + if( f ){ + if( (!strcmp(cd.code, key)) || (sinc && LastMatch(cd.code, key)) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + } + } + else { + if( (!strncmp(cd.code, key, len)) || (sinc && (strstr(cd.code, key)!=NULL)) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + } + } + } + if( f ) strcat(key, "\\"); +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void findnosel(uchar *key) +{ + CD cd; + int cp, np; + + cc.tb = cc.cy = cc.fn = 0; + for( cp = 0; cp < cc.cwp; cp = np){ + np = getdat(cp, &cd); + if( !strcmp(cd.code, key) ){ + cc.ctbl[cc.fn] = cp; + cc.fn++; + break; + } + } +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void find(uchar *p) +{ + dspbf(); + if( *p ){ + if( isdigit(*p) ){ + findnmb(p); + } + else { + jstrupr(p); + if( chkspl(p) ) findqth(adjspl(p)); + } + } + else { + findall(); + } +} + +/*#$% +====================================================== + ƒf[ƒ^‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void finds(uchar *p) +{ + dspbf(); + if( *p ){ + if( isdigit(*p) ){ + findnmbs(p); + if( !cc.fn ) findnmb(p); + } + else { + jstrupr(p); + if( chkspl(p) ) findqths(adjspl(p)); + } + } + else { + findall(); + } +} + +/*#$% +====================================================== + ʼn‚ÌŒŸõ‚ðs‚¤ +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void find1st(void) +{ + uchar *p; + uchar far *s; + + setmask(); + kbf[0] = 0; + if( setmac ){ + if( dtname[0] && (ishex(dtname)==NOERR) ){ + s = (uchar far *)htoln(dtname, -1); + for( p = kbf; *s; s++, p++ ){ + *p = *s; + } + *p = 0; + } + } + else { + p = _dspopt(optnmb, &cc.sd); + if( *p && isdigit(*p) ){ + strcpy(kbf, p); + } + else if( cc.sd.qth[0] ){ + strcpy(kbf, cc.sd.qth); + } + } + find(jstrupr(kbf)); +} + +/*#$% +====================================================== + ƒf[ƒ^‚ðƒZƒbƒg‚·‚é +------------------------------------------------------ +------------------------------------------------------ +------------------------------------------------------ +====================================================== +*/ +void setdat(void) +{ + CD cd; + uchar far *t; + uchar *p; + + if( cc.fn ){ + if( !dtname[0] ) return; + getdat(cc.ctbl[cc.tb+cc.cy], &cd); + if( setmac ){ + if( ishex(dtname)!=NOERR ) return; + t = (uchar far *)htoln(dtname,-1); + if( ocpy ){ + for( p = cd.code; *p; p++, t++ ){ + *t = *p; + } + *t = 0; + } + if( qcpy ){ + for( p = getqth(&cd); *p; p++, t++ ){ + *t = *p; + } + *t = 0; + } + } + else { + if( ocpy ) strcpy(_ptropt(optnmb, &cc.sd), cd.code); + if( qcpy ) strcpy(cc.sd.qth, getqth(&cd)); + savedat(); + } + } +} + +/*#$% +================================================================ + ‚Ps‚̃AƒXƒL[ƒZ[ƒu‚̈—‚ðs‚¤ +---------------------------------------------------------------- + fp : ƒtƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + sp : ƒf[ƒ^‚̃|ƒCƒ“ƒ^ +---------------------------------------------------------------- + ERR +---------------------------------------------------------------- +================================================================ +*/ +void _sputdat(uchar *bf, SD *sp) +{ + sinit(bf); + sputf("\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,", + _strydate(sp->year, sp->date), _strtimes(sp->btime), sp->call, sp->ur, sp->my, _strband(sp->band, sp->fq)); + sputf("\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,", + _strmode(sp->mode), sp->pow, sp->name, sp->qth, sp->rem, sp->qsl ); + sputf("\042%s\042,\042%.1s\042,\042%.1s\042,\042%.1s\042,\042%u\042,", _strtime(sp->etime), &sp->send, &sp->recv, &sp->cq, sp->env); + sputf("\042%s\042,\042%s\042,", sp->opt1, sp->opt2 ); + sputf("\042%s\042,", _dspopt(2, sp)); + sputf("\042%s\042", _dspopt(3, sp)); +} + +/*#$% +================================================================ + ‚Ps‚̃AƒXƒL[ƒZ[ƒu‚̈—‚ðs‚¤ +---------------------------------------------------------------- + fp : ƒtƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ + sp : ƒf[ƒ^‚̃|ƒCƒ“ƒ^ +---------------------------------------------------------------- + ERR +---------------------------------------------------------------- +================================================================ +*/ +int _fputdat(FILE *fp, SD *sp) +{ + _sputdat(hbf, sp); + fputs(hbf, fp); + fputs("\r\n", fp); + return(ferror(fp)); +} + +/*#$% +================================================================ + ƒAƒXƒL[ƒf[ƒ^‚ð“o˜^‚·‚é +---------------------------------------------------------------- + p : ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^ +---------------------------------------------------------------- + ERR +---------------------------------------------------------------- +================================================================ +*/ +int _aputdat(uchar *p, SD *sp) +{ + uchar *t; + int y, m, d; + + _fillmem(sp, sizeof(SD), 0); + p = strdm(&t, p); /* DATE */ + if( sscanf(t, "%u.%u.%u", &y, &m, &d )!=3 ) return(ERR); + sp->year = y; + sp->date = (m * 100) + d; + p = strdm(&t, p); /* BGN */ + if( sscanf(t, "%u.%u", &d, &y) != 2 ){ + d = atoin(t, -1); + y = 0; + } + m = d / 100; + d = d % 100; + y /= 2; + sp->btime = (((m * 60) + d) * 30) + y; + p = strdm(&t, p); /* CALL */ + strcpy(sp->call, t); + p = strdm(&t, p); /* UR */ + strcpy(sp->ur, t); + p = strdm(&t, p); /* MY */ + strcpy(sp->my, t); + p = strdm(&t, p); /* BAND */ + sp->band = _bandno(&sp->fq, t); + p = strdm(&t, p); /* MODE */ + sp->mode = _modeno(t); + p = strdm(&t, p); /* POW */ + strcpy(sp->pow, t); + p = strdm(&t, p); /* NAME */ + strcpy(sp->name, t); + p = strdm(&t, p); /* QTH */ + strcpy(sp->qth, t); + p = strdm(&t, p); /* REM */ + strcpy(sp->rem, t); + p = strdm(&t, p); /* QSL */ + strcpy(sp->qsl, t); + p = strdm(&t, p); /* ETIME*/ + d = atoin(t, -1); + m = d / 100; + d = d % 100; + sp->etime = ((m * 60) + d) * 30; + p = strdm(&t, p); /* S */ + sp->send = *t; + p = strdm(&t, p); /* R */ + sp->recv = *t; + p = strdm(&t, p); /* M */ + sp->cq = *t; + p = strdm(&t, p); /* ENV */ + sp->env = atoin(t, -1); + p = strdm(&t, p); /* OPT1 */ + strcpy(sp->opt1, t); + p = strdm(&t, p); /* OPT2 */ + strcpy(sp->opt2, t); + p = strdm(&t, p); /* USR1 */ + if( *t ) strcpy(_ptropt(2,sp), t); + p = strdm(&t, p); /* USR2 */ + if( *t ) strcpy(_ptropt(3,sp), t); + return(NOERR); +} + +/*#$% +================================================================ + ˆø“nƒf[ƒ^‚ð“ǂݞ‚Þ +---------------------------------------------------------------- +---------------------------------------------------------------- +---------------------------------------------------------------- +================================================================ +*/ +int loaddat(void) +{ + int r; + FILE *fp; + + r = ERR; + _fillmem(&cc.sd, sizeof(SD), 0); + if( !dtname[0] ) return(NOERR); + if( setmac ) return(NOERR); + if( (fp = fopen(dtname, "rt"))!=NULL ){ + if( (fgets(hbf, 256, fp))!=NULL ){ + cliplf(hbf); + _aputdat(hbf, &cc.sd); + r = NOERR; + } + fclose(fp); + } + return(r); +} + +/*#$% +================================================================ + Žw’è‚̃f[ƒ^‚ð‘‚«ž‚Þ +---------------------------------------------------------------- +---------------------------------------------------------------- +---------------------------------------------------------------- +================================================================ +*/ +void savedat(void) +{ + FILE *fp; + + if( (fp = fopen(dtname, "wb"))!=NULL ){ + _fputdat(fp, &cc.sd); + fclose(fp); + } +} +#endif diff --git a/mmcg.h b/mmcg.h new file mode 100644 index 0000000..0d4c1cc --- /dev/null +++ b/mmcg.h @@ -0,0 +1,81 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef MmcgH +#define MmcgH +#include "LogFile.h" + +#ifndef LPCUSTR +typedef const unsigned char * LPCUSTR; +typedef unsigned char * LPUSTR; +#endif + +typedef struct { + LPSTR Code; + LPSTR QTH; + LPSTR Key; +}MMCG; + +class CMMCG +{ +private: + int m_Max; // Œ»ÝŠm•Û‚µ‚Ä‚¢‚éƒXƒƒbƒg” + int m_Cnt; // Œ»Ý‹L‰¯‚µ‚Ä‚¢‚éƒXƒƒbƒg” + MMCG *m_bp; // MMCG‚Ì”z—ñ + + + char wbf[512]; + +public: + int m_mask; + int m_sinc; + int m_FindCnt; + MMCG **m_fp; + + AnsiString m_QTH; + char m_Call[MLCALL+1]; +private: + void Free(void); + void Alloc(int n); + LPSTR adjspl(LPSTR p); + int chkspl(LPCSTR p); + int LastMatch(LPSTR t, LPSTR s); + int NormQth(LPSTR p); + int isfind(LPCSTR p); + int _ischrtyp(char *p, int x); + LPCSTR getprf(LPCSTR pCode); + void GetGun(LPSTR t, LPCSTR pCode); + int isEnt(MMCG *mp); + +public: + CMMCG(); + ~CMMCG(); + + void LoadDef(LPCSTR pFileName); + void FindAll(void); + void FindQTH(LPSTR pKey); + void FindNumb(LPSTR pKey); + void Find(LPSTR p); + void SetMask(void); + + LPCSTR GetQTH(MMCG *mp); +}; + +extern CMMCG mmcg; +#endif diff --git a/mml.h b/mml.h new file mode 100644 index 0000000..47af6e1 --- /dev/null +++ b/mml.h @@ -0,0 +1,67 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef MML_H +#define MML_H + +#define capNOTIFYSESSION 0x0001 +#define capWMCOPYDATA 0x0002 + +enum { + MML_NOTIFYSESSION, + MML_QRETURN, + MML_VFO, +}; + +#pragma pack(push, 1) +typedef struct { + SYSTEMTIME m_TimeLogON; + SYSTEMTIME m_TimeLogOFF; + char m_Call[16+1]; + char m_Mode[6+1]; // Name of the mode (eg. "RTTY", "SSTV") + char m_Freq[16+1]; // MHz (eg. "14.080") + char m_His[20+1]; // His/Her RST(V) and contest number. + char m_My[20+1]; + char m_Name[16+1]; // His/Her name + char m_QTH[28+1]; // His/Her QTH + char m_Pow[4+1]; + char m_Note[56+1]; // Note + char m_QSL[54+1]; // Note or QSL information + BYTE m_QSLS; // QSL sent + BYTE m_QSLR; // QSL rcvd + char m_DXCC[8+1]; // DXCC keyword (eg. JA, W, VK, etc...) + char m_Cont[8+1]; // The continental keyword (AS/OC/NA/SA/EU/AF) +}mmLOGDATA; +#pragma pack(pop) + + +typedef BOOL (__stdcall *tmmlOpen)(HWND hWnd, UINT uMsg); +typedef void (__stdcall *tmmlClose)(void); +typedef void (__stdcall *tmmlSetHandle)(HWND hWnd, UINT uMsg); +typedef DWORD (__stdcall *tmmlIsCap)(void); +typedef BOOL (__stdcall *tmmlIsConnected)(void); +typedef LPCSTR (__stdcall *tmmlGetSessionName)(void); +typedef void (__stdcall *tmmlQuery)(LPCSTR pCall); +typedef void (__stdcall *tmmlSetFreq)(LPCSTR pFreq); +typedef void (__stdcall *tmmlLog)(const mmLOGDATA *pLog, int sw); +typedef void (__stdcall *tmmlLogClear)(void); +typedef void (__stdcall *tmmlSetPTT)(LONG sw); +typedef LONG (__stdcall *tmmlOnCopyData)(HWND hSender, const COPYDATASTRUCT *pcds); +typedef void (__stdcall *tmmlEventVFO)(void); +#endif diff --git a/mmrp.h b/mmrp.h new file mode 100644 index 0000000..cf36be0 --- /dev/null +++ b/mmrp.h @@ -0,0 +1,43 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef MMRP_H +#define MMRP_H + +enum { + MMR_DEFCOMMAND, + MMR_VFO, +}; +#define mmrpstatusRX 0x0001 +#define mmrpstatusTXBUSY 0x0002 +#define mmrpstatusFREQ 0x0004 +#define mmrpstatusDEFCMD 0x0008 + +typedef void (__stdcall *tmmrpSetHandle)(HWND hWnd, UINT uMsg); +typedef LONG (__stdcall *tmmrpOpen)(HWND hWnd, UINT uMsg); +typedef void (__stdcall *tmmrpClose)(void); +typedef DWORD (__stdcall *tmmrpGetStatus)(void); +typedef void (__stdcall *tmmrpSetPTT)(LONG tx); +typedef void (__stdcall *tmmrpPutChar)(BYTE c); +typedef BYTE (__stdcall *tmmrpGetChar)(void); +typedef void (__stdcall *tmmrpPolling)(void); +typedef LONG (__stdcall *tmmrpGetFreq)(void); +typedef LONG (__stdcall *tmmrpGetDefCommand)(void); + +#endif diff --git a/mmtty.bpr b/mmtty.bpr new file mode 100644 index 0000000..bd7db98 --- /dev/null +++ b/mmtty.bpr @@ -0,0 +1,103 @@ +# --------------------------------------------------------------------------- +VERSION = BCB.03 +# --------------------------------------------------------------------------- +!ifndef BCB +BCB = $(MAKEDIR)\.. +!endif +# --------------------------------------------------------------------------- +PROJECT = mmtty.exe +OBJFILES = mmtty.obj Main.obj ComLib.obj fir.obj Sound.obj Rtty.obj Wave.obj Fft.obj \ + Scope.obj Option.obj Comm.obj EditDlg.obj TextEdit.obj LogFile.obj LogList.obj \ + QsoDlg.obj country.obj mmcg.obj MmcgDlg.obj FreqDisp.obj VerDsp.obj LogConv.obj \ + ConvDef.obj PlayDlg.obj ShortCut.obj LogSet.obj ClockAdj.obj SetHelp.obj \ + ctnc.obj TncSet.obj SendFile.obj cradio.obj radioset.obj MacroKey.obj \ + TxdDlg.obj InputWin.obj Loglink.obj MMlink.obj Hamlog5.obj TH5Len.obj CLX.obj +RESFILES = mmtty.res +RESDEPEN = $(RESFILES) Main.dfm Scope.dfm Option.dfm EditDlg.dfm TextEdit.dfm LogList.dfm \ + QsoDlg.dfm MmcgDlg.dfm FreqDisp.dfm VerDsp.dfm ConvDef.dfm PlayDlg.dfm \ + ShortCut.dfm LogSet.dfm ClockAdj.dfm SetHelp.dfm TncSet.dfm SendFile.dfm \ + radioset.dfm MacroKey.dfm TxdDlg.dfm InputWin.dfm TH5Len.dfm +LIBFILES = +LIBRARIES = vcldbx35.lib vcldb35.lib vclx35.lib vcl35.lib +SPARELIBS = vcl35.lib vclx35.lib vcldb35.lib vcldbx35.lib +PACKAGES = vclx35.bpi VCL35.bpi vcldb35.bpi vcldbx35.bpi bcbsmp35.bpi dclocx35.bpi \ + Qrpt35.bpi teeui35.bpi teedb35.bpi tee35.bpi ibsmp35.bpi NMFast35.bpi \ + inetdb35.bpi inet35.bpi +PATHASM = .; +PATHCPP = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +DEFFILE = +# --------------------------------------------------------------------------- +CFLAG1 = -O2 -Hc -w -Ve -d -k- -vi -c -b- -w-par -w-inl -Vx +CFLAG2 = -I$(BCB)\include;$(BCB)\include\vcl -H=$(BCB)\lib\vcl.csm +CFLAG3 = +PFLAGS = -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE \ + -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$L- -$D- -JPHNV -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpe -x +IFLAGS = +LINKER = ilink32 +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +.autodepend + +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1041 +CodePage=932 + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= + +!endif + +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! + +.pas.hpp: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.pas.obj: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.cpp.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $* + +.c.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $** + +.rc.res: + $(BCB)\BIN\brcc32 $(RFLAGS) $< +#----------------------------------------------------------------------------- + \ No newline at end of file diff --git a/mmtty.cbproj b/mmtty.cbproj new file mode 100644 index 0000000..57bc5ae --- /dev/null +++ b/mmtty.cbproj @@ -0,0 +1,470 @@ + + + {8A19E7D5-B824-4AED-A872-E0689B281994} + CppVCLApplication + mmtty.cpp + True + Debug + 14.6 + Application + VCL + Win32 + 1 + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 1041 + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + rtl.lib;vcl.lib;vclx.lib;dbrtl.lib;vcldb.lib;bdertl.lib;vcldbx.lib + vclx.bpi;rtl.bpi;vcl.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;bcbsmp.bpi;teeui.bpi;teedb.bpi;tee.bpi;ibsmp.bpi;inetdb.bpi;inet.bpi;$(PackageImports) + true + Windows + .\;$(BDS)\lib;$(BDS)\lib\obj;$(DCC_IncludePath) + $(BDS)\include;$(BDS)\include\vcl;$(BRCC_IncludePath) + true + $(BDS)\include;$(BDS)\include\vcl;$(BCC_IncludePath) + $(BDS)\include;$(BDS)\include\vcl;$(TASM_IncludePath) + . + exe + rtl.lib;vcl.lib;vclx.lib;dbrtl.lib;vcldb.lib;bdertl.lib;vcldbx.lib + None + /w2 + -M + JPHNE + .\;$(BDS)\lib;$(BDS)\lib\obj;$(DCC_UnitSearchPath) + $(BDS)\lib\obj;$(BDS)\lib;$(BDS)\lib\psdk;$(ILINK_LibraryPath) + + + $(BDS)\bin\default_app.manifest + true + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + 1033 + -tWM -Vx -d -Ve + mmtty_Icon.ico + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + mmtty_Icon.ico + + + true + true + true + $(BDS)\lib\debug;$(ILINK_LibraryPath);$(ILINK_LibraryPath) + DEBUG;$(DCC_Define);$(DCC_Define) + true + Debug_Build + true + true + true + true + Full + -M -V + true + true + false + + + false + false + false + false + None + true + 1033 + _DEBUG;$(BCC_Defines);$(BCC_Defines) + -tWM -Vx -d -Ve -k + + + _DEBUG;$(BCC_Defines);$(BCC_Defines) + + + Release_Build + -M -$O+ + $(BDS)\lib\release;$(ILINK_LibraryPath);$(ILINK_LibraryPath) + + + NDEBUG;$(BCC_Defines);$(BCC_Defines) + -tWM -Vx -d -Ve -r + + + NDEBUG;$(BCC_Defines);$(BCC_Defines) + + + + 9 +
ClockAdjDlg
+ ClockAdj.h + 27 +
+ + 44 + CLX.h + 14 + + + 31 + ComLib.h + 2 + + + 26 + Comm.h + 10 + + + 7 +
ConvDefDlg
+ ConvDef.h + 23 +
+ + 35 + country.h + 17 + + + 4 + cradio.h + 32 + + + 29 + ctnc.h + 1 + + + 41 +
EditDlgBox
+ EditDlg.h + 11 +
+ + 7 + Fft.h + 23 + + + 33 + fir.h + 3 + + + 38 +
FreqDispDlg
+ FreqDisp.h + 20 +
+ + 42 + Hamlog5.h + 13 + + + 36 +
InputWinDlg
+ InputWin.h + 19 +
+ + LogConv.h + 22 + + + 44 + LogFile.h + 14 + + + 37 + Loglink.h + 21 + + + 43 +
LogListDlg
+ LogList.h + 15 +
+ + 26 +
LogSetDlg
+ LogSet.h + 10 +
+ + 34 +
MacroKeyDlg
+ MacroKey.h + 18 +
+ + -1 +
MmttyWd
+ Main.h + 1 +
+ + 34 + mmcg.h + 18 + + + 36 +
MmcgDlgBox
+ MmcgDlg.h + 19 +
+ + 39 + 16 + + + 38 + MMlink.h + 20 + + + 40 + 12 + + + -1 + 0 + + + 40 + 12 + + + 41 + 11 + + + 9 +
OptionDlg
+ Option.h + 27 +
+ + 6 +
PlayDlgBox
+ PlayDlg.h + 24 +
+ + 39 +
QSODlgBox
+ QsoDlg.h + 16 +
+ + 33 +
RADIOSetDlg
+ radioset.h + 3 +
+ + 5 + Rtty.h + 28 + + + 8 +
TScope
+ Scope.h + 25 +
+ + 31 +
SendFileDlg
+ SendFile.h + 2 +
+ + 5 +
SetHelpBox
+ SetHelp.h + 28 +
+ + 8 +
ShortCutDlg
+ ShortCut.h + 25 +
+ + 4 + Sound.h + 32 + + + 42 +
TextEditDlg
+ TextEdit.h + 13 +
+ + 43 +
TH5LenDlg
+ TH5Len.h + 15 +
+ + 30 +
TNCSetDlg
+ TncSet.h + 0 +
+ + 35 +
TxdDlgBox
+ TxdDlg.h + 17 +
+ + 37 +
VerDspDlg
+ VerDsp.h + 21 +
+ + 6 + Wave.h + 24 + + + + + + + + + + + + + + + + + + + + + + + + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + +
+ + + + CPlusPlusBuilder.Personality.12 + CppVCLApplication + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1041 + 932 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + False + True + True + + + mmtty.cpp + + + + + True + False + + + 12 + +
diff --git a/mmtty.cbproj.local b/mmtty.cbproj.local new file mode 100644 index 0000000..b3811b7 --- /dev/null +++ b/mmtty.cbproj.local @@ -0,0 +1,2 @@ + + diff --git a/mmtty.cgl b/mmtty.cgl new file mode 100644 index 0000000..3a73065 --- /dev/null +++ b/mmtty.cgl @@ -0,0 +1,19 @@ +Error 00001. 0x400000 (Thread 0x0DF0): +Exception 0xC0000005: Access violation at 0x2B511DC. +Call Tree: + 0x006309D5(=mmtty.exe:0x01:22F9D5) + 0x0062F22A(=mmtty.exe:0x01:22E22A) + 0x0CD0682A(=CG32.DLL:0x01:00582A) + 0x0CD15053(=CG32.DLL:0x01:014053) + 0x0CD1602E(=CG32.DLL:0x01:01502E) + 0x0CD2783E(=CG32.DLL:0x01:02683E) + 0x0CD011BF(=CG32.DLL:0x01:0001BF) + 0x778AD6B2(=ntdll.dll:0x01:03D6B2) + 0x778AD554(=ntdll.dll:0x01:03D554) + 0x754C7A0D(=kernel32.dll:0x01:007A0D) + 0x0063AFFC(=mmtty.exe:0x01:239FFC) + 0x0063A37F(=mmtty.exe:0x01:23937F) + 0x0063A398(=mmtty.exe:0x01:239398) + 0x0063B2D4(=mmtty.exe:0x01:23A2D4) + +------------------------------------------ diff --git a/mmtty.cpp b/mmtty.cpp new file mode 100644 index 0000000..fdf06a3 --- /dev/null +++ b/mmtty.cpp @@ -0,0 +1,94 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORM("Main.cpp", MmttyWd); +USEUNIT("ComLib.cpp"); +USEUNIT("fir.cpp"); +USEUNIT("Sound.cpp"); +USEUNIT("Rtty.cpp"); +USEUNIT("Wave.cpp"); +USEUNIT("Fft.cpp"); +USEFORM("Scope.cpp", TScope); +USEFORM("Option.cpp", OptionDlg); +USEUNIT("Comm.cpp"); +USEFORM("EditDlg.cpp", EditDlgBox); +USERES("mmtty.res"); +USEFORM("TextEdit.cpp", TextEditDlg); +USEUNIT("LogFile.cpp"); +USEFORM("LogList.cpp", LogListDlg); +USEFORM("QsoDlg.cpp", QSODlgBox); +USEUNIT("country.cpp"); +USEUNIT("mmcg.cpp"); +USEFORM("MmcgDlg.cpp", MmcgDlgBox); +USEFORM("FreqDisp.cpp", FreqDispDlg); +USEFORM("VerDsp.cpp", VerDspDlg); +USEUNIT("LogConv.cpp"); +USEFORM("ConvDef.cpp", ConvDefDlg); +USEFORM("PlayDlg.cpp", PlayDlgBox); +USEFORM("ShortCut.cpp", ShortCutDlg); +USEFORM("LogSet.cpp", LogSetDlg); +USEFORM("ClockAdj.cpp", ClockAdjDlg); +USEFORM("SetHelp.cpp", SetHelpBox); +USEUNIT("ctnc.cpp"); +USEFORM("TncSet.cpp", TNCSetDlg); +USEFORM("SendFile.cpp", SendFileDlg); +USEUNIT("cradio.cpp"); +USEFORM("radioset.cpp", RADIOSetDlg); +USEFORM("MacroKey.cpp", MacroKeyDlg); +USEFORM("TxdDlg.cpp", TxdDlgBox); +USEFORM("InputWin.cpp", InputWinDlg); +USEUNIT("Loglink.cpp"); +USEUNIT("MMlink.cpp"); +USEFILE("mml.h"); +USEFILE("mmrp.h"); +USEFILE("mmw.h"); +USEUNIT("Hamlog5.cpp"); +USEFORM("TH5Len.cpp", TH5LenDlg); +USEUNIT("CLX.cpp"); +//--------------------------------------------------------------------------- +#define DISDUPE 1 +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ +#if DISDUPE + LPSTR pCmd = GetCommandLine(); + if( strstr(pCmd, "-Z") == NULL ){ + HWND hWnd = FindWindow("TMmttyWd", NULL); + if( hWnd != NULL ){ + if( !IsWindowVisible(hWnd) ) return 0; + } + } +#endif + try + { + Application->Initialize(); + Application->CreateForm(__classid(TMmttyWd), &MmttyWd); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/mmtty.map b/mmtty.map new file mode 100644 index 0000000..8442e54 --- /dev/null +++ b/mmtty.map @@ -0,0 +1,6 @@ + + Start Length Name Class + 0001:00401000 00037F46CH _TEXT CODE + 0002:00781000 00003A5DCH _DATA DATA + 0003:007BB5DC 0000320D0H _BSS BSS + 0004:00000000 0000000F8H _TLS TLS diff --git a/mmtty.res b/mmtty.res new file mode 100644 index 0000000000000000000000000000000000000000..17331f7e9e73f8bc8293793de2ff33cb96f44daf GIT binary patch literal 1636 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%0D3K2b^RJ;~jUQdM2Q$S0? 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ℑ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

<z^s~XeOh~L34koO3^1=7#~3LSb{ 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

Ac^Z;ukj`2? z56KJ22A%T~(p4+>)E@2N?=lQH<`qa!H8CNdNMb=MY84w&K%e*V_`H9q z@0qWnDX3-w8e92)wMO%qZtFEjHQiQRNFFt>Lu#st2l-r0d`N9I2_R*4f2QF66x4lw zBckz-Cge+E=Ai>A}7NorH&s5x>qPnf5XbS5dz71)vTTce5 zpmV0-oQjg^5NrH<7GX6+x0M`HS*saXjaBn5nlrlf6p-<1-h-S|lM*sf&HIq^YEnTa zt4R&Hs3r|$s+tcV*VUwjOjnZ*a#Kxu$UOat=tIa(tujE8ma|7JBP5w56J)PeA3@$# zlNplQj&WHa!M}%R4avul;7^s=DEh9RouZR-Kt^UX`UG-D_a`SLIQdh^CjIFv7i6y< zpU)s$)Z~WjQ

O20Sdg{+o*4q2(+t@1(Es`&!4N=<&qdNp4{HmNB9`B_at$Tl^F zAe+<_hU`#N1hPd3pQv$L>O-aapHKicC)O-c0o60_er6IrRGx#+m z`TN$Cf&8xK8^{!WC6t9+Q&SEyPEC2p1vTG7MkTk~ssOp6<~vC6^;|I|l_1k}Ta_Vy z=$tB$qW*hbl$(j~Kh^XdX-X3ib)PST=Qxo#8q!#44R<$8B z^ikA-yi`*cGD}T8NR#rY&Tdns$(cYT83qsObPntfnL6CpDcQNz`

%SHPhSB%LilRn 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℞PXPRFX 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 z


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�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
!o_Pf-R53_Eq)nP*v}aRrT&9+VgB@ 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
jFTAe1r-@U3&=W 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

5H_ul6pJ zU+wlW(|d8nzL8l*jEy69)t2+!d-A7%X(xU|!fqcIl=t>7`JKaou}7#Vn6t@6V=zN7 z(*g@a^syaosDO^9Y%(U8FMvEWlrb?>RS6jwDZG$D*Q5QU_@dduNF8ns3xp1ixbx-+ zROwTH-`ih3{Qb>he2U6S64C-1OR}Vts`G!n(Rv*&rwXD&vX?9ppiewAG%Xx)Eu}LH znD+@CKTYOII;zJ1XCdxGsQxWP{oig4E3WH9UDRN}tIhaYQ)3WolV$!JrETnx%N6

<8*6{>Z8RcNh89drF7umEtsyJXrWR< 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 Rig Data or Mic + +*ƒTƒEƒ“ƒhƒJ[ƒh‚ÌMic“ü—͂ɓü‚ê‚éꇂÍA‚±‚±‚É‚àATT‚ð“ü‚ê‚é•û‚ª—Ç‚¢‚Å‚µ‚傤B + + ‚`‚s‚s‚ÍŽŸ‚̂悤‚ÈŠÈ’P‚È\¬‚Å‚n‚j‚Å‚·B + + Output ------ R1 ------+---- Data/Mic + | +SoundCard‘¤ R2 Rig‘¤ + | + GND ----------------+---- GND + + Data R1 = 1K, R2 = 100 + Mic R1 = 10K, R2 = 100 + +*ã‹L‚̉ñ˜H}‚ɂ͋LÚ‚µ‚Ä‚¢‚Ü‚¹‚ñ‚ªA‰ñ‚螂ݖhŽ~‚Ì‚½‚߂ɓK“–‚ȃpƒXƒRƒ“‚âƒtƒFƒ‰ƒCƒgƒr[ƒY‚ň—‚·‚鎖‚ð‚¨Š©‚ß‚µ‚Ü‚·B +*‚¨Žg‚¢‚ɂȂéRig‚É‚æ‚Á‚Ä’ïR’l‚ðŽáб’²®‚·‚é•K—v‚ª‚ ‚é‚©‚à’m‚ê‚Ü‚¹‚ñB +*”¼ŒÅ’è‚Å’²®‚Å‚«‚邿‚¤‚É‚µ‚Ä‚¨‚­‚ÆRig‚âƒ\ƒtƒg‚Ì‘g‚݇‚킹‚ª•Ï‚í‚Á‚Ä‚àAƒŒƒxƒ‹‚ðŠÈ’P‚É’²®‚Å‚«‚é‚̂łæ‚è•Ö—˜‚¾‚ÆŽv‚¢‚Ü‚·B +*Rig‚̃}ƒjƒ…ƒAƒ‹‚ÉAFSK‰^—p‚ÌꇂƂµ‚Ä‹LÚ‚³‚ê‚Ä‚¢‚邯Žv‚¢‚Ü‚·B + +*FSK‚ʼn^—p‚·‚éꇂÍuFSK‚ʼn^—p‚·‚éê‡v‚ðŽQÆ‚µ‚ĉº‚³‚¢B + + +›‚o‚s‚s§Œä +~~~~~~~~~~~~ + ‚q‚‰‚‡‚Ì‚l‚‰‚ƒ“ü—͂Ƀg[ƒ“‚ð“ü‚ê‚éꇂÍA‚q‚‰‚‡‘¤‚É‚u‚n‚w‚ª”õ‚í‚Á‚Ä‚¢‚ê‚ÎA‚Ƃ肠‚¦‚¸‚»‚ê‚ðŽg‚Á‚Ä‚à—Ç‚¢‚ÆŽv‚¢‚Ü‚·i‚½‚¾‚µƒƒbƒZ[ƒWƒ{ƒbƒNƒX‚ª•\ަ‚³‚ê‚½Žž‚Ƀ|[ƒ“‚Æ‚¢‚¤‰¹‚ªo‚Ĉêu‚¾‚¯‘—Mó‘ԂɂȂé‰Â”\«‚Í‚ ‚è‚Ü‚·BjB + + ‚q‚‰‚‡‚Ì‚c‚‚”‚“ü—͂Ƀg[ƒ“‚ð“ü‚ꂽꇂ͂u‚n‚w‚ªŽg—p‚Å‚«‚Ü‚¹‚ñiŽ„‚Ì‚q‚‰‚‡‚¾‚¯Hj‚Ì‚ÅA‚o‚s‚s§Œä‚ðs‚¤•K—v‚ª¶‚¶‚Ü‚·B + ‚l‚l‚s‚s‚x‚Í‚o‚s‚s§Œä‚Æ‚µ‚ÄA‚q‚r‚Q‚R‚Q‚b‰ñü‚Ì‚q‚s‚r‚Ü‚½‚Í‚c‚s‚q‚ðŽg—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B—¼•û“¯‚¶˜_—‚ÅON/OFF‚µ‚Ü‚·‚̂ł¢‚¸‚ê‚ÉÚ‘±‚µ‚Ä‚à‚n‚j‚Å‚·B + +*PTT§Œä‚̉ñü‚̓IƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚Ìu‘—Mv‚̂Ƃ±‚ë‚Åݒ肵‚Ü‚·BƒhƒƒbƒvƒŠƒXƒg‚Å‚ÍCOM1`COM8‚µ‚©‘I‘ð‚Å‚«‚Ü‚¹‚ñ‚ªA—Ⴆ‚΃L[ƒ{[ƒh‚©‚çCOM9‚Æ“ü—Í‚µ‚Ä”CˆÓ‚̃|[ƒg–¼‚ðÝ’è‚·‚鎖‚à‚Å‚«‚Ü‚·B + +*Ver1.59ˆÈ~‚ÌMMTTY‚ÍRadio Command‚É‚æ‚éPTT§Œä‚à—˜—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BÚׂ͖{‘‚̌㔼‚ÌuRadio Commmandv‚Ì€‚ðŽQÆ‚µ‚ĉº‚³‚¢B + + + ‚o‚s‚s§Œä‰ñ˜H‚͗Ⴆ‚Έê‚‚̃gƒ‰ƒ“ƒWƒXƒ^‚ðŽg‚Á‚½ŽŸ‚̂悤‚ȉñ˜H‚Å\¬‚Å‚«‚Ü‚·B + + (C)---+---- Rig PTT + Com-RTS -- R1-+---+-(B)< | + (DTR) | | (E) | + D R2 | D + | | | | + Com-GND ------+---+------+----+---- Rig GND + + R1=4.7K, R2=47K, D=1S1588, Tr=2SC1815 + + Dsub(9pin) RTS(7), DTR(4), GND(5), TXD(3) + Dsub(25pin) RTS(4), DTR(20), GND(7), TXD(2) + +*ã‹L‚̉ñ˜H}‚ɂ͋LÚ‚µ‚Ä‚¢‚Ü‚¹‚ñ‚ªA‰ñ‚螂ݖhŽ~‚Ì‚½‚߂ɓK“–‚ȃpƒXƒRƒ“‚âƒtƒFƒ‰ƒCƒgƒr[ƒY‚ň—‚·‚鎖‚ð‚¨Š©‚ß‚µ‚Ü‚·B +*Rig‚̃}ƒjƒ…ƒAƒ‹‚ÉAFSK‰^—p‚ÌꇂƂµ‚Ä‹LÚ‚³‚ê‚Ä‚¢‚邯Žv‚¢‚Ü‚·B + + +›ŽóM•û–@ +~~~~~~~~~~ + Rig‚ÍLSBƒ‚[ƒhiƒpƒPƒbƒgƒ‚[ƒh‚ª‚ ‚éꇂ͂»‚ê‚ðŽg—p‚µ‚Ä‚à—Ç‚¢j‚É‚µ‚Ü‚·BRig‚Ì“s‡‚łǂ¤‚µ‚Ä‚àUSBƒ‚[ƒh‚µ‚©‘—ŽóM‚Å‚«‚È‚¢ê‡‚ÍAƒƒCƒ“‰æ–Ê‚Ìã‚É‚ ‚éuRevv‚̃{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‚¨‚«‚Ü‚·B + + RTTY‚̉^—pŽü”g”‚Í + 14.080`14.095 + 21.080`21.095 +‚Ì‚ ‚½‚è‚̂悤‚Å‚·‚Ì‚ÅA‚±‚Ì‚ ‚½‚è‚ðƒƒbƒ`‚µ‚ÄAƒsƒƒsƒ‚Æ‚¢‚¤‰¹‚ð’T‚µ‚Ü‚·B‚Ü‚½–ˆT“ú—j“ú‚̌ߑO‚P‚OŽž‚©‚çA7026•t‹ß(7025`7030‚̂ǂ±‚©)‚ÅJARTS‚̃[ƒ‹ƒR[ƒ‹‚ªs‚í‚ê‚Ä‚¢‚Ü‚·B‚±‚̃[ƒ‹ƒR[ƒ‹‚Í’N‚Å‚à‹CŒy‚ÉŽQ‰Á‚Å‚«‚Ü‚·‚Ì‚ÅAŽóM‚ªŽ|‚­‚¢‚Á‚½‚ç‘—M‚àƒgƒ‰ƒC‚µ‚Ă݂ĉº‚³‚¢B + + ƒsƒƒsƒ‰¹‚ª•·‚±‚¦‚½‚ç‰Eã‚ÌFFTƒXƒR[ƒv‚É‚Q‚‚̃s[ƒN‚ªA‰©F‚Ì‚Q–{ü‚Éd‚È‚é‚æ‚¤‚ÉŽóM‹@‚ÌŽü”g”‚ð‡‚킹‚Ä‚­‚¾‚³‚¢BFFTƒXƒR[ƒv‚Ü‚½‚Í‚·‚®‰º‚ÌWaterFall‚Ŷ‘¤‚̃s[ƒN•”•ª‚ðƒ}ƒEƒX‚ŃNƒŠƒbƒN‚·‚邯A‚»‚ÌŽü”g”‚ªƒ}[ƒNŽü”g”‚Éݒ肳‚ê‚Ü‚·‚Ì‚ÅAAFSK‚ʼn^—p‚µ‚Ä‚¢‚éꇂÍA‚ ‚é’ö“xŽü”g”‚ª‡‚¦‚΂±‚Ì‘€ì‚Å‚l‚l‚s‚s‚x‚̃}[ƒNŽü”g”‚ð•ÏX‚µ‚Ä‚µ‚Ü‚¤‚Ù‚¤‚ªŠÈ’P‚Å‚·B + ‚Ü‚½‚l‚l‚s‚s‚x‚Ì‚`‚e‚b‚ð‚n‚m‚É‚µ‚Ä‚¢‚éꇂ͑½­ƒ‰ƒt‚ɇ‚킹‚Ä‚àAŽ©“®‚ÅŽü”g”‚ð‡‚킹‚Ü‚·B + +*•\ަƒƒjƒ…[‚ÌuXYScopev‚Ƀ`ƒFƒbƒN‚ð•t‚¯‚邯AXYScope‚ª•\ަ‚³‚ê‚Ü‚·‚Ì‚ÅA‚±‚ê‚ðŒ©‚È‚ª‚瓯’²‚ð‡‚킹‚鎖‚à‚Å‚«‚Ü‚·B + + Žü”g”‚ª‡‚¤‚ÆŽóM‰æ–Êi’†‰›‚̉æ–Êj‚É•¶Žš‚ª•\ަ‚³‚ê‚Ü‚·B + + FIGƒP[ƒX‚ÌuSTOPv‚¨‚æ‚ÑuBELLv‚Í•\ަ‚Å‚«‚È‚¢‚Ì‚ÅA‚»‚ꂼ‚ꬕ¶Žš‚Ìuhv‚Æusv‚Å’u‚«Š·‚¦‚Ä•\ަ‚µ‚Ä‚¢‚Ü‚·B + + ‚Ü‚½ŽóM‰æ–Ê“à‚Ì•¶Žš—ñ‚ðƒ}ƒEƒX‚̉Eƒ{ƒ^ƒ“‚ŃNƒŠƒbƒN‚·‚邯A‚»‚Ì•”•ª‚Ì•¶Žš—ñ‚Ì•¶ŽšƒVƒtƒg‚𔽓]‚µ‚ÄÄ•\ަ‚µ‚Ü‚·i‚±‚Ì‹@”\‚̓}ƒEƒX‚̶ƒ{ƒ^ƒ“‚ł͂Ȃ­‰Eƒ{ƒ^ƒ“‚Å‚·jB + + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚Ìu‚»‚Ì‘¼v‚̃y[ƒW‚ÉAƒTƒEƒ“ƒhƒJ[ƒh‚̃oƒbƒtƒ@ƒTƒCƒY‚ðÝ’è‚·‚é•”•ª‚ª‚ ‚è‚Ü‚·‚Ì‚ÅA“®ì‚·‚é”͈͂Ŭ‚³‚È’l‚ðÝ’è‚·‚邯—Ç‚¢‚Å‚µ‚傤B‚±‚Ì’l‚ð‘å‚«‚­‚·‚邯‰ž“š’x‚ꂪ‘å‚«‚­‚È‚èAŽü”g”‡‚킹‚Ì‘€ì«‚ªˆ«‚­‚È‚è‚Ü‚·B + ‹t‚Ƀpƒ\ƒRƒ“‚Ì‘¬“xã‚Ì–â‘è‚ÅA“®ì‚ªŒµ‚µ‚¢ê‡‚Í‚±‚Ì’l‚ð‘å‚«‚­‚µ‚Ä‚Ý‚é‚Æ—Ç‚¢‚Å‚µ‚傤B + + +›‘—M•û–@ +~~~~~~~~~~ + ƒƒCƒ“‰æ–ʶã‚ÌuTXvƒ{ƒ^ƒ“iF9ƒL[j‚ð‰Ÿ‚·‚Æ‘—Mó‘Ô‚É“ü‚è‚Ü‚·Bˆê”Ô‰º‚̉æ–Ê‚ª‘—M“d•¶‚ð“ü—Í‚·‚鉿–ʂł·i‘—M‰æ–ʂƌĂт܂·jBƒL[‚©‚ç•¶Žš‚ð“ü—Í‚·‚邯A‚»‚ꂪ‘—M‰æ–ʂɕ\ަ‚³‚ꇎŸo—Í‚³‚ê‚Ä‚¢‚«‚Ü‚·B‚±‚ÌŽž•¶Žš‚ªo—Í‚³‚ê‚Ä‚¢‚­‚É]‚Á‚ÄÔF‚ɕςí‚Á‚Ä‚¢‚­‚Í‚¸‚Å‚·B + +*AFSK‚Å‘—M‚·‚éÛ‚ÍRig‚̃Xƒs[ƒ`ƒvƒƒZƒbƒTiƒ}ƒCƒNƒRƒ“ƒvƒŒƒbƒTj‚Íâ‘΂ÉON‚É‚µ‚È‚¢‚ʼnº‚³‚¢B‚Ü‚½ALC‚ª‚©‚©‚ç‚È‚¢‚悤‚É“ü—̓Œƒxƒ‹‚ð’²®‚µ‚ĉº‚³‚¢B + + ‘—M’†‚ÉuTXvƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚ÆŽóMØ‚è‘Ö‚¦—\–ñó‘ԂɂȂèA‘—M‰æ–Ê“à‚Ì‘—M“d•¶‚ª‘S•”o—Í‚³‚ê‚Ä‚©‚çŽóMó‘Ô‚É–ß‚è‚Ü‚·B‹­§“I‚ÉŽóM‚É–ß‚·‚É‚ÍuTXOFFvƒ{ƒ^ƒ“iF8ƒL[j‚ð‰Ÿ‚µ‚Ü‚·B + + ŽóMó‘Ô‚ÅA‘—M‰æ–ʂɂ ‚ç‚©‚¶‚ß•¶Žš‚ð“ü—Í‚µ‚Ä‚¨‚«uTXvƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‚»‚ê‚ð‘—M‚³‚¹‚鎖‚à‚Å‚«‚Ü‚·B + + –¢‘—o‚Ì•¶Žš‚ÍuBSvƒL[‚ð‰Ÿ‚µ‚ÄÁ‹Ž‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·‚ªAPSK31‚̂悤‚É‘—Mς݂̕¶Žš‚ðÁ‹Ž‚·‚邱‚Ƃ͂ł«‚Ü‚¹‚ñB‚±‚Ìê‡uBSvƒL[‚ð‰Ÿ‚·‚ÆuXv‚ª‘—M‚³‚ê‚Ü‚·BƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚Ìu‘—M•û–@v‚Åuƒ[ƒh’PˆÊv‚ð‘I‘ð‚·‚é‚ÆAƒXƒy[ƒX‚©‰üs‚ð“ü—Í‚·‚é‚܂ł»‚Ì’PŒê‚Ì‘—M‚ª•Û—¯‚³‚ê‚Ü‚·‚Ì‚ÅA•¶Žš‚ÌC³‚ª‚µˆÕ‚­‚È‚è‚Ü‚·B + +*uCtrl+BSvƒL[‚ð‰Ÿ‚·‚ÆA–¢‘—o‚Ì‚Ps‚ðÁ‹Ž‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + + ‘—M‰æ–ʂ̂·‚®ã‚É‚ ‚éƒ{ƒ^ƒ“‚ÍAQSO’†‚ÌŒˆ‚܂肫‚Ü‚Á‚½ƒƒbƒZ[ƒW“à—e‚ª’è‹`‚µ‚Ä‚ ‚è‚Ü‚·B‚Ü‚½ƒhƒƒbƒvƒŠƒXƒg‚É‚à’èŒ^ƒƒbƒZ[ƒW‚ð’è‹`‚³‚ê‚Ä‚¢‚Ü‚·‚Ì‚ÅA‚±‚ê‚ç‚ð—˜—p‚µ‚Ä‚­‚¾‚³‚¢B‚à‚¿‚ë‚ñƒ{ƒ^ƒ“‚âƒhƒƒbƒvƒŠƒXƒg‚Ì–¼‘O‚â“à—e‚Í‚»‚ꂼ‚ê•ÏX‰Â”\‚Å‚·B + + ƒ{ƒ^ƒ“‚Ì–¼‘O‚â“à—e‚ð•ÏX‚·‚éꇂÍA•ÒWƒƒjƒ…[‚ÌuMacroƒ{ƒ^ƒ“‚Ì•ÒWv‚ð‘I‘ð‚µA‰æ–Ê“à‚É•\ަ‚³‚ê‚铯‚¶ƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚ÄA“à—e‚Æ–¼‘O‚ð“o˜^‚µ‚ĉº‚³‚¢B + ƒhƒƒbƒvƒŠƒXƒg‚Ì–¼‘O‚â“à—e‚ð•ÏX‚·‚éꇂÍA‚·‚®‰¡‚ÌuEditvƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä“à—e‚Æ–¼‘O‚ð“o˜^‚µ‚ĉº‚³‚¢B + +*’è‹`ς݂̃{ƒ^ƒ“‚ðƒ}ƒEƒX‚̉Eƒ{ƒ^ƒ“‚ŃNƒŠƒbƒN‚µ‚Ä•ÒW‰æ–Ê‚ðŒÄ‚Ño‚·‚±‚Æ‚à‚Å‚«‚Ü‚·B + + + ƒ{ƒ^ƒ“‚âƒhƒƒbƒvƒŠƒXƒg‚̃ƒbƒZ[ƒW•¶‚ɂ͎Ÿ‚Ì“Á•ʂȋL†‚ð‹Lq‚Å‚«‚Ü‚·B + + \ ƒƒbƒZ[ƒW‚Ìʼn‚É‹Lq‚µ‚Ä‘—M‰æ–Ê‚ðƒNƒŠƒA‚·‚é + ƒƒbƒZ[ƒW‚ÌÅŒã‚É‹Lq‚µ‚ÄŽóM‚ÉØ‚è‘Ö‚¦‚é + # ƒƒbƒZ[ƒW‚Ìæ“ª‚É‹Lq‚µ‚Ä‘—M‚ÉØ‚è‘Ö‚¦‚é + %c ‘ŠŽè‹Ç‚̃R[ƒ‹ƒTƒCƒ“iCallj + %r ‘ŠŽè‹Ç‚ÌM†‹­“x(HisRST) + %R HisRST‚ÌRST•”•ª + %N HisRST‚̃Rƒ“ƒeƒXƒgƒiƒ“ƒo•”•ª + %M MyRST‚̃Rƒ“ƒeƒXƒgƒiƒ“ƒo•”•ª + %n ‘ŠŽè‹Ç‚Ì–¼‘O(Name) + %q ‘ŠŽè‹Ç‚ÌQTH + %m Ž©•ª‚̃R[ƒ‹ƒTƒCƒ“ + %s Ž©‹Ç‚ÌM†‹­“x(MyRST) + %g HELLO/GOOD MORNING/AFTERNOON/EVENING + %f GM/GA/GE + %L LTRƒR[ƒh‹­§‘—M + %F FIGƒR[ƒh‹­§‘—M + %D UTCŒ»Ý“ú•t (—á 2000-SEP-05) + %T UTCŒ»ÝŽž (—á 17:44) + %t UTCŒ»ÝŽž (—á 1744) + %E ’è‹`‚ÌI—¹ + ^ –ñ‚P•bŠÔ‚̃EƒGƒCƒg + _ ƒ}[ƒNM†‚Ì‘—o + ~ ƒ}[ƒNM†OFFiƒLƒƒƒŠƒA’âŽ~j + [ Diddle‹ÖŽ~ + ] Diddle‹ÖŽ~‚̉ðœ + +*%g‚Æ%f‚Í‘ŠŽè‹Ç‚̃ƒJ[ƒ‹ƒ^ƒCƒ€‚É‚æ‚Á‚ĕω»‚µ‚Ü‚·B +*ƒhƒƒbƒvƒŠƒXƒg‚É•\ަ‚³‚ê‚é–¼‘O‚Íí‚ÉABC‡‚Å‚·B +*ƒhƒƒbƒvƒŠƒXƒg‚É‚ÍÅ‘å‚U‚SŒÂ‚̃ƒbƒZ[ƒW‚ð“o˜^‚Å‚«‚Ü‚·B‚U‚SŒÂ‚ð’´‚¦‚Ä“o˜^‚·‚éê‡AÅ‚àŽQÆŽž‚̌¢ƒƒbƒZ[ƒW‚ªÁ‹Ž‚³‚ê‚Ü‚·B +*ƒhƒƒbƒvƒŠƒXƒg‚̓fƒtƒHƒ‹ƒg‚ÅuCtrl+F1vƒL[`uCtrl+F9vƒL[‚Å‚àŒÄ‚Ño‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B + +*ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÅuƒL[ƒ[ƒh‚Ì‘¦Žž•ÏŠ·v‚̃`ƒFƒbƒN‚ð•t‚¯‚邯A“ü—̓{ƒ^ƒ“‚âƒhƒƒbƒvƒŠƒXƒg‚Ì’è‹`“à—e‚ð‘—M‰æ–ʂɓWŠJ‚·‚éÛA’¼‚¿‚Éã‹L‚ÌŽQƃL[ƒ[ƒh‚ª•ÏŠ·‚³‚ê‚Ü‚·BƒfƒtƒHƒ‹ƒgiƒ`ƒFƒbƒN‚È‚µj‚Å‚ÍA‚»‚Ì•¶Žš‚ª‘—M‚³‚ê‚éۂɕϊ·‚³‚ê‚Ü‚·B + +*‘—M‰æ–ʂ̑傫‚³‚ÍuCtrl+ªvƒL[AuCtrl+«vƒL[‚Å’²®‚Å‚«‚Ü‚·B + + +›•\ަƒtƒHƒ“ƒg‚ÆF +~~~~~~~~~~~~~~~~~~ + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÌuƒtƒHƒ“ƒg/•\ަv‚̃y[ƒW‚ŃtƒHƒ“ƒg‚âF‚ðÝ’è‚·‚鎖‚ª‚Å‚«‚Ü‚·B‚±‚̃tƒHƒ“ƒg‚ÆF‚ÍŽóM‰æ–Ê‚¨‚æ‚Ñ‘—M‰æ–ʂɉe‹¿‚µ‚Ü‚·B‚Ü‚½WaterFall‚ÌF‚ðÝ’è‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + + uŽQÆvƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚ƃtƒHƒ“ƒg‚̈ꗗ‚ª•\ަ‚³‚ê‚Ü‚·B‘I‘ð‚·‚éƒtƒHƒ“ƒg‚É‚æ‚Á‚Ăͳ‚µ‚­•\ަ‚³‚ê‚È‚¢ê‡‚à‚ ‚é‚©‚à’m‚ê‚Ü‚¹‚ñB + •¶Žš‚Ì•À‚Ñ‚ª‹·‰ß‚¬‚½‚èL‰ß‚¬‚½‚è‚·‚éꇂÍu•\ަ’²®v‚Ì’l‚ð”÷’²‚µ‚ĉº‚³‚¢Bƒvƒ‰ƒX‚Ì’l‚ðÝ’è‚·‚邯L‚­‚È‚èAƒ}ƒCƒiƒX‚Ì’l‚ðÝ’è‚·‚邯‹·‚­‚È‚è‚Ü‚·B + +*ƒvƒƒ|[ƒVƒ‡ƒiƒ‹ƒtƒHƒ“ƒg‚ð‘I‘ð‚µ‚Ä‚à•¶Žš‚Ì•\ަƒsƒbƒ`‚͌Œ肳‚ê‚Ü‚·B +*ŽÎü•t‚«‚Ì‚O‚͉¢•¶ƒtƒHƒ“ƒg‚Å‚ÍuØvA˜a•¶ƒtƒHƒ“ƒg‚Å‚ÍuƒÓv‚ɕϊ· + ‚µ‚Ä•\ަ‚µ‚Ü‚·B + + WaterFall‚ÌF‚ÍuLv‚ª’á‚¢M†ƒŒƒxƒ‹AuHv‚ª‚‚¢M†ƒŒƒxƒ‹‚ÌF‚ð‚»‚ê‚¼‚êŽw’肵‚Ü‚·BMMTTY‚ÍŽw’肳‚ꂽ‚Q‚‚ÌF‚©‚ç‚P‚Q‚W’iŠK‚ÌŠK’²‚ɕϊ·‚µ‚Ü‚·B‚ ‚½‚è‚Ü‚¦‚Å‚·‚ª—¼ŽÒ‚͂ł«‚邾‚¯ƒRƒ“ƒgƒ‰ƒXƒg‚ª‚ ‚é‚Ù‚¤‚ª”»‚èˆÕ‚­ƒfƒtƒHƒ‹ƒg‚ÌL=•AH=”’‚ªÅ‚à“K‚µ‚Ä‚¢‚邯Žv‚¢‚Ü‚·B + + 256FƒrƒfƒIƒAƒ_ƒvƒ^[‚ðŽg‚Á‚Ä‚¢‚éê‡AuƒpƒŒƒbƒg‚ðŽg‚¤v‚Ƀ`ƒFƒbƒN‚ð•t‚¯‚邯AMMTTY‚ÍŽóM‰æ–ʂ̔wŒiFA‘—M‰æ–ʂ̔wŒiFAWaterFall‚ÌF‚ð‰Â”\‚ÈŒÀ‚èŽw’肳‚ꂽF‚Ɉê’v‚³‚¹‚悤‚ÆŽŽ‚Ý‚Ü‚·B‚½‚¾‚µ•¶ŽšF‚ɂ‚¢‚Ä‚ÍÅ‚àŽw’èF‚ɋ߂¢ƒF‚Å•\ަ‚³‚ê‚Ü‚·B + + +*ƒtƒ‹ƒJƒ‰[ƒrƒfƒIƒAƒ_ƒvƒ^[‚Ìê‡AuƒpƒŒƒbƒg‚ðŽg‚¤v‚͉e‹¿‚µ‚Ü‚¹‚ñB‚·‚ׂĂÌF‚ªí‚ɳ‚µ‚­ÄŒ»‚³‚ê‚Ü‚·B + + +›ƒ}ƒNƒ‘—M +~~~~~~~~~~~~ + ‰æ–Êã‚Ì‚P‚UŒÂ‚̃{ƒ^ƒ“‚̓}ƒNƒƒ{ƒ^ƒ“‚Å‚·B‚±‚±‚É‚ ‚ç‚©‚¶‚߃ƒbƒZ[ƒW‚ð‹L‰¯‚µ‚Ä‚¨‚«Aƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‘—M‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + ƒfƒtƒHƒ‹ƒg‚Å‚ÍM1`M5AM13AM15AM16‚É‚»‚ꂼ‚ꃃbƒZ[ƒW‚ª‹L‰¯‚³‚ê‚Ä‚¢‚Ü‚·‚ªA‚à‚¿‚ë‚ñ‚±‚ê‚ç‚Í“à—e‚ð•ÏX‚·‚鎖‚ª‚Å‚«‚Ü‚·B + + ƒfƒtƒHƒ‹ƒg‚ňȉº‚̃Vƒ‡[ƒgƒJƒbƒgƒL[‚àŽg‚¦‚Ü‚·B + M1 Ctrl+1 + M2 Ctrl+2 + M3 Ctrl+3 + M4 Ctrl+4 + M5 Ctrl+5 + M6 Ctrl+6 + M7 Ctrl+7 + M8 Ctrl+8 + M9 Ctrl+9 + M10 F10 + M11 F11 + M12 F12 + M15 F7 + M16 F6 + + + ƒ{ƒ^ƒ“‚Ì–¼‘O‚â“à—e‚ð•ÏX‚·‚éꇂÍA•ÒWƒƒjƒ…[‚ÌuMacroƒ{ƒ^ƒ“‚Ì•ÒWv‚ð‘I‘ð‚µA‰æ–Ê“à‚É•\ަ‚³‚ê‚铯‚¶ƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚ÄA“à—e‚Æ–¼‘O‚ð“o˜^‚µ‚ĉº‚³‚¢B + +*’è‹`ς݂̃{ƒ^ƒ“‚ðƒ}ƒEƒX‚̉Eƒ{ƒ^ƒ“‚ŃNƒŠƒbƒN‚µ‚Ä•ÒW‰æ–Ê‚ðŒÄ‚Ño‚·‚±‚Æ‚à‚Å‚«‚Ü‚·B + + ƒƒbƒZ[ƒW‚ɂ͎Ÿ‚Ì“Á•ʂȋL†‚ð‹Lq‚Å‚«‚Ü‚·B + + \ ƒƒbƒZ[ƒW‚Ìæ“ª‚É‹Lq‚µ‚Ä‘—M‰æ–ʂɓWŠJ‚µ‚Ä‘—M‚·‚é + \ ƒƒbƒZ[ƒW‚ÌÅŒã‚É‹Lq‚µ‚ÄŽóM‚ÉØ‚è‘Ö‚¦‚é + # ƒƒbƒZ[ƒW‚Ìæ“ª‚É‹Lq‚µ‚Ä‘—M‰æ–ʂɓWŠJ‚·‚é + # ƒƒbƒZ[ƒW‚ÌÅŒã‚É‹Lq‚µ‚Äæ“ª‚©‚çŒJ‚è•Ô‚µ‘—M‚·‚é + %c ‘ŠŽè‹Ç‚̃R[ƒ‹ƒTƒCƒ“iCallj + %r ‘ŠŽè‹Ç‚ÌM†‹­“x(HisRST) + %R HisRST‚ÌRST•”•ª + %N HisRST‚̃Rƒ“ƒeƒXƒgƒiƒ“ƒo•”•ª + %M MyRST‚̃Rƒ“ƒeƒXƒgƒiƒ“ƒo•”•ª + %n ‘ŠŽè‹Ç‚Ì–¼‘O(Name) + %q ‘ŠŽè‹Ç‚ÌQTH + %m Ž©•ª‚̃R[ƒ‹ƒTƒCƒ“ + %s Ž©‹Ç‚ÌM†‹­“x(MyRST) + %g GOOD MORNING/AFTERNOON/EVENING + %f GM/GA/GE + %L LTRƒR[ƒh‹­§‘—M + %F FIGƒR[ƒh‹­§‘—M + %D UTCŒ»Ý“ú•t (—á 2000-SEP-05) + %T UTCŒ»ÝŽž (—á 17:44) + %t UTCŒ»ÝŽž (—á 1744) + %E ’è‹`I—¹ + _ ƒ}[ƒNM†‚Ì‘—o + ~ ƒ}[ƒNM†OFFiƒLƒƒƒŠƒA’âŽ~j + [ Diddle‹ÖŽ~ + ] Diddle‹ÖŽ~‚̉ðœ + +*%g‚Æ%f‚Í‘ŠŽè‹Ç‚̃ƒJ[ƒ‹ƒ^ƒCƒ€‚É‚æ‚Á‚ĕω»‚µ‚Ü‚·B +*ƒRƒ“ƒeƒXƒgƒiƒ“ƒo‚ð‘—M‚·‚鎞‚͗Ⴆ‚Îu%R-%N-%Nv‚̂悤‚É’è‹`‚µ‚Ä‚¨‚­‚Æ—Ç‚¢‚Å‚µ‚傤B +*—Ⴆ‚΃Rƒ“ƒeƒXƒg‚ȂǂÌÛACQ‚ðŒJ‚è•Ô‚µ‘—M‚µ‚½‚¢ê‡Aƒ}ƒNƒ•ÒW‰æ–Ê‚ÌRepeat‚É‚OˆÈŠO‚Ì’li0.1•b’PˆÊj‚ðݒ肵‚ĉº‚³‚¢BƒŠƒs[ƒg‚̉ðœ‚ÍŽóM‰æ–ʂ܂½‚Í‘—M‰æ–Ê‚ðƒNƒŠƒbƒN‚·‚ê‚ÎOK‚Å‚·B + + ƒ}ƒNƒ‚©‚çŽQÆ‚·‚鑊Žè‹Ç‚̃R[ƒ‹ƒTƒCƒ“‚â–¼‘O‚ȂǂÍAƒƒCƒ“‰æ–Ê’†‰›‚Ì“ü—̓{ƒbƒNƒX‚É“ü—Í‚·‚é‚©A‚Ü‚½‚ÍŽóM‰æ–ʂ̂»‚Ì•¶Žš—ñ‚̈ʒu‚ðƒ}ƒEƒX‚̶ƒ{ƒ^ƒ“‚ŃNƒŠƒbƒN‚µ‚Ä“ü—Í‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + + +›FSK‚ʼn^—p‚·‚éê‡ +~~~~~~~~~~~~~~~~~~~ + AFSK‚ł͂Ȃ­FSKiƒTƒEƒ“ƒho—Í‚ðŽg—p‚¹‚¸’¼ÚRig‚ðƒL[ƒCƒ“ƒO‚·‚éj‚ʼn^—p‚·‚éꇂÍAƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Êu‚»‚Ì‘¼v‚̃y[ƒW‚ÅAo—̓|[ƒg‚ðuSound+Com(TXD)v‚Ü‚½‚ÍuCom(TXD)v‚Éݒ肵‚Ü‚·B‚±‚Ìê‡A‚ ‚ç‚©‚¶‚ßu‘—Mvƒy[ƒW‚ÌuPTTv‚ÉCOM1`COMx‚Ì‚¢‚¸‚ê‚©‚ðݒ肵‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·B + +@ˆÈ‰º‚É‚±‚Ì‘I‘ð‚É‚æ‚é“®ì‚̈Ⴂ‚ðŽ¦‚µ‚Ü‚·B + +Sound +@‘—MŽž‚̓TƒEƒ“ƒhƒJ[ƒh‚̃^ƒCƒ~ƒ“ƒO‚Å“®ì‚µATXD‚É•„†‚Ío—Í‚³‚ê‚Ü‚¹‚ñB + +Sound+Com(TXD) +@‘—MŽž‚̓TƒEƒ“ƒhƒJ[ƒh‚̃^ƒCƒ~ƒ“ƒO‚Å“®ì‚µAUART‚ð‰î‚µ‚ÄTXD‚É‚à•„†‚ðo—Í‚µ‚Ü‚·BUART‚ƃTƒEƒ“ƒhƒJ[ƒh‚̃^ƒCƒ~ƒ“ƒO’²®‚Ì‚½‚ß‚ÉADiddleƒR[ƒh‚ð‘}“ü‚·‚éꇂª‚ ‚è‚Ü‚·B + +Com(TXD) +@‘—MŽž‚ÍŠ®‘S‚ÉUART‚̃^ƒCƒ~ƒ“ƒO‚Å“®ì‚µAƒTƒEƒ“ƒhƒJ[ƒh‚Í’âŽ~‚µ‚Ü‚·B + + + TXD‚©‚çŽæ‚èo‚µ‚½M†‚ÍAPTT§Œä‰ñ˜H‚Æ“¯‚¶‰ñ˜H‚ŃL[ƒCƒ“ƒO‰ñ˜H‚ðì‚Á‚½ê‡Aƒm[ƒ}ƒ‹ƒVƒtƒgiRig‘¤‚̓L[ƒI[ƒvƒ“Žž‚ɃXƒy[ƒX‚ª‘—M‚³‚ê‚邯‘z’èj‚ɂȂè‚Ü‚·B + +@FSK‚ʼn^—p‚·‚éꇂÉAFC‚ðON‚É‚·‚邯AMMTTY‚̃}[ƒNŽü”g”‚ª•ω»‚µ‚Ä‚µ‚Ü‚¤‚½‚ß‚ÉA‘ŠŽè‹Ç‚Ƃ̃[ƒƒCƒ“‚ª‚Å‚«‚È‚­‚È‚è‚Ü‚·B‚±‚ê‚ð‰ñ”ð‚·‚é•û–@‚ð–{‘‚̌㔼‚ÉuƒVƒtƒg•‚Ì•ÏX‘€ìv‚Ì€–Ú‚É‹LÚ‚µ‚Ä‚ ‚è‚Ü‚·‚Ì‚ÅA•¹‚¹‚ÄŽQÆ‚µ‚ĉº‚³‚¢B + + +*FSK‰^—p‚ðs‚¤ê‡‚ÍAÝ’è‰æ–Ê‚Ìu‘—Mv‚̃y[ƒW‚ÌuTxBPFv‚âuTxLPFv‚Í–³ŠÖŒW‚Å‚·‚Ì‚ÅA“®ì‘¬“x㌵‚µ‚¢CPU‚ð‚¨Žg‚¢‚ÌꇂÍA‚±‚ê‚ç‚ðOFF‚É‚µ‚Ä‚¨‚­‚±‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B + +*TXD‚©‚ç•„†‚ðo—Í‚µ‚½ê‡AƒƒCƒ“‰æ–Ê‚ÌuRevvƒ{ƒ^ƒ“‚ÍA‘—M‚̃Vƒtƒg‚ɂ͉e‹¿‚µ‚È‚­‚È‚è‚Ü‚·B +*TXD‚©‚ç•„†‚ðo—Í‚µ‚½ê‡AUART‚̧ŒÀ‚©‚ç5’PˆÊ’·‚ÌŽž‚̓Xƒgƒbƒvƒrƒbƒg‚ð2bit‚ɂł«‚Ü‚¹‚ñiƒfƒR[ƒhÝ’è‚Å2bit‚ª‘I‘ð‚³‚ê‚Ä‚¢‚Ä‚à1.5bit‚Å‘—M‚µ‚Ü‚·jB + + + USB-Comƒ|[ƒg‚ðŽg‚¤ê‡‚ÅA³‚µ‚­FSKM†‚ª‘—M‚Å‚«‚È‚¢ê‡‚ÍASound+TXD‚Ü‚½‚ÍTxD‚ð‘I‚ñ‚¾ŒãAuUSB Portv‚̃{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ĉ—‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B + +[A:’Êí‚̈—(Normal)] + •’ʂ̕û–@‚Å‘—M‚µ‚Ü‚·B +[B:ƒ|[ƒŠƒ“ƒO(Polling)] + Windows‚Ì‘—MƒCƒxƒ“ƒg‚ðŽg—p‚¹‚¸‚Ƀ|[ƒŠƒ“ƒO‚É‚æ‚è‘—M‚µ‚Ü‚·B +[C:‘—M‘¬“x‚̧ŒÀ(Limiting speed)] + ‘—M‘¬“x‚ð§ŒÀ‚µADiddle‚ªƒoƒbƒtƒ@‚É—­‚Ü‚é‚Ì‚ð–hŽ~‚µ‚Ü‚·B +[D:‘—M‘¬“x‚̧ŒÀ‚ƃ|[ƒŠƒ“ƒO(Polling and Limiting speed)] + Windows‚Ì‘—MƒCƒxƒ“ƒg‚ðŽg—p‚¹‚¸‚Ƀ|[ƒŠƒ“ƒO‚É‚æ‚è‘—M‚µ‚Ü‚·B +‚Ü‚½‘—M‘¬“x‚ð§ŒÀ‚µADiddle‚ªƒoƒbƒtƒ@‚É—­‚Ü‚é‚Ì‚ð–hŽ~‚µ‚Ü‚·B + +*Real-Comƒ|[ƒg‚ðŽg‚¤ê‡‚ÍA[A:’Êí‚̈—(Normal)]‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B +*USB-Comƒ|[ƒg‚ðŽg‚¤ê‡‚ÅA[A:’Êí‚̈—(Normal)]‚ų‚µ‚­“®ì‚µ‚È‚¢ê‡‚ÍA‘¼‚Ì•û–@iB,C,Dj‚ðŽŽ‚µ‚ĉº‚³‚¢B +*Comƒ|[ƒg‚̃I[ƒvƒ“ƒGƒ‰[ƒƒbƒZ[ƒW‚ª•\ަ‚³‚ê‚éê‡A‚»‚̃|[ƒg‚Å‚ÌFSK‘—M‚͂ł«‚Ü‚¹‚ñi‚»‚̃|[ƒg‚ª5ƒrƒbƒg’·‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·jB + + +›ƒTƒEƒ“ƒh‚Ì‹L˜^‚ÆÄ¶ +~~~~~~~~~~~~~~~~~~~~~~ + MMTTYƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚Ì’²®‚ðs‚¤ê‡AŽóM‚µ‚½ƒTƒEƒ“ƒh‚ðƒtƒ@ƒCƒ‹‚É‹L˜^‚µ‚Ä‚¨‚«A‚»‚ê‚ðĶ‚µ‚ĉ½“x‚Å‚à“¯‚¶ƒ\[ƒX‚ðŽÀŒ±‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + ƒTƒEƒ“ƒh‚ð‹L˜^‚·‚éꇂÍAƒtƒ@ƒCƒ‹ƒƒjƒ…[‚ÌuŽóMƒTƒEƒ“ƒh‚ðƒtƒ@ƒCƒ‹‚É‹L˜^v‚ð‘I‘ð‚µ‚Ü‚·B‚Ü‚½‹L˜^‚µ‚½ƒtƒ@ƒCƒ‹‚ðĶ‚·‚éꇂ̓tƒ@ƒCƒ‹ƒƒjƒ…[‚ÌuŽóMƒTƒEƒ“ƒh‚ðƒtƒ@ƒCƒ‹‚©‚çĶv‚ð‘I‘ð‚µ‚Ü‚·B + + Žc”O‚È‚ª‚çAŒ»ó‚ÌMMTTY‚ÍWindows•W€‚ÌWAVEƒtƒ@ƒCƒ‹‚ł͂Ȃ­A“ÆŽ©‚̃tƒH[ƒ}ƒbƒg‚̃tƒ@ƒCƒ‹‚µ‚©ˆµ‚¦‚Ü‚¹‚ñB‚±‚̃tƒ@ƒCƒ‹‚͂ƂĂàƒTƒCƒY‚ª‘å‚«‚­‚È‚è‚Ü‚·‚̂ŃfƒBƒXƒN‚É‚ ‚é’ö“x‚Ì—]—T‚ª•K—v‚Å‚·B + +*‹L˜^’†‚ÍFFT•\ަ“à‚̶ã‚ÉuRec.v‚ð•\ަ‚µ‚Ü‚·B +*Ķ’†‚ÍFFT•\ަ“à‚̉Eã‚ÉuPlayv‚ð•\ަ‚µ‚Ü‚·B +*‹L˜^’†‚ɃfƒBƒXƒN‚ªˆê”t‚É‚È‚é‚ÆŽ©“®“I‚É‹L˜^‚ªI—¹‚µ‚Ü‚·B +*Ķ’†‚Ƀtƒ@ƒCƒ‹‚ªI—¹‚·‚邯ީ“®“I‚ÉĶ‚ÍI—¹‚µ‚Ü‚·B + + +›ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÉÝ’è‚·‚éƒpƒ‰ƒ[ƒ^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + MMTTY‚͈ȉº‚Ì‚R•ûŽ®‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^‚ð“‹Ú‚µ‚Ä‚¢‚Ü‚·B + + EIIRŒ^‹¤UŠí‚É‚æ‚éŽü”g”•Ù•ÊŠí•ûŽ® + EFIRŒ^BPF‚É‚æ‚éŽü”g”•Ù•ÊŠí•ûŽ® + EPLL•ûŽ® + +@‚¢‚¸‚ê‚Ì•ûŽ®‚ª—D‚ê‚Ä‚¢‚é‚©‚͂͂Á‚«‚è‚Æ‚Í”»‚è‚Ü‚¹‚ñ‚ªAIIRŒ^‹¤UŠí‚ðŽg‚Á‚½Žü”g”•Ù•ÊŠí•ûŽ®‚ª‚Ƃ肠‚¦‚¸–³“‚ÆŽv‚¢‚Ü‚·B + +@‚¢‚¸‚ê‚Ì•ûŽ®‚ðŽg—p‚·‚é‚©‚ÍAƒƒCƒ“‰æ–Ê‚ÌDemodulator˜g‚ÌuTypevƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚©AƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–ʂőI‘ð‚·‚éŽ–‚ª‚Å‚«‚Ü‚·BŒ»Ý‘I‘ð‚³‚ê‚Ä‚¢‚é•ûŽ®‚ªƒƒCƒ“‰æ–Ê‚ÉuDemodulator (IIR)v‚̂悤‚É•\ަ‚³‚ê‚Ü‚·B + +@ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚Ì\¬‚ÌÚׂÍuDigital.txtv‚ðŽQÆ‚µ‚ĉº‚³‚¢B + + + ƒƒCƒ“‰æ–Êã‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^‚ÉŠÖŒW‚·‚éƒpƒ‰ƒ[ƒ^‚͈ȉº‚Ì’Ê‚è‚Å‚·B + +Demodulator˜g“à + Type ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚Ì•ûŽ®‚ð‘I‘ð‚µ‚Ü‚·BiƒfƒtƒHƒ‹ƒg=IIRj + + Mark ƒ}[ƒNŽü”g”‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=2125j + Shift ƒVƒtƒg•‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=170j + Rev ƒ}[ƒN‚ƃXƒy[ƒX‚𔽓]‚µ‚ÄŽóMi‘—Mj‚µ‚Ü‚·(USB—p)B + ATC ATC‚ðON/OFF‚µ‚Ü‚·BiƒfƒtƒHƒ‹ƒg=OFFj + NET ‘—MŽü”g”‚ðŽóMŽü”g”‚ƈê’v‚³‚¹‚Ü‚·BiƒfƒtƒHƒ‹ƒg=ONj + AFC AFC‚ðON/OFF‚µ‚Ü‚·BiƒfƒtƒHƒ‹ƒg=ONj + BPF ‘O’uBPF‚ðON/OFF‚µ‚Ü‚·BiƒfƒtƒHƒ‹ƒg=OFFj + Notch ‘O’u“K‰žƒtƒBƒ‹ƒ^‚ðON/OFF‚µ‚Ü‚·B + LMS ‘O’uƒmƒbƒ`ƒtƒBƒ‹ƒ^‚ðON/OFF‚µ‚Ü‚·B + SQ ƒXƒPƒ‹ƒ`‚ðON/OFF‚µ‚Ü‚·B + ½×²ÄÞ SQ‚̃XƒŒƒbƒVƒ…ƒz[ƒ‹ƒhƒŒƒxƒ‹‚ðݒ肵‚Ü‚·B + HAM ƒ}[ƒNŽü”g”AƒVƒtƒgAƒfƒR[ƒhÝ’è‚ðHAM—p‚É‚µ‚Ü‚·B + +[ˆÈ‰º‚ÍŽü”g”•Ù•ÊŠí•ûŽ®‚Ìê‡] + BW IIR‹¤UŠí‚ÌBW‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=60j + Tap FIRŒ^BPF‚ÌŽŸ”‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=72j + AV. FIRŒ^Ï•ªŠí‚̃Xƒ€[ƒWƒ“ƒOŽü”g”‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=70j + LPF IIR-LPF‚̃JƒbƒgƒIƒtŽü”g”‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=40j + +[ˆÈ‰º‚ÍPLL•ûŽ®‚Ìê‡] + VCO VCOƒQƒCƒ“‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=3.0j + Loop LoopLPF‚̃JƒbƒgƒIƒtŽü”g”‚ðݒ肵‚Ü‚·BiƒfƒtƒHƒ‹ƒg=250j + + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–ʂłÍX‚Ɉȉº‚Ìݒ肪‚Å‚«‚Ü‚·B + + Žü”g”•Ù•ÊŠí‚Ì•ûŽ®‚Æ“®ìƒpƒ‰ƒ[ƒ^ + ƒŠƒ~ƒbƒ^ƒAƒ“ƒv‚̃QƒCƒ“‚ƈ—Žü”g” + Ï•ªŠí‚Ì•ûŽ®‚ƃXƒ€[ƒWƒ“ƒOŽü”g”AŽŸ” + ‘O’uƒtƒBƒ‹ƒ^‚Ì“®ìƒpƒ‰ƒ[ƒ^ + AFC‚Ì“®ìƒpƒ‰ƒ[ƒ^ + PLL‚Ì“®ìƒpƒ‰ƒ[ƒ^ + + +*ƒXƒy[ƒXŽü”g”‚̓}[ƒNŽü”g”‚ɃVƒtƒg•‚ð‰ÁŽZ‚µ‚½Žü”g”‚ɂȂè‚Ü‚·B +*ŽóM‹@‚Í’Êí‚ÍLSBƒ‚[ƒh‚ÅŽg—p‚µ‚Ü‚·B +*Žü”g”•ٕʊ킨‚æ‚ÑPLL‚Í‚Q”{‚̃I[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO‚Å“®ì‚µ‚Ä‚¢‚Ü‚·B]‚Á‚ăiƒCƒLƒXƒgŽü”g”‚Í11025/4=2756Hz‚ɂȂèAƒXƒy[ƒXŽü”g”‚Í‚±‚ê‚æ‚è­‚µ‰º‚ÌŽü”g”i2600Hz•t‹ßj‚ªŽÀ—pŒÀŠE‚Å‚·B +*IIRŒ^‹¤UŠí‚ÌBW‚Í‹¤U‰ñ˜H‚̑ш敂ð•\‚µA‚±‚ê‚𬂳‚­‚·‚邯Q‚ª‚‚­‚È‚è‚Ü‚·B‚ ‚Ü‚èQ‚ð‚‚­‚µ‰ß‚¬‚邯”­U‚µ‚Ü‚·BHi +*IIRŒ^‹¤UŠí‚¨‚æ‚ÑFIRŒ^BPF‚Ì“Á«‚ÍAƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÅAu“Á«Šm”Fvƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚Æ•\ަ‚³‚ê‚Ü‚·B +*NET‚ðOFF‚É‚·‚é‚ÆÝ’è‰æ–Ê‚ÌuHAM Defaultv‚Åݒ肵‚Ä‚¢‚éƒ}[ƒNŽü”g”‚ƃVƒtƒg•‚É‹­§“I‚ɃZƒbƒg‚µ‚Ä‘—M‚µ‚Ü‚·BNET‚ðON‚É‚·‚邯ŽóMƒ}[ƒNŽü”g”‚ƃVƒtƒg•‚ª‚»‚̂܂ܑ—M‚É“K—p‚³‚ê‚Ü‚·B + + + IIRŒ^‹¤UŠí‚ÌBW‚̓fƒtƒHƒ‹ƒg‚Ì60HziQ=36j‚łͭ‚µ‹·‚¢‚悤‚È‹C‚à‚µ‚Ü‚·‚Ì‚ÅAŽóMM†‚É‚æ‚Á‚Ä‚Í‚à‚¤­‚µL‚°‚ÄiQ‚ð’á‚­‚·‚éj‚Ý‚é‚Ì‚à—Ç‚¢‚©‚à’m‚ê‚Ü‚¹‚ñB + + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÅƒŠƒ~ƒbƒ^ƒAƒ“ƒv‚ÌuOverSamplingv‚ðON‚É‚·‚邯AƒŠƒ~ƒbƒ^ƒAƒ“ƒv‚Å‚ÌˆÊ‘Š˜c‚Ý‚ªŠÉ˜a‚³‚ê‚Ü‚·B‚±‚ê‚ɂ‚¢‚Ä‚ÍuDigital.txtv‚ðŽQÆ‚µ‚ĉº‚³‚¢B + + +›‚`‚e‚b‚ɂ‚¢‚Ä +~~~~~~~~~~~~~~~~ + Žü”g”•Ù•ÊŠí‚Ì‹¤UŠí/BPF“Á«‚ª‚©‚Ȃ苷‚¢‚Ì‚ÅA­‚µ‚Å‚àŽü”g”‚ª‚¸‚ê‚Ä‚¢‚邯Ž|‚­ƒfƒR[ƒh‚Å‚«‚È‚­‚È‚è‚Ü‚·B‚»‚±‚ÅŽ©“®“I‚ÉŽü”g”‚ð‡‚킹‚éAFC‹@”\‚ð•t‚¯‚Ă݂܂µ‚½B + + ‚±‚ÌAFC‚ÍFFT‚É‚æ‚蓾‚ç‚ꂽ“ü—ÍM†‚ÌŽü”g”ƒXƒyƒNƒgƒ‰ƒ€‚ð‰ðÍ‚µ‚ÄŒ»ó‚Ƃ̃YƒŒ‚Ì•â³‚ð‚µ‚Ü‚·‚Ì‚ÅA•\ަƒƒjƒ…[‚ÌuFFT•\ަv‚Ƀ`ƒFƒbƒN‚ª‚‚¢‚Ä‚¢‚È‚¢‚Æ“®ì‚µ‚Ü‚¹‚ñB + “®ì‚Æ‚µ‚Ä‚ÍA–ñ300ms–ˆ‚ɃXƒyƒNƒgƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚µA‚Q‚‚̃s[ƒN‚ð’T‚µ‚Ü‚·B“¾‚ç‚ꂽƒs[ƒN‚ÆŒ»Ý‚̃}[ƒNAƒXƒy[ƒXŽü”g”‚Ì·‚ðŒvŽZ‚µ‚ÄAœX‚ɕⳂµ‚Ä‚¢‚­ŽdŠ|‚¯‚Å‚·B + + ƒYƒŒ‚ð•Ⳃ·‚éÛAŽü”g”•Ù•ÊŠí‚Ì‹¤UŠí‚Ì’†SŽü”g”‚ÍAŒW”ŒvŽZƒ‹[ƒ`ƒ“‚ð‚»‚Ì“s“xŽÀs‚µ‚Ä•ÏX‚µ‚Ä‚¢‚Ü‚·BPLL•ûŽ®‚ÌꇂÍVCO‚̃tƒŠ[ƒ‰ƒ“ƒjƒ“ƒOŽü”g”‚ð•ÏX‚µ‚Ü‚·B + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÅÝ’è‚·‚é‚`‚e‚bŠÖŒW‚̃pƒ‰ƒ[ƒ^‚͈ȉº‚Ì’Ê‚è‚Å‚·B + +EShift ƒVƒtƒg•‚ð•ÏX‚·‚é•û–@‚ð‘I‘ð‚µ‚Ü‚·B +ETime ‚±‚Ì’l‚𬂳‚­‚·‚邯‰ž“š‚ª‘¬‚­‚È‚è‚Ü‚·B +ESQ ‚±‚Ì’l‚𬂳‚­‚·‚邯Žã‚¢M†‚Å‚à“­‚«‚Ü‚·B +ESweep ’²¸‚·‚éŽü”g””͈ÍiƒVƒtƒg•~Sweepj + + Shift‚Ì‘I‘ð‚É‚æ‚é“®ì‚Í‚»‚ꂼ‚êˆÈ‰º‚Ì’Ê‚è‚Å‚·B + + Free §ŒÀ‚È‚µ‚ɕω»‚µ‚Ü‚·B + Fixed Œ»Ý‚Ìó‘ԂŌŒ肳‚ê‚Ü‚·iŽ©“®‚ŕω»‚µ‚Ü‚¹‚ñjB + HAM 170/200/220/240Hz‚ðŽû‘©–Ú•W‚É‚µ‚Ü‚·B + FSK ’†SŽü”g”‚ð•ÏX‚¹‚¸‚ɃVƒtƒg•‚¾‚¯170/200/220/240Hz‚É + Žû‘©‚³‚¹‚Ü‚·B + + SQƒŒƒxƒ‹‚ð‚ ‚Ü‚è¬‚³‚­‚·‚邯A–³M†Žž‚Å‚àƒmƒCƒY‚Ō듮삵‚Ä‚µ‚Ü‚¢‚Ü‚·‚ªA‚±‚ÌꇎóM‹@‚̒ʉߓÁ«‚Ì’†‰›•t‹ß‚ÉŽû‘©‚·‚éŒXŒü‚ª‚ ‚è‚Ü‚·‚Ì‚ÅACWƒtƒBƒ‹ƒ^‚ð“ü‚ê‚Ä‚¢‚éꇂ͂ ‚Ü‚è–â‘è‚͂Ȃ¢‚©‚à’m‚ê‚Ü‚¹‚ñB + +*ƒ}[ƒNŽü”g”‚Í300HzˆÈãAƒXƒy[ƒXŽü”g”‚Í2700HzˆÈ‰º‚̧ŒÀ‚ª‚ ‚è‚Ü‚·B + + +›‘O’uƒtƒBƒ‹ƒ^‚ɂ‚¢‚Ä +~~~~~~~~~~~~~~~~~~~~~~ + ƒƒCƒ“‰æ–ʂ̃fƒ‚ƒWƒ…ƒŒ[ƒ^˜g“à‚ÌBPFƒ{ƒ^ƒ“‚¨‚æ‚ÑNotch/LMSƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚ÆA‰º}‚ÉŽ¦‚·‚悤‚Ƀfƒ‚ƒWƒ…ƒŒ[ƒ^“ü—Í•”‚É‚Q‚‚̃tƒBƒ‹ƒ^‚ð“ü‚ê‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + Sound ----> BPF ---> Notch/LMS ---> Limiter(Demodulator) + (ON/OFF) (ON/OFF) + + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–ʂŃfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÌÝ’èƒy[ƒW‚ðŠJ‚­‚ÆA‚±‚ê‚ç‚̃tƒBƒ‹ƒ^‚ÌÚׂÈݒ肪‚Å‚«‚Ü‚·B + + ‚¢‚¸‚ê‚̃tƒBƒ‹ƒ^‚àAŽü”g”•Ù•ÊŠí‚ÅŽg‚Á‚Ä‚¢‚éƒtƒBƒ‹ƒ^‚Ƃ͈قȂèAƒI[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO‚µ‚Ä‚¢‚Ü‚¹‚ñ‚Ì‚ÅA‚»‚±‚»‚±‚ÌŽŸ”‚ðݒ肵‚È‚¢‚Æ‹}s‚È“Á«‚Í“¾‚ç‚ê‚Ü‚¹‚ñiƒfƒtƒHƒ‹ƒg‚Í­‚µŠÃ–Ú‚Å‚·jB + + u“Á«Šm”Fvƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚ƃtƒBƒ‹ƒ^‚Ì“Á«‚ªŠm”F‚Å‚«‚Ü‚·B“K‰žƒtƒBƒ‹ƒ^iLMSj‚Ìꇂ͓ü—ÍM†‚ɑ΂µ‚ÄAƒtƒBƒ‹ƒ^‚ÌŽü”g”“Á«‚ª•ω»‚µ‚Ä‚¢‚­—lŽq‚àŠÏŽ@‚·‚鎖‚ª‚Å‚«‚Ü‚·B + +---- + ’Pƒ‚ÈFIRŒ^‚ÌBPF‚Å‚·BÝ’è‰æ–Ê‚ÌFW‚Ì’l‚ÆBPF‚̃JƒbƒgƒIƒtŽü”g”‚ÌŠÖŒW‚͈ȉº‚̂悤‚ɂȂè‚Ü‚·B + + ’áˆæƒJƒbƒgƒIƒt ƒ}[ƒNŽü”g” | FW + ‚ˆæƒJƒbƒgƒIƒt ƒXƒy[ƒXŽü”g” { FW + + ŽŸ”iTapj‚𬂳‚­‚µ‚Ä‚¢‚éê‡AFW‚ͬ‚³‚­‚Ä‚à\‚¢‚Ü‚¹‚ñ‚ªAŽŸ”‚ð‘å‚«‚­‚·‚邯ƒJƒbƒgƒIƒtŽü”g”•t‹ß‚ł̓Á«‚ª‹}s‚ɂȂè‚Ü‚·‚Ì‚ÅA‚»‚ê‚ÉŒ©‡‚Á‚½ƒ}[ƒWƒ“‚ð‚Æ‚Á‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·B + +---- + ’Pƒ‚ÈFIRŒ^‚ÌBEF‚Å‚·BÝ’è‰æ–Ê‚ÌLMSƒy[ƒW‚ÅuNotchv‚̃`ƒFƒbƒN‚ð•t‚¯‚邯ALMS‚Ì‘ã‚í‚è‚É‚±‚̃tƒBƒ‹ƒ^‚ÉØ‚è‘Ö‚í‚è‚Ü‚·B‚±‚̃tƒBƒ‹ƒ^‚Í“Á’è‚ÌŽü”g”‚ðŒ¸Š‚³‚¹‚Ü‚·‚Ì‚ÅA󋵂ɂæ‚èQRM‚ÉŒø‰Ê‚ð”­Šö‚·‚éꇂª‚ ‚è‚Ü‚·B + WaterFall‚Ü‚½‚ÍFFTƒXƒyƒNƒgƒ‰ƒ€•\ަ‚Ń}ƒEƒX‚̉Eƒ{ƒ^ƒ“‚ŃNƒŠƒbƒN‚·‚邯‚»‚ÌŽü”g”‚Ƀmƒbƒ`Žü”g”‚ðŒÅ’肳‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·Bƒ}[ƒN‚ƃXƒy[ƒX‚ÌŠÔ‚ðƒNƒŠƒbƒN‚·‚邯AFC‚ƘA“®‚µ‚Äí‚É’†S‚Ɉʒu‚·‚邿‚¤‚ɂȂè‚Ü‚·B + ‚±‚̃tƒBƒ‹ƒ^‚ÍŽŸ”‚ª¬‚³‚¢‚ÆA–Ú“IM†‚àŒ¸Š‚³‚¹‚Ä‚µ‚Ü‚¢‚Ü‚·‚Ì‚ÅA‚»‚±‚»‚±‚ÌŽŸ”‚ðÝ’è‚·‚é•K—v‚ª‚ ‚é‚©‚à’m‚ê‚Ü‚¹‚ñB + +---- + Leaky LMSiLeast Mean Squarej–@‚É‚æ‚é“K‰žƒtƒBƒ‹ƒ^‚Å‚·BÝ’è‰æ–Ê‚ÌLMSƒy[ƒW‚ÅuNotchv‚̃`ƒFƒbƒN‚ðŠO‚·‚ÆANotch‚Ì‘ã‚í‚è‚ÉLMS‚ÉØ‚è‘Ö‚í‚è‚Ü‚·B + +@‚±‚̃tƒBƒ‹ƒ^‚̓fƒtƒHƒ‹ƒg‚̃pƒ‰ƒ[ƒ^‚ł͋tŒø‰Ê‚ɂȂèŽg—p‚µ‚È‚¢‚Ù‚¤‚ª—Ç‚¢‚悤‚Å‚·BHi@@ÚׂÍuDigital.txtv‚ðŽQÆ‚µ‚ĉº‚³‚¢B + + +›‚`‚s‚b‚ɂ‚¢‚Ä +~~~~~~~~~~~~~~~~ + ‚Ù‚Æ‚ñ‚Ç‚ÌM†‚ÍAƒŠƒ~ƒbƒ^[ƒAƒ“ƒv‚É‚æ‚è“K؂ȃŒƒxƒ‹‚É’²®‚³‚ê‚Ü‚·‚ªAŽóMM†‚ÌŽ¿‚ɂɂæ‚Á‚Ă͔äŠrŠí‚É—^‚¦‚éM†‚ª“K؂ȃŒƒxƒ‹‚ɂȂç‚È‚¢ê‡‚ª‚ ‚è‚Ü‚·B“Á‚ɃGƒR[‚𔺂Á‚½M†‚Í‚±‚ÌŒXŒü‚ªŒ°’˜‚ÅA‚±‚ê‚ð‰ü‘P‚·‚邽‚ß‚ÉATCiAutomatic Threshold Controlj‚ð•t‰Á‚µ‚Ă݂܂µ‚½B + +@ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÅATC‚̃pƒ‰ƒ[ƒ^uTimev‚ðÝ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚ê‚Í‰ß‹Ž‚ÌM†‚ðŽQÆ‚·‚éŠúŠÔ‚ðˆÓ–¡‚µA‚±‚Ì’l‚ð‘å‚«‚­‚·‚邯AƒXƒŒƒbƒVƒ…ƒz[ƒ‹ƒhƒŒƒxƒ‹’²®‚̉ž“š‚ª’x‚­‚È‚èA¬‚³‚­‚·‚邯‘¬‚­‚È‚è‚Ü‚·B + + ƒfƒtƒHƒ‹ƒg‚ÌÝ’è‚ł̓GƒR[‚ɑ΂µ‚ÄŒø‰Ê‚𓾂邽‚߂ɉž“š‚𑂭ݒ肵‚Ä‚ ‚è‚Ü‚·B]‚Á‚ÄŽóMM†‚ÌŽ¿‚É‚æ‚Á‚Ă͋tŒø‰Ê‚ɂȂéꇂª‚èAƒGƒR[‚ª‚È‚¢ê‡‚ÍATC‚ðOFF‚É‚µ‚Ä‚¨‚¢‚½•û‚ª—Ç‚¢ê‡‚ª‘½‚¢‚ÆŽv‚¢‚Ü‚·B + + +›‘—M‚ÌÝ’è +~~~~~~~~~~~~ + ‘—M‚ɉe‹¿‚·‚éƒpƒ‰ƒ[ƒ^‚ªƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚Ìu‘—Mv‚̂Ƃ±‚ë‚É‚ ‚è‚Ü‚·B + +DIDDLE –³‘ÅŒ®Žž‚Ì‘—oƒR[ƒhB +TX UOS ŽóM‘¤‚ÌUOS‚ɑΉž‚µ‚½•ÛŒ¯‘—M‚ðs‚¤B +ƒ_ƒuƒ‹ƒVƒtƒg ƒVƒtƒgƒR[ƒh‚ð2‰ñ‘—M‚·‚éB +TX BPF ‘—MM†‚ÍBPFiFIRŒ^j‚ð’ʉ߂³‚¹‚éiIMD‰ü‘P—pjB +TX LPF ƒfƒWƒ^ƒ‹VCO“ü—Í‚ÍLPF‚ð’ʉ߂³‚¹‚éiIMD‰ü‘P—pjB +PTT PTT§Œäƒ|[ƒg‚Ì‘I‘ð‚Æ˜_—‚ð‘I‘ð‚µ‚Ü‚·B + +*PTT§Œä‚ÍCOM‰ñü‚ÌRTS‚Ü‚½‚ÍDTRi‚Ç‚¿‚ç‚Å‚à—Ç‚¢j‚ðŽg—p‚µ‚Ü‚·B‚±‚ê‚ÍSSTV‚âPSK31‚ȂǂŎg‚í‚ê‚Ä‚¢‚é‚̂Ɠ¯‚¶•û–@‚Å‚·‚Ì‚ÅA“¯‚¶ƒP[ƒuƒ‹‚ª‚»‚̂܂܎g—p‚Å‚«‚邯Žv‚¢‚Ü‚·B + + MMTTY‚̃TƒEƒ“ƒh‘—M‚͈ȉº‚̂悤‚ÈŒn“‚Åo—Í‚³‚ê‚Ü‚·B + + Coder ---> TX LPF ---> Digital VCO ---> TX BPF ---> Sound out + (ON/OFF) (ON/OFF) + + +*TX BPF‚ðON‚É‚·‚邯‘—MƒfƒWƒ^ƒ‹M†‚̑ш悪§ŒÀ‚³‚ê‚Ü‚·B‚½‚¾‚µƒTƒEƒ“ƒhƒJ[ƒhƒAƒiƒƒO•”‚âRig‘¤‚Ì“Á«‚É‚æ‚èAŠ®‘S‚ɂ͊ú‘Ò’Ê‚è‚ÌŒ‹‰Ê‚ɂȂç‚È‚¢ê‡‚à‚ ‚è‚Ü‚·B‚Ü‚½‚±‚̃tƒBƒ‹ƒ^‚̓I[ƒo[ƒTƒ“ƒvƒŠƒ“ƒO‚µ‚Ä‚¢‚È‚¢‚½‚߂ɂ»‚±‚»‚±‚ÌŽŸ”‚ðݒ肵‚È‚¢‚Æ“Á«‚͊­‚È‚è‚Ü‚·B + +*TX LPF‚ðON‚É‚·‚邯Žü”g”‚ªŠŠ‚ç‚©‚ɕΈڂµ‚Ü‚·BƒXƒyƒNƒgƒ‰ƒ€‚ÌW’†Œø‰Ê‚ÍuTX BPFv‚Æ“¯—l‚ÉŠú‘Ò‚Å‚«‚邯Žv‚¢‚Ü‚·B + +*ƒfƒWƒ^ƒ‹o—̓Œƒxƒ‹‚ÍMMTTY‚ªì¬‚·‚éƒTƒEƒ“ƒhM†iVCOo—Íj‚̑傫‚³‚Å‚·BƒXƒ‰ƒCƒh‚ðˆê”Ô‰E‚É‚·‚邯16bitƒtƒ‹ƒXƒCƒ“ƒO‚æ‚è‚à­‚µ‚¾‚¯¬‚³‚È’l‚Åo—Í‚µ‚Ü‚·BƒfƒtƒHƒ‹ƒg‚ł̓TƒEƒ“ƒhƒJ[ƒhƒAƒiƒƒO•”‚ł̘c‚Ý‚ª‹C‚ɂȂÁ‚½‚̂ŭ‚µ¬‚³–Ú‚Éݒ肵‚Ä‚ ‚è‚Ü‚·‚ªA‚ ‚܂謂³‚­‚µ‰ß‚¬‚邯M†‚ÌS/N‚ªˆ«‰»‚µ‚Ü‚·B + +*DisableWait‚ðON‚É‚·‚邯ADiddleWait‚Í–³Œø‚ɂȂèA•¶ŽšƒEƒGƒCƒg’†‚ÉDiddle‚ªo—Í‚³‚ê‚邿‚¤‚ɂȂè‚Ü‚·B + + +›ƒVƒ‡[ƒgƒJƒbƒgƒL[‚̃JƒXƒ^ƒ}ƒCƒY +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + MMTTY‚̓ƒCƒ“‰æ–Êã‚̂قڂ·‚ׂẴVƒ‡[ƒgƒJƒbƒgƒL[‚ɂ‚¢‚ăJƒXƒ^ƒ}ƒCƒY‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B•’i‚¨Žg‚¢‚ÌA‘¼‚Ì’ÊMƒ\ƒtƒg‚ƃVƒ‡[ƒgƒJƒbƒgƒL[‚ð‡‚킹‚Ä‚¨‚­‚ƕ֗˜‚©‚à’m‚ê‚Ü‚¹‚ñB +@ƒL[‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚é‚É‚ÍA•ÒWƒƒjƒ…[‚ÌuƒVƒ‡[ƒgƒJƒbƒgƒL[‚Ì’è‹`v‚ð‘I‘ð‚µ‚Ü‚·B + +@‚±‚̉æ–ʂŌ»Ý“o˜^‚³‚ê‚Ä‚¢‚éƒVƒ‡[ƒgƒJƒbƒgƒL[‚̈ꗗ•\‚ª•\ަ‚³‚ê‚Ü‚·‚Ì‚ÅAˆê——•\“à‚Ì‹@”\‚ð‘I‘ð‚µ‚Ä‚©‚çA‰º‚̃hƒƒbƒvƒŠƒXƒg‚ŃL[‚ðŠ„‚è“–‚Ă܂·B +@ƒVƒ‡[ƒgƒJƒbƒgƒL[‚ªd•¡‚³‚ê‚ÄŠ„‚è“–‚Ă炽ê‡Aˆê——•\‚ɂ͂»‚̃L[‚ðÔF‚Å•\ަ‚µ‚Ü‚·B‚Ü‚½ud•¡ƒ`ƒFƒbƒNvƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Äd•¡‚µ‚Ä‚¢‚È‚¢‚©‚Ç‚¤‚©‚𒲸‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + +@d•¡‚µ‚ăL[‚ªŠ„‚è“–‚Ä‚ç‚ꂽê‡Aˆê——•\‚Ìã‚É‚ ‚é‹@”\‚̂ق¤‚ªŠT‚Ë—D悳‚ê‚ÄŽÀs‚³‚ê‚Ü‚·‚ªA•K‚¸‚µ‚à‡”Ô’Ê‚è‚ɂ͂Ȃç‚È‚¢ê‡‚à‚ ‚è‚Ü‚·B + + +›ƒVƒtƒg•‚Ì•ÏX‘€ì +~~~~~~~~~~~~~~~~~~~~ +@ƒƒCƒ“‰æ–Ê‚ÌShift‚̃hƒƒbƒvƒŠƒXƒg‚ð‘I‘ð‚µ‚Ä‚àOK‚Å‚·‚ªAˆÈ‰º‚̃L[‘€ì‚É‚æ‚Á‚Ä‚àƒVƒtƒg•‚ð•ÏX‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B +@ƒfƒtƒHƒ‹ƒg‚ł͈ȉº‚̃L[‚ªŠ„‚è“–‚Ä‚ç‚ê‚Ä‚¢‚Ü‚·B + + ƒVƒtƒg•‚ðL‚°‚é Alt+¨ + ƒVƒtƒg•‚ð‹·‚ß‚é Alt+© + ƒVƒtƒg•‚ðƒgƒOƒ‹‚·‚é Alt+T + +@ƒVƒtƒg•‚̃gƒOƒ‹‚Í170Hz‚Æ200Hz‚őւí‚èƒxƒ“ƒ^ƒ“‚É“ü‚ê‘Ö‚í‚èA‚±‚Ì‘€ì‚̓ƒCƒ“‰æ–Ê‚Ì'Shift'‚Ì•¶Žš‚ðƒ}ƒEƒX‚ŃNƒŠƒbƒN‚µ‚Ä‘€ì‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + + ‚Ü‚½ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÌAFCƒy[ƒW‚ŃVƒtƒg•ÏXƒAƒ‹ƒSƒŠƒYƒ€‚ÉuHAMv‚ð‘I‘ð‚µ‚Ä‚¢‚éê‡AuAFCv‚ðON‚É‚·‚邯ŽóMM†‚É‚æ‚èƒVƒtƒg•‚Í170/200/220/240Hz‚Ì‚¢‚¸‚ê‚©‚ÉŽ©“®“I‚ÉŽû‘©‚³‚ê‚Ü‚·B + +@FSKƒ‚[ƒh‚ʼn^—p‚µ‚Ä‚¢‚éê‡AAFC‚ÌShiftƒAƒ‹ƒSƒŠƒYƒ€‚ÍuFSKv‚ð‘I‘ð‚³‚ê‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B‚±‚Ìê‡AMMTTY‚ÍAFC‚ÌON/OFF‚ÉŠÖŒW‚È‚­’†SŽü”g”‚ð•ÏX‚¹‚¸‚ɃVƒtƒg•‚ð•ÏX‚·‚邿‚¤‚ɂȂè‚Ü‚·iƒ}[ƒNŽü”g”‚àŽ©“®’²®‚·‚éjB +@‚Ü‚½‚±‚Ìó‘Ô‚ÅAFC‚ðON‚É‚µ‚½ê‡AŽóMM†‚É‚æ‚èAƒVƒtƒg•‚ð170/200/220/240Hz‚Ì‚¢‚¸‚ê‚©‚ÉŽ©“®“I‚ÉŽû‘©‚³‚¹‚Ü‚·‚ªA’†SŽü”g”‚Íí‚É“¯‚¶Žü”g”‚ðˆÛŽ‚µ‚½‚܂܂ł·B + + +›ƒvƒƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä +~~~~~~~~~~~~~~~~~~~~~~ +@MMTTY‚̓fƒ‚ƒWƒ…ƒŒ[ƒ^Eƒ‚ƒWƒ…ƒŒ[ƒ^EƒfƒR[ƒ_EƒGƒ“ƒR[ƒ_‚É‘½‚­‚̃pƒ‰ƒ[ƒ^‚ðŽ‚¿‚Ü‚·B—Ⴆ‚΃fƒtƒHƒ‹ƒg‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^ƒpƒ‰ƒ[ƒ^‚Í•½‹Ï“I‚ÈM†‚ł̖³“ï‚È’l‚ª‘I‘ð‚³‚ê‚Ä‚¢‚é‚ɉ߂¬‚Ü‚¹‚ñB‚à‚¤Šù‚É‚ ‚È‚½‚ÍŽóM‚·‚éM†‚ÌŽ¿i—Ⴆ‚΃}ƒ‹ƒ`ƒpƒX‚âƒ|[ƒ‰[ƒtƒ‰ƒbƒ^“™j‚É‚æ‚Á‚ÄA‚±‚ê‚çƒpƒ‰ƒ[ƒ^‚ð“K“–‚É•ÏX‚µ‚ÄŽg‚Á‚Ä‚¢‚é‚Í‚¸‚Å‚·B‚Ü‚½•W€‚Ƃ͈قȂéƒVƒtƒgAƒ{[ƒŒ[ƒg‚Ȃǂð•p”ɂɨ‚è‘Ö‚¦‚ÄŽg‚¢‚½‚¢‚©‚à’m‚ê‚Ü‚¹‚ñB + +@ƒvƒƒtƒ@ƒCƒ‹ƒƒjƒ…[‚ðŽg‚¤‚ÆA‚WŒÂ‚̈قȂ郃jƒ…[ƒXƒƒbƒg‚ÉA‚ ‚È‚½‚ª—Ç‚­Žg‚¤ƒpƒ‰ƒ[ƒ^‚ðˆêЇ‚µ‚Ä–¼‘O‚ð•t‚¯‚Ä“o˜^‚Å‚«A‚Ü‚½‚»‚ê‚ðD‚«‚ȂƂ«‚ɌĂÑo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚Ü‚½”CˆÓ‚̃tƒ@ƒCƒ‹–¼‚ðŽw’肵‚ăpƒ‰ƒ[ƒ^‚̃tƒ@ƒCƒ‹‚ւ̃Z[ƒu‚ƃ[ƒh‚à‚Å‚«‚Ü‚·B + +@ƒvƒƒtƒ@ƒCƒ‹‹@”\‚ðŽg‚¤ê‡AÅ‚àd—v‚È“_‚ÍA‚Ü‚¸Œ»ó‚Ì‚ ‚È‚½‚ª‹C‚É“ü‚Á‚Ä‚¢‚é•W€‚̃pƒ‰ƒ[ƒ^‚ðuMyDefaultv‚̂悤‚È–¼‘O‚Å“o˜^‚µ‚Ä‚¨‚­‚±‚Ƃł·B‚±‚¤‚µ‚Ä‚¨‚¯‚ÎAƒpƒ‰ƒ[ƒ^‚Ì‘g‚݇‚킹‚ª”»‚ç‚È‚­‚È‚Á‚½ê‡‚Å‚àA‚»‚Ìó‘Ô‚É•œ‹A‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + +@‚Ü‚½MMTTY‚Í•ÏXi“o˜^j‚Å‚«‚È‚¢ŽŸ‚Ì‚Q‚‚̃vƒƒtƒ@ƒCƒ‹‚ðŽ‚¿‚Ü‚·BuMMTTY Defaultv‚ÍA‚ ‚È‚½‚ªˆê”Ôʼn‚ÉMMTTY‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚½Žž‚ÌMMTTY‚̃fƒtƒHƒ‹ƒg‚̃pƒ‰ƒ[ƒ^‚É–ß‚µ‚Ü‚·BuRerurn to the startupv‚Í¡‰ñMMTTY‚ð‹N“®‚µ‚½Žži‘O‰ñMMTTY‚ðI—¹‚µ‚½Žžj‚̃pƒ‰ƒ[ƒ^‚É–ß‚µ‚Ü‚·B + +*ƒvƒƒtƒ@ƒCƒ‹‚Å‹L‰¯‚Å‚«‚éƒpƒ‰ƒ[ƒ^‚̓fƒ‚ƒWƒ…ƒŒ[ƒ^Eƒ‚ƒWƒ…ƒŒ[ƒ^EƒfƒR[ƒ_EƒGƒ“ƒR[ƒ_‚Ì•”•ª‚ÉŒÀ‚ç‚ê‚Ü‚·B—Ⴆ‚ÎPTT‚âFSKÝ’è‚Ȃǂ͋L‰¯‚³‚ê‚Ü‚¹‚ñB +*ƒvƒƒtƒ@ƒCƒ‹‚ÍuUserPara.inivƒtƒ@ƒCƒ‹‚É‹L‰¯‚³‚ê‚Ü‚·B + + +›‘¼‚̃vƒƒOƒ‰ƒ€‚ÌŽÀs +~~~~~~~~~~~~~~~~~~~~~~ +@‘¼‚̃TƒEƒ“ƒhƒJ[ƒh‚âComƒ|[ƒg‚ð—˜—pƒvƒƒOƒ‰ƒ€‚ðˆêŽž“I‚É“®ì‚³‚¹‚邽‚ß‚ÉAƒvƒƒOƒ‰ƒ€ƒƒjƒ…[‚ðŽg‚Á‚ÄMMTTY‚ðƒTƒXƒyƒ“ƒhó‘Ô‚É‚·‚鎖‚ª‚Å‚«‚Ü‚·B + +@ƒvƒƒOƒ‰ƒ€ƒƒjƒ…[‚Ìã‚©‚ç‚S‚‚̃ƒjƒ…[‚ÉAPSK31‚âHellschreiber‚Ȃǂ̕’i‚¨Žg‚¢‚̃vƒƒOƒ‰ƒ€‚ð“o˜^‚µ‚Ä‚¨‚­‚Æ—Ç‚¢‚Å‚µ‚傤B + +*ƒfƒtƒHƒ‹ƒg‚Å‚Íã‚©‚ç‚Q‚‚̃ƒjƒ…[‚ÉuG3PLX PSK31SBWv‚ÆuIZ8BLY Hellschreiberv‚Ì–¼‘O‚¾‚¯‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B‚±‚̃ƒjƒ…[‚ðŽÀÛ‚É“®ì‚³‚¹‚é‚É‚ÍAƒvƒƒOƒ‰ƒ€ƒƒjƒ…[‚Ìu“o˜^v‚ð‘I‘ð‚µAŽÀs‚³‚¹‚éƒvƒƒOƒ‰ƒ€(EXEƒtƒ@ƒCƒ‹)‚ð‘I‘ð‚µ‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·B + +@‚±‚ê‚ç‚̃ƒjƒ…[‚ð‘I‘ð‚·‚é‚ÆAMMTTY‚ÍCom‰ñü‚ƃTƒEƒ“ƒhƒJ[ƒh‚ÌƒŠƒ\[ƒX‚ð•úŠü‚µŽ©g‚ðŬ‰»ó‘Ô‚É‚µ‚½ŒãA“o˜^‚³‚ê‚Ä‚¢‚éƒvƒƒOƒ‰ƒ€‚ðŽÀs‚µ‚Ü‚·B +@MMTTY‚𕜋A‚³‚¹‚é‚É‚ÍA‚»‚̃vƒƒOƒ‰ƒ€‚ðI—¹‚µ‚½ŒãAWindowsƒ^ƒXƒNƒo[‚ÌuMmttyvƒAƒCƒRƒ“‚ðƒNƒŠƒbƒN‚µ‚ÄŬ‰»‚ð‰ðœ‚µ‚Ü‚·B + +@ƒƒjƒ…[‚É“o˜^‚µ‚Ä‚¢‚È‚¢ƒvƒƒOƒ‰ƒ€‚ðŽÀs‚³‚¹‚½‚¢ê‡‚ÍuƒTƒXƒyƒ“ƒhv‚ð‘I‘ð‚·‚é‚Æ—Ç‚¢‚Å‚µ‚傤BMMTTY‚ÍCom‰ñü‚ƃTƒEƒ“ƒhƒJ[ƒh‚ÌƒŠƒ\[ƒX‚ð•úŠü‚µAŽ©g‚ðŬ‰»ó‘Ô‚É‚µ‚Ü‚·B + +@‘¼‚̃TƒEƒ“ƒhƒJ[ƒh‚âCom‰ñü‚ð—˜—p‚·‚éƒvƒƒOƒ‰ƒ€‚ª“®ì’†‚ÉAMMTTY‚ÌŬ‰»‚ð‰ðœ‚·‚邯AMMTTY‚ŃTƒEƒ“ƒhƒJ[ƒh‚¨‚æ‚ÑCom‰ñü‚̃I[ƒvƒ“ƒGƒ‰[ƒƒbƒZ[ƒW‚ª•\ަ‚³‚ê‚Ü‚·B +@‚±‚Ìê‡AMMTTY‚ÍŽ©“®‚ÅŽ©g‚ðÄ“xŬ‰»‚µ‚Ü‚¹‚ñBMMTTY‚𕜋A‚³‚¹‚é‚É‚ÍA‘¼‚̃vƒƒOƒ‰ƒ€‚ðI—¹‚µ‚½ŒãAMMTTY‚ðŽè“®‚ňê’UŬ‰»‚³‚¹‚é‚©A‚Ü‚½‚̓vƒƒOƒ‰ƒ€ƒƒjƒ…[“à‚ÌuƒTƒXƒyƒ“ƒh‚̉ðœv‚ð‘I‘ð‚·‚é‚Æ—Ç‚¢‚Å‚µ‚傤B + + +›TNC–Í‹[ƒ‚[ƒh +~~~~~~~~~~~~~~ + MMTTY‚ÍTNC‚Ì–Í‹[ƒ‚[ƒh‚ðŽ‚¿‚Ü‚·BƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌuTNC‹[Ž—ƒ‚[ƒhv‚ð‘I‘ð‚·‚é‚ÆComƒ|[ƒg‚̃pƒ‰ƒ[ƒ^‚ðÝ’è‚·‚郃jƒ…[‚ª•\ަ‚³‚ê‚Ü‚·‚Ì‚ÅA‚±‚±‚ÅComƒ|[ƒg‚ð—LŒø‚ȃ|[ƒg–¼‚ÉÝ’è‚·‚邯‚±‚Ì‹@”\‚ªƒAƒNƒeƒBƒu‚ɂȂè‚Ü‚·B + + ‚±‚Ì‹@”\‚ðŽg‚¤‚Æ‘¼‚̃pƒ\ƒRƒ“ã‚Å“®ì‚·‚éTNC—p‚Ƀ`ƒ…[ƒjƒ“ƒO‚³‚ꂽƒ^[ƒ~ƒiƒ‹ƒvƒƒOƒ‰ƒ€‚Ü‚½‚̓ƒMƒ“ƒOƒvƒƒOƒ‰ƒ€‚ð—˜—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚Ìó‘Ô‚Å‚ÍMMTTY‚ÍTNC‚Ƃ܂Á‚½‚­“¯‚¶‚ɂȂè‚Ü‚·B + + ƒpƒ\ƒRƒ“ŠÔ‚ÌÚ‘±‚͗Ⴆ‚Έȉº‚̂悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + + PC1(‘¼‚Ì’ÊMƒ\ƒtƒg) PC2(MMTTY) + Com1 -------------- Com1 + ƒNƒƒXƒP[ƒuƒ‹ Com2 ----- Rig PTT and FSK + +@iCom1‚âCom2‚̉ñü”Ô†‚Í”CˆÓ‚Å‚·j + + d—v‚Ȃ̂ÍPC“¯Žm‚ÌÚ‘±‚ɂ͕K‚¸ƒNƒƒXƒP[ƒuƒ‹‚ðŽg—p‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢“_‚Å‚·BƒXƒgƒŒ[ƒgƒP[ƒuƒ‹‚ðŽg‚¤ê‡‚̓NƒƒX•ÏŠ·ƒAƒ_ƒvƒ^‚ð—˜—p‚³‚ê‚邯—Ç‚¢‚Å‚µ‚傤B + +@–Í‹[‚·‚éTNC‚ÌŽí—Þ‚Æ‚µ‚ÄTNC241iTNC231j‚ÆKAM‚ª‚ ‚è‚Ü‚·B‚¨Žg‚¢‚̃\ƒtƒgƒEƒGƒA‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚éTNC‚Æ“¯‚¶Ží—Þ‚ð‘I‘ð‚³‚ê‚邯—Ç‚¢‚Å‚µ‚傤B‚à‚¿‚ë‚ñƒ{[ƒŒ[ƒg‚Ȃǂ̉ñüƒpƒ‰ƒ[ƒ^‚Í‘ŠŒÝ‚Å“¯‚¶‚É‚µ‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + + +›Radio Command +~~~~~~~~~~~~~~~ +@MMTTY‚ÍDTR/RTS§Œä‚É‚æ‚éPTTˆÈŠO‚ÉARadio Command‚É‚æ‚èPTT‚ðØ‚è‘Ö‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚¨Žg‚¢‚ÌRig‚É‚æ‚肱‚̃Rƒ}ƒ“ƒh‚͈قȂè‚Ü‚·‚ªA‘—o‚·‚éƒRƒ}ƒ“ƒh‚ƃfƒBƒŒƒC‚ðŽ©—R‚É’è‹`‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·‚Ì‚ÅARadio Command‚ªŽg—p‚Å‚«‚é‚Ù‚Ú‘S‚Ä‚ÌRig‚Å—˜—p‚·‚邱‚Æ‚ª‚Å‚«‚邯Žv‚¢‚Ü‚·B + +@Radio Command‚ÅŽg—p‚·‚éƒ|[ƒg‚ÍA’Êí‚ÌDTR/RTS§Œä‚ÌPTTƒ|[ƒg‚Ƃ͂܂Á‚½‚­“Æ—§‚µ‚Ä‘¶Ý‚µ‚Ü‚·B]‚Á‚ÄFSK‰^—p‚Æ•À—§‚³‚¹‚邱‚Æ‚à‰Â”\‚Å‚·B + + RadioCommand‚ðŽg‚¤ê‡AƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ðŠJ‚«A‘—MÝ’è‚ÅuRadio commandvƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ü‚·B‚±‚̉æ–ʂŃ|[ƒg–¼‚ðÝ’è‚·‚邯A‚»‚̃|[ƒg‚ªRadio Commandƒ|[ƒg‚Æ‚µ‚Ä“­‚­‚悤‚ɂȂè‚Ü‚·B + +@’è‹`‚Å‚«‚éƒCƒxƒ“ƒg‚͈ȉº‚Ì’Ê‚è‚Å‚·B + Init ‰ñü‚ð‰Šú‰»‚µ‚½’¼Œã‚É‘—M‚³‚ê‚Ü‚·B + Rx ŽóM‚ÉØ‚è‘Ö‚¦‚鎞‚É‘—M‚³‚ê‚Ü‚·B + Tx ‘—M‚ÉØ‚è‘Ö‚¦‚鎞‚É‘—M‚³‚ê‚Ü‚·B + +@‚±‚ê‚ç‚̃Cƒxƒ“ƒg‚É‚ÍAƒfƒtƒHƒ‹ƒg‚ÅYAESU‚ÌFT-1000MP‚̃Rƒ}ƒ“ƒh‚ª’è‹`‚µ‚Ä‚ ‚è‚Ü‚·‚ªAˆÈ‰º‚̃L[ƒ[ƒh‚ðŽg‚Á‚ăRƒ}ƒ“ƒh‚ðŽ©—R‚É•ÏX‚Å‚«‚Ü‚·B + + \$##... ##=00-FF, ‘—M‚·‚é•¡”ƒoƒCƒg‚ð16i”‚Å’è‹`‚·‚é + (—á:\$FE55AA -> FEh,55h,AAh) + \x## ##=00-FF, ‘—M‚·‚é‚PƒoƒCƒg‚ð16i”‚Å’è‹`‚·‚é + (—á:\xFE\x55\xAA -> FEh, 55h, AAh) + \w## ##=00-99, ƒfƒBƒŒƒCŽžŠÔ‚ð10ms’PˆÊ‚Ì10i”‚Å’è‹`‚·‚é + (—á:\w05 -> wait 50ms) + \r ƒLƒƒƒŠƒbƒWƒŠƒ^[ƒ“‚ð‘—M‚·‚é + \n ƒ‰ƒCƒ“ƒtƒB[ƒh‚ð‘—M‚·‚é + \c.... ˆÈ~‚Í‚·‚ׂăRƒƒ“ƒg + \\ '\'•¶Žš‚ð‘—M‚·‚é + ‚»‚Ì‘¼ ‚»‚Ì•¶Žš—ñ‚ð‘—M‚·‚é + + 16i”‚Ì‘ã‚í‚è‚Éxx‚ð‹Lq‚·‚邯A‚»‚Ì•”•ª‚Íxx“ü—̓{ƒbƒNƒX‚Å’è‹`‚µ‚½16i”‚É’u‚«Š·‚í‚è‚Ü‚·B‚±‚̕ϊ·‚ÍICOM‚Ì‹@ŽíƒAƒhƒŒƒX‚ðŽw’è‚·‚éꇂɕ֗˜‚©‚à’m‚ê‚Ü‚¹‚ñB + \$FEFExxE01C0001FD ixx‚Ì•”•ª‚ª’è‹`“à—e‚É’u‚«Š·‚í‚éj + +@“Á’è‚̃Cƒxƒ“ƒg‚ŃRƒ}ƒ“ƒh‚ð‘—o‚µ‚½‚­‚È‚¢ê‡A‚»‚±‚ɂ͉½‚àƒRƒ}ƒ“ƒh‚ð’è‹`‚µ‚È‚¢‚ʼnº‚³‚¢B + ŠeƒCƒxƒ“ƒg‚Ì’è‹`ƒRƒ}ƒ“ƒh‚ÍuSavevƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚ătƒ@ƒCƒ‹‚ɕۑ¶‚Å‚«‚Ü‚·B‚Ü‚½uLoadvƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚ĕۑ¶‚µ‚½ƒtƒ@ƒCƒ‹‚©‚ç“ǂݞ‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚·B + +* AFSK‚ÅPTT§Œä‚ÉRadioCommand‚ðŽg‚¤ê‡A’Êí‚ÌPTTƒ|[ƒgiDTR/RTS§Œäƒ|[ƒgj‚É‚ÍNONE‚ðŽw’肵‚ĉº‚³‚¢i’Êí‚ÌPTTƒ|[ƒg‚ÍŽg—p‚·‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñjB + +* FSK‚ÅPTT§Œä‚ÉRadioCommand‚ðŽg‚¤ê‡A’Êí‚ÌPTTƒ|[ƒg‚ÌTxd‚ÉFSKƒf[ƒ^‚ªo—Í‚³‚ê‚Ü‚·B‚µ‚½‚ª‚Á‚Ä‚±‚Ìê‡AFSK‚ÆRadioCommand‚Å‚Q‰ñü‚ª•K—v‚ɂȂè‚Ü‚·B + +* ƒfƒBƒŒƒCŽžŠÔ‚ÍTx’è‹`‚̈ê”ÔÅŒã‚É’è‹`‚µ‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Í\w10(100ms)‚ɂȂÁ‚Ä‚¢‚Ü‚·BMMTTY‚Í‚±‚̃fƒBƒŒƒCˆÈŠO‚É‚àAí‚É‘—MØ‚è‘Ö‚¦Žž‚ɋ͂©‚ȃfƒBƒŒƒCŽžŠÔ‚ðŠm•Û‚µ‚Ü‚·‚Ì‚ÅARig‚É‚æ‚Á‚Ă͂±‚ÌTx’è‹`‚ł̃fƒBƒŒƒC‚Í•s—v‚©‚à’m‚ê‚Ü‚¹‚ñB + + uVFO pollingv‚ðÝ’è‚·‚邯ARadioCommandŒo—R‚ÅRig‚ÌŽü”g”‚ðŽæ‚è‚±‚ÝAƒƒO‚̃oƒ“ƒhî•ñ‚ðŽ©“®“I‚ÉXV‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BŒ»ó‚ł͂·‚ׂĂÌRig‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚é‚킯‚ł͂ ‚è‚Ü‚¹‚ñ‚ªA–¢ƒTƒ|[ƒg‚Ì‚à‚ɂɊւµ‚Ăͫ—ˆƒRƒ}ƒ“ƒh‚ª”»–¾‚µ‚½Žž“_‚ŒljÁ‚µ‚½‚¢‚ÆŽv‚¢‚Ü‚·B + uFreq offsetv‚ƃƒO‚ÉÝ’è‚·‚éŽü”g”‚ÌŠÖŒW‚͈ȉº‚Ì’Ê‚è‚Å‚·B + + OFF freq = VFO + LSB freq = VFO - MarkFreq + USB freq = VFO + MarkFreq + + ICOM‚¨‚æ‚ÑTenTec Omni-VI‚Ìê‡AuScan addr.v‚̃`ƒFƒbƒN‚ð•t‚¯‚邯ީ“®“I‚ÉRig‚̃AƒhƒŒƒX‚ð’T‚µ‚Ü‚·Bƒ}ƒ‹ƒ`ƒhƒƒbƒv‚Å‘½”‚ÌRig‚ðÚ‘±‚ð‚µ‚Ä‚¢‚éê‡Aʼn‚ÉŒ©‚‚¯‚½Rig‚̃AƒhƒŒƒX‚Å’âŽ~‚µ‚Ü‚·B + + +›Žž‚̕Ⳡ+~~~~~~~~~~~~ +@MMTTY‚ÍWindows‚©‚çUTCŽž‚ð“ǂݎæ‚è‚Ü‚·B‚±‚ÌŽž‚Í‚ ‚È‚½‚̃pƒ\ƒRƒ“‚Ì’nˆæî•ñA‹Gß’²®Aƒ^ƒCƒ€ƒ][ƒ“‚È‚ÇÝ’è󋵂̉e‹¿‚ðŽó‚¯‚éꇂª‚ ‚è‚Ü‚·B—Ⴆ‚΂ ‚È‚½‚ªƒ[ƒJƒ‹Žž‚ÉUTCŽž‚ðݒ肵‚Ä‚¢‚éꇂȂǂł·B +@‚à‚µŽž‚ª‚¸‚ê‚éê‡AƒƒOÝ’è‰æ–Ê‚Ìu‚»‚Ì‘¼vƒy[ƒW‚ÌuTime offsetv‚ð’²®‚µ‚ĉº‚³‚¢BMMTTY‚Í‚·‚ׂĂ̎ž‚É‚±‚ÌTime offset‚ð“K—p‚µ‚Ü‚·B + + +›ˆ—‚ÌŒyŒ¸‰» +~~~~~~~~~~~~~~ +@MMTTY‚ÍŠeŽí‚ÌÝ’è‚ðƒ†[ƒU‚Ɉς˂Ă¢‚Ü‚·‚ªACPU‚Ö‚Ì•‰’S‚ðŒyŒ¸‚·‚é–Ú“I‚©‚ç‚͈ȉº‚Ìݒ肪—LŒø‚Å‚·i‰º‹LˆÈŠO‚Í‚ ‚܂舗‘¬“x‚ɂ͉e‹¿‚µ‚Ü‚¹‚ñjB + +uÅ‚àŒ€“I‚ÈŒyŒ¸‰»v +@ƒTƒEƒ“ƒhƒJ[ƒh‚̃x[ƒXƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚É6000Hz‚ð‘I‚т܂·BÚׂÍuDigtal.txtv‚ðŽQÆ‚µ‚ĉº‚³‚¢B + +uŽóMŽž‚̈—ŒyŒ¸‰»v + EÏ•ªŠí‚ÍIIR-LPFƒtƒBƒ‹ƒ^‚ð‘I‘ð‚·‚é + EXYScope‚̈—•iŽ¿‚ðLower‚É‚·‚éiƒfƒtƒHƒ‹ƒg’Ê‚èj + EXYSCope‚ðON‚É‚µ‚È‚¢iƒfƒtƒHƒ‹ƒg’Ê‚èj + Eƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÍIIRŒ^‹¤UŠí‚ð‘I‘ð‚·‚éiƒfƒtƒHƒ‹ƒg’Ê‚èj + EƒŠƒ~ƒbƒ^[‚ÌuOverSamplingv‚ÍON‚É‚µ‚È‚¢iƒfƒtƒHƒ‹ƒg’Ê‚èj + EBPF‚âLMS‚ÍON‚É‚µ‚È‚¢iƒfƒtƒHƒ‹ƒg’Ê‚èj + + +u‘—MŽž‚̈—ŒyŒ¸‰»v + ELocalEcho‚ðON‚É‚·‚é + ETxBPF‚ðOFF‚É‚·‚é + ETxLPF‚ðON‚É‚µ‚È‚¢iƒfƒtƒHƒ‹ƒg’Ê‚èj + + +›ƒTƒEƒ“ƒhƒJ[ƒhƒIƒvƒVƒ‡ƒ“ +~~~~~~~~~~~~~~~~~~~~~~~~~~ +@ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–ʂɃTƒEƒ“ƒhƒJ[ƒhˆ—‚ÉŠÖ‚·‚éݒ耖ڂª‚ ‚è‚Ü‚·B + +uFIFOv +@‚±‚Ì’l‚ð‘å‚«‚­‚·‚邯ˆ—ƒ}[ƒWƒ“‚ª‘‚¦‚Ü‚·BMMTTY‚Æ“¯Žž‚ɕʂ̃vƒƒOƒ‰ƒ€‚ðŽÀs‚·‚éꇂÍA‘å‚«‚ß‚Éݒ肵‚½‚Ù‚¤‚ª—Ç‚¢‚Å‚µ‚傤B + + +uPriorityv +@ƒfƒtƒHƒ‹ƒg‚ł̓TƒEƒ“ƒhˆ—‚É”äŠr“I‚‚¢—D懈ʂð—^‚¦‚Ä‚¢‚Ü‚·‚ªAƒƒCƒ“‰æ–Êã‚Ì‘€ì‰ž“š‚ª’x‚©‚Á‚½‚蔽‰ž‚µ‚È‚¢ê‡‚ª‚ ‚鎞‚É‚ÍA‚±‚ÌPriority‚ð‰º‚°‚Ă݂ĉº‚³‚¢B‚Ü‚½‹t‚É‘—MŽž‚̉¹‚ª“rØ‚ê‚éꇂɂÍAPriority‚ðã‚°‚Ă݂ĉº‚³‚¢BiPentium100MHz‚Å‚àAHigher‚®‚ç‚¢‚Ü‚Å—Ž‚Æ‚µ‚Ä‚à‘åä•v‚̂悤‚Å‚·j + +Normal ƒTƒEƒ“ƒhˆ—‚Í’Êí‚Ì—Dæ“x +Higher ƒTƒEƒ“ƒhˆ—‚Ì—Dæ“x‚Í’Êí‚æ‚è‚à 1 ƒ|ƒCƒ“ƒg‚‚¢ +Highest ƒTƒEƒ“ƒhˆ—‚Ì—Dæ“x‚Í’Êí‚æ‚è‚à 2 ƒ|ƒCƒ“ƒg‚‚¢ +Critical ƒTƒEƒ“ƒhˆ—‚Í‚à‚Á‚Æ‚à‚‚¢—Dæ“x + + +uDevice IDv +@ƒfƒtƒHƒ‹ƒg‚Å‚ÍAMMTTY‚Í‹N“®Žž‚ÉŽg—p‰Â”\‚ȃTƒEƒ“ƒhƒJ[ƒh‚ð’T‚µ‚Ü‚·B‚à‚µ‚ ‚È‚½‚ª•¡”‚̃TƒEƒ“ƒhƒJ[ƒh‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¨‚èAŽg—p‚·‚éƒJ[ƒh‚ð“Á’肵‚½‚¢ê‡ADevice ID‚ÉID”Ô†‚ðÝ’è‚·‚鎖‚ª‚Å‚«‚Ü‚·B +@’ÊíƒTƒEƒ“ƒhƒJ[ƒh‚ÌID‚Í‚O‚©‚燔ԂɈÖقɊ„‚è“–‚Ä‚ç‚ê‚Ü‚·B-1‚Í“Á•ʂȒl‚ÅAMMTTY‚ªŽg—p‰Â”\‚ȃJ[ƒh‚ð’T‚·‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B + ƒTƒEƒ“ƒhƒJ[ƒh‚ª‚P–‡‚µ‚©‘¶Ý‚µ‚È‚¢ê‡A’Êí‚Í-1‚ðݒ肵‚ĉº‚³‚¢B‚à‚µMMTTY‚ªƒTƒEƒ“ƒhƒJ[ƒh‚ð”Fޝ‚µ‚È‚¢ê‡A0‚ðŽŽ‚µ‚Ă݂ĉº‚³‚¢B + +uSourcev + ƒfƒtƒHƒ‹ƒg‚ł̓TƒEƒ“ƒhƒJ[ƒh‚̓‚ƒmƒ‰ƒ‹iMonojƒ‚[ƒh‚ÅŽg—p‚µ‚Ü‚·B‚à‚µƒTƒEƒ“ƒhƒJ[ƒh‚ÌM†‚Ì“ü—͂܂½‚Ío—Í‚ªŽ|‚­“®ì‚µ‚È‚¢ê‡AuLeftv‚Ü‚½‚ÍuRightv‚ð‘I‘ð‚µAƒTƒEƒ“ƒhƒJ[ƒh‚ðƒXƒeƒŒƒIƒ‚[ƒh‚Å“®ì‚³‚¹‚ĉº‚³‚¢B +@ƒXƒeƒŒƒIƒ‚[ƒh‚Å“®ì‚³‚¹‚½ê‡A‘—MŽž‚Í—¼•û‚̃`ƒƒƒ“ƒlƒ‹‚ÉM†‚ðo—Í‚µ‚Ü‚·‚ªAŽóMŽž‚ÍŽw’肳‚ꂽƒ`ƒƒƒ“ƒlƒ‹‚ÌM†‚݈̂—‚µ‚Ü‚·B + + +uClockv +@MMTTY‚̓TƒEƒ“ƒhƒJ[ƒh‚ɑ΂µ‚ăTƒ“ƒvƒŠƒ“ƒOŽü”g”11025Hz‚ðŽw’肵‚Ü‚·B‚µ‚©‚µƒTƒEƒ“ƒhƒJ[ƒh‚̃NƒƒbƒN¸“x‚Í—]‚賊m‚ł͂Ȃ¢ê‡‚ª‚ ‚邿‚¤‚Å‚·‚Ì‚ÅAMMTTY“à•”‚ł̂·‚ׂĂÌM†ˆ—‚ɑ΂µ‚Ä11025Hz‚Ƃ͈قȂéŽÀ‘ª‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚ðuClockv‚Æ‚µ‚ÄÝ’è‚Å‚«‚邿‚¤‚É‚µ‚Ä‚ ‚è‚Ü‚·B + +@‚±‚ÌuClockvÝ’è‚ð•ÏX‚µ‚½ê‡Aˆê’UMMTTY‚ðI—¹‚µAÄ‹N“®‚µ‚È‚¢‚ÆŽÀÛ‚ÌM†ˆ—‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚ɂ͔½‰f‚³‚ê‚Ü‚¹‚ñB + +@ƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚̌뷂ÍAM†ˆ—‚ɑ΂µ‚Ă͎ü”g”‚̌뷂ƂȂèAƒfƒR[ƒ_[‚ƃGƒ“ƒR[ƒ_[iAFSKj‚ɑ΂µ‚Ă͕„†‘¬“x‚̌뷂ɂȂè‚Ü‚·B +@RTTY‚Ìꇂ͒²•à“¯Šú•„†‚Ȃ̂ÅA•„†‘¬“x‚Ì‹–—eŒë·‚ɂ͂ ‚é’ö“xi–ñ5%j‚̃}[ƒWƒ“‚ª‚ ‚è‚Ü‚·‚ªA‚ ‚Ü‚è‚à‘å‚«‚­‚¸‚ê‚Ä‚¢‚邯ŽóM󋵂ªŒµ‚µ‚¢ê‡‚É•¶Žš‰»‚¯‚ÌŒ´ˆö‚Ì‚P‚‚ɂȂé‰Â”\«‚ª‚ ‚è‚Ü‚·B +@‚µ‚©‚µ‘ŠŽè‹Ç‚Ì•„†‘¬“x‚à‚»‚ñ‚ȂɳŠm‚Ƃ͎v‚¦‚Ü‚¹‚ñ‚Ì‚ÅA‚ ‚Ü‚è_ŒoŽ¿‚ɂȂé•K—v‚à‚È‚¢‚ÆŽv‚¢‚Ü‚·B + +*ƒNƒƒbƒN‚̕Ⳃðs‚¤Û‚ÍAƒpƒ\ƒRƒ“‚Ì“dŒ¹‚ð“ü‚ê‚Ä‚©‚çAƒTƒEƒ“ƒhƒ{[ƒh‚̊­U‚ªˆÀ’è‚·‚é‚Ü‚ÅA‚µ‚΂炭‘Ò‚Á‚Ä‚©‚ç‚â‚Á‚½‚Ù‚¤‚ª—Ç‚¢‚Å‚µ‚傤B + +EŽü”g”ƒJƒEƒ“ƒ^‚ðŽg‚¤ê‡ + + 1)ʼn‚ÌClock‚ª11025Hz‚ɂȂÁ‚Ä‚¢‚é‚Ì‚ðŠm”F‚·‚é + 2)ƒ}[ƒNŽü”g”‚ð2000Hz‚É‚·‚é + 3)Diddle‚ðOFF‚É‚·‚é + 4)TXƒ{ƒ^ƒ“‚ð‰Ÿ‚·i•¶Žš‚Í‘—M‚µ‚È‚¢j + 5)SoundOut‚̃Vƒ“ƒOƒ‹ƒg[ƒ“‚ÌŽü”g”‚ðŒv‘ª‚·‚é + + Œv‘ª‚µ‚½Žü”g”‚ª—Ⴆ‚Î2010Hz‚È‚ç‚ÎAŽÀۂ̃Tƒ“ƒvƒŠƒ“ƒOŽü”g” x ‚Í + + x = 11025 * Œv‘ªŽü”g” / MMTTY‚̃}[ƒNŽü”g” + + = 11025 * 2010 / 2000 = 11080.125 [Hz] + +‚Å‹‚߂邱‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚Ìê‡uClockv‚ɂ͎lŽÒŒÜ“ü‚µ‚Ä11080[Hz]‚ÆÝ’è‚·‚ê‚Î\•ª‚Å‚·B + + +E•W€“d”giJJYj‚ðŽóM‚µ‚Ä’²®‚·‚éê‡ + +@­‚µŽžŠÔ‚ª‚©‚©‚è‚Ü‚·‚ªAJJY‚Ì‚P•bƒ`ƒbƒN‰¹‚ðŽóM‚µ‚Ä’²®‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B‚±‚Ì•û–@‚Í1HzˆÈ“à‚̸“x‚É’Ç‚¢‚±‚Þ‚±‚Æ‚ª‰Â”\‚Å‚·B + + 1)Ý’è‰æ–ʂ̂»‚Ì‘¼‚̃y[ƒW‚ÌAdjƒ{ƒ^ƒ“‚ð‰Ÿ‚µA’²®—p‚̃EƒCƒ“ƒhƒE + ‚ð•\ަ‚µ‚Ü‚·B + 2)ŽóM‹@‚ðAM‚Ü‚½‚ÍSSBƒ‚[ƒh‚É‚µJJY‚ðŽóM‚µ‚Ü‚·B + 3)SSB‚Ìꇂ͂P•bƒ`ƒbƒN‰¹‚ªƒ}[ƒNŽü”g”‚Éd‚È‚é‚æ‚¤‚ÉŽóM‹@‚Ì + Žü”g”‚ð‡‚킹‚Ü‚·BAM‚Ìꇂ͂قƂñ‚ǂ̎ž‚Å1000Hz‚Ü‚½‚Í1600Hz + ‚ðMark‚ÉÝ’è‚·‚邯Ž|‚­ŽóM‚Å‚«‚é‚Í‚¸‚Å‚·B + 4)‚µ‚΂炭i”•ªjŽóM‚µ‚Ä‚¢‚邯‰æ–Ê‚Éc‚Ü‚½‚͎΂߂Ìü‚ª2–{‚Ü‚½‚Í + ‚P–{•\ަ‚³‚ê‚Ü‚·BiƒTƒ“ƒvƒŠƒ“ƒOƒx[ƒX‚É‚æ‚è–{”‚͈قȂè‚Ü‚·j + 5)‚»‚Ìü‚ª‚’¼‚Ìê‡AƒNƒƒbƒN’l‚ÍŠù‚ɳŠm‚Å‚·‚̂Ŋr³‚·‚é•K—v‚Í + ‚ ‚è‚Ü‚¹‚ñBƒLƒƒƒ“ƒZƒ‹ƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ü‚·B + 6)ŽÎ‚߂ɂȂÁ‚Ä‚¢‚éꇂÍA‚»‚Ìü‚Ì‚¢‚¸‚ê‚©‚Ì’[‚ðƒNƒŠƒbƒN‚µ‚Ü‚·B + 7)‚»‚µ‚Ä“¯‚¶üã‚Ì‹t‘¤‚̂ł«‚邾‚¯‰“‚¢“_‚ðƒNƒŠƒbƒN‚·‚邯Šr³‚Í + Š®—¹‚µ‚Ü‚·B‚Q“_ŠÔ‚Ì‹——£‚ª’·‚¢‚قdzŠm‚ÉŠr³‚Å‚«‚Ü‚·B + +@ʼn‚̃NƒƒbƒN’l‚̌뷂ª‘å‚«‚­Aü‚ÌŒX‚«‚ª‘å‚«‚¢ê‡A­‚µŒë·‚ªŽc—¯‚·‚éꇂª‚ ‚è‚Ü‚·B‚»‚̂悤‚ÈꇂÍA‚à‚¤ˆê“x“¯‚¶Žè‡‚ðŒJ‚è•Ô‚·‚Æ‚æ‚賊m‚ÉŠr³‚Å‚«‚Ü‚·B‚»‚Ìê‡A2‰ñ–ڂ͂قƂñ‚Çü‚ª‚’¼‚ɋ߂¢ó‘ԂɂȂÁ‚Ä‚¢‚é‚Í‚¸‚Å‚·B + ‰æ–Ê“à‚ðƒ}ƒEƒX‚̉Eƒ{ƒ^ƒ“‚ŃNƒŠƒbƒN‚·‚邯‚»‚̈ʒu‚ɃJ[ƒ\ƒ‹‚ªˆÚ“®‚µ‚Ü‚·‚Ì‚ÅA‚»‚ê‚Åcƒ‰ƒCƒ“‚ÌŒX‚«‚ðŠm”F‚µ‚ĉº‚³‚¢B + + 2001”N‚Ìt‚©‚çJJY•ú‘—‚Í’âŽ~‚µ‚Ü‚·B‚»‚Ìꇂ͑“à‚ÌFAX•ú‘—iJMG,JMHj‚Í0.5•b–ˆ‚̃fƒbƒhƒZƒNƒ^ƒ^ƒCƒ~ƒ“ƒO‚ª”ñí‚ɳŠm‚Å‚·‚Ì‚ÅA‚»‚ê‚ð‚Ü‚Á‚½‚­“¯‚¶‚悤‚É—˜—p‚µ‚Ä‚à—Ç‚¢‚Å‚µ‚傤B +@‚È‚¨A‚±‚ÌClock’l‚Í‘¼‚̃TƒEƒ“ƒhƒJ[ƒh‚ð—˜—p‚·‚éƒ\ƒtƒgi—Ⴆ‚ÎPSK31SBW‚ÌSetupj‚É‚à‚»‚̂܂ܗ¬—p‚Å‚«‚邯Žv‚¢‚Ü‚·B•â³’l‚ªppm•\Œ»‚̃\ƒtƒg‚Ìꇂ͎Ÿ‚̂悤‚ɕϊ·‚µ‚Ü‚·i•ÏŠ·‚µ‚½’l‚à‰æ–Ê“à‚É•\ަ‚µ‚Ä‚ ‚è‚Ü‚·jB + + •â³’l[ppm] = (Clock - 11025) * 1000000 / 11025 + + +uTx offsetv + ˜^‰¹iŽóMjŽž‚ÆÄ¶i‘—MjŽž‚ŃTƒEƒ“ƒhƒJ[ƒh‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚ªˆÙ‚È‚éê‡A‚±‚ÌuTx offsetv‚ðݒ肵‚Ü‚·BÝ’è‚·‚é’l‚ÍMMSSTV‚Ƃ܂Á‚½‚­“¯‚¶‚Å‚·B‚±‚Ì’l‚ð‹‚ß‚é‚É‚ÍMMSSTV‚ð—˜—p‚·‚é•K—v‚ª‚ ‚è‚Ü‚·‚Ì‚ÅAÚׂ͂»‚¿‚ç‚̃}ƒjƒ…ƒAƒ‹‚ðŽQÆ‚µ‚ĉº‚³‚¢B + +@‚µ‚©‚µRTTY‚ÌꇂÍA‚»‚ê‚قdzŠm‚ÉÝ’è‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñ‚Ì‚ÅAˆÈ‰º‚̊ȕւȕû–@‚ÅŠr³‚µ‚Ä‚à\‚í‚È‚¢‚ÆŽv‚¢‚Ü‚·B + +1)‚Ü‚¸ŽóM‚̃NƒƒbƒN‚ð‡‚í‚Ä‚¨‚«‚Ü‚·B + +2)Ý’è‰æ–Êu‚»‚Ì‘¼vƒy[ƒW‚̃TƒEƒ“ƒhƒ‹[ƒvƒoƒbƒN‚ðuŠO•”(‰q¯’ÊM—p)v‚É‚µ‚Ü‚·B + +3)ƒTƒEƒ“ƒhƒJ[ƒh‚Ìo—͂Ɠü—Í‚ðÚ‘±‚µ‚Ü‚·B‚Ü‚½‚̓{ƒŠƒ…[ƒ€ƒRƒ“ƒgƒ[ƒ‹‚̃~ƒLƒT[ƒvƒƒOƒ‰ƒ€i“ü—̓{ƒŠƒ…[ƒ€ƒRƒ“ƒgƒ[ƒ‹j‚Åuƒ‹[ƒvƒoƒbƒNv‚Ü‚½‚ÍuƒXƒeƒŒƒI/ƒ‚ƒmƒ‰ƒ‹ƒ~ƒLƒT[v‚ð‘I‘ð‚µ‚Ü‚·B + +4)MMTTY‚ð‘—Mó‘Ô‚É‚µAƒXƒyƒNƒgƒ‰ƒ€•\ަ‚ªƒ}[ƒJ[‚Éd‚È‚é‚æ‚¤‚ÉTxOffset‚ð’²®‚µ‚Ü‚·B + +@ŋ߂̃TƒEƒ“ƒhƒJ[ƒh‚̃NƒƒbƒN‚ÌŒXŒü‚Æ‚µ‚Ä‚ÍA + ŽóMŽž ‘—MŽž Tx offset + 11025•t‹ß 11025•t‹ß 0 + 11025•t‹ß 11100•t‹ß 75.00 + 11100•t‹ß 11025•t‹ß -75.00 +‚Ì‚¢‚¸‚ê‚©‚Å‚·‚Ì‚ÅA‚à‚µƒXƒyƒNƒgƒ‰ƒ€•\ަ‚Ŏ኱‚̃YƒŒ‚ªŠm”F‚Å‚«‚éꇂÍATxOffset‚É75.00‚Ü‚½‚Í-75.00‚ðÝ’è‚·‚邯‚Ù‚Ú‡‚¤‚ÆŽv‚¢‚Ü‚·B + +@‚È‚¨RTTY‚Ìê‡A—Ⴆ‚Î11025Hzƒx[ƒX‚ł̃IƒtƒZƒbƒg‚ª75Hz‘¶Ý‚·‚éê‡A‘—Žó‚ÌŽü”g”ƒYƒŒ‚Í5Hz`15Hz‚ɂȂè‚Ü‚·B‚Ü‚½ƒ{[ƒŒ[ƒg‚̃YƒŒ‚Í6800ppm(0.68%)’ö“x‚ɂȂè‚Ü‚·‚ªARTTY‚Ì•ûޮީg‚ªŽ‚ƒ}[ƒWƒ“‚ª‘å‚«‚¢‚½‚ßAŽÀ—pã‚Í–â‘è‚ɂ͂Ȃç‚È‚¢‚ÆŽv‚¢‚Ü‚·B + + +›ƒeƒXƒg‹@”\ +~~~~~~~~~~~~ + ƒIƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌuƒeƒXƒgv‚ð‘I‘ð‚·‚é‚ÆAƒeƒXƒgM†‚𶬂µ‚Ä“ü—ÍM†‚ɉÁ‚¦‚Ü‚·B + Rig‚©‚çƒTƒEƒ“ƒhƒJ[ƒh‚ɃmƒCƒY‚ð“ü‚ê‚Ä‚¨‚¯‚ÎAS/N‚̈«‚¢ó‘Ô‚ðƒeƒXƒg‚·‚鎖‚à‚Å‚«‚Ü‚·i‚±‚Ìꇂ̓IƒvƒVƒ‡ƒ“ƒƒjƒ…[‚ÌÝ’è‰æ–Ê‚ÅAƒfƒWƒ^ƒ‹o—̓Œƒxƒ‹‚𬂳‚­‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñjB + + +›Œ¾Œê +~~~~~~ +@MMTTY‚Í‹N“®Žž‚É‘•Êî•ñ‚ð“ǂݎæ‚è‚Ü‚·B‰‰ñ‹N“®ŽžiMmtty.INI‚ª‘¶Ý‚µ‚È‚¢Žžj‚É‚ÍA‘•Êî•ñ‚ðŒ³‚É‰æ–ʂ̃tƒHƒ“ƒg‚⃃bƒZ[ƒW‚ð‰Šú‰»‚µ‚Ü‚·B + +@‚à‚µ‚ ‚È‚½‚̃pƒ\ƒRƒ“‚É“ú–{ŒêƒtƒHƒ“ƒg‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚é‚É‚àŠÖ‚í‚炸AMMTTY‚ª‰pŒêƒ‚[ƒh‚Å‹N“®‚³‚ꂽê‡AOptionƒƒjƒ…[‚ÌuSetup MMTTYv‚ð‘I‘ð‚µuMiscvƒy[ƒW‚ÌuJapanesev‚ðƒNƒŠƒbƒN‚µ‚ĉº‚³‚¢BŽŸ‰ñ‚Ì‹N“®Žž‚©‚çMMTTY‚Í“ú–{Œêƒ‚[ƒh‚Å‹N“®‚µ‚Ü‚·B + + +›‚»‚Ì‘¼ +~~~~~~~~ + AFSK‚ʼn^—p‚·‚éꇂÍA•W€‚̃}[ƒNŽü”g”2125Hz‚É‚ ‚܂肱‚¾‚í‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñBŽ„‚ÌRig‚̃f[ƒ^ƒ‚[ƒh‚ÌꇂÍAŽóMŽž‚̒ʉߓÁ«‚©‚çA2000Hz‚ ‚½‚è‚ÉÝ’è‚·‚é‚Ì‚ªÅ‚à“K‚µ‚Ä‚¢‚Ü‚µ‚½B + ‚½‚¾‚µ‚ ‚Ü‚è’á‰ß‚¬‚邯AFSK‚Å‘—M‚·‚éÛ‚ÉARig‚ÌSSBƒtƒBƒ‹ƒ^‚̃pƒXƒoƒ“ƒh“à‚É‚’²”g‚ª’ʉ߂µ‚Ä‚µ‚Ü‚¤‰Â”\«‚ª‚ ‚è‚Ü‚·‚Ì‚ÅA1800HzˆÈã‚ð‘I‚ñ‚Å‚¨‚­‚Ù‚¤‚ª—Ç‚¢‚ÆŽv‚¢‚Ü‚·B + +*Ý’è‰æ–Ê‚ÌuHam Defaultv‚É‚±‚ÌŽü”g”‚ðݒ肵‚Ä‚¨‚­‚ÆAƒƒCƒ“‰æ–Ê‚ÌuHAMvƒ{ƒ^ƒ“‚âAÝ’è‰æ–Ê‚ÌuHAMvƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚½Û‚É‚»‚ÌŽü”g”‚ðMarkŽü”g”‚Éݒ肵‚Ü‚·B + +*Rig‚ÍSSBƒ‚[ƒh‚ł͒ÊíƒLƒƒƒŠƒAŽü”g”‚ð•\ަ‚µ‚Ä‚¢‚Ü‚·B—Ⴆ‚ÎLSB‚ÌꇂÍA + +“d”g‚̃}[ƒNŽü”g” Rig‚Ì•\ަŽü”g” | MMTTY‚̃}[ƒNŽü”g”i2125Hzj + +‚ɂȂè‚Ü‚·B + + +›”z•z‚ɂ‚¢‚Ä +~~~~~~~~~~~~~~ +@‚l‚l‚s‚s‚x‚̓tƒŠ[ƒ\ƒtƒg‚Æ‚µ‚ÄŒöŠJ‚µ‚Ü‚·B’˜ìŒ ‚Í‚i‚d‚R‚g‚g‚s‚ªŠŽ‚µ‚Ü‚·‚ªAƒRƒs[AÄ”z•z‚ÉŠÖ‚µ‚ħŒÀ‚ðÝ‚¯‚Ü‚¹‚ñB‚݂Ȃ³‚ñ‚Ì—ÇŽ¯‚ðM—p‚µ‚Ü‚·B–â‚¢‡‚킹‚à•s—v‚Å‚·B‚½‚¾‚µ‚l‚l‚s‚s‚x‚ðŽg—p‚µ‚Ä”­¶‚µ‚½‘¹ŠQ‚ɂ‚¢‚Ă͂¢‚©‚È‚éꇂà•ÛØ‚Å‚«‚Ü‚¹‚ñ‚̂ł²—¹³‰º‚³‚¢B + +@ÅV”ł͈ȉº‚Ì‚t‚q‚k‚©‚çƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚·B + +http://plaza27.mbn.or.jp/~je3hht + + +@‚l‚l‚s‚s‚x‚ÉŠÖ‚·‚邲—v–]‚â‚²Ž¿–â‚Í‚i‚d‚R‚g‚g‚sˆ¶‚É—X•Ö‚à‚µ‚­‚ÍE-Mail‚Å‚¨Šè‚¢‚¢‚½‚µ‚Ü‚·iE-Mail:je3hht@jarl.comjB + + +›ÅŒã‚É +~~~~~~~~ + ð”Ni1999j‚©‚çPSK31‚̉^—p‚ðŽn‚߂܂µ‚½‚ªA­‚µã‚ÌŽü”g”‚Å•·‚±‚¦‚éƒsƒƒsƒ‰¹‚ª‚¸‚Á‚Æ‹C‚ɂȂÁ‚Ä‚¢‚Ü‚µ‚½B + ŽóM‚¾‚¯‚Å‚à‚µ‚Ă݂½‚¢‚ÆŽv‚¢‚Ü‚µ‚½‚ªAŽè‚²‚ë‚ȃ‚ƒfƒ€‚à‚È‚­A‚Ü‚¸‚ÍRTTYDEM‚Æ‚¢‚¤ƒfƒ‚ƒWƒ…ƒŒ[ƒ^ŽÀŒ±ƒvƒƒOƒ‰ƒ€‚ðì‚èA‚»‚ÌŒãQSO‚·‚鎖‚ð–Ú“I‚É‚±‚ÌMMTTY‚ðì‚è‚Ü‚µ‚½B + + Ž„‚ÍRTTY‚͂܂Á‚½‚­‚Ì‘fl‚ÅAŒ»ŽÀ‚ÌŽ–—Ç‚­”»‚ç‚È‚©‚Á‚½‚̂ł·‚ªA‚»‚Ì“_‚ÍJARTS(Japanese Amateur Radio Teleprinter Society)‚ÌŠF—l‚©‚炽‚­‚³‚ñ‚ÌŽg—pƒŠƒ|[ƒg‚𒸂­Ž–‚ª‚Å‚«A‘å•ÏŽQl‚É‚³‚¹‚Ä’¸‚¢‚Ä‚¨‚è‚Ü‚·B‚Ç‚¤‚à—L“‚²‚´‚¢‚Ü‚µ‚½B + +JARTS http://www.edsoftz.com/JARTS/index.html + + ‚Ü‚½ˆÈ‰º‚Ì•ûX‚̑傫‚È•—Í‚à“¾‚Ä‚¨‚è‚Ü‚·i‡•s“¯jB + +Fumio JA1IQV RTTY‚ÉŠÖ‚µ‚Ä‘½‚­‚Ì•Œ¾‚𒸂«AŽ„‚ÌRTTY‚ÌŒoŒ±•s‘«‚ð‘å‚¢‚É + •â‚Á‚Ä’¸‚«‚Ü‚µ‚½B +Nori JA1WSK ‰pŒê”łɊւµ‚Ä‚¢‚ë‚¢‚낲”z—¶’¸‚«‚Ü‚µ‚½B‚Ü‚½MMTTY‚ÉŠÖ‚·‚é + ‘f°‚炵‚¢Web‚ð쬂µ‚Ä’¸‚¢‚Ä‚¨‚è‚Ü‚·B +Oba JA7UDE ‚±‚̃wƒ‹ƒv‚Ì–|–ó‚ð‚µ‚Ä’¸‚«‚Ü‚µ‚½B‚Ü‚½‰pŒê”Ńwƒ‹ƒv‚Ì쬂âA + Ž„‚ª‰pŒê‚ª‹êŽè‚Ȃ̂ð•â‚Á‚Ä’¸‚¢‚Ä‚¨‚è‚Ü‚·B”Þ‚ª•‚¯‚Ä‚­‚ê‚È + ‚¯‚ê‚ΉpŒê”ł͊®¬‚µ‚È‚©‚Á‚½‚Å‚µ‚傤B +Bill KB4IJ ƒ[ƒŠƒ“ƒOƒŠƒXƒgƒOƒ‹[ƒv‚ð쬂µ‚Ä‚­‚ê‚Ü‚µ‚½B‚Ü‚½Œ»Ý‰pŒê”Å + ƒwƒ‹ƒvƒ`[ƒ€‚Å‚²•—Í’¸‚¢‚Ä‚¨‚è‚Ü‚·B + http://www.egroups.com/promote/MMTTY +Andy KB2EOQ ‰Šú‚Ì’iŠK‚ʼnpŒê‚̃wƒ‹ƒv‚ðì‚Á‚Ä‚­‚ê‚Ü‚µ‚½B‚Ü‚½Œ»Ý‰pŒê”Å + ƒwƒ‹ƒvƒ`[ƒ€‚Å‚²•—Í’¸‚¢‚Ä‚¨‚è‚Ü‚·B +Ken VE5KC ‰pŒê‚̃z[ƒ€ƒy[ƒW‚ð쬂µ‚Ä‚­‚ê‚Ü‚µ‚½BŒ»Ý‰pŒê”ł̃wƒ‹ƒv + ‚Ì쬂ɂ²•—Í’¸‚¢‚Ä‚¨‚è‚Ü‚·B‚Ü‚½‰pŒê”ÅƒŠƒŠ[ƒX‚ð’S“–‚µ‚Ä + ’¸‚¢‚Ä‚¨‚è‚Ü‚·B + http://www.qsl.net/mmhamsoft/ +Ed K4SB ƒwƒ‹ƒv‚Ì–|–ó(By JA7UDE)‚ðZ³‚µ‚Ä’¸‚«‚Ü‚µ‚½B +Jan KX2A ‰pŒê”ł̃wƒ‹ƒvƒvƒƒWƒFƒNƒg‚ð—§‚¿ã‚°‚Ä’¸‚«A”ނ̂قƂñ‚Ç‚Ì + ŽžŠÔ‚ð”ï‚₵‚ĉpŒê”Ńwƒ‹ƒv쬂Ìì‹Æ‚ð‚µ‚Ä’¸‚«‚Ü‚µ‚½B +Bill K5YG ‰pŒê”ł̃wƒ‹ƒv쬂ւ̂²•—Í‚âAFAQ‚Ìì¬‚ð‚µ‚Ä’¸‚¢‚Ä‚¢‚Ü‚·B + ‚Ü‚½uDigital.txtv‚Ì–|–óiBy JA7UDEj‚Ì“Yí‚à‚µ‚Ä’¸‚«‚Ü‚µ‚½B +Eddie W6/G0AZT ‰pŒê”Å‚ÌFAQ‚Ì쬂ɕ—Í’¸‚«‚Ü‚µ‚½B +Phil GU0SUP ‰pŒê”ł̃wƒ‹ƒv‚Ì쬂ւ̂²•—Í‚ÆAFAQ‚Ì쬂ɕ—Í’¸‚¢‚Ä‚¨‚è + ‚Ü‚·B +Josef OK2WO ƒ`ƒFƒRŒê‚̃wƒ‹ƒv‚ð쬂µ‚Ä‚­‚ê‚Ü‚µ‚½BŽ„‚͔ނÌ쬂µ‚½•¶‘ + ‚ð“ǂނ±‚Ƃ͂ł«‚Ü‚¹‚ñ‚ªA‘f°‚炵‚¢‚ɈႢ‚ ‚è‚Ü‚¹‚ñB +Bill W7TI RTTY BASICS‚Æ‚¢‚¤‘f°‚炵‚¢ƒhƒLƒ…ƒƒ“ƒg‚ð쬂µ‚Ä‚­‚ê‚Ü‚µ‚½B + ‚±‚̃hƒLƒ…ƒƒ“ƒg‚ÍJA7UDE‘å’낳‚ñ‚ª“ú–{Œê‚É–|–󂵂ĉº‚³‚èA + “ú–{Œêƒo[ƒWƒ‡ƒ“‚Å‚àŒ©‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚º‚Ђ²——‰º‚³‚¢B +Kaz 7L1CUH MMTTY‚Ì“®ìƒeƒXƒg‚âATurbo-Hamlogƒ†[ƒU‚Ì‚½‚ß‚ÌARRL.DX‚Ìì¬ + ‚ȂǑ½‚­‚Ì‚²•—͂𒸂«‚Ü‚µ‚½B +Nobu JA2BQX ADIFƒtƒ@ƒCƒ‹‚©‚çƒRƒ“ƒeƒXƒg‚Ì’ño‘—Þ‚ð쬂·‚éƒvƒƒOƒ‰ƒ€‚ð + 쬂µ‚Ä’¸‚«‚Ü‚µ‚½B +Bob K4CY ƒŠƒ‚[ƒgƒ‚[ƒh‚ÉŠÖ‚·‚é’ñˆÄ‚âƒeƒXƒgA‚Ü‚½ƒŠƒ‚[ƒgƒhƒLƒ…ƒƒ“ƒg + ‚ÉŒfÚ‚·‚邽‚ß‚ÉAVB‚©‚çŽg‚¤ê‡‚̃Tƒ“ƒvƒ‹‚ð’ñ‹Ÿ‚µ‚Ä’¸‚«‚Ü‚µ‚½B +Eike DM3ML ƒhƒCƒcŒê‚̃wƒ‹ƒvƒtƒ@ƒCƒ‹‚ð쬂µ‚Ä’¸‚«‚Ü‚µ‚½B +Antonio EA1MV ƒXƒyƒCƒ“Œê‚̃wƒ‹ƒvƒtƒ@ƒCƒ‹‚ð쬂µ‚Ä’¸‚«‚Ü‚µ‚½B +Edoardo I5PAC ƒCƒ^ƒŠƒAŒê‚̃wƒ‹ƒvƒtƒ@ƒCƒ‹‚ð쬂µ‚Ä’¸‚«‚Ü‚µ‚½B + + +@‚Ü‚½MMTTY-eGroup‚Ì‘½‚­‚Ì•ûX‚Ì‚²•—͂𒸂¢‚Ä‚¨‚è‚Ü‚·B + +@–{“–‚É—L“‚²‚´‚¢‚Ü‚·B + +@“Á‚É Jan KX2A ‚ɂ͉pŒê”Å‚ÌWindows Help‚Ì쬂őå•ςȂ²‹ê˜J‚ð‚¨‚©‚¯‚µ‚Ä‚¨‚è‚Ü‚·B”Þ‚Ì‘f°‚炵‚¢“­‚«‚ƃZƒ“ƒX‚Ì—Ç‚³‚É‚æ‚èA‰pŒê”Ńwƒ‹ƒvƒtƒ@ƒCƒ‹‚̂ق¤‚ªAŽ„‚ªì¬‚µ‚½ƒeƒLƒXƒg‚æ‚è‚à—y‚©‚É‘f°‚炵‚¢‚à‚̂ɂȂè‚Ü‚µ‚½B‚±‚±‚Éd‚˂Ċ´ŽÓ‚̈ӂð•\‚µ‚Ü‚·B—L“ Jan + + + ƒRƒ“ƒeƒXƒg‚ÉŠÖ˜A‚·‚é‹@”\‚à­‚µ‘g‚Ýž‚݂܂µ‚½‚ªA‚Ü‚¾ŽÀ퓊“ü‰ñ”‚ª­‚È‚¢‚Ì‚ÅAŽ|‚­“®ì‚µ‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B¡Œã‚¨‚¢‚¨‚¢‰ü‘P‚µ‚Ä‚¢‚«‚½‚¢‚ÆŽv‚¢‚Ü‚·B + + + MMTTY‚ð쬂·‚é‚É‚ ‚½‚èRTTY‚ÉŠÖ‚µ‚Ă͈ȉº‚̑ЂðŽQl‚É‚µ‚Ü‚µ‚½B + +EJH1BIH ‘ŠŒ´ а CQ Ham RadiouŒ»‘ã”Å RTTY’´“ü–åvCQo”Å(Š”j1999.3 +EJG2VUQ ˆÀ“¡ °•F CQ Ham RadiouŒ³‘c•¶Žš’ÊM RTTY“ü–åvCQo”Å(Š”j1994.4 + + + ƒfƒWƒ^ƒ‹M†ˆ—‚ÉŠÖ‚µ‚Ă͈ȉº‚̑ЂðŽQl‚É‚µ‚Ü‚µ‚½B + +E”ö’m ”ŽuƒfƒWƒ^ƒ‹EƒtƒBƒ‹ƒ^ÝŒv“ü–åvCQo”Å(Š”j1991.1 +E“c’† Œö’juƒfƒBƒWƒ^ƒ‹’ÊM‹Zp v “ŒŠC‘åŠwo”Å‰ï ‘æ‚R”Å 1992.9.25 +EŽO’J ­ºuƒfƒWƒ^ƒ‹ƒtƒBƒ‹ƒ^ƒfƒUƒCƒ“viŠ”jºW“° •½¬‚U”N‚SŒŽ +EŽOã ’¼Ž÷uƒfƒWƒ^ƒ‹M†ˆ—ƒvƒƒOƒ‰ƒ~ƒ“ƒO“ü–åvCQo”ÅiŠ”j1993 + +›—š—ð +~~~~~~ +uƒo[ƒWƒ‡ƒ“ƒAƒbƒvî•ñv‚ðŽQÆ‚µ‚ĉº‚³‚¢B + \ No newline at end of file diff --git a/mmtty_Icon.ico b/mmtty_Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3b5b5c19ff72126e0f560e73a0db7c65dece6953 GIT binary patch literal 1078 zcmc(dO^(7a4255T_0S`9g*e6>E!SYhReFF*T!SUsk&rT<!ObvA@}k4sa} LOG200] + ‘S‚Ä‚Ìî•ñ‚ðŽ¸‚í‚¸‚ɕϊ·‚Å‚«‚Ü‚·BMMTTY‚̈ȉº‚Ì€–Ú‚ÍLOG200‚ÌƒŠƒ}[ƒN—“‚ÉLOG200ƒL[iƒTƒuƒtƒB[ƒ‹ƒhj‚ɕϊ·‚µ‚ÄŠi”[‚³‚ê‚Ü‚·B + + CALL CALL[...] ƒR[ƒ‹ƒTƒCƒ“‚ª15•¶Žš‚ð’´‚¦‚éê‡‚Ì‚Ý + M M[.] + Env ENV[...] + Pow POW[...] + Opt1 OPT1[...] + Opt2 OPT2[...] + Usr1 USR1[...] + Usr2 USR2[...] + QSL MQSL[...] + +*ÅV‚ÌLOG200iƒÀ”Åj‚ł̓R[ƒ‹ƒTƒCƒ“‚Ì‹L˜^‰Â”\‚È’·‚³‚ª]—ˆ‚Ì11•¶Žš‚©‚ç15•¶Žš‚ÉŠg’£‚³‚ê‚Ä‚¢‚Ü‚·B + + ‚Ü‚½MMTTY‚Ì€–ÚQSL“à‚Ɉȉº‚ÌLOG200ƒL[‚ª‚ ‚邯‚«A‚»‚ꂼ‚êLOG200‚ÌŠY“–‚·‚逖ڂɃL[“à‚Ì•¶Žš—ñ‚ªŠi”[‚³‚ê‚Ü‚·B + + RIG[...] RIG + MyQTH[...] MyQTH + MyRIG[...] MyRIG + TEST[...] CONTEST + + +[LOG200 -> MMTTY] + ‹L˜^‚³‚ê‚Ä‚¢‚éƒf[ƒ^‚ªMMLOGƒf[ƒ^ƒtƒ@ƒCƒ‹‚̧ŒÀ‚ð‰z‚¦‚éê‡A‚»‚Ì€–ڂ̈ꕔ‚Ìî•ñ‚ðŽ¸‚¤‰Â”\«‚ª‚ ‚è‚Ü‚·B“Á‚ÉLOG200‚ÌREMARKS—“‚Í”CˆÓ’·‚Ì‹L˜^‚ª‰Â”\‚È‚½‚ß‚Éî•ñ‚ðŽ¸‚¤‰Â”\«‚ª‚‚­A‚Ü‚½sQSL‚ÆrQSL‚àæ“ª‚Ì•¶ŽšˆÈŠO‚ðŽ¸‚¢‚Ü‚·B + + ˆÈ‰º‚Ì€–Ú‚ÍMMTTY‚Ì€–ÚQSL‚ÉALOG200ƒL[‚ɕϊ·‚µ‚ÄŠi”[‚³‚ê‚Ü‚·B + + RIG RIG[...] + MyQTH MyQTH[...] + MyRIG MyRIG[...] + CONTEST TEST[...] + + ‚Ü‚½LOG200‚ÌREMARKS—“‚Ɉȉº‚ÌLOG200ƒL[‚ª‚ ‚邯‚«A‚»‚ꂼ‚êMMTTY‚ÌŠY“–‚·‚逖ڂɃL[“à‚Ì•¶Žš—ñ‚ªŠi”[‚³‚ê‚Ü‚·B + + CALL[...] CALL + M[.] M + ENV[...] Env + POW[...] Pow + OPT1[...] Opt1 + OPT2[...] Opt2 + USR1[...] Usr1 + USR2[...] Usr2 + MQSL[...] QSL + + +------------------------------------------------ +›Turbo HAMLOGƒf[ƒ^ƒtƒ@ƒCƒ‹iDBS, DBRj‚Ƃ̕ϊ· +------------------------------------------------ + MMTTY‚ÍAJG1MOU •l“c‚³‚ñ쬂ÌTurbo Hamlog(ˆÈ‰ºHamlog)‚̃f[ƒ^ƒtƒ@ƒCƒ‹iDBS, DBRj‚Æ‚Ì‘ŠŒÝ•ÏŠ·‹@”\‚ðŽ‚Á‚Ä‚¢‚Ü‚·B + + ˆê‰žHamlog‚Ìê‡A‘S‚Ä‚Ìî•ñ‚𑹂Ȃ킸‚ɕϊ·‚Å‚«‚Ü‚·‚ªA”O‚ׂ̈Ɉȉº‚̎臂Ŏ¦‚·‚悤‚ÉMMTTY‚ÅQSO‚µ‚½ƒf[ƒ^‚¾‚¯‚ðHamlogƒtƒ@ƒCƒ‹‚É–ß‚·‚±‚Æ‚ð‹­‚­‚¨Š©‚ß‚µ‚Ü‚·B + + Hamlog ¨ MMTTY ŒŸõ‘€ì‚Ì‚½‚߂ɑS•”•ÏŠ·‚·‚é + + Hamlog © MMTTY MMTTY‚ÅQSO‚µ‚½‚à‚Ì‚¾‚¯Šù‘¶‚̃ƒO‚ɒljÁ‚·‚é + +*Hamlogƒtƒ@ƒCƒ‹‚Ƃ̕ϊ·‚ÍAuƒƒOˆê——•\ަ‰æ–Êv‚̃tƒ@ƒCƒ‹ƒƒjƒ…[‚ÌuƒCƒ“ƒ|[ƒgv‚¨‚æ‚ÑuƒGƒNƒXƒ|[ƒgv‚ð‘I‘ð‚µ‚Ü‚·B + +*ƒCƒ“ƒ|[ƒg‚ÌÛ‚Íu’ljÁ‚µ‚Ü‚·‚©Hv‚̃ƒbƒZ[ƒW‚ɑ΂µ‚Äu‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ü‚·B + +*uƒGƒNƒXƒ|[ƒgv‚·‚éÛA‚ ‚ç‚©‚¶‚߈ꗗ•\‚ÅAƒ}ƒEƒX‚̶ƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚È‚ª‚ç㉺‚³‚¹‚é‚©A‚Ü‚½‚ÍuShift+«v,uShift+ªvƒL[‚Å‘€ì‚µ‚ÄA‘‚«ž‚Þƒf[ƒ^‚ð‘I‘ð‚µ‚Ä‚¨‚«‚Ü‚·BMMTTY‚Í‘I‘ð‚³‚ê‚Ä‚¢‚éƒf[ƒ^‚ð–³ðŒ‚ÉŽw’肳‚ꂽƒƒOƒtƒ@ƒCƒ‹‚ɒljÁ‚µ‚Ü‚·B + + Hamlogƒf[ƒ^ƒtƒ@ƒCƒ‹iDBS, DBRj‚ÆMMLOGƒf[ƒ^ƒtƒ@ƒCƒ‹iMDTj‚ÌŽd—l‚̈Ⴂ‚É‚æ‚èA•ÏŠ·ãˆÈ‰º‚̧–ñ‚ª‚ ‚è‚Ü‚·B + +[MMTTY -> Hamlog] + MMTTY‚̈ȉº‚Ì€–Ú‚ÍHamlog‚ÌƒŠƒ}[ƒN—“‚ÉLOG200ƒL[iƒTƒuƒtƒB[ƒ‹ƒhj‚ɕϊ·‚µ‚ÄŠi”[‚³‚ê‚Ü‚·B + + CALL ToRadio[...] ƒR[ƒ‹ƒTƒCƒ“‚ª7+3‚Å•\Œ»‚Å‚«‚È‚¢ê‡‚Ì‚Ý + M M[.] + Env ENV[...] + Pow POW[...] + End END[...] + + ƒR[ƒ‹ƒTƒCƒ“‚ªuKH0/JI3IVLv‚̂悤‚ÈŒ`Ž®‚Ìê‡AHamlog‚É‚ÍuJI3IVL/KH0v‚ÌŒ`Ž®‚ÅŠi”[‚µAƒŠƒ}[ƒN—“‚Ì‚¢‚¸‚ê‚©‚Éu$DXv‚Ì•¶Žš—ñ‚ð’ljÁ‚µ‚Ü‚·B +@‘ŠŽè‹Ç‚ªDX‹Ç‚Ìê‡A“ú•t‚ÆŽž‚Íí‚ÉUTC‚ɕϊ·‚µ‚ÄŠi”[‚µ‚Ü‚·B + + ‚Ü‚½MMTTY‚Ì€–ÚUsr1‚Ɉȉº‚ÌLOG200ƒL[‚ª‚ ‚邯‚«A‚»‚ê‚ðHamlog‚ÌQSLî•ñ‚Ì‚R•¶ŽšiM, Send, Rcvj‚ÉŠi”[‚µ‚Ü‚·B + + QSL[...] MSR + +@‚»‚Ì‘¼ˆÈ‰º‚Ì€–ڂ̕ϊ·‚ðs‚¢‚Ü‚·B + + QSL REM2 + Opt1 Code + Opt2 Grid + +@MMTTY‚ÌUsr1‚ÆUsr2‚Ìî•ñ‚Í‚·‚ׂϸ‚¢‚Ü‚·B‚Ü‚½ˆÈ‰º‚ÌMMTTY‚Ì€–ڂ͌㔼‚̈ꕔ‚ðŽ¸‚¤‰Â”\«‚ª‚ ‚è‚Ü‚·iЇŒÊ“à‚͕ϊ·‚É‚æ‚é’·‚³‚̕ω»jB + + MyRST (20->3) + HisRST (20->3) + Name (16->12) + REM (56->54) + Opt1 (8->6) + Opt2 (8->6) + + +[Hamlog -> MMTTY] +@‚·‚ׂĂÌî•ñ‚ðŽ¸‚í‚¸‚ɕϊ·‚Å‚«‚Ü‚·BHamlog‚ÌREMARKS—“‚Ɉȉº‚ÌLOG200ƒL[‚ª‚ ‚邯‚«A‚»‚ꂼ‚êMMTTY‚ÌŠY“–‚·‚逖ڂɃL[“à‚Ì•¶Žš—ñ‚ªŠi”[‚³‚ê‚Ü‚·B + + CALL[...] CALL + ToRadio[...] CALL + M[.] M + ENV[...] Env + POW[...] Pow + END[...] End + +@Hamlog‚ÌQSLî•ñ3•¶Žš‚ÍMMTTY‚ÌUsr1‚Ɉȉº‚ÌŒ`Ž®‚ÅŠi”[‚³‚ê‚Ü‚·B + + MSR QSL[MSR] + + Hamlog‚ÌƒŠƒ}[ƒN—“‚Ì‚¢‚¸‚ê‚©‚Éu$DXv‚Ì•¶Žš—ñ‚ª‘¶Ý‚µAƒR[ƒ‹ƒTƒCƒ“‚ªuJI3IVL/KH0v‚ÌŒ`Ž®‚Ìê‡AMMTTY‚É‚ÍuKH0/JI3IVLv‚ÌŒ`Ž®‚ÅŠi”[‚³‚ê‚Ü‚·B + +@‚»‚Ì‘¼ˆÈ‰º‚Ì€–ڂ̕ϊ·‚ðs‚¢‚Ü‚·B + + Code Opt1 + Grid Opt2 + REM2 QSL + +---------------------------------- +›ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ւ̃GƒNƒXƒ|[ƒg +---------------------------------- + ƒtƒ@ƒCƒ‹ƒƒjƒ…[‚Ìu‘I‘ð”͈͂ðƒGƒNƒXƒ|[ƒgv‚ð‘I‘ð‚·‚é‚ÆAŒ»Ý‘I‘𒆂͈̔͂ðƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Éo—Í‚µ‚Ü‚·B + 쬂·‚éƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Ì‘Ž®‚ÍŽŸ‚Ì‚R‚‚̂¤‚¿‚Ì‚¢‚¸‚ê‚©‚Å‚·B + + EƒJƒ“ƒ}‹æØ‚èƒeƒLƒXƒgƒtƒ@ƒCƒ‹iCSVŒ`Ž®j + ETAB‹æØ‚èƒeƒLƒXƒgƒtƒ@ƒCƒ‹ + E‹æØ‚è‚È‚µƒeƒLƒXƒgƒtƒ@ƒCƒ‹ + + ‚Ü‚½Å‘å‚U‚SŒÂ‚̃tƒB[ƒ‹ƒh‚ɂ‚¢‚ÄA‚»‚ꂼ‚ê‚̃tƒB[ƒ‹ƒh‚ð‚ǂ̂悤‚ɕϊ·‚·‚é‚©‚ðˆÈ‰º‚̕ϊ·Ž®‚Å’è‹`‚Å‚«‚Ü‚·B + +%NULL ‚±‚̃tƒB[ƒ‹ƒh‚͕ϊ·‚³‚ê‚È‚¢ +%EOD ‚±‚̕ϊ·Ž®ˆÈ~‚̃tƒB[ƒ‹ƒh’è‹`‚Í–³Ž‹‚³‚ê‚é + +%YYYY-MM-DD ”NŒŽ“ú‚ð2000-07-10‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%YY-MM-DD ”NŒŽ“ú‚ð00-07-10‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%YYYY/MM/DD ”NŒŽ“ú‚ð2000/07/10‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%YY/MM/DD ”NŒŽ“ú‚ð00/07/10‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%YY ”N‚ð00‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%YYYY ”N‚ð2000‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%MM ŒŽ‚ð07‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%MON ŒŽ‚ðJAN,FEB,MAR, ...‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%MON2 ŒŽ‚ðJan.,Feb.,Mar., ...‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%DD “ú‚ð10‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%HHMM ŠJŽnŽž‚ð1234‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%HH:MM ŠJŽnŽž‚ð12:34‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%EHHMM I—¹Žž‚ð1234‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%EHH:MM I—¹Žž‚ð12:34‚ÌŒ`Ž®‚Å“WŠJ‚·‚é +%CALL ƒR[ƒ‹ƒTƒCƒ“‚ð“WŠJ‚·‚é +%M ŒÄ‚Ño‚µƒ}[ƒN‚ð“WŠJ‚·‚é +%MY MyRST‚ð“WŠJ‚·‚é +%HIS HisRST‚ð“WŠJ‚·‚é +%MYRST MyRST‚ðƒ‚[ƒh‚É‚æ‚è’·‚³’²®‚µ‚Ä“WŠJ‚·‚é +%HISRST HisRST‚ðƒ‚[ƒh‚É‚æ‚è’·‚³’²®‚µ‚Ä“WŠJ‚·‚é +%FREQ Žü”g”‚ðMHz’PˆÊ‚Ì•¶Žš—ñ‚Å“WŠJ‚·‚é +%MBAND Žü”g”‚ðƒ[ƒ^[ƒoƒ“ƒh‚Å“WŠJ‚·‚é +%KHZ Žü”g”‚ðKHz’PˆÊ‚Ì•¶Žš—ñ‚Å“WŠJ‚·‚é +%MODE ƒ‚[ƒh‚ð“WŠJ‚·‚é +%POWER “d—Í‚ð“WŠJ‚·‚é +%NAME –¼‘O‚ð“WŠJ‚·‚é +%QTH QTH‚ð“WŠJ‚·‚é +%REM ƒŠƒ}[ƒN‚ð“WŠJ‚·‚é +%QSL QSLî•ñ‚ð“WŠJ‚·‚é +%S QSL”­‘—ƒ}[ƒN‚ð“WŠJ‚·‚é +%R QSLŽó—̃}[ƒN‚ð“WŠJ‚·‚é +%ENV Ž©‹ÇŠÂ‹«•Ï”‚ð“WŠJ‚·‚é +%OPT1 Opt1‚ð“WŠJ‚·‚é +%OPT2 Opt2‚ð“WŠJ‚·‚é +%USR1 Usr1‚ð“WŠJ‚·‚é +%USR2 Usr2‚ð“WŠJ‚·‚é + +ã‹LˆÈŠO‚Ì•¶Žš—ñ‚Í‚»‚Ì•¶Žš—ñ‚ª‚»‚̂܂ܓWŠJ‚³‚ê‚Ü‚·B + + Max‚ðŽw’è‚·‚邯“WŠJ‚·‚é•¶Žš—ñ‚Í‚»‚Ì’·‚³‚ŧŒÀ‚³‚ê‚Ü‚·B‹æØ‚è‚È‚µƒeƒLƒXƒg‚ÌꇂÍMax‚Ì•‚ŌŒ肳‚ê‚Ü‚·B + Max=0‚ÌꇂÍA•¶Žš—ñ‚Ì’·‚³‚̧ŒÀ‚͂Ȃ­‚È‚è‚Ü‚·B‹æØ‚è‚È‚µƒeƒLƒXƒg‚Ìê‡A“WŠJ‚³‚ê‚é•¶Žš—ñ‚Ì•‚͌Œ肳‚ê‚È‚­‚È‚è‚Ü‚·B + + uUTCv‚̃`ƒFƒbƒN‚ð•t‚¯‚邯“ú•t‚ÆŽž‚ÍUTC‚Åo—Í‚³‚ê‚Ü‚·B + uh‚ň͂Þv‚Ƀ`ƒFƒbƒN‚ð•t‚¯‚邯‚·‚ׂẰ–Ú‚ªƒ_ƒuƒ‹•¶Žš‚ň͂܂ê‚Ü‚·B + +---------------------------------- +›ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚©‚ç‚̃Cƒ“ƒ|[ƒg +---------------------------------- + ƒtƒ@ƒCƒ‹ƒƒjƒ…[‚ÌuƒCƒ“ƒ|[ƒgv‚ð‘I‘ð‚·‚é‚ÆAƒƒOƒf[ƒ^‚ª‹LÚ‚³‚ꂽƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ðƒ[ƒh‚µ‚Ü‚·i1s‚ɂ͂PQSO•ª‚̃f[ƒ^‚ª‹LÚ‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñjB + ƒ[ƒh‚·‚éƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚Ì‘Ž®‚ÍŽŸ‚Ì‚R‚‚̂¤‚¿‚Ì‚¢‚¸‚ê‚©‚Å‚·B + + EƒJƒ“ƒ}‹æØ‚èƒeƒLƒXƒgƒtƒ@ƒCƒ‹iCSVŒ`Ž®j + ETAB‹æØ‚èƒeƒLƒXƒgƒtƒ@ƒCƒ‹ + E‹æØ‚è‚È‚µƒeƒLƒXƒgƒtƒ@ƒCƒ‹ + + ‚Ü‚½Å‘å‚U‚SŒÂ‚̃tƒB[ƒ‹ƒh‚ɂ‚¢‚ÄA‚»‚ꂼ‚ê‚̃tƒB[ƒ‹ƒh‚ð‚ǂ̂悤‚ɕϊ·‚·‚é‚©‚ðuƒGƒNƒXƒ|[ƒgv‚ʼnðà‚µ‚½‚̂Ɠ¯‚¶•ÏŠ·Ž®‚Å’è‹`‚Å‚«‚Ü‚·B + + uUTCv‚̃`ƒFƒbƒN‚ð•t‚¯‚邯“ú•t‚ÆŽž‚ÍUTC‚Æ‚µ‚ÄJST‚ɕϊ·‚µ‚ēǂ݂±‚Ü‚ê‚Ü‚·B + + +------------------- +›MMLOG‚Ì‹L˜^ƒf[ƒ^ +------------------- + + MMLOGƒf[ƒ^ƒtƒH[ƒ}ƒbƒg‚ªˆµ‚¤‚±‚Ƃ̂ł«‚éQSOƒf[ƒ^‚͈ȉº‚Ì’Ê‚è‚Å‚·B + + Date - ‹KŠi‰»‚³‚ê‚Ä‚¢‚é(—Ⴆ‚Î95.12.23) + JST(ŠJŽnŽž) - ‹KŠi‰»‚³‚ê‚Ä‚¢‚é(—Ⴆ‚Î2104) + END(I—¹Žž) - ‹KŠi‰»‚³‚ê‚Ä‚¢‚é(—Ⴆ‚Î2104) + Call - 16 ”CˆÓ‚Ì•¶Žš—ñ + M(ŒÄo‚µƒ}[ƒN) - 1 •¶ŽšƒR[ƒh + RST(His,My) - 20 ”CˆÓ‚Ì•¶Žš—ñ + Band - ‹KŠi‰»‚³‚ê‚Ä‚¢‚é(14.025‚̂悤‚È“ü—͉͂”\) + Mode - ‹KŠi‰»‚³‚ê‚Ä‚¢‚é(CW,SSB,AM,FM,RTTY“™) + Pow - 4 •¶Žš—ñ + Name - 16 ”CˆÓ‚Ì•¶Žš—ñ + QTH - 28 ”CˆÓ‚Ì•¶Žš—ñ + Rem - 56 ”CˆÓ‚Ì•¶Žš—ñ + QSL - 54 ”CˆÓ‚Ì•¶Žš—ñ + S(QSL Send) - 1 •¶ŽšƒR[ƒh + R(QSL Recv) - 1 •¶ŽšƒR[ƒh + Env(Ž©‹ÇŠÂ‹«) - 1`65535‚܂ł̔’l + Opt1 - 8 ”CˆÓ‚Ì•¶Žš—ñ + Opt2 - 8 ”CˆÓ‚Ì•¶Žš—ñ + Usr1 - 8 ”CˆÓ‚Ì•¶Žš—ñiHisRST‚Æ‹¤—pj + Usr2 - 8 ”CˆÓ‚Ì•¶Žš—ñiMyRST‚Æ‹¤—pj + + + Šeƒf[ƒ^‚ɂ‚¢‚ĉðà‚µ‚Ü‚·B + +1.“ú•t(Date) +~~~~~~~~~~~~ + “ú•t‚ð“ü—Í‚µ‚Ü‚·BuQSOvƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚ÆŽ©“®“I‚É“ú•t‚Íݒ肳‚ê‚Ü‚·‚Ì‚ÅAŽè“®‚Å“ü—Í‚·‚é•K—v‚͂قƂñ‚Ç‚ ‚è‚Ü‚¹‚ñB + “ü—Í‚·‚é“ú•t‚ÍAuyy.mm.ddv‚ÌŒ`Ž®‚Å‚·B + +95.11.10 ‚P‚X‚X‚T”NA‚P‚PŒŽA‚P‚O“ú + + ƒƒOÝ’è‰æ–Ê‚ÅTimeZone‚ðuJapanv‚É‚µ‚Ä‚¢‚éê‡A“ú•t‚͗Ⴆ‘ŠŽè‹Ç‚ª‚c‚w‚Å‚ ‚Á‚Ä‚àí‚ÉJST‚Å“ü—Í‚µ‚ĉº‚³‚¢B‚Ü‚½TimeZone‚ðuUTCv‚É‚µ‚Ä‚¢‚éê‡‚Í +í‚ÉUTC‚Å“ü—Í‚µ‚ĉº‚³‚¢B +@‚¢‚¸‚ê‚ÌꇂłàMMQSL‚Í‘ŠŽè‹Ç‚ªDX‚Ìꇎ©“®“I‚ÉUTC‚É’²®‚µ‚½“ú•t‚ðˆóü‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + +2.ŠJŽnŽž(JST) +~~~~~~~~~~~~~~~ + ŠJŽnŽž‚ð“ü—Í‚µ‚Ü‚·BuQSOvƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚ÆŽ©“®“I‚É“ú•t‚Íݒ肳‚ê‚Ü‚·‚Ì‚ÅAŽè“®‚Å“ü—Í‚·‚é•K—v‚͂قƂñ‚Ç‚ ‚è‚Ü‚¹‚ñB + “ü—Í‚·‚鎞‚ÍAuhhmmv‚ÌŒ`Ž®‚Å‚·B + +2134 ‚Q‚PŽž‚R‚S•ª + + + ƒƒOÝ’è‰æ–Ê‚ÅTimeZone‚ðuJapanv‚É‚µ‚Ä‚¢‚éê‡AŽž‚͗Ⴆ‘ŠŽè‹Ç‚ª‚c‚w‚Å‚ ‚Á‚Ä‚àí‚ÉJST‚Å“ü—Í‚µ‚ĉº‚³‚¢B‚Ü‚½TimeZone‚ðuUTCv‚É‚µ‚Ä‚¢‚éê‡‚Í +í‚ÉUTC‚Å“ü—Í‚µ‚ĉº‚³‚¢B +@‚¢‚¸‚ê‚ÌꇂłàMMQSL‚Í‘ŠŽè‹Ç‚ªDX‚Ìꇎ©“®“I‚ÉUTC‚É’²®‚µ‚½“ú•t‚ðˆóü‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + +3.ƒR[ƒ‹ƒTƒCƒ“(Call) +~~~~~~~~~~~~~~~~~~~~ + ‘ŠŽè‹Ç‚̃R[ƒ‹ƒTƒCƒ“‚ð“ü—Í‚µ‚Ü‚·BŽóM‰æ–ʂ̃R[ƒ‹ƒTƒCƒ“•”•ª‚ðƒNƒŠƒbƒN‚·‚邯ީ“®“I‚É“ü—Í‚³‚ê‚Ü‚·‚Ì‚ÅAŽè“®‚Å“ü—Í‚·‚é•K—v‚͂قƂñ‚ǂȂ¢‚Å‚µ‚傤B + + “ü—Í‚·‚éƒR[ƒ‹ƒTƒCƒ“‚͈ȉº‚Ì—á‚ÉŽ¦‚·‚悤‚ɂǂ̂悤‚ÈŒ`Ž®‚Å‚à\‚¢‚Ü‚¹‚ñBÅ‘å‚P‚U•¶Žš‚܂œü—Í‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + JI3IVL + JI3IVL/M + JI3IVL/MM + JI3IVL/3 + JI3IVL/P + JI3IVL/QRP + JI3IVL/JD1 + KH0/JI3IVL + SV/JI3IVL/A + R1/JI3IVL/FJL + JI3IVL/JE3HHT + JI3IVL/MAKO + JI3IVL/MAKO/3 + + ƒR[ƒ‹ƒTƒCƒ“‚Í•K‚¸‘å•¶ŽšiƒAƒbƒp[ƒP[ƒXj‚ɕϊ·‚³‚ê‚Ü‚·B + + +4.ŒÄo‚µƒ}[ƒN(M) +~~~~~~~~~~~~~~~~~ + Ž©‹Ç‚ª‘ŠŽè‹Ç‚ðŒÄ‚Ño‚µ‚½‚©AŽ©‹Ç‚ª‘ŠŽè‹Ç‚©‚ç‚ÌŒÄo‚µ‚ɉž“š‚µ‚½‚©‚ð‹L†‚Å“ü—Í‚µ‚Ü‚·B‹L†‚ɂ͉½‚ðŽg—p‚µ‚Ä‚à\‚¢‚Ü‚¹‚ñ‚ªAMMTTY‚ªŽ©“®Ý’è‚·‚é‚͈̂ȉº‚Ì’Ê‚è‚Å‚·B + + C Ž©‹Ç‚ª‘ŠŽè‹Ç‚ðŒÄ‚Ño‚µ‚½iRunningƒ‚[ƒh‚ÌŽžj + A ‘ŠŽè‹Ç‚ªŽ©‹Ç‚ðŒÄ‚Ño‚µ‚½iS&Pƒ‚[ƒh‚ÌŽžj + + ‚±‚Ìî•ñ‚Í•K—v‚ª‚È‚¯‚ê‚Γü—Í‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñ‚µA‘¼‚Ì®—ƒ}[ƒN‚Æ‚µ‚ÄŽg—p‚µ‚Ä‚à\‚¢‚Ü‚¹‚ñB + + +5.‘ŠŽè‹Ç‚Ì‚q‚r‚s(His) +~~~~~~~~~~~~~~~~~~~~~ + ‘ŠŽè‹Ç‚ÌM†‹­“x‚ð‚q‚r‚s‚Å“ü—Í‚µ‚Ü‚·BƒRƒ“ƒeƒXƒg‚ðl—¶‚µ‚ÄÅ‘å‚Q‚O•¶Žš‚܂œü—͂ł«‚Ü‚·B + + +6.Ž©‹Ç‚Ì‚q‚r‚s(My) +~~~~~~~~~~~~~~~~~~ + i‘ŠŽè‹Ç‚©‚ç“`‚¦‚ç‚ꂽjŽ©‹Ç‚ÌM†‹­“x‚ð‚q‚r‚s‚Å“ü—Í‚µ‚Ü‚·BƒRƒ“ƒeƒXƒg‚ðl—¶‚µ‚ÄÅ‘å‚Q‚O•¶Žš‚܂œü—͂ł«‚Ü‚·B + + +7.ƒoƒ“ƒh‚Ü‚½‚ÍŽü”g”(Band) +~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒoƒ“ƒh‚Ü‚½‚ÍŽü”g”‚ð“ü—Í‚µ‚Ü‚·BˆÈ‰º‚̃oƒ“ƒhƒR[ƒh‚Ü‚½‚ÍŽü”g””͈͂ð“ü—Í‚·‚鎖‚ª‚Å‚«‚Ü‚·B + + ƒAƒ}ƒ`ƒ…ƒAƒoƒ“ƒh ƒoƒ“ƒhƒR[ƒh “ü—͉”\Žü”g””ÍˆÍ + + ‚PD‚X‚l‚g‚š‘Ñ 1.9 or 1.8 1.000`1.999 + ‚RD‚T‚l‚g‚š‘Ñ 3.5 3.000`3.699 + ‚RD‚W‚l‚g‚š‘Ñ 3.8 3.700`3.999 + ‚V‚l‚g‚š‘Ñ 7 7.000`7.999 + ‚P‚O‚l‚g‚š‘Ñ 10 10.000`10.999 + ‚P‚S‚l‚g‚š‘Ñ 14 14.000`14.999 + ‚P‚W‚l‚g‚š‘Ñ 18 18.000`18.999 + ‚Q‚P‚l‚g‚š‘Ñ 21 21.000`21.999 + ‚Q‚S‚l‚g‚š‘Ñ 24 24.000`24.999 + ‚Q‚W‚l‚g‚š‘Ñ 28 28.000`29.999 + ‚T‚O‚l‚g‚š‘Ñ 50 50.000`53.999 + ‚P‚S‚S‚l‚g‚š‘Ñ 144 144.000`149.999 + ‚S‚R‚O‚l‚g‚š‘Ñ 430 430.000`439.999 + ‚P‚Q‚O‚O‚l‚g‚š‘Ñ 1200 1240.00`1299.99 + ‚Q‚S‚O‚O‚l‚g‚š‘Ñ 2400 2350.00`2449.99 + ‚T‚U‚O‚O‚l‚g‚š‘Ñ 5600 + ‚P‚OD‚P‚f‚g‚š‘Ñ 10.1G + ‚P‚OD‚S‚f‚g‚š‘Ñ 10.4G + ‚Q‚S‚f‚g‚š‘Ñ 24G + ‚S‚V‚f‚g‚š‘Ñ 47G + ‚V‚T‚f‚g‚š‘Ñ 75G + ‚P‚S‚Q‚f‚g‚š‘Ñ 142G + ‚Q‚S‚W‚f‚g‚š‘Ñ 248G + ‚S‚U‚R‚O‚j‚g‚š 4630 + + Žü”g”‚ð“ü—Í‚·‚éꇂÍAã‹L‚ÉŽ¦‚·”͈͂Åu14.025v‚̂悤‚É“ü—Í‚µ‚Ü‚·BŽ„‚ÌꇂÍA•’ʂ̓oƒ“ƒh‚݂̂ð“ü—Í‚µ‚Ä‚¢‚Ü‚·‚ªA‘ŠŽè‚ª’¿‹Ç“™‚Ìꇂ͌ã“ú‚ÌŽQl‚Ì‚½‚߂Ɏü”g”‚܂œü—Í‚µ‚Ä‚¢‚Ü‚·B + + ƒNƒƒXƒoƒ“ƒhi‰q¯j‚ÌꇂÍA<21/144>‚̂悤‚É“ü—Í‚µ‚ĉº‚³‚¢B‚±‚Ìꇃoƒ“ƒhƒR[ƒh‚݂̂̑g‚݇‚킹‚µ‚©“ü—͂ł«‚Ü‚¹‚ñB + + +8.ƒ‚[ƒh(Mode) +~~~~~~~~~~~~~ + ƒ‚[ƒhi“d”gŒ`Ž®j‚ðŽŸ‚Ì‚æ‚¤‚ȃL[ƒ[ƒh‚Å“ü—Í‚µ‚Ü‚·BMMTTY‚Å‚Íí‚ɃfƒtƒHƒ‹ƒg‚ÍRTTY‚ɂȂÁ‚Ä‚¢‚Ü‚·B + + CW,SSB,AM,FM,RTTY,PAC,FAX,SSTV,ATV,TV,FSTV, + A1,A2,A3,A3A,A3H,A3J,A4,A5,A5C,A5J,A9,A9C, + F1,F2,F3,F4,F5,F9, + P0,P1,P2D,P2E,P2F,P3D,P3E,P3F,P9, + PSK, BPSK, QPSK, HELL, MFSK + + +9.‘ŠŽè‹Ç‚Ì–¼‘O(Name) +~~~~~~~~~~~~~~~~~~~~ + ‘ŠŽè‹Ç‚Ì–¼‘O‚ð“ü—Í‚µ‚Ü‚·BÅ‘å‚P‚U•¶Žš‚܂œü—͂ł«‚Ü‚·B‚±‚Ì€–Ú‚ÍŽóM‰æ–Ê“à‚ÌŠY“–‚·‚é•¶Žš—ñ‚ðƒ}ƒEƒX‚ŃNƒŠƒbƒN‚µ‚Ä“ü—Í‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + + +10.‘ŠŽè‹Ç‚Ì‚p‚s‚g(QTH) +~~~~~~~~~~~~~~~~~~~~~~ + ‘ŠŽè‹Ç‚Ì‚p‚s‚g‚ð“ü—Í‚µ‚Ü‚·BÅ‘å‚Q‚W•¶Žš‚܂œü—͂ł«‚Ü‚·B‚±‚Ì€–Ú‚ÍŽóM‰æ–Ê“à‚ÌŠY“–‚·‚é•¶Žš—ñ‚ðƒ}ƒEƒX‚ŃNƒŠƒbƒN‚µ‚Ä“ü—Í‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B + +*ŽóM‰æ–ʂ̃NƒŠƒbƒN“ü—Í‚ÍAƒfƒtƒHƒ‹ƒg‚ÍNAME‚ð“ü—Í‚·‚éó‘ԂɂȂÁ‚Ä‚¢‚Ü‚·‚Ì‚ÅAQTH‚ðƒNƒŠƒbƒN“ü—Í‚·‚éꇂÍAŽóM‰æ–ʂ̂·‚®ã‚Ì'Name'‚Ì•¶Žš‚ðƒNƒŠƒbƒN‚µ‚ÄŽæ‚肱‚Ýæ‚ðØ‚è‘Ö‚¦‚Ä‚­‚¾‚³‚¢B + + +11.”õl(Rem) +~~~~~~~~~~~~ + ‘ŠŽè‹Ç‚ÉЉ‚Ä‚à‚ç‚Á‚½‚v‚w‚â‚q‚h‚fA‚»‚Ì‘¼‚ÌŒðM’†‚Ì“ÁŽê‚Èî•ñ“™‚ð“ü—Í‚µ‚Ü‚·BÅ‘å‚T‚U•¶Žš‚܂œü—͂ł«‚Ü‚·B + + +12.‚p‚r‚kî•ñ(QSL) +~~~~~~~~~~~~~~~~~~ + ‚p‚r‚kƒ}ƒl[ƒWƒƒ‚̃R[ƒ‹ƒTƒCƒ“‚âA‘ŠŽè‹Ç‚ªŽw’肵‚Ä‚«‚½ZŠ‚È‚Ç‚Ì‚p‚r‚kî•ñ‚ð“ü—Í‚µ‚Ü‚·BÅ‘å‚T‚S•¶Žš‚܂œü—͂ł«‚Ü‚·Bƒrƒ…[ƒŒo—R‚Å‚p‚r‚kƒ}ƒl[ƒWƒƒˆ¶‚ɃJ[ƒh‚ð‘—•t‚µ‚½‚¢ê‡‚ÍA‚p‚r‚kƒ}ƒl[ƒWƒƒ‚̃R[ƒ‹ƒTƒCƒ“‚Ìæ“ª‚É<@>‚ð•t‰Á‚µ‚Ä“ü—Í‚µ‚ĉº‚³‚¢BMMQSL‚Í‚±‚̃tƒB[ƒ‹ƒh‚É<@>ƒR[ƒh‚ª‚ ‚éê‡A‚»‚ê‚É‘±‚­ƒR[ƒ‹ƒTƒCƒ“‚ð“]‘—˜g‚Ɉ󎚂·‚邿‚¤‚ɉð“Ç‚µ‚Ü‚·B‚Ü‚½A‚±‚̃tƒB[ƒ‹ƒh‚É<$>,<~>,<^>ƒR[ƒh‚ň͂܂ꂽ•¶Žš—ñ‚ª‚ ‚éê‡A‚»‚ꂼ‚ê‚Ì•¶Žš—ñ‚ð”CˆÓ‚̈ʒu‚É“WŠJ‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·iMMQSL‚ÍKey[...]Œ`Ž®‚Ì•\‹L‚àˆµ‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·BÚׂÍMMQSL‚̃}ƒjƒ…ƒAƒ‹‚ÌuLOG200ƒL[v‚ðŽQÆ‚µ‚ĉº‚³‚¢jB + + Ž„‚Ìꇂ͈ȉº‚̂悤‚É‹Lq‚µ‚Ä®—‚µ‚Ä‚¢‚Ü‚·B + + @JI3IVL ƒrƒ…[ƒŒo—R‚Ń}ƒl[ƒWƒƒJI3IVL‚É“]‘— + JI3IVL JI3IVL‚ÌZЂɑ—•t + BOX88,MOSCOW,USSR ‹LÚ‚³‚ꂽZЂɑ—•t + CBA95 ‚X‚T”N“x”ŃR[ƒ‹ƒuƒbƒN‚ÌZЂɑ—•t + +¦ ‚p‚r‚kî•ñ‚ÉŒÀ‚炸A”õl‚Æ‚µ‚Ä‚àŽg—p‚Å‚«‚Ü‚·B + + +13.I—¹Žž(End) +~~~~~~~~~~~~~~~~ + I—¹Žž‚ð“ü—Í‚µ‚Ü‚·B“ü—Í‚·‚鎞‚ÍŠJŽnŽž‚Æ“¯‚¶Œ`Ž®‚Å‚·B‚±‚Ì€–Ú‚ÍQSOƒ{ƒ^ƒ“‚ð‰Ÿ‚·‚ÆŽ©“®“I‚Éݒ肳‚ê‚Ü‚·‚̂Ŏ蓮‚Å“ü—Í‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB + + +14.‚p‚r‚k”­sƒ}[ƒN(S) +~~~~~~~~~~~~~~~~~~~~~~ + ‚p‚r‚k‚ð”­s‚µ‚½‚©‚Ç‚¤‚©‚ðƒ`ƒFƒbƒN‚·‚éƒ}[ƒN‚Å‚·B‹L†‚݂͂Ȃ³‚ÌŽ©—R‚Å‚·‚ªAŽ„‚Ìꇂ͈ȉº‚̂悤‚É‚µ‚Ä‚¢‚Ü‚·B + + N ‚m‚n ‚p‚r‚k + - ƒrƒ…[ƒŒo—R‚Å“]‘—Ï‚Ý + p ƒyƒ“ƒfƒBƒ“ƒOi‚p‚r‚kƒ}ƒl[ƒWƒƒ•s–¾“™j + d ƒ_ƒCƒŒƒNƒg‚Å‘—•t‚·‚é—\’è + s ‚r‚`‚r‚d‚Ü‚½‚Í‚r‚`‚d‚Å¿‹‚·‚é—\’è + D ƒ_ƒCƒŒƒNƒg‚Å‘—•tÏ‚Ý + S ‚r‚`‚r‚d‚Ü‚½‚Í‚r‚`‚d‚Å¿‹Ï‚Ý + i‰½‚à“ü—Í‚µ‚È‚¢ê‡‚̓rƒ…[ƒŒo—R‚Å“]‘——\’è‚Æ‚µ‚Ĉµ‚Á‚Ä‚¢‚Ü‚·Bj + + +15.‚p‚r‚kŽó—̃}[ƒN(R) +~~~~~~~~~~~~~~~~~~~~~~ + ‚p‚r‚k‚ðŽó—Ì‚µ‚½‚©‚Ç‚¤‚©‚ðƒ`ƒFƒbƒN‚·‚éƒ}[ƒN‚Å‚·B‹L†‚݂͂Ȃ³‚ñ‚ÌŽ©—R‚Å‚·BŽ„‚ÌꇂÍAˆÈ‰º‚̂悤‚È‹L†‚Ń`ƒFƒbƒN‚µ‚Ä‚¢‚Ü‚·B + + - ƒrƒ…[ƒŒo—R‚ÅŽó—Ì + D ƒ_ƒCƒŒƒNƒg‚ÅŽó—Ì + S ‚r‚`‚r‚d‚Ü‚½‚Í‚r‚`‚d‚Å¿‹‚³‚ꂽ + I –³Œø‚ȃJ[ƒhiDXCC‚ɸڼޯĂ³‚ê‚È‚¢“™j + + +16.Ž©‹ÇŠÂ‹«ƒR[ƒh(Env) +~~~~~~~~~~~~~~~~~~~~~~ + Ž©‹Ç‚̉^—pŠÂ‹«‚ð‚P`‚U‚T‚T‚R‚T‚͈̔͂̔’l‚Å“ü—Í‚µ‚Ü‚·B—Ⴆ‚ÎŽ„‚ÌꇂÍAˆ¢”{–ì‚©‚炒΂Ɉø‚Á‰z‚µ‚½‚Ì‚ÅAˆ¢”{–쎞‘ã‚Í‚PA‚’΂©‚ç‚Í‚Q‚̂悤‚É‹L˜^‚µAˆÚ“®‰^—p‚ÌÛ‚É‚ÍA‚»‚̈ړ®’n‚Ì‚i‚b‚bE‚i‚b‚f”Ô†‚ð‹L˜^‚µ‚Ä‚¢‚Ü‚·B‚Ü‚½ƒRƒ“ƒeƒXƒg“™‚ŕʂ̔Ԇ‚ðŠ„‚èU‚é‚Ì‚à—Ç‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñBŒ‹¥‚ȂǂŎ©•ª‚Ì–¼‘O‚ª•Ï‚í‚Á‚½ê‡‚àA‚±‚̔Ԇ‚ð•ÏX‚·‚邯—Ç‚¢‚Å‚µ‚傤B + + +17.ƒIƒvƒVƒ‡ƒ“‚P(Opt1)^ƒIƒvƒVƒ‡ƒ“‚Q(Opt2) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Žå‚ɃRƒ“ƒeƒXƒg‚ÌۂɃ}ƒ‹ƒ`‚⓾“_‚ð“]‹L‚·‚éƒtƒB[ƒ‹ƒh‚Æ‚µ‚ÄŽg—p‚µ‚Ü‚·BŒ»ó‚ÌMMTTY‚Í‚ÉDXƒGƒ“ƒeƒBƒeƒB–¼A‚ɑ嗤–¼‚ð“]‹L‚·‚邾‚¯‚ÅAƒRƒ“ƒeƒXƒgƒiƒ“ƒo“™‚ðŽ©“®“I‚É“]‹L‚·‚é‹@”\‚Í‘g‚Ýž‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñB + + +18.ƒ†[ƒU‚P(Usr1)^ƒ†[ƒU‚Q(Usr2) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ‚±‚Ì€–Ú‚Íiƒ†[ƒU‚Q‚ÌꇂÍj‚ÌÅŒã‚Ì‚W•¶Žš‚̗̈æ‚ð‹¤—p‚ÅŽg—p‚·‚é“Á•ʂȀ–Ú‚Å‚·B‚±‚Ì€–ڂɃf[ƒ^‚ð“ü—Í‚µ‚½ŒãA€–Úij‚É‚P‚P•¶ŽšˆÈã‚Ì“ü—Í‚ðs‚¤‚ÆA‚±‚Ì€–Ú‚Ì“à—e‚ÍŽ¸‚í‚ê‚Ü‚·B + ‚Ü‚½€–Úij‚É‚P‚P•¶ŽšˆÈã‚Ì‹LÚ‚ª‚ ‚éꇂÉA‚±‚Ì€–ڂɃf[ƒ^‚ð“ü—Í‚·‚邯Aij‚Ì‚P‚P•¶Žš–ÚˆÈ~‚ðŽ¸‚¢‚Ü‚·B + + ‚±‚Ì€–Ú‚ÍÅ‘å‚W•¶Žš‚܂œü—͂ł«‚Ü‚·B + + Žå‚ɃRƒ“ƒeƒXƒg‚ÌۂɃ}ƒ‹ƒ`‚⓾“_‚ð“]‹L‚·‚éƒtƒB[ƒ‹ƒh‚Æ‚µ‚ÄŽg—p‚µ‚Ü‚·BŒ»ó‚ÌMMTTY‚Í‚±‚̃tƒB[ƒ‹ƒh‚ÉŽ©“®“I‚É“]‹L‚·‚é‹@”\‚ª‘g‚Ýž‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñD + \ No newline at end of file diff --git a/mmw.h b/mmw.h new file mode 100644 index 0000000..528a77c --- /dev/null +++ b/mmw.h @@ -0,0 +1,46 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +#ifndef MMW_H +#define MMW_H + +typedef void (__stdcall *tmmwPumpMessages)(void); +typedef LONG (__stdcall *tmmwGetTimeout)(void); +typedef void (__stdcall *tmmwSetPTT)(LONG tx); + +typedef LONG (__stdcall *tmmwInOpen)(DWORD sampfreq, DWORD size); +typedef void (__stdcall *tmmwInClose)(void); +typedef BOOL (__stdcall *tmmwInRead)(SHORT *buf); + +typedef LONG (__stdcall *tmmwGetInExist)(void); +typedef BOOL (__stdcall *tmmwIsInCritical)(void); + +typedef LONG (__stdcall *tmmwOutOpen)(DWORD sampfreq, DWORD size); +typedef void (__stdcall *tmmwOutAbort)(void); +typedef void (__stdcall *tmmwOutFlush)(void); +typedef BOOL (__stdcall *tmmwOutWrite)(const SHORT *buf); + +typedef BOOL (__stdcall *tmmwIsOutCritical)(void); +typedef BOOL (__stdcall *tmmwIsOutFull)(void); +typedef LONG (__stdcall *tmmwGetOutRemaining)(void); +typedef LONG (__stdcall *tmmwGetOutCounter)(void); +typedef void (__stdcall *tmmwSetOutCounter)(LONG count); + +#endif + diff --git a/my.res b/my.res new file mode 100644 index 0000000000000000000000000000000000000000..39cdf0dcda35e8a64cfe83206ef4efa77cd4905c GIT binary patch literal 1384 zcmd_p%Wd0G6h+bN00A;g2jS2|m+(qqDW?>c!p=_CvuFfK3z58NZIR*?Kbo02XkWbi z>+$~mYyCIdtY3TO$Im~TynDHGdz&Ax6>qP9|1Os|f>ED4U5BR3@<%9hYC_o`T!b>0 zCX~4~q3j`xu#asIT!b=*CKO@5rp&1cWq;8{D068-nOhUeKBz_LbAZb?2xSgMDEr_S zq0FfXWuKTuD068-nOhUeK8cIqy3IbJi%{m!gtAZeB9u8bq3jE>2xTr!D06E<*%xgQ z`dq+e`hJ!. +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "RadioSet.h" +#include "Main.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" + +//Define Maker groups; index is used by IsCompatible to select the correct Maker based on PollType (RADIO_POLLx) +LPCSTR __MK[]={ + "Yaesu FT 1000D, 1000MP, 920", //AA6YQ 1.66 cosmetic, MakerIndex=0 + "Yaesu FT 9000, 2000, 950, 450", //AA6YQ 1.66 , MakerIndex=1 + "Yaesu FT 736, 817, 847, 857, 897", //AA6YQ 1.66 cosmetic, MakerIndex=2 + "Icom xx=addr 01-7F", // , MakerIndex=3 + "Ten-Tec Omni VI xx=addr 00-64", // , MakerIndex=4 + "Kenwood, Elecraft ", // , MakerIndex=5 + "JRC JST-245", // , MakerIndex=6 + "Clear", // , MakerIndex=6 + NULL, // , MakerIndex=8 +}; +LPCSTR __MT[][3]={ + {"", "\\$000000000F", "\\$000000010F\\w10" }, + {"", "TX0;", "TX1;\\w10" }, //AA6YQ 1.66 + {"\\$0000000000", "\\$0000000088", "\\$0000000008\\w10" }, + {"", "\\$FEFExxE01C0000FD", "\\$FEFExxE01C0001FD\\w10" }, + {"", "\\$FEFExxE01602FD", "\\$FEFExxE01601FD\\w10" }, + {"", "RX;", "TX;\\w10" }, + {"", "H1\\rX0\\rH0\\r", "H1\\rX1\\rH0\\r\\w10" }, + {"", "", "" }, +}; + +#define MAKER_UNKNOWN 6 + +typedef struct { + LPCSTR pKey; + int r; +}POLLDEF; + +//Define a VFO group for each Maker Index + +const POLLDEF __VT0[]={ + { "NONE", 0 }, + { "FT-1000D", RADIO_POLLFT1000D }, + { "FT-1000MP", RADIO_POLLYAESUHF }, + { "FT-920", RADIO_POLLFT920 }, + { NULL, 0 }, +}; + +const POLLDEF __VT1[]={ + { "NONE", 0 }, + { "FT-9000", RADIO_POLLFT9000 }, //1.66B AA6YQ + { "FT-2000", RADIO_POLLFT2000 }, //1.66B AA6YQ + { "FT-950", RADIO_POLLFT950 }, //1.66B AA6YQ + { "FT-450", RADIO_POLLFT450 }, //1.66B AA6YQ + { NULL, 0 }, +}; + +const POLLDEF __VT2[]={ + { "NONE", 0 }, + { "FT-817, 847, 857, 897", RADIO_POLLYAESUVU }, + { NULL, 0 }, +}; +const POLLDEF __VT3[]={ + { "NONE", 0 }, + { "Icom CI-V", RADIO_POLLICOM }, + { "Icom CI-V (no inquiry)", RADIO_POLLICOMN }, + { NULL, 0 }, +}; +const POLLDEF __VT4[]={ + { "NONE", 0 }, + { "Ten-Tec Omni VI", RADIO_POLLOMNIVI }, + { "Ten-Tec Omni VI (no inquiry)", RADIO_POLLOMNIVIN }, + { NULL, 0 }, +}; +const POLLDEF __VT5[]={ + { "NONE", 0 }, + { "Kenwood, Elecraft", RADIO_POLLKENWOOD }, + { "Kenwood, Elecraft (use auto info)", RADIO_POLLKENWOODN }, + { NULL, 0 }, +}; +const POLLDEF __VT6[]={ + { "NONE", 0 }, + { "JST245", RADIO_POLLJST245 }, + { "JST245 (use auto info)", RADIO_POLLJST245N }, + { NULL, 0 }, +}; + + + +const POLLDEF __VTUNKNOWN[]={ + { "NONE", 0 }, + { "YAESU FT-1000MP", RADIO_POLLYAESUHF }, + { "YAESU FT-1000D", RADIO_POLLFT1000D }, + { "YAESU FT-920", RADIO_POLLFT920 }, + { "YAESU FT-847", RADIO_POLLYAESUVU }, + { "ICOM CI-V", RADIO_POLLICOM }, + { "ICOM CI-V (no inquiry)", RADIO_POLLICOMN }, + { "Ten-Tec Omni VI", RADIO_POLLOMNIVI }, + { "Ten-Tec Omni VI (no inquiry)", RADIO_POLLOMNIVIN }, + { "KENWOOD", RADIO_POLLKENWOOD }, + { "KENWOOD (use auto info)", RADIO_POLLKENWOODN }, + { "JST245", RADIO_POLLJST245 }, + { "JST245 (use auto info)", RADIO_POLLJST245N }, + { "YAESU FT-9000", RADIO_POLLFT9000 }, //1.66B AA6YQ + { "YAESU FT-2000", RADIO_POLLFT2000 }, //1.66B AA6YQ + { "YAESU FT-950", RADIO_POLLFT950 }, //1.66B AA6YQ + { "YAESU FT-450", RADIO_POLLFT450 }, //1.66B AA6YQ + { NULL, 0 }, +}; +const POLLDEF *__VL[]={ + __VT0, __VT1, __VT2, __VT3, __VT4, __VT5, __VT6, __VTUNKNOWN, NULL, +}; +//--------------------------------------------------------------------- +__fastcall TRADIOSetDlg::TRADIOSetDlg(TComponent* AOwner) + : TForm(AOwner) +{ + FormStyle = ((TForm *)AOwner)->FormStyle; + Font->Name = ((TForm *)AOwner)->Font->Name; + Font->Charset = ((TForm *)AOwner)->Font->Charset; + if( Font->Charset != SHIFTJIS_CHARSET ){ + CancelBtn->Caption = "Cancel"; + } + int i; + for( i = 0; __MK[i] != NULL; i++ ){ + Maker->Items->Add(__MK[i]); + } + m_InitWidth = CmdInit->Width; + m_PollType = 0; + m_Maker = 0; + m_MMList.QueryList("MMR"); + for( int i = 0; i < m_MMList.GetCount(); i++ ){ + PortName->Items->Insert(1, m_MMList.GetItemName(i)); + } + PortName->DropDownCount = PortName->Items->Count; + m_DisEvent = 0; +} +//--------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::UpdateUI(void) +{ + int f; + if( !strcmpi(AnsiString(PortName->Text).c_str(), "PSKGNR")|| //JA7UDE 0428 + !strcmpi(AnsiString(PortName->Text).c_str(), "WD5GNR")|| //JA7UDE 0428 + !strcmpi(AnsiString(PortName->Text).c_str(), "LOGGER") ){ //JA7UDE 0428 + GCmd->Visible = FALSE; + if( !strcmpi(AnsiString(PortName->Text).c_str(), "LOGGER") ){ //JA7UDE 0428 + GGNR->Visible = FALSE; +// LTNX->Caption = "Thanks to Bob Furzer (K4CY) who is releasing the fine programs."; + } + else { + GGNR->Visible = TRUE; +// LTNX->Caption = "Thanks to Al Williams (WD5GNR) who is releasing the fine programs."; + } + LGNR->Visible = OpenGNR->Checked; + CmdGNR->Visible = OpenGNR->Checked; + RefBtn->Visible = OpenGNR->Checked; + LPTT->Visible = OpenGNR->Checked; + Maker->Visible = FALSE; + LoadBtn->Visible = FALSE; + SaveBtn->Visible = FALSE; + f = FALSE; + } + else { + GGNR->Visible = FALSE; + GCmd->Visible = TRUE; + Maker->Visible = TRUE; + LoadBtn->Visible = TRUE; + SaveBtn->Visible = TRUE; + f = IsXX(); + Lxx->Visible = f; + Cmdxx->Visible = f; + AddrScan->Visible = f && m_PollType; + if( f ){ + CmdInit->Width = m_InitWidth; + } + else { + CmdInit->Width = CmdRx->Width; + } + f = (m_MMList.IndexOf(AnsiString(PortName->Text).c_str()) < 0) ? TRUE : FALSE; //JA7UDE 0428 + } + Label2->Enabled = f; + Baud->Enabled = f; + BitLen->Enabled = f; + Stop->Enabled = f; + Parity->Enabled = f; + GB3->Enabled = f; + flwXON->Enabled = f; + flwCTS->Enabled = f && (!CBPTT->Checked); + CBPTT->Enabled = f; + Label3->Enabled = f; + ByteWait->Enabled = f; + Label8->Enabled = f; + + SBHelp->Visible = !JanHelp.IsEmpty(); +} +//--------------------------------------------------------------------- +int __fastcall TRADIOSetDlg::Execute(void) +{ + PortName->Text = RADIO.StrPort; + Baud->Text = RADIO.BaudRate; + BitLen->ItemIndex = RADIO.BitLen; + Parity->ItemIndex = RADIO.Parity; + Stop->ItemIndex = RADIO.Stop; + flwXON->Checked = RADIO.flwXON; + flwCTS->Checked = RADIO.flwCTS; + CBPTT->Checked = RADIO.usePTT; + + ByteWait->Text = int(RADIO.ByteWait); + + char bf[32]; + sprintf( bf, "%02X", RADIO.Cmdxx); + Cmdxx->Text = bf; + CmdInit->Text = RADIO.CmdInit; + CmdRx->Text = RADIO.CmdRx; + CmdTx->Text = RADIO.CmdTx; + + CmdGNR->Text = RADIO.cmdGNR; + OpenGNR->Checked = RADIO.openGNR; + m_PollType = RADIO.PollType; + PollInt->Text = (RADIO.PollInterval + 5)/10.0; + FreqOffset->ItemIndex = RADIO.PollOffset; + AddrScan->Checked = RADIO.PollScan; + SetMaker(); + UpdateUI(); + if( ShowModal() == IDOK ){ + StrCopy(RADIO.StrPort, AnsiString(PortName->Text).c_str(), 31); //JA7UDE 0428 + int dd; + if( sscanf(AnsiString(Baud->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + RADIO.BaudRate = dd; + } + RADIO.BitLen = BitLen->ItemIndex; + RADIO.Parity = Parity->ItemIndex; + RADIO.Stop = Stop->ItemIndex; + RADIO.flwXON = flwXON->Checked; + RADIO.flwCTS = flwCTS->Checked; + RADIO.usePTT = CBPTT->Checked; + if( sscanf(AnsiString(ByteWait->Text).c_str(), "%u", &dd) == 1 ){ //JA7UDE 0428 + if( (dd >= 0) && (dd <= 1000) ){ + RADIO.ByteWait = dd; + } + } + if( sscanf(AnsiString(Cmdxx->Text).c_str(), "%X", &dd) == 1 ){ //JA7UDE 0428 + RADIO.Cmdxx = dd & 0x000000ff; + } + RADIO.CmdInit = CmdInit->Text; + RADIO.CmdRx = CmdRx->Text; + RADIO.CmdTx = CmdTx->Text; + + RADIO.cmdGNR = CmdGNR->Text; + RADIO.openGNR = OpenGNR->Checked; + + RADIO.PollType = m_PollType; + double d; + if( sscanf(AnsiString(PollInt->Text).c_str(), "%lf", &d) == 1 ){ //JA7UDE 0428 + if( d >= 0.5 ){ + RADIO.PollInterval = int((d * 10.0) - 5); + if( RADIO.PollInterval < 0 ) RADIO.PollInterval = 0; + } + } + RADIO.PollOffset = FreqOffset->ItemIndex; + RADIO.PollScan = AddrScan->Checked; + RADIO.change = 1; + return TRUE; + } + else { + return FALSE; + } +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::LoadBtnClick(TObject *Sender) +{ +// + TOpenDialog *pBox = MmttyWd->OpenDialog; + pBox->Options >> ofCreatePrompt; + pBox->Options << ofFileMustExist; + if(Font->Charset != SHIFTJIS_CHARSET){ + pBox->Title = "Open command file"; + pBox->Filter = "Command files(*.rcm)|*.rcm|"; + } + else { + pBox->Title = "ƒRƒ}ƒ“ƒh’è‹`ƒtƒ@ƒCƒ‹‚ðŠJ‚­"; + pBox->Filter = "ƒRƒ}ƒ“ƒh’è‹`ƒtƒ@ƒCƒ‹(*.rcm)|*.rcm|"; + } + pBox->FileName = ""; + pBox->DefaultExt = "rcm"; + pBox->InitialDir = BgnDir; + NormalWindow(this); + if( pBox->Execute() == TRUE ){ + CWaitCursor w; + TMemIniFile *pIniFile = new TMemIniFile(pBox->FileName); + CmdInit->Text = pIniFile->ReadString("RADIO", "CmdInit", CmdInit->Text); + CmdRx->Text = pIniFile->ReadString("RADIO", "CmdRx", CmdRx->Text); + CmdTx->Text = pIniFile->ReadString("RADIO", "CmdTx", CmdTx->Text); + Cmdxx->Text = pIniFile->ReadString("RADIO", "Cmdxx", Cmdxx->Text); + m_PollType = pIniFile->ReadInteger("RADIO", "PollType", 0); + FreqOffset->ItemIndex = pIniFile->ReadInteger("RADIO", "PollOffset", 5); + PollInt->Text = (pIniFile->ReadInteger("RADIO", "PollInterval", 0) + 5)/10.0; + AddrScan->Checked = 0; + delete pIniFile; + SetMaker(); + UpdateUI(); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::SaveBtnClick(TObject *Sender) +{ + TSaveDialog *pBox = MmttyWd->SaveDialog; + if( (Font->Charset != SHIFTJIS_CHARSET) ){ + pBox->Title = "Save command file"; + pBox->Filter = "Command files(*.rcm)|*.rcm|"; + } + else { + pBox->Title = "ƒRƒ}ƒ“ƒh’è‹`ƒtƒ@ƒCƒ‹‚Ìì¬"; + pBox->Filter = "ƒRƒ}ƒ“ƒh’è‹`ƒtƒ@ƒCƒ‹(*.rcm)|*.rcm|"; + } + pBox->FileName = "MyRIG.rcm"; + pBox->DefaultExt = "rcm"; + pBox->InitialDir = BgnDir; + NormalWindow(this); + if( pBox->Execute() == TRUE ){ + CWaitCursor w; + TMemIniFile *pIniFile = new TMemIniFile(pBox->FileName); + pIniFile->WriteString("RADIO", "CmdInit", CmdInit->Text); + pIniFile->WriteString("RADIO", "CmdRx", CmdRx->Text); + pIniFile->WriteString("RADIO", "CmdTx", CmdTx->Text); + pIniFile->WriteString("RADIO", "Cmdxx", Cmdxx->Text); + pIniFile->WriteInteger("RADIO", "PollType", m_PollType); + pIniFile->WriteInteger("RADIO", "PollOffset", FreqOffset->ItemIndex); + double d; + int dd = 5; + if( sscanf(AnsiString(PollInt->Text).c_str(), "%lf", &d) == 1 ){ //JA7UDE 0428 + if( d >= 0.5 ){ + dd = int((d * 10.0) - 5); + if( dd < 0 ) dd = 0; + } + } + pIniFile->WriteInteger("RADIO", "PollInterval", dd); + pIniFile->UpdateFile(); + delete pIniFile; + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +int __fastcall TRADIOSetDlg::IsXX(void) +{ + if( strstr(AnsiString(Maker->Text).c_str(), "xx") != NULL ) return 1; //JA7UDE 0428 + if( m_PollType == RADIO_POLLICOM ) return 1; + if( m_PollType == RADIO_POLLICOMN ) return 1; + if( m_PollType == RADIO_POLLOMNIVI ) return 1; + if( m_PollType == RADIO_POLLOMNIVIN ) return 1; + return 0; +} +//--------------------------------------------------------------------------- +int __fastcall TRADIOSetDlg::IsCompatible(int PollType, int MakerIndex) +{ + + if (MakerIndex == 5) { //MakerIndex 5 is Kenwood + if (PollType == 0){ + return 1; + } + else if (PollType == RADIO_POLLKENWOOD) { + return 1; + } + else if (PollType == RADIO_POLLKENWOODN) { + return 1; + } + else { + return 0; + } + } + else if (MakerIndex == 1) { //MakerIndex 1 is Yaesu FT-9000 et al + if (PollType == 0){ + return 1; + } + else if (PollType == RADIO_POLLFT9000) { + return 1; + } + else if (PollType == RADIO_POLLFT2000) { + return 1; + } + else if (PollType == RADIO_POLLFT950) { + return 1; + } + else if (PollType == RADIO_POLLFT450) { + return 1; + } + else { + return 0; + } + + } + else { + return 1; + } +} +//--------------------------------------------------------------------------- +int __fastcall TRADIOSetDlg::IsSame(LPCSTR t, LPCSTR v) +{ + for( ; *v && *t; v++, t++ ){ + if( (*v=='x')&&(*(v+1)=='x') ){ + t++; + v++; + } + else if( (*t == '\\')&&(*(t+1) == 'w') ){ + return 1; + } + else if( (*v == '\\')&&(*(v+1) == 'w') ){ + return 1; + } + else if( *t != *v ){ + return 0; + } + } + return *t != *v ? 0 : 1; +} +//--------------------------------------------------------------------------- +int __fastcall TRADIOSetDlg::GetVFOType(LPCSTR pKey) +{ + for( int i = 0; __VL[i] != NULL; i++ ){ + const POLLDEF *p = __VL[i]; + for( ; p->pKey != NULL; p++ ){ + if( !strcmp(p->pKey, pKey) ) return p->r; + } + } + return 0; +} +//--------------------------------------------------------------------------- +LPCSTR __fastcall TRADIOSetDlg::GetVFOName(int r) +{ + for( int i = 0; __VL[i] != NULL; i++ ){ + const POLLDEF *p = __VL[i]; + for( ; p->pKey != NULL; p++ ){ + if( p->r == r ) return p->pKey; + } + } + return "NONE"; +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::SetVFOList(void) +{ + m_DisEvent++; + const POLLDEF *p = __VL[m_Maker]; + VFOType->Items->Clear(); + for( ; p->pKey != NULL; p++ ){ + VFOType->Items->Add(p->pKey); + } + VFOType->Text = GetVFOName(m_PollType); + m_DisEvent--; +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::SetMaker(void) +{ + int i; + + for( i = 0; __MK[i] != NULL; i++ ){ + if( IsSame(AnsiString(CmdRx->Text).c_str(), __MT[i][1]) && IsSame(AnsiString(CmdTx->Text).c_str(), __MT[i][2]) && IsCompatible (m_PollType,i)){ //AA6YQ 1.66//JA7UDE 0428 + m_DisEvent++; + Maker->Text = __MK[i]; + m_DisEvent--; + m_Maker = i; + SetVFOList(); + return; + } + } + m_Maker = MAKER_UNKNOWN; + m_DisEvent++; + Maker->Text = "Unknown"; + SetVFOList(); + m_DisEvent--; +} + +void __fastcall TRADIOSetDlg::MakerChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + m_PollType = 0; + VFOType->Text = "NONE"; + PollInt->Text = "1"; + AddrScan->Checked = 0; + for( int i = 0; __MK[i] != NULL; i++ ){ + if( Maker->Text == __MK[i] ){ + CmdInit->Text = __MT[i][0]; + CmdRx->Text = __MT[i][1]; + CmdTx->Text = __MT[i][2]; + m_Maker = i; + if( m_Maker == 3 ){ // Ten-Tec Omni-VI + Cmdxx->Text = "04"; + } + SetVFOList(); + break; + } + } + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::PortNameChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::RefBtnClick(TObject *Sender) +{ + TOpenDialog *pBox = MmttyWd->OpenDialog; + pBox->Options >> ofCreatePrompt; + pBox->Options << ofFileMustExist; + if(Font->Charset != SHIFTJIS_CHARSET){ + pBox->Title = "Program file"; + pBox->Filter = "Program files(*.exe;*.lnk)|*.exe;*.lnk|"; + } + else { + pBox->Title = "ƒvƒƒOƒ‰ƒ€ƒtƒ@ƒCƒ‹"; + pBox->Filter = "ƒvƒƒOƒ‰ƒ€ƒtƒ@ƒCƒ‹(*.exe;*.lnk)|*.exe;*.lnk|"; + } + pBox->FileName = CmdGNR->Text.c_str(); + pBox->DefaultExt = "exe"; + char bf[256]; + SetDirName(bf, AnsiString(CmdGNR->Text).c_str()); //JA7UDE 0428 + pBox->InitialDir = bf; + NormalWindow(this); + if( pBox->Execute() == TRUE ){ + CmdGNR->Text = pBox->FileName.c_str(); + } + TopWindow(this); +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::VFOTypeChange(TObject *Sender) +{ + if( m_DisEvent ) return; + + m_PollType = GetVFOType(AnsiString(VFOType->Text).c_str()); //JA7UDE 0428 + + UpdateUI(); +} +//--------------------------------------------------------------------------- +void __fastcall TRADIOSetDlg::SBHelpClick(TObject *Sender) +{ + ShowHtmlHelp("radiocommand.htm"); +} +//--------------------------------------------------------------------------- + diff --git a/radioset.dfm b/radioset.dfm new file mode 100644 index 0000000000000000000000000000000000000000..b2fb8e98cdd2da83f24277eb9d76e8f744f84c95 GIT binary patch literal 4669 zcmbVP&2Qtz6{q+ylqGxPEZStZ4Nz`+Xj&v*$+m1S&`n@T{!mty1d++6K!Ai6M>b=M zRLJpKF3{vpXwh3+6zHYr7Da*fQXoN)pqJkIC-l-&FYQ?!&YR&-Vp6ElVfdkWzxUp6 z-WTT;#Tg#9JAM1eX?IVQ+UED}DvC2WuC4R;n6!h7D(qqRdKZt0_8&!aqNy5Gn^ElH z*e16DHp}Np+joQL!fd%y;zuFc7`mPxS)*t&aYJvt75F$Lr`W%^B-+nPRd{~td*o94 zTs2xz5XI)&C}@)K*d5{Z<0vFstxGpfFfljn)6TK;X2*W7b$U3Y23O#3CS+2fz#Uyx z**nmn{%egr_1p=*TUHe1wfWB6Qfl)**8WuctoFMa05IFD%AJ1TwPNfN+)q7PD-WW? zPn|IDOe1>~V;r`q@i?vwVm~DI$fX{mY1E5CjM$S`-Wd2Z93%rAcf!%7`hLa1Gw!Z> zUs-qTDaKy&nh;8j-8{v?6xh_%lugYq8H@|{KH?sHCu6eo#v&W*hdsOVb(lcUIsODE zRuA7;!-yVBo&_{cno-~>m4O>mXH)vh=G%Vap9i>X_CtDLqbsutwzCICK~C2_#{pvN zK66OjVE#;nKik5e`r(9vJC}^BT9u9J%osfXizm^tcZ;P^< zgD436@WP^zkK<>qgfY4lCIOro7%y!2ZV^XM@F-Cf!#VPNV$$dhs{;NG$FGZ!Qtz89;Fka& z@bc)+0($@Jp{o)-4GLf<)g_|B0b)5h>dXHZH=0DBQS>#3CeC?86V9Zuv{GEU;RQA~_#1dsl&Zrz0?YZzag0CgkH@sQ=SD`Ju+Z5r2;Fj2LQ4#AUT%O_`VSq^Hy z;m)fc3f0eNzE{%SmP^I9q%$T1l{NIFHv}@FhW<*BDQoB_vW7nYwB4Wr*1&PBKI_;L z7-e-|R8_s3fwTIq4meGLuvM1#Y6>}sql?&`wz%kDSsKN&w~Aba?L`;xQdj z;NY$xWO|&7*Na@}bbIc^O0tgv4)3EfG|c`KhndxzjH(CR>VGOifeeg$>HdeUAWE?1 zUK85XiBHFq;8vcdnkl_Ah+>k~Q<0LHTSos$=GDv0D>;!o5nAO$qV}JdZ9I0b1F}}7 zy~PcNIH3<}Nvh3}w$^gP5l%-t;O*I0YCy1aO$7d3ny|{vJedD_{?Ysw^95b1)K$t4 z6WU3$4w1(4Kvg+?G7Wwz)8M(363fG5pLQcU@kvZo#6CM39r z_8_|rZfnqMU*f_)_!8l!d+jX=?||@cL0D*ht0-Jar{yi{#w|=V2LN#f;VK~R6(Q6K z?a;DI&^Z|51?Yq}dXLljhb$T&Y_#KO+Kz6*R&*T_wX#avP-LT63d`kEs`vW6Bc!+b zXLYu2vvr59yKHT+b&sw4Y&~G>BV?pfHMrE_vJICVxa`8E0hc|52KE!0eyp;JW~ryA z0u(-kQ{Wt^KN1wK)Fes;&+6N?8q&9S({=YCT_5ey)u=y8|1fqA(tnJ`K7C0o$~REd z^hp;(KJoeHF^{Vs3!_d&7NKg}C9W0V@Pb?}8)599`y@feL3+uxN_A18Zj*?AviuD` z0ENDHi~88+Wkq_OYCy*Jk{)eQ52BwRKDh4TyszP+G}eVXY<&u~bG0nf|% zr7zVAo?pLTRP}LD)%rMyZs_-HNa84vb;8Isb~Fxd-s$%sUDjFgeu1A#C;(;cF4L_K z-=U+51cSKaV?v77a%@0@!n5_&Xd2xrfoMg{Cvx+a;HR`O0ImOCjN+j%ZKWtKj5?(n zQX4g-)oHA1_4JMgFHX_Vcr!pN3hXqW^+WD@oRBL zTmdEd)#z5qi1I($VAcoCZsdAdpZbXLBs<{`g$~&X^;AGA(K03L9Eo>$F+Z5L`wV9a zK3PFQDj*f;QUOPjBLtuAjWhQO#}GB0lq2l}{xPn-n$0~c9kn5Abd`Z-bHjfD$1X`A literal 0 HcmV?d00001 diff --git a/radioset.h b/radioset.h new file mode 100644 index 0000000..10fc7da --- /dev/null +++ b/radioset.h @@ -0,0 +1,127 @@ +//Copyright+LGPL + +//----------------------------------------------------------------------------------------------------------------------------------------------- +// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba, Dave Bernstein +//----------------------------------------------------------------------------------------------------------------------------------------------- +// This file is part of MMTTY. + +// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +// MMTTY 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 Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see +// . +//----------------------------------------------------------------------------------------------------------------------------------------------- + + + +//---------------------------------------------------------------------------- +#ifndef RadioSetH +#define RadioSetH +//---------------------------------------------------------------------------- +/* +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +*/ +//---------------------------------------------------------------------------- +#include "Cradio.h" +#include +#include +#include +#include +#include +/* +#include +#include +*/ +//---------------------------------------------------------------------------- +class TRADIOSetDlg : public TForm +{ +__published: + TButton *OKBtn; + TButton *CancelBtn; + TGroupBox *GB1; + TComboBox *PortName; + TLabel *Label1; + TLabel *Label2; + TComboBox *Baud; + TRadioGroup *BitLen; + TRadioGroup *Stop; + TRadioGroup *Parity; + TGroupBox *GB3; + TCheckBox *flwXON; + TCheckBox *flwCTS; + TLabel *Label3; + TComboBox *ByteWait; + TLabel *Label8; + TButton *LoadBtn; + TButton *SaveBtn; + TComboBox *Maker; + TGroupBox *GGNR; + TLabel *LGNR; + TEdit *CmdGNR; + TButton *RefBtn; + TCheckBox *OpenGNR; + TLabel *LPTT; + TGroupBox *GCmd; + TLabel *Label4; + TLabel *Label5; + TLabel *Label6; + TLabel *Lxx; + TLabel *LVFO; + TEdit *CmdInit; + TEdit *CmdRx; + TEdit *CmdTx; + TEdit *Cmdxx; + TComboBox *VFOType; + TRadioGroup *FreqOffset; + TComboBox *PollInt; + TLabel *LInt; + TLabel *LInts; + TCheckBox *AddrScan; + TSpeedButton *SBHelp; + TGroupBox *GB2; + TCheckBox *CBPTT; + TLabel *Label7; + void __fastcall LoadBtnClick(TObject *Sender); + void __fastcall SaveBtnClick(TObject *Sender); + void __fastcall MakerChange(TObject *Sender); + void __fastcall PortNameChange(TObject *Sender); + void __fastcall RefBtnClick(TObject *Sender); + + void __fastcall VFOTypeChange(TObject *Sender); + void __fastcall SBHelpClick(TObject *Sender); + + + +private: + int m_DisEvent; + int __fastcall IsXX(void); + int __fastcall IsSame(LPCSTR v, LPCSTR t); + int __fastcall IsCompatible(int PollType, int MakerIndex); //AA6YQ 1.6.6 + void __fastcall SetMaker(void); + void __fastcall UpdateUI(void); + void __fastcall SetVFOList(void); + int __fastcall GetVFOType(LPCSTR pKey); + LPCSTR __fastcall GetVFOName(int r); + int m_Maker; + int m_PollType; + int m_InitWidth; + CMMList m_MMList; +public: + virtual __fastcall TRADIOSetDlg(TComponent* AOwner); + int __fastcall Execute(void); +}; +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#endif diff --git a/remote.txt b/remote.txt new file mode 100644 index 0000000..5d562f2 --- /dev/null +++ b/remote.txt @@ -0,0 +1,742 @@ +MMTTY‚ÌƒŠƒ‚[ƒg‹@”\ +(Please look at "Eremote.txt" if you want to read this in English) + + 2000.09.30 ‰”Å JE3HHT X@@½ + 2010.09.21 ‰ü’è JE3HHT X@@½ + +@–{‘‚É‚ÍA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚©‚çMMTTY‚ð§Œä‚·‚é•û–@‚ð‹LÚ‚µ‚Ü‚·B‚ ‚È‚½‚Í‚±‚Ì•û–@‚ðŽg‚Á‚ÄAMMTTY‚ÌRTTYƒTƒEƒ“ƒhƒGƒ“ƒWƒ“‚¾‚¯‚ð‚ ‚È‚½‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚ç—˜—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + +-- ‰ü’è—š—ð ----------------------------------------------------- +ƒXƒCƒbƒ`î•ñ +2010.09.21 ‹N“®ƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ðŽw’è‚·‚é‹N“®ƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +2010.09.21 ‹¤—Lƒƒ‚ƒŠ‚Ì–¼‘O‚ðŽw’è‚·‚é‹N“®ƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +2010.09.19 ƒXƒCƒbƒ`î•ñ‚ÉDual Peak Filter‚ð’ljÁ +2010.09.16 RXM_PTTFSK‚̒ljÁ +2003.01.30 TXM_SHOWSETUP, TXM_SHOWPROFILE‚̒ljÁ +2003.01.28 RXM_ENBSHARED‚̒ljÁ +2003.01.28 -Z, -a ‹N“®ƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +2003.01.23 RXM_ENBFOCUS, RXM_SETDEFFREQ, RXM_SETLENGTH‚̒ljÁ +2002.07.02 TXM_RADIOFREQ‚ð’ljÁ +2002.04.14 RXM_SHOWSETUP‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì–³Œø‰»ƒXƒCƒbƒ`‚ð’ljÁ +2000.02.11 ‹¤—Lƒƒ‚ƒŠ‚ÉProfileNames[]‚ð’ljÁ(Ver1.61‚©‚ç) +2000.02.11 TXM_DEFSHIFT‚ð’ljÁ(Ver1.61‚©‚ç) +2000.02.11 TXM_NOTCH‚ð’ljÁ(Ver1.61‚©‚ç) +2000.02.11 RXM_TIMER‚ð’ljÁ(Ver1.61‚©‚ç) +2000.01.05 ‹¤—Lƒƒ‚ƒŠ‚ɕϔ‚ð’ljÁ(Ver1.61‚©‚ç) +2000.01.05 ƒvƒƒtƒB[ƒ‹‹@”\‚̒ljÁ(Ver1.61‚©‚ç) +2000.12.23 ‘—Mƒoƒbƒtƒ@ƒNƒŠƒA‚̒ljÁ(Ver1.61‚©‚ç) +2000.12.13 ƒL[ƒ{[ƒhƒoƒbƒtƒ@Œo—R‚Å‘—M‚Å‚«‚é‹@”\‚ð’ljÁ(Ver1.60‚©‚ç) +2000.11.26 -n‹N“®ƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Ver1.60‚©‚ç) +2000.11.10 -h‹N“®ƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Ver1.60‚©‚ç) +2000.11.08 ‹¤—Lƒƒ‚ƒŠ‚Ìtitle‚Ì”z—ñ‚̃TƒCƒY‚ÌŒë‚è‚ðC³ +2000.11.08 Bob Furzer(K4CY)‚©‚ç’ñ‹Ÿ‚³‚ꂽVBƒTƒ“ƒvƒ‹ƒR[ƒh‚ð’ljÁ +2000.11.08 RXM_NOTCHƒƒbƒZ[ƒW‚ð’ljÁ(Ver1.59A‚©‚ç) +2000.11.08 ƒXƒCƒbƒ`î•ñ‚ÌNotch/LMS‚ð’ljÁ(Ver1.59A‚©‚ç) +----------------------------------------------------------------- + +›‚Í‚¶‚ß‚É +~~~~~~~~~~ +@Ž„‚ÍA‘½‚­‚Ì•û‚©‚烃Mƒ“ƒO‚âƒRƒ“ƒeƒXƒg‚ÉŠÖ‚·‚éE-Mail‚ðŽóM‚µ‚Ü‚µ‚½BŽ„‚ÌŽžŠÔ‚ÍŒÀ‚ç‚ê‚Ä‚¢‚邽‚ß‚ÉA‚»‚ê‚ç‚Ì•û‚Ì—v‹‚ð‘‹}‚É–ž‚½‚·‚±‚Ƃ͎„‚Ì”\—͂𒴂¦‚Ä‚¢‚邯l‚¦‚Ü‚µ‚½B + +@‚»‚±‚ÅMMTTY‚𑼂̃vƒƒOƒ‰ƒ€‚©‚ç—˜—p‚Å‚«‚邿‚¤‚ÉA’P‚Ȃ郂ƒfƒ€‚Æ‚·‚鎎‚݂Ɏæ‚è‘g‚݂܂µ‚½B‚Ü‚¸TNCƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“ƒ‚[ƒh‚ð’ljÁ‚µ‚Ü‚µ‚½B‚ ‚È‚½‚Í‚Q‘ä‚̃pƒ\ƒRƒ“‚ðƒNƒƒXƒP[ƒuƒ‹‚ÅÚ‘±‚·‚é‚©A‚Ü‚½‚Í‚P‘ä‚̃pƒ\ƒRƒ“‚Ìã‚Å‚àA‚»‚±‚ɉ¼‘z‚b‚‚ƒ|[ƒg‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚ê‚ÎAMMTTY‚ð‚s‚m‚b‚Æ‚µ‚Ä‘¼‚̃vƒƒOƒ‰ƒ€‚©‚ç—˜—p‚Å‚«‚Ü‚·B + +@‚µ‚©‚µA‚Q‘ä‚̃pƒ\ƒRƒ“‚ð•K—v‚Æ‚·‚邱‚Æ‚ÍA‚±‚Ì‹@”\‚ÌÅ‘å‚ÌŽã“_‚Å‚·B‚Ü‚½‚P‘ä‚̃pƒ\ƒRƒ“ã‚Å“®ì‚³‚¹‚éꇂà‚R‚ˆÈã‚Ì•¨—Comƒ|[ƒg‚ª‘¶Ý‚·‚é‚©A‚Ü‚½‚͉¼‘z‚b‚‚ƒ|[ƒg‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + +@‚»‚±‚ÅŽ„‚Í Bob Furzer (K4CY) ‚É—Ç‚¢ƒAƒCƒfƒA‚ª‚È‚¢‚©‘Š’k‚µ‚Ü‚µ‚½B”Þ‚Í‚·‚®‚É’Pƒ‚ȃvƒƒZƒXŠÔƒƒbƒZ[ƒW’ÊM‚Ì•û–@‚ð’ñˆÄ‚µ‚Ä‚­‚ê‚Ü‚µ‚½iMany Thanks to BobjB +@‚±‚Ì•û–@‚ðŽg‚¤‚È‚ç‚ÎAWindowsƒŒƒWƒXƒgƒŠ‚ÉˆêØ‚Ì“o˜^‚ð•K—v‚Æ‚¹‚¸A”ñí‚ɃXƒ}[ƒg‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“ŠÔ‚Ì’ÊM‚ðŽÀŒ»‚Å‚«‚Ü‚·BŽ„‚Í‚³‚Á‚»‚­”ނ̃AƒCƒfƒA‚ɉˆ‚Á‚ÄMMTTY‚É’Pƒ‚ÈƒŠƒ‚[ƒg‹@”\‚ð’ljÁ‚µ‚Ü‚µ‚½B + + ‚»‚ÌŒãABob‚©‚ç‚Ì’ñˆÄ‚É‚æ‚èAœX‚É‹@”\‚ð’ljÁ‚µ‚Ü‚µ‚½B‚ ‚È‚½‚Í‚±‚ê‚ç‚Ì‘S‚Ă̋@”\‚ðŽ©—R‚É—˜—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + +@‚È‚¨–{‘‚ÍCƒvƒƒOƒ‰ƒ~ƒ“ƒO‚ð—á‚ɉðà‚µ‚Ä‚ ‚è‚Ü‚·‚ªA‚à‚¿‚ë‚ñVisualBasic‚ȂǑ¼‚ÌŒ¾Œê‚É‚¨‚¢‚Ä‚à“¯“™‚ÌAPIŒÄ‚Ño‚µ‚ð—p‚¢‚ÄAƒŠƒ‚[ƒg‹@”\‚ðŽg—p‚·‚鎖‚ª‚Å‚«‚é‚Í‚¸‚Å‚·B + + +›ƒƒbƒZ[ƒW’l‚̎擾‚ƃƒbƒZ[ƒW‚Ì‘—M +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@MMTTY‚Æ’ÊM‚·‚é‚É‚ÍA“Á•ʂȃƒbƒZ[ƒW’l‚ðŽæ“¾‚µ‚Ü‚·B‚±‚Ì•û–@‚ðˆÈ‰º‚ÉŽ¦‚µ‚Ü‚·B + +UINT MSG_MMTTY = ::RegisterWindowMessage("MMTTY"); + +@ˆÈŒã‚ ‚È‚½‚ÍMMTTY‚Ƃ̒ÊM‚É‚¨‚¢‚ÄA‚±‚̃ƒbƒZ[ƒW’l‚ðŽg‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + +@MMTTY‚ɃƒbƒZ[ƒW‚ð‘—M‚·‚éê‡AŽŸ‚ÌAPIŠÖ”‚ðŽg—p‚µ‚Ü‚·B + + BOOL PostMessage(hwnd, uMsg, wParam, lParam) + + HWND hwnd; /* Žó‚¯Žæ‚葤‚̃EƒBƒ“ƒhƒE‚̃nƒ“ƒhƒ‹ */ + UINT uMsg; /* ƒ|ƒXƒg‚·‚郃bƒZ[ƒW’l */ + WPARAM wParam; /* ‘æ1ƒƒbƒZ[ƒW ƒpƒ‰ƒ[ƒ^ */ + LPARAM lParam; /* ‘æ2ƒƒbƒZ[ƒW ƒpƒ‰ƒ[ƒ^ */ + + —Ⴆ‚ÎMMTTY‚ð‘—M‚ÉØ‚è‘Ö‚¦‚éꇂÍA + + ::PostMessage(MMTTY_Handle, MSG_MMTTY, RXM_PTT, 2); + +‚̂悤‚É‹Lq‚µ‚Ü‚·B + + ‚Ü‚½‚Í‚ ‚È‚½‚Í + + BOOL PostThreadMessage(dwThreadId, uMsg, wParam, lParam) + DWORD dwThreadId; /* ƒXƒŒƒbƒhID */ + UINT uMsg; /* ƒ|ƒXƒg‚·‚郃bƒZ[ƒW */ + WPARAM wParam; /* ƒƒbƒZ[ƒW‚Ì‘æ1ƒpƒ‰ƒ[ƒ^ */ + LPARAM lParam; /* ƒƒbƒZ[ƒW‚Ì‘æ2ƒpƒ‰ƒ[ƒ^ */ + +‚ðŽg‚¤Ž–‚à‚Å‚«‚Ü‚·BMMTTY‚Í‚¢‚¸‚ê‚Ìꇂೂµ‚­ƒƒbƒZ[ƒW‚ðŽóM‚·‚鎖‚ª‚Å‚«‚Ü‚·B‚½‚¾‚µAMMTTY‚©‚ç‚ ‚È‚½‚ւ̃ƒbƒZ[ƒW‚Ì‘—M‚Íí‚ɃEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ɑ΂µ‚Ă̂Ýs‚í‚ê‚Ü‚·B + + +›MMTTY‚Ì‹N“®•û–@ +~~~~~~~~~~~~~~~~~ +@‚ ‚È‚½‚ÍMMTTY‚Ƃ̒ÊM‚ðs‚¤ê‡AŽŸ‚Ì‹N“®ƒIƒvƒVƒ‡ƒ“‚É‚æ‚èMMTTY‚ð‹N“®‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€“à‚©‚çCreateProcessŠÖ”‚Ü‚½‚ÍWinExecŠÖ”‚É‚æ‚è‹N“®‚·‚é‚Ì‚ª—Ç‚¢‚Å‚µ‚傤B + +MMTTY -r (-f) + + -r : ‘€ìƒ{ƒ^ƒ“‚ ‚èAƒƒjƒ…[‚ ‚è + -s : ‘€ìƒ{ƒ^ƒ“‚È‚µAƒƒjƒ…[‚ ‚è + -t : ‘€ìƒ{ƒ^ƒ“‚È‚µAƒƒjƒ…[‚È‚µ + -u : ‘€ìƒ{ƒ^ƒ“‚ ‚èAƒƒjƒ…[‚È‚µ + -m : í‚ɃAƒCƒRƒ“‰»ó‘Ô‚ð•Û‚Â + + (-f : ƒ}ƒEƒX‘€ì‚ŃTƒCƒY•ÏX•s‰Â) + (-d : ƒ}ƒEƒX‘€ì‚ŃTƒCƒY‚ƈʒu•ÏX•s‰Â) + (-hxxx... : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ÌŽw’è xxx=16i”) + (-n : BAUDOT•„†•ÏŠ·‚ðs‚í‚È‚¢j + (-p : Setup window‚ÅComÝ’è‚ð‹ÖŽ~) + (-Z : MMTTY‚Ì•¡”‹N“®‚ð‹–‚·) + (-a : MMTTYƒEƒCƒ“ƒhƒE‚ðStay on top‚É‚µ‚È‚¢) + (-Cxxx : ‹¤—Lƒƒ‚ƒŠ‚Ì–¼‘O, xxx=•¶Žš—ñ) + (-Txxx : MMTTY‹N“®Žž‚̃^ƒCƒ€ƒAƒEƒg, xxx=•b‚Ì‚P‚Oi’l) + +@MMTTY‚Íã‹L‚Ì‚S‚Âi-r, -s, -t, -uj‚Ì‚¢‚¸‚ê‚©‚̃IƒvƒVƒ‡ƒ“‚Å‹N“®‚³‚ê‚邯A•K‚¸ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚݂̂̕\ަ‚ɂȂè‚Ü‚·B‚±‚̃pƒlƒ‹‚Í‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚̈ꕔ‚Æ‚µ‚ÄŒ©‚¦‚邿‚¤‚Éí‚É‘OŒiƒEƒCƒ“ƒhƒE‚ɕۂ½‚ê‚Ü‚·B‚±‚Ìó‘Ô‚Å‚ÍMMTTY‚Í‘—Žó‚Ì‚½‚߂̃EƒCƒ“ƒhƒE‚âAƒƒOƒpƒlƒ‹‚ðŽ‚¿‚Ü‚¹‚ñB + + MMTTY‚ÍƒŠƒ‚[ƒgƒ‚[ƒh‚Å‹N“®‚³‚ꂽê‡AŽ©g‚̃EƒCƒ“ƒhƒE‚̈ʒu‚ƃTƒCƒY‚ð•K‚¸INIƒtƒ@ƒCƒ‹‚ɕێ‚µ‚Ü‚·BŽŸ‰ñ‚ÌƒŠƒ‚[ƒg‹N“®‚Å‚Íí‚É‘O‰ñ‚Æ“¯‚¶ˆÊ’uAƒTƒCƒY‚Å•\ަ‚³‚ê‚邿‚¤‚ɂȂè‚Ü‚·B]‚Á‚Ä‚ ‚½‚È‚½‚Í“Á•Ê‚Èꇂ𜂫AMMTTYƒEƒCƒ“ƒhƒE‚̈ʒu‚âƒTƒCƒY‚ð§Œä‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB + +@-fƒIƒvƒVƒ‡ƒ“‚ð•t‰Á‚·‚邯MMTTY‚̓†[ƒU‚̃}ƒEƒX‘€ì‚ł̃EƒCƒ“ƒhƒEƒTƒCƒY‚Ì•ÏX‚ð‹ÖŽ~‚µ‚Ü‚·B‚à‚¿‚ë‚ñ‚±‚Ìê‡A‚ ‚È‚½‚̓ƒbƒZ[ƒW‚É‚æ‚èMMTTY‚̃TƒCƒY‚ð’²®‚·‚邱‚Æ‚ª‚«‚ł܂·B + + -dƒIƒvƒVƒ‡ƒ“‚ð•t‰Á‚·‚邯MMTTY‚̓^ƒCƒgƒ‹ƒo[‚ð•\ަ‚µ‚Ü‚¹‚ñB‚±‚Ìó‘Ԃł̓†[ƒU‚É‚æ‚éƒ}ƒEƒX‘€ì‚ł̓pƒlƒ‹‚̈ʒu‚âƒTƒCƒY‚ðˆêØ•ÏX‚Å‚«‚È‚­‚È‚è‚Ü‚·B‚‚܂肠‚È‚½‚̃vƒƒOƒ‰ƒ€‚Ì“s‡‚Ì—Ç‚¢ˆÊ’u‚ƃTƒCƒY‚Ƀpƒlƒ‹‚ðí‚ɌŒ肷‚鎖‚ª‚Å‚«AMMTTY‚̃pƒlƒ‹‚ÍA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚̈ꕔ‚̂悤‚ÉŒ©‚¦‚é‚Í‚¸‚Å‚·B +@‚µ‚©‚µ‚±‚̃pƒlƒ‹‚Ìã‚É‚ ‚È‚½‚̃EƒCƒ“ƒhƒEiƒ|ƒbƒvƒAƒbƒvƒƒjƒ…[‚âƒ_ƒCƒAƒƒOƒ{ƒbƒNƒXj‚ðd‚Ë‚éê‡A‚»‚̃EƒCƒ“ƒhƒE‚ÌZ‡˜‚ðÅãˆÊ‚É’²®‚·‚é‚©A‚Ü‚½‚̓pƒlƒ‹‚Ì•\ަ‚ðOFF‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + ‚±‚̃IƒvƒVƒ‡ƒ“‚ð•t‰Á‚³‚ꂽê‡AMMTTY‚͉æ–ʂ̕\ަ‚ðOFF‚É‚µ‚½ó‘Ô‚Å‹N“®‚µ‚Ü‚·B‚ ‚È‚½‚ÍMMTTY‚ð“K؂Ȉʒu‚ƃTƒCƒY‚Éݒ肵‚½ŒãA•\ަ‚ðON‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + +@-mƒIƒvƒVƒ‡ƒ“‚ð•t‰Á‚·‚邯MMTTY‚Íí‚ɃAƒCƒRƒ“‰»ó‘Ô‚ðˆÛŽ‚µ‚Ü‚·BMMTTY‚̃Rƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚ªA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ɂƂÁ‚Ďז‚‚ɂȂéꇂ͂±‚̃IƒvƒVƒ‡ƒ“‚ð•t‰Á‚·‚ê‚Ηǂ¢‚Å‚µ‚傤B‚±‚Ìꇂ ‚È‚½‚Í‹¤—Lƒƒ‚ƒŠƒAƒNƒZƒX‚É‚æ‚èMMTTY‚©‚çFFT‚¨‚æ‚ÑXYƒXƒR[ƒv‚̃f[ƒ^‚ðŽæ“¾‚µ‚ ‚È‚½Ž©g‚Å‚»‚ê‚ð•\ަ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + -hƒIƒvƒVƒ‡ƒ“‚ð•t‰Á‚·‚邯MMTTY‚Í‹N“®’¼Œã‚©‚ç‚ ‚È‚½‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ªŽw’肳‚ꂽ’l‚Å‚ ‚邯‰¼’肵AHWND_BROADCAST‚ðŽg‚킸‚É‚»‚̃nƒ“ƒhƒ‹‚ɃƒbƒZ[ƒW‚ð‘—M‚µ‚Ü‚·BŽw’è‚·‚é’l‚Í16i”•¶Žš—ñ‚łȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + HWND_BROADCASTƒƒbƒZ[ƒW‚ªŽ|‚­ŽóM‚Å‚«‚È‚¢ê‡A‚±‚̃IƒvƒVƒ‡ƒ“‚ðŽg‚Á‚Ä‹N“®‚·‚邯—Ç‚¢‚Å‚µ‚傤B‚à‚¿‚ë‚ñ‚±‚ÌꇂàATXM_HANDLEƒƒbƒZ[ƒW‚ðŽóM‚µ‚½Žž‚ÍA‚ ‚È‚½‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ðMMTTY‚É’Ê’m‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + + + ‚±‚ê‚ç‚Ì‘I‘ð‚Í‚ ‚È‚½‚ªMMTTY‚ð‚ǂ̂悤‚ÉŽg‚¤‚©‚É‚æ‚Á‚ÄŒˆ‚Ü‚è‚Ü‚·B–{‘‚ł͑½‚­‚̃ƒbƒZ[ƒW‚⋤—Lƒƒ‚ƒŠ‚ɂ‚¢‚ĉðà‚µ‚Ü‚·‚ªA‚à‚µ‚ ‚È‚½‚ª-rƒIƒvƒVƒ‡ƒ“‚ðŽg‚¤‚È‚ç‚ÎA‚ ‚È‚½‚Í‘—Žó‚ÌØ‚è‘Ö‚¦‚ÆA•¶Žš‚𑗎󂷂郃bƒZ[ƒW‚¾‚¯‚ðˆ—‚·‚ê‚Ηǂ¢‚Í‚¸‚Å‚·B +@‚µ‚©‚µ‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚Å‚æ‚莩—R“x‚𓾂½‚¢‚ÆŽv‚¤‚È‚ç‚ÎA-t‚â-mƒIƒvƒVƒ‡ƒ“‚Å‹N“®‚µA‚æ‚葽‚­‚̃ƒbƒZ[ƒW‚ðˆ—‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + + +›ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ÌŒðŠ· +~~~~~~~~~~~~~~~~~~~~~~~~~~ +@MMTTY‚ÍƒŠƒ‚[ƒgƒIƒvƒVƒ‡ƒ“‚ª•t‰Á‚³‚ê‚Ä‹N“®‚³‚ê‚邯A‹N“®’¼Œã‚ÉŽ©g‚̃XƒŒƒbƒh”Ô†AƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Ɖ‰ñ‹N“®î•ñ‚ð•ú‘—ƒ‚[ƒh‚Å‘—M‚µ‚Ü‚·B + + ::PostMessage(HWND_BROADCAST, MSG_MMTTY, TXM_THREAD, MMTTY_ThreadId); + ::PostMessage(HWND_BROADCAST, MSG_MMTTY, TXM_HANDLE, MMTTY_Handle); + ::PostMessage(HWND_BROADCAST, MSG_MMTTY, TXM_START, 0x00000000); + +‚ ‚È‚½‚Í‚±‚̃ƒbƒZ[ƒW(TXM_HANDLE)‚ðŽóM‚µ‚½‚çA•K‚¸Ž©g‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ðˆÈ‰º‚̂悤‚É‘—‚è•Ô‚µ‚Ä‚­‚¾‚³‚¢B + + ::PostMessage(MMTTY_Handle, MSG_MMTTY, RXM_HANDLE, Your_Handle); + +@MMTTY‚Í‚±‚̃ƒbƒZ[ƒW‚ðŽóM‚·‚邯ˆÈŒãYour_Handle‚ɑ΂µ‚Ă̂݃ƒbƒZ[ƒW‚ð‘—M‚µ‚Ü‚·B‚Ü‚½‹N“®‚³‚ꂽŒãA–ñ‚T•b`‚P‚O•bŒo‰ß‚µ‚Ä‚à‚±‚̃ƒbƒZ[ƒW‚ªŽóM‚Å‚«‚È‚¢ê‡AMMTTY‚ÍŽ©g‚ð‹­§“I‚ÉI—¹‚µ‚Ü‚·B + +@‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ÅMMTTY‚©‚ç‚̃ƒbƒZ[ƒW‚ðŽóM‚·‚éŽdŠ|‚¯‚Í‚¨Žg‚¢‚̃Rƒ“ƒpƒCƒ‰‚É‚æ‚èˆÙ‚È‚è‚Ü‚·B‚»‚ꂼ‚ê‚̃}ƒjƒ…ƒAƒ‹‚ðŽQÆ‚µ‚ĉº‚³‚¢B + + +›MMTTY‚ւ̃ƒbƒZ[ƒW +~~~~~~~~~~~~~~~~~~~~~ + wParam‚ªƒƒbƒZ[ƒW”Ô†‚Å‚·BCŒ¾Œê‚Ìenum•¶‚͈ê”Ôæ“ª‚Å’è‹`‚µ‚½’l‚©‚燔Ԃɒl‚ªƒCƒ“ƒNƒŠƒƒ“ƒg‚³‚ê‚Ü‚·B—Ⴆ‚Έȉº‚Ìê‡ARXM_PTT‚Í0x0003‚ªŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B + +enum { + RXM_HANDLE=0x0000, // APP -> MMTTY + RXM_REQHANDLE, + RXM_EXIT, + RXM_PTT, + RXM_CHAR, + + RXM_WINPOS, + RXM_WIDTH, + RXM_REQPARA, + RXM_SETBAUD, + RXM_SETMARK, + + RXM_SETSPACE, + RXM_SETSWITCH, + RXM_SETHAM, + RXM_SHOWSETUP, + RXM_SETVIEW, + + RXM_SETSQLVL, + RXM_SHOW, + RXM_SETFIG, + RXM_SETRESO, + RXM_SETLPF, + + RXM_SETTXDELAY, + RXM_UPDATECOM, + RXM_SUSPEND, + RXM_NOTCH, + RXM_PROFILE, + + RXM_TIMER, + RXM_ENBFOCUS, + RXM_SETDEFFREQ, + RXM_SETLENGTH, + RXM_ENBSHARED, + + RXM_PTTFSK, +}; + +1.ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Ì’Ê’m + wParam = RXM_HANDLE + lParam = ‚ ‚È‚½‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + +@‚ ‚È‚½‚ÍŽ©g‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ð•ÏX‚µ‚½ÛA•K‚¸‚±‚̃ƒbƒZ[ƒW‚ð‘—M‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + + +2.ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Ì—v‹ + wParam = RXM_REQHANDLE + lParam = 0x00000000 + +@‚±‚̃ƒbƒZ[ƒW‚ÍŽg—p‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB + + +3.MMTTY‚ÌI—¹ + wParam = RXM_EXIT + lParam = 0x00000000 + +@‚ ‚È‚½‚Í‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ðI—¹‚·‚鎞A•K‚¸‚±‚̃ƒbƒZ[ƒW‚ð‘—M‚µ‚ÄMMTTY‚ðI—¹‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñBƒŠƒ‚[ƒgƒ‚[ƒh‚ÌMMTTY‚ÍŽ©•ªŽ©g‚ðI—¹‚³‚¹‚é‘€ì‚ðŽ‚¿‚Ü‚¹‚ñB + + +4.‘—Žó‚ÌØ‚è‘Ö‚¦ + wParam = RXM_PTT + lParam = 0x00000000 ‚½‚¾‚¿‚ÉŽóM‚ÉØ‚è‘Ö‚¦‚é + lParam = 0x00000001 ‘—oŒã‚ÉŽóM‚ÉØ‚è‘Ö‚¦‚é + lParam = 0x00000002 ‘—M‚ÉØ‚è‘Ö‚¦‚é + lParam = 0x00000004 ‘—Mƒoƒbƒtƒ@‚ðƒNƒŠƒA‚·‚é + +5.•¶Žš‚Ì‘—M + wParam = RXM_CHAR + lParam = •¶ŽšƒR[ƒhiASCIIj + +@‚±‚̃ƒbƒZ[ƒW‚ÍMMTTY‚ª‘—Mó‘ԂłȂ¢‚Æ—LŒø‚ł͂ ‚è‚Ü‚¹‚ñ + + RXM_SETSWICHƒƒbƒZ[ƒW‚ÅB15‚É1‚Éݒ肵‚½ê‡AMMTTY‚Í“à•”‚̃L[ƒ{[ƒhƒoƒbƒtƒ@Œo—R‚Å‘—M‚µ‚Ü‚·B‚»‚Ìê‡ABSƒR[ƒh‚â‘—M•û–@(Char.out, Word out, Line out)Aƒ[ƒhƒ‰ƒbƒv‹@”\‚ðŽg—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + -nƒIƒvƒVƒ‡ƒ“‚ð•t‰Á‚µ‚ÄMMTTY‚ð‹N“®‚µ‚½ê‡ABAUDOT•„†•ÏŠ·‚Ís‚í‚ê‚Ü‚¹‚ñB‚±‚Ìê‡lParam‚ÅŽw’è‚·‚éƒR[ƒh‚ª‚»‚̂܂ܑ—M‚³‚ê‚Ü‚·B‚Ü‚½RXM_SETSWICHƒƒbƒZ[ƒW‚ÌB15‚Í–³Ž‹‚³‚ê‚Ü‚·B + + +6.•\ަˆÊ’u‚Ì•ÏX + wParam = RXM_WINPOS + lParam = ãˆÊ16bit@YÀ•WiƒXƒNƒŠ[ƒ“ƒsƒNƒZƒ‹’lj + ‰ºˆÊ16bit@XÀ•WiƒXƒNƒŠ[ƒ“ƒsƒNƒZƒ‹’lj + +7.ƒpƒlƒ‹ƒTƒCƒY‚Ì•ÏX + wParam = RXM_WIDTH + lParam = ãˆÊ16bit c•iƒXƒNƒŠ[ƒ“ƒsƒNƒZƒ‹’lj + lParam = ‰ºˆÊ16bit ‰¡•iƒXƒNƒŠ[ƒ“ƒsƒNƒZƒ‹’lj + +8.“®ìƒpƒ‰ƒ[ƒ^‚Ì—v‹ + wParam = RXM_REQPARA + lParam = 0 + + +@MMTTY‚Í‚±‚̃ƒbƒZ[ƒW‚ðŽóM‚·‚邯A‚·‚ׂẴpƒ‰ƒ[ƒ^î•ñ‚ð•Ô‘—‚µ‚Ü‚·B + +9.ƒ{[ƒŒ[ƒg‚ÌÝ’è + wParam = RXM_SETBAUD + lParam = ƒ{[ƒŒ[ƒg’l(x100) + +10.ƒ}[ƒNŽü”g”‚ÌÝ’è + wParam = RXM_SETMARK + lParam = ƒ}[ƒNŽü”g”(Hz) + +11.ƒXƒy[ƒXŽü”g”‚ÌÝ’è + wParam = RXM_SETSPACE + lParam = ƒXƒy[ƒXŽü”g”(Hz) + +12.ƒXƒCƒbƒ`î•ñ‚ÌÝ’è + wParam = RXM_SETSWITCH + lParam = ƒXƒCƒbƒ`î•ñiŒãqj + +13.ƒnƒ€ƒfƒtƒHƒ‹ƒg‚ÌÝ’è + wParam = RXM_SETHAM + lParam = 0x00000000 + +14.ƒZƒbƒgƒAƒbƒvƒEƒCƒ“ƒhƒE‚Ì•\ަ + wParam = RXM_SHOWSETUP + lParam = ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì–³Œø‰»(0-OFF, 1-ON) + +@lParam‚ª‚P‚Ìê‡AƒZƒbƒgƒAƒbƒvƒEƒCƒ“ƒhƒE‚ª•\ަ‚³‚ê‚Ä‚¢‚éŠúŠÔAŒÄ‚Ño‚µ‘¤ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚𖳌øó‘Ôiƒ}ƒEƒX‚¨‚æ‚уL[ƒCƒxƒ“ƒg‚ɉž“š‚Å‚«‚È‚­‚È‚éj‚É‚µ‚Ü‚·B‚±‚Ì“®ì‚̓‚[ƒ_ƒ‹ƒ_ƒCƒAƒƒOƒ{ƒbƒNƒX‚ÉŽ—‚Ä‚¢‚Ü‚·B + + +15.•\ަî•ñ‚ÌÝ’è + wParam = RXM_SETVIEW + lParam = •\ަî•ñiŒãqj + +16.ƒXƒPƒ‹ƒ`ƒŒƒxƒ‹‚ÌÝ’è + wParam = RXM_SETSQLVL + lParam = ƒXƒPƒ‹ƒ`ƒŒƒxƒ‹(0-1024) + +17.ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚Ì•\ަƒRƒ“ƒgƒ[ƒ‹ + wParam = RXM_SHOW + lParam = 0-OFF, 1-ON + +18.FIG/LTR‚ÌÝ’è + wParam = RXM_SETFIG + lParam = 0-LTR, 1-FIG + +19.‹¤UŠíƒpƒ‰ƒ[ƒ^‚ÌÝ’è + wParam = RXM_SETRESO + lParam = ‰ºˆÊ16bit IIR‚ÌBW’l + lParam = ãˆÊ16bit FIR‚ÌŽŸ” + +20.Ï•ªŠí‚̃pƒ‰ƒ[ƒ^‚ÌÝ’è + wParam = RXM_SETLPF + lParam = ‰ºˆÊ16bit FIRƒXƒ€[ƒWƒ“ƒOƒtƒBƒ‹ƒ^‚ÌŽü”g” + lParam = ãˆÊ16bit IIR-LPF‚̃JƒbƒgƒIƒtŽü”g” + +21.‘—MƒfƒBƒŒ[‚ÌÝ’è + wParam = RXM_SETTXDELAY + lParam = 0 - 10000 (ms) + +@‘—MƒfƒBƒŒ[‚ðݒ肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Í‚O‚Å‚·B + +@MMTTY‚ÍTX/RX‚ÌØ‚è‘Ö‚¦ƒ^ƒCƒ~ƒ“ƒO‚ÅTXM_PTTEVENTƒƒbƒZ[ƒW‚ð‘—M‚µ‚Ü‚·B‚ ‚È‚½‚Í‚±‚̃ƒbƒZ[ƒW‚ðŽóM‚µ‚ÄAŽ©•ªŽ©g‚ÅPTT‚ÌØ‚è‘Ö‚¦‚ðs‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚µ‚©‚µ—Ⴆ‚ÎRadio Command‚̂悤‚ÉØ‚è‘Ö‚¦‚Ɏ኱‚Ì’x‰„‚ª”­¶‚·‚éê‡AMMTTY‚Ì‘—MŠJŽnƒ^ƒCƒ~ƒ“ƒO‚ð­‚µ’x‚ç‚é•K—v‚ª¶‚¶‚Ü‚·B +@‚±‚Ì(RXM_SETTXDELAY)ƒƒbƒZ[ƒW‚Í‚±‚Ì—p“r‚Ì‚½‚߂ɑ¶Ý‚µ‚Ü‚·B + +22.‹¤—Lƒƒ‚ƒŠ‚ÌXV’Ê’m + wParam = RXM_UPDATECOM + lParam = 0 + +@MMTTY‚ð‹N“®ŒãA‹¤—Lƒƒ‚ƒŠ“à‚ÌcomName, comRadio, tilte‚Ì‚¢‚¸‚ê‚©‚ð•ÏX‚µ‚½‚±‚Æ‚ðMMTTY‚É’Ê’m‚µ‚Ü‚·BMMTTY‚Í‚±‚̃ƒbƒZ[ƒW‚ðŽóM‚·‚邯A‚±‚Ì‚R‚‚̃ƒ“ƒo[‚ðÄ“xŽ©g‚É”½‰f‚³‚¹‚Ü‚·B + + +23.ƒTƒXƒyƒ“ƒh + wParam = RXM_SUSPEND + lParam = 0-Restore, 1-Suspend + + lParam‚É‚P‚ðݒ肵‚½ê‡AMMTTY‚̓TƒEƒ“ƒhƒJ[ƒhAComƒ|[ƒg‚ÌƒŠƒ\[ƒX‚ð‰ð•ú‚µ‚ÄŽ©g‚Ì•\ަ‚ðÁ‚µ‚Ü‚·B + lParam‚É‚O‚ðݒ肵‚½ê‡AMMTTY‚̓TƒEƒ“ƒhƒJ[ƒhAComƒ|[ƒg‚ÌƒŠƒ\[ƒX‚ðŽæ“¾‚µŽ©g‚Ì•\ަ‚𕜌³‚µ‚Ü‚·Bi-mƒIƒvƒVƒ‡ƒ“‚Å‹N“®‚³‚ê‚Ä‚¢‚éê‡AMMTTY‚Ì•\ަ‚ÍON‚ɂȂè‚Ü‚¹‚ñj + + ‚ ‚È‚½‚ªƒTƒEƒ“ƒhƒJ[ƒh‚âComƒ|[ƒg‚ðŽ©•ªŽ©g‚ÅŽg—p‚·‚éê‡AMMTTY‚ðI—¹‚³‚¹‚é‚©A‚Ü‚½‚Í‚±‚̃ƒbƒZ[ƒW‚ðŽg—p‚µ‚ÄMMTTY‚ðƒTƒXƒyƒ“ƒhó‘Ô‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + +24.ƒmƒbƒ`Žü”g”‚ÌÝ’è (Ver1.59AˆÈ~‚Å—LŒø) + wParam = RXM_NOTCH + lParam = ƒmƒbƒ`Žü”g”(Hz) + +25.ƒvƒƒtƒB[ƒ‹‚Ì‹L‰¯‚ƌĂÑo‚µ (Ver1.61ˆÈ~‚Å—LŒø) + wParam = RXM_PROFILE + lParam = ãˆÊ16ËÞ¯Ä 0-ŒÄ‚Ño‚µ, 1-‹L‰¯, 2-Á‹Ž, 3-Load, 4-Save, 5-Assign + lParam = ‰ºˆÊ16ËÞ¯Ä ƒXƒƒbƒg”Ô†(0 - 15) + +@‹L‰¯‚Å‚«‚éƒvƒƒtƒB[ƒ‹‚ÍAƒfƒ‚ƒWƒ…ƒŒ[ƒ^AƒfƒR[ƒ_Aƒ‚ƒWƒ…ƒŒ[ƒ^‚Ìó‘Ô‚Å‚·B + +ŒÄ‚Ño‚µ(lParamãˆÊ16bit=0) + Žw’肵‚½ƒXƒƒbƒg”Ô†‚̃pƒ‰ƒ[ƒ^‚ðŒÄ‚Ño‚µAMMTTY‚Éݒ肵‚Ü‚·Bƒvƒƒtƒ@ƒCƒ‹‚Ì–¼‘O‚Í‹¤—Lƒƒ‚ƒŠProfileNames[x]‚ÅŽQÆ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‹¤—Lƒƒ‚ƒŠ‚ðŽg—p‚µ‚Ä‚¢‚È‚¢ê‡‚Í–¼‘O‚ðŽQÆ‚·‚邱‚Ƃ͂ł«‚Ü‚¹‚ñB + +‹L‰¯(lParamãˆÊ16bit=1) + Œ»Ý‚ÌMMTTY‚̃pƒ‰ƒ[ƒ^‚ðŽw’肵‚½ƒXƒƒbƒg”Ô†‚É‹L‰¯‚µ‚Ü‚·Bƒvƒƒtƒ@ƒCƒ‹‚Ì–¼‘O‚Í‹¤—Lƒƒ‚ƒŠ‚ÌProfileNames[x]‚É‚ ‚ç‚©‚¶‚ßݒ肵‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‹¤—Lƒƒ‚ƒŠ‚ðŽg—p‚µ‚Ä‚¢‚È‚¢ê‡‚ÍMMTTY‚ª“K“–‚È–¼‘O‚ðŠ„‚è“–‚Ă܂·B + +Á‹Ž(lParamãˆÊ16bit=2) + Žw’肵‚½ƒXƒƒbƒg”Ô†‚̃pƒ‰ƒ[ƒ^‚ðÁ‹Ž‚µ‚Ü‚·B + +@‚·‚ׂẴvƒƒtƒB[ƒ‹‚ÍUserPara.iniƒtƒ@ƒCƒ‹‚É‹L‰¯‚³‚ê‚Ü‚·B‚æ‚èÚ‚µ‚¢Žg—p•û–@‚ɂ‚¢‚Ă͌ãq‚ÌuƒvƒƒtƒB[ƒ‹‚Ì‹L‰¯‚ƌĂÑo‚µv‚ðŽQÆ‚µ‚ĉº‚³‚¢B + +Load(lParamãˆÊ16bit=3) +@ƒtƒ@ƒCƒ‹‘I‘ðƒ_ƒCƒAƒƒOƒ{ƒbƒNƒX‚ð•\ަ‚µAƒvƒƒtƒB[ƒ‹‚ð”CˆÓ‚̃tƒ@ƒCƒ‹‚©‚çƒ[ƒh‚µ‚Ü‚·B + +Save(lParamãˆÊ16bit=4) +@ƒtƒ@ƒCƒ‹‘I‘ðƒ_ƒCƒAƒƒOƒ{ƒbƒNƒX‚ð•\ަ‚µAƒvƒƒtƒB[ƒ‹‚ð”CˆÓ‚̃tƒ@ƒCƒ‹‚ɃZ[ƒu‚µ‚Ü‚·B + +Assign(lParamãˆÊ16bit=5) +@ƒvƒƒtƒ@ƒCƒ‹’è‹`ƒ_ƒCƒAƒƒOƒ{ƒbƒNƒX‚ð•\ަ‚µAƒvƒƒtƒB[ƒ‹‚ð“o˜^‚µ‚Ü‚·B + +26.PTTƒ^ƒCƒ}[‚ÌÝ’è (Ver1.61ˆÈ~‚Å—LŒø) + wParam = RXM_TIMER, + lParam = ƒ^ƒCƒ}[ŽžŠÔ(s) + +@ƒ^ƒCƒ}[ŽžŠÔ‚É‚O‚ðÝ’è‚·‚邯ƒ^ƒCƒ}[‹@”\‚ÍOFF‚ɂȂè‚Ü‚·B + +27.ƒtƒH[ƒJƒXƒ`ƒFƒ“ƒW‚Ì‹–‰Â/•s‹–‰Â (Ver1.63AˆÈ~‚Å—LŒø) + wParam = RXM_ENBFOCUS + lParam = 0-•s‹–‰Â, 1-‹–‰Â + + MMTTY‚ªƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ւ̃tƒH[ƒJƒXƒ`ƒFƒ“ƒW‚ðŽÀs‚·‚é‚©‚Ç‚¤‚©‚ðݒ肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Í‹–‰Â‚ɂȂÁ‚Ä‚¢‚Ü‚·B + +28.ƒfƒtƒHƒ‹ƒgŽü”g”‚ÌÝ’è (Ver1.63BˆÈ~‚Å—LŒø) + wParam = RXM_SETDEFFREQ + lParam = ãˆÊ16ËÞ¯Ä ƒfƒtƒHƒ‹ƒg‚̃Vƒtƒg•[Hz] + lParam = ‰ºˆÊ16ËÞ¯Ä ƒfƒtƒHƒ‹ƒg‚̃}[ƒNŽü”g”[Hz] + + ƒfƒtƒHƒ‹ƒg‚̃}[ƒNŽü”g”‚ƃVƒtƒg•‚ðݒ肵‚Ü‚·BMMTTY‚ÍHAMƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ê‚½ŽžA‚Ü‚½‚ÍNET OFF‚Å‘—M‚ÉØ‚è‘Ö‚¦‚½ŽžA‚±‚ÌŽü”g”‚ðŽQÆ‚µ‚Ü‚·B + +29.ƒrƒbƒg’·‚ÌÝ’è(Ver1.63BˆÈ~‚Å—LŒø) + wParam = RXM_SETLENGTH + lParam = ƒrƒbƒg’·(5, 6, 7, 8) + ‘—ŽóM•„†‚̃rƒbƒg’·‚ð•ÏX‚µ‚Ü‚·B8bit‚ð‘I‘ð‚µ‚½ê‡‚Å‚àA•¶ŽšƒR[ƒhF0`FF‚܂łÍMMTTY“à‚Ì“Á•ʂȃRƒ“ƒgƒ[ƒ‹‚ÅŽg—p‚³‚ê“§‰ß‚³‚ê‚Ü‚¹‚ñB + +30.‹¤—Lƒƒ‚ƒŠXV‚Ì‹–‰Â/•s‹–‰Â(Ver1.64ˆÈ~‚Å—LŒø) + wParam = RXM_ENBSHARED + lParam = 0-•s‹–‰Â, 1-‹–‰Â + + ‹¤—Lƒƒ‚ƒŠ‚ÌXV‚ð‚·‚é‚©‚Ç‚¤‚©‚ðݒ肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Í‹–‰Â‚ɂȂÁ‚Ä‚¢‚Ü‚·B + +31.PTTƒ|[ƒg‚ÌFSKo—Í(Ver1.67BˆÈ~‚Å—LŒø) + wParam = RXM_PTTFSK + lParam = 0-NONE, 1-ON(+Sound), 2-ON + + PTTƒ|[ƒg‚©‚çFSKM†‚ðo—Í‚·‚é‚©‚Ç‚¤‚©‚ðݒ肵‚Ü‚·B + + +›MMTTY‚©‚ç‚̃ƒbƒZ[ƒW +~~~~~~~~~~~~~~~~~~~~~~ + wParam‚ªƒƒbƒZ[ƒW”Ô†‚Å‚·BCŒ¾Œê‚Ìenum•¶‚͈ê”Ôæ“ª‚Å’è‹`‚µ‚½’l‚©‚燔Ԃɒl‚ªƒCƒ“ƒNƒŠƒƒ“ƒg‚³‚ê‚Ü‚·B—Ⴆ‚Έȉº‚Ìê‡ATXM_CHAR‚Í0x8003‚ªŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B + +enum { + TXM_HANDLE=0x8000, // MMTTY -> APP + TXM_REQHANDLE, + TXM_START, + TXM_CHAR, + TXM_PTTEVENT, + + TXM_WIDTH, + TXM_BAUD, + TXM_MARK, + TXM_SPACE, + TXM_SWITCH, + + TXM_VIEW, + TXM_LEVEL, + TXM_FIGEVENT, + TXM_RESO, + TXM_LPF, + + TXM_THREAD, + TXM_PROFILE, + TXM_NOTCH, + TXM_DEFSHIFT, + TXM_RADIOFREQ, + + TXM_SHOWSETUP, + TXM_SHOWPROFILE, +}; + +1.ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Ì’Ê’m + wParam = TXM_HANDLE + lParam = MMTTY‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ + +@MMTTY‚Í‹N“®ŒãAŽ©g‚̃EƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ð•ÏX‚·‚é‰Â”\«‚Í‚ ‚è‚Ü‚¹‚ñ‚ªAˆÀ‘S‚Ì‚½‚ß‚ÉA‚ ‚È‚½‚Í‚±‚̃ƒbƒZ[ƒW‚ðŽóM‚·‚邯•K‚¸MMTTYƒnƒ“ƒhƒ‹î•ñ‚ðã‘‚«‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + +2.ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Ì—v‹ + wParam = TXM_REQHANDLE + lParam = 0x00000000 + +@‚±‚̃ƒbƒZ[ƒW‚ÍŒ»ÝŽg‚í‚ê‚Ä‚¢‚Ü‚¹‚ñB + +3.MMTTYŠJŽnî•ñ + wParam = TXM_START + lParam = 0x00000000 + +@MMTTY‚ªÅ‰‹N“®‚³‚ê‚½Žž‚É•ú‘—ƒ‚[ƒhiHWND_BROADCASTj‚Å‘—M‚³‚ê‚Ü‚·B + + +4.‘—ŽóM•¶Žš + wParam = TXM_CHAR + lParam = ‘—ŽóM•¶ŽšiASCIIj + +@•¶Žš‚ðŽóMi‘—Mj‚·‚é–ˆ‚É‚±‚̃ƒbƒZ[ƒW‚ª‘—M‚³‚ê‚Ü‚·B + + -nƒIƒvƒVƒ‡ƒ“‚ð•t‰Á‚µ‚ÄMMTTY‚ð‹N“®‚µ‚½ê‡ABAUDOT•„†•ÏŠ·‚Ís‚í‚ê‚Ü‚¹‚ñB‚±‚ÌꇎóMi‘—Mj‚µ‚½ƒR[ƒh‚ª‚»‚̂܂ÜlParam‚Éݒ肳‚ê‚Ü‚·B + + +5.‘—Žó•ÏXƒCƒxƒ“ƒg + wParam = TXM_PTTEVENT + lParam = 0x00000000 ŽóM‚ÉØ‚è‘Ö‚í‚Á‚½ + lParam = 0x00000001 ‘—M‚ÉØ‚è‘Ö‚í‚Á‚½ + +6.ƒpƒlƒ‹ƒTƒCƒYî•ñ + wParam = TXM_WIDTH + lParam = ãˆÊ16bit c•iƒXƒNƒŠ[ƒ“ƒsƒNƒZƒ‹’lj + lParam = ‰ºˆÊ16bit ‰¡•iƒXƒNƒŠ[ƒ“ƒsƒNƒZƒ‹’lj + +7.ƒ{[ƒŒ[ƒgî•ñ + wParam = TXM_BAUD + lParam = ƒ{[ƒŒ[ƒg’l(x100) + +8.ƒ}[ƒNŽü”g”î•ñ + wParam = TXM_MARK + lParam = ƒ}[ƒNŽü”g”(Hz) + +9.ƒXƒy[ƒXŽü”g”î•ñ + wParam = TXM_SPACE + lParam = ƒXƒy[ƒXŽü”g”(Hz) + +10.ƒXƒCƒbƒ`î•ñ + wParam = TXM_SWITCH + lParam = ƒXƒCƒbƒ`î•ñ(Œãq) + +11.•\ަî•ñ + wParam = TXM_VIEW + lParam = •\ަî•ñ(Œãq) + +12.M†ƒŒƒxƒ‹‚Ì’Ê’m + wParam = TXM_LEVEL + lParam = ãˆÊ16bit@ƒXƒPƒ‹ƒ`ƒŒƒxƒ‹(0-1024) + lParam = ‰ºˆÊ16bit@M†ƒŒƒxƒ‹ + +@‚ ‚È‚½‚Í‚±‚̃ƒbƒZ[ƒW‚É‚æ‚背ƒxƒ‹ƒCƒ“ƒfƒBƒP[ƒ^‚ð쬂ł«‚Ü‚·B‚Ü‚½MMTTY‚Ƃ̋¤—Lƒƒ‚ƒŠ‚ðŽg—p‚µ‚Ä‚¢‚éê‡A‚ ‚È‚½‚Í‚±‚̃ƒbƒZ[ƒW‚É‚æ‚è‚»‚ÌXVƒCƒxƒ“ƒg‚𓯎ž‚É“¾‚鎖‚à‚Å‚«‚Ü‚·B + +13.ƒVƒtƒgî•ñ‚Ì’Ê’m + wParam = TXM_FIGEVENT + lParam = 0-LTR, 1-FIG + +14.‹¤UŠíƒpƒ‰ƒ[ƒ^‚Ì’Ê’m + wParam = TXM_RESO + lParam = ‰ºˆÊ16bit IIR‚ÌBW’l + lParam = ãˆÊ16bit FIR‚ÌŽŸ” + +15.Ï•ªŠí‚̃pƒ‰ƒ[ƒ^‚Ì’Ê’m + wParam = TXM_LPF + lParam = ‰ºˆÊ16bit FIRƒXƒ€[ƒWƒ“ƒOƒtƒBƒ‹ƒ^‚ÌŽü”g” + lParam = ãˆÊ16bit IIR-LPF‚̃JƒbƒgƒIƒtŽü”g” + +16.MMTTY‚̃XƒŒƒbƒhID‚Ì’Ê’m + wParam = TXM_THREAD + lParam = ƒXƒŒƒbƒhID”Ô† + +17.ƒvƒƒtƒB[ƒ‹‚Ì‹L‰¯‚ƌĂÑo‚µ‚ÌŽÀsƒCƒxƒ“ƒg (Ver1.61ˆÈ~‚Å—LŒø) + wParam = TXM_PROFILE + lParam = ãˆÊ16ËÞ¯Ä 0-ŒÄ‚Ño‚µ, 1-‹L‰¯, 2-Á‹Ž + lParam = ‰ºˆÊ16ËÞ¯Ä ƒXƒƒbƒg”Ô†(0 - 15) + +@ƒvƒƒtƒB[ƒ‹‚̌ĂÑo‚µA‹L‰¯AÁ‹Ž‚ªŽÀs‚³‚ê‚½Žž‚É”­¶‚·‚éƒCƒxƒ“ƒg‚Å‚·B + +18.ƒmƒbƒ`Žü”g”î•ñ (Ver1.61ˆÈ~‚Å—LŒø) + wParam = TXM_NOTCH + lParam = ãˆÊ16ËÞ¯Ä Notch1 Žü”g” + lParam = ‰ºˆÊ16ËÞ¯Ä Notch2 Žü”g” + +19.HAMƒfƒtƒHƒ‹ƒgƒVƒtƒgî•ñ (Ver1.61ˆÈ~‚Å—LŒø) + wParam = TXM_DEFSHIFT + lParam = ƒVƒtƒgŽü”g” + +20.RadioCommand‚ÌVFOƒ|[ƒŠƒ“ƒOŽü”g” (Ver1.62CˆÈ~‚Å—LŒø) + wParam = TXM_RADIOFREQ + lParam = Žü”g”(KHz) + +21.ƒZƒbƒgƒAƒbƒvƒEƒCƒ“ƒhƒE‚Ì•\ަƒCƒxƒ“ƒg + wParam = TXM_SHOWSETUP + lParam = 0-•‚¶‚½, 1-ŠJ‚¢‚½ + +22.ƒvƒƒtƒ@ƒCƒ‹‚̃[ƒh/ƒZ[ƒuƒEƒCƒ“ƒhƒE‚Ì•\ަƒCƒxƒ“ƒg + wParam = TXM_SHOWPROFILE + lParam = 0-•‚¶‚½, 1-ŠJ‚¢‚½ + + +›lParam‚̃rƒbƒg’è‹` +~~~~~~~~~~~~~~~~~~~~ + +ƒXƒCƒbƒ`î•ñ + b0-b1 ƒ‚ƒfƒ€ƒ^ƒCƒv 0-IIR, 1-FIR, 2-PLL + b2 AFC + b3 NET + b4 ATC + b5 BPF + b6 LMS/Notch + b7 SQ + b8 Rev + b9 UOS + b10-b11 AFCŽž‚̃VƒtƒgƒAƒ‹ƒSƒŠƒYƒ€ + b12 Ï•ªŠí‚Ì•ûŽ® 0-FIR, 1-IIR + b13 LMS/Notch‚ÌØ‚è‘Ö‚¦ 0-LMS, 1-Notch + b14 0-single notch, 1-two notches + b15 RXM_CHAR‚̈— 0-Key buffer OFF, 1-Key buffer ON + b16 Word warp(Key buffer ON‚ÌŽž) + b17-b18 Way to send(Key buffer ON‚ÌŽž) 0-Char, 1-Word, 2-Line + b19 Dual Peak Filter 0-OFF, 1-ON + +•\ަî•ñ + b0-b2 FFT•\ަ• + b4-b5 FFTƒQƒCƒ“ + b6-b7 FFT‰ž“𑬓x + b8 XYƒXƒR[ƒv‚̃TƒCƒY + b10-b11 XYƒXƒR[ƒv‚Ì•iŽ¿ + b12 XYƒXƒR[ƒv•\ަ + b13 FFTƒQƒCƒ“‚ÌTestƒ‚[ƒh + + +›‹¤—Lƒƒ‚ƒŠƒAƒNƒZƒX +~~~~~~~~~~~~~~~~~~~~ +@MMTTY‚ÍAFFT‚¨‚æ‚Ñ‚w‚xƒXƒR[ƒv‚Ì–¢ˆ—‚̃f[ƒ^‚ðA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚Ɉø‚«“n‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚Ì‹@”\‚ðŽg‚¤‚Æ‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€“à‚ÉAFFT•\ަ‚âWaterfallAXYƒXƒR[ƒv“™‚ðŽ©—R‚ɃfƒUƒCƒ“‚Å‚«‚Ü‚·B +@‚à‚µ‚ ‚È‚½‚ªMMTTY‚̃Rƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚ð‚»‚Ì‚Ü‚Ü—˜—p‚·‚é‚̂ł ‚ê‚ÎA‚±‚Ì‹@”\‚ðŽg—p‚·‚é•K—v‚Í“Á‚É‚ ‚è‚Ü‚¹‚ñB + +@‚±‚Ì‹@”\‚ðŽg—p‚·‚é‚É‚ÍA‚ ‚È‚½‚ÍMMTTY‚ð‹N“®‚·‚é‘O‚ÉŽŸ‚̎葱‚«‚ðŽÀs‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + +#pragma pack(1) // Enable pack of structer (VisualC++) +#pragma option -a- // Enable pack of structer (Borland C++Builder) +typedef struct { + LONG smpFreq; // FFT‚Ì•\ަƒTƒ“ƒvƒŠƒ“ƒOŽü”g”(->APP) + CHAR title[128]; // ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚̃^ƒCƒgƒ‹(->MMTTY) + CHAR comName[16]; // PTT/FSK‚̃|[ƒg–¼(->MMTTY) + LONG smpFFT; // 0-11025Hz 1-8000Hzƒx[ƒX(->MMTTY) + LONG flagFFT; // FFTXVƒtƒ‰ƒO(MMTTY <-> APP) + LONG arrayFFT[2048]; // FFT¶ƒf[ƒ^(->APP) + LONG flagXY; // XYXVƒtƒ‰ƒO(MMTTY <-> APP) + LONG arrayX[512]; // ƒ}[ƒNM†‚̶ƒf[ƒ^(->APP) + LONG arrayY[512]; // ƒXƒy[ƒXM†‚̶ƒf[ƒ^(->APP) + CHAR verMMTTY[16]; // MMTTY‚̃o[ƒWƒ‡ƒ“”Ô†(->APP) + CHAR RadioName[16]; // RadioCommand‚̃|[ƒg–¼(->MMTTY) + LONG flagLostSound; // ƒTƒEƒ“ƒh‚ðˆê•”ޏ‚Á‚½Žž‚É^(->APP) + LONG flagOverflow; // “ü—Í‚ª‘å‚«‰ß‚¬‚鎞‚É^(->APP) + LONG errorClock; // (ppm) ƒTƒEƒ“ƒhƒJ[ƒhƒNƒƒbƒN•â³’l(->APP) + LONG smpDemFreq; // ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”(->APP) + LONG TxBufCount; // ‘—Mƒoƒbƒtƒ@“à‚Ì–¢‘—Mƒf[ƒ^”(->APP) + CHAR ProfileName[16][64]; // ƒvƒƒtƒ@ƒCƒ‹–¼ + + LONG dummy[2048]; // —\”õ—̈æ +}COMARRAY; +#pragma pack() // Disable pack of structer (VisualC++) +#pragma option -a. // Disable pack of structer (Borland C++Builder) + + \‘¢‘̂̃pƒbƒN‚ÌŽwަ‚Í‚¨Žg‚¢‚̃Rƒ“ƒpƒCƒ‰‚ňقȂè‚Ü‚·Bƒƒ“ƒo[ŠÔ‚Ƀ_ƒ~[ƒXƒy[ƒX‚ª‘¶Ý‚µ‚È‚¢‚悤‚É‚µ‚ĉº‚³‚¢B‚à‚¿‚ë‚ñ‘S‘Ì‚ðƒoƒCƒg‚⃃“ƒO‚Ì‚P‚‚̑傫‚È”z—ñ‚Æ‚µ‚ÄAƒIƒtƒZƒbƒg‚É‚æ‚èƒAƒNƒZƒX‚·‚鎖‚à‚Å‚«‚Ü‚·B + +@ +HANDLE hMap; +COMARRAY *pMap = NULL; +hMap = ::CreateFileMapping(HANDLE(0xffffffff), NULL, PAGE_READWRITE, + 0, sizeof(COMARRAY), "MMTTY"); +if( hMap != NULL ){ + pMap = (COMARRAY *)::MapViewOfFile(hMap, FILE_MAP_WRITE, + 0, 0, 0); + if( pMap != NULL ){ + memset(pMap, 0, sizeof(COMARRAY)); // fill memory by 0 + } +} + + MMTTY‚ÍƒŠƒ‚[ƒgƒ‚[ƒh‚Å‹N“®‚³‚ꂽê‡A–¼‘O‚ª"MMTTY"‚̃vƒƒZƒXŠÔ‹¤—Lƒƒ‚ƒŠ‚ðƒI[ƒvƒ“‚·‚鎖‚ðŽŽ‚Ý‚Ü‚·B +@‚±‚Ì‹¤—Lƒƒ‚ƒŠ‚̃I[ƒvƒ“‚ɬŒ÷‚·‚邯AMMTTY‚Í‹¤—Lƒƒ‚ƒŠ‚Ìtitle‚ÆcomName‚𒲂ׂ܂·B +@titleƒƒ“ƒo‚É‚ÍAMMTTY‚̃Rƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚̃^ƒCƒgƒ‹‚¨‚æ‚ÑWindowsƒ^ƒXƒNƒo[‚É•\ަ‚³‚¹‚é•¶Žš—ñ‚ðASCIIZ•¶Žš—ñ‚ÅŽw’肵‚Ü‚·B‚±‚̃ƒ“ƒo‚ªNULL•¶Žš—ñ‚Ìê‡AMMTTY‚̓fƒtƒHƒ‹ƒg‚̃^ƒCƒgƒ‹‚ðŽg—p‚µ‚Ü‚·B +@comNameƒƒ“ƒo, comRadioƒƒ“ƒo‚É‚ÍAMMTTY‚ÌPTT§Œä‚̃|[ƒg–¼‚ðASCIIZ•¶Žš—ñ‚ÅŽw’肵‚Ü‚·B‚±‚̃ƒ“ƒo‚ªNULL•¶Žš—ñ‚Ìê‡AMMTTY‚̓fƒtƒHƒ‹ƒg‚̃|[ƒg–¼iƒ†[ƒUÝ’è‚É‚æ‚éj‚ðŽg—p‚µ‚Ü‚·B + + MMTTY‚ÍcomName‚ÆcomRadio‚ª‹N“®ŒãAƒZƒbƒgƒAƒbƒvƒ_ƒCƒAƒƒO‘€ì‚É‚æ‚è•ÏX‚³‚ꂽê‡A‚±‚ê‚ç‚Ì‹¤—Lƒƒ‚ƒŠ‚̃ƒ“ƒo‚ðXV‚µ‚Ü‚·B + +@MMTTY‚Í’èŠú“I‚ÉarrayFFT‚¨‚æ‚ÑarrayX, arrayY‚ðXV‚µATXM_LEVELƒƒbƒZ[ƒW‚ð‘—M‚µ‚Ü‚·B +@‚±‚ÌŽžAMMTTY‚ÍflagFFT‚ª‚O‚Ìꇂ¾‚¯arrayFFT‚ðXV‚µAflagFFT‚É‚P‚ðƒZƒbƒg‚µ‚Ü‚·B‚Ü‚½“¯—l‚ÉflagXY‚ª‚O‚Ìꇂ¾‚¯arrayXCarrayY‚ðXV‚µAflagXY‚É‚P‚ðƒZƒbƒg‚µ‚Ü‚·BTXM_LEVELƒƒbƒZ[ƒW‚Í‚±‚ê‚ç‚̃tƒ‰ƒO‚Ìó‘Ô‚ÉŠÖŒW‚È‚­AMMTTY‚Ì“à•”ƒ^ƒCƒ~ƒ“ƒO‚Å•K‚¸‘—M‚³‚ê‚Ü‚·B + +@‚ ‚È‚½‚ÍTXM_LEVELƒƒbƒZ[ƒW‚ÅXVƒCƒxƒ“ƒg‚𓾂邩A‚Ü‚½‚ÍŽ©•ªŽ©g‚Ì’èŠú“I‚ȃ^ƒCƒ}[ƒCƒxƒ“ƒg‚É‚æ‚èA‚±‚ê‚çî•ñ‚ðŽæ“¾‚Å‚«‚Ü‚·B‚»‚ÌÛA•K‚¸flagFFTAflagXY‚ªƒAƒNƒeƒBƒu‚Å‚ ‚鎖‚ðŠm”F‚µ‚ĉº‚³‚¢B‚Ü‚½Œp‘±‚µ‚ăf[ƒ^‚𓾂邽‚ß‚ÉA‚±‚ê‚ç‚Ì”z—ñî•ñ‚ð—˜—p‚µ‚½ŒãA•K‚¸flagFFT‚¨‚æ‚ÑflagXY‚ð‚O‚ɃZƒbƒg‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + + MMTTY‚ÍA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ÌŽ©—R“x‚ð‘¸d‚·‚邽‚ß‚ÉA‚±‚±‚ÉŠi”[‚·‚éƒf[ƒ^‚ÉŠÖ‚µ‚Ä‘½‚­‚̉ÁH‚ðs‚¢‚Ü‚¹‚ñB + + FFT‚ÌŽü”g”•ª‰ð”\‚ÍMMTTY‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚Ɉˑ¶‚µ‚Ü‚·BMMTTY‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚Í‹¤—Lƒƒ‚ƒŠ“à‚ÌsmpFreqƒƒ“ƒo[‚É‚æ‚Á‚Ä•\‚³‚ê‚Ü‚·B‰Šú’l‚Í11025Hz‚Å‚·‚ªAƒ†[ƒUÝ’è‚É‚æ‚è”÷–­‚É•ÏX‚³‚ê‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B + FFTƒf[ƒ^‚ÌU•‚ÌÅ‘å’l‚Í‚Q‚T‚U‚Å‚·‚ªA‚±‚Ì’l‚ðŽáбã‰ñ‚邱‚Æ‚ª‚ ‚蓾‚Ü‚·B + + ‚à‚µ‚ ‚È‚½‚ªFFT‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚É8000Hzƒx[ƒX‚ðŠó–]‚·‚é‚È‚ç‚ÎsmpFFTƒƒ“ƒo‚É‚P‚ðݒ肵‚ĉº‚³‚¢BMMTTY‚Í11025Hzƒx[ƒX‚ÌFFTƒf[ƒ^‚ðA8000Hzƒx[ƒX‚̃f[ƒ^‚ɕϊ·‚µ‚Ä‹¤—Lƒƒ‚ƒŠ‚ÉŠi”[‚µ‚Ü‚·B + + XYƒf[ƒ^‚Íí‚É11025Hzƒx[ƒXƒTƒ“ƒvƒŠƒ“ƒO‚Ì”¼•ª‚ÌŽü”g”‚É‚æ‚è•\‚³‚ê‚Ü‚·‚ªA‚±‚ÌŽü”g”‚»‚Ì‚à‚̂͂ ‚È‚½‚ɂƂÁ‚Ă͂ ‚Ü‚èˆÓ–¡‚ðŽ‚½‚È‚¢‚Í‚¸‚Å‚·B +@‚Ü‚½‚±‚ÌU•‚ÍAÅ‘å’l‚ª}16384‚ðŽáбã‰ñ‚邱‚Æ‚ª‚ ‚蓾‚Ü‚·B + +@flagLostSoundƒƒ“ƒo‚ÍA’Êí‚O‚Å‚·‚ªAƒTƒEƒ“ƒhƒJ[ƒhˆ—‚ªŠÔ‚ɇ‚í‚È‚©‚Á‚½Žž‚É‚OˆÈŠO‚ɃZƒbƒg‚³‚ê‚Ü‚·B“¯—l‚ÉflagOverflowƒƒ“ƒo‚àA’Êí‚O‚Å‚·‚ªAƒTƒEƒ“ƒh“ü—Í‚ª‰ß‘åiÅ‘å‚Ì3/4‚ð’´‚¦‚邯‚«j‚ɂȂÁ‚½ê‡‚É‚OˆÈŠO‚ɃZƒbƒg‚³‚ê‚Ü‚·B‚¢‚¸‚ê‚àƒGƒ‰[‚ª‰ðÁ‚·‚邯ީ“®“I‚É‚O‚É–ß‚è‚Ü‚·B +@‚±‚ê‚ç‚Ìó‘Ô‚ðŠÄŽ‹‚·‚éꇂÍATXM_LEVELƒƒbƒZ[ƒW‚̃^ƒCƒ~ƒ“ƒO‚ŕ߂܂¦‚é‚Ì‚ª—Ç‚¢‚Å‚µ‚傤B + +@errorClockƒƒ“ƒo[‚̓†[ƒU‚ªƒZƒbƒgƒAƒbƒv‰æ–ʂŃTƒEƒ“ƒhƒJ[ƒh‚̃Gƒ‰[•Ⳃðs‚Á‚½Œ‹‰Ê‚ðAPPM•\Œ»‚ɕϊ·‚µ‚ÄAMMTTY‚Ì‹N“®Žž‚ÉŠi”[‚³‚ê‚Ü‚·B“¯—l‚É +smpDemFreqƒƒ“ƒo[‚̓fƒ‚ƒWƒ…ƒŒ[ƒ^‚ÌŽÀƒTƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð•\‚µ‚Ü‚·B + +@txBufCountƒƒ“ƒo[‚ÍAMMTTY‚Ì‘—Mƒoƒbƒtƒ@“à‚Ì–¢‘—M‚̃f[ƒ^”‚ð•ÛŽ‚µ‚Ü‚·B‚±‚̃f[ƒ^‚ÍTXM_LEVELƒƒbƒZ[ƒW‚̃^ƒCƒ~ƒ“ƒO‚Ŏ擾‚·‚é‚Ì‚ª—Ç‚¢‚Å‚µ‚傤B + + +›VB‚ł̋¤—Lƒƒ‚ƒŠƒAƒNƒZƒXƒTƒ“ƒvƒ‹ By Bob Furzer K4CY +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ˆÈ‰º‚ÉVB‚©‚ç’¼Ú‹¤—Lƒƒ‚ƒŠ‚ðƒAƒNƒZƒX‚·‚éƒTƒ“ƒvƒ‹ƒR[ƒh‚ðŽ¦‚µ‚Ü‚·B‚±‚̃R[ƒh‚ÍBob‚ª‘‚¢‚½‚à‚Ì‚ðŽQl‚ɂƑ—‚Á‚Ä‚«‚Ä‚­‚ꂽ‚à‚̂ł·(Thanks again Bob)BŽ„‚ÍVB‚ð‚Ü‚Á‚½‚­’m‚ç‚È‚¢‚Ì‚ÅA‚·‚×‚Ä‚ð‚»‚Ì‚Ü‚ÜŒfÚ‚µ‚Ü‚·B + +@‚±‚̃Tƒ“ƒvƒ‹‚ÉŠÖ‚·‚鎿–â‚ðBob‚É‘—‚ç‚È‚¢‚ʼnº‚³‚¢B‚Ü‚½Ž„‚à“š‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB + +Global hMap As Long +Global pMap As Long + +Type COMARRAY + smpFreq As Long + title As String * 64 + comName As String * 8 + smpFFT As Long + flagFFT As Long + arrayFFT(2048) As Long + flagXY As Long + arrayX(512) As Long + arrayY(512) As Long + verMMTTY As String * 8 + dummy(2048) As Long +End Type + +Global SharedMemory As COMARRAY + +Private Sub Form_Load() + + Const PAGE_READWRITE = &H4 + Const SECTION_ALL_ACCESS = &H1 Or &H2 Or &H4 Or &H8 Or &H10 Or &HF0000 + + On Error Resume Next + + MMTTY_MSG = RegisterWindowMessage("MMTTY") + hMap = CreateFileMapping(-1, ByVal 0&, &H4, 0&, 20672, "MMTTY") + If hMap <> 0 Then + pMap = MapViewOfFile(hMap, SECTION_ALL_ACCESS, 0, 0, 0) + If pMap <> 0 Then + ZeroMemory ByVal pMap, 20672 + + SharedMemory.title = "RTTY Engine" & Chr$(0) + SharedMemory.radioName = "NONE" & Chr$(0) + SharedMemory.comName = "NONE" & Chr$(0) + SharedMemory.smpFFT = 1 + SharedMemory.flagFFT = 0 + + CopyMemory ByVal pMap + 4, ByVal SharedMemory.title, Len(SharedMemory.title) + CopyMemory ByVal pMap + 132, ByVal SharedMemory.radioName, Len(SharedMemory.radioName) + CopyMemory ByVal pMap + 12464, ByVal SharedMemory.comName, Len(SharedMemory.comName) + CopyMemory ByVal pMap + 148, VarPtr(SharedMemory.smpFFT), 4 + CopyMemory ByVal pMap + 152, VarPtr(SharedMemory.flagFFT), 4 + + X& = Shell("mmtty -t -h" & Hex$(Me.hwnd)) + MMTTYhWnd = FindWindow(vbNullString, SharedMemory.title) + Form1.Caption = Str$(MMTTYhWnd) + Else + X& = MsgBox("MapViewOfFile API Failed", vbOKOnly, "Catastrophic Error") + End If + Else + X& = MsgBox("CreateFileMapping API falied", vbOKOnly, "Catastrophic error") + End If +End Sub + +Private Sub Form_Unload(Cancel As Integer) + If UnmapViewOfFile(pMap) <> 0 Then Call CloseHandle(hMap) + X = PostMessage(MMTTYhWnd, MMTTY_MSG, 0, 0) +End Sub + + +›ƒZƒbƒgƒAƒbƒvƒ_ƒCƒAƒƒOƒ{ƒbƒNƒX +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@MMTTY‚Í”‘½‚­‚̃pƒ‰ƒ[ƒ^‚ðŽ‚¿‚Ü‚·B‚ ‚È‚½‚ÍRXM_SHOWSETUPƒƒbƒZ[ƒW‚É‚æ‚èƒZƒbƒgƒAƒbƒvƒ_ƒCƒAƒƒO‚ð•\ަ‚³‚¹‚ÄA‚±‚̃ZƒbƒeƒBƒ“ƒO‚Ì‚½‚߂̃†[ƒUƒCƒ“ƒ^[ƒtƒF[ƒX‚ðƒ†[ƒU[‚É’ñ‹Ÿ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B +@‚ ‚È‚½‚Í‚±‚̃_ƒCƒAƒƒOƒ{ƒbƒNƒX‚É•s–ž‚ðŽ‚Â‚©‚à’m‚ê‚Ü‚¹‚ñB‚µ‚©‚µ‚±‚̃_ƒCƒAƒƒOƒ{ƒbƒNƒX‚ðŽg—p‚µ‚Ä‚¢‚éŒÀ‚èAMMTTY‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^[‚⃂ƒWƒ…ƒŒ[ƒ^[‚Ì“®ì‚ª«—ˆC³‚³‚ꂽꇂɂ¨‚¢‚Ä‚àA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚É—^‚¦‚é‰e‹¿‚ðŬŒÀ‚É—}‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + +›ƒvƒƒtƒB[ƒ‹‚Ì‹L‰¯‚ƌĂÑo‚µ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + MMTTY‚Í”‘½‚­‚̃pƒ‰ƒ[ƒ^‚ðŽ‚¿‚Ü‚·B‚µ‚©‚µŽÀۂ̉^—pŽž‚ɃZƒbƒgƒAƒbƒvƒ_ƒCƒAƒƒOƒ{ƒbƒNƒX‚ðŠJ‚¢‚Ä‚»‚ê‚ç‚ð•ÏX‚·‚é‚͎̂኱•s•Ö‚³‚ª‚ ‚è‚Ü‚·B + ‚»‚±‚ÅVer1.60B‚©‚ç‚̓vƒƒtƒB[ƒ‹ƒƒjƒ…[‚ð’ljÁ‚µAƒ†[ƒU‚ªƒpƒ‰ƒ[ƒ^ƒZƒbƒg‚ðˆêЇ‚µ‚ÄŽ©—R‚É‹L‰¯EŒÄ‚Ño‚µ‚ðs‚¦‚邿‚¤‚É‚µ‚Ü‚µ‚½B‚±‚±‚É‹L‰¯‚³‚ê‚é‚̂̓fƒ‚ƒWƒ…ƒŒ[ƒ^AƒfƒR[ƒ_Aƒ‚ƒWƒ…ƒŒ[ƒ^‚̃pƒ‰ƒ[ƒ^‚ÉŒÀ‚ç‚ê‚Ü‚·B + +@ƒXƒ^ƒ“ƒhƒAƒƒ“‚ÌMMTTY‚Í‚WŒÂ‚̃vƒƒtƒB[ƒ‹ƒƒjƒ…[ƒXƒƒbƒg‚ðŽ‚¿‚Ü‚·‚ªAƒŠƒ‚[ƒgƒ‚[ƒh‚ł̓Xƒƒbƒg0`ƒXƒƒbƒg15‚Ü‚ÅÅ‘å‚P‚UŒÂ‚܂ł̃vƒƒtƒB[ƒ‹ƒXƒƒbƒg‚ðŽg—p‚Å‚«‚Ü‚·BƒXƒƒbƒg0`ƒXƒƒbƒg7‚ÍMMTTY‚̃ƒjƒ…[‚ňµ‚í‚ê‚é‚̂Ƌ¤’ʂł·B + +@ƒpƒ‰ƒ[ƒ^‚ÍuUserPara.inivƒtƒ@ƒCƒ‹‚ɃXƒƒbƒg0`ƒXƒƒbƒg15‚ªADefine0`Define15‚܂ł̃Gƒ“ƒgƒŠ‚Æ‚µ‚Ä‹L‰¯‚³‚ê‚Ü‚·B +@‚±‚Ì‹@”\‚Ì‘¼‚Ì—˜—p•û–@‚Æ‚µ‚ÄAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍINIƒtƒ@ƒCƒ‹‚̈ꕔ‚̃pƒ‰ƒ[ƒ^‚ð’¼Ú‘‚«Š·‚¦‚½Œã‚ÉARXM_PROFILEƒƒbƒZ[ƒW‚ðMMTTY‚É‘—M‚µA“Á’è‚̃pƒ‰ƒ[ƒ^‚ð”CˆÓ‚É•ÏX‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B‚»‚Ìꇂ̓Xƒƒbƒg15iDefine15j‚ðƒeƒ“ƒ|ƒ‰ƒŠ‚̃Xƒƒbƒg‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B + +@‚à‚µ‚ ‚È‚½‚ªƒpƒ‰ƒ[ƒ^ƒZƒbƒg‚É“Á•ʂȒñˆÄi—Ⴆ‚΃tƒ‰ƒbƒ^[‚âƒ}ƒ‹ƒ`ƒpƒX‚É—LŒø‚ȃpƒ‰ƒ[ƒ^j‚ðŽ‚Â‚È‚ç‚ÎA‚»‚̃pƒ‰ƒ[ƒ^‚ð‹L‰¯‚µ‚½UserPara.iniƒtƒ@ƒCƒ‹‚ðA‚ ‚È‚½‚Ì”z•zƒtƒ@ƒCƒ‹‚Ɋ܂߂ÄAƒ†[ƒU‚É‚»‚Ì‹@”\‚ð’ñ‹Ÿ‚·‚邱‚Ƃ͗ǂ¢l‚¦‚Å‚·B‚»‚ÌÛA•ÏX‚µ‚½‚­‚È‚¢ŒÂX‚̃pƒ‰ƒ[ƒ^‚ɂ‚¢‚Ä‚ÍA’P‚É‚»‚̃pƒ‰ƒ[ƒ^’è‹`s‚ðUserPara.ini‚©‚çƒGƒfƒBƒ^‚Å휂µ‚Ä‚¨‚¯‚ÎOK‚Å‚·B + + MMTTY‚ªƒvƒƒtƒB[ƒ‹‚ð‹L˜^‚·‚éÛAUserPara.ini“à‚ÅŠÇ—‚·‚éƒvƒƒtƒB[ƒ‹‚Ì–¼‘OiName=j‚ÍA‹¤—Lƒƒ‚ƒŠ‚ðŽg—p‚µ‚Ä‚¢‚È‚¢ê‡‚ÍŽ©“®“I‚É"Remote 1"`"Remote 16"‚Ì–¼‘O‚ªŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€“à‚ŕʂ̖¼‘O‚ð’è‹`‚·‚éꇂÍUserPara.ini“à‚É“Á•ʂȃGƒ“ƒgƒŠi—Ⴆ‚Î RemoteName=j‚ð쬂µA‚»‚±‚É‹L˜^‚·‚邿‚¤‚É‚·‚ê‚Ηǂ¢‚Å‚µ‚傤BMMTTY‚Í‚ ‚È‚½‚ª’ljÁ‚µ‚½ƒGƒ“ƒgƒŠ‚Ì“à—e‚ð•ÏX‚µ‚Ü‚¹‚ñB + + +›‚»‚Ì‘¼ +~~~~~~~~ +@ƒŠƒ‚[ƒgƒ‚[ƒh‚ÍAMMTTY.EXE‚݂̂łà‹N“®‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚ ‚È‚½‚ª–³—¿ƒ\ƒtƒg‚ð”z•z‚·‚éê‡A‚à‚µ•K—v‚È‚ç‚ÎMMTTY.EXE‚ð‚ ‚È‚½‚̃pƒbƒP[ƒW‚Ɋ܂߂邱‚Æ‚ð‹ÖŽ~‚µ‚Ü‚¹‚ñB‚»‚Ìê‡AŽ„iJE3HHTj‚ւ̘A—‚ÍˆêØ•K—v‚ ‚è‚Ü‚¹‚ñB‚Ç‚¤‚¼Ž©—R‚É‚â‚Á‚ĉº‚³‚¢B‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ÌK‰^‚ð‹F‚è‚Ü‚·B + +73, Mako - JE3HHT + \ No newline at end of file diff --git a/temp.txt b/temp.txt new file mode 100644 index 0000000..33ea5f8 --- /dev/null +++ b/temp.txt @@ -0,0 +1,833 @@ +#include +#pragma hdrstop + +#include "Wave.h" + +//--------------------------------------------------------------------------- +// ‰Šú‰» +__fastcall CWave::CWave(void) +{ + m_Error = 0; + m_InOpen = m_OutOpen = FALSE; + m_hin = NULL; + m_hout = NULL; + m_InEvent = NULL; + m_OutEvent = NULL; + for( int i = 0; i < WAVE_FIFO_MAX; i++ ){ + m_pInBuff[i] = m_pOutBuff[i] = NULL; + } + m_pOutBase = m_pInBase = NULL; + m_InBuffSize = 1024; + m_OutBuffSize = 1024; + m_OutFirst = FALSE; + m_InFifoSize = 12; + m_OutFifoSize = 4; + m_SoundStereo = 1; + m_pDLL = NULL; + ::InitializeCriticalSection(&m_InCS); + ::InitializeCriticalSection(&m_OutCS); +} + +//--------------------------------------------------------------------------- +// I—¹ŽžŽÀsƒ‹[ƒ`ƒ“ +__fastcall CWave::~CWave() +{ + ::DeleteCriticalSection(&m_InCS); + ::DeleteCriticalSection(&m_OutCS); + if( m_pDLL ){ + delete m_pDLL; + m_pDLL = NULL; + } +} +#if 0 +//--------------------------------------------------------------------------- +// ƒTƒEƒ“ƒhƒJ[ƒh‚Ì–â‚¢‡‚킹 +BOOL __fastcall CWave::IsFormatSupported(LPWAVEFORMATEX pWFX, UINT IDDevice) +{ + return (::waveOutOpen( + NULL, // ptr can be NULL for query + IDDevice, // the device identifier + pWFX, // defines requested format + NULL, // no callback + NULL, // no instance data + WAVE_FORMAT_QUERY // query only, do not open device + ) ? FALSE : TRUE); +} +#endif +//--------------------------------------------------------------------------- +// ƒTƒEƒ“ƒhƒJ[ƒh‚Ì“ü—͂ł̃I[ƒvƒ“ +// WFX.wFormatTag = WAVE_FORMAT_PCM; +// WFX.nChannels = 1; +// WFX.wBitsPerSample = 16; +// WFX.nSamplesPerSec = 11025; +// WFX.nBlockAlign = WORD(WFX.nChannels *(WFX.wBitsPerSample/8)); +// WFX.nAvgBytesPerSec = WFX.nBlockAlign * WFX.nSamplesPerSec; +// WFX.cbSize = 0; +BOOL __fastcall CWave::InOpen(LPWAVEFORMATEX pWFX, UINT IDDevice, DWORD Size) +{ + if( m_pDLL ){ + m_InOpen = m_pDLL->InOpen(pWFX->nSamplesPerSec, Size); + if( !m_InOpen ) PumpMessages(); + return m_InOpen; + } + int i; + + if( m_InOpen ) InClose(); + m_Error = 0; + m_InWait = m_InOver = FALSE; + m_InWP = m_InRP = m_InBC = 0; + m_IWFX = *pWFX; + m_InBuffSize = Size * (m_IWFX.wBitsPerSample/8) * m_IWFX.nChannels; + m_InMemSize = sizeof(WAVEHDR) + m_InBuffSize; + if( m_InMemSize & 3 ) m_InMemSize += 4 - (m_InMemSize & 3); + m_InAllocSize = m_InMemSize * m_InFifoSize; + m_InEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); + // ƒTƒEƒ“ƒhƒJ[ƒh‚̃I[ƒvƒ“ + if( (m_Error = ::waveInOpen( &m_hin, IDDevice, pWFX, (DWORD)WaveInProc, (DWORD)this, CALLBACK_FUNCTION ) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + // ƒoƒbƒtƒ@‚Ì€”õ + m_pInBase = new char[m_InAllocSize]; + ::VirtualLock(m_pInBase, m_InAllocSize); + memset(m_pInBase, 0, m_InAllocSize); + LPSTR p = m_pInBase; + for( i=0; i < m_InFifoSize; i++, p += m_InMemSize ){ + m_pInBuff[i] = (WAVEHDR *)p; + ((WAVEHDR *)p)->dwBufferLength = m_InBuffSize; + ((WAVEHDR *)p)->dwFlags = 0; + ((WAVEHDR *)p)->dwUser = NULL; + ((WAVEHDR *)p)->dwBytesRecorded = NULL; + ((WAVEHDR *)p)->lpData = p + sizeof(WAVEHDR); + if( (m_Error = ::waveInPrepareHeader(m_hin, (WAVEHDR *)p, sizeof(WAVEHDR)) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + if( (m_Error = ::waveInAddBuffer(m_hin, (WAVEHDR *)p, sizeof(WAVEHDR)) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + } + // Žæ‚肱‚݂̊JŽn + if( (m_Error = ::waveInStart(m_hin) ) != MMSYSERR_NOERROR ){ + InClose(); + return FALSE; + } + m_InOpen = TRUE; + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall CWave::InClose() +{ + if( m_pDLL ){ + m_pDLL->InClose(); + m_InOpen = FALSE; + PumpMessages(); + return; + } + int i; + + if(NULL != m_hin){ + ::waveInReset(m_hin); + if( m_pInBase != NULL ){ + for( i=0; i < m_InFifoSize; i++ ){ + if( m_pInBuff[i] != NULL ){ + if( m_pInBuff[i]->dwFlags & WHDR_PREPARED ){ + ::waveInUnprepareHeader(m_hin, m_pInBuff[i], sizeof(WAVEHDR)); + } + } + } + } + ::waveInClose(m_hin); + m_hin = NULL; + if( m_pInBase != NULL ){ + ::VirtualUnlock(m_pInBase, m_InAllocSize); + delete[] m_pInBase; //JA7UDE 0428 + m_pInBase = NULL; + } + } + if(m_InEvent != NULL){ + ::CloseHandle(m_InEvent); + m_InEvent = NULL; + } + m_InOpen = FALSE; +} +//--------------------------------------------------------------------------- +BOOL __fastcall CWave::InRead(double* pData, int Len) +{ + if( m_pDLL ){ + return m_pDLL->InRead(pData, Len); + } + int i; + + if( !m_InOpen ){ + m_Error = 1; + return FALSE; + } + if( m_InOver ){ + m_Error = 1; + InClose(); + return FALSE; + } + + ::EnterCriticalSection(&m_InCS); + if( !m_InBC ){ // ‚Ü‚¾ƒf[ƒ^‚ª‘¶Ý‚µ‚È‚¢Žž + m_InWait++; + ::LeaveCriticalSection(&m_InCS); + // ƒoƒbƒtƒ@‚Ƀf[ƒ^‚ª—­‚Ü‚é‚܂ő҂ + if( ::WaitForSingleObject( m_InEvent, WAVE_TIMEOUT_EVENT ) != WAIT_OBJECT_0 ){ + m_Error = 1; + InClose(); + return FALSE; + } + } + else { + ::LeaveCriticalSection(&m_InCS); + } + // ƒf[ƒ^‚ð•‚“®­”“_‚ɕϊ· + LPWAVEHDR hp = m_pInBuff[m_InRP]; + if( m_IWFX.wBitsPerSample == 16 ){ // 16bits + SHORT *rp = (SHORT *)hp->lpData; + if( m_IWFX.nChannels == 2 ){ + if( m_SoundStereo == 1 ){ // Left + for( i = 0; i < Len; i++, pData++ ){ + *pData = double(*rp++); + rp++; + } + } + else { // Right + for( i = 0; i < Len; i++, pData++ ){ + rp++; + *pData = double(*rp++); + } + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + *pData = double(*rp++); + } + } + } + else { // 8bits + union { + struct { + BYTE low; + BYTE high; + }bd; + SHORT wd; + }data; + data.bd.low = 0; + BYTE *rp = (BYTE *)hp->lpData; + if( m_IWFX.nChannels == 2 ){ + if( m_SoundStereo == 1 ){ // Left + for( i = 0; i < Len; i++, pData++ ){ + data.bd.high = BYTE((*rp++) - 128); + *pData = double(data.wd); + rp++; + } + } + else { // Right + for( i = 0; i < Len; i++, pData++ ){ + rp++; + data.bd.high = BYTE((*rp++) - 128); + *pData = double(data.wd); + } + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + data.bd.high = BYTE((*rp++) - 128); + *pData = double(data.wd); + } + } + } + hp->dwBytesRecorded = NULL; + ::waveInAddBuffer(m_hin, hp, sizeof(WAVEHDR)); + m_InBC--; // ‚P–½—߂œWŠJ‚³‚ê‚é‚̂ŠCriticalSection ‚Í•s—v + m_InRP++; + if( m_InRP >= m_InFifoSize){ + m_InRP = 0; + } + return TRUE; +} +//--------------------------------------------------------------------------- +//void CALLBACK WaveProc(hWave, uMsg, dwInstance, dwParam1, dwParam2) +// +//HWAVE hWave; /* ƒEƒF[ƒuƒtƒH[ƒ€ ƒfƒoƒCƒX‚̃nƒ“ƒhƒ‹ */ +//UINT uMsg; /* ‘—‚郃bƒZ[ƒW */ +//DWORD dwInstance; /* ƒCƒ“ƒXƒ^ƒ“ƒX ƒf[ƒ^ */ +//DWORD dwParam1; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +//DWORD dwParam2; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +void CALLBACK WaveInProc(HWAVE m_hin, UINT uMsg, CWave* pWave, DWORD dwParam1, DWORD dwParam2 ) +{ + if( uMsg == MM_WIM_DATA ){ + ::EnterCriticalSection(&pWave->m_InCS); + pWave->m_InBC++; + pWave->m_InWP++; + if( pWave->m_InWP >= pWave->m_InFifoSize ) pWave->m_InWP = 0; + if( pWave->m_InBC > pWave->m_InFifoSize ) pWave->m_InOver = TRUE; + if(pWave->m_InWait){ + pWave->m_InWait--; + ::SetEvent(pWave->m_InEvent); + } + ::LeaveCriticalSection(&pWave->m_InCS); + } +} +//--------------------------------------------------------------------------- +// ƒTƒEƒ“ƒhƒJ[ƒh‚Ìo—͂ł̃I[ƒvƒ“ +// WFX.wFormatTag = WAVE_FORMAT_PCM; +// WFX.nChannels = 1; +// WFX.wBitsPerSample = 16; +// WFX.nSamplesPerSec = 11025; +// WFX.nBlockAlign = WORD(WFX.nChannels *(WFX.wBitsPerSample/8)); +// WFX.nAvgBytesPerSec = WFX.nBlockAlign * WFX.nSamplesPerSec; +// WFX.cbSize = 0; +BOOL __fastcall CWave::OutOpen(LPWAVEFORMATEX pWFX, UINT IDDevice, DWORD Size) +{ + if( m_pDLL ){ + m_OutOpen = m_pDLL->OutOpen(pWFX->nSamplesPerSec, Size); + if( !m_OutOpen ) PumpMessages(); + return m_OutOpen; + } + if( m_OutOpen ) OutAbort(); + m_Error = 0; + m_OutBCC = 0x7fffffff; + m_OutWait = FALSE; + m_OutUnder = FALSE; + m_OutWP = m_OutRP = m_OutBC = 0; + m_OWFX = *pWFX; + m_OutBuffSize = Size * (m_OWFX.wBitsPerSample/8) * m_OWFX.nChannels; + m_OutMemSize = sizeof(WAVEHDR) + m_OutBuffSize; + if( m_OutMemSize & 3 ) m_OutMemSize += 4 - (m_OutMemSize & 3); + m_OutAllocSize = m_OutMemSize * m_OutFifoSize; + m_OutEvent = ::CreateEvent(NULL, FALSE,FALSE,NULL); + if( (m_Error = ::waveOutOpen( &m_hout, IDDevice , pWFX, (DWORD)WaveOutProc, (DWORD)this, CALLBACK_FUNCTION ) ) != MMSYSERR_NOERROR ){ + OutAbort(); + return FALSE; + } + if( (m_Error = ::waveOutPause(m_hout))!= MMSYSERR_NOERROR ){ + OutAbort(); + return FALSE; + } + // ƒoƒbƒtƒ@[‚Ì€”õ + m_pOutBase = new char[m_OutAllocSize]; + ::VirtualLock(m_pOutBase, m_OutAllocSize); + memset(m_pOutBase, 0, m_OutAllocSize); + LPSTR p = m_pOutBase; + for(int i = 0; i < m_OutFifoSize; i++, p += m_OutMemSize ){ + m_pOutBuff[i] = (WAVEHDR *)p; + ((WAVEHDR *)p)->dwBufferLength = m_OutBuffSize; + ((WAVEHDR *)p)->dwFlags = 0; + ((WAVEHDR *)p)->dwUser = NULL; + ((WAVEHDR *)p)->dwLoops = NULL; + ((WAVEHDR *)p)->lpData = p + sizeof(WAVEHDR); + if( (m_Error = ::waveOutPrepareHeader(m_hout, (WAVEHDR *)p, sizeof(WAVEHDR)) ) != MMSYSERR_NOERROR ){ + OutAbort(); + return FALSE; + } + } + m_OutOpen = TRUE; + m_OutFirst = TRUE; + return TRUE; +} +#if 0 +//--------------------------------------------------------------------------- +DWORD __fastcall CWave::GetOutVolume(void) +{ + if( !m_OutOpen ){ + return 0x8000; + } + DWORD vol; + ::waveOutGetVolume(m_hout, &vol); + return vol; +} +//--------------------------------------------------------------------------- +BOOL __fastcall CWave::SetOutVolume(DWORD vol) +{ + if( !m_OutOpen ){ + return FALSE; + } + ::waveOutSetVolume(m_hout, vol); + return TRUE; +} +#endif +//--------------------------------------------------------------------------- +BOOL __fastcall CWave::OutWrite(double *pData, int Len) +{ + if( m_pDLL ){ + return m_pDLL->OutWrite(pData, Len); + } + if( !Len ) return 0; + int i; + if( !m_OutOpen ){ + m_Error = 1; + return FALSE; + } + if( m_OutUnder ){ + m_Error = 1; + OutAbort(); + return FALSE; + } + + // ‘—Mƒoƒbƒtƒ@‹ó‚«‘Ò‚¿ + EnterCriticalSection(&m_OutCS); + if( m_OutBC >= m_OutFifoSize ){ + m_OutWait++; + ::LeaveCriticalSection(&m_OutCS); + if( ::WaitForSingleObject( m_OutEvent, WAVE_TIMEOUT_EVENT ) != WAIT_OBJECT_0 ){ + m_Error = 2; + OutAbort(); + return FALSE; + } + } + else { + ::LeaveCriticalSection(&m_OutCS); + } + + // ƒf[ƒ^‚̕ϊ· + LPWAVEHDR hp = m_pOutBuff[m_OutWP]; + if(m_OWFX.wBitsPerSample == 16){ // 16bits + SHORT *wp = (SHORT *)hp->lpData; + if( m_OWFX.nChannels == 2 ){ + for( i = 0; i < Len; i++, pData++ ){ + *wp++ = (SHORT)(*pData); + *wp++ = (SHORT)(*pData); + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + *wp++ = (SHORT)(*pData); + } + } + } + else { // 8bits + BYTE *wp = (BYTE *)hp->lpData; + union { + struct { + BYTE low; + BYTE high; + }bd; + SHORT wd; + }data; + if( m_OWFX.nChannels == 2 ){ + for( i = 0; i < Len; i++, pData++ ){ + data.wd = (SHORT)((*pData) + 32768); + *wp++ = data.bd.high; + *wp++ = data.bd.high; + } + } + else { + for( i = 0; i < Len; i++, pData++ ){ + data.wd = (SHORT)((*pData) + 32768); + *wp++ = data.bd.high; + } + } + } + ::waveOutWrite(m_hout, hp, sizeof(WAVEHDR) ); + m_OutBC++; // ‚P–½—߂œWŠJ‚³‚ê‚é‚̂ŠCriticalSection ‚Í•s—v + if( m_OutFirst ){ + if( (m_OutBC >= 8) || (m_OutBC >= (m_OutFifoSize-1)) ){ + m_OutFirst = FALSE; + ::waveOutRestart( m_hout ); + } + } + m_OutWP++; + if( m_OutWP >= m_OutFifoSize){ + m_OutWP = 0; + } + return TRUE; +} +//--------------------------------------------------------------------------- +void __fastcall CWave::OutFlush() +{ + if( m_pDLL ){ + m_pDLL->OutFlush(); + return; + } + if(m_hout != NULL){ + // ƒoƒbƒtƒ@‘—M‘Ò‚¿ + while(1){ + ::EnterCriticalSection(&m_OutCS); + if( m_OutBC > 0 ){ // –¢‘—oƒf[ƒ^‚ª‘¶Ý‚·‚éê‡ + m_OutWait++; + ::LeaveCriticalSection(&m_OutCS); + if( ::WaitForSingleObject( m_OutEvent, WAVE_TIMEOUT_EVENT ) != WAIT_OBJECT_0 ){ + m_Error = 2; + break; + } + } + else { + ::LeaveCriticalSection(&m_OutCS); + break; + } + } + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::OutAbort() +{ + if( m_pDLL ){ + m_pDLL->OutAbort(); + m_OutOpen = FALSE; + PumpMessages(); + return; + } + if(m_hout != NULL){ + ::waveOutReset(m_hout); + ::Sleep(1); // for the timing + // ƒoƒbƒtƒ@‚̉ð•ú + if( m_pOutBase != NULL ){ + for(int i = 0; i < m_OutFifoSize; i++ ){ + if( m_pOutBuff[i] != NULL ){ + if( m_pOutBuff[i]->dwFlags & WHDR_PREPARED ){ + ::waveOutUnprepareHeader(m_hout, m_pOutBuff[i], sizeof(WAVEHDR)); + } + } + } + } + ::waveOutClose(m_hout); + m_hout = NULL; + if( m_pOutBase != NULL ){ + ::VirtualUnlock(m_pOutBase, m_OutAllocSize); + delete[] m_pOutBase; + m_pOutBase = NULL; + } + } + if(m_OutEvent != NULL){ + ::CloseHandle(m_OutEvent); + m_OutEvent = NULL; + } + m_OutOpen = FALSE; +} +//--------------------------------------------------------------------------- +//void CALLBACK WaveProc(hWave, uMsg, dwInstance, dwParam1, dwParam2) +// +//HWAVE hWave; /* ƒEƒF[ƒuƒtƒH[ƒ€ ƒfƒoƒCƒX‚̃nƒ“ƒhƒ‹ */ +//UINT uMsg; /* ‘—‚郃bƒZ[ƒW */ +//DWORD dwInstance; /* ƒCƒ“ƒXƒ^ƒ“ƒX ƒf[ƒ^ */ +//DWORD dwParam1; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +//DWORD dwParam2; /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’è‹`‚̃pƒ‰ƒ[ƒ^ */ +void CALLBACK WaveOutProc(HWAVE m_hout, UINT uMsg, CWave* pWave, DWORD dwParam1, DWORD dwParam2 ) +{ + if( uMsg == WOM_DONE ){ + EnterCriticalSection(&pWave->m_OutCS); + pWave->m_OutBCC--; + pWave->m_OutBC--; + pWave->m_OutRP++; + if( pWave->m_OutRP >= pWave->m_OutFifoSize) pWave->m_OutRP = 0; + if( !pWave->m_OutBC ) pWave->m_OutUnder = TRUE; + if(pWave->m_OutWait){ + pWave->m_OutWait--; + SetEvent(pWave->m_OutEvent); + } + LeaveCriticalSection(&pWave->m_OutCS); + } +} + +//--------------------------------------------------------------------------- +int __fastcall CWave::GetInBC(void) +{ + if( m_pDLL ){ + return m_pDLL->GetInBC(); + } + else { + return m_InBC; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::GetOutBC(void) +{ + if( m_pDLL ){ + return m_pDLL->GetOutBC(); + } + else { + return m_OutBC; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::GetOutBCC(void) +{ + if( m_pDLL ){ + return m_pDLL->GetOutBCC(); + } + else { + return m_OutBCC; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::SetOutBCC(int count) +{ + if( m_pDLL ){ + m_pDLL->SetOutBCC(count); + } + else { + m_OutBCC = count; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::IsInBufCritical(void) +{ + if( m_pDLL ){ + return m_pDLL->IsInBufCritical(); + } + else { + return ( m_InBC >= (m_InFifoSize/2) ) ? 1 : 0; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::IsOutBufCritical(void) +{ + if( m_pDLL ){ + return m_pDLL->IsOutBufCritical(); + } + else { + return (m_OutBC <= (m_OutFifoSize/2)) ? 1 : 0; + } +} +//--------------------------------------------------------------------------- +int __fastcall CWave::IsOutBufFull(void) +{ + if( m_pDLL ){ + return m_pDLL->IsOutBufFull(); + } + else { + return (m_OutBC >= m_OutFifoSize) ? 1 : 0; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::SetPTT(LONG tx) +{ + if( m_pDLL ) m_pDLL->SetPTT(tx); +} +//--------------------------------------------------------------------------- +int __fastcall CWave::GetTimeout(void) +{ + if( m_pDLL ){ + return m_pDLL->GetTimeout(); + } + else { + return 5000; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::UpdateDevice(int ID) +{ + if( ID == -2 ){ + if( (m_pDLL == NULL) || m_pDLL->IsNameChange() ){ + if( m_pDLL ) delete m_pDLL; + m_pDLL = new CXWave(sys.m_SoundMMW.c_str()); + } + } + else if( m_pDLL != NULL ){ + delete m_pDLL; + m_pDLL = NULL; + } +} +//--------------------------------------------------------------------------- +void __fastcall CWave::PumpMessages(void) +{ + if( m_pDLL ){ + m_pDLL->PumpMessages(); + } +} + + + +//*************************************************************************** +// CXWave class +//--------------------------------------------------------------------------- +__fastcall CXWave::CXWave(LPCSTR pName) +{ + m_ItemName = pName; + + char Name[MAX_PATH]; + if( !*GetEXT(pName) ){ + wsprintf(Name, "%s.mmw", pName); + pName = Name; + } + + m_hLib = ::LoadLibrary(pName); + if( m_hLib ){ + + fmmwPumpMessages = PROC(mmwPumpMessages); + fmmwSetPTT = PROC(mmwSetPTT); + fmmwGetTimeout = PROC(mmwGetTimeout); + + fmmwInOpen = PROC(mmwInOpen); + fmmwInClose = PROC(mmwInClose); + fmmwInRead = PROC(mmwInRead); + + fmmwGetInExist = PROC(mmwGetInExist); + fmmwIsInCritical = PROC(mmwIsInCritical); + + fmmwOutOpen = PROC(mmwOutOpen); + fmmwOutAbort = PROC(mmwOutAbort); + fmmwOutFlush = PROC(mmwOutFlush); + fmmwOutWrite = PROC(mmwOutWrite); + + fmmwIsOutCritical = PROC(mmwIsOutCritical); + fmmwIsOutFull = PROC(mmwIsOutFull); + fmmwGetOutRemaining = PROC(mmwGetOutRemaining); + fmmwGetOutCounter = PROC(mmwGetOutCounter); + fmmwSetOutCounter = PROC(mmwSetOutCounter); + + + if( !m_hLib ){ + FreeLib(); + } + } +} +//--------------------------------------------------------------------------- +__fastcall CXWave::~CXWave(void) +{ + if( m_hLib ){ + fmmwOutAbort(); + fmmwInClose(); + } + FreeLib(); +} +//--------------------------------------------------------------------------- +FARPROC __fastcall CXWave::GetProc(LPCSTR pName) +{ + if( !m_hLib ) return NULL; + + FARPROC fn = ::GetProcAddress(m_hLib, pName+1); + if( fn == NULL ){ + fn = ::GetProcAddress(m_hLib, pName); + if( fn == NULL ) FreeLib(); + } + return fn; +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::FreeLib(void) +{ + if( m_hLib ){ + FreeLibrary(m_hLib); + m_hLib = NULL; + } +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::IsNameChange(void) +{ + return strcmpi(m_ItemName.c_str(), sys.m_SoundMMW.c_str()); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::PumpMessages(void) +{ + if( !IsLib() ) return; + + fmmwPumpMessages(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::InOpen(int sampfreq, int size) +{ + if( !IsLib() ) return FALSE; + + return fmmwInOpen(sampfreq, size); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::InClose(void) +{ + if( !IsLib() ) return; + + fmmwInClose(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::InRead(double *p, int len) +{ + if( !IsLib() ) return FALSE; + + int r = fmmwInRead(m_InBuff); + if( r ){ + SHORT *s = m_InBuff; + for( int i = 0; i < len; i++ ){ + *p++ = *s++; + } + } + return r; +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetInBC(void) +{ + if( !IsLib() ) return 0; + return fmmwGetInExist(); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::IsInBufCritical(void) +{ + if( !IsLib() ) return 0; + return fmmwIsInCritical(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::OutOpen(int sampfreq, int size) +{ + if( !IsLib() ) return FALSE; + return fmmwOutOpen(sampfreq, size); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::OutFlush(void) +{ + if( !IsLib() ) return; + fmmwOutFlush(); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::OutAbort(void) +{ + if( !IsLib() ) return; + fmmwOutAbort(); +} +//--------------------------------------------------------------------------- +BOOL __fastcall CXWave::OutWrite(double *p, int len) +{ + if( !IsLib() ) return FALSE; + SHORT *t = m_OutBuff; + for( int i = 0; i < len; i++ ){ + *t++ = *p++; + } + return fmmwOutWrite(m_OutBuff); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetOutBC(void) +{ + if( !IsLib() ) return 0; + return fmmwGetOutRemaining(); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetOutBCC(void) +{ + if( !IsLib() ) return 0; + return fmmwGetOutCounter(); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::SetOutBCC(int count) +{ + if( !IsLib() ) return; + fmmwSetOutCounter(count); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::IsOutBufCritical(void) +{ + if( !IsLib() ) return 0; + return fmmwIsOutCritical(); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::IsOutBufFull(void) +{ + if( !IsLib() ) return 0; + return fmmwIsOutFull(); +} +//--------------------------------------------------------------------------- +void __fastcall CXWave::SetPTT(int tx) +{ + if( !IsLib() ) return; + fmmwSetPTT(tx); +} +//--------------------------------------------------------------------------- +int __fastcall CXWave::GetTimeout(void) +{ + if( !IsLib() ) return 200; + return fmmwGetTimeout(); +} +//--------------------------------------------------------------------------- + + diff --git a/test.pro b/test.pro new file mode 100644 index 0000000..1102e88 --- /dev/null +++ b/test.pro @@ -0,0 +1,76 @@ +[Define1024] +Name=JE3HHT +Enabled=1 +AFC=1 +AFCFixShift=2 +AFCSQ=32 +AFCTime=4.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=1 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.025000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.457600e+04 +TXLoop=1 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=1.700000e+02 +RXBPF=1 +RXBPFTAP=56 +RXBPFAFC=1 +RXBPFFW=1.000000e+02 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=96 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=0 +RXlmsNotch2=0 +RXlmsTwoNotch=1 +DEMTYPE=0 +BaudRate=4.545000e+01 +TTYBitLen=5 +TTYStopLen=3 +TTYParity=0 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=60 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=2.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 + +[Define] +LimitAGC=1 + diff --git a/tty23.pro b/tty23.pro new file mode 100644 index 0000000..a6617fb --- /dev/null +++ b/tty23.pro @@ -0,0 +1,69 @@ +[Define1024] +Name=JE3HHT +Enabled=1 +AFC=1 +AFCFixShift=1 +AFCSQ=32 +AFCTime=8.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=0 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=0 +SQLevel=4.910000e+02 +DefMarkFreq=2.125000e+03 +DefShift=2.300000e+01 +DefStopLen=0 +OutputGain=2.457600e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=2.300000e+01 +RXBPF=0 +RXBPFTAP=96 +RXBPFAFC=1 +RXBPFFW=0.000000e+00 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=56 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2209 +RXlmsNotch2=0 +RXlmsTwoNotch=0 +DEMTYPE=2 +BaudRate=4.545000e+01 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=4.000000e+01 +Smooz=7.000000e+01 +Tap=72 +IIRBW=25 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=4.000000e+01 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 diff --git a/tty300.pro b/tty300.pro new file mode 100644 index 0000000..8ef6d95 --- /dev/null +++ b/tty300.pro @@ -0,0 +1,72 @@ +[Define1024] +Name=JE3HHT +Enabled=1 +AFC=0 +AFCFixShift=2 +AFCSQ=32 +AFCTime=4.000000e+00 +AFCSweep=1.000000e+00 +UOS=1 +TxNet=1 +TxDisRev=0 +LimitDxGain=2.000000e+02 +LimitOverSampling=1 +ATC=0 +ATCTime=4 +Majority=1 +IgnoreFreamError=0 +SQ=1 +SQLevel=6.000000e+02 +DefMarkFreq=2.025000e+03 +DefShift=1.700000e+02 +DefStopLen=0 +OutputGain=2.252800e+04 +TXECHO=0 +TXBPFTAP=48 +TXLPF=0 +TXLPFFreq=1.000000e+02 +TXWaitType=0 +TXCharWait=0 +TXDiddleWait=0 +TXCharWaitDiddle=0 +TXRandomDiddle=0 +TXWaitTimerDiddle=0 +Rev=0 +ShiftFreq=2.400000e+02 +RXBPF=0 +RXBPFTAP=56 +RXBPFAFC=1 +RXBPFFW=1.000000e+02 +RXlms=0 +RXlmsDelay=0 +RXlmsMU2=3.000000e-03 +RXlmsGM=9.999000e-01 +RXlmsAGC=0 +RXlmsInv=0 +RXlmsTAP=96 +RXNotchTAP=72 +RXlmsBPF=1 +RXlmsType=1 +RXlmsNotch=2095 +RXlmsNotch2=0 +RXlmsTwoNotch=1 +DEMTYPE=2 +BaudRate=3.000000e+02 +SmoozType=0 +SmoozOrder=5 +SmoozIIR=2.900000e+02 +Smooz=5.000000e+02 +Tap=48 +IIRBW=100 +pllVcoGain=3.000000e+00 +pllLoopOrder=2 +pllLoopFC=4.500000e+02 +pllOutOrder=4 +pllOutFC=2.000000e+02 +Diddle=2 +TxFixShift=0 +InvPTT=0 +TXUOS=1 +TTYBitLen=8 +TTYStopLen=3 +TTYParity=0 diff --git a/update.txt b/update.txt new file mode 100644 index 0000000..8a7babb --- /dev/null +++ b/update.txt @@ -0,0 +1,417 @@ +MMTTY‚̃o[ƒWƒ‡ƒ“ƒAƒbƒvî•ñ + +*********************************************************************** +XV—š—ð Ver1.68 -> Ver1.68A (JE3HHT) +*********************************************************************** +ƒŒƒxƒ‹ŒvŽZ‚Ì•s‹ï‡‚ÌC³ +‰pŒê”Å‚Ì󋵈ˑ¶ƒwƒ‹ƒv“®ì‚Ì•s‹ï‡‚ÌC³ + +*********************************************************************** +XV—š—ð Ver1.66G -> Ver1.68 (JE3HHT) +*********************************************************************** +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÉFFT•ûŽ®‚ð’ljÁ +URL‚ÌC³ +ƒŠƒ‚[ƒgƒ‚[ƒh‚ÉRXM_PTTFSK‚̒ljÁ(Tnx K4CY) +Cabrilloƒtƒ@ƒCƒ‹ì¬‹@”\‚ðíœ +Dual Peak Filter‚ð’ljÁ (Tnx to AA6YQ) + +*********************************************************************** +Revision history Ver1.66F -> Ver1.66G (AA6YQ) +*********************************************************************** + +1. Changes to the Main window's Options menu +- Soundcard Output Level works on Vista (tnx to Ken VE5KC) +- Soundcard Input Level works on Vista (tnx to Ken VE5KC) + +*********************************************************************** +Revision history Ver1.65D -> Ver1.66F (AA6YQ) +*********************************************************************** + +Dave, AA6YQ begins updating MMTTY + +1. Changes to the "MMTTY Setup" window + +A. "TX" tab +- renamed the "PTT" panel to "PTT & FSK" (tnx to Joe W4TV) +- added com8 through com16 to the "PTT & FSK" panel's "Port" selector +- clicking a button in the "Input Button" panel from a non-Japanese locale displays a window entitled "Edit Button" (tnx to Joe W + +B. "Misc" tab +- the new "Device Identifiers" panel enables independent selection of soundcard devices for reception ("RX") and transmission ("TX"); any of 16 input and output soundcard devices can be selected (tnx to Gil W0MN and Joe W4TV) +- selecting an "RX" or "TX" device identifier in the "Device Identifiers" panel updates the respective "Reception" or "Transmission" panels shown on the new "Soundcard" tab + +C. "Soundcard" tab (new) +- the "Reception" panel shows all installed soundcard input devices; selecting an input device updates the "RX" selector in the "Misc" tab's "Device Identifiers" panel +- the "Transmission" panel shows all installed soundcard output devices; selecting an output device updates the "TX" selector in the "Misc" tab's "Device Identifiers" panel + +2. Changes to the "Radio Command" window +- added com8 through com16 to the "Port" selector +- added 38400 and 57600 to the "Baud" selector (tnx to Joe W4TV) +- named the selector in the lower-left corner "Group" +- modified the contents of the "Group" selector: + +*** renamed the previous "Yaesu HF? (FT-1000MP,...)" entry to "Yaesu FT 1000D, 1000MP, 920" +*** renamed the previous "Yaesu VU? (FT-736,FT-847)" entry to "Yaesu FT 736, 817, 847, 857, 897" +*** added a "Yaesu FT 9000, 2000, 950, 450" entry (tnx to Joe W4TV and Art W2NRA) +*** renamed the previous "Kenwood" entry to "Kenwood, Elecraft" (tnx to Joe W4TV) + +- renamed the "Commands" panel's "VFO Polling" selector to "Model", and added entries for the Yaesu FT 9000, 2000, 950, and 450 (tnx to Joe W4TV) + +*********************************************************************** +XV—š—ð Ver1.65 -> Ver1.65D +*********************************************************************** +‰pŒêƒ‚[ƒhŽž‚̃wƒ‹ƒvƒtƒ@ƒCƒ‹‚ÌŽæ‚舵‚¢‚ÉCHMƒtƒ@ƒCƒ‹‚ð’ljÁ +Turbo HAMLOG/Win Ver5‚ւ̑Ήž (Tnx to JG1MOU) +¬‚³‚ȃoƒO‚ÌC³‚Ɖü‘P + +*********************************************************************** +XV—š—ð Ver1.64 -> Ver1.65 +*********************************************************************** +ƒŠƒ‚[ƒgƒ‚[ƒh‚ł̕sŠmŽÀ‚È‘—M‚̃oƒO‚ÌC³ +¬‚³‚ȃoƒO‚ÌC³‚Ɖü‘P + +*********************************************************************** +XV—š—ð Ver1.63 -> Ver1.64 +*********************************************************************** +FSKˆ—‚Ì‘—ŽóØ‚è‘Ö‚¦ƒ^ƒCƒ~ƒ“ƒO‚ð‰ü‘P +ƒJƒXƒ^ƒ€ƒƒOƒŠƒ“ƒN‚ÌŽÀ‘• +ƒJƒXƒ^ƒ€RadioCommand‚ÌŽÀ‘• +ƒJƒXƒ^ƒ€ƒTƒEƒ“ƒh‚ÌŽÀ‘• +ƒJƒXƒ^ƒ€TNCƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚ÌŽÀ‘• +¬‚³‚ȃoƒO‚ÌC³‚Ɖü‘P + +*********************************************************************** +XV—š—ð Ver1.62 -> Ver1.63 +*********************************************************************** +’჌ƒxƒ‹ƒTƒEƒ“ƒhƒoƒbƒtƒ@ˆ—‚̉ü‘P +ƒtƒ‹ƒfƒ…[ƒvƒŒƒbƒNƒXƒ‚[ƒh‚̒ljÁ +ƒTƒEƒ“ƒhƒJ[ƒh‚ÌTx offsetÝ’è‚̒ljÁ +Ý’è‰æ–ʂ̎óMƒƒOƒy[ƒW‚ðƒtƒ@ƒCƒ‹ƒƒjƒ…[‚Ɉړ® +ƒR[ƒ‹ƒTƒCƒ“ƒŠƒXƒg‚̒ljÁ +ƒRƒ“ƒeƒXƒgƒ‚[ƒh‚ÉBARTGƒRƒ“ƒeƒXƒg‚ð’ljÁ +VFOƒ|[ƒŠƒ“ƒO‚ÉJST245‚ð’ljÁ +ƒo[ƒWƒ‡ƒ“ƒAƒbƒvî•ñ‚̃ƒjƒ…[‚ð’ljÁ +EXTFSKƒ|[ƒg(—v EXTFSK.DLL)‚̒ljÁ +J-BELL/S-BELLƒR[ƒhƒZƒbƒh‚Ì‘I‘ð‚̒ljÁ +ƒvƒƒOƒ‰ƒ€I—¹‘¬“x‚ð‰ü‘P +WM_MOUSEWHEELƒƒbƒZ[ƒW‚ðˆ— +¬‚³‚ȃoƒO‚ÌC³ + + +================================== +’჌ƒxƒ‹ƒTƒEƒ“ƒhƒoƒbƒtƒ@ˆ—‚̉ü‘P +================================== +@’჌ƒxƒ‹ƒTƒEƒ“ƒhƒoƒbƒtƒ@ˆ—‚ð‰ü‘P‚µAƒoƒbƒtƒ@‚ÌzŠÂ”(FIFO)‚ðÝ’è‰æ–Ê‚ÅÝ’è‚Å‚«‚邿‚¤‚É‚µ‚Ü‚µ‚½B‚Ü‚½‘—M‚ÆŽóM‚ňقȂéFIFO‚Ì”‚ðŠ„‚è“–‚Ă邱‚Æ‚ª‚Å‚«‚Ü‚·B +@uLost soundv‚̃ƒbƒZ[ƒW‚ªƒXƒyƒNƒgƒ‰ƒ€ƒEƒCƒ“ƒhƒE‚É•p”ɂɕ\ަ‚³‚ê‚éê‡A‚±‚ÌFIFO‚Ì”‚ð‘‚â‚·‚Æ‰ðŒˆ‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B + ‚½‚¾‚µ‘—M(TX)‚ÌFIFO‚ð‘‚â‚·‚ÆA‚»‚Ì‘‚₵‚½”‚ɉž‚¶‚Ä‘—M‚̉ž“š‚ªŽáŠ±’x‚ê‚Ü‚·BŽóM(RX)‚ÌFIFO‚Í‚»‚Ì”‚É‚æ‚鉞“š‚̕ω»‚Í‚ ‚è‚Ü‚¹‚ñB + +* ]—ˆƒo[ƒWƒ‡ƒ“‚Å‘¶Ý‚µ‚½ƒoƒbƒtƒ@ƒTƒCƒY‚ÍMMTTY‚ªŽ©“®“I‚ÉÅ“K’l‚É’²®‚µ‚Ü‚·B + + +================================ +ƒtƒ‹ƒfƒ…[ƒvƒŒƒbƒNƒXƒ‚[ƒh‚̒ljÁ +================================ +@ƒTƒEƒ“ƒhƒJ[ƒh‚̘^‰¹/Ķ‚𓯎ž‚É“­‚©‚¹‚ÄŠO•”‚̃TƒEƒ“ƒhƒ‹[ƒvƒoƒbƒN‚ð‰Â”\‚É‚µ‚Ü‚µ‚½B‰q¯’ÊMŽž‚âA‚Ü‚½FSK‰^—pŽž‚̃‚ƒjƒ^‚Æ‚µ‚Ä‚à—˜—p‚Å‚«‚Ü‚·B +@Ý’è‰æ–Ê‚Ìu‚»‚Ì‘¼vƒy[ƒW‚ŃTƒEƒ“ƒhƒ‹[ƒvƒoƒbƒN‚ðuŠO•”(‰q¯—p)v‚ÉÝ’è‚·‚邯Aƒtƒ‹ƒfƒ…[ƒvƒŒƒbƒNƒX“®ì‚ɂȂè‚Ü‚·B +@]—ˆ‚ÌÝ’è‰æ–Ê‚Ìu‘—Mvƒy[ƒW‚É‚ ‚Á‚½uƒ[ƒJƒ‹ƒGƒR[v‚ÌÝ’è‚Í‹@”\‚ªd•¡‚·‚邽‚ß‚É휂µ‚Ü‚µ‚½B + +@ˆÈ‰º‚ÉŠeó‘Ԃł̑—MŒn“‚ðŽ¦‚µ‚Ü‚·B + +<ƒTƒEƒ“ƒhƒ‹[ƒvƒoƒbƒN‚ªOFF‚Ìê‡> + + TxData ---> Modulator ---> Sound Out --> + | + --> ŽóM‰æ–Ê + +<ƒTƒEƒ“ƒhƒ‹[ƒvƒoƒbƒN‚ª“à•”‚Ìê‡iƒfƒtƒHƒ‹ƒgj> + + TxData ---> Modulator ---> Sound Out --> + | + --> Demodulator -> ŽóM‰æ–Ê + +<ƒTƒEƒ“ƒhƒ‹[ƒvƒoƒbƒN‚ªŠO•”i‰q¯—pj‚Ìê‡> + + TxData ---> Modulator ---> Sound Out ----> + + -- Sound In <----- + | + --> Demodulator -> ŽóM‰æ–Ê + + +=================================== +ƒTƒEƒ“ƒhƒJ[ƒh‚ÌTx offsetÝ’è‚̒ljÁ +=================================== + ˜^‰¹iŽóMjŽž‚ÆÄ¶i‘—MjŽž‚ŃTƒEƒ“ƒhƒJ[ƒh‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚ªˆÙ‚È‚éê‡A‚±‚ÌuTx offsetv‚ðݒ肵‚Ü‚·BÝ’è‚·‚é’l‚ÍMMSSTV‚Ƃ܂Á‚½‚­“¯‚¶‚Å‚·B‚±‚Ì’l‚ð³Šm‚É‹‚ß‚é‚É‚ÍMMSSTV‚ð—˜—p‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + +@‚µ‚©‚µRTTY‚ÌꇂÍA‚»‚ê‚قdzŠm‚ÉÝ’è‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñ‚Ì‚ÅAˆÈ‰º‚̊ȕւȕû–@‚ÅŠr³‚µ‚Ä‚à\‚í‚È‚¢‚ÆŽv‚¢‚Ü‚·B + +1)‚Ü‚¸ŽóM‚̃NƒƒbƒN‚ð‡‚í‚Ä‚¨‚«‚Ü‚·B + +2)Ý’è‰æ–Êu‚»‚Ì‘¼vƒy[ƒW‚̃TƒEƒ“ƒhƒ‹[ƒvƒoƒbƒN‚ðuŠO•”(‰q¯’ÊM—p)v‚É‚µ‚Ü‚·B + +3)ƒTƒEƒ“ƒhƒJ[ƒh‚Ìo—͂Ɠü—Í‚ðÚ‘±‚µ‚Ü‚·B‚Ü‚½‚̓{ƒŠƒ…[ƒ€ƒRƒ“ƒgƒ[ƒ‹‚̃~ƒLƒT[ƒvƒƒOƒ‰ƒ€i“ü—̓{ƒŠƒ…[ƒ€ƒRƒ“ƒgƒ[ƒ‹j‚Åuƒ‹[ƒvƒoƒbƒNv‚Ü‚½‚ÍuƒXƒeƒŒƒI/ƒ‚ƒmƒ‰ƒ‹ƒ~ƒLƒT[v‚ð‘I‘ð‚µ‚Ü‚·B + +4)MMTTY‚ð‘—Mó‘Ô‚É‚µAƒXƒyƒNƒgƒ‰ƒ€•\ަ‚ªƒ}[ƒJ[‚Éd‚È‚é‚æ‚¤‚ÉTxOffset‚ð’²®‚µ‚Ü‚·B + +@ŋ߂̃TƒEƒ“ƒhƒJ[ƒh‚̃NƒƒbƒN‚ÌŒXŒü‚Æ‚µ‚Ä‚ÍA + ŽóMŽž ‘—MŽž Tx offset + 11025•t‹ß 11025•t‹ß 0 + 11025•t‹ß 11100•t‹ß 75.00 + 11100•t‹ß 11025•t‹ß -75.00 +‚Ì‚¢‚¸‚ê‚©‚Å‚·‚Ì‚ÅA‚à‚µƒXƒyƒNƒgƒ‰ƒ€•\ަ‚Ŏ኱‚̃YƒŒ‚ªŠm”F‚Å‚«‚éꇂÍATxOffset‚É75.00‚Ü‚½‚Í-75.00‚ðÝ’è‚·‚邯‚Ù‚Ú‡‚¤‚ÆŽv‚¢‚Ü‚·B + +@‚È‚¨RTTY‚Ìê‡A—Ⴆ‚Î11025Hzƒx[ƒX‚ł̃IƒtƒZƒbƒg‚ª75Hz‘¶Ý‚·‚éê‡A‘—Žó‚ÌŽü”g”ƒYƒŒ‚Í5Hz`15Hz‚ɂȂè‚Ü‚·B‚Ü‚½ƒ{[ƒŒ[ƒg‚̃YƒŒ‚Í6800ppm(0.68%)’ö“x‚ɂȂè‚Ü‚·‚ªARTTY‚Ì•ûޮީg‚ªŽ‚ƒ}[ƒWƒ“‚ª‘å‚«‚¢‚½‚ßAŽÀ—pã‚Í–â‘è‚ɂ͂Ȃç‚È‚¢‚ÆŽv‚¢‚Ü‚·B + +======================== +ƒR[ƒ‹ƒTƒCƒ“ƒŠƒXƒg‚̒ljÁ +======================== +@ƒƒOƒpƒlƒ‹‚̃R[ƒ‹ƒTƒCƒ“BOX‚ðƒ_ƒuƒ‹ƒNƒŠƒbƒN‚·‚é‚©AƒfƒtƒHƒ‹ƒg‚̃Vƒ‡[ƒgƒJƒbƒgƒL[uALT+Fv‚ð‰Ÿ‚·‚ÆAƒR[ƒ‹ƒTƒCƒ“ƒŠƒXƒg‚̃|ƒbƒvƒAƒbƒvƒƒjƒ…[‚ð•\ަ‚µ‚Ü‚·BƒŠƒXƒg‚É‚Í‰ß‹Ž‚É“ü—Í‚µ‚½ƒR[ƒ‹ƒTƒCƒ“Å‘å‚R‚QŒÂ‚ªÅV‚Ì‚à‚Ì‚©‚燂ɋL˜^‚³‚ê‚Ä‚¢‚Ü‚·B +@ƒƒjƒ…[“à‚̃R[ƒ‹ƒTƒCƒ“‚ð‘I‘ð‚·‚é‚ÆA‚»‚̃R[ƒ‹ƒTƒCƒ“‚ªƒR[ƒ‹ƒTƒCƒ“BOX‚É“ü‚è‚Ü‚·B + + +================================================ +Ý’è‰æ–ʂ̎óMƒƒOƒy[ƒW‚ðƒtƒ@ƒCƒ‹ƒƒjƒ…[‚Ɉړ® +================================================ + ƒŠƒ‚[ƒgƒ‚[ƒhŽž‚ÌƒŠƒ\[ƒX•s‘«‚ð‰ü‘P‚·‚邽‚ß‚ÉAÝ’è‰æ–ʂ̎óMƒƒOƒy[ƒW‚Ì‘S‚Ä‚Ìݒ耖ڂðƒtƒ@ƒCƒ‹ƒƒjƒ…[‚ÌuŽóM‹L˜^‚̃IƒvƒVƒ‡ƒ“v‚Ɉړ®‚µ‚Ü‚µ‚½B + +================== +EXTFSKƒ|[ƒg‚̒ljÁ +================== + JA7UDE‘å’낳‚ñ‚Ì”­ˆÄ‚É‚æ‚éAUSBƒ|[ƒg‚ð—˜—p‚µ‚½ŠO•”FSKƒ†ƒjƒbƒg‚ÅFSKM†‚ð쬂·‚éꇂɎg—p‚µ‚Ü‚·B‚±‚̃|[ƒg‚ð—˜—p‚·‚éê‡AMMTTYÝ’è‰æ–Ê‚ÌPTTƒ|[ƒg–¼‚ÉuEXTFSKv‚ð‘I‘ð‚µ‚Ü‚·B‚Ü‚½uEXTFSK.DLLv‚ªMMTTYƒtƒHƒ‹ƒ_“à‚É•K—v‚Å‚·BÚׂ͈ȉº‚ÌURL‚ðŽQÆ‚µ‚ĉº‚³‚¢B + +http://www.archi.is.tohoku.ac.jp/~ooba/ja7ude/japanese_frametop.htm + + +------------------------ ‰ß‹Ž‚Ì•ÏX—š—ð ------------------------------- + +[V1.00 2000-06-30] +‰‰ñŒöŠJ + +[V1.01 -> V1.10 2000-07-08] +ƒTƒEƒ“ƒhƒJ[ƒh‚̃oƒbƒtƒ@ƒTƒCƒYÝ’è‚ð’ljÁ +ƒ}ƒjƒ…ƒAƒ‹‚̈ꕔ‹LÚ˜R‚ê‚ðC³ +‘—M‰æ–ʂ̃TƒCƒY‚ðINIƒtƒ@ƒCƒ‹‚É‹L‰¯ +ƒƒO‹@”\‚ð’ljÁ +ˆê•”‚Ì256FƒrƒfƒIƒAƒ_ƒvƒ^‚ÅWaterFall‚ª³‚µ‚­•\ަ‚Å‚«‚È‚¢ƒoƒO‚ðC³ +‘O’uƒtƒBƒ‹ƒ^‚ð’ljÁ +Ý’è‰æ–ʂɃtƒBƒ‹ƒ^“Á«•\ަ‚̒ljÁ +ƒƒCƒ“‰æ–Ê‚ÉÏ•ªŠíiLPFj‚ÌÝ’èƒ{ƒbƒNƒX‚ð”z’u +WaterFall,ŽóM‰æ–Ê,‘—M‰æ–Ê‚ÌF‚ÌÝ’è‚ð’ljÁ +V‚µ‚¢ƒƒOƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“‚ðŽÀsŒã‚ÉŒŸõ‚ª‚Å‚«‚È‚­‚È‚éƒoƒO‚ðC³ +FSK‘—M‚̑ΉžiTnx JA7DHJj +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^“ü—Í•”‚É“K‰žƒtƒBƒ‹ƒ^iLMSj‚ð“ü‚ê‚ê‚邿‚¤‚É‚µ‚½ +FSK(TXD)o—͂̑—oƒrƒbƒg‚ª‹t‡‚ɂȂÁ‚Ä‚¢‚½ƒoƒO‚ðC³iTnx JA7DHJj +‚»‚Ì‘¼Aׂ©‚¢“_‚ÌC³‚Ǝ኱‚Ì‹@”\’ljÁ + +[V1.11 -> V1.20 2000-07-13] +PTT§Œäƒ|[ƒg‚ÉCOM5`COM8‚ð’ljÁ(Tnx JH3XDO) +ƒ}ƒNƒ‚¨‚æ‚Ñ’èŒ^ƒƒbƒZ[ƒW‚̕ϊ·Žq‚Éu%gv‚Æu%fv‚ð’ljÁ +QSOƒƒO‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚ւ̃GƒNƒXƒ|[ƒg‹@”\‚ð’ljÁ +QSOƒƒO‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚©‚ç‚̃Cƒ“ƒ|[ƒg‹@”\‚ð’ljÁ +FSK(TXD)‰^—pŽž‚Ì‘—ŽóØ‚è‘Ö‚¦‚̃oƒO‚ÌC³(Tnx JA1FQI) +•¶ŽšƒEƒCƒGƒgADiddleƒEƒGƒCƒg‚ð’ljÁ(Tnx JA1IQV) +•\ަƒƒjƒ…[‚ÉuŽóM‰æ–ʂ̃NƒŠƒAv‚ð’ljÁ(Tnx JG3LGD) +LMS“®ì‚̉ü‘P +V1.14‚Å”­¶‚µ‚½‚ ‚éðŒ‚Å‹N“®‚Å‚«‚È‚­‚È‚éƒoƒO‚ÌC³ +ƒ}ƒNƒƒ{ƒ^ƒ“‚̃Vƒ‡[ƒgƒJƒbƒgƒL[‚ÌŠ„‚è“–‚Ä(Tnx JA1IQV) +Ž©“®‚ÅŽóM‚É–ß‚éÛ‚Ì”÷–­‚ȃ^ƒCƒ~ƒ“ƒO‚ðC³ +LOG200ƒf[ƒ^ƒtƒ@ƒCƒ‹‚Æ‚Ì‘ŠŒÝ•ÏŠ·‚ð’ljÁ +‚w‚xƒXƒR[ƒv•\ަ‚ð’ljÁ(Tnx JA1IQV) +Žü”g”•Ù•ÊŠí‚̃fƒtƒHƒ‹ƒg‚ðFIRŒ^BPF‚©‚çIIRŒ^‹¤UŠí‚É•ÏX +XYƒXƒR[ƒvAƒ}[ƒNŽü”g”‚ð…•½‚É‚µ‚½(Tnx JA1IQV) +XYƒXƒR[ƒv•\ަ‚ð‰ü‘P +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÉƒŠƒ~ƒbƒ^ƒAƒ“ƒv‚ð’ljÁ(Tnx 7L1CUH, JA1IQV) +ƒfƒ‚ƒWƒ…ƒŒ[ƒ^‚ÌAGC‹@”\‚ð”pŽ~ + +[V1.21 -> V1.30 2000-07-23] +ƒTƒEƒ“ƒh‚Ì‹L˜^‚ÆÄ¶‹@”\‚ð’ljÁiTnx 7L1CUHj +IIRŒ^‹¤UŠí‚ÌŽü”g”“Á«•\ަ‚ð’ljÁ +XY-Scope‚Ì•\ަƒTƒCƒY‚ð‘I‘ð‰Â”\‚É‚µ‚½ +LMS‚ÉInviŒë·M†o—Íj‚ð’ljÁ +ƒTƒEƒ“ƒh‚̘^‰¹EĶ‹@”\‚ð‹­‰» +ƒTƒEƒ“ƒhÄ¶Žž‚ɃTƒEƒ“ƒhƒJ[ƒh‚ÉM†‚ðo—Í‚·‚邿‚¤‚É‚µ‚½ +PLL•ûŽ®‚̃fƒ‚ƒWƒ…ƒŒ[ƒ^‚̒ljÁ +ĶˆÊ’uÝ’è‰æ–Ê‚ð’ljÁ +•¶ŽšƒEƒCƒGƒgADiddleƒEƒGƒCƒg‚̃Xƒ‰ƒCƒh‚ðAŒ^ƒ{ƒŠƒ…[ƒ€‚É•ÏX +ƒIƒVƒƒXƒR[ƒv‰æ–Ê‚ÉuPlayvƒ{ƒ^ƒ“‚ð’ljÁ +MMTTY‚ÌM†ˆ—‚̉ðàudigital.txtv‚ð’ljÁ +DTR‚Ö‚Ì•„†ƒf[ƒ^o—Í‘I‘ð‚ð”pŽ~iŽ|‚­“­‚©‚È‚¢j +Turbo Hamlogƒf[ƒ^ƒtƒ@ƒCƒ‹‚Æ‚Ì‘ŠŒÝ•ÏŠ·‚ð’ljÁ +ƒVƒ‡[ƒgƒJƒbƒgƒL[‚̃JƒXƒ^ƒ}ƒCƒY‚ð’ljÁ(Tnx 7L1CUH) +ƒƒO‹@”\‚̎኱‚Ì‹­‰» +ƒ}ƒNƒ‚Ìæ“ª‚Æ––”ö‚̃Xƒy[ƒX‚ª‹L˜^‚Å‚«‚È‚¢ƒoƒO‚ÌC³(Tnx 7L1CUH) +Ý’è‰æ–Ê‚ÉSoundˆ—Priority‚Ì‘I‘ð‚ð’ljÁ(Tnx JH1SWD) +Priority‚̃fƒtƒHƒ‹ƒg‚ðuCriticalv¨uHighestv‚É•ÏX(Tnx JH1SWD) +Hamlog->MMTTY‚ÅMyRST‚̕ϊ·‚ÌT”²‚¯‚ðC³(Tnx JH1SWD) +‹N“®Žž‚̃TƒEƒ“ƒhƒJ[ƒhƒI[ƒvƒ“‚ÌƒŠƒgƒ‰ƒC‚ð’ljÁ(Tnx JA6VAG) +Rx-Stopƒrƒbƒg‚̃fƒtƒHƒ‹ƒg‚ð1.42bit -> 1bit‚É•ÏX +Hamlog->MMTTY•ÏŠ·‚̈ꕔ‚̃oƒO‚ðC³(Tnx JH1SWD) +ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹•\ަ‚ÌOn/Off‚̒ljÁ +ƒRƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹ƒTƒCƒY‚Ì‘I‘ð‚ð’ljÁ +‚»‚Ì‘¼×‚©‚¢“_‚̉ü‘P + +[V1.31 -> V1.40 2000-07-30] +ƒƒOƒtƒ@ƒCƒ‹‚̕ϊ·“®ì‚ð‰ü‘P(Tnx JH1SWD) +–â‚¢‡‚킹ƒƒbƒZ[ƒW‚ð‰ü‘P(Tnx JH1SWD) +ƒvƒƒOƒ‰ƒ€ƒƒjƒ…[‚̒ljÁ(Tnx JH1SWD, JA1IQV) +ŠO•”ƒvƒƒOƒ‰ƒ€ŽÀsŽž‚̃JƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠ‚ðÝ’è(Tnx JH1SWD) +ƒXƒPƒ‹ƒ`“®ì‚̎኱‚̉ü‘P +‰pŒêƒ‚[ƒh‚ð’ljÁ(Tnx HL1AQ) +’ᑬCPU‚Ì‚½‚ß‚ÌLocalEchoƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +ƒ}ƒNƒƒeƒLƒXƒg‚ð‘—M‰æ–ÊŒo—R‚Åo—Í‚·‚éƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Tnx JA1IQV) +ˆê”Ôʼn‚̃ƒOƒf[ƒ^‹L˜^‚ŃGƒ‰[‚ɂȂéƒoƒO‚ðC³ +ƒƒO‚ÌUTC•\ަ(TimeZone‘I‘ð)‚ð’ljÁ +‰‰ñ‹N“®Žž‚ÌŒ¾Œê–â‚¢‡‚킹‚ð”pŽ~iŽ©“®”»’è‚É•ÏXj +XYScope‚̉ñ“]•ûŒü‚ð‹t‚É‚·‚éƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Tnx JA9AVA) +ƒXƒPƒ‹ƒ`“®ì‚̉ü‘P +WaitDiddleOutƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +Limitƒ{ƒ^ƒ“‚ð”pŽ~ +NETƒ{ƒ^ƒ“‚̒ljÁ +DXƒ{ƒ^ƒ“‚̃fƒtƒHƒ‹ƒgƒQƒCƒ“‚ð100‚É•ÏX +ƒ}ƒEƒX‚Å‚ÌMyRSTŽæ‚肱‚݂ɃRƒ“ƒeƒXƒgƒ‚[ƒh‚ð’ljÁ +Control PanelƒTƒCƒY‚ÉLarge‚ð’ljÁ(Tnx JE8LWZ) +SQƒŒƒxƒ‹•\ަ‚ðSQ-OFFŽž‚É‚à“®ì‚·‚邿‚¤‚É‚µ‚½ +AFC‚ÌShift•ÏXƒAƒ‹ƒSƒŠƒYƒ€‚ÉHAMƒ‚[ƒh‚ð’ljÁ +NETƒ{ƒ^ƒ“‚Ì“®ì•s‹ï‡‚ðC³ +Šeƒ}ƒNƒƒ{ƒ^ƒ“‚Ì•ÒW‚ɃVƒ‡[ƒgƒJƒbƒgƒL[‚ðŠ„‚è“–‚ĉ”\‚É‚µ‚½(Tnx JA1IQV) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Éu%sv‚ð’ljÁ(Tnx JH3XDO) +‚»‚Ì‘¼×‚©‚¢“_‚̉ü‘P + +[V1.41 -> V1.50 2000-08-08] +Ï•ªŠí‚ÉIIR-LPF‚ð’ljÁ +Ï•ªŠí‚Ì“Á«Šm”Fƒ{ƒ^ƒ“‚ð’ljÁ +XYScope•\ަ‚̈—•iŽ¿‚Ì‘I‘ð‚ð’ljÁ +XYScope•\ަ‚ÌƒŠƒ~ƒbƒ^[‚Å‚ÌˆÊ‘Š˜c‚݂ɂæ‚é‰e‹¿‚ðŠÉ˜a +ƒŠƒ~ƒbƒ^[‚ÌuOver Samplingv‚Ì‘I‘ð‚ð’ljÁ(ŽQƨDigital.txt) +ƒTƒEƒ“ƒhƒJ[ƒh‚̃NƒƒbƒN•â³’l‚ðÝ’è‰Â”\‚É‚µ‚½(Tnx JA1WSK) +ƒNƒƒbƒN•ⳂÅJJY‚Ì‚P•bƒ`ƒbƒN‰¹‚ð—˜—p‰Â”\‚É‚µ‚½(Tnx JA1WSK) +FSK‘—M(TXD)Žž‚ÉUART‚̃^ƒCƒ~ƒ“ƒO‚Å‘—M‚Å‚«‚é‘I‘ð‚ð’ljÁ +Diddle ONŽž‚ÉŽóM‚Ö‚ÌØ‚è‘Ö‚¦‚ª’x‚ê‚Ä‚¢‚½“_‚ð‰ü‘P +Diddle‚ÌuWaitTimerv‚ð’ljÁ(Tnx JA1IQV) +LTR/FIGƒR[ƒh‚Ì‹­§o—Í‚ð’ljÁ(Tnx JA1IQV) +’èŒ^ƒƒbƒZ[ƒWŽQƃL[ƒ[ƒh‚Éu^v‚ð’ljÁ(Tnx JA1IQV) +’ᑬCPUŽž‚É–â‚¢‡‚킹ƒƒbƒZ[ƒW•\ަ‚ª’x‚ê‚é‚̂𭂵‰ü‘P +‚»‚Ì‘¼×‚©‚¢“_‚̉ü‘P + +[V1.51 2000-08-08] +Pentium75MHz‚ł̑€ì‰ž“š‚ð­‚µ‰ü‘P +•s—vi–³ˆÓ–¡j‚ÈÝ’èƒXƒCƒbƒ`‚Ì”pŽ~ +ƒTƒXƒyƒ“ƒhŽž‚ÌCPUŽžŠÔ‚ðX‚ɉð•ú +ƒ}ƒjƒ…ƒAƒ‹i–{‘j‚Ɉ—ŒyŒ¸‰»‚̈’u‚ð‹LÚ + +[V1.52 2000-08-10] +ƒL[‘€ì‚É‚æ‚éƒVƒtƒg••ÏX‹@”\‚ð’ljÁ(Tnx JA3KWZ) +AFC‚̃Aƒ‹ƒSƒŠƒYƒ€‚ÉuFSKv‚ð’ljÁ(Tnx JA3KWZ) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Éu~vu[vu]v‚ð’ljÁ +‘—MØ‚è‘Ö‚¦’¼Œã‚ÌDiddle‘—o‚ð0.25•bŠÔ‹ÖŽ~ +ׂ©‚¢“_‚ÌC³ + +[V1.53 2000-08-12] +AFC‚ÌHAM,FSK‚̃Aƒ‹ƒSƒŠƒYƒ€‚ɃVƒtƒg•220Hz/240Hz‚ð’ljÁ +FFT‚̃QƒCƒ“‘I‘ð‚ð’ljÁ +ׂ©‚¢“_‚ÌC³ + +[V1.54 2000-08-13] +uCtrl+BSvƒL[‚Å–¢‘—M‚Ì1s‚ðÁ‹Ž‚Å‚«‚邿‚¤‚É‚µ‚½(Tnx JA1IQV) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Ìæ“ª‚É‹Lq‚·‚éu#v‚ð’ljÁ(JH8WIG) +ƒ}ƒNƒŽQƃL[ƒ[ƒh‚Éu%Ev‚ð’ljÁ(Tnx JA1IQV) +‘—M‰æ–ʂł̃L[ƒ[ƒhŽQÆ“®ì‚Éu‘¦Žž•ÏŠ·v‚ð’ljÁ(Tnx JG1GGU) + +[V1.55 2000-08-15] +Diddle‚̃fƒtƒHƒ‹ƒg‚ðuNONEv‚©‚çuLTRv‚É•ÏX(Tnx K6STI) +uDisable Revvi‘—MŽž‚ÉRev‚𖳌ø‚É‚·‚éj‚ð’ljÁ(Tnx W6/G0AZT) +’èŒ^ƒƒbƒZ[ƒW‚̃hƒƒbƒvƒŠƒXƒg‚Ì•\ަ”‚ð‚P‚U‚É‘‚₵‚½(Tnx JE4CIL) + +[V1.56 2000-08-20] +MMTTY.TXT“à‚ÌDsubƒsƒ“”Ô†‚ÌŒë‚è‚ðC³(Tnx MMTTY-Gropu) +ƒ}[ƒNŽü”g”‚̉ºŒÀ‚ð300Hz‚É•ÏX(Tnx MMTTY-Group) +uŽóM‰æ–ʂ̃NƒŠƒAv‚ɃVƒ‡[ƒgƒJƒbƒg‚ð’è‹`‚Å‚«‚邿‚¤‚É‚µ‚½(Tnx MMTTY-Group) +uESCv‚ðƒVƒ‡[ƒgƒJƒbƒgƒL[‚ÌƒŠƒXƒg‚ɒljÁ(Tnx MMTTY-Group) +ADIFƒtƒ@ƒCƒ‹‚ւ̃GƒNƒXƒ|[ƒg‚ð’ljÁ(Tnx JA5HRE, MMTTY-Group) +ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚ðUTC•\ަ‚Å‚«‚邿‚¤‚É‚µ‚½(Tnx MMTTY-Group) +QSOƒf[ƒ^•\ަ‚ÅUTC•\ަ‚Å‚«‚È‚©‚Á‚½ƒoƒO‚ðC³(Tnx MMTTY-Group) +599ƒ{ƒ^ƒ“‚ð”pŽ~‚µ‘ã‚í‚è‚Ƀoƒ“ƒhƒ{ƒbƒNƒX‚ð”z’u + +[V1.57 2000-08-24] +ƒR[ƒ‹ƒTƒCƒ“ƒNƒŠƒbƒNŽž‚É‘¦ŒŸõ‚·‚邿‚¤‚É•ÏX(Tnx MMTTY-Group) +ƒ[ƒh’PˆÊ‚ł̕¶Žš‚Ì‘—M‚ð’ljÁ(Tnx MMTTY-Group) +ƒRƒeƒ“ƒXƒg‚̃‰ƒ“ƒjƒ“ƒOƒ‚[ƒh‚ÆS&Pƒ‚[ƒh‚ð’ljÁ(Tnx MMTTY-Group) +‰pŒê”Å—p‚ÉSetup Helpƒƒjƒ…[‚ÆHTML Help•\ަ‹@”\‚ð’ljÁ(Tnx MMTTY-Group) + +[V1.58 2000-09-07] +‰pŒê”Å—p‚ÉWindows Help‚̃AƒNƒZƒX‹@”\‚ð’ljÁ(Tnx KX2A) +ƒ}ƒNƒƒL[ƒ[ƒh‚Éu%Dv‚Æu%Tv‚ð’ljÁ(Tnx MMTTY-Group) +ƒ}ƒNƒƒL[ƒ[ƒh‚Ìu~v‚Æu_v‚Ì“®ì‚ð‰ü‘P(Tnx MMTTY-Group) +DXƒ{ƒ^ƒ“‚ð휂µATCƒ{ƒ^ƒ“‚ð’ljÁ +’èŒ^ƒƒbƒZ[ƒWŽQƃL[ƒ[ƒh‚Éu#v‚ð’ljÁ(Tnx MMTTY-Group) + +[V1.59 2000-10-15] +‘¦Žž•ÏŠ·Žž‚Å‚àu%Fv‚Æu%Lv‚Íí‚É‘—MŽž‚ɕϊ·‚·‚邿‚¤‚ɉü‘P(Tnx JA1IQV) +“ú–{Œê”Å‚ÉRTTY BASICS‚̃wƒ‹ƒvƒ|ƒCƒ“ƒ^‚ð’ljÁiTnx W7TI, JA7UDEj +ƒ}ƒEƒX‚ł̎æ‚肱‚Ý‚ÉCQ/RJƒ‚[ƒh‚ð’ljÁiTnx JA1IQV, K5YGj +ƒRƒ“ƒeƒXƒgƒ‚[ƒhŽž‚̃}ƒEƒX‚ł̎æ‚肱‚Ý“®ì‚̉ü‘PiTnx JA1IQVj +Hamlog‚Ƃ̕ϊ·‚Ń‚[ƒh‚ð’è‹`‰Â”\‚É‚µ‚½iTnx JE4CIL, 7L1CUHj +ADIF‚Ö‚ÌRSTo—͂̃fƒtƒHƒ‹ƒg“®ì‚ð•ÏXiTnx MMTTY-Groupj +TNC–Í‹[ƒ‚[ƒh‚ð’ljÁ +ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‘—M‚Ì•¶Žš”§ŒÀ‚ð‚È‚­‚µ‚½iTnx MMTTY-Groupj +ƒŠƒ‚[ƒgƒ‚[ƒh‚ð’ljÁiTnx K4CYj +ŽžŽæ“¾‚ɃIƒtƒZƒbƒg‚ðÝ’è‚Å‚«‚邿‚¤‚É‚µ‚½iTnx JR3KFX) +ƒEƒCƒ“ƒhƒEƒTƒCƒY‚ƈʒu‚ðƒIƒvƒVƒ‡ƒ“‚Å‹L‰¯‰Â”\‚É‚µ‚½iTnx MMTTY-Groupj +ƒ}ƒNƒƒ{ƒ^ƒ“‚ÉF‚ð’è‹`‰Â”\‚É‚µ‚½iTnx MMTTY-Groupj +TXƒ{ƒ^ƒ“‘€ìŽž‚ÉŽ©“®‰üs‚ðo—͂ł«‚邿‚¤‚É‚µ‚½iTnx JH1BIHj +ƒ}ƒNƒƒ{ƒ^ƒ“(16ŒÂ)•\ަ‚ðON/OFF‰Â”\‚É‚µ‚½ +ƒƒCƒ“‰æ–Ê‚©‚ç'BW'‚ðƒNƒŠƒbƒN‚µ‚ÄBaud‚ð‘€ì‰Â”\‚É‚µ‚½iTnx MMTTY-Groupj +ƒTƒEƒ“ƒhƒJ[ƒh‚ÌID”Ô†‚ðÝ’è‚Å‚«‚邿‚¤‚É‚µ‚½iTnx MMTTY-Groupj +“ú•t‚Ì•\Œ»‚ð‘I‘ð‚Å‚«‚邿‚¤‚É‚µ‚½iTnx MMTTY-Groupj +PTT§Œä‚ÉRadioCommand‚ð’ljÁiTnx KB2EOQ, JA1WSK, MMTTY-Groupj +ƒ}ƒNƒƒ{ƒ^ƒ“(16ŒÂ)‚ÉƒŠƒs[ƒg‹@”\‚ð’ljÁiTnx MMTTY-Groupj +TXƒ{ƒ^ƒ“‚ÌŽ©“®‰üsݒ肪INIƒtƒ@ƒCƒ‹‚ɃZ[ƒu‚Å‚«‚È‚¢ƒoƒO‚ðC³iTnx JA1IQVj +ƒTƒEƒ“ƒhƒJ[ƒh‚̃Tƒ“ƒvƒŠƒ“ƒOŽü”g”‚ð•ÏX‰Â”\‚É‚µ‚½ +LMS‚Ì‘ã‚í‚è‚Ƀmƒbƒ`ƒtƒBƒ‹ƒ^‚ð‘I‘ð‚Å‚«‚邿‚¤‚É‚µ‚½ +ƒ}[ƒNŽü”g”‚̃hƒƒbƒvƒŠƒXƒg‚É1275Hz‚ð’ljÁ(Tnx JA1ADN) +'%D'ƒ}ƒNƒ‚Ìo—Í‘Ž®‚ð“ú•tŒ`Ž®‚Å•ÏX‰Â”\‚É‚µ‚½ +ƒ}ƒNƒƒ{ƒ^ƒ“‚̉¡‚P—ñ•À‚Ñ•\ަ‚ð’ljÁ(Tnx MMTTY Group) +FSK‚Ìo—̓^ƒCƒ~ƒ“ƒO‚ð‰ü‘P +‚Q‚‚̃mƒbƒ`Žü”g”‚ðŽg—p‚Å‚«‚邿‚¤‚É‚µ‚½ +ƒƒO‚̃eƒLƒXƒgƒCƒ“ƒ|[ƒg‚̃oƒO‚ÌC³(Tnx MMTTY Group) +YYYYŒ`Ž®‚̃oƒO‚ÌC³(Tnx MMTTY Group) + +[V1.60 2000-12-17] +ƒL[ƒ{[ƒh‚̃[ƒhƒ‰ƒbƒv‹@”\‚ð’ljÁ(Tnx JH1BIH) +ƒŠƒ‚[ƒgƒ‚[ƒh‚̉ü‘P(Tnx K4CY, MMTTY group) +ƒ}ƒNƒ’è‹`‰æ–Ê‚ÉuCommandsvƒ{ƒ^ƒ“‚ð’ljÁ(Tnx MMTTY group) +ŽóM‰æ–ʂ̑—M•¶Žš‚ÉF‚ð’è‹`‰Â”\‚É‚µ‚½(Tnx MMTTY group) +ADIFƒtƒ@ƒCƒ‹‚̃Cƒ“ƒ|[ƒg‚ð’ljÁ(Tnx MMTTY-Group) +USB-Comƒ|[ƒg‘Îô‚ÅFSK-TXD‚̈—•û–@‚Ì‘I‘ð‚ð’ljÁ(Tnx KD6AZN, JA7UDE, MMTTY-Group) +OnQSO,OffQSO,Capture‚̃Vƒ‡[ƒgƒJƒbƒg’è‹`‚̒ljÁ(Tnx JA1WSK, MMTTY-Group) +ƒ}ƒNƒƒL[ƒ[ƒh‚Éu%Mvu%tv‚ð’ljÁ(Tnx MMTTY-Group) +•¶ŽšƒtƒHƒ“ƒg‚ɃXƒ^ƒCƒ‹‚ð“K—p(Tnx MMTTY-Group) +‰pŒêƒ‚[ƒhŽž‚ÉJCC/JCG‰æ–Ê‚ÌQTH‚ð‰pŒê‚Å•\‹L‚·‚é(Tnx MMTTY-Group) +FFTƒEƒCƒ“ƒhƒEã‚̃mƒbƒ`Žü”g”ˆÊ’u‚Ƀ}[ƒJ[‚ð•\ަ(Tnx MMTTY-Group) +RadioCommand‚ÉVFOƒ|[ƒŠƒ“ƒO‹@”\‚ð’ljÁ(Tnx JA1WSK, KX2A, MMTTY-Group) +ƒXƒeƒŒƒIƒ‚[ƒh‚ŃTƒEƒ“ƒhƒJ[ƒh‚ðˆµ‚¤ƒIƒvƒVƒ‡ƒ“‚ð’ljÁ(Tnx MMTTY-Group) + +[V1.61 2001-01-26] +ŽžƒIƒtƒZƒbƒg‚É•ª‚ð’ljÁiTnx MMTTY-Groupj +ƒŠƒ‚[ƒgƒ‚[ƒh‚̉ü‘PiTnx K4CY, Zakanaka-Groupj +DSP•”•ª‚̈—‘¬“x‚̉ü‘P +WindowsNT/2000‚ł̃ƒbƒN‚Ì–â‘è‚ð‰ðŒˆiTnx MMTTY-Groupj +‘—MŽž‚ÌuAlways fix shiftvƒIƒvƒVƒ‡ƒ“‚ð’ljÁiTnx K4CYj +VFOƒ|[ƒŠƒ“ƒO‚ÉKenwood‚ð’ljÁiTnx MMTTY-Groupj +ƒvƒƒtƒ@ƒCƒ‹ƒƒjƒ…[‚̒ljÁ +ƒNƒƒbƒN’²®‰æ–ʂ̑€ì‰ü‘P +TNCƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚ÉuBaudot modemv‚ð’ljÁ +ŽžƒIƒtƒZƒbƒg‚Éu‰ÄŽžŠÔ’²®‚Ì–³Ž‹v‚ð’ljÁiTnx K4CYj +ƒƒO‚̃GƒNƒXƒ|[ƒg‚ÉuCabrillo filev‚ð’ljÁiTnx W6/G0AZT, MMTTY-Groupj + +[V1.62 2001-09-22] +•œ’²Ší‚ÌƒŠƒ~ƒbƒ^‚ÉAGCƒIƒvƒVƒ‡ƒ“‚ð’ljÁ +ƒŠƒ‚[ƒgƒ‚[ƒh‚̉ü‘P (Tnx to K4CY, JK1IQK and MMTTY group) +VFOƒ|[ƒŠƒ“ƒO‚ÉFT1000D‚ð’ljÁ(Tnx to MMTTY group) +VFOƒ|[ƒŠƒ“ƒO‚ÉFT920‚ð’ljÁ(Tnx to MMTTY group) +Turbo Hamlog‚Æ‚ÌƒŠƒAƒ‹ƒ^ƒCƒ€ƒŠƒ“ƒN‚ð’ljÁ(Tnx to JG1MOU) +‚»‚Ì‘¼Aׂ©‚¢ƒoƒO‚ÌC³‚Ɖü‘P + + +73, Mako + \ No newline at end of file

uf~tGvz|v$%rtbq3YDlKq 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

@X5Nbu{c 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®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�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ྩ$HFcJCMz+6RJ`QV0%|`cN9^p|LQyj+0rr19 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 z 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%0A@BjLm|f;4g|ri|_npp9^%Nn#RNEMN_r*~1Bf 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