Rename to JS8Call

This commit is contained in:
Jordan Sherer 2018-10-04 13:52:52 -04:00
parent d5c22a0c91
commit 75bf51072a
41 changed files with 140 additions and 140 deletions

View File

@ -38,7 +38,7 @@ QString APRSISClient::loginFrame(QString callsign){
auto loginFrame = QString("user %1 pass %2 ver %3\n");
loginFrame = loginFrame.arg(callsign);
loginFrame = loginFrame.arg(hashCallsign(callsign));
loginFrame = loginFrame.arg("FT8Call");
loginFrame = loginFrame.arg("JS8Call");
return loginFrame;
}
@ -210,7 +210,7 @@ void APRSISClient::enqueueSpot(QString theircall, QString grid, QString comment)
if(m_localCall.isEmpty()) return;
auto geo = APRSISClient::grid2aprs(grid);
auto spotFrame = QString("%1>APRS,%2,TCPIP*:=%3/%4nFT8CALL %5\n");
auto spotFrame = QString("%1>APRS,%2,TCPIP*:=%3/%4nJS8 %5\n");
spotFrame = spotFrame.arg(theircall);
spotFrame = spotFrame.arg(stripSSID(m_localCall));
spotFrame = spotFrame.arg(geo.first);

View File

@ -9,8 +9,8 @@ set (CPACK_PACKAGE_CONTACT "@PROJECT_CONTACT@")
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "@PROJECT_SUMMARY_DESCRIPTION@")
set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/COPYING")
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
set (CPACK_PACKAGE_EXECUTABLES ft8call "@PROJECT_NAME@")
set (CPACK_CREATE_DESKTOP_LINKS ft8call)
set (CPACK_PACKAGE_EXECUTABLES js8call "@PROJECT_NAME@")
set (CPACK_CREATE_DESKTOP_LINKS js8call)
set (CPACK_STRIP_FILES TRUE)
#
@ -24,7 +24,7 @@ if (CPACK_GENERATOR MATCHES "NSIS")
set (CPACK_SET_DESTDIR FALSE)
set (CPACK_STRIP_FILES FALSE) # breaks Qt packaging on Windows
# set (CPACK_NSIS_INSTALL_ROOT "C:\\FT8Call")
# set (CPACK_NSIS_INSTALL_ROOT "C:\\JS8Call")
if(CMAKE_CL_64)
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
@ -38,8 +38,8 @@ if (CPACK_GENERATOR MATCHES "NSIS")
# set the install/unistall icon used for the installer itself
# There is a bug in NSI that does not handle full unix paths properly.
set (CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\ft8call.ico")
set (CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\ft8call.ico")
set (CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\js8call.ico")
set (CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\js8call.ico")
# set the package header icon for MUI
set (CPACK_PACKAGE_ICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\installer_logo.bmp")
# tell cpack to create links to the doc files
@ -47,13 +47,13 @@ if (CPACK_GENERATOR MATCHES "NSIS")
"@PROJECT_HOMEPAGE@" "@PROJECT_NAME@ Web Site"
)
# Use the icon from wsjtx for add-remove programs
set (CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\ft8call.exe")
set (CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\js8call.exe")
set (CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
set (CPACK_NSIS_HELP_LINK "@PROJECT_HOMEPAGE@")
set (CPACK_NSIS_URL_INFO_ABOUT "@PROJECT_HOMEPAGE@")
set (CPACK_NSIS_CONTACT "${CPACK_PACKAGE_CONTACT}")
set (CPACK_NSIS_MUI_FINISHPAGE_RUN "ft8call.exe")
set (CPACK_NSIS_MUI_FINISHPAGE_RUN "js8call.exe")
set (CPACK_NSIS_MODIFY_PATH ON)
endif ()
@ -66,11 +66,11 @@ endif ()
if ("${CPACK_GENERATOR}" STREQUAL "DragNDrop")
set (CPACK_DMG_VOLUME_NAME "@PROJECT_NAME@")
set (CPACK_DMG_BACKGROUND_IMAGE "@PROJECT_SOURCE_DIR@/icons/Darwin/DragNDrop Background.png")
set (CPACK_DMG_DS_STORE "@PROJECT_SOURCE_DIR@/Darwin/ft8call_DMG.DS_Store")
set (CPACK_DMG_DS_STORE "@PROJECT_SOURCE_DIR@/Darwin/js8call_DMG.DS_Store")
set (CPACK_BUNDLE_NAME "@WSJTX_BUNDLE_NAME@")
set (CPACK_PACKAGE_ICON "@PROJECT_BINARY_DIR@/ft8call.icns")
set (CPACK_BUNDLE_ICON "@PROJECT_BINARY_DIR@/ft8call.icns")
set (CPACK_BUNDLE_STARTUP_COMMAND "@PROJECT_SOURCE_DIR@/Mac-ft8call-startup.sh")
set (CPACK_PACKAGE_ICON "@PROJECT_BINARY_DIR@/js8call.icns")
set (CPACK_BUNDLE_ICON "@PROJECT_BINARY_DIR@/js8call.icns")
set (CPACK_BUNDLE_STARTUP_COMMAND "@PROJECT_SOURCE_DIR@/Mac-js8call-startup.sh")
set (CPACK_PACKAGING_INSTALL_PREFIX "/")
endif ()
@ -78,9 +78,9 @@ if ("${CPACK_GENERATOR}" STREQUAL "WIX")
# Reset CPACK_PACKAGE_VERSION to deal with WiX restriction.
# But the file names still use the full CMake_VERSION value:
set (CPACK_PACKAGE_FILE_NAME
"${CPACK_PACKAGE_NAME}-@ft8call_VERSION@-${CPACK_SYSTEM_NAME}")
"${CPACK_PACKAGE_NAME}-@js8call_VERSION@-${CPACK_SYSTEM_NAME}")
set (CPACK_SOURCE_PACKAGE_FILE_NAME
"${CPACK_PACKAGE_NAME}-@ft8call_VERSION@-Source")
"${CPACK_PACKAGE_NAME}-@js8call_VERSION@-Source")
if (NOT CPACK_WIX_SIZEOF_VOID_P)
set (CPACK_WIX_SIZEOF_VOID_P "@CMAKE_SIZEOF_VOID_P@")

View File

@ -22,7 +22,7 @@ Change this to the newest SDK available that you can install on your system (10.
Do not override this if you intend to build an official deployable installer.")
endif (APPLE)
project (ft8call C CXX Fortran)
project (js8call C CXX Fortran)
#
# CMake policies
@ -45,11 +45,11 @@ message (STATUS "Building ${CMAKE_PROJECT_NAME}-${wsjtx_VERSION}")
#
# project information
#
set (PROJECT_NAME "FT8Call")
set (PROJECT_NAME "JS8Call")
set (PROJECT_VENDOR "Jordan Sherer, KN4CRD")
set (PROJECT_CONTACT "Jordan Sherer <kn4crd@gmail.com>")
set (PROJECT_COPYRIGHT "Copyright (C) 2001-2018 by Joe Taylor, K1JT, (C) 2018 by Jordan Sherer, KN4CRD")
set (PROJECT_HOMEPAGE https://groups.io/g/ft8call)
set (PROJECT_HOMEPAGE https://groups.io/g/js8call)
set (PROJECT_SUMMARY_DESCRIPTION "${PROJECT_NAME} - Digital Modes for Weak Signal Communicaitons in Amateur Radio.")
set (PROJECT_DESCRIPTION "${PROJECT_SUMMARY_DESCRIPTION}
${PROJECT_NAME} is a computer program designed to facilitate amateur
@ -628,7 +628,7 @@ set (all_C_and_CXXSRCS
set (TOP_LEVEL_RESOURCES
cty.dat
icons/Darwin/FT8Call.iconset/icon_128x128.png
icons/Darwin/JS8Call.iconset/icon_128x128.png
contrib/gpl-v3-logo.svg
artwork/splash.png
)
@ -1110,7 +1110,7 @@ else (${OPENMP_FOUND} OR APPLE)
endif (${OPENMP_FOUND} OR APPLE)
# build the main application
add_executable (ft8call MACOSX_BUNDLE
add_executable (js8call MACOSX_BUNDLE
${wsjtx_CXXSRCS}
${wsjtx_GENUISRCS}
wsjtx.rc
@ -1119,10 +1119,10 @@ add_executable (ft8call MACOSX_BUNDLE
)
if (WSJT_CREATE_WINMAIN)
set_target_properties (ft8call PROPERTIES WIN32_EXECUTABLE ON)
set_target_properties (js8call PROPERTIES WIN32_EXECUTABLE ON)
endif (WSJT_CREATE_WINMAIN)
set_target_properties (ft8call PROPERTIES
set_target_properties (js8call PROPERTIES
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Darwin/Info.plist.in"
MACOSX_BUNDLE_INFO_STRING "${WSJTX_DESCRIPTION_SUMMARY}"
MACOSX_BUNDLE_ICON_FILE "${WSJTX_ICON_FILE}"
@ -1135,36 +1135,36 @@ set_target_properties (ft8call PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER "org.k1jt.wsjtx"
)
target_include_directories (ft8call PRIVATE ${FFTW3_INCLUDE_DIRS})
target_include_directories (js8call PRIVATE ${FFTW3_INCLUDE_DIRS})
if (APPLE)
target_link_libraries (ft8call wsjt_fort wsjt_cxx wsjt_qt wsjt_qtmm ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
target_link_libraries (js8call wsjt_fort wsjt_cxx wsjt_qt wsjt_qtmm ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
else ()
target_link_libraries (ft8call wsjt_fort_omp wsjt_cxx wsjt_qt wsjt_qtmm ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
target_link_libraries (js8call wsjt_fort_omp wsjt_cxx wsjt_qt wsjt_qtmm ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
if (OpenMP_C_FLAGS)
set_target_properties (ft8call PROPERTIES
set_target_properties (js8call PROPERTIES
COMPILE_FLAGS "${OpenMP_C_FLAGS}"
LINK_FLAGS "${OpenMP_C_FLAGS}"
)
endif ()
set_target_properties (ft8call PROPERTIES
set_target_properties (js8call PROPERTIES
Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp
)
if (WIN32)
set_target_properties (ft8call PROPERTIES
set_target_properties (js8call PROPERTIES
LINK_FLAGS -Wl,--stack,16777216
)
endif ()
endif ()
qt5_use_modules (ft8call SerialPort) # not sure why the interface link library syntax above doesn't work
qt5_use_modules (js8call SerialPort) # not sure why the interface link library syntax above doesn't work
# if (UNIX)
# if (NOT WSJT_SKIP_MANPAGES)
# add_subdirectory (manpages)
# add_dependencies (ft8call manpages)
# add_dependencies (js8call manpages)
# endif (NOT WSJT_SKIP_MANPAGES)
# if (NOT APPLE)
# add_subdirectory (debian)
# add_dependencies (ft8call debian)
# add_dependencies (js8call debian)
# endif (NOT APPLE)
# endif (UNIX)
@ -1172,7 +1172,7 @@ qt5_use_modules (ft8call SerialPort) # not sure why the interface link library s
#
# installation
#
install (TARGETS ft8call
install (TARGETS js8call
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
BUNDLE DESTINATION . COMPONENT runtime
)
@ -1259,23 +1259,23 @@ configure_file (
if (NOT WIN32 AND NOT APPLE)
# install a desktop file so ft8call appears in the application start
# install a desktop file so js8call appears in the application start
# menu with an icon
install (
FILES ft8call.desktop
FILES js8call.desktop
DESTINATION /usr/share/applications
#COMPONENT runtime
)
install (
FILES icons/Unix/ft8call_icon.png
FILES icons/Unix/js8call_icon.png
DESTINATION /usr/share/pixmaps
#COMPONENT runtime
)
execute_process(COMMAND ln -s /opt/ft8call/bin/ft8call lft8call)
execute_process(COMMAND ln -s /opt/js8call/bin/js8call ljs8call)
install(FILES
${CMAKE_BINARY_DIR}/lft8call DESTINATION /usr/bin/ RENAME ft8call
${CMAKE_BINARY_DIR}/ljs8call DESTINATION /usr/bin/ RENAME js8call
#COMPONENT runtime
)
endif (NOT WIN32 AND NOT APPLE)

View File

@ -1,7 +1,7 @@
#!/bin/sh
WSJTX_BUNDLE="`echo "$0" | sed -e 's/\/Contents\/MacOS\/.*//'`"
WSJTX_RESOURCES="$WSJTX_BUNDLE/Contents/Resources"
WSJTX_TEMP="/tmp/ft8call/$UID"
WSJTX_TEMP="/tmp/js8call/$UID"
echo "running $0"
echo "WSJTX_BUNDLE: $WSJTX_BUNDLE"
@ -13,4 +13,4 @@ export "DYLD_LIBRARY_PATH=$WSJTX_RESOURCES/lib"
export "PATH=$WSJTX_RESOURCES/bin:$PATH"
#export
exec "$WSJTX_RESOURCES/bin/ft8call"
exec "$WSJTX_RESOURCES/bin/js8call"

View File

@ -1,6 +1,6 @@
Notes on FT8Call Installation for Mac OS X
(replace all instances of WSJT-X with FT8Call)
Notes on JS8Call Installation for Mac OS X
(replace all instances of WSJT-X with JS8Call)
Notes on WSJT-X Installation for Mac OS X
-----------------------------------------

16
README
View File

@ -1,19 +1,19 @@
# FT8Call
# JS8Call
FT8 has taken over the airwaves as the digital communication mode for making QSOs over HF/VHF/UHF. The mode has been widely popular as the latest offering in K1JTs WSJT-X application. FT8 is based on the same foundation as JT65, JT9, and WSPR modes for weak signal communication, but transmits faster with only slightly reduced sensitivity.
While FT8 is an incredibly robust weak signal mode, it is designed heavily to take advantage of short band openings on HF/VHF/UHF and only offers a minimal QSO framework. However, many operators are using these weak signal qualities to make successful QSOs on the HF bands where other modes fail.
FT8Call is an experiment to test the feasibility of a digital mode with the robustness of FT8, combined with a messaging and network protocol layer for weak signal communication on HF, using keyboard-to-keyboard style interface. FT8Call is heavily inspired by WSJT-X, Fldigi, and FSQCall and would not exist without the hard work and dedication of the many developers in the amateur radio community.
JS8Call is an experiment to test the feasibility of a digital mode with the robustness of FT8, combined with a messaging and network protocol layer for weak signal communication on HF, using keyboard-to-keyboard style interface. JS8Call is heavily inspired by WSJT-X, Fldigi, and FSQCall and would not exist without the hard work and dedication of the many developers in the amateur radio community.
* Read more on the original design inspiration here: https://github.com/jsherer/ft8call
* Read more on the original design inspiration here: https://github.com/jsherer/js8call
* For release announcements and discussion, join the FT8Call mailing list here: https://groups.io/g/ft8call
* For release announcements and discussion, join the JS8Call mailing list here: https://groups.io/g/js8call
# Notice
FT8Call is a derivative of the WSJT-X application, restructured and redesigned for message passing using FT8 modulation. It is not supported by nor endorsed by the WSJT-X development group. While the WSJT-X group maintains copyright over the original work and code, FT8Call is a derivative work licensed under and in accordance with the terms of the GPLv3 license. The source code modifications are public and can be found in this repository: https://bitbucket.org/widefido/wsjtx/
JS8Call is a derivative of the WSJT-X application, restructured and redesigned for message passing using FT8 modulation. It is not supported by nor endorsed by the WSJT-X development group. While the WSJT-X group maintains copyright over the original work and code, JS8Call is a derivative work licensed under and in accordance with the terms of the GPLv3 license. The source code modifications are public and can be found in this repository: https://bitbucket.org/widefido/wsjtx/
# History
@ -22,11 +22,11 @@ FT8Call is a derivative of the WSJT-X application, restructured and redesigned f
* August 31, 2017 - Jordan, KN4CRD, did a little development and modified WSJT-X to support long-form QSOs using the existing FT8 protocol: https://sourceforge.net/p/wsjt/mailman/message/36020051/ He sent a video example to the WSJT-X group: https://widefido.wistia.com/medias/7bb1uq62ga
* January 8, 2018 - Jordan, KN4CRD, started working on the design of a long-form QSO application built on top of FT8 with a redesigned interface.
* February 9, 2018 - Jordan, KN4CRD, submitted question to the WSJT-X group to see if there was any interest in pursuing the idea: https://sourceforge.net/p/wsjt/mailman/message/36221549/
* February 10, 2018 - Jordan KN4CRD, Julian OH8STN, John N0JDS, and the Portable Digital QRP group did an experiment using FSQ. The idea of FT8Call, combining FT8, long-form QSOs, and FSQCall like features was born.
* February 10, 2018 - Jordan KN4CRD, Julian OH8STN, John N0JDS, and the Portable Digital QRP group did an experiment using FSQ. The idea of JS8Call, combining FT8, long-form QSOs, and FSQCall like features was born.
* February 11, 2018 - Jordan, KN4CRD, inquired about the idea of integrating long-form messages into WSJT-X: https://sourceforge.net/p/wsjt/mailman/message/36223372/
* February 12, 2018 - Joe Taylor, K1JT, wrote back: https://sourceforge.net/p/wsjt/mailman/message/36224507/ saying that “Please don't let my comment discourage you from proceeding as you wish, toward something new.”
* March 4, 2018 - Jordan, KN4CRD, published a design document for FT8Call: https://github.com/jsherer/ft8call
* July 6, 2018 - Version 0.0.1 of FT8Call released to the development group
* March 4, 2018 - Jordan, KN4CRD, published a design document for JS8Call: https://github.com/jsherer/js8call
* July 6, 2018 - Version 0.0.1 of JS8Call released to the development group
* July 15, 2018 - Version 0.1 released - a dozen testers
* July 21, 2018 - Version 0.2 released - 75 testers
* July 27, 2018 - Version 0.3 released - 150 testers

View File

@ -13,25 +13,25 @@ CAboutDlg::CAboutDlg(QWidget *parent) :
{
ui->setupUi(this);
ui->labelTxt->setText ("<h2>" + QString {"FT8Call v"
ui->labelTxt->setText ("<h2>" + QString {"JS8Call v"
+ QCoreApplication::applicationVersion ()
+ " " + revision ()}.simplified () + "</h2><br />"
"FT8Call is a derivative of the WSJT-X application, "
"JS8Call is a derivative of the WSJT-X application, "
"restructured and redesigned for message passing. <br/>"
"It is not supported by nor endorsed by the WSJT-X "
"development group. <br/>FT8Call is "
"development group. <br/>JS8Call is "
"licensed under and in accordance with the terms "
"of the <a href=\"https://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3 license</a>.<br/>"
"The source code modifications are public and can be found in <a href=\"https://bitbucket.org/widefido/wsjtx/\">this repository</a>.<br/><br/>"
"FT8Call is heavily inspired by WSJT-X, Fldigi, "
"JS8Call is heavily inspired by WSJT-X, Fldigi, "
"and FSQCall <br/>and would not exist without the hard work and "
"dedication of the many <br/>developers in the amateur radio "
"community.<br /><br />"
"FT8Call stands on the shoulder of giants...the takeoff angle "
"JS8Call stands on the shoulder of giants...the takeoff angle "
"is better up there.<br /><br />"
"A special thanks goes out to the FT8Call development team:<br/><br/><strong>"
"A special thanks goes out to the JS8Call development team:<br/><br/><strong>"
"KC9QNE, "
"KI6SSI, "
"K0OG, "
@ -42,7 +42,7 @@ CAboutDlg::CAboutDlg(QWidget *parent) :
"VA3OSO, "
"VK1MIC, "
"W0FW,</strong><br/><br/>and the many other amateur radio operators who have given "
"FT8Call a chance.");
"JS8Call a chance.");
}
CAboutDlg::~CAboutDlg()

View File

@ -14,7 +14,7 @@
</rect>
</property>
<property name="windowTitle">
<string>About FT8Call</string>
<string>About JS8Call</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

View File

@ -25,9 +25,9 @@ convert '/tmp/image-%d.png[0-1]' -background transparent \
\( -clone 1 -resize 128 -compress none \) \
\( -clone 1 -resize 256 -compress Zip \) \
-delete 1 -delete 0 \
-alpha remove ../icons/windows-icons/ft8call.ico
-alpha remove ../icons/windows-icons/js8call.ico
rm /tmp/image-0.png /tmp/image-1.png
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/windows-icons/ft8call.ico
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/windows-icons/js8call.ico
#
#inkscape -z -e /dev/stdout -w 150 -h 57 -b white installer_logo.svg | tail -n +4 | \
# convert png:- -resize 150x57 +matte BMP3:../icons/windows-icons/installer_logo.bmp
@ -37,18 +37,18 @@ identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/windows-icons/instal
#
# Mac
#
mkdir -p ../icons/Darwin/FT8Call.iconset
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_16x16.png -w 16 -h 16 icon_128.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_16x16@2x.png -w 32 -h 32 icon_128.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_32x32.png -w 32 -h 32 icon_128.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_32x32@2x.png -w 64 -h 64 icon_128.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_128x128.png -w 128 -h 128 icon_1024.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_128x128@2x.png -w 256 -h 256 icon_1024.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_256x256.png -w 256 -h 256 icon_1024.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_256x256@2x.png -w 512 -h 512 icon_1024.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_512x512.png -w 512 -h 512 icon_1024.svg
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_512x512@2x.png -w 1024 -h 1024 icon_1024.svg
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Darwin/FT8Call.iconset/*
mkdir -p ../icons/Darwin/JS8Call.iconset
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_16x16.png -w 16 -h 16 icon_128.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_16x16@2x.png -w 32 -h 32 icon_128.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_32x32.png -w 32 -h 32 icon_128.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_32x32@2x.png -w 64 -h 64 icon_128.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_128x128.png -w 128 -h 128 icon_1024.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_128x128@2x.png -w 256 -h 256 icon_1024.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_256x256.png -w 256 -h 256 icon_1024.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_256x256@2x.png -w 512 -h 512 icon_1024.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_512x512.png -w 512 -h 512 icon_1024.svg
inkscape -z -e ../icons/Darwin/JS8Call.iconset/icon_512x512@2x.png -w 1024 -h 1024 icon_1024.svg
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Darwin/JS8Call.iconset/*
# generic globe iconset for utilities
mkdir -p ../icons/Darwin/wsjt.iconset
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_16x16.png -w 16 -h 16 icon_128.svg
@ -69,5 +69,5 @@ identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' "../icons/Darwin/DragNDrop Ba
#
# KDE & Gnome
#
inkscape -z -e ../icons/Unix/ft8call_icon.png -w 128 -h 128 icon_1024.svg
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Unix/ft8call_icon.png
inkscape -z -e ../icons/Unix/js8call_icon.png -w 128 -h 128 icon_1024.svg
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Unix/js8call_icon.png

View File

@ -61,9 +61,9 @@ DecodedText::DecodedText (QString const& the_string, bool contest_mode, QString
tryUnpack();
}
DecodedText::DecodedText (QString const& ft8callmessage):
DecodedText::DecodedText (QString const& js8callmessage):
frameType_(Varicode::FrameUnknown),
message_(ft8callmessage),
message_(js8callmessage),
isBeacon_(false),
isAlt_(false)
{

View File

@ -31,7 +31,7 @@ class DecodedText
{
public:
explicit DecodedText (QString const& message, bool, QString const& my_grid);
explicit DecodedText (QString const& ft8callmessage);
explicit DecodedText (QString const& js8callmessage);
bool tryUnpack();
bool tryUnpackBeacon();

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 571 B

After

Width:  |  Height:  |  Size: 571 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 282 KiB

After

Width:  |  Height:  |  Size: 282 KiB

View File

@ -1,9 +1,9 @@
[Desktop Entry]
Version=1.0
Name=ft8call
Name=js8call
Comment=Amateur Radio Weak Signal Operating
Exec=ft8call
Icon=ft8call_icon
Exec=js8call
Icon=js8call_icon
Terminal=false
X-MultipleArgs=false
Type=Application

View File

@ -1,5 +1,5 @@
/**
* This file is part of FT8Call.
* This file is part of JS8Call.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/**
* This file is part of FT8Call.
* This file is part of JS8Call.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -147930,7 +147930,7 @@ const Tuple JSC::list[524288] = {
{"LOSCALZO", 8, 413484},
{"KDTRAVEL", 8, 413489},
{"HAIRCLUP", 8, 413502},
{"FT8CALL", 7, 69},
{"JS8CALL", 7, 69},
{"JS8CALL", 7, 71},
{"JSQCALL", 7, 73},
{"ALLCALL", 7, 81},

View File

@ -1,5 +1,5 @@
/**
* This file is part of FT8Call.
* This file is part of JS8Call.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -90,7 +90,7 @@ const Tuple JSC::map[524288] = {
{"~", 1, 66},
{"\\", 1, 67},
{"FT8", 3, 68},
{"FT8CALL", 7, 69},
{"JS8CALL", 7, 69},
{"JS8", 3, 70},
{"JS8CALL", 7, 71},
{"JSQSO", 5, 72},

View File

@ -6,7 +6,7 @@
namespace
{
auto logFileName = "ft8call_log.adi";
auto logFileName = "js8call_log.adi";
auto countryFileName = "cty.dat";
}

View File

@ -112,10 +112,10 @@ void LogQSO::accept()
m_comments=comments;
QString strDialFreq(QString::number(m_dialFreq / 1.e6,'f',6));
operator_call = ui->loggedOperator->text();
//Log this QSO to ADIF file "ft8call_log.adi"
QString filename = "ft8call_log.adi"; // TODO allow user to set
//Log this QSO to ADIF file "js8call_log.adi"
QString filename = "js8call_log.adi"; // TODO allow user to set
ADIF adifile;
auto adifilePath = QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("ft8call_log.adi");
auto adifilePath = QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("js8call_log.adi");
adifile.init(adifilePath);
QByteArray ADIF {adifile.QSOToADIF (hisCall, hisGrid, mode, rptSent, rptRcvd, m_dateTimeOn, m_dateTimeOff, band
@ -137,8 +137,8 @@ void LogQSO::accept()
}
}
//Log this QSO to file "ft8call.log"
static QFile f {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("ft8call.log")};
//Log this QSO to file "js8call.log"
static QFile f {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("js8call.log")};
if(!f.open(QIODevice::Text | QIODevice::Append)) {
MessageBox::warning_message (this, tr ("Log file error"),
tr ("Cannot open \"%1\" for append").arg (f.fileName ()),

View File

@ -108,7 +108,7 @@ int main(int argc, char *argv[])
// Override programs executable basename as application name.
//a.setApplicationName ("WSJT-X");
a.setApplicationName("FT8Call");
a.setApplicationName("JS8Call");
a.setApplicationVersion (version ());
#if QT_VERSION >= 0x050200

View File

@ -173,7 +173,7 @@ namespace
{
Radio::Frequency constexpr default_frequency {14078000};
QRegExp message_alphabet {"[^\\x00-\\x1F]*"}; // base alphabet supported by FT8CALL
QRegExp message_alphabet {"[^\\x00-\\x1F]*"}; // base alphabet supported by JS8CALL
// grid exact match excluding RR73
QRegularExpression grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"};
@ -1422,7 +1422,7 @@ QDate eol(2018, 10, 29);
void MainWindow::expiry_warning_message()
{
if(QDateTime::currentDateTimeUtc().date() > eol){
MessageBox::critical_message (this, QString("This pre-release development build of FT8Call has expired. Please upgrade to the latest version."));
MessageBox::critical_message (this, QString("This pre-release development build of JS8Call has expired. Please upgrade to the latest version."));
close();
return;
}
@ -1436,7 +1436,7 @@ void MainWindow::not_GA_warning_message ()
QString("This version of %1 is a pre-release development\n"
"build and will expire after %2 (UTC), upon which you\n"
"will need to upgrade to the latest version. \n\n"
"Use of development versions of FT8Call are at your own risk \n"
"Use of development versions of JS8Call are at your own risk \n"
"and carry a responsiblity to report any problems to:\n"
"Jordan Sherer (KN4CRD) kn4crd@gmail.com\n\n").arg(QApplication::applicationName()).arg(eol.toString()));
@ -2996,7 +2996,7 @@ void MainWindow::on_actionCopyright_Notice_triggered()
"K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, "
"IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; "
"Philip Karn, KA9Q; and other members of the WSJT Development Group.\n\n"
"Further, the source code of FT8Call contains material Copyright (C) "
"Further, the source code of JS8Call contains material Copyright (C) "
"2018 by Jordan Sherer, KN4CRD.\"");
MessageBox::warning_message(this, message);
}
@ -3614,15 +3614,15 @@ void MainWindow::readFromStdout() //readFromStdout
DecodedText decodedtext {QString::fromUtf8 (t.constData ()).remove (QRegularExpression {"\r|\n"}), "FT8" == m_mode &&
ui->cbVHFcontest->isChecked(), m_config.my_grid ()};
// only display frames that are FT8Call frames (should decrease false decodes by at least 12%)
// only display frames that are JS8Call frames (should decrease false decodes by at least 12%)
int bits = decodedtext.bits();
bool bValidFrame = (
decodedtext.snr() > -24 &&
(bits == Varicode::FT8Call ||
((bits & Varicode::FT8CallFirst) == Varicode::FT8CallFirst) ||
((bits & Varicode::FT8CallLast) == Varicode::FT8CallLast) ||
((bits & Varicode::FT8CallReserved) == 0 /*Varicode::FT8CallReserved*/)) // This is unused...so is invalid at this time...
(bits == Varicode::JS8Call ||
((bits & Varicode::JS8CallFirst) == Varicode::JS8CallFirst) ||
((bits & Varicode::JS8CallLast) == Varicode::JS8CallLast) ||
((bits & Varicode::JS8CallReserved) == 0 /*Varicode::JS8CallReserved*/)) // This is unused...so is invalid at this time...
);
qDebug() << "valid" << bValidFrame << "decoded text" << decodedtext.message();
@ -3661,7 +3661,7 @@ void MainWindow::readFromStdout() //readFromStdout
d.isBuffered = false;
// if we have any "first" frame, and a buffer is already established, clear it...
if(((d.bits & Varicode::FT8CallFirst) == Varicode::FT8CallFirst) && m_messageBuffer.contains(d.freq/10*10)){
if(((d.bits & Varicode::JS8CallFirst) == Varicode::JS8CallFirst) && m_messageBuffer.contains(d.freq/10*10)){
qDebug() << "first message encountered, clearing existing buffer" << (d.freq/10*10);
m_messageBuffer.remove(d.freq/10*10);
}
@ -3735,7 +3735,7 @@ void MainWindow::readFromStdout() //readFromStdout
d.extra = parts.length() > 2 ? parts.mid(3).join(" ") : "";
// if the command is a buffered command and its not the last frame OR we have from or to in a separate message (compound call)
if((Varicode::isCommandBuffered(d.cmd) && (d.bits & Varicode::FT8CallLast) != Varicode::FT8CallLast) || d.from == "<....>" || d.to == "<....>"){
if((Varicode::isCommandBuffered(d.cmd) && (d.bits & Varicode::JS8CallLast) != Varicode::JS8CallLast) || d.from == "<....>" || d.to == "<....>"){
qDebug() << "buffering cmd" << d.cmd << d.from << d.to;
m_messageBuffer[d.freq/10*10].cmd = d;
m_messageBuffer[d.freq/10*10].msgs.clear();
@ -6162,7 +6162,7 @@ QStringList MainWindow::buildMessageFrames(const QString &text){
bool MainWindow::prepareNextMessageFrame()
{
m_i3bit = Varicode::FT8Call;
m_i3bit = Varicode::JS8Call;
QString frame = popMessageFrame();
if(frame.isEmpty()){
@ -6175,10 +6175,10 @@ bool MainWindow::prepareNextMessageFrame()
int sent = count - m_txFrameQueue.count();
if(sent == 1){
m_i3bit |= Varicode::FT8CallFirst;
m_i3bit |= Varicode::JS8CallFirst;
}
if(count == sent){
m_i3bit |= Varicode::FT8CallLast;
m_i3bit |= Varicode::JS8CallLast;
}
ui->startTxButton->setText(QString("Sending (%1/%2)").arg(sent).arg(count));
@ -6312,7 +6312,7 @@ void MainWindow::prepareBeacon(){
QString mycall = m_config.my_callsign();
QString mygrid = m_config.my_grid().left(4);
// FT8Call Style
// JS8Call Style
if(m_txBeaconQueue.isEmpty()){
lines.append(QString("%1: BEACON %2").arg(mycall).arg(mygrid));
} else {
@ -6814,12 +6814,12 @@ void MainWindow::on_actionErase_FoxQSO_txt_triggered()
}
}
void MainWindow::on_actionErase_ft8call_log_adi_triggered()
void MainWindow::on_actionErase_js8call_log_adi_triggered()
{
int ret = MessageBox::query_message (this, tr ("Confirm Erase"),
tr ("Are you sure you want to erase file ft8call_log.adi?"));
tr ("Are you sure you want to erase file js8call_log.adi?"));
if(ret==MessageBox::Yes) {
QFile f {m_config.writeable_data_dir ().absoluteFilePath ("ft8call_log.adi")};
QFile f {m_config.writeable_data_dir ().absoluteFilePath ("js8call_log.adi")};
f.remove();
}
}
@ -7683,7 +7683,7 @@ void MainWindow::on_tableWidgetRXAll_cellDoubleClicked(int row, int col){
}
activityText.append(d.text);
isLast = (d.bits & Varicode::FT8CallLast) == Varicode::FT8CallLast;
isLast = (d.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast;
if(isLast){
// can also use \u0004 \u2666 \u2404
activityText.append(" \u2301 ");
@ -8364,7 +8364,7 @@ bool MainWindow::shortList(QString callsign)
void MainWindow::pskSetLocal ()
{
psk_Reporter->setLocalStation(m_config.my_callsign (), m_config.my_grid (),
m_config.my_station(), QString {"FT8Call v" + version() }.simplified ());
m_config.my_station(), QString {"JS8Call v" + version() }.simplified ());
}
void MainWindow::aprsSetLocal ()
@ -8990,8 +8990,8 @@ void MainWindow::processRxActivity() {
markOffsetRecent(d.freq);
#endif
bool isFirst = (d.bits & Varicode::FT8CallFirst) == Varicode::FT8CallFirst;
bool isLast = (d.bits & Varicode::FT8CallLast) == Varicode::FT8CallLast;
bool isFirst = (d.bits & Varicode::JS8CallFirst) == Varicode::JS8CallFirst;
bool isLast = (d.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast;
// if we're the last message, let's display our EOT character
if (isLast) {
@ -9035,10 +9035,10 @@ void MainWindow::processCompoundActivity() {
// if we don't have an initialized command, skip...
int bits = buffer.cmd.bits;
bool validBits = (
bits == Varicode::FT8Call ||
((bits & Varicode::FT8CallFirst) == Varicode::FT8CallFirst) ||
((bits & Varicode::FT8CallLast) == Varicode::FT8CallLast) ||
((bits & Varicode::FT8CallReserved) == Varicode::FT8CallReserved)
bits == Varicode::JS8Call ||
((bits & Varicode::JS8CallFirst) == Varicode::JS8CallFirst) ||
((bits & Varicode::JS8CallLast) == Varicode::JS8CallLast) ||
((bits & Varicode::JS8CallReserved) == Varicode::JS8CallReserved)
);
if (!validBits) {
qDebug() << "-> buffer.cmd bits is invalid...skip";
@ -9064,7 +9064,7 @@ void MainWindow::processCompoundActivity() {
buffer.cmd.isCompound = true;
buffer.cmd.utcTimestamp = qMin(buffer.cmd.utcTimestamp, d.utcTimestamp);
if ((d.bits & Varicode::FT8CallLast) == Varicode::FT8CallLast) {
if ((d.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast) {
buffer.cmd.bits = d.bits;
}
}
@ -9075,12 +9075,12 @@ void MainWindow::processCompoundActivity() {
buffer.cmd.isCompound = true;
buffer.cmd.utcTimestamp = qMin(buffer.cmd.utcTimestamp, d.utcTimestamp);
if ((d.bits & Varicode::FT8CallLast) == Varicode::FT8CallLast) {
if ((d.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast) {
buffer.cmd.bits = d.bits;
}
}
if ((buffer.cmd.bits & Varicode::FT8CallLast) != Varicode::FT8CallLast) {
if ((buffer.cmd.bits & Varicode::JS8CallLast) != Varicode::JS8CallLast) {
qDebug() << "-> still not last message...skip";
continue;
}
@ -9133,7 +9133,7 @@ void MainWindow::processBufferedActivity() {
continue;
}
if ((buffer.msgs.last().bits & Varicode::FT8CallLast) != Varicode::FT8CallLast) {
if ((buffer.msgs.last().bits & Varicode::JS8CallLast) != Varicode::JS8CallLast) {
continue;
}
@ -9167,7 +9167,7 @@ void MainWindow::processBufferedActivity() {
if (valid) {
buffer.cmd.bits |= Varicode::FT8CallLast;
buffer.cmd.bits |= Varicode::JS8CallLast;
buffer.cmd.text = message;
buffer.cmd.isBuffered = true;
m_rxCommandQueue.append(buffer.cmd);
@ -9263,7 +9263,7 @@ void MainWindow::processCommandActivity() {
if(!d.text.isEmpty()){
ad.text += d.text;
}
bool isLast = (ad.bits & Varicode::FT8CallLast) == Varicode::FT8CallLast;
bool isLast = (ad.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast;
if (isLast) {
// can also use \u0004 \u2666 \u2404
ad.text += QString(" \u2301 ");
@ -9879,7 +9879,7 @@ void MainWindow::displayBandActivity() {
if (item.isLowConfidence) {
item.text = QString("[%1]").arg(item.text);
}
if ((item.bits & Varicode::FT8CallLast) == Varicode::FT8CallLast) {
if ((item.bits & Varicode::JS8CallLast) == Varicode::JS8CallLast) {
// can also use \u0004 \u2666 \u2404
item.text = QString("%1 \u2301 ").arg(item.text);
}

View File

@ -250,7 +250,7 @@ private slots:
void bumpFqso(int n);
void on_actionErase_ALL_TXT_triggered();
void on_actionErase_FoxQSO_txt_triggered();
void on_actionErase_ft8call_log_adi_triggered();
void on_actionErase_js8call_log_adi_triggered();
void startTx();
void startTx2();
void startP1();

View File

@ -17,7 +17,7 @@
</sizepolicy>
</property>
<property name="windowTitle">
<string>FT8Call</string>
<string>JS8Call</string>
</property>
<property name="styleSheet">
<string notr="true"/>
@ -4733,7 +4733,7 @@ list. The list can be maintained in Settings (F2).</string>
<addaction name="actionOpen_log_directory"/>
<addaction name="separator"/>
<addaction name="actionErase_ALL_TXT"/>
<addaction name="actionErase_ft8call_log_adi"/>
<addaction name="actionErase_js8call_log_adi"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuConfig"/>
@ -4771,7 +4771,7 @@ list. The list can be maintained in Settings (F2).</string>
<bool>true</bool>
</property>
<property name="text">
<string>About FT8Call</string>
<string>About JS8Call</string>
</property>
</action>
<action name="actionWide_Waterfall">
@ -4949,9 +4949,9 @@ list. The list can be maintained in Settings (F2).</string>
<string>Erase ALL.TXT</string>
</property>
</action>
<action name="actionErase_ft8call_log_adi">
<action name="actionErase_js8call_log_adi">
<property name="text">
<string>Erase ft8call_log.adi</string>
<string>Erase js8call_log.adi</string>
</property>
</action>
<action name="actionConvert_JT9_x_to_RTTY">

View File

@ -1,3 +1,3 @@
echo make
echo cp wsjtx ft8call
echo linuxdeployqt ./ft8call -appimage -bundle-non-qt-libs -no-strip -no-translations
echo cp wsjtx js8call
echo linuxdeployqt ./js8call -appimage -bundle-non-qt-libs -no-strip -no-translations

View File

@ -33,6 +33,6 @@ QString version (bool include_patch)
QString program_title (QString const& revision)
{
QString id {"FT8Call de KN4CRD (v%1) a derivative of WSJT-X by K1JT"};
QString id {"JSQCall de KN4CRD (v%1)"};
return id.arg(QCoreApplication::applicationVersion ());
}

View File

@ -1,5 +1,5 @@
/**
* This file is part of FT8Call.
* This file is part of JS8Call.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@ -17,10 +17,10 @@ class Varicode
public:
// frame type transmitted via itype and decoded by the ft8 decoded
enum TransmissionType {
FT8Call = 0, // [000] <- any other frame of the message
FT8CallFirst = 1, // [001] <- the first frame of a message
FT8CallLast = 2, // [010] <- the last frame of a message
FT8CallReserved = 4, // [100] <- a reserved flag for future use...
JS8Call = 0, // [000] <- any other frame of the message
JS8CallFirst = 1, // [001] <- the first frame of a message
JS8CallLast = 2, // [010] <- the last frame of a message
JS8CallReserved = 4, // [100] <- a reserved flag for future use...
};
enum FrameType {

View File

@ -1 +1 @@
IDI_ICON1 ICON DISCARDABLE "icons/windows-icons/ft8call.ico"
IDI_ICON1 ICON DISCARDABLE "icons/windows-icons/js8call.ico"