Rename to JS8Call
@ -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);
|
||||
|
@ -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@")
|
||||
|
@ -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)
|
||||
|
@ -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"
|
@ -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
@ -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 K1JT’s 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
|
||||
|
14
about.cpp
@ -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()
|
||||
|
2
about.ui
@ -14,7 +14,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>About FT8Call</string>
|
||||
<string>About JS8Call</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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();
|
||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 571 B After Width: | Height: | Size: 571 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 282 KiB After Width: | Height: | Size: 282 KiB |
@ -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
|
2
jsc.cpp
@ -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
|
||||
|
@ -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},
|
||||
|
@ -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},
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
namespace
|
||||
{
|
||||
auto logFileName = "ft8call_log.adi";
|
||||
auto logFileName = "js8call_log.adi";
|
||||
auto countryFileName = "cty.dat";
|
||||
}
|
||||
|
||||
|
10
logqso.cpp
@ -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 ()),
|
||||
|
2
main.cpp
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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">
|
||||
|
@ -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
|
||||
|
@ -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 ());
|
||||
}
|
@ -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
|
||||
|
@ -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 {
|
||||
|