From 54d80b9e90b56cb2117be3997479a01190f7e9aa Mon Sep 17 00:00:00 2001 From: John Wiseman Date: Wed, 12 Apr 2023 15:35:34 +0100 Subject: [PATCH] Version 0.0.0.63 --- AGWCode.cpp | 19 ++- DialogButtonBottom.ui | 100 ++++++++++++ QtTermTCP.cpp | 129 +++++++++++++-- QtTermTCP.h | 3 +- QtTermTCP.ini | 121 ++++++++++++++ QtTermTCP.pro.user | 357 +++++++++++++++++++++++++++++++++++++++++ QtTermTCP.vcxproj | 194 +++++++++++++++++++++- QtTermTCP.vcxproj.user | 10 +- TabDialog.cpp | 25 ++- TeleText.ui | 212 ++++++++++++------------ TermTCPCommon.cpp | 1 + VARAConfig.ui | 68 ++++++-- ax25_l2.c | 5 +- debug/moc_predefs.h | 24 +-- makeit | 6 +- release/moc_predefs.h | 22 +-- 16 files changed, 1123 insertions(+), 173 deletions(-) create mode 100644 DialogButtonBottom.ui create mode 100644 QtTermTCP.ini create mode 100644 QtTermTCP.pro.user diff --git a/AGWCode.cpp b/AGWCode.cpp index 42f5f36..10bed29 100644 --- a/AGWCode.cpp +++ b/AGWCode.cpp @@ -495,6 +495,15 @@ void QtTermTCP::onAGWSocketStateChanged(QAbstractSocket::SocketState socketState AGWUsers->MonSess = nullptr; } + if (TermMode == Single && (singlemodeFormat & Mon)) + { + //Re-renable TCP connects + + for (int i = 0; i < MAXHOSTS; i++) + actHost[i]->setVisible(1); + } + + AGWConnected = 0; } else if (socketState == QAbstractSocket::ConnectedState) @@ -580,7 +589,15 @@ void QtTermTCP::onAGWSocketStateChanged(QAbstractSocket::SocketState socketState else if (TermMode == Single) mythis->setWindowTitle("AGW Monitor Window"); - if (TermMode != Tabbed) // Not ideal, but AGW mon window is unlikely to be active window + if (TermMode == Single && (singlemodeFormat & Mon)) + { + // Can't be connected, so leave state alone, but disable TCP connects + + for (int i = 0; i < MAXHOSTS; i++) + actHost[i]->setVisible(0); + + } + else if (TermMode != Tabbed) // Not ideal, but AGW mon window is unlikely to be active window { discAction->setEnabled(false); YAPPSend->setEnabled(false); diff --git a/DialogButtonBottom.ui b/DialogButtonBottom.ui new file mode 100644 index 0000000..5159f82 --- /dev/null +++ b/DialogButtonBottom.ui @@ -0,0 +1,100 @@ + + + + + Dialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + 20 + 250 + 351 + 33 + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + OK + + + + + + + Cancel + + + + + + + + + + + okButton + clicked() + Dialog + accept() + + + 278 + 253 + + + 96 + 254 + + + + + cancelButton + clicked() + Dialog + reject() + + + 369 + 253 + + + 179 + 282 + + + + + diff --git a/QtTermTCP.cpp b/QtTermTCP.cpp index 07f0c1c..a9aebbd 100644 --- a/QtTermTCP.cpp +++ b/QtTermTCP.cpp @@ -1,6 +1,6 @@ // Qt Version of BPQTermTCP -#define VersionString "0.0.0.58" +#define VersionString "0.0.0.63" // .12 Save font weight // .13 Display incomplete lines (ie without CR) @@ -64,6 +64,12 @@ // .57 Fix KISS mode incoming call handling // .58 Add method to toggle Normal/Teletext Mode // Fix KISS multiple session protection +// .59 Add Teletext double height mode +// .60 Add option to name sessions Jan 2023 +// .61 Add VARA Init Script Feb 2023 +// .62 Fix running AGW in single session mode Feb 2023 +// .63 Fix handling split monitor frame (no fe in buffer) Apr 2023 + #define _CRT_SECURE_NO_WARNINGS @@ -99,9 +105,6 @@ #include "ax25.h" -#define MAXHOSTS 16 -#define MAXPORTS 32 - #define UNREFERENCED_PARAMETER(P) (P) void DecodeTeleText(Ui_ListenSession * Sess, char * text); @@ -111,6 +114,7 @@ int Port[MAXHOSTS + 1] = { 0 }; char UserName[MAXHOSTS + 1][80] = { "" }; char Password[MAXHOSTS + 1][80] = { "" }; char MonParams[MAXHOSTS + 1][80] = { "" }; +char SessName[MAXHOSTS + 1][80] = { "" }; int ListenPort = 8015; // Session Type Equates @@ -264,6 +268,7 @@ int VARAPortFM = 8000; int VARAPortSAT = 8000; char VARATermCall[12] = ""; char VARAPath[256] = ""; +char VARAInit[256] = ""; char VARAPathHF[256] = ""; char VARAPathFM[256] = ""; char VARAPathSAT[256] = ""; @@ -457,7 +462,7 @@ int checkUTF8(unsigned char * Msg, int Len, unsigned char * out); void EncodeSettingsLine(int n, char * String) { - sprintf(String, "%s|%d|%s|%s|%s", Host[n], Port[n], UserName[n], Password[n], MonParams[n]); + sprintf(String, "%s|%d|%s|%s|%s|%s", Host[n], Port[n], UserName[n], Password[n], MonParams[n], SessName[n]); return; } @@ -516,9 +521,13 @@ void DecodeSettingsLine(int n, char * String) Rest = strlop(Param, '|'); strcpy(Password[n], Param); + Param = Rest; - strcpy(MonParams[n], Rest); + Rest = strlop(Param, '|'); + strcpy(MonParams[n], Param); + if (Rest) + strcpy(SessName[n], Rest); free(Save); return; @@ -918,6 +927,7 @@ Ui_ListenSession * newWindow(QObject * parent, int Type, const char * Label) Sess->TTBitmap = new QImage(40 * 15, 25 * 19, QImage::Format_RGB32); Sess->TTBitmap->fill(Qt::black); + /* char Page[4096]; @@ -930,6 +940,7 @@ Ui_ListenSession * newWindow(QObject * parent, int Type, const char * Label) Sess->TTActive = 1; strcpy(Sess->pageBuffer, Page); DecodeTeleText(Sess, Sess->pageBuffer); + */ Sess->TTLabel->setPixmap(QPixmap::fromImage(*Sess->TTBitmap)); @@ -1183,9 +1194,18 @@ QtTermTCP::QtTermTCP(QWidget *parent) : QMainWindow(parent) connectMenu->addAction(actHost[18]); connect(actHost[18], SIGNAL(triggered()), this, SLOT(Connect())); + for (i = 0; i < MAXHOSTS; i++) { - actHost[i] = new QAction(Host[i], this); + if (SessName[i][0]) + { + char Lable[256]; + sprintf(Lable, "%s(%s)", Host[i], SessName[i]); + actHost[i] = new QAction(Lable, this); + } + else + actHost[i] = new QAction(Host[i], this); + actHost[i]->setFont(*menufont); connectMenu->addAction(actHost[i]); connect(actHost[i], SIGNAL(triggered()), this, SLOT(Connect())); @@ -1233,7 +1253,16 @@ QtTermTCP::QtTermTCP(QWidget *parent) : QMainWindow(parent) for (i = 0; i < MAXHOSTS; i++) { if (Host[i][0]) - actSetup[i] = new QAction(Host[i], this); + { + char Label[256]; + + if (SessName[i][0]) + sprintf(Label, "%s(%s)", Host[i], SessName[i]); + else + strcpy(Label, Host[i]); + + actSetup[i] = new QAction(Label, this); + } else actSetup[i] = new QAction("New Host", this); @@ -3108,6 +3137,7 @@ void GetSettings() VARAHF = settings->value("VARAHF", 1).toInt(); VARAFM = settings->value("VARAFM", 0).toInt(); VARASAT = settings->value("VARASAT", 0).toInt(); + strcpy(VARAInit, settings->value("VARAInit", "").toString().toUtf8()); strcpy(PTTPort, settings->value("PTT", "None").toString().toUtf8()); PTTMode = settings->value("PTTMode", 19200).toInt(); @@ -3290,6 +3320,7 @@ extern "C" void SaveSettings() settings->setValue("VARATermCall", VARATermCall); settings->setValue("VARAHost", VARAHost); settings->setValue("VARAPort", VARAPortNum); + settings->setValue("VARAInit", VARAInit); settings->setValue("VARAPath", VARAPath); settings->setValue("VARAHostHF", VARAHostHF); settings->setValue("VARAPortHF", VARAPortHF); @@ -3763,6 +3794,7 @@ void QtTermTCP::deviceaccept() VARAPortNum = Q.toInt(); strcpy(VARAHost, Dev->Host->text().toUtf8().toUpper()); strcpy(VARAPath, Dev->Path->text().toUtf8()); + strcpy(VARAInit, Dev->InitCommands->text().toUtf8()); VARA500 = Dev->VARA500->isChecked(); VARA2300 = Dev->VARA2300->isChecked(); @@ -4087,12 +4119,26 @@ void QtTermTCP::onSocketStateChanged(QAbstractSocket::SocketState socketState) if (Sess->SessionType == Mon) // Mon Only sprintf(Title, "Monitor Session Connected to %s", Host[Sess->CurrentHost]); else - sprintf(Title, "Connected to %s", Host[Sess->CurrentHost]); + { + char Label[256]; + + if (SessName[Sess->CurrentHost][0]) + sprintf(Label, "%s(%s)", Host[Sess->CurrentHost], SessName[Sess->CurrentHost]); + else + strcpy(Label, Host[Sess->CurrentHost]); + + sprintf(Title, "Connected to %s", Label); + } if (TermMode == MDI) Sess->setWindowTitle(Title); else if (TermMode == Tabbed) - tabWidget->setTabText(tabWidget->currentIndex(), Host[Sess->CurrentHost]); + { + if (SessName[Sess->CurrentHost][0]) + tabWidget->setTabText(tabWidget->currentIndex(), SessName[Sess->CurrentHost]); + else + tabWidget->setTabText(tabWidget->currentIndex(), Host[Sess->CurrentHost]); + } else if (TermMode == Single) this->setWindowTitle(Title); } @@ -4983,7 +5029,7 @@ void QtTermTCP::onVARADataSocketStateChanged(QAbstractSocket::SocketState socket } else if (socketState == QAbstractSocket::ConnectedState) { - char MyCall[32]; + char VARACommand[256]; VARAConnected = 1; VARAConnecting = 0; @@ -4992,8 +5038,8 @@ void QtTermTCP::onVARADataSocketStateChanged(QAbstractSocket::SocketState socket actHost[17]->setVisible(1); // Enable VARA Connect Line - sprintf(MyCall, "MYCALL %s\r", VARATermCall); - VARASock->write(MyCall); + sprintf(VARACommand, "MYCALL %s\r", VARATermCall); + VARASock->write(VARACommand); if (VARA500) VARASock->write("BW500\r"); @@ -5004,6 +5050,23 @@ void QtTermTCP::onVARADataSocketStateChanged(QAbstractSocket::SocketState socket VARASock->write("COMPRESSION FILES\r"); + if (VARAInit[0]) + { + char Copy[512]; + char * param, *context; + + strcpy(Copy, VARAInit); + + param = strtok_s(Copy, ",", &context); + + while (param && param[0]) + { + sprintf(VARACommand, "%s\r", param); + VARASock->write(VARACommand); + param = strtok_s(nullptr, ",", &context); + } + } + if (listenEnable) VARASock->write("LISTEN ON\r"); } @@ -5295,6 +5358,7 @@ void QtTermTCP::SetVARAParams() Dev->Host->setText(VARAHost); Dev->Port->setText(QString::number(VARAPortNum)); Dev->Path->setText(VARAPath); + Dev->InitCommands->setText(VARAInit); } void QtTermTCP::PTTPortChanged(int Selected) @@ -6539,7 +6603,7 @@ void DecodeTeleText(Ui_ListenSession * Sess, char * page) switch (echar) { case '@': -// fg = Qt::black; + fg = Qt::black; concealed = false; // Side effect of colour. It cancels a conceal. graphicsMode = false; // hold = false; @@ -6895,10 +6959,41 @@ void DecodeTeleText(Ui_ListenSession * Sess, char * page) s[2] = 0x88; } +// if (doubleHeight) + // p.drawText(col * 15, line * 19 + 25, s); + // else + // p.drawText(col * 15, line * 19 + 15, s); + + // if double height draw normally then copy pixels each row of pixels to two scanlines (starting at the bottom) + if (doubleHeight) - p.drawText(col * 15, line * 19 + 25, s); - else - p.drawText(col * 15, line * 19 + 15, s); + { + int inscanline = line * 19 + 18; + int outscanline = line * 19 + 35; + unsigned char * inptr = Sess->TTBitmap->scanLine(inscanline); + unsigned char * outptr = Sess->TTBitmap->scanLine(outscanline); + int linelen = Sess->TTBitmap->bytesPerLine(); + int charlen = linelen / 40; // bytes per char position + + p.drawText(col * 15, line * 19 + 16, s); + + inptr += col * charlen; + outptr += col * charlen; + + for (int i = 0; i < 18; i++) + { + memcpy(outptr, inptr, charlen); + outptr -= linelen; + memcpy(outptr, inptr, charlen); + + inptr -= linelen; + outptr -= linelen; + + } + } + else + p.drawText(col * 15, line * 19 + 15, s); + } } } diff --git a/QtTermTCP.h b/QtTermTCP.h index 82270cb..0ec6b4d 100644 --- a/QtTermTCP.h +++ b/QtTermTCP.h @@ -29,7 +29,8 @@ #include #include - +#define MAXHOSTS 16 +#define MAXPORTS 32 QT_BEGIN_NAMESPACE class QComboBox; diff --git a/QtTermTCP.ini b/QtTermTCP.ini new file mode 100644 index 0000000..b6675f7 --- /dev/null +++ b/QtTermTCP.ini @@ -0,0 +1,121 @@ +[General] +HostParams0=192.168.1.44|8011|g8bpq|password|5 1 1 0 1 0 0 1\r|Pogo4 +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\xfc\0\0\0\x33\0\0\x4\b\0\0\x2\xea\0\0\0\xfc\0\0\0\x33\0\0\x4\b\0\0\x2\xea\0\0\0\0\0\0\0\0\x5\0\0\0\0\xfc\0\0\0\x33\0\0\x4\b\0\0\x2\xea) +HostParams1=192.168.1.63|8011|john|password||Pogo2 +windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x3\r\0\0\x2\x8a\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x3\0\0\0\x1\0\0\0\x16\0m\0\x61\0i\0n\0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0) +HostParams2=127.0.0.1|8011|john|password|1 1 1 0 1 0 0 1\r| +HostParams3=|0|||| +HostParams4=|0|||| +HostParams5=|0|||| +HostParams6=|0|||| +HostParams7=|0|||| +HostParams8=|0|||| +HostParams9=|0|||| +HostParams10=|0|||| +HostParams11=|0|||| +HostParams12=|0|||| +HostParams13=|0|||| +HostParams14=|0|||| +HostParams15=|0|||| +Split=41 +ChatMode=1 +AutoTeletext=1 +Bells=1 +StripLF=1 +AlertBeep=1 +ConnectBeep=1 +CurrentHost=0 +YAPPPath= +listenPort=8015 +listenEnable=0 +listenCText= +convUTF8=0 +PTT=None +PTTBAUD=0 +PTTMode=1 +CATHex=1 +PTTOffString= +PTTOnString= +pttGPIOPin=17 +pttGPIOPinR=17 +CM108Addr=0xD8C:0x08 +HamLibPort=4532 +HamLibHost=127.0.0.1 +FLRigPort=12345 +FLRigHost=127.0.0.1 +AGWEnable=1 +AGWMonEnable=1 +AGWTermCall=GM8BPQ +AGWBeaconDest= +AGWBeaconPath= +AGWBeaconInterval=0 +AGWBeaconPorts= +AGWBeaconText= +AGWHost=127.0.0.1 +AGWPort=8888 +AGWPaclen=80 +AGWToCalls=G8BPQ-2, SWITCH, +KISSEnable=0 +MYCALL=GM8BPQ +KISSHost=127.0.0.1 +KISSMode=0 +KISSPort=8110 +KISSSerialPort=TCP +KISSBAUD=19200 +VARAEnable=0 +VARATermCall=G8BPQ +VARAHost=127.0.0.1 +VARAPort=8310 +VARAPath=C:\\VARA\\VARA.exe +VARAHostHF=127.0.0.1 +VARAPortHF=8310 +VARAPathHF=C:\\VARA\\VARA.exe +VARAHostFM=127.0.0.1 +VARAPortFM=8300 +VARAPathFM=C:\\VARA\\VARAFM.exe +VARAHostSAT=127.0.0.1 +VARAPortSAT=8300 +VARAPathSAT=C:\\VARA\\VARASAT.exe +VARA500=0 +VARA2300=1 +VARA2750=0 +VARAHF=1 +VARAFM=0 +VARASAT=0 +TabType=1 3 1 1 1 1 1 2 2 0 +monBackground=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0) +monRxText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0) +monTxText=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0) +monOtherText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0) +termBackground=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0) +outputText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0) +EchoText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0) +WarningText=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0) +inputBackground=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0) +inputText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0) +TermMode=2 +singlemodeFormat=3 +FontFamily=Courier +PointSize=10 +Weight=50 +Sessions="1|1, 17, 40, 205, 625, 990|" +VARAInit="P2P SESSION,WINLINK SESSION" + +[AX25_A] +Retries=10 +Maxframe=4 +Paclen=128 +FrackTime=8 +IdleTime=180 +SlotTime=100 +Persist=128 +RespTime=1500 +TXFrmMode=1 +FrameCollector=6 +ExcludeCallsigns= +ExcludeAPRSFrmType= +KISSOptimization=0 +DynamicFrack=0 +BitRecovery=0 +IPOLL=80 +MyDigiCall= diff --git a/QtTermTCP.pro.user b/QtTermTCP.pro.user new file mode 100644 index 0000000..4e70805 --- /dev/null +++ b/QtTermTCP.pro.user @@ -0,0 +1,357 @@ + + + + + + EnvironmentId + {49a2cf38-2251-47e3-97df-4ecaa9d41931} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + true + 0 + 8 + true + 1 + true + true + true + *.md, *.MD, Makefile + false + true + + + + ProjectExplorer.Project.PluginSettings + + + true + true + true + true + true + + + 0 + true + + -fno-delayed-template-parsing + + true + Builtin.Questionable + + true + Builtin.DefaultTidyAndClazy + 3 + + + + true + + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop Qt 5.14.2 MSVC2015 64bit + Desktop Qt 5.14.2 MSVC2015 64bit + qt.qt5.5142.win64_msvc2015_64_kit + 0 + 0 + 0 + + true + 0 + C:\Users\John\OneDrive\Dev\Source\QT\build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Debug + C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Debug + + + true + QtProjectManager.QMakeBuildStep + + false + + + + true + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + 2 + 2 + + + true + 2 + C:\Users\John\OneDrive\Dev\Source\QT\build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Release + C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Release + + + true + QtProjectManager.QMakeBuildStep + + false + + + + true + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 2 + + + true + 0 + C:\Users\John\OneDrive\Dev\Source\QT\build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Profile + C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Profile + + + true + QtProjectManager.QMakeBuildStep + + false + + + + true + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + dwarf + + cpu-cycles + + + 250 + + -e + cpu-cycles + --call-graph + dwarf,4096 + -F + 250 + + -F + true + 4096 + false + false + 1000 + + true + + false + false + false + false + true + 0.01 + 10 + true + kcachegrind + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + + 2 + + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/John/OneDrive/Dev/Source/QT/QtTermTCP/QtTermTCP.pro + C:/Users/John/OneDrive/Dev/Source/QT/QtTermTCP/QtTermTCP.pro + + false + + false + true + true + false + false + true + + C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Debug + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + + diff --git a/QtTermTCP.vcxproj b/QtTermTCP.vcxproj index f62e99a..e47863b 100644 --- a/QtTermTCP.vcxproj +++ b/QtTermTCP.vcxproj @@ -1,6 +1,10 @@  + + Debug + x64 + Release Win32 @@ -9,6 +13,10 @@ Debug Win32 + + Release + x64 + {14F3B24E-473C-324E-A99D-3B679FCF5F67} @@ -28,6 +36,15 @@ release\ QtTermTCP + + v141 + release\ + false + NotSet + Application + release\ + QtTermTCP + v141 debug\ @@ -37,6 +54,15 @@ debug\ QtTermTCP + + v141 + debug\ + false + NotSet + Application + debug\ + QtTermTCP + @@ -45,9 +71,15 @@ + + + + + + @@ -59,6 +91,13 @@ true true + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)Intermed\$(Platform)\$(Configuration)\ + QtTermTCP + true + true + $(SolutionDir)$(Platform)\$(Configuration)\ $(SolutionDir)Intermed\$(Platform)\$(Configuration)\ @@ -66,12 +105,27 @@ true false + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)Intermed\$(Platform)\$(Configuration)\ + QtTermTCP + true + false + - msvc2017 5.14 + 5.14.2 + core;network;gui;widgets;serialport + + + 5.14.2_msvc2017 core;network;gui;widgets;serialport - msvc2017 5.14 + 5.14.2 + core;network;gui;widgets;serialport + + + 5.14.2_msvc2017_64 core;network;gui;widgets;serialport @@ -141,6 +195,70 @@ ui_%(Filename).h + + + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;release;/include;%(AdditionalIncludeDirectories) + -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) + $(IntDir) + false + None + 4577;4467;%(DisableSpecificWarnings) + Sync + $(IntDir) + MaxSpeed + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QT_DISABLE_DEPRECATED_BEFORE=0x050000;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) + false + + + MultiThreadedDLL + true + true + Level3 + true + + + shell32.lib;setupapi.lib;%(AdditionalDependencies) + C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories) + -no-pie "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) + true + false + true + false + true + $(OutDir)\QtTermTCP.exe + true + Windows + true + + + Unsigned + None + 0 + + + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QT_DISABLE_DEPRECATED_BEFORE=0x050000;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + + + msvc + ./$(Configuration)/moc_predefs.h + Moc'ing %(Identity)... + output + $(IntDir) + moc_%(Filename).cpp + + + QtTermTCP + default + Rcc'ing %(Identity)... + $(IntDir) + qrc_%(Filename).cpp + + + Uic'ing %(Identity)... + $(IntDir) + ui_%(Filename).h + + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;debug;/include;%(AdditionalIncludeDirectories) @@ -202,11 +320,73 @@ ui_%(Filename).h + + + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;debug;/include;%(AdditionalIncludeDirectories) + -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) + $(IntDir) + false + ProgramDatabase + 4577;4467;%(DisableSpecificWarnings) + Sync + $(intdir) + Disabled + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QT_DISABLE_DEPRECATED_BEFORE=0x050000;%(PreprocessorDefinitions) + false + MultiThreadedDebugDLL + true + true + Level3 + true + + + shell32.lib;setupapi.lib;%(AdditionalDependencies) + C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories) + -no-pie "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) + true + true + true + $(OutDir)\QtTermTCP.exe + true + Windows + true + false + + + Unsigned + None + 0 + + + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QT_DISABLE_DEPRECATED_BEFORE=0x050000;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) + + + msvc + ./$(Configuration)/moc_predefs.h + Moc'ing %(Identity)... + output + $(IntDir) + moc_%(Filename).cpp + + + QtTermTCP + default + Rcc'ing %(Identity)... + $(IntDir) + qrc_%(Filename).cpp + + + Uic'ing %(Identity)... + $(IntDir) + ui_%(Filename).h + + EditAndContinue + ProgramDatabase @@ -226,18 +406,28 @@ Document true + true $(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) + $(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >debug\moc_predefs.h + cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >debug\moc_predefs.h Generate moc_predefs.h + Generate moc_predefs.h debug\moc_predefs.h;%(Outputs) + debug\moc_predefs.h;%(Outputs) Document $(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) + $(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h + cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h Generate moc_predefs.h + Generate moc_predefs.h release\moc_predefs.h;%(Outputs) + release\moc_predefs.h;%(Outputs) true + true diff --git a/QtTermTCP.vcxproj.user b/QtTermTCP.vcxproj.user index 1ec8733..a562388 100644 --- a/QtTermTCP.vcxproj.user +++ b/QtTermTCP.vcxproj.user @@ -8,9 +8,15 @@ 2022-05-19T07:28:58.9302359Z - 2022-11-21T13:52:08.2843113Z + 2023-04-12T13:14:53.1644359Z + + + 2023-02-08T10:47:28.1396474Z - 2022-11-20T17:39:52.6268704Z + 2023-03-06T08:27:08.3742630Z + + + 2023-02-08T10:47:27.7430420Z \ No newline at end of file diff --git a/TabDialog.cpp b/TabDialog.cpp index 7bd6410..2e2d665 100644 --- a/TabDialog.cpp +++ b/TabDialog.cpp @@ -41,6 +41,7 @@ QLineEdit *hostEdit; QLineEdit *portEdit; QLineEdit *userEdit; QLineEdit *passEdit; +QLineEdit *SNameEdit; extern QAction *actHost[17]; extern QAction *actSetup[16]; @@ -53,6 +54,8 @@ extern char Host[MAXHOSTS + 1][100]; extern int Port[MAXHOSTS + 1]; extern char UserName[MAXHOSTS + 1][80]; extern char Password[MAXHOSTS + 1][80]; +extern char SessName[MAXHOSTS + 1][80]; + extern char MYCALL[32]; QLineEdit *TermCall; @@ -734,6 +737,9 @@ TabDialog::TabDialog(QWidget *parent) : QDialog(parent) QLabel *passLabel = new QLabel(tr("Password:")); passEdit = new QLineEdit(Password[ConfigHost]); + QLabel *SNameLabel = new QLabel(tr("Session Name")); + SNameEdit = new QLineEdit(SessName[ConfigHost]); + layout->addWidget(hostLabel); layout->addWidget(hostEdit); layout->addWidget(portLabel); @@ -742,6 +748,8 @@ TabDialog::TabDialog(QWidget *parent) : QDialog(parent) layout->addWidget(userEdit); layout->addWidget(passLabel); layout->addWidget(passEdit); + layout->addWidget(SNameLabel); + layout->addWidget(SNameEdit); layout->addStretch(1); layout->addWidget(buttonBox); @@ -838,12 +846,23 @@ void TabDialog::myaccept() ptr = qb.data(); strcpy(Password[ConfigHost], ptr); - actHost[ConfigHost]->setText(Host[ConfigHost]); - actSetup[ConfigHost]->setText(Host[ConfigHost]); + val = SNameEdit->text(); + qb = val.toLatin1(); + ptr = qb.data(); + strcpy(SessName[ConfigHost], ptr); + + char Label[256]; + + if (ptr[0]) + sprintf(Label, "%s(%s)", Host[ConfigHost], SessName[ConfigHost]); + else + strcpy(Label, Host[ConfigHost]); + + actHost[ConfigHost]->setText(Label); + actSetup[ConfigHost]->setText(Label); SaveSettings(); - TabDialog::accept(); } diff --git a/TeleText.ui b/TeleText.ui index 54fe94e..f3b5797 100644 --- a/TeleText.ui +++ b/TeleText.ui @@ -1,106 +1,106 @@ - - - TeleTextDialog - - - - 0 - 0 - 665 - 551 - - - - Dialog - - - - - 224 - 516 - 153 - 31 - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - OK - - - - - - - Cancel - - - - - - - - - 28 - 20 - 600 - 475 - - - - TextLabel - - - - - - - okButton - clicked() - TeleTextDialog - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - TeleTextDialog - reject() - - - 369 - 253 - - - 179 - 282 - - - - - + + + TeleTextDialog + + + + 0 + 0 + 665 + 551 + + + + Dialog + + + + + 224 + 516 + 153 + 31 + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + OK + + + + + + + Cancel + + + + + + + + + 28 + 20 + 600 + 475 + + + + TextLabel + + + + + + + okButton + clicked() + TeleTextDialog + accept() + + + 278 + 253 + + + 96 + 254 + + + + + cancelButton + clicked() + TeleTextDialog + reject() + + + 369 + 253 + + + 179 + 282 + + + + + diff --git a/TermTCPCommon.cpp b/TermTCPCommon.cpp index 99816a9..78464a0 100644 --- a/TermTCPCommon.cpp +++ b/TermTCPCommon.cpp @@ -349,6 +349,7 @@ MonLoop: return; } + MonLen = len; // in case no fe Sess->MonData = 1; diff --git a/VARAConfig.ui b/VARAConfig.ui index 7992b6a..c4baacd 100644 --- a/VARAConfig.ui +++ b/VARAConfig.ui @@ -7,7 +7,7 @@ 0 0 571 - 517 + 589 @@ -17,7 +17,7 @@ 170 - 460 + 490 211 33 @@ -59,8 +59,8 @@ 10 120 - 537 - 123 + 551 + 161 @@ -79,8 +79,8 @@ - 130 - 54 + 400 + 20 47 22 @@ -90,7 +90,7 @@ 130 - 90 + 57 391 22 @@ -112,8 +112,8 @@ - 16 - 53 + 286 + 19 47 22 @@ -126,7 +126,7 @@ 16 - 89 + 56 47 22 @@ -135,12 +135,54 @@ Path + + + + 130 + 91 + 391 + 22 + + + + + + + 16 + 90 + 101 + 22 + + + + Init Commands + + + + + + 80 + 120 + 371 + 31 + + + + You can specify more than one command, but the separator must be just a comma with no spaces + + + Qt::AlignCenter + + + true + + 8 - 280 + 300 541 181 @@ -558,9 +600,9 @@ - - + + diff --git a/ax25_l2.c b/ax25_l2.c index 582592a..b9003c2 100644 --- a/ax25_l2.c +++ b/ax25_l2.c @@ -1497,7 +1497,6 @@ void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag) if (!is_correct_path(path, pid)) { // Duff path - if Non-AX25 filter active log and discard - } monitor_frame(snd_ch, frame, "", 0, excluded); // Monitor @@ -1512,7 +1511,7 @@ void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag) return; // Don't process if still unused digis } - // Clear reapeated bits from digi path + // Clear repeated bits from digi path ptr = &path[13]; @@ -1560,7 +1559,7 @@ void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag) if (f_id != U_SABM) // Not SABM { - // // send DM if P set + // send DM if P set if (cr == SET_C) { diff --git a/debug/moc_predefs.h b/debug/moc_predefs.h index 6eb1f1e..8247e15 100644 --- a/debug/moc_predefs.h +++ b/debug/moc_predefs.h @@ -1,12 +1,12 @@ -#define _MSC_EXTENSIONS -#define _INTEGRAL_MAX_BITS 64 -#define _MSC_VER 1916 -#define _MSC_FULL_VER 191627045 -#define _MSC_BUILD 0 -#define _WIN32 -#define _M_IX86 600 -#define _M_IX86_FP 2 -#define _CPPRTTI -#define _DEBUG -#define _MT -#define _DLL +#define _MSC_EXTENSIONS +#define _INTEGRAL_MAX_BITS 64 +#define _MSC_VER 1916 +#define _MSC_FULL_VER 191627043 +#define _MSC_BUILD 0 +#define _WIN32 +#define _M_IX86 600 +#define _M_IX86_FP 2 +#define _CPPRTTI +#define _DEBUG +#define _MT +#define _DLL diff --git a/makeit b/makeit index f008177..bdf2910 100644 --- a/makeit +++ b/makeit @@ -2,8 +2,10 @@ cp --preserve /mnt/Source/QT/QtTermTCP/*.cpp ./ cp --preserve /mnt/Source/QT/QtTermTCP/*.c ./ cp --preserve /mnt/Source/QT/QtTermTCP/*.h ./ cp --preserve /mnt/Source/QT/QtTermTCP/*.ui ./ - +cp --preserve /mnt/Source/QT/QtTermTCP/*.pro ./ +cp --preserve /mnt/Source/QT/QtTermTCP/*.qrc ./ +cp --preserve /mnt/Source/QT/QtTermTCP/*.ico ./ qmake + make -j4 cp QtTermTCP /mnt/Source - diff --git a/release/moc_predefs.h b/release/moc_predefs.h index c985d0f..4c9c0c7 100644 --- a/release/moc_predefs.h +++ b/release/moc_predefs.h @@ -1,11 +1,11 @@ -#define _MSC_EXTENSIONS -#define _INTEGRAL_MAX_BITS 64 -#define _MSC_VER 1916 -#define _MSC_FULL_VER 191627045 -#define _MSC_BUILD 0 -#define _WIN32 -#define _M_IX86 600 -#define _M_IX86_FP 2 -#define _CPPRTTI -#define _MT -#define _DLL +#define _MSC_EXTENSIONS +#define _INTEGRAL_MAX_BITS 64 +#define _MSC_VER 1916 +#define _MSC_FULL_VER 191627043 +#define _MSC_BUILD 0 +#define _WIN32 +#define _M_IX86 600 +#define _M_IX86_FP 2 +#define _CPPRTTI +#define _MT +#define _DLL