Merged master 8748

This commit is contained in:
Jordan Sherer
2018-08-05 11:33:30 -04:00
parent 8f8772f1bd
commit 62899069bf
1095 changed files with 31298 additions and 367679 deletions
@@ -1,235 +0,0 @@
// This is a comment line, anything with // is ignored at process time.
= WSJT-X User Guide
Joseph H Taylor, Jr, K1JT
:revnumber: {VERSION}
// For web-pages, adding :badges: is ok, but is a security issue for
// package building .deb, .rpm, etc as it exposes the IP address and the images
// are non-free, so can't be included as part of the Debian package.
// :badges:
:docinfo1:
:imagesdir: {docdir}/images
:icons: font
:numbered:
:keywords: amateur radio weak signal communication K1JT WSJT JT65 JT9
:description: Software for Amateur Radio Weak-Signal Communication
:prog: WSJT-X
// use global link file
include::../../common/links.adoc[]
// These [[xxxx]] labels are HTML anchors, and can be used to
// navigate though the document easily: <<INTRO,See Introduction>> will
// place a hyper-link in your text to take you too the anchored section.
// All major sections or points of interest should have one.
// == is level (2), section 1.0, === would mean section 1.1, === would
// be section 1.1.1. This method is used throughout the document.
[[INTRO]]
== Introduction
include::introduction.adoc[]
[[NEW_FEATURES]]
include::new_features.adoc[]
[[SYSREQ]]
== System Requirements
include::system-requirements.adoc[]
[[INSTALL]]
== Installation
Installation packages for released versions on Windows, Linux, and OS
X are found on the {homepage}. Click on the _WSJT-X_ link at the
left margin and select the appropriate package for your operating
system.
[[INSTALL_WIN]]
=== Windows
include::install-windows.adoc[]
[[INSTALL_LINUX]]
=== Linux
include::install-linux.adoc[]
[[INSTALL_OSX]]
=== OS X and macOS
include::install-mac.adoc[]
////
[[SRC_CODE]]
=== Source Code
include::install-from-source.adoc[]
////
[[CONFIG]]
== Settings
Select *Settings* from the *File* menu or by typing *F2*. (On
Macintosh select *Preferences* from the _WSJT-X_ menu, or use the
keyboard shortcut *Cmd+,*). The following sections describe setup
options available on each of eight tabs selectable near the top of the
window.
[[GENERAL]]
=== General
include::settings-general.adoc[]
[[RADIO]]
=== Radio
include::settings-radio.adoc[]
[[AUDIO]]
=== Audio
include::settings-audio.adoc[]
[[TXMACROS]]
=== Tx Macros
include::settings-txmacros.adoc[]
[[REPORTING]]
=== Reporting
include::settings-reporting.adoc[]
[[BAND_SETTINGS]]
=== Frequencies
include::settings-frequencies.adoc[]
[[COLORS]]
=== Colors
include::settings-colors.adoc[]
[[ADVANCED]]
=== Advanced
include::settings-advanced.adoc[]
[[TRANSCEIVER]]
== Transceiver Setup
include::transceiver-setup.adoc[]
[[TUTORIAL]]
== Basic Operating Tutorial
This section introduces the basic user controls and program behavior
of _WSJT-X_, with particular emphasis on the JT9, JT65, and FT8 modes.
We suggest that new users should go through the full HF-oriented
tutorial, preferably while at your radio. Subsequent sections cover
additional details on <<MAKE_QSOS,Making QSOs>>, <<WSPR,WSPR mode>>
and <<VHF_AND_UP,VHF+ Features>>.
[[TUT_MAIN]]
=== Main Window Settings
include::tutorial-main-window.adoc[]
[[TUT_WIDE_GRAPH]]
=== Wide Graph Settings
include::tutorial-wide-graph-settings.adoc[]
[[TUT_EX1]]
=== JT9
include::tutorial-example1.adoc[]
[[TUT_EX2]]
=== JT9+JT65
include::tutorial-example2.adoc[]
[[TUT_EX3]]
=== FT8
include::tutorial-example3.adoc[]
[[MAKE_QSOS]]
== Making QSOs
include::make-qso.adoc[]
[[VHF_AND_UP]]
== VHF+ Features
include::vhf-features.adoc[]
[[WSPR]]
== WSPR Mode
include::wspr.adoc[]
[[COMMAND_REF]]
== On-Screen Controls
[[MENUS]]
=== Menus
include::controls-functions-menus.adoc[]
[[CONTROLS_MAIN]]
=== Button Row
include::controls-functions-main-window.adoc[]
[[CONTROLS_LEFT]]
=== Left
include::controls-functions-left.adoc[]
[[CONTROLS_CENTER]]
=== Center
include::controls-functions-center.adoc[]
[[CONTROLS_MSGS]]
=== Tx Messages
include::controls-functions-messages.adoc[]
[[STATUS_BAR]]
=== Status Bar
include::controls-functions-status-bar.adoc[]
[[CONTROLS_WIDE]]
=== Wide Graph
include::controls-functions-wide-graph.adoc[]
[[LOGGING]]
== Logging
include::logging.adoc[]
[[DECODER_NOTES]]
== Decoder Notes
include::decoder_notes.adoc[]
[[MEASUREMENT_TOOLS]]
== Measurement Tools
include::measurement_tools.adoc[]
[[COOP_PGMS]]
== Cooperating Programs
include::cooperating-programs.adoc[]
[[PLATFORM]]
== Platform Dependencies
include::platform-dependencies.adoc[]
[[FAQ]]
== Frequently Asked Questions
include::faq.adoc[]
[[PROTOCOLS]]
== Protocol Specifications
include::protocols.adoc[]
[[ASTRODATA]]
== Astronomical Data
include::astro_data.adoc[]
[[UTIL]]
== Utility Programs
include::utilities.adoc[]
[[SUPPORT]]
== Support
include::support.adoc[]
[[ACK]]
== Acknowledgements
include::acknowledgements.adoc[]
[[LICENSE]]
== License
include::../../common/license.adoc[]
ifeval::["{backend}" != "html5"]
[index]
== Index
endif::[]
@@ -1,35 +0,0 @@
/*
* Reads cty.dat file
* Establishes a map between prefixes and their country names
* VK3ACF July 2013
*/
#ifndef __COUNTRYDAT_H
#define __COUNTRYDAT_H
#include <QString>
#include <QStringList>
#include <QHash>
class CountryDat
{
public:
void init(const QString filename);
void load();
QString find(const QString prefix); // return country name or ""
QStringList getCountryNames() { return _countryNames; };
private:
QString _extractName(const QString line);
void _removeBrackets(QString &line, const QString a, const QString b);
QStringList _extractPrefix(QString &line, bool &more);
QString _filename;
QStringList _countryNames;
QHash<QString, QString> _data;
};
#endif
@@ -0,0 +1,125 @@
subroutine softsym9w(id2,npts,xdt0,f0,width,nsubmode,xdt1,snrdb,i1softsymbols)
parameter (NFFT=6912,NH=NFFT/2,NQ=NH/2)
real s(NQ)
real s2(0:8,85)
real s3(0:7,69)
real x(NFFT)
complex cx(0:NH)
integer*2 id2(60*12000)
integer*1 i1SoftSymbolsScrambled(207)
integer*1 i1softsymbols(207)
include 'jt9sync.f90'
equivalence (x,cx)
if(npts.eq.-99) stop !Silence compiler warning
df=12000.0/NFFT
i0a=max(1.0,(xdt0-1.0)*12000.0)
i0b=(xdt0+1.0)*12000.0
k1=max(1,nint((f0-0.5*width)/df))
k2=min(NQ,nint((f0+0.5*width)/df))
smax=0.
i0pk=1
i1softsymbols=0
do i0=i0a,i0b,432
s=0.
ssum=0.
do j=1,16
ia=i0 + (ii(j)-1)*nfft
ib=ia+NFFT-1
x=1.e-6*id2(ia:ib)
call four2a(x,nfft,1,-1,0) !r2c FFT
do k=1,NQ
s(k)=s(k) + real(cx(k))**2 + aimag(cx(k))**2
enddo
enddo
ssum=ssum + sum(s(k1:k2))
if(ssum.gt.smax) then
smax=ssum
i0pk=i0
else
if(ssum.lt.0.7*smax) exit
endif
end do
xdt1=(i0pk-1)/12000.0
if(i0pk.le.0) go to 999
m=0
do j=1,85
ia=i0pk + (j-1)*nfft
ib=ia+NFFT-1
x=1.e-6*id2(ia:ib)
call four2a(x,nfft,1,-1,0) !r2c FFT
do k=1,NQ
s(k)=real(cx(k))**2 + aimag(cx(k))**2
enddo
dtone=df*(2**nsubmode)
do i=0,8
f=f0 + i*dtone
k1=max(1,nint((f-0.5*width)/df))
k2=min(NQ,nint((f+0.5*width)/df))
s2(i,j)=sum(s(k1:k2)) !Symbol spectra, including sync
enddo
if(isync(j).eq.0) then
m=m+1
s3(0:7,m)=s2(1:8,j) !Symbol spectra, data only
endif
! write(19,3101) j,s2(0:8,j)
!3101 format(i2,9f8.2)
enddo
ss=0.
sig=0.
do j=1,69
smax=0.
do i=0,7
smax=max(smax,s3(i,j))
ss=ss+s3(i,j)
enddo
sig=sig+smax
ss=ss-smax
enddo
ave=ss/(69*7) !Baseline
call pctile(s2,9*85,35,xmed)
s3=s3/ave
sig=sig/69. !Signal
snrdb=db(sig/xmed) - 28.0
m0=3
k=0
do j=1,69
smax=0.
do i=0,7
if(s3(i,j).gt.smax) smax=s3(i,j)
enddo
do m=m0-1,0,-1 !Get bit-wise soft symbols
if(m.eq.2) then
r1=max(s3(4,j),s3(5,j),s3(6,j),s3(7,j))
r0=max(s3(0,j),s3(1,j),s3(2,j),s3(3,j))
else if(m.eq.1) then
r1=max(s3(2,j),s3(3,j),s3(4,j),s3(5,j))
r0=max(s3(0,j),s3(1,j),s3(6,j),s3(7,j))
else
r1=max(s3(1,j),s3(2,j),s3(4,j),s3(7,j))
r0=max(s3(0,j),s3(3,j),s3(5,j),s3(6,j))
endif
k=k+1
i4=nint(10.0*(r1-r0))
if(i4.lt.-127) i4=-127
if(i4.gt.127) i4=127
i1SoftSymbolsScrambled(k)=i4
enddo
enddo
! Remove interleaving
call interleave9(i1SoftSymbolsScrambled,-1,i1SoftSymbols)
999 return
end subroutine softsym9w