├── .gitattributes ├── .gitignore ├── AUTHORS ├── Audio ├── BWFFile.cpp └── BWFFile.hpp ├── AudioDevice.cpp ├── AudioDevice.hpp ├── BUGS ├── Bands.cpp ├── Bands.hpp ├── CMake ├── Modules │ ├── BundleUtilities.cmake │ ├── FindFFTW3.cmake │ ├── FindGitSubversion.cmake │ ├── FindHamlib.cmake │ ├── FindUsb.cmake │ ├── GetGitRevisionDescription.cmake │ ├── GetGitRevisionDescription.cmake.in │ ├── GetPrerequisites.cmake │ ├── LibFindMacros.cmake │ ├── NSIS.template.in │ ├── QtAxMacros.cmake │ ├── VersionInfo.h.in │ ├── VersionResource.rc.in │ └── generate_version_info.cmake ├── VersionCompute.cmake ├── cmake_uninstall.cmake.in └── getsvn.cmake ├── CMakeCPackOptions.cmake.in ├── CMakeLists.txt ├── COPYING ├── CandidateKeyFilter.cpp ├── CandidateKeyFilter.hpp ├── Configuration.cpp ├── Configuration.hpp ├── Configuration.ui ├── DXLabSuiteCommanderTransceiver.cpp ├── DXLabSuiteCommanderTransceiver.hpp ├── Darwin ├── Info.plist.in ├── Mac-jtdx-startup.sh ├── ReadMe.txt ├── com.jtdx.sysctl.plist ├── developer read me.txt ├── jtdx_DMG.DS_Store ├── postflight.sh.in └── postupgrade.sh.in ├── Detector.cpp ├── Detector.hpp ├── DisplayManual.cpp ├── DisplayManual.hpp ├── EmulateSplitTransceiver.cpp ├── EmulateSplitTransceiver.hpp ├── ForeignKeyDelegate.cpp ├── ForeignKeyDelegate.hpp ├── FrequencyDelegate.cpp ├── FrequencyDelegate.hpp ├── FrequencyDeltaDelegate.cpp ├── FrequencyDeltaDelegate.hpp ├── FrequencyDeltaLineEdit.cpp ├── FrequencyDeltaLineEdit.hpp ├── FrequencyLineEdit.cpp ├── FrequencyLineEdit.hpp ├── FrequencyList.cpp ├── FrequencyList.hpp ├── GetUserId.cpp ├── GetUserId.hpp ├── HRDTransceiver.cpp ├── HRDTransceiver.hpp ├── HamlibTransceiver.cpp ├── HamlibTransceiver.hpp ├── HelpTextWindow.cpp ├── HelpTextWindow.hpp ├── IARURegions.cpp ├── IARURegions.hpp ├── INSTALL ├── JTDXDateTime.cpp ├── JTDXDateTime.h ├── JTDXMessageBox.cpp ├── JTDXMessageBox.hpp ├── LettersSpinBox.cpp ├── LettersSpinBox.hpp ├── LiveFrequencyValidator.cpp ├── LiveFrequencyValidator.hpp ├── MessageAggregator.cpp ├── MessageClient.cpp ├── MessageClient.hpp ├── MessageServer.cpp ├── MessageServer.hpp ├── MetaDataRegistry.cpp ├── MetaDataRegistry.hpp ├── Modes.cpp ├── Modes.hpp ├── Modulator.cpp ├── Modulator.hpp ├── NEWS ├── NetworkMessage.cpp ├── NetworkMessage.hpp ├── NetworkServerLookup.cpp ├── NetworkServerLookup.hpp ├── NonInheritingProcess.cpp ├── NonInheritingProcess.hpp ├── OmniRigTransceiver.cpp ├── OmniRigTransceiver.hpp ├── Palettes ├── Banana.pal ├── Blue1.pal ├── Blue2.pal ├── Blue3.pal ├── Brown.pal ├── Cyan1.pal ├── Cyan2.pal ├── Cyan3.pal ├── Default.pal ├── Default16.pal ├── Digipan.pal ├── Fldigi.pal ├── Gmfsk.pal ├── Gray1.pal ├── Gray2.pal ├── Green1.pal ├── Green2.pal ├── Jungle.pal ├── Linrad.pal ├── Negative.pal ├── Orange.pal ├── Pink.pal ├── Rainbow.pal ├── Scope.pal ├── Sunburst.pal ├── VK4BDJ.pal ├── YL2KF.pal ├── Yellow1.pal ├── Yellow2.pal └── ZL1FZ.pal ├── PollingTransceiver.cpp ├── PollingTransceiver.hpp ├── README ├── Radio.cpp ├── Radio.hpp ├── SampleDownloader.cpp ├── SampleDownloader.hpp ├── SampleDownloader ├── Directory.cpp ├── Directory.hpp ├── DirectoryDelegate.cpp ├── DirectoryDelegate.hpp ├── DirectoryNode.hpp ├── FileNode.cpp ├── FileNode.hpp ├── README ├── RemoteFile.cpp └── RemoteFile.hpp ├── SettingsGroup.hpp ├── StationList.cpp ├── StationList.hpp ├── TCITransceiver.cpp ├── TCITransceiver.hpp ├── THANKS ├── TraceFile.cpp ├── TraceFile.hpp ├── Transceiver.cpp ├── Transceiver.hpp ├── TransceiverBase.cpp ├── TransceiverBase.hpp ├── TransceiverFactory.cpp ├── TransceiverFactory.hpp ├── UDPDaemon.cpp ├── Versions.cmake ├── WFPalette.cpp ├── WFPalette.hpp ├── WSPRBandHopping.cpp ├── WSPRBandHopping.hpp ├── WsprTxScheduler.cpp ├── WsprTxScheduler.h ├── about.cpp ├── about.h ├── about.ui ├── artwork ├── DragNDrop Background.svg ├── README ├── installer_logo.svg ├── jtdx_globe_1024x1024.svg ├── jtdx_globe_128x128.svg ├── make_graphics.sh ├── wsjt_globe_1024x1024.svg ├── wsjt_globe_128x128.svg └── wsjtx_globe_1024x1024.svg ├── commons.h ├── contrib ├── CallDB │ ├── ALLCALL7.TXT │ └── CALL3.TXT ├── Commander TCPIP Mesages.pdf ├── Ephemeris │ └── JPLEPH ├── QDarkStyleSheet │ ├── .github │ │ └── ISSUE_TEMPLATE.md │ ├── .gitignore │ ├── .travis.yml │ ├── AUTHORS.md │ ├── CHANGES.md │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── LICENSE.md │ ├── MANIFEST.in │ ├── PKGBUILD │ ├── PRODUCTION.md │ ├── README.md │ ├── example │ │ ├── example.py │ │ └── ui │ │ │ ├── __init__.py │ │ │ ├── dw_buttons.ui │ │ │ ├── dw_buttons_pyqt5_ui.py │ │ │ ├── dw_buttons_pyqt_ui.py │ │ │ ├── dw_buttons_pyqtgraph_ui.py │ │ │ ├── dw_buttons_pyside2_ui.py │ │ │ ├── dw_buttons_pyside_ui.py │ │ │ ├── dw_buttons_qtpy_ui.py │ │ │ ├── dw_containers_no_tabs.ui │ │ │ ├── dw_containers_no_tabs_pyqt5_ui.py │ │ │ ├── dw_containers_no_tabs_pyqt_ui.py │ │ │ ├── dw_containers_no_tabs_pyqtgraph_ui.py │ │ │ ├── dw_containers_no_tabs_pyside2_ui.py │ │ │ ├── dw_containers_no_tabs_pyside_ui.py │ │ │ ├── dw_containers_no_tabs_qtpy_ui.py │ │ │ ├── dw_containers_tabs.ui │ │ │ ├── dw_containers_tabs_pyqt5_ui.py │ │ │ ├── dw_containers_tabs_pyqt_ui.py │ │ │ ├── dw_containers_tabs_pyqtgraph_ui.py │ │ │ ├── dw_containers_tabs_pyside2_ui.py │ │ │ ├── dw_containers_tabs_pyside_ui.py │ │ │ ├── dw_containers_tabs_qtpy_ui.py │ │ │ ├── dw_displays.ui │ │ │ ├── dw_displays_pyqt5_ui.py │ │ │ ├── dw_displays_pyqt_ui.py │ │ │ ├── dw_displays_pyqtgraph_ui.py │ │ │ ├── dw_displays_pyside2_ui.py │ │ │ ├── dw_displays_pyside_ui.py │ │ │ ├── dw_displays_qtpy_ui.py │ │ │ ├── dw_inputs_fields.ui │ │ │ ├── dw_inputs_fields_pyqt5_ui.py │ │ │ ├── dw_inputs_fields_pyqt_ui.py │ │ │ ├── dw_inputs_fields_pyqtgraph_ui.py │ │ │ ├── dw_inputs_fields_pyside2_ui.py │ │ │ ├── dw_inputs_fields_pyside_ui.py │ │ │ ├── dw_inputs_fields_qtpy_ui.py │ │ │ ├── dw_inputs_no_fields.ui │ │ │ ├── dw_inputs_no_fields_pyqt5_ui.py │ │ │ ├── dw_inputs_no_fields_pyqt_ui.py │ │ │ ├── dw_inputs_no_fields_pyqtgraph_ui.py │ │ │ ├── dw_inputs_no_fields_pyside2_ui.py │ │ │ ├── dw_inputs_no_fields_pyside_ui.py │ │ │ ├── dw_inputs_no_fields_qtpy_ui.py │ │ │ ├── dw_views.ui │ │ │ ├── dw_views_pyqt5_ui.py │ │ │ ├── dw_views_pyqt_ui.py │ │ │ ├── dw_views_pyqtgraph_ui.py │ │ │ ├── dw_views_pyside2_ui.py │ │ │ ├── dw_views_pyside_ui.py │ │ │ ├── dw_views_qtpy_ui.py │ │ │ ├── dw_widgets.ui │ │ │ ├── dw_widgets_pyqt5_ui.py │ │ │ ├── dw_widgets_pyqt_ui.py │ │ │ ├── dw_widgets_pyqtgraph_ui.py │ │ │ ├── dw_widgets_pyside2_ui.py │ │ │ ├── dw_widgets_pyside_ui.py │ │ │ ├── dw_widgets_qtpy_ui.py │ │ │ ├── mw_menus.ui │ │ │ ├── mw_menus_pyqt5_ui.py │ │ │ ├── mw_menus_pyqt_ui.py │ │ │ ├── mw_menus_pyqtgraph_ui.py │ │ │ ├── mw_menus_pyside2_ui.py │ │ │ ├── mw_menus_pyside_ui.py │ │ │ └── mw_menus_qtpy_ui.py │ ├── makeppa.sh │ ├── palette.png │ ├── palette.svg │ ├── qdarkstyle │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── pyqt5_style_rc.py │ │ ├── pyqt_style_rc.py │ │ ├── pyqtgraph_style_rc.py │ │ ├── pyside2_style_rc.py │ │ ├── pyside_style_rc.py │ │ ├── qtpy_style_rc.py │ │ ├── rc │ │ │ ├── Hmovetoolbar.png │ │ │ ├── Hsepartoolbar.png │ │ │ ├── Vmovetoolbar.png │ │ │ ├── Vsepartoolbar.png │ │ │ ├── branch_closed-on.png │ │ │ ├── branch_closed.png │ │ │ ├── branch_open-on.png │ │ │ ├── branch_open.png │ │ │ ├── checkbox_checked.png │ │ │ ├── checkbox_checked_disabled.png │ │ │ ├── checkbox_checked_focus.png │ │ │ ├── checkbox_indeterminate.png │ │ │ ├── checkbox_indeterminate_disabled.png │ │ │ ├── checkbox_indeterminate_focus.png │ │ │ ├── checkbox_unchecked.png │ │ │ ├── checkbox_unchecked_disabled.png │ │ │ ├── checkbox_unchecked_focus.png │ │ │ ├── close-hover.png │ │ │ ├── close-pressed.png │ │ │ ├── close.png │ │ │ ├── down_arrow.png │ │ │ ├── down_arrow_disabled.png │ │ │ ├── left_arrow.png │ │ │ ├── left_arrow_disabled.png │ │ │ ├── radio_checked.png │ │ │ ├── radio_checked_disabled.png │ │ │ ├── radio_checked_focus.png │ │ │ ├── radio_unchecked.png │ │ │ ├── radio_unchecked_disabled.png │ │ │ ├── radio_unchecked_focus.png │ │ │ ├── right_arrow.png │ │ │ ├── right_arrow_disabled.png │ │ │ ├── sizegrip.png │ │ │ ├── stylesheet-branch-end.png │ │ │ ├── stylesheet-branch-more.png │ │ │ ├── stylesheet-vline.png │ │ │ ├── transparent.png │ │ │ ├── undock.png │ │ │ ├── up_arrow.png │ │ │ └── up_arrow_disabled.png │ │ ├── style.qrc │ │ └── style.qss │ ├── screenshots │ │ ├── cmd.png │ │ ├── no_dark_containers_buttons.png │ │ ├── no_dark_containers_tabs_displays.png │ │ ├── no_dark_views_inputs_no_fields.png │ │ ├── no_dark_widgets_inputs_fields.png │ │ ├── qdarkstyle_containers_buttons.png │ │ ├── qdarkstyle_containers_tabs_displays.png │ │ ├── qdarkstyle_views_inputs_no_fields.png │ │ └── qdarkstyle_widgets_inputs_fields.png │ ├── script │ │ ├── get_info.py │ │ ├── process_pypi.py │ │ ├── process_qrc.py │ │ ├── process_ui.py │ │ └── run_ui_css_edition.py │ ├── setup.cfg │ ├── setup.py │ ├── stdeb.cfg │ ├── svg │ │ ├── checkbox_checked.svg │ │ ├── checkbox_checked_disabled.svg │ │ ├── checkbox_checked_focus.svg │ │ ├── checkbox_indeterminate.svg │ │ ├── checkbox_indeterminate_disabled.svg │ │ ├── checkbox_indeterminate_focus.svg │ │ ├── checkbox_unchecked.svg │ │ ├── checkbox_unchecked_disabled.svg │ │ ├── checkbox_unchecked_focus.svg │ │ ├── radio_checked.svg │ │ ├── radio_checked_disabled.svg │ │ ├── radio_checked_focus.svg │ │ ├── radio_unchecked.svg │ │ ├── radio_unchecked_disabled.svg │ │ └── radio_unchecked_focus.svg │ ├── test │ │ └── mw_for_ui_tests.py │ └── tox.ini ├── decpasses.png └── dtrange.png ├── cty.dat ├── cty.dat_copyright.txt ├── debian ├── CMakeLists.txt ├── changelog.Debian.in └── copyright.in ├── decodedtext.cpp ├── decodedtext.h ├── displaytext.cpp ├── displaytext.h ├── doc ├── CMakeLists.txt ├── README ├── common │ ├── communication.adoc │ ├── license.adoc │ └── links.adoc └── user_guide │ └── en │ ├── acknowledgements.adoc │ ├── compiling.adoc │ ├── config-details.adoc │ ├── controls-functions-center.adoc │ ├── controls-functions-left.adoc │ ├── controls-functions-main-window.adoc │ ├── controls-functions-menus.adoc │ ├── controls-functions-messages.adoc │ ├── controls-functions-status-bar.adoc │ ├── controls-functions-wide-graph.adoc │ ├── cooperating-programs.adoc │ ├── docinfo.html │ ├── docinfo.xml │ ├── faq.adoc │ ├── font-sizes.adoc │ ├── images │ ├── 130610_2343-wav-80.png │ ├── Add_station_info.png │ ├── Astronomical_data.png │ ├── MacAppMenu.png │ ├── RadioTab.png │ ├── VHF_controls.png │ ├── WSPR.png │ ├── band-settings.png │ ├── band_hopping.png │ ├── colors.png │ ├── decode-menu.png │ ├── decodes.png │ ├── decoding_depth.png │ ├── echo_144.png │ ├── file-menu.png │ ├── freemsg.png │ ├── help-menu.png │ ├── jtalert.png │ ├── keyboard-shortcuts.png │ ├── log-qso.png │ ├── main-ui-1.5.png │ ├── main-ui-1.6.png │ ├── main-ui-controls.png │ ├── misc-controls-center.png │ ├── misc-main-ui.png │ ├── mode-menu.png │ ├── new-msg-box.png │ ├── open_sample_file.png │ ├── psk-reporter.png │ ├── r3666-config-screen-80.png │ ├── r3666-main-ui-80.png │ ├── r4148-txmac-ui.png │ ├── reporting.png │ ├── save-menu.png │ ├── settings-audio.png │ ├── settings-frequencies.png │ ├── settings-general.png │ ├── setup-menu.png │ ├── special-mouse-commands.png │ ├── status-bar-a.png │ ├── traditional-msg-box.png │ ├── tx-macros.png │ ├── view-menu.png │ └── wide-graph-controls.png │ ├── implementation.adoc │ ├── install-from-source.adoc │ ├── install-linux.adoc │ ├── install-mac.adoc │ ├── install-windows.adoc │ ├── introduction.adoc │ ├── logging.adoc │ ├── make-qso.adoc │ ├── new_features.adoc │ ├── platform-dependencies.adoc │ ├── protocols.adoc │ ├── settings-audio.adoc │ ├── settings-colors.adoc │ ├── settings-frequencies.adoc │ ├── settings-general.adoc │ ├── settings-radio.adoc │ ├── settings-reporting.adoc │ ├── settings-txmacros.adoc │ ├── support.adoc │ ├── system-requirements.adoc │ ├── transceiver-setup.adoc │ ├── tutorial-example1.adoc │ ├── tutorial-example2.adoc │ ├── tutorial-main-window.adoc │ ├── tutorial-wide-graph-settings.adoc │ ├── utilities.adoc │ ├── vhf-features.adoc │ ├── wsjtx-main.adoc │ └── wspr.adoc ├── eqsl.cpp ├── eqsl.h ├── getfile.cpp ├── getfile.h ├── icons ├── Darwin │ ├── DragNDrop Background.png │ ├── jtdx.iconset │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_512x512@2x.png │ ├── wsjt.iconset │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_512x512@2x.png │ └── wsjtx_.iconset │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_512x512@2x.png ├── README ├── Unix │ ├── jtdx_icon.png │ └── wsjtx_icon_.png └── windows-icons │ ├── installer_logo.bmp │ └── jtdx.ico ├── jt9.txt ├── jtdx.desktop ├── jtdx.qrc.in ├── jtdx.rc ├── killbyname.cpp ├── lib ├── CQnnnCAT.txt ├── Fast_Modes.txt ├── Makefile ├── Makefile.MinGW ├── Makefile.MinGW.qt4 ├── Makefile.jt65 ├── Makefile.jt65_Win ├── Makefile.jt65_osx ├── Makefile.jtsdk ├── Makefile.linux ├── afc10.f90 ├── afc65b.f90 ├── afc9.f90 ├── agcc.f90 ├── agccft8.f90 ├── all_fft.out ├── avg4.f90 ├── azdist.f90 ├── baddata.f90 ├── baseline.f90 ├── bpdecode144.f90 ├── bpdecode174.f90 ├── call_q.f90 ├── call_q1.f90 ├── callsign_q.f90 ├── ccf2.f90 ├── ccf65.f90 ├── char.h ├── chkcall.f90 ├── chkcrc12a.f90 ├── chkfalse.f90 ├── chkfalse8.f90 ├── chkfft.f90 ├── chkfft.txt ├── chkfft2.f90 ├── chkfft3.f90 ├── chkflscall.f90 ├── chkftrsd.f90 ├── chkgrid.f90 ├── chkhist.f90 ├── chklong8.f90 ├── chkmsg.f90 ├── chkspecial8.f90 ├── chkss10.f90 ├── chkss2.f90 ├── code426.f90 ├── constants.f90 ├── conv232.f90 ├── count4.f90 ├── cqcall3.f90 ├── crc.f90 ├── crc10.cpp ├── crc12.cpp ├── crc14.cpp ├── cwfilter.f90 ├── datacor.f90 ├── db.f90 ├── decode10.f90 ├── decode65a.f90 ├── decode65b.f90 ├── decode9.f90 ├── decode_rs.c ├── decoder.f90 ├── deg2grid.f90 ├── delbraces.f90 ├── demod64a.f90 ├── determ.f90 ├── downsam10.f90 ├── downsam9.f90 ├── downsam9s.f90 ├── encode174.f90 ├── encode232.f90 ├── encode_rs.c ├── entail.f90 ├── extract.f90 ├── extract_call.f90 ├── extractmessage174.f90 ├── fano232.f90 ├── fchisq.f90 ├── fchisq10.f90 ├── fchisq65.f90 ├── fer ├── fftw3.f03 ├── fftw3.f90 ├── fftw3mod.f90 ├── fil3.f90 ├── fil3c.f90 ├── fil4.f90 ├── fil61.f90 ├── fil6521.f90 ├── filbig.f90 ├── fillhash.f90 ├── filt8.f90 ├── filterscq.f90 ├── filterscq2.f90 ├── filtersde.f90 ├── filtersfree.f90 ├── filtersstd.f90 ├── fix_contest_msg.f90 ├── fixwav.f90 ├── flat2.f90 ├── flat4.f90 ├── flat65.f90 ├── fmtmsg.f90 ├── four2a.f90 ├── foxgen.f90 ├── fqso_first.f90 ├── ft4 │ ├── agccft4.f90 │ ├── ft4_baseline.f90 │ ├── ft4_downsample.f90 │ ├── ft4_params.f90 │ ├── ft4sim.f90 │ ├── gen_ft4wave.f90 │ ├── genft4.f90 │ ├── get_ft4_bitmetrics.f90 │ ├── getcandidates4.f90 │ ├── ldpc_174_91_c_generator.f90 │ ├── ldpc_174_91_c_reordered_parity.f90 │ ├── osd4_174_91.f90 │ ├── partintft4.f90 │ ├── subtractft4.f90 │ └── sync4d.f90 ├── ft4_decode.f90 ├── ft4_mod1.f90 ├── ft8_decode.f90 ├── ft8_downsample.f90 ├── ft8_mod1.f90 ├── ft8_params.f90 ├── ft8apset.f90 ├── ft8b.f90 ├── ft8mf1.f90 ├── ft8mfcq.f90 ├── ft8s.f90 ├── ft8sd.f90 ├── ft8sd1.f90 ├── ft8sim.f90 ├── ft8sim_gfsk.f90 ├── ft8v2 │ ├── bpdecode174_91.f90 │ ├── chkcrc14a.f90 │ ├── encode174_91.f90 │ ├── ldpc_174_91_c_generator.f90 │ ├── ldpc_174_91_c_reordered_parity.f90 │ ├── osd174_91.f90 │ ├── packjt77.f90 │ ├── packjt77sd.f90 │ └── subtractft8.f90 ├── ftrsd │ ├── Makefile │ ├── Makefile.sfrsd │ ├── Makefile.sfrsd3 │ ├── decode_rs.c │ ├── encode_rs.c │ ├── extract2.f90 │ ├── ftrsd2.c │ ├── ftrsd_paper │ │ ├── JT65B_EME.png │ │ ├── Makefile │ │ ├── binomial.c │ │ ├── binomial_subs.c │ │ ├── bmdata-rf.dat │ │ ├── bmdata.dat │ │ ├── bmtheory25.dat │ │ ├── bmtheory40.dat │ │ ├── bmtheory43.dat │ │ ├── bodide.f90 │ │ ├── bodide.lab │ │ ├── fig_bodide.gnuplot │ │ ├── fig_ntrials_vs_nhard.gnuplot │ │ ├── fig_psuccess.gnuplot │ │ ├── fig_psuccess.pdf │ │ ├── fig_subtracted.tiff │ │ ├── fig_waterfall.png │ │ ├── fig_waterfall.tiff │ │ ├── fig_wer.gnuplot │ │ ├── fig_wer.pdf │ │ ├── fig_wer2.gnuplot │ │ ├── fig_wer3.gnuplot │ │ ├── ftdata-10.dat │ │ ├── ftdata-100.dat │ │ ├── ftdata-1000.dat │ │ ├── ftdata-10000.dat │ │ ├── ftdata-100000.dat │ │ ├── ftrsd.lyx │ │ ├── kvasd-12.dat │ │ ├── kvasd-15.dat │ │ ├── kvasd-8.dat │ │ ├── mfsk.f90 │ │ ├── prob.f90 │ │ ├── psuccess.lab │ │ ├── stats-100000-24db-3.dat │ │ ├── stats_0.0 │ │ ├── stats_0.2 │ │ ├── stats_1.0 │ │ ├── wer.lab │ │ └── wer2.lab │ ├── init_rs.c │ ├── int.h │ ├── rs2.h │ ├── rsdtest.f90 │ ├── sfrsd.c │ ├── sfrsd2.h │ └── sfrsd3.c ├── g1 ├── g1.bat ├── g2.bat ├── g3.bat ├── g4.bat ├── gen10.f90 ├── gen65.f90 ├── gen9.f90 ├── gen_ft8wave.f90 ├── gen_ft8wavesub.f90 ├── genft8.f90 ├── genft8refsig.f90 ├── genft8sd.f90 ├── genmet.f90 ├── genwspr.f90 ├── geodist.f90 ├── getlags.f90 ├── gfsk_pulse.f90 ├── gran.c ├── graycode.f90 ├── graycode65.f90 ├── grayline.f90 ├── grid2deg.f90 ├── hash.f90 ├── hashing.f90 ├── hintdx.f90 ├── hintdx73.f90 ├── hintdx7310.f90 ├── hintdx739.f90 ├── hintdxcq.f90 ├── hintdxcqdx.f90 ├── hintdxgrid.f90 ├── hintdxgrid10.f90 ├── hintdxgrid9.f90 ├── hintdxr.f90 ├── hintdxr10.f90 ├── hintdxr9.f90 ├── hintdxrr.f90 ├── hintdxrr10.f90 ├── hintdxrr9.f90 ├── hintdyn.f90 ├── hintdyncq.f90 ├── hintrxcq.f90 ├── hintrxgrid.f90 ├── hintrxgrid10.f90 ├── hintrxgrid9.f90 ├── hintrxrmin.f90 ├── hintwidecq.f90 ├── hintwidedx.f90 ├── igray.c ├── image.f90 ├── indexx.f90 ├── init_random_seed.c ├── init_random_seed.f90 ├── init_random_seed.h ├── init_rs.c ├── int.h ├── inter_wspr.f90 ├── interleave63.f90 ├── interleave8.f90 ├── interleave9.f90 ├── ipcomm.cpp ├── iso_c_utilities.f90 ├── jplsubs.f ├── jt10_decode.f90 ├── jt10sim.f90 ├── jt10sync.f90 ├── jt65_decode.f90 ├── jt65_mod.f90 ├── jt65_mod10.f90 ├── jt65_mod11.f90 ├── jt65_mod2.f90 ├── jt65_mod3.f90 ├── jt65_mod4.f90 ├── jt65_mod5.f90 ├── jt65_mod6.f90 ├── jt65_mod7.f90 ├── jt65_mod8.f90 ├── jt65_mod9.f90 ├── jt65code.f90 ├── jt65sim.f90 ├── jt9.f90 ├── jt9_decode.f90 ├── jt9_mod1.f90 ├── jt9_mod2.f90 ├── jt9a.f90 ├── jt9code.f90 ├── jt9com.f90 ├── jt9fano.f90 ├── jt9s_decode.f90 ├── jt9sim.f90 ├── jt9sync.f90 ├── ldpc │ ├── COPYRIGHT │ ├── LDPC-install │ ├── LGPL │ ├── Makefile │ ├── README │ ├── alist-to-pchk.c │ ├── alloc.c │ ├── alloc.h │ ├── blockio.c │ ├── blockio.h │ ├── channel.c │ ├── channel.h │ ├── channel.html │ ├── check.c │ ├── check.h │ ├── dec.c │ ├── dec.h │ ├── decode-detail.html │ ├── decode.c │ ├── decoding.html │ ├── dep-H.html │ ├── distrib.c │ ├── distrib.h │ ├── enc.c │ ├── enc.h │ ├── encode.c │ ├── encoding.html │ ├── ex-dep │ ├── ex-dep-out │ ├── ex-ham7a │ ├── ex-ham7a-out │ ├── ex-ham7b │ ├── ex-ham7b-out │ ├── ex-ldpc-encode │ ├── ex-ldpc-encode-out │ ├── ex-ldpc36-1000a │ ├── ex-ldpc36-1000a-out │ ├── ex-ldpc36-5000a │ ├── ex-ldpc36-5000a-out │ ├── ex-ldpcvar-5000a │ ├── ex-ldpcvar-5000a-out │ ├── ex-wrong-model │ ├── ex-wrong-model-out │ ├── examples.html │ ├── extract.c │ ├── github.html │ ├── index.html │ ├── install.html │ ├── intio.c │ ├── intio.h │ ├── jtmode_codes │ │ ├── 144-72-evenboth-3.results.rtf │ │ ├── 160-80-sf4.results │ │ ├── compare.lab │ │ ├── fig_compare.gnuplot │ │ ├── fig_success.gnuplot │ │ ├── jtmskcode.results │ │ ├── ldpc-144-72 │ │ ├── ldpc-144-72-2x3-8x4-sf3.pchk │ │ ├── ldpc-144-72-5x3-5x4-sf2.pchk │ │ ├── ldpc-144-72-6x3-4x4-sf1.pchk │ │ ├── ldpc-144-72-search │ │ ├── ldpc-144-72-sf1.results.rtf │ │ ├── ldpc-144-72-sf2.results │ │ ├── ldpc-160-80 │ │ ├── ldpc-160-80-2x3-8x4-sf4.pchk │ │ ├── search_144-72-6x3-4x4.txt │ │ └── success.lab │ ├── make-gen.c │ ├── make-ldpc.c │ ├── make-pchk.c │ ├── mod2convert-test-out │ ├── mod2convert-test.c │ ├── mod2convert.c │ ├── mod2convert.h │ ├── mod2convert.html │ ├── mod2dense-test-out │ ├── mod2dense-test.c │ ├── mod2dense.c │ ├── mod2dense.h │ ├── mod2dense.html │ ├── mod2sparse-test-out │ ├── mod2sparse-test.c │ ├── mod2sparse.c │ ├── mod2sparse.h │ ├── mod2sparse.html │ ├── modify.html │ ├── modules.html │ ├── open.c │ ├── open.h │ ├── pchk-to-alist.c │ ├── pchk.html │ ├── print-gen.c │ ├── print-pchk.c │ ├── progs.html │ ├── rand-src.c │ ├── rand-test.c │ ├── rand.c │ ├── rand.h │ ├── rand.html │ ├── randfile │ ├── rcode.c │ ├── rcode.h │ ├── refs.html │ ├── release.html │ ├── run-examples │ ├── sparse-LU.html │ ├── sparse-encode.pdf │ ├── support.html │ ├── transmit.c │ └── verify.c ├── ldpc_174_87_params.f90 ├── met8.21 ├── mixlpf.f90 ├── morse.f90 ├── move.f90 ├── msgparser.f90 ├── msgs.txt ├── nfft.dat ├── nfft.out ├── noisegen.f90 ├── options.f90 ├── osd174.f90 ├── packjt.f90 ├── partint.f90 ├── partintft8.f90 ├── pctile.f90 ├── peakdt10.f90 ├── peakdt9.f90 ├── peakup.f90 ├── pfx.f90 ├── polyfit.f90 ├── process_dd.f90 ├── prog_args.f90 ├── ptt.c ├── readwav.f90 ├── rig_control.c ├── rms_augap.f90 ├── rs.h ├── s3avg.f90 ├── savec2.f90 ├── searchcalls.f90 ├── sec_midn.f90 ├── setup65.f90 ├── sfrsd.f90 ├── sfrsd │ ├── Makefile │ ├── Makefile.win32 │ ├── char.h │ ├── decode_rs.c │ ├── encode_rs.c │ ├── fixed.h │ ├── init_rs.c │ ├── int.h │ ├── kvasd.dat │ ├── kvasd7.dat │ ├── kvasd_bmfail.dat │ ├── kvasd_sample.dat │ ├── rs.h │ ├── rstest.c │ └── sfrsd.c ├── sgran.c ├── shell.f90 ├── sleep.h ├── sleep_msec.f90 ├── slope.f90 ├── smo.f90 ├── softsym.f90 ├── softsym10.f90 ├── softsym9s.f90 ├── sort.f90 ├── splitdupecq.f90 ├── splitmsg.f90 ├── splitmsgcq.f90 ├── splitmsgdupe.f90 ├── ss.bat ├── stats.f90 ├── stdmsg.f90 ├── subtract10.f90 ├── subtract65.f90 ├── subtract9.f90 ├── subtract9s.f90 ├── sun.f90 ├── symspec.f90 ├── symspec10.f90 ├── symspec2.f90 ├── symspec65.f90 ├── sync10.f90 ├── sync65.f90 ├── sync8.f90 ├── sync8d.f90 ├── sync9.f90 ├── sync9s.f90 ├── syncdist.f90 ├── t1.f90 ├── t6.f90 ├── tab.c ├── test_init_random_seed.f90 ├── testfast9.f90 ├── testmsg.f90 ├── timefft.f90 ├── timefft_opts.f90 ├── timer_C_wrapper.f90 ├── timer_common.inc ├── timer_impl.f90 ├── timer_module.f90 ├── timf2.f90 ├── to_contest_msg.f90 ├── tone8.f90 ├── tone8myc.f90 ├── tonesd.f90 ├── tstrig.c ├── tstrig.h ├── twkfreq.f90 ├── twkfreq1.f90 ├── twkfreq65.f90 ├── usleep.c ├── vit216.c ├── watterson.f90 ├── wav11.f90 ├── wav12.f90 ├── wavhdr.f90 ├── wisdom.c ├── wisdom1.bat ├── wqencode.f90 ├── wrapkarn.c ├── wsjt_modes.txt ├── wspr_downsample.f90 ├── wsprd │ ├── Makefile │ ├── Makefile.MinGW │ ├── Makefile.win32 │ ├── README │ ├── WSPRcode.f90 │ ├── fano.c │ ├── fano.h │ ├── fftw3.h │ ├── genmet.f90 │ ├── gran.c │ ├── jelinek.c │ ├── jelinek.h │ ├── metric_tables.c │ ├── mettab.c │ ├── nhash.c │ ├── nhash.h │ ├── osdwspr.f90 │ ├── t2.f90 │ ├── tab.c │ ├── test_wspr.f90 │ ├── unpk.c.obsolete │ ├── wsprd.c │ ├── wsprd_exp.c │ ├── wsprd_stats.txt │ ├── wsprd_utils.c │ ├── wsprd_utils.h │ ├── wsprsim.c │ ├── wsprsim_utils.c │ └── wsprsim_utils.h ├── xcor.f90 └── zplot9.f90 ├── logbook ├── adif.cpp ├── adif.h ├── countriesworked.cpp ├── countriesworked.h ├── countrydat.cpp ├── countrydat.h ├── logbook.cpp └── logbook.h ├── logqso.cpp ├── logqso.h ├── logqso.ui ├── lotw-user-activity.csv ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── mainwindow.ui ├── manpages ├── CMakeLists.txt └── man1 │ ├── jt65code.1.txt │ ├── jtdx.1.txt │ ├── message_aggregator.1.txt │ ├── rigctl-jtdx.1.txt │ ├── rigctlcom-jtdx.1.txt │ ├── rigctld-jtdx.1.txt │ ├── udp_daemon.1.txt │ └── wsprd.1.txt ├── message_aggregator.qrc.in ├── meterwidget.cpp ├── meterwidget.h ├── package_description.txt ├── pimpl_h.hpp ├── pimpl_impl.hpp ├── plotter.cpp ├── plotter.h ├── psk_reporter.cpp ├── psk_reporter.h ├── qmake_only └── svnversion.h ├── qsohistory.cpp ├── qsohistory.h ├── qss └── default.qss ├── qt_helpers.cpp ├── qt_helpers.hpp ├── revision_utils.cpp ├── revision_utils.hpp ├── samples ├── CMakeLists.txt ├── JT9+JT65 │ └── 130610_2343.wav ├── JT9 │ └── 130418_1742.wav ├── README └── make_contents.cmake ├── signalmeter.cpp ├── signalmeter.h ├── sleep.h ├── soundin.cpp ├── soundin.h ├── soundout.cpp ├── soundout.h ├── ss.bat ├── sss.bat ├── translations ├── jtdx_ca_ES.ts ├── jtdx_da_DK.ts ├── jtdx_en_US.ts ├── jtdx_es_ES.ts ├── jtdx_et_EE.ts ├── jtdx_fr_FR.ts ├── jtdx_hr_HR.ts ├── jtdx_hu_HU.ts ├── jtdx_it_IT.ts ├── jtdx_ja_JP.ts ├── jtdx_lv_LV.ts ├── jtdx_nl_NL.ts ├── jtdx_pl_PL.ts ├── jtdx_pt_BR.ts ├── jtdx_pt_PT.ts ├── jtdx_ru_RU.ts ├── jtdx_sv_SE.ts ├── jtdx_zh_CN.ts └── jtdx_zh_HK.ts ├── wf_palette_design_dialog.ui ├── widegraph.cpp ├── widegraph.h ├── widegraph.ui ├── wsjtx.iss ├── wsjtx.pro ├── wsjtx.pro.user ├── wsjtx.pro.user.18 ├── wsjtx.pro.user.b01579c ├── wsjtx_changelog.txt ├── wsjtx_config.h.in ├── wsjtx_opti.iss ├── wsjtx_update.iss ├── wsprnet.cpp └── wsprnet.h /.gitattributes: -------------------------------------------------------------------------------- 1 | src export-ignore 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | TAGS 2 | tags 3 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Joe Taylor, K1JT 2 | 3 | See also about.cpp or "Help->About WSJT-X" in the application for 4 | details of other contributions. 5 | -------------------------------------------------------------------------------- /AudioDevice.cpp: -------------------------------------------------------------------------------- 1 | #include "AudioDevice.hpp" 2 | 3 | bool AudioDevice::initialize (OpenMode mode, Channel channel) 4 | { 5 | m_channel = channel; 6 | 7 | // open and ensure we are unbuffered if possible 8 | return QIODevice::open (mode | QIODevice::Unbuffered); 9 | } 10 | 11 | -------------------------------------------------------------------------------- /BUGS: -------------------------------------------------------------------------------- 1 | 2 | __ __ ______ _____ ________ __ __ 3 | | \ _ | \ / \ | \| \ | \ | \ 4 | | $$ / \ | $$| $$$$$$\ \$$$$$ \$$$$$$$$ | $$ | $$ 5 | | $$/ $\| $$| $$___\$$ | $$ | $$ ______ \$$\/ $$ 6 | | $$ $$$\ $$ \$$ \ __ | $$ | $$| \ >$$ $$ 7 | | $$ $$\$$\$$ _\$$$$$$\| \ | $$ | $$ \$$$$$$/ $$$$\ 8 | | $$$$ \$$$$| \__| $$| $$__| $$ | $$ | $$ \$$\ 9 | | $$$ \$$$ \$$ $$ \$$ $$ | $$ | $$ | $$ 10 | \$$ \$$ \$$$$$$ \$$$$$$ \$$ \$$ \$$ 11 | 12 | 13 | 14 | There are some defects remaining in WSJT-X. 15 | -------------------------------------------------------------------------------- /CMake/VersionCompute.cmake: -------------------------------------------------------------------------------- 1 | # Load version number components. 2 | include (${CMAKE_SOURCE_DIR}/Versions.cmake) 3 | 4 | # Compute the full version string. 5 | set (WSJTX_VERSION_PATCH ${WSJTX_VERSION_SUB}) 6 | if (WSJTX_VERSION_32A) 7 | set (WSJTX_VERSION_PATCH ${WSJTX_VERSION_PATCH}-32A) 8 | set (BUILD_TYPE_REVISION ${BUILD_TYPE_REVISION}-32A) 9 | endif (WSJTX_VERSION_32A) 10 | 11 | if (WSJTX_RC AND NOT WSJTX_VERSION_IS_RELEASE) 12 | set (WSJTX_VERSION_PATCH ${WSJTX_VERSION_PATCH}-rc${WSJTX_RC}) 13 | set (BUILD_TYPE_REVISION ${BUILD_TYPE_REVISION}-rc${WSJTX_RC}) 14 | endif (WSJTX_RC AND NOT WSJTX_VERSION_IS_RELEASE) 15 | 16 | set (wsjtx_VERSION ${WSJTX_VERSION_MAJOR}.${WSJTX_VERSION_MINOR}.${WSJTX_VERSION_PATCH}) 17 | -------------------------------------------------------------------------------- /CMake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 2 | message (FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") 3 | endif () 4 | 5 | file (READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) 6 | string (REGEX REPLACE "\n" ";" files "${files}") 7 | foreach (file ${files}) 8 | message (STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") 9 | if (EXISTS "$ENV{DESTDIR}${file}") 10 | exec_program ( 11 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 12 | OUTPUT_VARIABLE rm_out 13 | RETURN_VALUE rm_retval 14 | ) 15 | if ("${rm_retval}" STREQUAL 0) 16 | else () 17 | message (FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") 18 | endif () 19 | else () 20 | message (STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") 21 | endif () 22 | endforeach () 23 | -------------------------------------------------------------------------------- /Darwin/Mac-jtdx-startup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | JTDX_BUNDLE="`echo "$0" | sed -e 's/\/Contents\/MacOS\/.*//'`" 3 | JTDX_RESOURCES="$JTDX_BUNDLE/Contents/Resources" 4 | JTDX_TEMP="/tmp/jtdx/$UID" 5 | 6 | echo "running $0" 7 | echo "JTDX_BUNDLE: $JTDX_BUNDLE" 8 | 9 | # Setup temporary runtime files 10 | rm -rf "$JTDX_TEMP" 11 | 12 | export "DYLD_LIBRARY_PATH=$JTDX_RESOURCES/lib" 13 | export "PATH=$JTDX_RESOURCES/bin:$PATH" 14 | 15 | #export 16 | exec "$JTDX_RESOURCES/bin/jtdx" 17 | -------------------------------------------------------------------------------- /Darwin/com.jtdx.sysctl.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Label 6 | com.jtdx.sysctl 7 | Program 8 | /usr/sbin/sysctl 9 | ProgramArguments 10 | 11 | /usr/sbin/sysctl 12 | kern.sysv.shmmax=14680064 13 | kern.sysv.shmall=17920 14 | 15 | RunAtLoad 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Darwin/jtdx_DMG.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/Darwin/jtdx_DMG.DS_Store -------------------------------------------------------------------------------- /Darwin/postflight.sh.in: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | "$2@CMAKE_INSTALL_SUBDIR@/@WSJTX_BUNDLE_NAME@.app/Contents/MacOS/@WSJTX_BUNDLE_NAME@" --mac-install 3 | exit 0 4 | -------------------------------------------------------------------------------- /Darwin/postupgrade.sh.in: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exit 0 3 | -------------------------------------------------------------------------------- /DisplayManual.hpp: -------------------------------------------------------------------------------- 1 | #ifndef DISPLAY_MANUAL_HPP__ 2 | #define DISPLAY_MANUAL_HPP__ 3 | 4 | #include 5 | 6 | #include "pimpl_h.hpp" 7 | 8 | class QNetworkAccessManager; 9 | class QDir; 10 | class QUrl; 11 | class QString; 12 | 13 | class DisplayManual 14 | : public QObject 15 | { 16 | public: 17 | DisplayManual (QNetworkAccessManager *, QObject * = nullptr); 18 | ~DisplayManual (); 19 | void display_html_url (QUrl const& url, QString const& name_we); 20 | void display_html_file (QDir const& dir, QString const& name_we); 21 | 22 | private: 23 | class impl; 24 | pimpl m_; 25 | }; 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /FrequencyDelegate.cpp: -------------------------------------------------------------------------------- 1 | #include "FrequencyDelegate.hpp" 2 | 3 | #include "FrequencyLineEdit.hpp" 4 | 5 | FrequencyDelegate::FrequencyDelegate (QObject * parent) 6 | : QStyledItemDelegate {parent} 7 | { 8 | } 9 | 10 | QWidget * FrequencyDelegate::createEditor (QWidget * parent, QStyleOptionViewItem const& 11 | , QModelIndex const&) const 12 | { 13 | auto * editor = new FrequencyLineEdit {parent}; 14 | editor->setFrame (false); 15 | return editor; 16 | } 17 | 18 | void FrequencyDelegate::setEditorData (QWidget * editor, QModelIndex const& index) const 19 | { 20 | static_cast (editor)->frequency (index.model ()->data (index, Qt::EditRole).value ()); 21 | } 22 | 23 | void FrequencyDelegate::setModelData (QWidget * editor, QAbstractItemModel * model, QModelIndex const& index) const 24 | { 25 | model->setData (index, static_cast (editor)->frequency (), Qt::EditRole); 26 | } 27 | 28 | -------------------------------------------------------------------------------- /FrequencyDelegate.hpp: -------------------------------------------------------------------------------- 1 | #ifndef FREQUENCY_DELEGATE_HPP_ 2 | #define FREQUENCY_DELEGATE_HPP_ 3 | 4 | #include 5 | 6 | // 7 | // Class FrequencyDelegate 8 | // 9 | // Item delegate for editing a frequency in Hertz but displayed in MHz 10 | // 11 | class FrequencyDelegate final 12 | : public QStyledItemDelegate 13 | { 14 | public: 15 | explicit FrequencyDelegate (QObject * parent = nullptr); 16 | QWidget * createEditor (QWidget * parent, QStyleOptionViewItem const&, QModelIndex const&) const override; 17 | void setEditorData (QWidget * editor, QModelIndex const&) const override; 18 | void setModelData (QWidget * editor, QAbstractItemModel *, QModelIndex const&) const override; 19 | }; 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /FrequencyDeltaDelegate.cpp: -------------------------------------------------------------------------------- 1 | #include "FrequencyDeltaDelegate.hpp" 2 | 3 | #include "FrequencyDeltaLineEdit.hpp" 4 | 5 | FrequencyDeltaDelegate::FrequencyDeltaDelegate (QObject * parent) 6 | : QStyledItemDelegate {parent} 7 | { 8 | } 9 | 10 | QWidget * FrequencyDeltaDelegate::createEditor (QWidget * parent, QStyleOptionViewItem const& 11 | , QModelIndex const&) const 12 | { 13 | auto * editor = new FrequencyDeltaLineEdit {parent}; 14 | editor->setFrame (false); 15 | return editor; 16 | } 17 | 18 | void FrequencyDeltaDelegate::setEditorData (QWidget * editor, QModelIndex const& index) const 19 | { 20 | static_cast (editor)->frequency_delta (index.model ()->data (index, Qt::EditRole).value ()); 21 | } 22 | 23 | void FrequencyDeltaDelegate::setModelData (QWidget * editor, QAbstractItemModel * model, QModelIndex const& index) const 24 | { 25 | model->setData (index, static_cast (editor)->frequency_delta (), Qt::EditRole); 26 | } 27 | -------------------------------------------------------------------------------- /FrequencyDeltaDelegate.hpp: -------------------------------------------------------------------------------- 1 | #ifndef FREQUENCY_DELTA_DELEGATE_HPP_ 2 | #define FREQUENCY_DELTA_DELEGATE_HPP_ 3 | 4 | #include 5 | 6 | // 7 | // Class FrequencyDeltaDelegate 8 | // 9 | // Item delegate for editing a frequency delta in Hertz but displayed in MHz 10 | // 11 | class FrequencyDeltaDelegate final 12 | : public QStyledItemDelegate 13 | { 14 | public: 15 | explicit FrequencyDeltaDelegate (QObject * parent = nullptr); 16 | QWidget * createEditor (QWidget * parent, QStyleOptionViewItem const&, QModelIndex const&) const override; 17 | void setEditorData (QWidget * editor, QModelIndex const&) const override; 18 | void setModelData (QWidget * editor, QAbstractItemModel *, QModelIndex const&) const override; 19 | }; 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /FrequencyDeltaLineEdit.hpp: -------------------------------------------------------------------------------- 1 | #ifndef FREQUENCY_DELTA_LINE_EDIT_HPP_ 2 | #define FREQUENCY_DELTA_LINE_EDIT_HPP_ 3 | 4 | #include 5 | 6 | #include "Radio.hpp" 7 | 8 | class QWidget; 9 | 10 | // 11 | // MHz frequency delta line edit with validation 12 | // 13 | class FrequencyDeltaLineEdit final 14 | : public QLineEdit 15 | { 16 | Q_OBJECT; 17 | Q_PROPERTY (FrequencyDelta frequency_delta READ frequency_delta WRITE frequency_delta USER true); 18 | 19 | public: 20 | using FrequencyDelta = Radio::FrequencyDelta; 21 | 22 | explicit FrequencyDeltaLineEdit (QWidget * parent = nullptr); 23 | 24 | // Property frequency_delta implementation 25 | FrequencyDelta frequency_delta () const; 26 | void frequency_delta (FrequencyDelta); 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /FrequencyLineEdit.hpp: -------------------------------------------------------------------------------- 1 | #ifndef FREQUENCY_LINE_EDIT_HPP_ 2 | #define FREQUENCY_LINE_EDIT_HPP_ 3 | 4 | #include 5 | 6 | #include "Radio.hpp" 7 | 8 | class QWidget; 9 | 10 | // 11 | // MHz frequency line edit with validation 12 | // 13 | class FrequencyLineEdit final 14 | : public QLineEdit 15 | { 16 | Q_OBJECT; 17 | Q_PROPERTY (Frequency frequency READ frequency WRITE frequency USER true); 18 | 19 | public: 20 | using Frequency = Radio::Frequency; 21 | 22 | explicit FrequencyLineEdit (QWidget * parent = nullptr); 23 | 24 | // Property frequency implementation 25 | Frequency frequency () const; 26 | void frequency (Frequency); 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /GetUserId.hpp: -------------------------------------------------------------------------------- 1 | #ifndef GETUSERID_HPP_ 2 | #define GETUSERID_HPP_ 3 | 4 | #include 5 | 6 | QString get_user_id (); 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /HelpTextWindow.cpp: -------------------------------------------------------------------------------- 1 | #include "HelpTextWindow.hpp" 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "JTDXMessageBox.hpp" 8 | #include "qt_helpers.hpp" 9 | //#include "moc_HelpTextWindow.cpp" 10 | 11 | HelpTextWindow::HelpTextWindow (QString const& title, QString const& text, QFont const& font, QWidget * parent) 12 | : QLabel {parent, Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint} 13 | { 14 | setText (text); 15 | setWindowTitle(QApplication::applicationName () + " - " + title); 16 | setMargin (10); 17 | setBackgroundRole (QPalette::Base); 18 | setAutoFillBackground (true); 19 | setStyleSheet (font_as_stylesheet (font)); 20 | setMinimumSize (sizeHint ()); 21 | } 22 | -------------------------------------------------------------------------------- /HelpTextWindow.hpp: -------------------------------------------------------------------------------- 1 | #ifndef HELP_TEXT_WINDOW_HPP__ 2 | #define HELP_TEXT_WINDOW_HPP__ 3 | 4 | #include 5 | #include 6 | 7 | class QString; 8 | 9 | class HelpTextWindow final 10 | : public QLabel 11 | { 12 | Q_OBJECT; 13 | public: 14 | HelpTextWindow (QString const& title, QString const& text, QFont const& = QFont {}, QWidget * parent = nullptr); 15 | }; 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /LettersSpinBox.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LETTERS_SPIN_BOX_HPP_ 2 | #define LETTERS_SPIN_BOX_HPP_ 3 | 4 | #include 5 | 6 | class QString; 7 | 8 | // 9 | // LettersSpinBox - select from consecutive letters 10 | // 11 | class LettersSpinBox final 12 | : public QSpinBox 13 | { 14 | Q_OBJECT; 15 | Q_PROPERTY (bool lowercase MEMBER lowercase_) 16 | 17 | public: 18 | LettersSpinBox (QWidget * parent = nullptr) 19 | : QSpinBox {parent} 20 | , lowercase_ {false} 21 | { 22 | } 23 | 24 | QString textFromValue (int) const override; 25 | // int valueFromText (QString const&) const override; 26 | 27 | private: 28 | bool lowercase_; 29 | }; 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /MetaDataRegistry.hpp: -------------------------------------------------------------------------------- 1 | #ifndef META_DATA_REGISTRY_HPP__ 2 | #define META_DATA_REGISTRY_HPP__ 3 | 4 | class QItemEditorFactory; 5 | 6 | QItemEditorFactory * item_editor_factory (); 7 | void register_types (); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /Palettes/Banana.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 59; 59; 27 3 | 119;119; 59 4 | 179;179; 91 5 | 227;227;123 6 | 235;235;151 7 | 239;239;183 8 | 247;247;219 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Blue1.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 2 2 | 0; 0; 64 3 | 7; 11;128 4 | 39; 47;192 5 | 95;115;217 6 | 151;179;231 7 | 187;203;239 8 | 219;227;247 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Blue2.pal: -------------------------------------------------------------------------------- 1 | 3; 3; 64 2 | 7; 11;128 3 | 39; 47;192 4 | 95;115;217 5 | 151;179;231 6 | 187;203;239 7 | 219;227;247 8 | 255;255;255 9 | 255;253;108 10 | -------------------------------------------------------------------------------- /Palettes/Blue3.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 31; 31; 31 3 | 63; 63; 63 4 | 91; 91;167 5 | 119;119;191 6 | 155;155;219 7 | 191;191;191 8 | 223;223;223 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Brown.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 107; 63; 11 3 | 175; 95; 31 4 | 199;119; 43 5 | 215;163; 63 6 | 231;211; 87 7 | 243;247;111 8 | 247;251;179 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Cyan1.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 5; 10; 10 3 | 22; 42; 42 4 | 52; 99; 99 5 | 94;175;175 6 | 131;209;209 7 | 162;224;224 8 | 202;239;239 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Cyan2.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 35; 51; 51 3 | 75;103;103 4 | 115;159;159 5 | 155;211;211 6 | 183;231;231 7 | 203;239;239 8 | 227;247;247 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Cyan3.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 94;114;114 3 | 138;162;162 4 | 171;201;201 5 | 199;232;232 6 | 216;243;243 7 | 228;247;247 8 | 241;251;251 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Default.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 6;136 3 | 0; 19;198 4 | 0; 32;239 5 | 172;167;105 6 | 194;198; 49 7 | 225;228;107 8 | 255;255; 0 9 | 255; 51; 0 10 | -------------------------------------------------------------------------------- /Palettes/Default16.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 20;110 3 | 0; 42;160 4 | 0; 30;210 5 | 0;100;255 6 | 100;167;200 7 | 172;185;140 8 | 190;198;100 9 | 225;225; 49 10 | 235;235; 0 11 | 255;255; 0 12 | 255;236; 0 13 | 255;200; 0 14 | 255;155; 0 15 | 255;100; 0 16 | 255; 0; 0 17 | -------------------------------------------------------------------------------- /Palettes/Digipan.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 0; 64 3 | 0; 0;128 4 | 0; 0;217 5 | 150;147; 92 6 | 183;186; 46 7 | 225;228;107 8 | 255;255; 0 9 | 255; 51; 0 10 | -------------------------------------------------------------------------------- /Palettes/Fldigi.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 0;177 3 | 3;110;227 4 | 0;204;204 5 | 223;223;223 6 | 0;234; 0 7 | 244;244; 0 8 | 250;126; 0 9 | 244; 0; 0 10 | -------------------------------------------------------------------------------- /Palettes/Gmfsk.pal: -------------------------------------------------------------------------------- 1 | 0; 0;255 2 | 0; 62;194 3 | 0;126;130 4 | 0;190; 66 5 | 0;254; 2 6 | 62;194; 0 7 | 126;130; 0 8 | 190; 66; 0 9 | 254; 2; 0 10 | -------------------------------------------------------------------------------- /Palettes/Gray1.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 69; 69; 69 3 | 99; 99; 99 4 | 121;121;121 5 | 140;140;140 6 | 157;157;157 7 | 172;172;172 8 | 186;186;186 9 | 199;199;199 10 | -------------------------------------------------------------------------------- /Palettes/Gray2.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 88; 88; 88 3 | 126;126;126 4 | 155;155;155 5 | 179;179;179 6 | 200;200;200 7 | 220;220;220 8 | 237;237;237 9 | 254;254;254 10 | -------------------------------------------------------------------------------- /Palettes/Green1.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 32; 0 3 | 0; 64; 0 4 | 0; 96; 0 5 | 0;128; 0 6 | 0;160; 0 7 | 0;192; 0 8 | 0;224; 0 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Green2.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 60; 0 3 | 0;102; 0 4 | 0;151; 0 5 | 0;242; 0 6 | 255;255; 89 7 | 240;120; 0 8 | 255;148; 40 9 | 255; 0; 0 10 | -------------------------------------------------------------------------------- /Palettes/Jungle.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 107; 67; 0 3 | 223;143; 0 4 | 255;123; 27 5 | 255; 91; 71 6 | 255;195; 95 7 | 195;255;111 8 | 151;255;151 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Linrad.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 0; 87 3 | 0; 79;114 4 | 0;141; 61 5 | 96;158; 0 6 | 204;124; 0 7 | 253; 50; 17 8 | 255;138;138 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Negative.pal: -------------------------------------------------------------------------------- 1 | 255;255;255 2 | 223;223;223 3 | 191;191;191 4 | 159;159;159 5 | 127;127;127 6 | 95; 95; 95 7 | 63; 63; 63 8 | 31; 31; 31 9 | 0; 0; 0 10 | -------------------------------------------------------------------------------- /Palettes/Orange.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 63; 27; 0 3 | 131; 63; 0 4 | 199; 95; 0 5 | 251;127; 11 6 | 251;155; 71 7 | 251;187;131 8 | 251;219;191 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Pink.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 63; 35; 35 3 | 135; 75; 75 4 | 203;111;111 5 | 255;147;147 6 | 255;175;175 7 | 255;199;199 8 | 255;227;227 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Rainbow.pal: -------------------------------------------------------------------------------- 1 | 0; 0;163 2 | 0; 87;191 3 | 0;207;219 4 | 0;247;139 5 | 0;255; 23 6 | 95;255; 0 7 | 219;255; 0 8 | 255;171;155 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/Scope.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 0;167 3 | 0; 79;255 4 | 0;239;255 5 | 0;255; 75 6 | 95;255; 0 7 | 255;255; 0 8 | 255;127; 0 9 | 255; 0; 0 10 | -------------------------------------------------------------------------------- /Palettes/Sunburst.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 0; 59 3 | 0; 0;123 4 | 131; 0;179 5 | 235; 0; 75 6 | 255; 43; 43 7 | 255;215;111 8 | 255;255;183 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/VK4BDJ.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 32; 0 3 | 0;154; 0 4 | 0;161; 0 5 | 0;177; 0 6 | 156;209;144 7 | 192;185;183 8 | 214;222;224 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/YL2KF.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 0;119 3 | 7; 11;195 4 | 39; 47;159 5 | 95;115;203 6 | 151;179;255 7 | 187;203;255 8 | 219;227;255 9 | 255;255; 5 10 | -------------------------------------------------------------------------------- /Palettes/Yellow1.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 31; 31; 0 3 | 63; 63; 0 4 | 95; 95; 0 5 | 127;127; 0 6 | 159;159; 0 7 | 191;191; 0 8 | 223;223; 0 9 | 255;255; 0 10 | -------------------------------------------------------------------------------- /Palettes/Yellow2.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 39; 39; 0 3 | 75; 75; 0 4 | 111;111; 0 5 | 147;147; 0 6 | 183;183; 0 7 | 219;219; 0 8 | 255;255; 0 9 | 255;255;255 10 | -------------------------------------------------------------------------------- /Palettes/ZL1FZ.pal: -------------------------------------------------------------------------------- 1 | 0; 0; 0 2 | 0; 0; 0 3 | 0; 0; 0 4 | 0; 0; 0 5 | 0;255; 0 6 | 255;255; 0 7 | 255;255; 0 8 | 255;255; 0 9 | 255; 0; 0 10 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | 2 | Copyright (C) 2001-2020 by Joe Taylor, K1JT. 3 | Copyright (C) 2016-2020 by Igor Chernikov UA3DJY and Arvo Järve ES1JA. 4 | 5 | JTDX is forked from WSJT-X, a computer program dedicated to amateur 6 | radio communication using very weak signals. 7 | 8 | The program runs equally well on Windows, Macintosh and Linux systems, 9 | and installation packages are available for all three platforms. 10 | 11 | JTDX is an open-source project released under the GPL license (See 12 | COPYING). If you have programming or documentation skills or would 13 | like to contribute to the project in other ways, please make your 14 | interests known to the development team. 15 | 16 | 17 | Project Web site: 18 | 19 | http://www.jtdx.tech 20 | 21 | Project mailing list: 22 | 23 | https://jtdx.groups.io/g/main 24 | -------------------------------------------------------------------------------- /SampleDownloader/DirectoryDelegate.hpp: -------------------------------------------------------------------------------- 1 | #ifndef DIRECTORY_DELEGATE_HPP__ 2 | #define DIRECTORY_DELEGATE_HPP__ 3 | 4 | #include 5 | 6 | class QObject; 7 | class QStyleOptionVoew; 8 | class QModelIndex; 9 | class QPainter; 10 | 11 | // 12 | // Styled item delegate that renders a progress bar in column #1 13 | // 14 | // model column #1 DisplayRole is the progress in bytes 15 | // model column #1 UserRole is the expected number of bytes 16 | // 17 | class DirectoryDelegate final 18 | : public QStyledItemDelegate 19 | { 20 | public: 21 | explicit DirectoryDelegate (QObject * parent = nullptr) 22 | : QStyledItemDelegate {parent} 23 | { 24 | } 25 | 26 | void paint (QPainter * painter, QStyleOptionViewItem const& option 27 | , QModelIndex const& index) const override; 28 | }; 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /SampleDownloader/README: -------------------------------------------------------------------------------- 1 | A UI for downloading sample files from a web server. 2 | 3 | Works in concert with samples/CMakeLists.txt which generates the JSON 4 | contents description file and has a build target upload-samples that 5 | uploads the samples and content file to the project files server. 6 | -------------------------------------------------------------------------------- /SettingsGroup.hpp: -------------------------------------------------------------------------------- 1 | #ifndef SETTINGS_GROUP_HPP_ 2 | #define SETTINGS_GROUP_HPP_ 3 | 4 | #include 5 | #include 6 | 7 | // 8 | // Class SettingsGroup 9 | // 10 | // Simple RAII type class to apply a QSettings group witin a 11 | // scope. 12 | // 13 | class SettingsGroup 14 | { 15 | public: 16 | SettingsGroup (QSettings * settings, QString const& group) 17 | : settings_ {settings} 18 | { 19 | settings_->beginGroup (group); 20 | } 21 | 22 | SettingsGroup (SettingsGroup const&) = delete; 23 | SettingsGroup& operator = (SettingsGroup const&) = delete; 24 | 25 | ~SettingsGroup () 26 | { 27 | settings_->endGroup (); 28 | } 29 | 30 | private: 31 | QSettings * settings_; 32 | }; 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /TraceFile.hpp: -------------------------------------------------------------------------------- 1 | #ifndef TRACE_FILE_HPP_ 2 | #define TRACE_FILE_HPP_ 3 | 4 | #include "pimpl_h.hpp" 5 | 6 | class QString; 7 | 8 | class TraceFile final 9 | { 10 | public: 11 | explicit TraceFile (QString const& TraceFile_file_path); 12 | ~TraceFile (); 13 | 14 | // copying not allowed 15 | TraceFile (TraceFile const&) = delete; 16 | TraceFile& operator = (TraceFile const&) = delete; 17 | 18 | private: 19 | class impl; 20 | pimpl m_; 21 | }; 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Versions.cmake: -------------------------------------------------------------------------------- 1 | # Version number components 2 | set (WSJTX_VERSION_MAJOR 2) 3 | set (WSJTX_VERSION_MINOR 2) 4 | set (WSJTX_VERSION_32A 0) 5 | set (WSJTX_VERSION_SUB 159) 6 | set (WSJTX_RC 0) # release candidate number, comment out or zero for development versions 7 | set (WSJTX_VERSION_IS_RELEASE 1) # set to 1 for final release build 8 | -------------------------------------------------------------------------------- /WsprTxScheduler.h: -------------------------------------------------------------------------------- 1 | #ifndef WSPR_TX_SCHEDULER_H_ 2 | #define WSPR_TX_SCHEDULER_H_ 3 | 4 | int next_tx_state (int pctx); 5 | int next_hopping_band(); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /about.h: -------------------------------------------------------------------------------- 1 | // -*- Mode: C++ -*- 2 | #ifndef ABOUTDLG_H 3 | #define ABOUTDLG_H 4 | 5 | #include 6 | #include 7 | 8 | namespace Ui { 9 | class CAboutDlg; 10 | } 11 | 12 | class CAboutDlg : public QDialog 13 | { 14 | Q_OBJECT; 15 | 16 | public: 17 | explicit CAboutDlg(QWidget *parent = nullptr); 18 | ~CAboutDlg (); 19 | 20 | private: 21 | QScopedPointer ui; 22 | }; 23 | 24 | #endif // ABOUTDLG_H 25 | -------------------------------------------------------------------------------- /contrib/Commander TCPIP Mesages.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/Commander TCPIP Mesages.pdf -------------------------------------------------------------------------------- /contrib/Ephemeris/JPLEPH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/Ephemeris/JPLEPH -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### Describe Your Environment 4 | 5 | [Versions from your environment] 6 | 7 | - QDarkStyle: 8 | - OS: 9 | - Python: 10 | 11 | [If used, please inform their versions] 12 | 13 | - PySide: 14 | - PyQt: 15 | - PyQtGraph: 16 | - QtPy: 17 | - QT_API: 18 | - PYQTGRAPH_QT_LIB: 19 | 20 | ### Language 21 | 22 | [Python] or [C++] 23 | 24 | ### Description / Steps to Reproduce [if necessary] 25 | 26 | [Description of the issue] 27 | 28 | 1. [First Step] 29 | 2. [Second Step] 30 | 3. [and so on...] 31 | 32 | ### Actual Result 33 | 34 | [A description, output ou image of the actual result] 35 | 36 | ### Expected Results / Proposed Result 37 | 38 | [A description, output ou image of the expected/proposed result] 39 | 40 | ### Relevant Code [if necessary] 41 | 42 | [A piece of code to reproduce and/or fix this issue] 43 | 44 | ``` 45 | # code here to reproduce the problem 46 | ``` -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | 3 | dist/ 4 | build/ 5 | docs/ 6 | 7 | *.egg-info/ 8 | __pycache__ 9 | 10 | *.tar 11 | *.tar.* 12 | *.log 13 | *.log.* 14 | *.sig 15 | 16 | pkg/ 17 | src/ 18 | 19 | # stdeb files 20 | *.tar.gz 21 | deb_dist 22 | /gpg_key 23 | 24 | # gedit temp files 25 | *~ 26 | 27 | # hackedit project files 28 | .hackedit 29 | 30 | # vs code project files 31 | .vscode 32 | .mypy_cache 33 | .cache 34 | .env 35 | ./.idea 36 | /.idea/ 37 | .tox 38 | -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/.travis.yml: -------------------------------------------------------------------------------- 1 | anguage: python 2 | matrix: 3 | include: 4 | - python: 2.7 5 | env: TOXENV=py27 6 | - python: 3.4 7 | env: TOXENV=py34 8 | - python: 3.6 9 | env: TOXENV=py36 10 | install: 11 | - pip install tox 12 | script: 13 | - tox 14 | - "export DISPLAY=:99.0" 15 | - "sh -e /etc/init.d/xvfb start" 16 | before_script: 17 | - cd example 18 | script: 19 | - python example.py --qt_from=pyqt --test 20 | - python example.py --qt_from=pyside --test 21 | 22 | - python example.py --qt_from=pyqt --no_dark --test 23 | - python example.py --qt_from=pyside --no_dark --test -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/AUTHORS.md: -------------------------------------------------------------------------------- 1 | # Authors 2 | 3 | ## Mainteiner(s) 4 | 5 | These people were/are mainteiners of this project. 6 | 7 | - 2013-2018 8 | [Colin Duquesnoy](https://github.com/ColinDuquesnoy) - 9 | - 10 | original author. 11 | - 2018 12 | [Daniel Pizetta](https://github.com/dpizetta) - 13 | - 14 | improvements and bug fixes. 15 | 16 | ## Contributor(s) 17 | 18 | These people contribute to bug fixes, improvements and so on. 19 | Please, insert your information after the last one. 20 | 21 | - Year - Name - `` - contribution. 22 | - 2018 - [mowoolli](https://github.com/mowoolli) - bug fixes. 23 | - 2018 - Xingyun Wu - `xingyun.wu@foxmail.com` - bug fixes. 24 | - 2018 - [KcHNST](https://github.com/KcHNST) - bug fixes. 25 | 26 | Thank you all! 27 | -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # 2 | # MANIFEST.in 3 | # 4 | # Manifest template for creating the PyLudic source distribution. 5 | 6 | include MANIFEST.in 7 | include setup.py 8 | include AUTHORS.md 9 | include CHANGES.md 10 | include CONTRIBUTING.md 11 | include LICENSE.md 12 | include PRODUCTION.md 13 | include README.md 14 | include qdarkstyle/style.qss 15 | include qdarkstyle/style.qrc 16 | include qdarkstyle/rc/*.png 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/example/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | This package contains the qt designer files and ui scripts. 4 | """ -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/palette.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/Hmovetoolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/Hmovetoolbar.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/Hsepartoolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/Hsepartoolbar.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/Vmovetoolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/Vmovetoolbar.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/Vsepartoolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/Vsepartoolbar.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/branch_closed-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/branch_closed-on.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/branch_closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/branch_closed.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/branch_open-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/branch_open-on.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/branch_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/branch_open.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_checked.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_checked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_checked_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_checked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_checked_focus.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_indeterminate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_indeterminate.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_indeterminate_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_indeterminate_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_indeterminate_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_indeterminate_focus.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_unchecked.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_unchecked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_unchecked_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_unchecked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/checkbox_unchecked_focus.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/close-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/close-hover.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/close-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/close-pressed.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/close.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/down_arrow.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/down_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/down_arrow_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/left_arrow.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/left_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/left_arrow_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/radio_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/radio_checked.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/radio_checked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/radio_checked_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/radio_checked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/radio_checked_focus.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/radio_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/radio_unchecked.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/radio_unchecked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/radio_unchecked_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/radio_unchecked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/radio_unchecked_focus.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/right_arrow.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/right_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/right_arrow_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/sizegrip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/sizegrip.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/stylesheet-branch-end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/stylesheet-branch-end.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/stylesheet-branch-more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/stylesheet-branch-more.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/stylesheet-vline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/stylesheet-vline.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/transparent.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/undock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/undock.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/up_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/up_arrow.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/qdarkstyle/rc/up_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/qdarkstyle/rc/up_arrow_disabled.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/cmd.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/no_dark_containers_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/no_dark_containers_buttons.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/no_dark_containers_tabs_displays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/no_dark_containers_tabs_displays.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/no_dark_views_inputs_no_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/no_dark_views_inputs_no_fields.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/no_dark_widgets_inputs_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/no_dark_widgets_inputs_fields.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/qdarkstyle_containers_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/qdarkstyle_containers_buttons.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/qdarkstyle_containers_tabs_displays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/qdarkstyle_containers_tabs_displays.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/qdarkstyle_views_inputs_no_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/qdarkstyle_views_inputs_no_fields.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/screenshots/qdarkstyle_widgets_inputs_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/screenshots/qdarkstyle_widgets_inputs_fields.png -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/script/get_info.py: -------------------------------------------------------------------------------- 1 | 2 | # -*- coding: utf-8 -*- 3 | """Script to get system information. 4 | """ 5 | 6 | from __future__ import absolute_import, print_function 7 | 8 | import os 9 | import sys 10 | import qdarkstyle 11 | 12 | def get_info(): 13 | """Process UI files.""" 14 | info = [] 15 | info.append('QDarkStyle: ', qdarkstyle.__version__) 16 | info.append('OS: ', sys.platform) 17 | info.append('Python: ', sys.version) 18 | info.append('QT_API: ', os.getenv['QT_API']) 19 | info.append('PYQTGRAPH_QT_LIB: ', os.getenv['PYQTGRAPH_QT_LIB']) 20 | for item in info: 21 | print(item) 22 | 23 | if __name__ == '__main__': 24 | sys.exit(main(sys.argv[1:])) 25 | -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/script/process_pypi.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/QDarkStyleSheet/script/process_pypi.py -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | universal = 1 3 | 4 | [metadata] 5 | description-file = README.md 6 | -------------------------------------------------------------------------------- /contrib/QDarkStyleSheet/stdeb.cfg: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | Copyright-File: LICENSE 3 | -------------------------------------------------------------------------------- /contrib/decpasses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/decpasses.png -------------------------------------------------------------------------------- /contrib/dtrange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/contrib/dtrange.png -------------------------------------------------------------------------------- /debian/changelog.Debian.in: -------------------------------------------------------------------------------- 1 | @CMAKE_PROJECT_NAME@ (@wsjtx_VERSION@) experimental; urgency=low 2 | 3 | * wsjtx Debian maintainer and upstream author are identical. 4 | Therefore see also normal changelog file for Debian changes. 5 | 6 | -- @PROJECT_CONTACT@ @ts@ 7 | -------------------------------------------------------------------------------- /debian/copyright.in: -------------------------------------------------------------------------------- 1 | Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat 2 | Upstream-Name: @CMAKE_PROJECT_NAME@ 3 | Upstream-Maintainer: @PROJECT_CONTACT@ 4 | Upstream-Source: @PROJECT_HOMEPAGE@ 5 | 6 | Files: * 7 | Copyright: @PROJECT_COPYRIGHT@. 8 | License: GPL v3 9 | The full text of the GPL is distributed in 10 | /usr/share/common-licenses/GPL-3 on Debian systems. 11 | -------------------------------------------------------------------------------- /doc/README: -------------------------------------------------------------------------------- 1 | This folder contains the sources of WSJT-X documentation. To build 2 | these you will need the asciidoctor tool installed. 3 | 4 | If you do not wish to build the documentation, it is possible to skip 5 | this directory in the WSJT-X build by setting the CMake option 6 | WSJT_GENERATE_DOCS to OFF in your build tree. 7 | 8 | 9 | On Linux 10 | ======== 11 | 12 | You will probably have these installed already if you are building the 13 | WSJT-X manpages, if you are not you will just need to install 14 | asciidoc: 15 | 16 | sudo apt-get install asciidoctor 17 | 18 | or 19 | 20 | sudo yum install asciidoctor 21 | 22 | or whatever your distribution and package management requires. 23 | 24 | 25 | On Mac OS X 26 | =========== 27 | 28 | I recommend MacPorts: 29 | 30 | sudo port install rb-rubygems 31 | sudo gem install asciidoctor 32 | 33 | 34 | On Windows 35 | ========== 36 | 37 | The asciidoctor tool is a Ruby script so you will need to install a 38 | version of Ruby. The gem tool is a good way to install asciidoctor: 39 | 40 | gem install asciidoctor 41 | -------------------------------------------------------------------------------- /doc/common/communication.adoc: -------------------------------------------------------------------------------- 1 | The following are established communication channels for the WSJT Group. 2 | For updates and other information on the continuing development of _WSJT_, 3 | _MAP65_, _WSPR_, _WSPR-X_, and _WSJT-X_ you are invited to subscribe to the 4 | {dev_mail_list}. 5 | 6 | .General Information 7 | * Main Site: {homepage} 8 | * Development Site: {projsummary} 9 | 10 | .Development Related 11 | * Project Manager, email: {joe_taylor} 12 | * Development Email: {devmail1} 13 | * Development Mailing List (join): {dev_mail_list} 14 | * Repository Updates, (join): {dev_mail_svn} 15 | 16 | .Community Related 17 | * Discussion Board: {wsjt_yahoo_group} -------------------------------------------------------------------------------- /doc/common/license.adoc: -------------------------------------------------------------------------------- 1 | include::./links.adoc[] 2 | _{prog}_ is free software: you may redistribute and/or modify it 3 | under the terms of the GNU General Public License as published by 4 | the Free Software Foundation, either version 3 of the License, or 5 | (at your option) any later version. 6 | 7 | _{prog}_ is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this documentation. If not, see {gnu_gpl}. 14 | 15 | Copyright (C) 2001-2015 Joseph H Taylor, Jr., K1JT. 16 | -------------------------------------------------------------------------------- /doc/user_guide/en/compiling.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | // Note to developers. The URL http://developer.berlios.de/projects/wsjt/. is 3 | // to a very old src version of WSJT 5.7 or so. WSJTX is not listed at all. 4 | // Also, all the Qt4 stuff is now obsolete, and needs to be updated. 5 | 6 | // Web Links 7 | // Source File is: dev-guide/source/wsjtx-dev/wsjtx-dev.adoc 8 | // At some point, compiling_wsjtx_linux.html needs a name change to: wsjtx-dev.html 9 | // These files can only be built on Linux, due to source-highlight being removed 10 | // From the windows build batch file. 11 | :dev-guide: http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjt-dev-guide.html[WSJT Developers Guide] 12 | 13 | // mail-to links 14 | 15 | A Developer's Guide for WSJT and its sister programs is itself under 16 | development. The present draft contains full instructions for 17 | compiling _WSJT-X_ in Linux, and an outline of steps required in 18 | Windows. 19 | 20 | {dev-guide} 21 | -------------------------------------------------------------------------------- /doc/user_guide/en/config-details.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | [[CONFIG_DETAILS]] 3 | 4 | Are we here? 5 | -------------------------------------------------------------------------------- /doc/user_guide/en/controls-functions-status-bar.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | 3 | A *Status Bar* at the bottom edge of the main window provides 4 | information about operating conditions. 5 | 6 | //.Status Bar 7 | image::status-bar-a.png[align="left",alt="Status Bar"] 8 | 9 | Labels on the *Status Bar* display such information as the program's 10 | current operating state, operating mode, the content of your most 11 | recent transmitted message, and whether *Double-click on call sets Tx 12 | enable* has been selected on the *Settings | General* tab. The first 13 | label (operating state) can be Receiving, Tx (for Transmitting), Tune, 14 | or the name of file opened from the *File* menu; this label is 15 | highlighted in green for Receiving, yellow for Tx, and red for Tune. 16 | When transmitting, the Tx message is displayed exactly as it will be 17 | decoded by receiving stations. 18 | -------------------------------------------------------------------------------- /doc/user_guide/en/docinfo.html: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /doc/user_guide/en/docinfo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/docinfo.xml -------------------------------------------------------------------------------- /doc/user_guide/en/font-sizes.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | 3 | - You can control the program's font sizes by using a text editor 4 | (e.g., Windows Notepad or similar) to create a one-line file named 5 | +fonts.txt+ in the _WSJT-X_ installation directory. Enter a single 6 | line of text with four numbers separated by spaces. The first two 7 | numbers control the font size (in points) and weight (on a 0 – 100 8 | scale) of most labels on the user interface. The last two numbers 9 | control size and weight of text in the *Band Activity* and *Rx 10 | Frequency* windows. 11 | 12 | - By default the four numbers are "`8 50 10 50`". If you need larger 13 | fonts in the user interface and bold text in the decode windows, try 14 | something like "`10 50 12 100`" (without the quotes). 15 | 16 | -------------------------------------------------------------------------------- /doc/user_guide/en/images/130610_2343-wav-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/130610_2343-wav-80.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/Add_station_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/Add_station_info.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/Astronomical_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/Astronomical_data.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/MacAppMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/MacAppMenu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/RadioTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/RadioTab.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/VHF_controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/VHF_controls.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/WSPR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/WSPR.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/band-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/band-settings.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/band_hopping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/band_hopping.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/colors.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/decode-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/decode-menu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/decodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/decodes.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/decoding_depth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/decoding_depth.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/echo_144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/echo_144.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/file-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/file-menu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/freemsg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/freemsg.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/help-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/help-menu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/jtalert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/jtalert.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/keyboard-shortcuts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/keyboard-shortcuts.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/log-qso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/log-qso.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/main-ui-1.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/main-ui-1.5.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/main-ui-1.6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/main-ui-1.6.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/main-ui-controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/main-ui-controls.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/misc-controls-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/misc-controls-center.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/misc-main-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/misc-main-ui.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/mode-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/mode-menu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/new-msg-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/new-msg-box.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/open_sample_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/open_sample_file.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/psk-reporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/psk-reporter.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/r3666-config-screen-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/r3666-config-screen-80.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/r3666-main-ui-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/r3666-main-ui-80.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/r4148-txmac-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/r4148-txmac-ui.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/reporting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/reporting.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/save-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/save-menu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/settings-audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/settings-audio.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/settings-frequencies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/settings-frequencies.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/settings-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/settings-general.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/setup-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/setup-menu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/special-mouse-commands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/special-mouse-commands.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/status-bar-a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/status-bar-a.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/traditional-msg-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/traditional-msg-box.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/tx-macros.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/tx-macros.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/view-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/view-menu.png -------------------------------------------------------------------------------- /doc/user_guide/en/images/wide-graph-controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/doc/user_guide/en/images/wide-graph-controls.png -------------------------------------------------------------------------------- /doc/user_guide/en/install-from-source.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | 3 | Source code for _WSJT-X_ is available from a public repository at 4 | {devsvn}. To compile the program you will need to install at least the 5 | following packages: 6 | 7 | - Subversion 1.8 or later 8 | - Qt 5.2 or later 9 | - g++ 4.8 or later 10 | - gfortran 4.8 or later 11 | - fftw3 12 | - MinGW (for Windows only) 13 | 14 | Source code for _WSJT-X_ v{VERSION} can be downloaded with the command: 15 | 16 | ===== 17 | svn co svn://svn.code.sf.net/p/wsjt/wsjt/tags/wsjtx-{VERSION} 18 | ===== 19 | 20 | and for the current development branch, 21 | 22 | ===== 23 | svn co svn://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx 24 | ===== 25 | 26 | If you are interested in contributing to the development and 27 | documentation of _WSJT_ and its sister programs, please join the 28 | developer's email list {devmail} and let us know of your areas of 29 | interest. 30 | -------------------------------------------------------------------------------- /doc/user_guide/en/install-mac.adoc: -------------------------------------------------------------------------------- 1 | // These instructions are up-to-date for WSJT-X v1.4 2 | 3 | *OS X 10.7* and later: Download the file {osx} to your desktop, 4 | double-click on it and consult its +ReadMe+ file for important 5 | installation notes. 6 | 7 | If you have already installed a previous version, you can retain it by 8 | changing its name in the *Applications* folder (say, from _WSJT-X_ to 9 | _WSJT-X_1.5_). You can then proceed to the installation phase. 10 | 11 | Take note also of the following: 12 | 13 | * Use the Mac's *Audio MIDI Setup* utility to configure your sound 14 | card for 48000 Hz, two-channel, 16-bit format. 15 | 16 | * Use *System Preferences* to select an external time source to keep 17 | your system clock synchronized to UTC. 18 | 19 | * To uninstall simply drag the _WSJT-X_ application from *Applications* 20 | to the *Trash Can*. 21 | -------------------------------------------------------------------------------- /doc/user_guide/en/settings-colors.adoc: -------------------------------------------------------------------------------- 1 | image::colors.png[align="center",alt="Colors Screen"] 2 | 3 | _WSJT-X_ uses colors to highlight decoded messages containing 4 | information of particular interest. Click on one of the buttons to 5 | select your preferred colors for any message category. 6 | -------------------------------------------------------------------------------- /doc/user_guide/en/settings-general.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | [[FIG_CONFIG_STATION]] 3 | image::settings-general.png[align="center",alt="Settings Window"] 4 | 5 | Select the *General* tab on the *Settings* window. Under _Station 6 | Details_, enter your call sign and 4-digit or 6-digit grid locator. 7 | This information will be sufficient for initial tests. 8 | 9 | Meanings of remaining options on the *General* tab should be 10 | self-explanatory after you have made some QSOs using _WSJT-X_. You 11 | may return to set these options to your preferences later. 12 | 13 | IMPORTANT: If you are using a callsign with an add-on prefix or 14 | suffix, or wish to work a station using such a call, be sure to read 15 | the section <>. 16 | -------------------------------------------------------------------------------- /doc/user_guide/en/settings-reporting.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | [[FIG_CONFIG_RPT]] 3 | image::reporting.png[align="center",alt="Reporting Screen"] 4 | 5 | - _Logging_: Choose any desired options from this group. 6 | 7 | - _Network Services_: Check *Enable PSK Reporter Spotting* to send 8 | reception reports to the {pskreporter} mapping facility. 9 | 10 | - _UDP Server_: This group of options controls the network name or 11 | address and port number used by a program that will receive status 12 | updates from _WSJT-X_. Cooperating applications like _JTAlert_ use 13 | this feature to obtain information about a running _WSJT-X_ instance. 14 | -------------------------------------------------------------------------------- /doc/user_guide/en/settings-txmacros.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | 3 | [[FigTxMacros]] 4 | image::tx-macros.png[align="center",alt="Tx Macros Screen"] 5 | 6 | *Tx Macros* are an aid for sending brief, frequently used free-text 7 | messages such as the examples shown above. 8 | 9 | - To add a new message to the list, enter the desired text (up to 13 10 | characters) in the entry field at top, then click *Add*. 11 | 12 | - To remove an unwanted message, click on the message and then on 13 | *Delete*. 14 | 15 | - You can reorder your macro messages by using drag-and-drop. The 16 | new order will be preserved when _WSJT-X_ is restarted. 17 | -------------------------------------------------------------------------------- /doc/user_guide/en/system-requirements.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | 3 | - SSB transceiver and antenna 4 | - Computer running Windows (XP or later), Linux, or OS X 5 | - 1.5 GHz or faster CPU and 200 MB of available memory 6 | - Monitor with at least 1024 x 780 resolution 7 | - Computer-to-radio interface using a serial port or equivalent USB 8 | device for T/R switching, or CAT control, or VOX, as required for 9 | your radio-to-computer connections 10 | - Audio input and output devices supported by the operating system and 11 | configured for sample rate 48000 Hz. 12 | - Audio or equivalent USB connections between transceiver and computer 13 | - A means for synchronizing the computer clock to UTC within ±1 second 14 | -------------------------------------------------------------------------------- /doc/user_guide/en/tutorial-main-window.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | 3 | - Click the *Stop* button on the main window to halt any data acquisition. 4 | 5 | - Select *JT9* from the *Mode* menu and *Deep* from the *Decode* menu. 6 | 7 | - Set the audio frequencies to *Tx 1224 Hz* and *Rx 1224 Hz*. 8 | 9 | IMPORTANT: Sliders and spinner controls respond to *Arrow* key presses 10 | and *Page Up/Down* key presses, with the *Page* keys moving the 11 | controls in larger steps. You can also type numbers directly into 12 | the spinner controls. 13 | 14 | - Select *Tab 2* (below the *Decode* button) to choose the alternative 15 | set of controls for generating and selecting Tx messages. 16 | 17 | -------------------------------------------------------------------------------- /doc/user_guide/en/tutorial-wide-graph-settings.adoc: -------------------------------------------------------------------------------- 1 | // Status=review 2 | 3 | - *Bins/Pixel* = 4 4 | - *JT65 .... JT9* = 2500 5 | - *Start* = 200 Hz 6 | - *N Avg* = 5 7 | - *Palette* = Digipan 8 | - *Flatten* = checked 9 | - Select *Cumulative* for data display 10 | - *Gain* and *Zero* sliders set near midscale 11 | 12 | - Use the mouse to adjust the width of the *Wide Graph* so that its 13 | upper frequency limit is about 2400 Hz. 14 | -------------------------------------------------------------------------------- /getfile.h: -------------------------------------------------------------------------------- 1 | // -*- Mode: C++ -*- 2 | #ifndef GETFILE_H 3 | #define GETFILE_H 4 | #include 5 | #include 6 | #include 7 | 8 | void getfile(QString fname, int ntrperiod); 9 | float gran(); 10 | //int ptt(int* nport, int* ntx, int* iptt); 11 | int ptt(int nport, int ntx, int* iptt, int* nopen); 12 | 13 | extern "C" { 14 | int ptt_(int nport, int ntx, int* iptt, int* nopen); 15 | void wav12_(short d2[], short d1[], int* nbytes, short* nbitsam2); 16 | } 17 | 18 | 19 | #endif // GETFILE_H 20 | -------------------------------------------------------------------------------- /icons/Darwin/DragNDrop Background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/DragNDrop Background.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_128x128.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_16x16.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_256x256.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_32x32.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_512x512.png -------------------------------------------------------------------------------- /icons/Darwin/jtdx.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/jtdx.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_128x128.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_16x16.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_256x256.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_32x32.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_512x512.png -------------------------------------------------------------------------------- /icons/Darwin/wsjt.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjt.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_128x128.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_16x16.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_256x256.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_32x32.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_512x512.png -------------------------------------------------------------------------------- /icons/Darwin/wsjtx_.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Darwin/wsjtx_.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /icons/README: -------------------------------------------------------------------------------- 1 | Files under this directory are generated. Even though they are checked 2 | into source control they should not be modified directly. See 3 | ../artwork/README for details of generating these files. -------------------------------------------------------------------------------- /icons/Unix/jtdx_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Unix/jtdx_icon.png -------------------------------------------------------------------------------- /icons/Unix/wsjtx_icon_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/Unix/wsjtx_icon_.png -------------------------------------------------------------------------------- /icons/windows-icons/installer_logo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/windows-icons/installer_logo.bmp -------------------------------------------------------------------------------- /icons/windows-icons/jtdx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/icons/windows-icons/jtdx.ico -------------------------------------------------------------------------------- /jtdx.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=jtdx 4 | Comment=Amateur Radio Weak Signal Operating 5 | Exec=jtdx 6 | Icon=jtdx_icon 7 | Terminal=false 8 | X-MultipleArgs=false 9 | Type=Application 10 | Categories=AudioVideo;Audio;HamRadio; 11 | StartupNotify=true 12 | -------------------------------------------------------------------------------- /jtdx.qrc.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | @wsjtx_RESOURCES@ 4 | 5 | 6 | -------------------------------------------------------------------------------- /jtdx.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "icons/windows-icons/jtdx.ico" 2 | -------------------------------------------------------------------------------- /lib/avg4.f90: -------------------------------------------------------------------------------- 1 | ! The contents of this file have been migrated to lib/jt4_decode.f90 2 | 3 | -------------------------------------------------------------------------------- /lib/baddata.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on March 9th, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | logical function baddata() 5 | 6 | use jt65_mod6 7 | 8 | ninterval=1200 9 | j=0 10 | smin=1.e30 11 | smax=-smin 12 | iz=49*12000/ninterval 13 | nadd=ninterval/60 14 | 15 | ! 3457-4800 range: cover broken data being observed under Windows XP 16 | if(abs(dd(4200)).lt.0.1) dd(4200)=1.0 17 | 18 | do i=1,iz 19 | sq=0. 20 | do n=1,ninterval,60 21 | j=j+60 22 | x=dd(j) 23 | sq=sq + x*x 24 | enddo 25 | rms=sqrt(sq/nadd) 26 | smin=min(smin,rms) 27 | smax=max(smax,rms) 28 | enddo 29 | 30 | sratio=smax/(smin+1.e-30) 31 | baddata=.false. 32 | if(sratio.gt.1.e30) baddata=.true. 33 | 34 | return 35 | end function baddata 36 | -------------------------------------------------------------------------------- /lib/call_q.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on 20190108 2 | 3 | ! call may not start from 'Q', zero and two digits 4 | if(call_a(1:1).eq.'Q' .or. call_b(1:1).eq.'Q') then 5 | nbadcrc=1; msg37=' '; return; endif 6 | if(call_a(1:1).eq.'0' .or. call_b(1:1).eq.'0') then 7 | nbadcrc=1; msg37=' '; return; endif 8 | if(call_a(1:1).ge.'0' .and. call_a(1:1).le.'9' .and. call_a(2:2).ge.'0' .and. call_a(2:2).le.'9') then 9 | nbadcrc=1; msg37=' '; return; endif 10 | if(call_b(1:1).ge.'0' .and. call_b(1:1).le.'9' .and. call_b(2:2).ge.'0' .and. call_b(2:2).le.'9') then 11 | nbadcrc=1; msg37=' '; return; endif -------------------------------------------------------------------------------- /lib/call_q1.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on 20190120 2 | 3 | ! call may not start from 'Q', zero and two digits 4 | if(call_a(1:1).eq.'Q' .or. call_b(1:1).eq.'Q') then 5 | nbadcrc=1; msg37=' '; return; endif 6 | if(call_a(1:1).eq.'0' .or. call_b(1:1).eq.'0') then 7 | nbadcrc=1; msg37=' '; return; endif 8 | if(call_a(1:1).ge.'0' .and. call_a(1:1).le.'9' .and. call_a(2:2).ge.'0' .and. call_a(2:2).le.'9') then 9 | nbadcrc=1; msg37=' '; return; endif 10 | if(call_b(1:1).ge.'0' .and. call_b(1:1).le.'9' .and. call_b(2:2).ge.'0' .and. call_b(2:2).le.'9') then 11 | nbadcrc=1; msg37=' '; return; endif -------------------------------------------------------------------------------- /lib/chkcrc12a.f90: -------------------------------------------------------------------------------- 1 | ! last time modified by Arvo ES1JA on 20191117 2 | 3 | subroutine chkcrc12a(decoded,nbadcrc) 4 | 5 | use crc 6 | integer*1 decoded(87) 7 | integer*1, target:: i1Dec8BitBytes(11) 8 | character*87 cbits 9 | 10 | ! Write decoded bits into cbits: 75-bit message plus 12-bit CRC 11 | write(cbits,1000) decoded 12 | 1000 format(87i1) 13 | read(cbits,1001) i1Dec8BitBytes 14 | 1001 format(11b8) 15 | read(cbits,1002) ncrc12 !Received CRC12 16 | 1002 format(75x,b12) 17 | 18 | i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),transfer(128+64+32,0_1)) 19 | i1Dec8BitBytes(11)=0 20 | icrc12=crc12(c_loc(i1Dec8BitBytes),11) !CRC12 computed from 75 msg bits 21 | 22 | nbadcrc=1 23 | if(ncrc12.eq.icrc12) nbadcrc=0 24 | 25 | return 26 | end subroutine chkcrc12a 27 | -------------------------------------------------------------------------------- /lib/chkflscall.f90: -------------------------------------------------------------------------------- 1 | subroutine chkflscall(call_a,call_b,falsedec) 2 | 3 | character*12 call_a,call_b 4 | logical(1) falsedec,lfound 5 | 6 | if(call_a(1:2).eq.'<.') return 7 | falsedec=.true.; lfound=.false. 8 | !print *,"11","'"//call_a//"'","'"//call_b//"'" 9 | if(call_a.eq.'MYCALL ' .or. call_a.eq.'CQ ') then 10 | call searchcalls(call_b," ",lfound); if(lfound) falsedec=.false. 11 | else if(call_b(1:1).eq.'<') then 12 | call searchcalls(call_a," ",lfound); if(lfound) falsedec=.false. 13 | else 14 | call searchcalls(call_a,call_b,lfound); if(lfound) falsedec=.false. 15 | endif 16 | 17 | return 18 | end subroutine chkflscall -------------------------------------------------------------------------------- /lib/chkhist.f90: -------------------------------------------------------------------------------- 1 | subroutine chkhist(mrsym,nmax,ipk) 2 | 3 | integer mrsym(63) 4 | integer hist(0:63) 5 | 6 | hist=0 7 | do j=1,63 8 | i=mrsym(j) 9 | hist(i)=hist(i)+1 10 | enddo 11 | 12 | nmax=0 13 | do i=0,63 14 | if(hist(i).gt.nmax) then 15 | nmax=hist(i) 16 | ipk=i+1 17 | endif 18 | enddo 19 | 20 | return 21 | end subroutine chkhist 22 | -------------------------------------------------------------------------------- /lib/chkmsg.f90: -------------------------------------------------------------------------------- 1 | subroutine chkmsg(message,cok,nspecial,flip) 2 | 3 | character message*22,cok*3 4 | 5 | nspecial=0 6 | flip=1.0 7 | cok=" " 8 | 9 | do i=22,1,-1 10 | if(message(i:i).ne.' ') go to 10 11 | enddo 12 | i=22 13 | 14 | 10 if(i.ge.11) then 15 | if((message(i-3:i).eq.' OOO') .or. (message(20:22).eq.' OO')) then 16 | cok='OOO' 17 | flip=-1.0 18 | if(message(20:22).eq.' OO') then 19 | message=message(1:19) 20 | else 21 | message=message(1:i-4) 22 | endif 23 | endif 24 | endif 25 | 26 | if(message(1:3).eq.'RO ') nspecial=2 27 | if(message(1:4).eq.'RRR ') nspecial=3 28 | if(message(1:3).eq.'73 ') nspecial=4 29 | 30 | return 31 | end subroutine chkmsg 32 | -------------------------------------------------------------------------------- /lib/chkss2.f90: -------------------------------------------------------------------------------- 1 | subroutine chkss2(ss2,freq,drift,schk) 2 | 3 | real ss2(0:8,85) 4 | real s(0:8,85) 5 | include 'jt9sync.f90' 6 | 7 | ave=sum(ss2)/(9*85) 8 | if(freq+drift.eq.-999999.0) ave=0. !To silence compiler warning 9 | s=ss2/ave-1.0 10 | 11 | s1=0. 12 | do i=1,16 13 | j=ii(i) 14 | if(j.le.85) s1=s1 + s(0,j) 15 | enddo 16 | schk=s1/16.0 17 | 18 | return 19 | end subroutine chkss2 20 | 21 | -------------------------------------------------------------------------------- /lib/constants.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on January 18th, 2017. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | integer, parameter :: NTMAX=120 5 | integer, parameter :: NMAX=NTMAX*12000 !Total sample intervals (one minute) 6 | integer, parameter :: NDMAX=NTMAX*1500 !Sample intervals at 1500 Hz rate 7 | integer, parameter :: NSMAX=6827 !Max length of saved spectra 8 | integer, parameter :: MAXFFT3=16384 -------------------------------------------------------------------------------- /lib/crc10.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" 5 | { 6 | short crc10 (unsigned char const * data, int length); 7 | bool crc10_check (unsigned char const * data, int length); 8 | } 9 | 10 | #define POLY 0x08f 11 | 12 | #ifdef BOOST_NO_CXX11_CONSTEXPR 13 | #define TRUNCATED_POLYNOMIAL POLY 14 | #else 15 | namespace 16 | { 17 | unsigned long constexpr TRUNCATED_POLYNOMIAL = POLY; 18 | } 19 | #endif 20 | 21 | // assumes CRC is last 16 bits of the data and is set to zero 22 | // caller should assign the returned CRC into the message in big endian byte order 23 | short crc10 (unsigned char const * data, int length) 24 | { 25 | return boost::augmented_crc<10, TRUNCATED_POLYNOMIAL> (data, length); 26 | } 27 | 28 | bool crc10_check (unsigned char const * data, int length) 29 | { 30 | return !boost::augmented_crc<10, TRUNCATED_POLYNOMIAL> (data, length); 31 | } 32 | -------------------------------------------------------------------------------- /lib/crc12.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" 5 | { 6 | short crc12 (unsigned char const * data, int length); 7 | bool crc12_check (unsigned char const * data, int length); 8 | } 9 | 10 | #define POLY 0xc06 11 | 12 | #ifdef BOOST_NO_CXX11_CONSTEXPR 13 | #define TRUNCATED_POLYNOMIAL POLY 14 | #else 15 | namespace 16 | { 17 | unsigned long constexpr TRUNCATED_POLYNOMIAL = POLY; 18 | } 19 | #endif 20 | 21 | // assumes CRC is last 16 bits of the data and is set to zero 22 | // caller should assign the returned CRC into the message in big endian byte order 23 | short crc12 (unsigned char const * data, int length) 24 | { 25 | return boost::augmented_crc<12, TRUNCATED_POLYNOMIAL> (data, length); 26 | } 27 | 28 | bool crc12_check (unsigned char const * data, int length) 29 | { 30 | return !boost::augmented_crc<12, TRUNCATED_POLYNOMIAL> (data, length); 31 | } 32 | -------------------------------------------------------------------------------- /lib/crc14.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" 5 | { 6 | short crc14 (unsigned char const * data, int length); 7 | bool crc14_check (unsigned char const * data, int length); 8 | } 9 | 10 | #define POLY 0x2757 11 | 12 | #ifdef BOOST_NO_CXX11_CONSTEXPR 13 | #define TRUNCATED_POLYNOMIAL POLY 14 | #else 15 | namespace 16 | { 17 | unsigned long constexpr TRUNCATED_POLYNOMIAL = POLY; 18 | } 19 | #endif 20 | 21 | // assumes CRC is last 14 bits of the data and is set to zero 22 | // caller should assign the returned CRC into the message in big endian byte order 23 | short crc14 (unsigned char const * data, int length) 24 | { 25 | return boost::augmented_crc<14, TRUNCATED_POLYNOMIAL> (data, length); 26 | } 27 | 28 | bool crc14_check (unsigned char const * data, int length) 29 | { 30 | return !boost::augmented_crc<14, TRUNCATED_POLYNOMIAL> (data, length); 31 | } 32 | -------------------------------------------------------------------------------- /lib/db.f90: -------------------------------------------------------------------------------- 1 | real function db(x) 2 | db=-99.0 3 | if(x.gt.1.259e-10) db=10.0*log10(x) 4 | return 5 | end function db 6 | -------------------------------------------------------------------------------- /lib/delbraces.f90: -------------------------------------------------------------------------------- 1 | subroutine delbraces(msg37) 2 | 3 | character msg37*37 4 | 5 | ispc1=index(msg37,' '); ispc2=index(msg37((ispc1+1):),' ')+ispc1; ispc3=index(msg37((ispc2+1):),' ')+ispc2 6 | ieoc1=ispc1-1; iboc2=ispc1+1; ieoc2=ispc2-1 7 | 8 | if(msg37(1:1).eq.'<' .and. msg37(2:2).ne.'.') then 9 | msg37(ieoc1:37)=msg37(ieoc1+1:37)//' '; msg37(1:37)=msg37(2:37)//' ' 10 | else if(msg37(iboc2:iboc2).eq.'<' .and. msg37(iboc2+1:iboc2+1).ne.'.') then 11 | msg37(ieoc2:37)=msg37(ieoc2+1:37)//' '; msg37(iboc2:37)=msg37(iboc2+1:37)//' ' 12 | else 13 | iboc3=ispc2+1; ieoc3=ispc3-1 14 | if(msg37(iboc3:iboc3).eq.'<' .and. msg37(iboc3+1:iboc3+1).ne.'.') then 15 | msg37(ieoc3:37)=msg37(ieoc3+1:37)//' '; msg37(iboc3:37)=msg37(iboc3+1:37)//' ' 16 | endif 17 | endif 18 | 19 | return 20 | end subroutine delbraces -------------------------------------------------------------------------------- /lib/determ.f90: -------------------------------------------------------------------------------- 1 | real*8 function determ(array,norder) 2 | implicit real*8 (a-h,o-z) 3 | real*8 array(10,10) 4 | 5 | determ=1. 6 | do k=1,norder 7 | if (array(k,k).ne.0) go to 41 8 | do j=k,norder 9 | if(array(k,j).ne.0) go to 31 10 | enddo 11 | determ=0. 12 | go to 60 13 | 14 | 31 do i=k,norder 15 | s8=array(i,j) 16 | array(i,j)=array(i,k) 17 | array(i,k)=s8 18 | enddo 19 | determ=-1.*determ 20 | 41 determ=determ*array(k,k) 21 | if(k.lt.norder) then 22 | k1=k+1 23 | do i=k1,norder 24 | do j=k1,norder 25 | array(i,j)=array(i,j)-array(i,k)*array(k,j)/array(k,k) 26 | enddo 27 | enddo 28 | end if 29 | enddo 30 | 31 | 60 return 32 | end function determ 33 | -------------------------------------------------------------------------------- /lib/encode232.f90: -------------------------------------------------------------------------------- 1 | subroutine encode232(dat,nsym,symbol) 2 | 3 | ! Convolutional encoder for a K=32, r=1/2 code. 4 | 5 | integer*1 dat(13) !User data, packed 8 bits per byte 6 | integer*1 symbol(206) !Channel symbols, one bit per byte 7 | integer*1 i1 8 | include 'conv232.f90' 9 | 10 | nstate=0 11 | k=0 12 | do j=1,nsym 13 | do i=7,0,-1 14 | i1=dat(j) 15 | i4=i1 16 | if (i4.lt.0) i4=i4+256 17 | nstate=ior(ishft(nstate,1),iand(ishft(i4,-i),1)) 18 | n=iand(nstate,npoly1) 19 | n=ieor(n,ishft(n,-16)) 20 | k=k+1 21 | symbol(k)=partab(iand(ieor(n,ishft(n,-8)),255)) 22 | n=iand(nstate,npoly2) 23 | n=ieor(n,ishft(n,-16)) 24 | k=k+1 25 | symbol(k)=partab(iand(ieor(n,ishft(n,-8)),255)) 26 | if(k.ge.nsym) go to 100 27 | enddo 28 | enddo 29 | 30 | 100 continue 31 | 32 | return 33 | end subroutine encode232 34 | -------------------------------------------------------------------------------- /lib/entail.f90: -------------------------------------------------------------------------------- 1 | subroutine entail(dgen,data0) 2 | 3 | ! Move 72-bit packed data from 6-bit to 8-bit symbols and add a zero tail. 4 | integer dgen(13) 5 | integer*1 data0(13) 6 | 7 | i4=0 8 | k=0 9 | m=0 10 | do i=1,12 11 | n=dgen(i) 12 | do j=1,6 13 | k=k+1 14 | i4=i4+i4+iand(1,ishft(n,j-6)) 15 | i4=iand(i4,255) 16 | if(k.eq.8) then 17 | m=m+1 18 | if(i4.gt.127) i4=i4-256 19 | data0(m)=i4 20 | k=0 21 | endif 22 | enddo 23 | enddo 24 | do m=10,13 25 | data0(m)=0 26 | enddo 27 | 28 | return 29 | end subroutine entail 30 | 31 | -------------------------------------------------------------------------------- /lib/fchisq.f90: -------------------------------------------------------------------------------- 1 | real function fchisq(c3,npts,fsample,a) 2 | 3 | parameter (NMAX=85*16) 4 | complex c3(npts) 5 | complex c4(NMAX) 6 | real a(3) 7 | complex z 8 | data a1,a2,a3/99.,99.,99./ 9 | include 'jt9sync.f90' 10 | save 11 | 12 | if(a(1).ne.a1 .or. a(2).ne.a2 .or. a(3).ne.a3) then 13 | a1=a(1) 14 | a2=a(2) 15 | a3=a(3) 16 | call twkfreq(c3,c4,npts,fsample,a) 17 | endif 18 | 19 | ! Get sync power. 20 | nspsd=16 21 | sum1=0. 22 | sum0=0. 23 | k=-1 24 | do i=1,85 25 | z=0. 26 | do j=1,nspsd 27 | k=k+1 28 | z=z+c4(k+1) 29 | enddo 30 | pp=real(z)**2 + aimag(z)**2 31 | if(isync(i).eq.1) then 32 | sum1=sum1+pp 33 | else 34 | sum0=sum0+pp 35 | endif 36 | enddo 37 | sync_4992=(sum1/16.0)/(sum0/69.0) - 1.0 !r4992 38 | sync_4993=sum1/10000.0 !r4993+ 39 | ! write(80,3001) 1.e-5*sum1,1.e-5*sum0,sync_4992,sync_4993,sync 40 | !3001 format(5f11.4) 41 | fchisq=-sync_4993 42 | 43 | return 44 | end function fchisq 45 | -------------------------------------------------------------------------------- /lib/fftw3mod.f90: -------------------------------------------------------------------------------- 1 | module FFTW3 2 | use, intrinsic :: iso_c_binding 3 | include 'fftw3.f03' 4 | end module FFTW3 5 | -------------------------------------------------------------------------------- /lib/filterscq.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor Chernikov UA3DJY on December 12th, 2016. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine filterscq(decoded,falsedec) 5 | 6 | character decoded*22 7 | logical(1) falsedec 8 | 9 | ! check for false "CQ " decodes 10 | 11 | if(len_trim(decoded).gt.18) then 12 | if((decoded(1:3).eq."CQ " .or. decoded(1:3).eq."DE ") .and. decoded(8:8).eq."/" .and. & 13 | decoded(4:7).ne."3DA0") go to 2 14 | endif 15 | 16 | if(len_trim(decoded).gt.19) then 17 | if(decoded(1:4).eq."QRZ " .and. decoded(9:9).eq."/" .and. decoded(5:8).ne."3DA0") go to 2 18 | endif 19 | 20 | go to 4 21 | 22 | 2 falsedec=.true.; return 23 | 24 | 4 return 25 | end subroutine filterscq 26 | -------------------------------------------------------------------------------- /lib/fix_contest_msg.f90: -------------------------------------------------------------------------------- 1 | subroutine fix_contest_msg(mygrid,msg) 2 | 3 | ! If distance from mygrid to grid1 is more thsn 10000 km, change "grid1" 4 | ! to "R grid2" where grid2 is the antipodes of grid1. 5 | 6 | character*6 mygrid 7 | character*22 msg 8 | character*6 g1,g2 9 | logical isgrid 10 | 11 | isgrid(g1)=g1(1:1).ge.'A' .and. g1(1:1).le.'R' .and. g1(2:2).ge.'A' .and. & 12 | g1(2:2).le.'R' .and. g1(3:3).ge.'0' .and. g1(3:3).le.'9' .and. & 13 | g1(4:4).ge.'0' .and. g1(4:4).le.'9' .and. g1(1:4).ne.'RR73' 14 | 15 | n=len(trim(msg)) 16 | if(n.lt.4) return 17 | 18 | g1=msg(n-3:n)//' ' 19 | if(isgrid(g1)) then 20 | call azdist(mygrid,g1,0.d0,nAz,nEl,nDmiles,nDkm,nHotAz,nHotABetter) 21 | if(ndkm.gt.10000) then 22 | call grid2deg(g1,dlong,dlat) 23 | dlong=dlong+180.0 24 | if(dlong.gt.180.0) dlong=dlong-360.0 25 | dlat=-dlat 26 | call deg2grid(dlong,dlat,g2) 27 | msg=msg(1:n-4)//'R '//g2(1:4) 28 | endif 29 | endif 30 | 31 | return 32 | end subroutine fix_contest_msg 33 | -------------------------------------------------------------------------------- /lib/flat2.f90: -------------------------------------------------------------------------------- 1 | subroutine flat2(s,nz,ref) 2 | 3 | parameter (NSMAX=6827) 4 | real s(NSMAX) 5 | real ref(NSMAX) 6 | 7 | nsmo=10 8 | ia=nsmo+1 9 | ib=nz-nsmo-1 10 | do i=ia,ib 11 | call pctile(s(i-nsmo),2*nsmo+1,5,ref(i)) 12 | enddo 13 | 14 | ref(:ia-1)=ref(ia) 15 | ref(ib+1:)=ref(ib) 16 | 17 | return 18 | end subroutine flat2 19 | -------------------------------------------------------------------------------- /lib/flat65.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor Chernikov UA3DJY on July 11th, 2016. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine flat65(ss,ref) 5 | 6 | integer, parameter :: NSZ=3413,NHSYM=276 7 | real stmp(NSZ) 8 | real ss(NHSYM,NSZ) 9 | real ref(NSZ) 10 | 11 | npct=28 !Somewhat arbitrary 12 | do i=1,NSZ 13 | call pctile(ss(1,i),nhsym,npct,stmp(i)) 14 | enddo 15 | 16 | nsmo=33 17 | ia=nsmo/2 + 1 18 | ib=NSZ - nsmo/2 - 1 19 | do i=ia,ib 20 | call pctile(stmp(i-nsmo/2),nsmo,npct,ref(i)) 21 | enddo 22 | ref(:ia-1)=ref(ia) 23 | ref(ib+1:)=ref(ib) 24 | ref=4.0*ref 25 | 26 | return 27 | end subroutine flat65 28 | 29 | 30 | -------------------------------------------------------------------------------- /lib/fmtmsg.f90: -------------------------------------------------------------------------------- 1 | subroutine fmtmsg(msg,iz) 2 | 3 | character*22 msg 4 | 5 | ! Convert all letters to upper case 6 | iz=22 7 | do i=1,22 8 | if(msg(i:i).ge.'a' .and. msg(i:i).le.'z') & 9 | msg(i:i)= char(ichar(msg(i:i))+ichar('A')-ichar('a')) 10 | if(msg(i:i).ne.' ') iz=i 11 | enddo 12 | 13 | do iter=1,5 !Collapse multiple blanks into one 14 | ib2=index(msg(1:iz),' ') 15 | if(ib2.lt.1) go to 100 16 | msg=msg(1:ib2)//msg(ib2+2:) 17 | iz=iz-1 18 | enddo 19 | 20 | 100 return 21 | end subroutine fmtmsg 22 | -------------------------------------------------------------------------------- /lib/foxgen.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on 20190722 2 | 3 | subroutine foxgen() 4 | 5 | common/foxcom/wave(606720) 6 | 7 | return 8 | end subroutine foxgen -------------------------------------------------------------------------------- /lib/fqso_first.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor Chernikov UA3DJY on May 25th, 2016. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine fqso_first(nfqso,nfhinted,ca,ncand) 5 | 6 | ! If a candidate was found within +/- nfhinted of nfqso, move it into ca(1). 7 | 8 | type candidate 9 | real freq 10 | real dt 11 | real sync 12 | end type candidate 13 | type(candidate) ca(300),cb 14 | 15 | dmin=1.e30 16 | i0=0 17 | do i=1,ncand 18 | d=abs(ca(i)%freq-nfqso) 19 | if(d.lt.dmin) then 20 | i0=i 21 | dmin=d 22 | endif 23 | enddo 24 | 25 | if(dmin.lt.float(nfhinted)) then 26 | cb=ca(i0) 27 | do i=i0,2,-1 28 | ca(i)=ca(i-1) 29 | enddo 30 | ca(1)=cb 31 | endif 32 | 33 | return 34 | end subroutine fqso_first 35 | -------------------------------------------------------------------------------- /lib/ft4/partintft4.f90: -------------------------------------------------------------------------------- 1 | ! last time modified by Igor UA3DJY on 20200105 2 | 3 | subroutine partintft4(ndelay,nutc) 4 | 5 | use ft4_mod1, only : dd4 6 | real rnd 7 | 8 | if(ndelay.gt.50) ndelay=50 9 | numsamp=nint((float(ndelay))*1200) ! 12000 sample rate 10 | dd4(numsamp+1:73728)=dd4(1:(73728-numsamp)) 11 | do i=1,numsamp 12 | call random_number(rnd) 13 | dd4(i)=10.0*rnd-5. 14 | enddo 15 | write(*,2) nutc,'partial loss of data','d' 16 | 2 format(i6.6,2x,a20,21x,a1) 17 | call flush(6) 18 | 19 | return 20 | end subroutine partintft4 -------------------------------------------------------------------------------- /lib/ft4_mod1.f90: -------------------------------------------------------------------------------- 1 | module ft4_mod1 2 | 3 | real*4 dd4(73728) 4 | logical(1) llagcc,lfilter,lhidetest,lhidetelemetry 5 | integer nFT4decd,nfafilt,nfbfilt 6 | 7 | end module ft4_mod1 -------------------------------------------------------------------------------- /lib/ft8_params.f90: -------------------------------------------------------------------------------- 1 | ! LDPC (174,91) code 2 | parameter (KK=91) !Information bits (77 + CRC14) 3 | parameter (ND=58) !Data symbols 4 | parameter (NS=21) !Sync symbols (3 @ Costas 7x7) 5 | parameter (NN=79) !Total channel symbols NS+ND (79) 6 | parameter (NSPS=1920) !Samples per symbol at 12000 S/s 7 | parameter (NZ=151680) !Samples in full 15 s waveform NSPS*NN (151,680) 8 | parameter (NMAX=180000) !Samples in iwave 15s*12000 (180,000) 9 | parameter (NFFT1=3840, NH1=1920) !Length of FFTs for symbol spectra NFFT1=2*NSPS, NH1=NFFT1/2 10 | parameter (NSTEP=480) !Rough time-sync step size NSTEP=NSPS/4 11 | parameter (NHSYM=372) !Number of symbol spectra (1/4-sym steps) NHSYM=NMAX/NSTEP-3 12 | parameter (NDOWN=60) !Downsample factor 13 | -------------------------------------------------------------------------------- /lib/ft8v2/chkcrc14a.f90: -------------------------------------------------------------------------------- 1 | subroutine chkcrc14a(decoded,nbadcrc) 2 | 3 | use crc 4 | integer*1 decoded(91) 5 | integer*1, target:: i1Dec8BitBytes(12) 6 | character*91 cbits 7 | 8 | ! Write decoded bits into cbits: 77-bit message plus 14-bit CRC 9 | write(cbits,1000) decoded 10 | 1000 format(91i1) 11 | read(cbits,1001) i1Dec8BitBytes 12 | 1001 format(12b8) 13 | read(cbits,1002) ncrc14 !Received CRC14 14 | 1002 format(77x,b14) 15 | 16 | i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),transfer(128+64+32+16+8,0_1)) 17 | i1Dec8BitBytes(11:12)=0 18 | icrc14=crc14(c_loc(i1Dec8BitBytes),12) !CRC14 computed from 77 msg bits 19 | 20 | nbadcrc=1 21 | if(ncrc14.eq.icrc14) nbadcrc=0 22 | 23 | return 24 | end subroutine chkcrc14a 25 | -------------------------------------------------------------------------------- /lib/ftrsd/Makefile.sfrsd: -------------------------------------------------------------------------------- 1 | srcdir = . 2 | prefix = /usr/local 3 | exec_prefix=${prefix} 4 | CC=gcc 5 | 6 | CFLAGS=-I/usr/local/include -Wall -O2 7 | 8 | all: encode_rs_int.o decode_rs_int.o init_rs_int.o sfrsd2.o sfrsd.o sfrsd 9 | 10 | encode_rs_int.o: encode_rs.c 11 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 12 | 13 | decode_rs_int.o: decode_rs.c 14 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 15 | 16 | init_rs_int.o: init_rs.c 17 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 18 | 19 | sfrsd2.o: sfrsd2.c 20 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 21 | 22 | sfrsd.o: sfrsd.c 23 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 24 | 25 | sfrsd: sfrsd.o encode_rs_int.o decode_rs_int.o init_rs_int.o sfrsd2.o 26 | gcc -g -o $@ $^ 27 | 28 | clean: 29 | rm -f *.o *.a sfrsd 30 | 31 | -------------------------------------------------------------------------------- /lib/ftrsd/Makefile.sfrsd3: -------------------------------------------------------------------------------- 1 | # Makefile for Windows in JTSDK-PY environment 2 | 3 | # Re-direct stdout and stderr: cmd.exe bash 4 | # make > junk 2>&1 make &> junk 5 | 6 | CC = gcc 7 | FC = gfortran 8 | 9 | FFLAGS = -O2 -DWIN32 -fbounds-check -fno-second-underscore -Wall \ 10 | -Wno-conversion -Wno-character-truncation 11 | CFLAGS = -I. -DWIN32 -DWin32 -DBIGSYM -DHAVE_STRUCT_TIMESPEC 12 | 13 | # Default rules 14 | %.o: %.c 15 | ${CC} ${CFLAGS} -c $< 16 | %.o: %.f 17 | ${FC} ${FFLAGS} -c $< 18 | %.o: %.F 19 | ${FC} ${FFLAGS} -c $< 20 | %.o: %.f90 21 | ${FC} ${FFLAGS} -c $< 22 | %.o: %.F90 23 | ${FC} ${FFLAGS} -c $< 24 | 25 | all: rsdtest 26 | 27 | # Build rsdtest 28 | OBJS2 = rsdtest.o extract2.o demod64b.o sfrsd3.o 29 | rsdtest: $(OBJS2) ../libjt.a 30 | $(FC) -o rsdtest $(OBJS2) ../libjt.a ../libpthreadGC2.a 31 | 32 | sfrsd: sfrsd.o encode_rs_int.o decode_rs_int.o init_rs_int.o 33 | gcc -g -o $@ $^ 34 | 35 | .PHONY : clean 36 | 37 | clean: 38 | rm -rf *.o libjt.a rsdtest sfrsd 39 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/JT65B_EME.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ftrsd/ftrsd_paper/JT65B_EME.png -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/Makefile: -------------------------------------------------------------------------------- 1 | CC = gcc 2 | FC = gfortran 3 | 4 | # Default rules 5 | %.o: %.c 6 | ${CC} ${CFLAGS} -c $< 7 | %.o: %.f 8 | ${FC} ${FFLAGS} -c $< 9 | %.o: %.F 10 | ${FC} ${FFLAGS} -c $< 11 | %.o: %.f90 12 | ${FC} ${FFLAGS} -c $< 13 | %.o: %.F90 14 | ${FC} ${FFLAGS} -c $< 15 | 16 | all: mfsk probs.out 17 | 18 | OBJS1 = prob.o binomial_subs.o 19 | prob: $(OBJS1) 20 | $(FC) -o prob $(OBJS1) 21 | 22 | OBJS2 = mfsk.o binomial_subs.o 23 | mfsk: $(OBJS2) 24 | $(FC) -o mfsk $(OBJS2) 25 | 26 | OBJS3 = bodide.o binomial_subs.o 27 | bodide: $(OBJS3) 28 | $(FC) -o bodide $(OBJS3) 29 | 30 | 31 | probs.out: prob 32 | # x N X s 33 | prob 35 63 40 40 > probs.out 34 | prob 37 63 40 45 >> probs.out 35 | prob 37 53 40 45 >> probs.out 36 | prob 38 53 40 47 >> probs.out 37 | 38 | clean: 39 | rm -rf *.o prob probs.out 40 | 41 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/bmdata-rf.dat: -------------------------------------------------------------------------------- 1 | fspread0 0.2, BM (ntrials=0) 2 | -22.0 0.09 3 | -21.5 0.20 4 | -21.0 0.36 5 | -20.5 0.55 6 | -20.0 0.69 7 | -19.5 0.83 8 | -19.0 0.91 9 | -18.5 0.960 10 | -18.0 0.978 11 | -17.5 0.987 12 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/bmdata.dat: -------------------------------------------------------------------------------- 1 | -24.5 0.000 2 | -24.0 0.006 3 | -23.5 0.046 0.066 4 | -23.0 0.250 0.305 5 | -22.5 0.630 0.701 6 | -22.0 0.900 0.945 7 | -21.5 0.992 0.9974 8 | -21.0 0.99987 9 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/bodide.lab: -------------------------------------------------------------------------------- 1 | 7.5 0.05 BM 2 | 6.9 0.015 Theory 3 | 5.55 0.05 KV 4 | 5.3 0.005 FT 5 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_bodide.gnuplot: -------------------------------------------------------------------------------- 1 | # gnuplot script for comparison to theoretical word error rate for 2 | # bounded distance decoding 3 | 4 | # run: gnuplot fig_bodide.gnuplot 5 | # then: pdflatex fig_bodide.tex 6 | 7 | set term epslatex standalone size 6in,2*6/3in 8 | set output "fig_bodide.tex" 9 | set xlabel "$E_b/N_0$ (dB)" 10 | set ylabel "Word Error Rate" 11 | set style func linespoints 12 | set key off 13 | set tics in 14 | set mxtics 2 15 | set mytics 10 16 | set grid 17 | set logscale y 18 | plot [3:9] [1e-4:1] \ 19 | "bmdata.dat" using ($1+29.1):(1-$2) with linespoints lt 2 lw 2 pt 2, \ 20 | "ftdata-100000.dat" using ($1+29.1):(1-$3) with linespoints lt 1 lw 2 pt 7, \ 21 | "bmtheory25.dat" using ($1-0.6):3 with linespoints lt 1 pt 5, \ 22 | "kvasd-15.dat" using ($1+29.1):(1-$3) with linespoints lt 4 pt 6, \ 23 | "bodide.lab" with labels 24 | 25 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_ntrials_vs_nhard.gnuplot: -------------------------------------------------------------------------------- 1 | # gnuplot script for "ntrials_vs_nhard" figure 2 | # run: gnuplot fig_ntrials_vs_nhard.gnuplot 3 | # then: pdflatex fig_ntrials_vs_nhard.tex 4 | # 5 | set term epslatex standalone size 6in,2*6/3in 6 | set output "fig_ntrials_vs_nhard.tex" 7 | set xlabel "Errors in received word, $X$" 8 | set ylabel "Number of trials" 9 | set tics in 10 | set mxtics 5 11 | set mytics 10 12 | #set grid 13 | set logscale y 14 | plot "stats-100000-24db-3.dat" using 1:4 pt 12 notitle 15 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_psuccess.gnuplot: -------------------------------------------------------------------------------- 1 | # gnuplot script for "Percent copy" figure 2 | # run: gnuplot fig_psuccess.gnuplot 3 | # then: pdflatex fig_psuccess.tex 4 | # 5 | set term epslatex standalone size 6in,4in 6 | set output "fig_psuccess.tex" 7 | set xlabel "SNR in 2500 Hz Bandwidth (dB)" 8 | set ylabel "Percent copy" 9 | set style func linespoints 10 | set key off 11 | set tics in 12 | set mxtics 2 13 | set mytics 2 14 | set grid 15 | plot [-30:-18] [0:105] \ 16 | "stats_0.0" using 1:($4)/10.0 with linespoints lt 2 lw 2 pt 2, \ 17 | "stats_0.0" using 1:($5)/10.0 with linespoints lt 1 lw 2 pt 3, \ 18 | "stats_0.0" using 1:($6)/10.0 with linespoints lt 3 lw 2 pt 4, \ 19 | "stats_0.2" using 1:($4)/10.0 with linespoints lt 2 pt 2, \ 20 | "stats_0.2" using 1:($5)/10.0 with linespoints lt 1 pt 3, \ 21 | "stats_0.2" using 1:($6)/10.0 with linespoints lt 3 pt 4, \ 22 | "stats_1.0" using 1:($4)/10.0 with linespoints lt 2 pt 2, \ 23 | "stats_1.0" using 1:($5)/10.0 with linespoints lt 1 pt 3, \ 24 | "stats_1.0" using 1:($6)/10.0 with linespoints lt 3 pt 4, \ 25 | "psuccess.lab" with labels 26 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_psuccess.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_subtracted.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ftrsd/ftrsd_paper/fig_subtracted.tiff -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_waterfall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ftrsd/ftrsd_paper/fig_waterfall.png -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_waterfall.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ftrsd/ftrsd_paper/fig_waterfall.tiff -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_wer.gnuplot: -------------------------------------------------------------------------------- 1 | # gnuplot script for "Percent copy" figure 2 | # run: gnuplot fig_wer.gnuplot 3 | # then: pdflatex fig_wer.tex 4 | # 5 | set term epslatex standalone size 6in,4in 6 | set output "fig_wer.tex" 7 | set xlabel "$E_b/N_0$ (dB)" 8 | set ylabel "Word Error Rate" 9 | set style func linespoints 10 | set key off 11 | set tics in 12 | set mxtics 2 13 | set mytics 10 14 | set grid 15 | set logscale y 16 | plot [3:7] "ftdata-100000.dat" using ($1+29.1):(1-$2) with linespoints lt 1 pt 7 title 'FT-100K', \ 17 | "ftdata-10000.dat" using ($1+29.1):(1-$2) with linespoints lt 1 pt 7 title 'FT-10K', \ 18 | "ftdata-1000.dat" using ($1+29.1):(1-$2) with linespoints lt 1 pt 7 title 'FT-1K', \ 19 | "kvasd-8.dat" using ($1+29.1):(1-$2) with linespoints lt 2 pt 8 title 'KV-8', \ 20 | "kvasd-12.dat" using ($1+29.1):(1-$2) with linespoints lt 2 pt 8 title 'KV-12', \ 21 | "kvasd-15.dat" using ($1+29.1):(1-$2) with linespoints lt 2 pt 8 title 'KV-15', \ 22 | "bmdata.dat" using ($1+29.1):(1-$2) with linespoints pt 7 title 'BM', \ 23 | "wer.lab" with labels 24 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_wer.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ftrsd/ftrsd_paper/fig_wer.pdf -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_wer2.gnuplot: -------------------------------------------------------------------------------- 1 | # gnuplot script for "Percent copy" figure 2 | # run: gnuplot fig_wer2.gnuplot 3 | # then: pdflatex fig_wer2.tex 4 | # 5 | set term epslatex standalone size 6in,6*2/3in 6 | set output "fig_wer2.tex" 7 | set xlabel "SNR in 2500 Hz Bandwidth (dB)" 8 | set ylabel "Percent Copy" 9 | set style func linespoints 10 | set key off 11 | set tics in 12 | set mxtics 2 13 | set mytics 5 14 | set grid 15 | plot [-27:-22] [0:110] \ 16 | "ftdata-100000.dat" using 1:(100*$3) with linespoints lt 1 lw 2 pt 7, \ 17 | "ftdata-10000.dat" using 1:(100*$3) with linespoints lt 1 lw 2 pt 7, \ 18 | "ftdata-1000.dat" using 1:(100*$3) with linespoints lt 1 lw 2 pt 7, \ 19 | "ftdata-100.dat" using 1:(100*$3) with linespoints lt 1 lw 2 pt 7, \ 20 | "ftdata-10.dat" using 1:(100*$2) with linespoints lt 1 lw 2 pt 7, \ 21 | "kvasd-15.dat" using 1:(100*$2) with linespoints lt 4 pt 6, \ 22 | "bmdata.dat" using 1:(100*$2) with linespoints lt 2 lw 2 pt 2, \ 23 | "wer2.lab" with labels 24 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/fig_wer3.gnuplot: -------------------------------------------------------------------------------- 1 | # gnuplot script for "Percent copy" figure 2 | # run: gnuplot fig_wer3.gnuplot 3 | # then: pdflatex fig_wer3.tex 4 | # 5 | set term epslatex standalone size 6in,6*2/3in 6 | set output "fig_wer3.tex" 7 | set xlabel "SNR in 2500 Hz Bandwidth (dB)" 8 | set ylabel "Percent Copy" 9 | set style func linespoints 10 | set key off 11 | set tics in 12 | set mxtics 2 13 | set mytics 10 14 | set grid 15 | set label "r6315" at -25.25,30 16 | set label "r6330" at -26.0,30 17 | set label "$T=10^5$" at -22.8,15 18 | set label "$d=0.0$" at -22.8,10 19 | plot [-27:-22] [0:110] \ 20 | "ftdata-100000.dat" using 1:(100*$3) with linespoints lt 1 pt 7 title 'FT-100K', \ 21 | "ftdata-100000.dat" using 1:(100*$2) with linespoints lt 1 pt 7 title 'FT-100K' 22 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/ftdata-10.dat: -------------------------------------------------------------------------------- 1 | snr psuccess ntrials 10, r6321, r6333 2 | -26.0 0.0 3 | -25.5 0.007 4 | -25.0 0.039 5 | -24.5 0.157 0.14 6 | -24.0 0.362 7 | -23.5 0.701 0.681 8 | -23.0 0.914 9 | -22.5 0.985 0.988 10 | -22.0 1.0 1.0 11 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/ftdata-100.dat: -------------------------------------------------------------------------------- 1 | snr psuccess ntrials 100, r6321, r6333 2 | -26.0 0.003 0.003 3 | -25.5 0.033 0.037 4 | -25.0 0.113 0.113 5 | -24.5 0.315 0.330 6 | -24.0 0.635 0.670 7 | -23.5 0.908 0.903 8 | -23.0 0.977 0.984 9 | -22.5 0.9986 0.999 10 | -22.0 1.0 1.0 11 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/ftdata-1000.dat: -------------------------------------------------------------------------------- 1 | snr psuccess ntrials 1000, r6315, r6333 2 | -26.0 0.010 0.022 3 | -25.5 0.052 0.097 4 | -25.0 0.22 0.262 5 | -24.5 0.51 0.535 6 | -24.0 0.80 0.844 7 | -23.5 0.956 0.968 8 | -23.0 0.9958 0.9963 9 | -22.5 1.0 1.0 10 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/ftdata-10000.dat: -------------------------------------------------------------------------------- 1 | snr psuccess ntrials 10000 r6315, r6330 2 | -27.0 0.000 0.001 3 | -26.5 0.004 0.014 4 | -26.0 0.03 0.066 5 | -25.5 0.107 0.208 0.19 6 | -25.0 0.353 0.424 0.40 (2) 7 | -24.5 0.653 0.725 8 | -24.0 0.913 0.913 9 | -23.5 0.983 0.988 10 | -23.0 0.998 0.999 11 | -22.0 1.0 1.0 12 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/ftdata-100000.dat: -------------------------------------------------------------------------------- 1 | snr psuccess 100000 trials r6315, r6330, 2 | -27.0 0.0 0.011 3 | -26.5 0.007 0.035 4 | -26.0 0.057 0.135 5 | -25.5 0.207 0.326 6 | -25.0 0.531 0.568 7 | -24.5 0.822 0.836 8 | -24.0 0.953 0.966 9 | -23.5 0.99423 0.996 10 | -23.0 0.99967 0.99974 302956/303056, 218991/219046 11 | 12 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/kvasd-12.dat: -------------------------------------------------------------------------------- 1 | kvasd with xlambda=12.000 2 | -26.0 0.017 3 | -25.5 0.085 4 | -25.0 0.282 5 | -24.5 0.600 6 | -24.0 0.865 7 | -23.5 0.975 8 | -23.0 0.9988 9 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/kvasd-15.dat: -------------------------------------------------------------------------------- 1 | kvasd with xlambda=15.000, second # is with r6333 sync 2 | -26.5 0.0035 0.002 109/31294 6/3000 3 | -26.0 0.019 0.022 223/11445, 432/20000 4 | -25.5 0.098 0.091 491/5000, 1835/20000 5 | -25.0 0.310 0.315 1548/5000, 1574/5000 6 | -24.5 0.626 0.612 3132/5000, 3058/5000 7 | -24.0 0.898 0.886 4488/5000, 4433/5000 8 | -23.5 0.984 0.986 12330/12530, 19712/20000 9 | -23.0 0.99919 0.99914 245273/245473 232491/232691 10 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/kvasd-8.dat: -------------------------------------------------------------------------------- 1 | kvasd with xlambda=8 AWGN 2 | -26.0 0.008 3 | -25.5 0.061 4 | -25.0 0.233 5 | -24.5 0.539 6 | -24.0 0.847 7 | -23.5 0.966 8 | -23.0 0.9980 9 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/mfsk.f90: -------------------------------------------------------------------------------- 1 | program mfsk 2 | ! Compute probability of symbol error for non-coherent MFSK 3 | implicit real*16 (a-h,o-z) 4 | integer*8 binomial 5 | integer x,s,XX,NN,M 6 | real*16 hypergeo, snr, term, sum 7 | character arg*8 8 | 9 | nargs=iargc() 10 | if(nargs.ne.1) then 11 | print*,'Probability of symbol error for noncoherent MFSK' 12 | print*,'Usage: mfsk M' 13 | print*,'Example: mfsk 64' 14 | go to 999 15 | endif 16 | call getarg(1,arg) 17 | read(arg,*) M 18 | 19 | write(*,1012) 20 | 1012 format('Es/No P(symbol error)'/ & 21 | '----------------------') 22 | do isnr=0,40 23 | esno=10**(isnr/2.0/10.0) 24 | hsum=0.d0 25 | do k=1,M-1 26 | h=binomial(M-1,k) 27 | h=h*((-1)**(k+1))/(k+1) 28 | h=h*exp(-esno*k/(k+1)) 29 | hsum=hsum + h 30 | enddo 31 | write(*,'(f4.1,4x,e10.4)') isnr/2.0, hsum 32 | enddo 33 | 999 end program mfsk 34 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/prob.f90: -------------------------------------------------------------------------------- 1 | program prob 2 | 3 | implicit real*8 (a-h,o-z) 4 | integer*8 binomial 5 | integer x,s,XX,NN 6 | real*8 hypergeo 7 | character arg*8 8 | 9 | nargs=iargc() 10 | if(nargs.ne.4) then 11 | print*,'Usage: prob x N X s' 12 | print*,'Example: prob 35 63 40 40' 13 | go to 999 14 | endif 15 | call getarg(1,arg) 16 | read(arg,*) x 17 | call getarg(2,arg) 18 | read(arg,*) NN 19 | call getarg(3,arg) 20 | read(arg,*) XX 21 | call getarg(4,arg) 22 | read(arg,*) s 23 | 24 | ! print*,binomial(5, 3) ! 10 25 | ! print*,binomial(40, 19) ! 131282408400 26 | 27 | write(*,1010) x,NN,XX,s 28 | 1010 format(//' x=',i2,' N=',i2,' X=',i2,' s=',i2) 29 | write(*,1012) 30 | 1012 format(/' x P(x|N,X,s) P(>=x|N,X,s) '/ & 31 | '-------------------------------') 32 | 33 | hsum=0.d0 34 | do ix=x,XX 35 | h=hypergeo(ix,NN,XX,s) 36 | hsum=hsum + h 37 | write(*,1020) ix,h,hsum 38 | 1020 format(i3,2d13.4) 39 | enddo 40 | 41 | 999 end program prob 42 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/psuccess.lab: -------------------------------------------------------------------------------- 1 | -21.5 55 BM 2 | -24.5 50 FT 3 | -27.0 68 DS 4 | -25.2 25 0 5 | -25.7 37 0.2 6 | -24.6 16 1.0 7 | -22.6 35 0 8 | -20.9 29 0.2 9 | -19.5 35 1.0 10 | -28.5 25 1.0 11 | -28.2 56 0.2 12 | -28.5 72 0 13 | 14 | 15 | -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/wer.lab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ftrsd/ftrsd_paper/wer.lab -------------------------------------------------------------------------------- /lib/ftrsd/ftrsd_paper/wer2.lab: -------------------------------------------------------------------------------- 1 | -25.7 30 $10^5$ 2 | -25.25 36 $10^4$ 3 | -24.5 44 $10^3$ 4 | -24.15 48 $10^2$ 5 | -23.7 44 10 6 | -22.5 48 BM 7 | -25.2 24 KV -------------------------------------------------------------------------------- /lib/ftrsd/rs2.h: -------------------------------------------------------------------------------- 1 | /* User include file for the Reed-Solomon codec 2 | * Copyright 2002, Phil Karn KA9Q 3 | * May be used under the terms of the GNU General Public License (GPL) 4 | */ 5 | 6 | /* General purpose RS codec, integer symbols */ 7 | void encode_rs_int(void *rs,int *data,int *parity); 8 | int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras, int calc_syn); 9 | void *init_rs_int(int symsize,int gfpoly,int fcr, 10 | int prim,int nroots,int pad); 11 | void free_rs_int(void *rs); 12 | 13 | /* Tables to map from conventional->dual (Taltab) and 14 | * dual->conventional (Tal1tab) bases 15 | */ 16 | extern unsigned char Taltab[],Tal1tab[]; 17 | -------------------------------------------------------------------------------- /lib/ftrsd/rsdtest.f90: -------------------------------------------------------------------------------- 1 | program rsdtest 2 | 3 | real s3(64,63) 4 | character msg*22,arg*12 5 | integer param(0:7) 6 | 7 | nargs=iargc() 8 | if(nargs.ne.2) then 9 | print*,'Usage: rsdtest ntrials nfiles' 10 | go to 999 11 | endif 12 | call getarg(1,arg) 13 | read(arg,*) ntrials 14 | call getarg(2,arg) 15 | read(arg,*) nfiles 16 | 17 | open(10,file='s3_1000.bin',access='stream', status='old') 18 | open(22,file='kvasd.dat',access='direct',recl=1024,status='unknown') 19 | 20 | nadd=1 21 | ifile0=0 22 | if(nfiles.lt.0) then 23 | ifile0=-nfiles 24 | nfiles=99999 25 | endif 26 | 27 | do ifile=1,nfiles 28 | read(10,end=999) s3 29 | if(ifile.lt.ifile0) cycle 30 | call extract2(s3,nadd,ntrials,param,msg) 31 | if(ifile.eq.ifile0) exit 32 | enddo 33 | 34 | 999 end program rsdtest 35 | -------------------------------------------------------------------------------- /lib/ftrsd/sfrsd2.h: -------------------------------------------------------------------------------- 1 | // This source code file was last time modified by Igor UA3DJY on August 20th, 2017 2 | // All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | void ftrsd2_(int mrsym[], int mrprob[], int mr2sym[], int mr2prob[], 5 | int* nvect, int* ipass, int correct[], int param[]); 6 | -------------------------------------------------------------------------------- /lib/g1: -------------------------------------------------------------------------------- 1 | gcc -c gran.c 2 | gfortran -c four2a.f90 3 | gfortran -c f77_wisdom.f90 4 | gfortran -o chkfft chkfft.f90 four2a.o f77_wisdom.o gran.o -lfftw3f 5 | -------------------------------------------------------------------------------- /lib/g1.bat: -------------------------------------------------------------------------------- 1 | gcc -c gran.c 2 | gfortran -c four2a.f90 3 | gfortran -c f77_wisdom.f90 4 | gfortran -o chkfft chkfft.f90 four2a.o f77_wisdom.o gran.o /JTSDK-QT/appsupport/runtime/libfftw3f-3.dll 5 | -------------------------------------------------------------------------------- /lib/g2.bat: -------------------------------------------------------------------------------- 1 | gcc -c gran.c 2 | gfortran -c fftw3mod.f90 3 | gfortran -c f77_wisdom.f90 4 | gfortran -o chkfft2 chkfft2.f90 f77_wisdom.o gran.o /JTSDK-QT/appsupport/runtime/libfftw3f-3.dll 5 | -------------------------------------------------------------------------------- /lib/g3.bat: -------------------------------------------------------------------------------- 1 | gcc -c gran.c 2 | gfortran -c fftw3mod.f90 3 | gfortran -c f77_wisdom.f90 4 | gfortran -o chkfft3 chkfft3.f90 f77_wisdom.o gran.o /JTSDK-QT/appsupport/runtime/libfftw3f-3.dll 5 | -------------------------------------------------------------------------------- /lib/g4.bat: -------------------------------------------------------------------------------- 1 | gcc -c gran.c 2 | gfortran -c -Wall fftw3mod.f90 3 | gfortran -o timefft -Wall timefft.f90 timefft_opts.f90 gran.o libfftw3f-3.dll 4 | -------------------------------------------------------------------------------- /lib/genft8refsig.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on 20181215 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine genft8refsig(itone,cref,f0) 5 | 6 | use ft8_mod1, only :twopi,dt 7 | complex cref(151680) !NFRAME=1920*79 8 | integer itone(79) 9 | ! real*8 twopi,phi,dphi,dt,xnsps 10 | real phi,dphi,xnsps,dtf0 11 | 12 | xnsps=1920.d0 13 | phi=0.d0 14 | k=1 15 | dtf0=f0*dt 16 | do i=1,79 17 | dphi=twopi*(dtf0+itone(i)/xnsps) 18 | do is=1,1920 19 | cref(k)=cmplx(cos(phi),sin(phi)) 20 | phi=mod(phi+dphi,twopi) 21 | k=k+1 22 | enddo 23 | enddo 24 | return 25 | end subroutine genft8refsig 26 | -------------------------------------------------------------------------------- /lib/getlags.f90: -------------------------------------------------------------------------------- 1 | subroutine getlags(nsps8,lag0,lag1,lag2) 2 | if(nsps8.eq.864) then 3 | lag1=39 4 | lag2=291 5 | lag0=123 6 | else if(nsps8.eq.1920) then 7 | lag1=70 8 | lag2=184 9 | lag0=108 10 | else if(nsps8.eq.5120) then 11 | lag1=84 12 | lag2=129 13 | lag0=99 14 | else if(nsps8.eq.10368) then 15 | lag1=91 16 | lag2=112 17 | lag0=98 18 | else if(nsps8.eq.31500) then 19 | lag1=93 20 | lag2=102 21 | lag0=96 22 | else 23 | stop 'Error in getlags' 24 | endif 25 | 26 | return 27 | end subroutine getlags 28 | -------------------------------------------------------------------------------- /lib/gfsk_pulse.f90: -------------------------------------------------------------------------------- 1 | real function gfsk_pulse(b,t) 2 | pi=4.*atan(1.0) 3 | c=pi*sqrt(2.0/log(2.0)) 4 | gfsk_pulse=0.5*(erf(c*b*(t+0.5))-erf(c*b*(t-0.5))) 5 | return 6 | end function gfsk_pulse 7 | -------------------------------------------------------------------------------- /lib/gran.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | /* Generate gaussian random float with mean=0 and std_dev=1 */ 5 | float gran_() 6 | { 7 | float fac,rsq,v1,v2; 8 | static float gset; 9 | static int iset; 10 | 11 | if(iset){ 12 | /* Already got one */ 13 | iset = 0; 14 | return gset; 15 | } 16 | /* Generate two evenly distributed numbers between -1 and +1 17 | * that are inside the unit circle 18 | */ 19 | do { 20 | v1 = 2.0 * (float)rand() / RAND_MAX - 1; 21 | v2 = 2.0 * (float)rand() / RAND_MAX - 1; 22 | rsq = v1*v1 + v2*v2; 23 | } while(rsq >= 1.0 || rsq == 0.0); 24 | fac = sqrt(-2.0*log(rsq)/rsq); 25 | gset = v1*fac; 26 | iset++; 27 | return v2*fac; 28 | } 29 | -------------------------------------------------------------------------------- /lib/graycode.f90: -------------------------------------------------------------------------------- 1 | subroutine graycode(ia,n,idir,ib) 2 | 3 | integer ia(n),ib(n) 4 | do i=1,n 5 | ib(i)=igray(ia(i),idir) 6 | enddo 7 | 8 | return 9 | end subroutine graycode 10 | -------------------------------------------------------------------------------- /lib/graycode65.f90: -------------------------------------------------------------------------------- 1 | subroutine graycode65(dat,n,idir) 2 | 3 | integer dat(n) 4 | do i=1,n 5 | dat(i)=igray(dat(i),idir) 6 | enddo 7 | 8 | return 9 | end subroutine graycode65 10 | -------------------------------------------------------------------------------- /lib/grayline.f90: -------------------------------------------------------------------------------- 1 | subroutine grayline(nyear,month,nday,uth,mygrid,nduration,isun) 2 | 3 | character*8 mygrid 4 | real LST 5 | real lat,lon 6 | 7 | call grid2deg(MyGrid,elon,lat) 8 | lon=-elon 9 | 10 | uth0=uth-0.5*nduration/60.0 11 | uth1=uth+0.5*nduration/60.0 12 | 13 | call sun(nyear,month,nday,uth0,lon,lat,RASun,DecSun,LST, & 14 | AzSun,ElSun0,mjd,day) 15 | call sun(nyear,month,nday,uth1,lon,lat,RASun,DecSun,LST, & 16 | AzSun,ElSun1,mjd,day) 17 | 18 | elchk=-0.8333 19 | isun=-1 20 | if(elsun0.lt.elchk .and. elsun1.ge.elchk) then 21 | isun=0 22 | else if(elsun0.gt.elchk .and. elsun1.le.elchk) then 23 | isun=2 24 | else if(elsun1.gt.elchk) then 25 | isun=1 26 | else 27 | isun=3 28 | endif 29 | 30 | return 31 | end subroutine grayline 32 | 33 | -------------------------------------------------------------------------------- /lib/hash.f90: -------------------------------------------------------------------------------- 1 | subroutine hash(string,len,ihash) 2 | use iso_c_binding, only: c_loc,c_size_t 3 | use hashing 4 | parameter (MASK15=32767) 5 | ! character*(*), target :: string 6 | character*1, target :: string 7 | i=nhash(c_loc(string),int(len,c_size_t),146) 8 | ihash=iand(i,MASK15) 9 | return 10 | end subroutine hash 11 | -------------------------------------------------------------------------------- /lib/hashing.f90: -------------------------------------------------------------------------------- 1 | module hashing 2 | interface 3 | integer(c_int32_t) function nhash (key, length, initval) bind(C, name="nhash") 4 | use iso_c_binding, only: c_ptr, c_size_t, c_int32_t 5 | type(c_ptr), intent(in), value :: key 6 | integer(c_size_t), intent(in), value :: length 7 | integer(c_int32_t), intent(in), value :: initval 8 | end function nhash 9 | end interface 10 | end module hashing 11 | -------------------------------------------------------------------------------- /lib/igray.c: -------------------------------------------------------------------------------- 1 | int igray_(int *n0, int *idir) 2 | { 3 | int n; 4 | unsigned long sh; 5 | unsigned long nn; 6 | n=*n0; 7 | 8 | if(*idir>0) return (n ^ (n >> 1)); 9 | 10 | sh = 1; 11 | nn = (n >> sh); 12 | while (nn > 0) { 13 | n ^= nn; 14 | sh <<= 1; 15 | nn = (n >> sh); 16 | } 17 | return (n); 18 | } 19 | -------------------------------------------------------------------------------- /lib/init_random_seed.h: -------------------------------------------------------------------------------- 1 | #ifndef INIT_RANDOM_SEED_H__ 2 | #define INIT_RANDOM_SEED_H__ 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | /* 9 | * Generate a seed for the RANDOM_NUMBER PRNG that is guaranteed to 10 | * be unique even if many processes are started simultaneously 11 | * 12 | * Not suitable for multi-threaded requirements 13 | */ 14 | void init_random_seed (void); 15 | 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /lib/inter_wspr.f90: -------------------------------------------------------------------------------- 1 | subroutine inter_wspr(id,ndir) 2 | 3 | ! Interleave (ndir=1) or de-interleave (ndir=-1) the array id. 4 | 5 | integer*1 id(0:161),itmp(0:161) 6 | integer j0(0:161) 7 | logical first 8 | data first/.true./ 9 | save 10 | 11 | if(first) then 12 | ! Compute the interleave table using bit reversal. 13 | k=-1 14 | do i=0,255 15 | n=0 16 | ii=i 17 | do j=0,7 18 | n=n+n 19 | if(iand(ii,1).ne.0) n=n+1 20 | ii=ii/2 21 | enddo 22 | if(n.le.161) then 23 | k=k+1 24 | j0(k)=n 25 | endif 26 | enddo 27 | first=.false. 28 | endif 29 | 30 | if(ndir.eq.1) then 31 | do i=0,161 32 | itmp(j0(i))=id(i) 33 | enddo 34 | else 35 | do i=0,161 36 | itmp(i)=id(j0(i)) 37 | enddo 38 | endif 39 | 40 | do i=0,161 41 | id(i)=itmp(i) 42 | enddo 43 | 44 | return 45 | end subroutine inter_wspr 46 | -------------------------------------------------------------------------------- /lib/interleave63.f90: -------------------------------------------------------------------------------- 1 | subroutine interleave63(d1,idir) 2 | 3 | ! Interleave (idir=1) or de-interleave (idir=-1) the array d1. 4 | 5 | integer d1(0:6,0:8) 6 | integer d2(0:8,0:6) 7 | 8 | if(idir.ge.0) then 9 | do i=0,6 10 | do j=0,8 11 | d2(j,i)=d1(i,j) 12 | enddo 13 | enddo 14 | call move(d2,d1,63) 15 | else 16 | call move(d1,d2,63) 17 | do i=0,6 18 | do j=0,8 19 | d1(i,j)=d2(j,i) 20 | enddo 21 | enddo 22 | endif 23 | 24 | return 25 | end subroutine interleave63 26 | -------------------------------------------------------------------------------- /lib/interleave8.f90: -------------------------------------------------------------------------------- 1 | subroutine interleave8(idat,jdat) 2 | 3 | integer idat(66),jdat(66) 4 | integer ii(66),jj(66) 5 | data ii/ & 6 | 64,32,16,48, 8,40,24,56, 4,36,20,52,12,44,28,60, 2,66,34,18, & 7 | 50,10,42,26,58, 6,38,22,54,14,46,30,62, 1,65,33,17,49, 9,41, & 8 | 25,57, 5,37,21,53,13,45,29,61, 3,35,19,51,11,43,27,59, 7,39, & 9 | 23,55,15,47,31,63/ 10 | data jj/ & 11 | 34,17,51, 9,43,26,59, 5,39,22,55,13,47,30,63, 3,37,20,53,11, & 12 | 45,28,61, 7,41,24,57,15,49,32,65, 2,36,19,52,10,44,27,60, 6, & 13 | 40,23,56,14,48,31,64, 4,38,21,54,12,46,29,62, 8,42,25,58,16, & 14 | 50,33,66, 1,35,18/ 15 | 16 | return 17 | end subroutine interleave8 18 | -------------------------------------------------------------------------------- /lib/interleave9.f90: -------------------------------------------------------------------------------- 1 | subroutine interleave9(ia,ndir,ib) 2 | integer*1 ia(0:205),ib(0:205) 3 | integer j0(0:205) 4 | logical first 5 | data first/.true./ 6 | save first,j0 !Save not working, or j0 overwritten ??? 7 | 8 | if(first) then 9 | k=-1 10 | do i=0,255 11 | m=i 12 | n=iand(m,1) 13 | n=2*n + iand(m/2,1) 14 | n=2*n + iand(m/4,1) 15 | n=2*n + iand(m/8,1) 16 | n=2*n + iand(m/16,1) 17 | n=2*n + iand(m/32,1) 18 | n=2*n + iand(m/64,1) 19 | n=2*n + iand(m/128,1) 20 | if(n.le.205) then 21 | k=k+1 22 | j0(k)=n 23 | endif 24 | enddo 25 | ! first=.false. 26 | endif 27 | 28 | if(ndir.gt.0) then 29 | do i=0,205 30 | ib(j0(i))=ia(i) 31 | enddo 32 | else 33 | do i=0,205 34 | ib(i)=ia(j0(i)) 35 | enddo 36 | endif 37 | 38 | return 39 | end subroutine interleave9 40 | -------------------------------------------------------------------------------- /lib/jt65_mod.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on June 19th, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | module jt65_mod 5 | integer param(0:5) 6 | integer mrs(63),mrs2(63) 7 | save 8 | end module jt65_mod -------------------------------------------------------------------------------- /lib/jt65_mod10.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on February 15th, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | module jt65_mod10 5 | ! used to store last callsigns seen in JT modes in the memory 6 | ! used in some Hint decoders and for false FTRSD decodes checking 7 | 8 | parameter (MAXCALLS=35000) ! max 34999 calls in CALL3.TXT 9 | parameter (MAXMSG=MAXCALLS) ! in chkftrsd MAXMSG is equal to CALL3 calls +1 10 | integer*1 sym2(0:62,MAXMSG) 11 | integer nused 12 | logical(1) first 13 | character*22 msg0(MAXMSG) 14 | data first/.true./ 15 | 16 | save first,nused,msg0,sym2 17 | 18 | end module jt65_mod10 -------------------------------------------------------------------------------- /lib/jt65_mod11.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on February 21st, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | module jt65_mod11 5 | ! MAXINTCAND max sum number of candidates for all decoding passes 6 | integer, parameter :: MAXCAND=300,MAXINTCAND=500 7 | 8 | type candidate 9 | real freq 10 | real dt 11 | real sync 12 | end type candidate 13 | type(candidate) ca(MAXCAND) 14 | 15 | type dt_check 16 | real cand_dtbest 17 | logical cand_decoded 18 | end type dt_check 19 | type(dt_check) dtchk(MAXINTCAND) 20 | 21 | end module jt65_mod11 -------------------------------------------------------------------------------- /lib/jt65_mod2.f90: -------------------------------------------------------------------------------- 1 | ! This source code file is last time mofified by Igor UA3DJY on July 22nd, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | module jt65_mod2 5 | 6 | real s3(64,63),s3a(64,63) 7 | integer correct(63),correct_hint(63) 8 | 9 | end module jt65_mod2 -------------------------------------------------------------------------------- /lib/jt65_mod3.f90: -------------------------------------------------------------------------------- 1 | ! This source code file is created by Igor Chernikov UA3DJY on June 24th, 2016 and 2 | ! last time mofified on August 02nd, 2016. 3 | ! All changes are shown in the patch file coming together with the full JTDX source code. 4 | 5 | module jt65_mod3 6 | 7 | complex cref(720000),camp(720000),cfilt(720000),cw(720000) 8 | save 9 | end module jt65_mod3 -------------------------------------------------------------------------------- /lib/jt65_mod5.f90: -------------------------------------------------------------------------------- 1 | ! This source code file is created by Igor Chernikov UA3DJY on July 04th, 2016 and 2 | ! last time mofified on June 28th, 2016. 3 | ! All changes are shown in the patch file coming together with the full JTDX source code. 4 | 5 | module jt65_mod5 6 | 7 | real, save :: ref(3413) 8 | 9 | end module jt65_mod5 -------------------------------------------------------------------------------- /lib/jt65_mod6.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on January 23rd, 2018 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | module jt65_mod6 5 | 6 | integer, parameter :: NPTS=624000 7 | real*4 dd(NPTS) 8 | integer nnmode 9 | save 10 | 11 | end module jt65_mod6 -------------------------------------------------------------------------------- /lib/jt65_mod7.f90: -------------------------------------------------------------------------------- 1 | ! This source code file is created by Igor Chernikov UA3DJY on July 31st, 2016 and 2 | ! last time mofified on July 31st, 2016. 3 | ! All changes are shown in the patch file coming together with the full JTDX source code. 4 | 5 | module jt65_mod7 6 | real s3a(64,63) 7 | save 8 | end module jt65_mod7 -------------------------------------------------------------------------------- /lib/jt65_mod9.f90: -------------------------------------------------------------------------------- 1 | module jt65_mod9 2 | ! stores callsign DB in memory for false decodes checking 3 | 4 | parameter (MAXC=200000) 5 | ! supporting 7-char Australian callsigns 6 | character*7 call0c(11500),calld(11100),callef(9000),callgh(7500),calli(7600),callj(9000),callk(24000),calllm(6500), & 7 | calln(9400),callo(6700),callpq(5800),callr(6500),callst(7500),calluv(10400),callw(13700),callxz(5800) 8 | character callsign*12 9 | character*180 line 10 | integer ncall0c,ncalld,ncallef,ncallgh,ncalli,ncallj,ncallk,ncalllm,ncalln,ncallo,ncallpq,ncallr,ncallst,ncalluv, & 11 | ncallw,ncallxz 12 | logical ldbvalid 13 | data ldbvalid/.true./ 14 | data ncall0c,ncalld,ncallef,ncallgh,ncalli,ncallj,ncallk,ncalllm,ncalln,ncallo,ncallpq,ncallr,ncallst,ncalluv,ncallw, & 15 | ncallxz/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/ 16 | 17 | end module jt65_mod9 -------------------------------------------------------------------------------- /lib/jt9_mod1.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on March 12th, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | module jt9_mod1 5 | 6 | integer, parameter :: NPTS9=618624 ! NPTS9=597888 7 | real*4 dd9(0:NPTS9-1) ! integer*2 id2(0:8*npts8-1) 8 | save 9 | 10 | end module jt9_mod1 -------------------------------------------------------------------------------- /lib/jt9_mod2.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on April 13th, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | module jt9_mod2 5 | 6 | integer, parameter :: MAXCANDRXF=5, MAXCAND=200 7 | 8 | type candrxf 9 | real ccfred 10 | integer i 11 | end type candrxf 12 | type(candrxf) carxf(MAXCANDRXF) 13 | 14 | type candidate 15 | real ccfred 16 | integer i 17 | end type candidate 18 | type(candidate) ca(MAXCAND) 19 | 20 | end module jt9_mod2 -------------------------------------------------------------------------------- /lib/jt9sync.f90: -------------------------------------------------------------------------------- 1 | integer ii(16) !Locations of sync symbols 2 | data ii/ 1,2,5,10,16,23,33,35,51,52,55,60,66,73,83,85/ 3 | 4 | integer ii2(16) !Locations of sync half-symbols 5 | data ii2/1,3,9,19,31,45,65,69,101,103,109,119,131,145,165,169/ 6 | 7 | integer ka(16),kb(16) !Reference symbols for sync 8 | data ka/5,5,11,21,33,47,63,71,97,105,111,121,133,147,159,163/ 9 | data kb/7,7,13,23,35,49,67,73,99,107,113,123,135,149,161,167/ 10 | 11 | 12 | integer isync(85) !Sync vector 13 | data isync/ & 14 | 1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0, & 15 | 0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, & 16 | 0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,1, & 17 | 0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, & 18 | 0,0,1,0,1/ 19 | -------------------------------------------------------------------------------- /lib/ldpc/COPYRIGHT: -------------------------------------------------------------------------------- 1 | Except as otherwise specified, all program code and documentation in this 2 | directory is copyright (c) 1995-2012 by Radford M. Neal. 3 | 4 | Permission is granted for anyone to copy, use, modify, and distribute 5 | these programs and accompanying documents for any purpose, provided 6 | this copyright notice is retained and prominently displayed, and note 7 | is made of any changes made to these programs. These programs and 8 | documents are distributed without any warranty, express or implied. 9 | As the programs were written for research purposes only, they have not 10 | been tested to the degree that would be advisable in any important 11 | application. All use of these programs is entirely at the user's own 12 | risk. 13 | 14 | Some routines in the module rand.c are taken from the GNU C Library, 15 | and are copyrighted as described there and in the file LGPL. 16 | -------------------------------------------------------------------------------- /lib/ldpc/LDPC-install: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copy the LPDC programs to the directory specified. The program file 4 | # might be the name of the program, or (eg, on Cygwin) the name of the 5 | # program with .exe appended. 6 | 7 | if [ x$1 == x -o x$2 != x ]; then 8 | echo Usage: LDPC-install bin-directory 9 | exit 1 10 | fi 11 | 12 | echo Installing LPDC programs in $1 13 | 14 | mkdir -p $1 15 | 16 | for prog in make-pchk alist-to-pchk pchk-to-alist \ 17 | make-ldpc print-pchk make-gen print-gen \ 18 | rand-src encode transmit decode extract verify; do 19 | if [ -f $prog ]; then 20 | cp $prog $1 21 | elif [ -f $prog.exe ]; then 22 | cp $prog.exe $1 23 | else 24 | echo No program $prog to install 25 | fi 26 | done 27 | 28 | echo Done 29 | -------------------------------------------------------------------------------- /lib/ldpc/README: -------------------------------------------------------------------------------- 1 | This is a collection of programs and modules, written in C, that 2 | support research and education concerning Low Density Parity Check 3 | (LDPC) codes. 4 | 5 | See index.html in this directory for an index to the documentation. 6 | Copyright information can be found there, and in the file COPYRIGHT. 7 | -------------------------------------------------------------------------------- /lib/ldpc/alloc.h: -------------------------------------------------------------------------------- 1 | /* ALLOC.H - Interface to memory allocation procedure. */ 2 | 3 | /* Copyright (c) 1995-2012 by Radford M. Neal. 4 | * 5 | * Permission is granted for anyone to copy, use, modify, and distribute 6 | * these programs and accompanying documents for any purpose, provided 7 | * this copyright notice is retained and prominently displayed, and note 8 | * is made of any changes made to these programs. These programs and 9 | * documents are distributed without any warranty, express or implied. 10 | * As the programs were written for research purposes only, they have not 11 | * been tested to the degree that would be advisable in any important 12 | * application. All use of these programs is entirely at the user's own 13 | * risk. 14 | */ 15 | 16 | 17 | void *chk_alloc (unsigned, unsigned); /* Calls 'calloc' and exits with error 18 | if it fails */ 19 | -------------------------------------------------------------------------------- /lib/ldpc/blockio.h: -------------------------------------------------------------------------------- 1 | /* BLOCKIO.H - Interface to block input/output routines. */ 2 | 3 | /* Copyright (c) 1995-2012 by Radford M. Neal. 4 | * 5 | * Permission is granted for anyone to copy, use, modify, and distribute 6 | * these programs and accompanying documents for any purpose, provided 7 | * this copyright notice is retained and prominently displayed, and note 8 | * is made of any changes made to these programs. These programs and 9 | * documents are distributed without any warranty, express or implied. 10 | * As the programs were written for research purposes only, they have not 11 | * been tested to the degree that would be advisable in any important 12 | * application. All use of these programs is entirely at the user's own 13 | * risk. 14 | */ 15 | 16 | extern int blockio_flush; /* Should blocks written be immediately flushed? */ 17 | 18 | int blockio_read (FILE *, char *, int); 19 | void blockio_write (FILE *, char *, int); 20 | -------------------------------------------------------------------------------- /lib/ldpc/check.h: -------------------------------------------------------------------------------- 1 | /* CHECK.H - Interface to procedure for computing parity checks, etc. */ 2 | 3 | /* Copyright (c) 1995-2012 by Radford M. Neal. 4 | * 5 | * Permission is granted for anyone to copy, use, modify, and distribute 6 | * these programs and accompanying documents for any purpose, provided 7 | * this copyright notice is retained and prominently displayed, and note 8 | * is made of any changes made to these programs. These programs and 9 | * documents are distributed without any warranty, express or implied. 10 | * As the programs were written for research purposes only, they have not 11 | * been tested to the degree that would be advisable in any important 12 | * application. All use of these programs is entirely at the user's own 13 | * risk. 14 | */ 15 | 16 | int check (mod2sparse *, char *, char *); 17 | 18 | double changed (double *, char *, int); 19 | 20 | double expected_parity_errors (mod2sparse *, double *); 21 | 22 | double loglikelihood (double *, char *, int); 23 | double expected_loglikelihood (double *, double *, int); 24 | 25 | double entropy (double *, int); 26 | -------------------------------------------------------------------------------- /lib/ldpc/enc.h: -------------------------------------------------------------------------------- 1 | /* ENC.H - Interface to encoding procedures. */ 2 | 3 | /* Copyright (c) 1995-2012 by Radford M. Neal. 4 | * 5 | * Permission is granted for anyone to copy, use, modify, and distribute 6 | * these programs and accompanying documents for any purpose, provided 7 | * this copyright notice is retained and prominently displayed, and note 8 | * is made of any changes made to these programs. These programs and 9 | * documents are distributed without any warranty, express or implied. 10 | * As the programs were written for research purposes only, they have not 11 | * been tested to the degree that would be advisable in any important 12 | * application. All use of these programs is entirely at the user's own 13 | * risk. 14 | */ 15 | 16 | void sparse_encode (char *, char *); 17 | void dense_encode (char *, char *, mod2dense *, mod2dense *); 18 | void mixed_encode (char *, char *, mod2dense *, mod2dense *); 19 | -------------------------------------------------------------------------------- /lib/ldpc/ex-ham7b: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Example of coding using a (7,4) Hamming code, with transmission through 4 | # a Binary Symmetric Channel with error probability of 0.05. 5 | # 6 | # This example shows how random source messages can be encoded as codewords, 7 | # transmitted through the simulated channel, decoded, and the message bits 8 | # extracted from the codewords. The final result is in ex-ham7b.ext, which can 9 | # be compared to ex-ham7b.src. 10 | 11 | set -e # Stop if an error occurs 12 | set -v # Echo commands as they are read 13 | 14 | make-pchk ex-ham7b.pchk 3 7 0:0 0:3 0:4 0:5 1:1 1:3 1:4 1:6 2:2 2:4 2:5 2:6 15 | make-gen ex-ham7b.pchk ex-ham7b.gen dense 16 | rand-src ex-ham7b.src 1 4x1000 17 | encode ex-ham7b.pchk ex-ham7b.gen ex-ham7b.src ex-ham7b.enc 18 | transmit ex-ham7b.enc ex-ham7b.rec 1 bsc 0.05 19 | decode ex-ham7b.pchk ex-ham7b.rec ex-ham7b.dec bsc 0.05 enum-bit ex-ham7b.gen 20 | verify ex-ham7b.pchk ex-ham7b.dec ex-ham7b.gen ex-ham7b.src 21 | extract ex-ham7b.gen ex-ham7b.dec ex-ham7b.ext 22 | -------------------------------------------------------------------------------- /lib/ldpc/ex-ham7b-out: -------------------------------------------------------------------------------- 1 | 2 | make-pchk ex-ham7b.pchk 3 7 0:0 0:3 0:4 0:5 1:1 1:3 1:4 1:6 2:2 2:4 2:5 2:6 3 | make-gen ex-ham7b.pchk ex-ham7b.gen dense 4 | Number of 1s per check in Inv(A) X B is 3.0 5 | rand-src ex-ham7b.src 1 4x1000 6 | encode ex-ham7b.pchk ex-ham7b.gen ex-ham7b.src ex-ham7b.enc 7 | Encoded 1000 blocks, source block size 4, encoded block size 7 8 | transmit ex-ham7b.enc ex-ham7b.rec 1 bsc 0.05 9 | Transmitted 7000 bits 10 | decode ex-ham7b.pchk ex-ham7b.rec ex-ham7b.dec bsc 0.05 enum-bit ex-ham7b.gen 11 | Decoded 1000 blocks, 1000 valid. Average 16.0 iterations, 4% bit changes 12 | verify ex-ham7b.pchk ex-ham7b.dec ex-ham7b.gen ex-ham7b.src 13 | Block counts: tot 1000, with chk errs 0, with src errs 47, both 0 14 | Bit error rate (on message bits only): 2.000e-02 15 | extract ex-ham7b.gen ex-ham7b.dec ex-ham7b.ext 16 | -------------------------------------------------------------------------------- /lib/ldpc/intio.h: -------------------------------------------------------------------------------- 1 | /* INTIO.H - Interface for reading and writing integers one byte at a time. */ 2 | 3 | /* Copyright (c) 1995-2012 by Radford M. Neal. 4 | * 5 | * Permission is granted for anyone to copy, use, modify, and distribute 6 | * these programs and accompanying documents for any purpose, provided 7 | * this copyright notice is retained and prominently displayed, and note 8 | * is made of any changes made to these programs. These programs and 9 | * documents are distributed without any warranty, express or implied. 10 | * As the programs were written for research purposes only, they have not 11 | * been tested to the degree that would be advisable in any important 12 | * application. All use of these programs is entirely at the user's own 13 | * risk. 14 | */ 15 | 16 | int intio_read (FILE *); /* Read an integer */ 17 | void intio_write (FILE *, int); /* Write an integer */ 18 | -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/160-80-sf4.results: -------------------------------------------------------------------------------- 1 | sf4 160,80 ldpc, Eb/N0_dB, ngood, nundet, 10^6 trials 2 | columns 2,3 decoder uses variable sigma, columns 4,5 decoder uses fixed sigma=0.9 3 | -0.5 2906 0 10862 5 4 | 0.0 18899 1 34663 6 5 | 0.5 78344 3 94319 3 6 | 1.0 220956 9 215720 9 7 | 1.5 447994 12 405922 9 8 | 2.0 694624 5 631688 5 9 | 2.5 876494 4 825223 2 10 | 3.0 965704 1 940486 1 11 | 3.5 993584 1 986229 1 12 | 4.0 999160 0 997916 0 13 | 4.5 999920 0 999792 0 14 | 5.0 999993 0 999982 0 15 | 16 | -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/compare.lab: -------------------------------------------------------------------------------- 1 | 5.1 0.005 "(198,72) JTMSK" 2 | 3.1 0.0003 "(160,80) LDPC" 3 | -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/fig_success.gnuplot: -------------------------------------------------------------------------------- 1 | # run: gnuplot fig_compare.gnuplot 2 | # then: pdflatex fig_compare.tex 3 | 4 | set term epslatex standalone size 6in,2*6/3in 5 | set output "fig_success.tex" 6 | set xlabel "$E_b/N_0$ (dB)" 7 | set ylabel "Decode Probability" 8 | set style func linespoints 9 | set key off 10 | set tics in 11 | set mxtics 2 12 | set mytics 10 13 | set grid 14 | #set logscale y 15 | plot [-1:6] [1e-6:1] \ 16 | "160-80-sf4.results" using 1:($2/1000000) with linespoints lt 2 lw 2 pt 2, \ 17 | "ldpc-144-72-sf2.results" using 1:($2/1000000) with linespoints lt 3 lw 2 pt 5, \ 18 | "jtmskcode.results" using 1:($4/1000000) with linespoints lt 1 lw 2 pt 7, \ 19 | "success.lab" with labels 20 | exit 21 | # "160-80-sf4.results" using 1:($4/1000000) with linespoints lt 3 lw 2 pt 4, \ 22 | -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/jtmskcode.results: -------------------------------------------------------------------------------- 1 | rate 1/2 constraint len 13, bpsk, ngood, nbad 10^5 trials, 10^6 trials 2 | -0.50 1470 4 3 | 0.00 4403 2 43968 30 4 | 0.50 11167 2 111824 33 5 | 1.00 24082 1 238157 21 6 | 1.50 42779 4 425263 20 7 | 2.00 63417 0 634824 14 8 | 2.50 81290 1 812206 2 9 | 3.00 92388 0 924507 2 10 | 3.50 97560 0 11 | 4.00 99390 0 12 | 4.50 99864 0 13 | 5.00 99977 0 14 | -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/ldpc-144-72-2x3-8x4-sf3.pchk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ldpc/jtmode_codes/ldpc-144-72-2x3-8x4-sf3.pchk -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/ldpc-144-72-5x3-5x4-sf2.pchk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ldpc/jtmode_codes/ldpc-144-72-5x3-5x4-sf2.pchk -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/ldpc-144-72-6x3-4x4-sf1.pchk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ldpc/jtmode_codes/ldpc-144-72-6x3-4x4-sf1.pchk -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/ldpc-144-72-sf2.results: -------------------------------------------------------------------------------- 1 | ldpc-144-72 sf2 is an irregular ldpc code. 2 | 0.45 89459 9 3 | 0.92 219230 22 4 | 1.41 429217 26 5 | 1.94 676583 23 6 | 2.5 873671 14 7 | -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/ldpc-160-80-2x3-8x4-sf4.pchk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ldpc/jtmode_codes/ldpc-160-80-2x3-8x4-sf4.pchk -------------------------------------------------------------------------------- /lib/ldpc/jtmode_codes/success.lab: -------------------------------------------------------------------------------- 1 | 3.2 0.75 "(198,72) JTMSK" 2 | 0.9 0.55 "(160,80) LDPC" 3 | 1.3 0.75 "(144,72) LDPC" 4 | -------------------------------------------------------------------------------- /lib/ldpc/mod2convert-test-out: -------------------------------------------------------------------------------- 1 | 2 | Creating sparse matrix. 3 | Converting from sparse to dense. 4 | Converting back to dense again. 5 | Testing for equality of two sparse matrices: OK. 6 | Converting to dense once again. 7 | Testing for equality of two dense matrices: OK. 8 | 9 | DONE WITH TESTS. 10 | -------------------------------------------------------------------------------- /lib/ldpc/mod2convert.h: -------------------------------------------------------------------------------- 1 | /* MOD2CONVERT.H - Routines converting between sparse and dense mod2 matrices.*/ 2 | 3 | /* Copyright (c) 1995-2012 by Radford M. Neal. 4 | * 5 | * Permission is granted for anyone to copy, use, modify, and distribute 6 | * these programs and accompanying documents for any purpose, provided 7 | * this copyright notice is retained and prominently displayed, and note 8 | * is made of any changes made to these programs. These programs and 9 | * documents are distributed without any warranty, express or implied. 10 | * As the programs were written for research purposes only, they have not 11 | * been tested to the degree that would be advisable in any important 12 | * application. All use of these programs is entirely at the user's own 13 | * risk. 14 | */ 15 | 16 | 17 | void mod2sparse_to_dense (mod2sparse *, mod2dense *); 18 | void mod2dense_to_sparse (mod2dense *, mod2sparse *); 19 | -------------------------------------------------------------------------------- /lib/ldpc/open.h: -------------------------------------------------------------------------------- 1 | /* OPEN.H - Interface to routine for opening file that might be stdin/stdout. */ 2 | 3 | /* Copyright (c) 1995-2012 by Radford M. Neal. 4 | * 5 | * Permission is granted for anyone to copy, use, modify, and distribute 6 | * these programs and accompanying documents for any purpose, provided 7 | * this copyright notice is retained and prominently displayed, and note 8 | * is made of any changes made to these programs. These programs and 9 | * documents are distributed without any warranty, express or implied. 10 | * As the programs were written for research purposes only, they have not 11 | * been tested to the degree that would be advisable in any important 12 | * application. All use of these programs is entirely at the user's own 13 | * risk. 14 | */ 15 | 16 | FILE *open_file_std (char *, char *); 17 | -------------------------------------------------------------------------------- /lib/ldpc/randfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ldpc/randfile -------------------------------------------------------------------------------- /lib/ldpc/run-examples: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Run all the examples, and check the output against the corresponding -out 4 | # file. Note that slight differences are possible when the examples are 5 | # run on different machines, due to slightly different round-off errors. 6 | 7 | for e in `ls ex-* | grep -v "\\." | grep -v .-out` 8 | do 9 | echo Running $e: 10 | $e 2>&1 | diff ${e}-out - 11 | echo " " 12 | done 13 | -------------------------------------------------------------------------------- /lib/ldpc/sparse-encode.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/ldpc/sparse-encode.pdf -------------------------------------------------------------------------------- /lib/mixlpf.f90: -------------------------------------------------------------------------------- 1 | subroutine mixlpf(x1,nbfo,c0) 2 | 3 | real*4 x1(512) 4 | real*8 twopi,phi,dphi 5 | complex c1(512),c2(105+512) 6 | complex c0(64) 7 | data phi/0.d0/ 8 | save phi,c2 9 | 10 | twopi=8.d0*atan(1.d0) 11 | dphi=twopi*nbfo/12000.d0 12 | 13 | do i=1,512 14 | phi=phi+dphi 15 | if(phi.gt.twopi) phi=phi-twopi 16 | xphi=phi 17 | c1(i)=x1(i)*cmplx(cos(xphi),sin(xphi)) 18 | enddo 19 | c2(106:105+512)=c1 20 | 21 | call fil3c(c2,105+512,c0,n2) 22 | c2(1:105)=c1(512-104:512) !Save 105 trailing samples 23 | 24 | return 25 | end subroutine mixlpf 26 | -------------------------------------------------------------------------------- /lib/move.f90: -------------------------------------------------------------------------------- 1 | subroutine move(x,y,n) 2 | real x(n),y(n) 3 | do i=1,n 4 | y(i)=x(i) 5 | enddo 6 | return 7 | end subroutine move 8 | -------------------------------------------------------------------------------- /lib/noisegen.f90: -------------------------------------------------------------------------------- 1 | subroutine noisegen(d4,nmax) 2 | 3 | real*4 d4(4,nmax) 4 | 5 | call init_random_seed() ! seed Fortran RANDOM_NUMBER generator 6 | call sgran() ! see C rand generator (used in gran) 7 | 8 | do i=1,nmax 9 | d4(1,i)=gran() 10 | d4(2,i)=gran() 11 | d4(3,i)=gran() 12 | d4(4,i)=gran() 13 | enddo 14 | 15 | return 16 | end subroutine noisegen 17 | -------------------------------------------------------------------------------- /lib/partint.f90: -------------------------------------------------------------------------------- 1 | ! last time modified by Igor UA3DJY on 20200105 2 | 3 | subroutine partint(ndelay,nutc) 4 | 5 | use jt65_mod6 6 | real rnd 7 | 8 | numsamp=ndelay*1200 9 | dd(numsamp+1:624000)=dd(1:(624000-numsamp)) 10 | do i=1,numsamp 11 | call random_number(rnd) 12 | dd(i)=10.0*rnd-5. 13 | enddo 14 | write(*,2) nutc,'partial loss of data','d' 15 | 2 format(i4.4,2x,a20,21x,a1) 16 | call flush(6) 17 | 18 | return 19 | end subroutine partint -------------------------------------------------------------------------------- /lib/partintft8.f90: -------------------------------------------------------------------------------- 1 | subroutine partintft8(ndelay,nutc) 2 | 3 | use ft8_mod1, only : dd8 4 | real rnd 5 | 6 | if(ndelay.gt.120) ndelay=120 7 | numsamp=nint(float(ndelay)*1200) 8 | dd8(numsamp+1:180000)=dd8(1:(180000-numsamp)) 9 | do i=1,numsamp 10 | call random_number(rnd) 11 | dd8(i)=10.0*rnd-5. 12 | enddo 13 | write(*,2) nutc,'partial loss of data','d' 14 | 2 format(i6.6,2x,a20,21x,a1) 15 | call flush(6) 16 | 17 | return 18 | end subroutine partintft8 -------------------------------------------------------------------------------- /lib/pctile.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor Chernikov UA3DJY on May 25th, 2016. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine pctile(x,npts,npct,xpct) 5 | 6 | parameter (NMAX=32768) 7 | real*4 x(npts) 8 | real*4 tmp(NMAX) 9 | real*4 xpct 10 | 11 | if(npts.le.0) then 12 | xpct=1.0 13 | go to 900 14 | endif 15 | if(npts.gt.NMAX) stop 16 | 17 | tmp(1:npts)=x 18 | call shell(npts,tmp) 19 | j=nint(npts*0.01*npct) 20 | if(j.lt.1) j=1 21 | if(j.gt.npts) j=npts 22 | xpct=tmp(j) 23 | 24 | 900 continue 25 | return 26 | end subroutine pctile 27 | -------------------------------------------------------------------------------- /lib/peakup.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor Chernikov UA3DJY on July 07th, 2016. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine peakup(ym,y0,yp,dx) 5 | 6 | real*4 b,c,dx,yp,ym,y0 7 | 8 | b=yp-ym 9 | c=yp+ym-2*y0 10 | dx=-((b/c)/2) 11 | 12 | return 13 | end subroutine peakup 14 | -------------------------------------------------------------------------------- /lib/prog_args.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Arvo ES1JA on January 6th, 2017. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | MODULE prog_args 4 | CHARACTER(len=80) :: shm_key 5 | CHARACTER(len=500) :: exe_dir = '.', data_dir = '.', temp_dir = '.', share_dir = '.' 6 | END MODULE prog_args 7 | -------------------------------------------------------------------------------- /lib/sec_midn.f90: -------------------------------------------------------------------------------- 1 | real function sec_midn() 2 | sec_midn=secnds(0.0) 3 | return 4 | end function sec_midn 5 | 6 | subroutine sleep_msec(n) 7 | 8 | call usleep(1000*n) 9 | 10 | return 11 | end subroutine sleep_msec 12 | -------------------------------------------------------------------------------- /lib/sfrsd/Makefile: -------------------------------------------------------------------------------- 1 | srcdir = . 2 | prefix = /usr/local 3 | exec_prefix=${prefix} 4 | CC=gcc 5 | 6 | CFLAGS=-I/usr/local/include -Wall -O3 7 | 8 | all: sfrsd 9 | 10 | encode_rs_int.o: encode_rs.c 11 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 12 | 13 | decode_rs_int.o: decode_rs.c 14 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 15 | 16 | init_rs_int.o: init_rs.c 17 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 18 | 19 | sfrsd: sfrsd.o encode_rs_int.o decode_rs_int.o init_rs_int.o 20 | gcc -g -o $@ $^ 21 | 22 | clean: 23 | rm -f *.o *.a sfrsd 24 | 25 | -------------------------------------------------------------------------------- /lib/sfrsd/Makefile.win32: -------------------------------------------------------------------------------- 1 | srcdir = . 2 | prefix = /usr/local 3 | exec_prefix=${prefix} 4 | CC=gcc 5 | 6 | CFLAGS=-I/usr/local/include -Wall -O3 7 | 8 | all: sfrsd.exe 9 | 10 | encode_rs_int.o: encode_rs.c 11 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 12 | 13 | decode_rs_int.o: decode_rs.c 14 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 15 | 16 | init_rs_int.o: init_rs.c 17 | gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^ 18 | 19 | sfrsd.exe: sfrsd.o encode_rs_int.o decode_rs_int.o init_rs_int.o 20 | gcc -g -DWIN32 -o $@ $^ 21 | 22 | clean: 23 | rm -f *.o *.a sfrsd.exe 24 | 25 | -------------------------------------------------------------------------------- /lib/sfrsd/fixed.h: -------------------------------------------------------------------------------- 1 | /* Configure the RS codec with fixed parameters for CCSDS standard 2 | * (255,223) code over GF(256). Note: the conventional basis is still 3 | * used; the dual-basis mappings are performed in [en|de]code_rs_ccsds.c 4 | * 5 | * Copyright 2002 Phil Karn, KA9Q 6 | * May be used under the terms of the GNU General Public License (GPL) 7 | */ 8 | #define DTYPE unsigned char 9 | 10 | static inline int mod255(int x){ 11 | while (x >= 255) { 12 | x -= 255; 13 | x = (x >> 8) + (x & 255); 14 | } 15 | return x; 16 | } 17 | #define MODNN(x) mod255(x) 18 | 19 | extern unsigned char CCSDS_alpha_to[]; 20 | extern unsigned char CCSDS_index_of[]; 21 | extern unsigned char CCSDS_poly[]; 22 | 23 | #define MM 8 24 | #define NN 255 25 | #define ALPHA_TO CCSDS_alpha_to 26 | #define INDEX_OF CCSDS_index_of 27 | #define GENPOLY CCSDS_poly 28 | #define NROOTS 32 29 | #define FCR 112 30 | #define PRIM 11 31 | #define IPRIM 116 32 | #define A0 (NN) 33 | 34 | #define ENCODE_RS encode_rs_8 35 | #define DECODE_RS decode_rs_8 36 | 37 | void ENCODE_RS(DTYPE *data,DTYPE *parity); 38 | int DECODE_RS(DTYPE *data, int *eras_pos, int no_eras); 39 | -------------------------------------------------------------------------------- /lib/sfrsd/kvasd.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/sfrsd/kvasd.dat -------------------------------------------------------------------------------- /lib/sfrsd/kvasd7.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/sfrsd/kvasd7.dat -------------------------------------------------------------------------------- /lib/sfrsd/kvasd_bmfail.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/sfrsd/kvasd_bmfail.dat -------------------------------------------------------------------------------- /lib/sfrsd/kvasd_sample.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/lib/sfrsd/kvasd_sample.dat -------------------------------------------------------------------------------- /lib/sfrsd/rs.h: -------------------------------------------------------------------------------- 1 | /* User include file for the Reed-Solomon codec 2 | * Copyright 2002, Phil Karn KA9Q 3 | * May be used under the terms of the GNU General Public License (GPL) 4 | */ 5 | 6 | /* General purpose RS codec, integer symbols */ 7 | void encode_rs_int(void *rs,int *data,int *parity); 8 | int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras, int calc_syn); 9 | void *init_rs_int(int symsize,int gfpoly,int fcr, 10 | int prim,int nroots,int pad); 11 | void free_rs_int(void *rs); 12 | 13 | /* Tables to map from conventional->dual (Taltab) and 14 | * dual->conventional (Tal1tab) bases 15 | */ 16 | extern unsigned char Taltab[],Tal1tab[]; 17 | -------------------------------------------------------------------------------- /lib/sgran.c: -------------------------------------------------------------------------------- 1 | #include "init_random_seed.h" 2 | 3 | /* Fortran wrapper to seed the C library rand */ 4 | void sgran_(void) 5 | { 6 | init_random_seed(); 7 | } 8 | -------------------------------------------------------------------------------- /lib/shell.f90: -------------------------------------------------------------------------------- 1 | subroutine shell(n,a) 2 | integer n 3 | real a(n) 4 | integer i,j,inc 5 | real v 6 | 7 | inc=1 8 | 1 inc=3*inc+1 9 | if(inc.le.n) go to 1 10 | 2 inc=inc/3 11 | 12 | do i=inc+1,n 13 | v=a(i) 14 | j=i 15 | 3 if(a(j-inc).gt.v) then 16 | a(j)=a(j-inc) 17 | j=j-inc 18 | if(j.le.inc) go to 4 19 | go to 3 20 | endif 21 | 4 a(j)=v 22 | enddo 23 | 24 | if(inc.gt.1) go to 2 25 | 26 | return 27 | end subroutine shell 28 | -------------------------------------------------------------------------------- /lib/sleep.h: -------------------------------------------------------------------------------- 1 | /* 2 | * sleep.h 1.0 02/03/10 3 | * 4 | * Defines cross-platform sleep, usleep, etc. 5 | * 6 | * By Wu Yongwei 7 | * 8 | */ 9 | 10 | #ifndef _SLEEP_H 11 | #define _SLEEP_H 12 | 13 | #ifdef _WIN32 14 | # if defined(_NEED_SLEEP_ONLY) && (defined(_MSC_VER) || defined(__MINGW32__)) 15 | # include 16 | # define sleep(t) _sleep((t) * 1000) 17 | # else 18 | # include 19 | # define sleep(t) Sleep((t) * 1000) 20 | # endif 21 | # ifndef _NEED_SLEEP_ONLY 22 | # define msleep(t) Sleep(t) 23 | # define usleep(t) Sleep((t) / 1000) 24 | # endif 25 | #else 26 | # include 27 | # ifndef _NEED_SLEEP_ONLY 28 | # define msleep(t) usleep((t) * 1000) 29 | # endif 30 | #endif 31 | 32 | #endif /* _SLEEP_H */ 33 | -------------------------------------------------------------------------------- /lib/sleep_msec.f90: -------------------------------------------------------------------------------- 1 | subroutine sleep_msec(n) 2 | call usleep(n*1000) 3 | return 4 | end subroutine sleep_msec 5 | -------------------------------------------------------------------------------- /lib/smo.f90: -------------------------------------------------------------------------------- 1 | subroutine smo(x,npts,y,nadd) 2 | 3 | real x(npts) 4 | real y(npts) 5 | 6 | nh=nadd/2 7 | do i=1+nh,npts-nh 8 | sum1=0. 9 | do j=-nh,nh 10 | sum1=sum1 + x(i+j) 11 | enddo 12 | y(i)=sum1 13 | enddo 14 | x=y 15 | x(:nh)=0. 16 | x(npts-nh+1:)=0. 17 | 18 | return 19 | end subroutine smo 20 | -------------------------------------------------------------------------------- /lib/splitdupecq.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on February 6th, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine splitdupecq(decoded,callcq) 5 | 6 | 7 | character decoded*22,callcq*6 8 | 9 | i1=index(decoded,' ') 10 | i2=index(decoded(i1+1:),' ') 11 | 12 | if(i2.eq.3) then ! directional CQ message 13 | i2=i2+i1 14 | i3=index(decoded(i2+1:),' ') 15 | i3=i3+i2 16 | if(len_trim(decoded(i2+1:i3-1)).gt.6) go to 2 17 | callcq=decoded(i2+1:i3-1) 18 | go to 2 19 | endif 20 | 21 | if(i2.gt.3) then ! non-directional CQ message 22 | i2=i2+i1 23 | callcq=decoded(i1+1:i2-1) 24 | endif 25 | 26 | 2 return 27 | end subroutine splitdupecq 28 | -------------------------------------------------------------------------------- /lib/splitmsgdupe.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor UA3DJY on February 6th, 2017 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine splitmsgdupe(decodedhist,callncq) 5 | 6 | character decodedhist*22,callncq*6 7 | 8 | if(decodedhist(1:3).eq.'CQ ' .or. & 9 | decodedhist(1:3).eq.'QRZ' .or. decodedhist(1:3).eq.'DE ') return 10 | 11 | i1=index(decodedhist,' ') 12 | if(i1.lt.4) return 13 | i2=index(decodedhist(i1+1:),' ') 14 | if(i2.lt.4) return 15 | i2=i2+i1 16 | if(len_trim(decodedhist(i1+1:i2-1)).gt.6) return 17 | callncq=decodedhist(i1+1:i2-1) 18 | 19 | 20 | return 21 | end subroutine splitmsgdupe 22 | -------------------------------------------------------------------------------- /lib/ss.bat: -------------------------------------------------------------------------------- 1 | svn status | grep -v "?" 2 | -------------------------------------------------------------------------------- /lib/stdmsg.f90: -------------------------------------------------------------------------------- 1 | function stdmsg(msg0) 2 | 3 | ! Returns .true. if msg0 a standard "JT-style" message 4 | 5 | ! i3.n3 6 | ! 0.0 Free text 7 | ! 0.1 DXpeditiion mode 8 | ! 0.2 EU VHF Contest 9 | ! 0.3 ARRL Field Day <=16 transmitters 10 | ! 0.4 ARRL Field Day >16 transmitters 11 | ! 0.5 telemetry 12 | ! 0.6 13 | ! 0.7 14 | ! 1 Standard 77-bit structured message (optional /R) 15 | ! 2 EU VHF Contest (optional /P) 16 | ! 3 ARRL RTTY Contest 17 | ! 4 Nonstandard calls 18 | 19 | use iso_c_binding, only: c_bool 20 | use packjt 21 | use packjt77 22 | 23 | character*37 msg0,msg1 24 | character*77 c77 25 | logical(c_bool) :: stdmsg 26 | 27 | msg1=msg0 28 | i3=-1 29 | n3=-1 30 | call pack77(msg1,i3,n3,c77,0) 31 | stdmsg=(i3.gt.0 .or. n3.gt.0) 32 | 33 | !### 34 | ! rewind 82 35 | ! do i=1,nzhash 36 | ! write(82,3082) i,nzhash,callsign(i),ihash10(i),ihash12(i),ihash22(i) 37 | !3082 format(2i5,2x,a13,3i10) 38 | ! enddo 39 | ! flush(82) 40 | !### 41 | 42 | return 43 | end function stdmsg 44 | -------------------------------------------------------------------------------- /lib/tab.c: -------------------------------------------------------------------------------- 1 | /* 8-bit parity lookup table, generated by partab.c */ 2 | unsigned char Partab[] = { 3 | 0, 1, 1, 0, 1, 0, 0, 1, 4 | 1, 0, 0, 1, 0, 1, 1, 0, 5 | 1, 0, 0, 1, 0, 1, 1, 0, 6 | 0, 1, 1, 0, 1, 0, 0, 1, 7 | 1, 0, 0, 1, 0, 1, 1, 0, 8 | 0, 1, 1, 0, 1, 0, 0, 1, 9 | 0, 1, 1, 0, 1, 0, 0, 1, 10 | 1, 0, 0, 1, 0, 1, 1, 0, 11 | 1, 0, 0, 1, 0, 1, 1, 0, 12 | 0, 1, 1, 0, 1, 0, 0, 1, 13 | 0, 1, 1, 0, 1, 0, 0, 1, 14 | 1, 0, 0, 1, 0, 1, 1, 0, 15 | 0, 1, 1, 0, 1, 0, 0, 1, 16 | 1, 0, 0, 1, 0, 1, 1, 0, 17 | 1, 0, 0, 1, 0, 1, 1, 0, 18 | 0, 1, 1, 0, 1, 0, 0, 1, 19 | 1, 0, 0, 1, 0, 1, 1, 0, 20 | 0, 1, 1, 0, 1, 0, 0, 1, 21 | 0, 1, 1, 0, 1, 0, 0, 1, 22 | 1, 0, 0, 1, 0, 1, 1, 0, 23 | 0, 1, 1, 0, 1, 0, 0, 1, 24 | 1, 0, 0, 1, 0, 1, 1, 0, 25 | 1, 0, 0, 1, 0, 1, 1, 0, 26 | 0, 1, 1, 0, 1, 0, 0, 1, 27 | 0, 1, 1, 0, 1, 0, 0, 1, 28 | 1, 0, 0, 1, 0, 1, 1, 0, 29 | 1, 0, 0, 1, 0, 1, 1, 0, 30 | 0, 1, 1, 0, 1, 0, 0, 1, 31 | 1, 0, 0, 1, 0, 1, 1, 0, 32 | 0, 1, 1, 0, 1, 0, 0, 1, 33 | 0, 1, 1, 0, 1, 0, 0, 1, 34 | 1, 0, 0, 1, 0, 1, 1, 0, 35 | }; 36 | 37 | -------------------------------------------------------------------------------- /lib/test_init_random_seed.f90: -------------------------------------------------------------------------------- 1 | program test_init_random_seed 2 | real :: r(10,4) 3 | call init_random_seed() 4 | call random_number(r) 5 | do i =1,10 6 | write (*, *) (r(i,j),j=1,4) 7 | end do 8 | end program test_init_random_seed 9 | -------------------------------------------------------------------------------- /lib/testfast9.f90: -------------------------------------------------------------------------------- 1 | program testfast9 2 | 3 | parameter (NMAX=359424) 4 | integer*2 id2(NMAX) 5 | integer narg(0:11) 6 | character*80 line(100) 7 | character submode*1,infile*80 8 | 9 | nargs=iargc() 10 | if(nargs.ne.2) then 11 | print*,'Usage: testfast9 submode infile' 12 | print*,'Example: testfast9 E /data/VE1SKY/K1JT/JT9E/150806_123300.wav' 13 | go to 999 14 | endif 15 | call getarg(1,submode) 16 | call getarg(2,infile) 17 | 18 | open(10,file=infile,access='stream',status='old') 19 | read(10) id2(1:22) !Skip 44 header bytes 20 | npts=NMAX 21 | read(10,end=1) id2(1:npts) !Read the raw data 22 | 23 | 1 i1=index(infile,'.wav') 24 | read(infile(i1-6:i1-1),*) narg(0) 25 | narg(1)=NMAX 26 | n=ichar(submode) 27 | narg(2)=n-ichar('A') 28 | if(n.ge.97 .and. n.le.104) narg(2)=n-ichar('a') 29 | narg(3)=1 30 | narg(4)=0 31 | narg(5)=0 32 | narg(6)=0 33 | narg(7)=29951 34 | narg(8)=1 35 | narg(9)=102 36 | narg(10)=700 37 | narg(11)=500 38 | 39 | call fast9(id2,narg,line) 40 | print*,line(1) 41 | 42 | 999 end program testfast9 43 | -------------------------------------------------------------------------------- /lib/timer_common.inc: -------------------------------------------------------------------------------- 1 | integer :: level, onlevel(0:10) 2 | common/timer_private/ level, onlevel 3 | !$omp threadprivate(/timer_private/) 4 | -------------------------------------------------------------------------------- /lib/timer_module.f90: -------------------------------------------------------------------------------- 1 | module timer_module 2 | implicit none 3 | 4 | abstract interface 5 | subroutine timer_callback (dname, k) 6 | character(len=8), intent(in) :: dname 7 | integer, intent(in) :: k 8 | end subroutine timer_callback 9 | end interface 10 | 11 | public :: null_timer 12 | procedure(timer_callback), pointer :: timer => null_timer 13 | 14 | contains 15 | ! 16 | ! default Fortran implementation which does nothing 17 | ! 18 | subroutine null_timer (dname, k) 19 | implicit none 20 | character(len=8), intent(in) :: dname 21 | integer, intent(in) :: k 22 | end subroutine null_timer 23 | end module timer_module 24 | -------------------------------------------------------------------------------- /lib/to_contest_msg.f90: -------------------------------------------------------------------------------- 1 | subroutine to_contest_msg(msg0,msg) 2 | 3 | ! If the message has "R grid4" istead of "grid4", remove the "R " 4 | ! and substitute the diametrically opposite grid. 5 | 6 | character*6 g1,g2 7 | character*22 msg0,msg 8 | logical isgrid 9 | isgrid(g1)=g1(1:1).ge.'A' .and. g1(1:1).le.'R' .and. g1(2:2).ge.'A' .and. & 10 | g1(2:2).le.'R' .and. g1(3:3).ge.'0' .and. g1(3:3).le.'9' .and. & 11 | g1(4:4).ge.'0' .and. g1(4:4).le.'9' .and. g1(1:4).ne.'RR73' 12 | 13 | i0=index(msg0,' R ') + 3 !Check for ' R ' in message 14 | g1=msg0(i0:i0+3)//' ' 15 | if(isgrid(g1)) then !Check for ' R grid' 16 | call grid2deg(g1,dlong,dlat) 17 | dlong=dlong+180.0 18 | if(dlong.gt.180.0) dlong=dlong-360.0 19 | dlat=-dlat 20 | call deg2grid(dlong,dlat,g2) !g2=antipodes grid 21 | msg=msg0(1:i0-3)//g2(1:4) !Send message with g2 22 | else 23 | msg=msg0 24 | endif 25 | 26 | return 27 | end subroutine to_contest_msg 28 | -------------------------------------------------------------------------------- /lib/tone8myc.f90: -------------------------------------------------------------------------------- 1 | subroutine tone8myc() 2 | 3 | use ft8_mod1, only : idtonemyc,mycall 4 | character msg37*37,msgsent37*37 5 | integer itone(79) 6 | integer*1 msgbits(77) 7 | 8 | msg37=''; msg37=trim(mycall)//' AA1AAA FN25' 9 | i3=-1; n3=-1 10 | call genft8(msg37,i3,n3,0,msgsent37,msgbits,itone) 11 | idtonemyc(1:29)=itone(8:36); idtonemyc(30:58)=itone(44:72) 12 | 13 | return 14 | end subroutine tone8myc 15 | -------------------------------------------------------------------------------- /lib/tstrig.c: -------------------------------------------------------------------------------- 1 | #include "config.h" 2 | #include 3 | #include 4 | #include 5 | #include "tstrig.h" 6 | 7 | int set_conf(RIG *my_rig, char *conf_parms); 8 | 9 | int rig_control(rig_model_t my_model, int verbose); 10 | 11 | int main (int argc, char *argv[]) 12 | { 13 | rig_model_t my_model = RIG_MODEL_DUMMY; 14 | int verbose=0; 15 | 16 | my_model=214; 17 | rig_control(my_model,verbose); 18 | return 0; 19 | } 20 | 21 | /* 22 | gcc -c -Wall -I../include rig_control.c 23 | gcc -c -Wall -I../include tstrig.c 24 | gcc -o tstrig.exe -Wl,--enable-auto-import tstrig.o rig_control.o libhamlib.dll.a 25 | strip tstrig.exe 26 | */ 27 | -------------------------------------------------------------------------------- /lib/twkfreq.f90: -------------------------------------------------------------------------------- 1 | subroutine twkfreq(c3,c4,npts,fsample,a) 2 | 3 | complex c3(npts) 4 | complex c4(npts) 5 | complex w,wstep 6 | real a(3) 7 | data twopi/6.283185307/ 8 | 9 | ! Mix the complex signal 10 | w=1.0 11 | wstep=1.0 12 | x0=0.5*(npts+1) 13 | s=2.0/npts 14 | do i=1,npts 15 | x=s*(i-x0) 16 | p2=1.5*x*x - 0.5 17 | ! p3=2.5*(x**3) - 1.5*x 18 | ! p4=4.375*(x**4) - 3.75*(x**2) + 0.375 19 | dphi=(a(1) + x*a(2) + p2*a(3)) * (twopi/fsample) 20 | wstep=cmplx(cos(dphi),sin(dphi)) 21 | w=w*wstep 22 | c4(i)=w*c3(i) 23 | enddo 24 | 25 | return 26 | end subroutine twkfreq 27 | -------------------------------------------------------------------------------- /lib/twkfreq1.f90: -------------------------------------------------------------------------------- 1 | subroutine twkfreq1(ca,nbot,npts,ntop,fsample,a,cb) 2 | 3 | use ft8_mod1, only : twopi 4 | complex, intent(in) :: ca(nbot:ntop) 5 | complex, intent(out) :: cb(nbot:ntop) 6 | complex w,wstep 7 | real a(5) 8 | 9 | ! Mix the complex signal 10 | w=1.0; wstep=1.0 11 | !! x0=0.5*(npts+1) 12 | !! s=2.0/npts 13 | do i=0,npts 14 | !! x=s*(i-x0) ! valid for 'do i=1,npts' 15 | !! p2=1.5*x*x - 0.5 16 | !! p3=2.5*(x**3) - 1.5*x 17 | !! p4=4.375*(x**4) - 3.75*(x**2) + 0.375 18 | !! dphi=(a(1) + x*a(2) + p2*a(3) + p3*a(4) + p4*a(5)) * (twopi/fsample) 19 | dphi=a(1) * (twopi/fsample) 20 | wstep=cmplx(cos(dphi),sin(dphi)) 21 | w=w*wstep 22 | cb(i)=w*ca(i) 23 | enddo 24 | 25 | return 26 | end subroutine twkfreq1 27 | -------------------------------------------------------------------------------- /lib/twkfreq65.f90: -------------------------------------------------------------------------------- 1 | ! This source code file was last time modified by Igor Chernikov UA3DJY on October 03rd, 2016. 2 | ! All changes are shown in the patch file coming together with the full JTDX source code. 3 | 4 | subroutine twkfreq65(cx,n5,a) 5 | 6 | complex cx(n5) 7 | real a(2) 8 | complex w,wstep 9 | data twopi/6.283185307/ 10 | 11 | ! Apply AFC corrections to the cx data 12 | w=1.0 13 | wstep=1.0 14 | x0=0.5*n5 15 | do i=1,n5 16 | if(mod(i,100).eq.1) then 17 | x=(i-x0)/float(n5) 18 | dphi=(a(1) + x*a(2)) * (twopi/1378.125) 19 | wstep=cmplx(cos(dphi),sin(dphi)) 20 | endif 21 | w=w*wstep 22 | cx(i)=w*cx(i) 23 | enddo 24 | return 25 | end subroutine twkfreq65 26 | -------------------------------------------------------------------------------- /lib/usleep.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "sleep.h" 3 | 4 | /* usleep(3) */ 5 | void usleep_(unsigned long *microsec) 6 | { 7 | usleep(*microsec); 8 | } 9 | -------------------------------------------------------------------------------- /lib/wav11.f90: -------------------------------------------------------------------------------- 1 | subroutine wav11(d2,npts,dd) 2 | 3 | ! Convert i*2 data sampled at 12000 Hz to r*4 sampled at 11025 Hz. 4 | 5 | parameter (NZ11=60*11025,NZ12=60*12000) 6 | parameter (NFFT1=64*12000,NFFT2=64*11025) 7 | integer*2 d2(NZ12) 8 | real*4 dd(NZ11) 9 | real x(NFFT2) 10 | complex cx(0:NFFT1/2) 11 | equivalence (x,cx) 12 | save x,cx 13 | 14 | jz=min(NZ12,npts) 15 | x(1:jz)=d2(1:jz) 16 | x(jz+1:)=0.0 17 | call four2a(cx,nfft1,1,-1,0) !Forwarxd FFT, r2c 18 | df=12000.0/NFFT1 19 | ia=5000.0/df 20 | cx(ia:)=0.0 21 | call four2a(cx,nfft2,1,1,-1) !Inverse FFT, c2r 22 | npts=jz*11025.0/12000.0 23 | fac=1.e-6 24 | dd(1:npts)=fac*x(1:npts) 25 | if(npts.lt.NZ11) dd(npts+1:NZ11)=0.0 26 | 27 | return 28 | end subroutine wav11 29 | -------------------------------------------------------------------------------- /lib/wisdom.c: -------------------------------------------------------------------------------- 1 | void export_wisdom_(char fname[], int len) 2 | { 3 | int fftwf_export_wisdom_to_filename(const char *); 4 | fname[len-1]=0; 5 | fftwf_export_wisdom_to_filename(fname); 6 | } 7 | 8 | void import_wisdom_(char fname[], int *success, int len) 9 | { 10 | int fftwf_import_wisdom_from_filename(const char *); 11 | fname[len-1]=0; 12 | *success = fftwf_import_wisdom_from_filename(fname); 13 | } 14 | -------------------------------------------------------------------------------- /lib/wisdom1.bat: -------------------------------------------------------------------------------- 1 | C:\JTSDK-QT\fftw3f\fftwf-wisdom -o fftwf_wisdom.dat -t 1 -m rif672000 cif77175 cib77175 rif16384 rif884736 cib2048 rif8192 rif512 rib512 cib512 2 | 3 | -------------------------------------------------------------------------------- /lib/wsprd/Makefile: -------------------------------------------------------------------------------- 1 | CC = gcc 2 | FC = gfortran 3 | 4 | CFLAGS= -I/usr/include -Wall -Wno-missing-braces -Wno-unused-result -O3 -ffast-math 5 | LDFLAGS = -L/usr/lib 6 | FFLAGS = -O2 -Wall -Wno-conversion 7 | LIBS = -lfftw3f -lm -lgfortran 8 | 9 | # Default rules 10 | %.o: %.c $(DEPS) 11 | ${CC} ${CFLAGS} -c $< 12 | %.o: %.f 13 | ${FC} ${FFLAGS} -c $< 14 | %.o: %.F 15 | ${FC} ${FFLAGS} -c $< 16 | %.o: %.f90 17 | ${FC} ${FFLAGS} -c $< 18 | %.o: %.F90 19 | ${FC} ${FFLAGS} -c $< 20 | 21 | all: wsprd_jtdx wsprsim 22 | 23 | DEPS = wsprsim_utils.h wsprd_utils.h fano.h jelinek.h nhash.h 24 | 25 | indexx.o: ../indexx.f90 26 | ${FC} -o indexx.o ${FFLAGS} -c ../indexx.f90 27 | 28 | OBJS1 = wsprd.o wsprsim_utils.o wsprd_utils.o tab.o fano.o jelinek.o nhash.o indexx.o osdwspr.o 29 | 30 | wsprd_jtdx: $(OBJS1) 31 | $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) $(LIBS) 32 | 33 | OBJS2 = wsprsim.o wsprsim_utils.o wsprd_utils.o tab.o fano.o nhash.o 34 | 35 | wsprsim: $(OBJS2) 36 | $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) $(LIBS) 37 | 38 | clean: 39 | $(RM) *.o wsprd_jtdx wsprsim 40 | -------------------------------------------------------------------------------- /lib/wsprd/Makefile.MinGW: -------------------------------------------------------------------------------- 1 | CC = gcc 2 | #CC = clang 3 | FC = gfortran 4 | 5 | FFLAGS = -O2 -Wall -Wno-conversion 6 | CFLAGS= -Wall -Wno-missing-braces -O2 7 | #LDFLAGS = -L/JTSDK/fftw3f 8 | LIBS = c:/JTSDK/fftw3f/libfftw3-3.dll -lm 9 | 10 | # Default rules 11 | %.o: %.c $(DEPS) 12 | ${CC} ${CFLAGS} -c $< 13 | %.o: %.f 14 | ${FC} ${FFLAGS} -c $< 15 | %.o: %.F 16 | ${FC} ${FFLAGS} -c $< 17 | %.o: %.f90 18 | ${FC} ${FFLAGS} -c $< 19 | %.o: %.F90 20 | ${FC} ${FFLAGS} -c $< 21 | 22 | all: wsprd 23 | 24 | DEPS = fano.h 25 | OBJS1 = wsprd.o wsprd_utils.o fano.o tab.o nhash.o 26 | wsprd: $(OBJS1) 27 | $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) $(LIBS) 28 | 29 | clean: 30 | rm *.o wsprd 31 | -------------------------------------------------------------------------------- /lib/wsprd/gran.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | /* Generate gaussian random float with mean=0 and std_dev=1 */ 5 | float gran_() 6 | { 7 | float fac,rsq,v1,v2; 8 | static float gset; 9 | static int iset; 10 | 11 | if(iset){ 12 | /* Already got one */ 13 | iset = 0; 14 | return gset; 15 | } 16 | /* Generate two evenly distributed numbers between -1 and +1 17 | * that are inside the unit circle 18 | */ 19 | do { 20 | v1 = 2.0 * (float)rand() / RAND_MAX - 1; 21 | v2 = 2.0 * (float)rand() / RAND_MAX - 1; 22 | rsq = v1*v1 + v2*v2; 23 | } while(rsq >= 1.0 || rsq == 0.0); 24 | fac = sqrt(-2.0*log(rsq)/rsq); 25 | gset = v1*fac; 26 | iset++; 27 | return v2*fac; 28 | } 29 | -------------------------------------------------------------------------------- /lib/wsprd/jelinek.h: -------------------------------------------------------------------------------- 1 | #ifndef JELINEK_H 2 | #define JELINEK_H 3 | 4 | #include 5 | 6 | struct snode { 7 | uint64_t encstate; // Encoder state 8 | int gamma; // Cumulative metric to this node 9 | unsigned int depth; // depth of this node 10 | unsigned int jpointer; 11 | }; 12 | 13 | int jelinek(unsigned int *metric, 14 | unsigned int *cycles, 15 | unsigned char *data, 16 | unsigned char *symbols, 17 | unsigned int nbits, 18 | unsigned int stacksize, 19 | struct snode *stack, 20 | int mettab[2][256], 21 | unsigned int maxcycles); 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /lib/wsprd/nhash.h: -------------------------------------------------------------------------------- 1 | #ifndef NHASH_H_ 2 | #define NHASH_H_ 3 | 4 | #ifdef Win32 5 | #include "win_stdint.h" /* defines uint32_t etc */ 6 | #else 7 | #include 8 | #include /* defines uint32_t etc */ 9 | #endif 10 | 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | 15 | uint32_t nhash( const void * key, size_t length, uint32_t initval); 16 | 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /lib/wsprd/t2.f90: -------------------------------------------------------------------------------- 1 | program t2 2 | 3 | df=375.0/65536.0 4 | do i=1,65536 5 | w=1.0/(1.0 + ((i-32768)/26214.0)**20) 6 | f=(i-32768)*df 7 | write(13,1010) f,w 8 | 1010 format(2f15.6) 9 | enddo 10 | 11 | end program t2 12 | -------------------------------------------------------------------------------- /lib/wsprd/tab.c: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of wsprd. 3 | 4 | File name: tab.c 5 | Description: 8-bit parity lookup table. 6 | */ 7 | unsigned char Partab[] = { 8 | 0, 1, 1, 0, 1, 0, 0, 1, 9 | 1, 0, 0, 1, 0, 1, 1, 0, 10 | 1, 0, 0, 1, 0, 1, 1, 0, 11 | 0, 1, 1, 0, 1, 0, 0, 1, 12 | 1, 0, 0, 1, 0, 1, 1, 0, 13 | 0, 1, 1, 0, 1, 0, 0, 1, 14 | 0, 1, 1, 0, 1, 0, 0, 1, 15 | 1, 0, 0, 1, 0, 1, 1, 0, 16 | 1, 0, 0, 1, 0, 1, 1, 0, 17 | 0, 1, 1, 0, 1, 0, 0, 1, 18 | 0, 1, 1, 0, 1, 0, 0, 1, 19 | 1, 0, 0, 1, 0, 1, 1, 0, 20 | 0, 1, 1, 0, 1, 0, 0, 1, 21 | 1, 0, 0, 1, 0, 1, 1, 0, 22 | 1, 0, 0, 1, 0, 1, 1, 0, 23 | 0, 1, 1, 0, 1, 0, 0, 1, 24 | 1, 0, 0, 1, 0, 1, 1, 0, 25 | 0, 1, 1, 0, 1, 0, 0, 1, 26 | 0, 1, 1, 0, 1, 0, 0, 1, 27 | 1, 0, 0, 1, 0, 1, 1, 0, 28 | 0, 1, 1, 0, 1, 0, 0, 1, 29 | 1, 0, 0, 1, 0, 1, 1, 0, 30 | 1, 0, 0, 1, 0, 1, 1, 0, 31 | 0, 1, 1, 0, 1, 0, 0, 1, 32 | 0, 1, 1, 0, 1, 0, 0, 1, 33 | 1, 0, 0, 1, 0, 1, 1, 0, 34 | 1, 0, 0, 1, 0, 1, 1, 0, 35 | 0, 1, 1, 0, 1, 0, 0, 1, 36 | 1, 0, 0, 1, 0, 1, 1, 0, 37 | 0, 1, 1, 0, 1, 0, 0, 1, 38 | 0, 1, 1, 0, 1, 0, 0, 1, 39 | 1, 0, 0, 1, 0, 1, 1, 0, 40 | }; 41 | 42 | -------------------------------------------------------------------------------- /lib/wsprd/wsprd_stats.txt: -------------------------------------------------------------------------------- 1 | Linux Windows 2 | Program Time Decodes Time Decodes 3 | ------------------------------------------------- 4 | wsprd (Mar 2013) 2413 1451 2718 1451 5 | 6 | k9an-wsprd 1800 2122 7 | k9an_wsprd -q 354 1939 8 | 9 | wsprd 399 2190 356 2190 10 | wsprd -q 214 2034 192 2034 11 | 12 | wsprd* 1240 2215 13 | wsprd# 1599 2220 14 | 15 | ------------------------------------------------- 16 | * maxcycles=30000 17 | # maxcycles=20000, iifac=1 18 | ------------------------------------------------- 19 | Test data: 638 *.wav files (recorded by WSJT-X) 20 | ------------------------------------------------- 21 | Linux machine: Core 2 Duo, E6750 CPU 22 | Windows machine: 4-Core i5-2500 CPU 23 | wsprd git commit: eecc274 24 | ------------------------------------------------- 25 | -------------------------------------------------------------------------------- /lib/wsprd/wsprd_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef WSPRD_UTILS_H 2 | #define WSPRD_UTILS_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include "nhash.h" 12 | 13 | void unpack50( signed char *dat, int32_t *n1, int32_t *n2 ); 14 | 15 | int unpackcall( int32_t ncall, char *call ); 16 | 17 | int unpackgrid( int32_t ngrid, char *grid); 18 | 19 | int unpackpfx( int32_t nprefix, char *call); 20 | 21 | void deinterleave(unsigned char *sym); 22 | 23 | // used by qsort 24 | int doublecomp(const void* elem1, const void* elem2); 25 | int floatcomp(const void* elem1, const void* elem2); 26 | 27 | int unpk_( signed char *message, char* hashtab, char* loctab, char *call_loc_pow, char *callsign); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /lib/wsprd/wsprsim_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef WSPRSIM_UTILS_H 2 | #define WSPRSIM_UTILS_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | extern int printdata; 13 | 14 | int get_wspr_channel_symbols(char* message, char* hashtab, char*loctab, unsigned char* symbols); 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /lib/zplot9.f90: -------------------------------------------------------------------------------- 1 | subroutine zplot9(s,freq,drift) 2 | 3 | real s(0:8,85) 4 | character*1 line(85),mark(0:6) 5 | data mark/' ',' ','.','-','+','X','$'/ 6 | include 'jt9sync.f90' 7 | 8 | write(32,1000) freq,drift 9 | 1000 format('Freq:',f7.1,' Drift:',f5.1,' ',60('-')) 10 | do j=8,0,-1 11 | do i=1,85 12 | n=(s(j,i)) 13 | if(n.lt.0) n=0 14 | if(n.gt.6) n=6 15 | line(i)=mark(n) 16 | enddo 17 | write(32,1010) j,line 18 | 1010 format(i1,1x,85a1) 19 | enddo 20 | do i=1,85 21 | line(i)=' ' 22 | if(isync(i).eq.1) line(i)='@' 23 | enddo 24 | write(32,1015) 25 | 1015 format(87('-')) 26 | write(32,1020) line 27 | 1020 format(2x,85a1) 28 | call flush(32) 29 | 30 | return 31 | end subroutine zplot9 32 | -------------------------------------------------------------------------------- /logbook/countriesworked.cpp: -------------------------------------------------------------------------------- 1 | #include "countriesworked.h" 2 | 3 | void CountriesWorked::init(const QStringList countryNames) 4 | { 5 | _data.clear(); 6 | foreach(QString name,countryNames) 7 | _data.insert(name,false); 8 | } 9 | 10 | void CountriesWorked::setAsWorked(const QString countryName) 11 | { 12 | if (_data.contains(countryName)) 13 | _data.insert(countryName,true); 14 | } 15 | 16 | bool CountriesWorked::getHasWorked(const QString countryName) 17 | { 18 | if (_data.contains(countryName)) 19 | return _data.value(countryName); 20 | 21 | return false; 22 | } 23 | 24 | int CountriesWorked::getWorkedCount() 25 | { 26 | int count = 0; 27 | foreach (bool value,_data) 28 | if (value) 29 | count += 1; 30 | return count; 31 | } 32 | 33 | int CountriesWorked::getSize() 34 | { 35 | return _data.count(); 36 | } 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /logbook/countriesworked.h: -------------------------------------------------------------------------------- 1 | /* 2 | * maintains a list of country names that have been worked 3 | * VK3ACF July 2013 4 | */ 5 | 6 | #ifndef __COUNTRIESWORKDED_H 7 | #define __COUNTRIESWORKDED_H 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | 15 | class CountriesWorked 16 | { 17 | public: 18 | void init(const QStringList countryNames); 19 | void setAsWorked(const QString countryName); 20 | bool getHasWorked(const QString countryName); 21 | int getWorkedCount(); 22 | int getSize(); 23 | 24 | private: 25 | QHash _data; 26 | }; 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /manpages/man1/rigctl-jtdx.1.txt: -------------------------------------------------------------------------------- 1 | :doctype: manpage 2 | :man source: AsciiDoc 3 | :man version: {revnumber} 4 | :man manual: JTDX Manual 5 | = rigctl-jtdx(1) 6 | 7 | == NAME 8 | 9 | rigctl-jtdx - Hamlib 3 rigctld server. 10 | 11 | == SYNOPSIS 12 | 13 | *rigctl-jtdx* [OPTIONS] 14 | 15 | == DESCRIPTION 16 | 17 | *jtdx* uses a version of the *hamlib* CAT control library. This 18 | library is heavily modified over the current release version of 19 | *hamlib*. If a *jtdx* user wishes to use the *hamlib* network rig 20 | server *rigctld* to remotely control their transceiver; then this 21 | special version of the *rigctl* client should be used since that too 22 | has the modified *hamlib* code embedded with it. 23 | 24 | JTDX home page:: https://jtdx.tech/en/videos-guides 25 | 26 | JTDX User's Guide:: https://jtdx.tech/en/videos-guides 27 | 28 | == OPTIONS 29 | Refer to the *hamlib* documentation. 30 | -------------------------------------------------------------------------------- /manpages/man1/rigctlcom-jtdx.1.txt: -------------------------------------------------------------------------------- 1 | :doctype: manpage 2 | :man source: AsciiDoc 3 | :man version: {revnumber} 4 | :man manual: JTDX Manual 5 | = rigctlcom-jtdx(1) 6 | 7 | == NAME 8 | 9 | rigctlcom-jtdx - Hamlib 4 rigctlcom Serial port passthru Kenwood TS-2000 emulator. 10 | 11 | == SYNOPSIS 12 | 13 | *rigctlcom-jtdx* [OPTIONS] 14 | 15 | == DESCRIPTION 16 | 17 | *wsjtx* uses a version of the *hamlib* CAT control library. This 18 | library is virtually identical to the current release version of 19 | *hamlib*. If a *wsjtx* user wishes to use the *hamlib* TS-2000 20 | emulator *rigctlcom* to allow CAT applications that do not talk to 21 | *hamlib* to share CAT control control their transceiver; then this 22 | special version of *rigctlcom* should be used since that too has the 23 | modified *hamlib* code embedded with it. 24 | 25 | JTDX home page:: https://jtdx.tech/en/videos-guides 26 | 27 | JTDX User's Guide:: https://jtdx.tech/en/videos-guides 28 | 29 | == OPTIONS 30 | Refer to the *hamlib* documentation. 31 | -------------------------------------------------------------------------------- /manpages/man1/rigctld-jtdx.1.txt: -------------------------------------------------------------------------------- 1 | :doctype: manpage 2 | :man source: AsciiDoc 3 | :man version: {revnumber} 4 | :man manual: JTDX Manual 5 | = rigctld-jtdx(1) 6 | 7 | == NAME 8 | 9 | rigctld-jtdx - Hamlib 3 rigctld server. 10 | 11 | == SYNOPSIS 12 | 13 | *rigctld-jtdx* [OPTIONS] 14 | 15 | == DESCRIPTION 16 | 17 | *jtdx* uses a version of the *hamlib* CAT control library. This 18 | library is heavily modified over the current release version of 19 | *hamlib*. If a *jtdx* user wishes to use the *hamlib* network rig 20 | server *rigctld* to remotely control their transceiver; then this 21 | special version of *rigctld* should be used since that too has the 22 | modified *hamlib* code embedded with it. 23 | 24 | JTDX home page:: https://jtdx.tech/en/ 25 | 26 | JTDX User's Guide:: https://jtdx.tech/en/videos-guides 27 | 28 | == OPTIONS 29 | Refer to the *hamlib* documentation. 30 | -------------------------------------------------------------------------------- /message_aggregator.qrc.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | @message_aggregator_RESOURCES@ 4 | 5 | 6 | -------------------------------------------------------------------------------- /meterwidget.h: -------------------------------------------------------------------------------- 1 | // -*- Mode: C++ -*- 2 | #ifndef METERWIDGET_H 3 | #define METERWIDGET_H 4 | 5 | #include 6 | #include 7 | 8 | class MeterWidget : public QWidget 9 | { 10 | Q_OBJECT; 11 | Q_PROPERTY (int value READ value WRITE setValue) 12 | 13 | public: 14 | explicit MeterWidget (QWidget *parent = 0); 15 | 16 | // value property 17 | int value () const {return m_signal;} 18 | Q_SLOT void setValue (int value); 19 | 20 | // QWidget implementation 21 | QSize sizeHint () const override; 22 | protected: 23 | void paintEvent( QPaintEvent * ) override; 24 | 25 | private: 26 | QQueue signalQueue; 27 | int m_signal; 28 | int m_sigPeak; 29 | }; 30 | 31 | #endif // METERWIDGET_H 32 | -------------------------------------------------------------------------------- /pimpl_h.hpp: -------------------------------------------------------------------------------- 1 | #ifndef PIMPL_H_HPP_ 2 | #define PIMPL_H_HPP_ 3 | 4 | #include 5 | 6 | // 7 | // opaque implementation type with perfect forwarding of constructor arguments 8 | // 9 | // see pimpl_impl.hpp for the out-of-line definitions of the members and lifetime management 10 | // 11 | // thanks to Herb Sutter (http://herbsutter.com/gotw/_101/) for the implementation 12 | // 13 | template 14 | class pimpl 15 | { 16 | private: 17 | std::unique_ptr m_; 18 | 19 | public: 20 | pimpl (); 21 | template pimpl (Args&& ...); 22 | ~pimpl (); 23 | T * operator -> (); 24 | T const * operator -> () const; 25 | T& operator * (); 26 | T const& operator * () const; 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /pimpl_impl.hpp: -------------------------------------------------------------------------------- 1 | #ifndef PIMPL_IMPL_HPP_ 2 | #define PIMPL_IMPL_HPP_ 3 | 4 | #include 5 | 6 | template 7 | pimpl::pimpl () : m_ {new T {}} {} 8 | 9 | template 10 | template 11 | pimpl::pimpl (Args&& ...args) : m_ {new T {std::forward (args)...} } {} 12 | 13 | template 14 | pimpl::~pimpl () {} 15 | 16 | template 17 | T * pimpl::operator -> () {return m_.get ();} 18 | 19 | template 20 | T const * pimpl::operator -> () const {return m_.get ();} 21 | 22 | template 23 | T& pimpl::operator * () {return *m_.get ();} 24 | 25 | template 26 | T const& pimpl::operator * () const {return *m_.get ();} 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /qmake_only/svnversion.h: -------------------------------------------------------------------------------- 1 | /* This is a dummy file required to make the qmake build compatible 2 | with the CMake build. */ 3 | 4 | #define WSJTX_STRINGIZE(X) 5 | -------------------------------------------------------------------------------- /qss/default.qss: -------------------------------------------------------------------------------- 1 | /* default stylesheet for the message aggregator application */ 2 | 3 | [transmitting="true"] { 4 | background-color: yellow 5 | } 6 | 7 | [decoding="true"] { 8 | background-color: cyan 9 | } 10 | -------------------------------------------------------------------------------- /qt_helpers.cpp: -------------------------------------------------------------------------------- 1 | #include "qt_helpers.hpp" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | QString font_as_stylesheet (QFont const& font) 10 | { 11 | QString font_weight; 12 | switch (font.weight ()) 13 | { 14 | case QFont::Light: font_weight = "light"; break; 15 | case QFont::Normal: font_weight = "normal"; break; 16 | case QFont::DemiBold: font_weight = "demibold"; break; 17 | case QFont::Bold: font_weight = "bold"; break; 18 | case QFont::Black: font_weight = "black"; break; 19 | } 20 | return QString { 21 | " font-family: %1;\n" 22 | " font-size: %2pt;\n" 23 | " font-style: %3;\n" 24 | " font-weight: %4;\n"} 25 | .arg (font.family ()) 26 | .arg (font.pointSize ()) 27 | .arg (font.styleName ()) 28 | .arg (font_weight); 29 | } 30 | 31 | void update_dynamic_property (QWidget * widget, char const * property, QVariant const& value) 32 | { 33 | widget->setProperty (property, value); 34 | widget->style ()->unpolish (widget); 35 | widget->style ()->polish (widget); 36 | widget->update (); 37 | } 38 | -------------------------------------------------------------------------------- /revision_utils.hpp: -------------------------------------------------------------------------------- 1 | #ifndef REVISION_UTILS_HPP__ 2 | #define REVISION_UTILS_HPP__ 3 | 4 | #include 5 | 6 | QString revision (QString const& scs_rev_string = QString {}); 7 | QString version (bool include_patch = true); 8 | QString program_title (QString const& revision = QString {}); 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /samples/JT9+JT65/130610_2343.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/samples/JT9+JT65/130610_2343.wav -------------------------------------------------------------------------------- /samples/JT9/130418_1742.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jtdx-project/jtdx/2a0e2bea8c66c9ca94d2ea8034cf83a68cfa40eb/samples/JT9/130418_1742.wav -------------------------------------------------------------------------------- /signalmeter.h: -------------------------------------------------------------------------------- 1 | // -*- Mode: C++ -*- 2 | #ifndef SIGNALMETER_H 3 | #define SIGNALMETER_H 4 | 5 | #include 6 | 7 | class QLabel; 8 | class MeterWidget; 9 | 10 | class SignalMeter final 11 | : public QFrame 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit SignalMeter (QWidget * parent = nullptr); 17 | 18 | public slots: 19 | void setValue (float value); 20 | 21 | private: 22 | MeterWidget * m_meter; 23 | QWidget * m_scale; 24 | QLabel * m_reading; 25 | }; 26 | 27 | #endif // SIGNALMETER_H 28 | -------------------------------------------------------------------------------- /sleep.h: -------------------------------------------------------------------------------- 1 | // -*- Mode: C++ -*- 2 | #ifndef SLEEP_H 3 | #define SLEEP_H 4 | #include 5 | 6 | class Sleep : public QThread 7 | { 8 | public: 9 | static void msleep(int ms) { 10 | QThread::msleep(ms); 11 | } 12 | static int idealThreadCount() { 13 | return QThread::idealThreadCount(); 14 | } 15 | }; 16 | 17 | #endif // SLEEP_H 18 | -------------------------------------------------------------------------------- /ss.bat: -------------------------------------------------------------------------------- 1 | svn status | grep -v "?" 2 | -------------------------------------------------------------------------------- /sss.bat: -------------------------------------------------------------------------------- 1 | svn status 2 | -------------------------------------------------------------------------------- /wsjtx_update.iss: -------------------------------------------------------------------------------- 1 | [Setup] 2 | AppName=wsjtx 3 | AppVerName=wsjtx Version 1.2 r3537 4 | AppCopyright=Copyright (C) 2001-2013 by Joe Taylor, K1JT 5 | DefaultDirName=c:\wsjtx1.2 6 | DefaultGroupName=wsjtx1.2 7 | 8 | [Files] 9 | Source: "c:\Users\joe\wsjt\wsjtx_install\wsjtx.exe"; DestDir: "{app}" 10 | Source: "c:\Users\joe\wsjt\wsjtx_install\jt9.exe"; DestDir: "{app}" 11 | Source: "c:\Users\joe\wsjt\wsjtx\shortcuts.txt"; DestDir: "{app}" 12 | Source: "c:\Users\joe\wsjt\wsjtx\mouse_commands.txt"; DestDir: "{app}" 13 | Source: "c:\Users\joe\wsjt\wsjtx\WSJT-X_Users_Guide_v1.2.pdf"; DestDir: "{app}" 14 | 15 | [Icons] 16 | Name: "{group}\wsjtx1.2"; Filename: "{app}\wsjtx.exe"; WorkingDir: {app}; IconFilename: {app}\wsjt.ico 17 | Name: "{userdesktop}\wsjtx1.2"; Filename: "{app}\wsjtx.exe"; WorkingDir: {app}; IconFilename: {app}\wsjt.ico 18 | 19 | --------------------------------------------------------------------------------