This commit is contained in:
g8bpq 2022-11-25 11:17:21 +00:00
parent 85c8dfc78a
commit 5c0eaeca44
11 changed files with 1329 additions and 275 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,6 @@
#include <QMainWindow> #include <QMainWindow>
#include "ui_QtTermTCP.h" #include "ui_QtTermTCP.h"
//#include "ui_ListenPort.h"
//#include "ui_AGWParams.h" //#include "ui_AGWParams.h"
//#include "ui_AGWConnect.h" //#include "ui_AGWConnect.h"
#include "ui_ColourConfig.h" #include "ui_ColourConfig.h"
@ -62,6 +61,7 @@ public:
QTextEdit *termWindow; QTextEdit *termWindow;
QTextEdit *monWindow; QTextEdit *monWindow;
QLineEdit *inputWindow; QLineEdit *inputWindow;
QLabel * TTLabel;
myTcpSocket *clientSocket; myTcpSocket *clientSocket;
@ -98,12 +98,26 @@ public:
char UIDEST[32]; char UIDEST[32];
char UIPATH[128]; char UIPATH[128];
// For Teletext Emulator
QImage * TTBitmap; // TT Image buffer
QDialog TTUI;
int TTActive;
int TTFlashToggle;
char pageBuffer[4096];
QBasicTimer timer;
protected: protected:
private slots: void timerEvent(QTimerEvent *event) override;
private: private:
private slots:
}; };
@ -141,10 +155,13 @@ private slots:
void devicereject(); void devicereject();
void showContextMenuM(const QPoint &pt); void showContextMenuM(const QPoint &pt);
void showContextMenuT(const QPoint &pt); void showContextMenuT(const QPoint &pt);
void showContextMenuL();
void doQuit(); void doQuit();
void onTEselectionChanged(); void onTEselectionChanged();
void onLEselectionChanged(); void onLEselectionChanged();
void setSplit(); void setSplit();
void setVDMode();
void showContextMenuMT(const QPoint & pt);
void onNewConnection(); void onNewConnection();
void onSocketStateChanged(QAbstractSocket::SocketState socketState); void onSocketStateChanged(QAbstractSocket::SocketState socketState);
void updateWindowMenu(); void updateWindowMenu();

View File

@ -57,6 +57,7 @@
<IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\</IntDir> <IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\</IntDir>
<TargetName>QtTermTCP</TargetName> <TargetName>QtTermTCP</TargetName>
<IgnoreImportLibrary>true</IgnoreImportLibrary> <IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
@ -66,11 +67,11 @@
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<QtInstall>msvc2017</QtInstall> <QtInstall>msvc2017 5.14</QtInstall>
<QtModules>core;network;gui;widgets;serialport</QtModules> <QtModules>core;network;gui;widgets;serialport</QtModules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<QtInstall>msvc2017</QtInstall> <QtInstall>msvc2017 5.14</QtInstall>
<QtModules>core;network;gui;widgets;serialport</QtModules> <QtModules>core;network;gui;widgets;serialport</QtModules>
</PropertyGroup> </PropertyGroup>
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')"> <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
@ -146,7 +147,7 @@
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation> <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation> <BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<ObjectFileName>$(intdir)</ObjectFileName> <ObjectFileName>$(intdir)</ObjectFileName>
@ -170,6 +171,7 @@
<RandomizedBaseAddress>true</RandomizedBaseAddress> <RandomizedBaseAddress>true</RandomizedBaseAddress>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link> </Link>
<Midl> <Midl>
<DefaultCharType>Unsigned</DefaultCharType> <DefaultCharType>Unsigned</DefaultCharType>
@ -203,7 +205,9 @@
<ItemGroup> <ItemGroup>
<ClCompile Include="AGWCode.cpp" /> <ClCompile Include="AGWCode.cpp" />
<ClCompile Include="hid.c" /> <ClCompile Include="hid.c" />
<ClCompile Include="QtTermTCP.cpp" /> <ClCompile Include="QtTermTCP.cpp">
<DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EditAndContinue</DebugInformationFormat>
</ClCompile>
<ClCompile Include="TabDialog.cpp" /> <ClCompile Include="TabDialog.cpp" />
<ClCompile Include="TermTCPCommon.cpp" /> <ClCompile Include="TermTCPCommon.cpp" />
<ClCompile Include="UZ7HOUtils.c" /> <ClCompile Include="UZ7HOUtils.c" />

View File

@ -8,9 +8,9 @@
<QtLastBackgroundBuild>2022-05-19T07:28:58.9302359Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2022-05-19T07:28:58.9302359Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<QtLastBackgroundBuild>2022-08-30T07:53:00.9638702Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2022-11-21T13:52:08.2843113Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<QtLastBackgroundBuild>2022-08-30T07:53:22.4120059Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2022-11-20T17:39:52.6268704Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -1,6 +1,6 @@
#include <windows.h> #include <windows.h>
IDI_ICON1 ICON DISCARDABLE "C:\\Users\\John\\OneDrive\\Dev\\Source\\QT\\QtTermTCP\\QtTermTCP.ico" IDI_ICON1 ICON DISCARDABLE "QtTermTCP.ico"
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,0,0,0 FILEVERSION 0,0,0,0

View File

@ -519,6 +519,7 @@ extern QMenu * connectMenu;
extern QMenu * disconnectMenu; extern QMenu * disconnectMenu;
TAX25Port DummyPort; TAX25Port DummyPort;
extern "C" TAX25Port * get_user_port_by_calls(int snd_ch, char * CallFrom, char * CallTo);
void KISSConnect::myaccept() void KISSConnect::myaccept()
{ {
@ -529,6 +530,25 @@ void KISSConnect::myaccept()
strcpy(CallTo, wCallTo->currentText().toUpper().toUtf8()); strcpy(CallTo, wCallTo->currentText().toUpper().toUtf8());
strcpy(Via, Digis->text().toUpper().toUtf8()); strcpy(Via, Digis->text().toUpper().toUtf8());
TAX25Port * AX25Sess = 0;
// Check for duplicate session
AX25Sess = get_user_port_by_calls(0, MYCALL, CallTo);
if (AX25Sess)
{
// Duplicate
char Msg[256];
int Len = sprintf(Msg, "You already have a session between %s and %s so can't connect\r", MYCALL, CallTo);
WritetoOutputWindow(ActiveSession, (unsigned char *)Msg, Len);
// KISSConnect::accept();
return;
}
KISSMode = UIMode->isChecked(); KISSMode = UIMode->isChecked();
// Add CallTo if not already in list // Add CallTo if not already in list

106
TeleText.ui Normal file
View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TeleTextDialog</class>
<widget class="QDialog" name="TeleTextDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>665</width>
<height>551</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>224</x>
<y>516</y>
<width>153</width>
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="okButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="Page">
<property name="geometry">
<rect>
<x>28</x>
<y>20</y>
<width>600</width>
<height>475</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>okButton</sender>
<signal>clicked()</signal>
<receiver>TeleTextDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>278</x>
<y>253</y>
</hint>
<hint type="destinationlabel">
<x>96</x>
<y>254</y>
</hint>
</hints>
</connection>
<connection>
<sender>cancelButton</sender>
<signal>clicked()</signal>
<receiver>TeleTextDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>369</x>
<y>253</y>
</hint>
<hint type="destinationlabel">
<x>179</x>
<y>282</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -33,6 +33,8 @@ int ProcessYAPPMessage(Ui_ListenSession * Sess, UCHAR * Msg, int Len);
void SetPortMonLine(int i, char * Text, int visible, int enabled); void SetPortMonLine(int i, char * Text, int visible, int enabled);
void AGW_AX25_data_in(void * Sess, UCHAR * data, int Len); void AGW_AX25_data_in(void * Sess, UCHAR * data, int Len);
int checkUTF8(unsigned char * Msg, int Len, unsigned char * out); int checkUTF8(unsigned char * Msg, int Len, unsigned char * out);
void DoTermResize(Ui_ListenSession * Sess);
void DecodeTeleText(Ui_ListenSession * Sess, char * page);
int Bells = TRUE; int Bells = TRUE;
int StripLF = FALSE; int StripLF = FALSE;
@ -40,6 +42,8 @@ int LogMonitor = FALSE;
int LogOutput = FALSE; int LogOutput = FALSE;
int SendDisconnected = TRUE; int SendDisconnected = TRUE;
int ChatMode = TRUE; int ChatMode = TRUE;
int AutoTeletext = 1;
int MonPorts = 1; int MonPorts = 1;
int ListenOn = FALSE; int ListenOn = FALSE;
@ -173,6 +177,54 @@ void ProcessReceivedData(Ui_ListenSession * Sess, unsigned char * Buffer, int le
return; return;
} }
// See if Teletext data
// We need to identify a viewdata frame. Seems to start
//1e 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ........ ........
//00000170 0a 0a 0a 0a 0a 0a 0a 0a 11 0c 1b
// Page seems to start 1c
// After page get
//1e 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ........ ........
// 0000049D 0a 0a 0a 0a 0a 0a 0a 0a 11 14 1b 44 1b 5d 1b 43 ........ ...D.].C
// 000004AD 53 65 6c 65 Sele
// 000004B1 63 74 20 69 74 65 6d 20 6f 72 1b 47 2a 70 61 67 ct item or .G*pag
// 000004C1 65 5f 20 3a 20 20 20 20 20 20 20 20 20 20 20 20 e_ :
// 000004D1 20 0d 09 09 09 09 09 09 09 09 09 09 09 09 09 09 ....... ........
// 000004E1 09 09 09 09 09 09 09 09 09 09 09 09 09 11
Buffer[len] = 0;
if (AutoTeletext && (Buffer[0] == 0x1e || Buffer[0] == 0x0c))
{
if (Sess->TTActive == 0)
{
Sess->TTActive = 1;
DoTermResize(Sess);
}
}
if (Sess->TTActive)
{
// Feed to Teletext code
// We need to decode a whole page. There is no obvious delimiter so process till data stops.
// Buffer is cleared when next input is sent
if (strlen(&Sess->pageBuffer[0] + len) > 4090)
Sess->pageBuffer[0] = 0; // Protect buffer
strcat(Sess->pageBuffer, (char *)Buffer);
DecodeTeleText(Sess, (char *)Sess->pageBuffer); // Re-decode same data until we get the end
return;
}
// mbstowcs(Buffer, BufferB, len); // mbstowcs(Buffer, BufferB, len);
// Look for MON delimiters (FF/FE) // Look for MON delimiters (FF/FE)

View File

@ -26,6 +26,7 @@ UCHAR TimerEvent = TIMER_EVENT_OFF;
extern int busy; extern int busy;
int listenEnable; int listenEnable;
void * KISSSockCopy[4]; void * KISSSockCopy[4];
extern UCHAR axMYCALL[7] = ""; // Mycall in ax.25
string * make_frame(string * data, Byte * path, Byte pid, Byte nr, Byte ns, Byte f_type, Byte f_id, boolean rpt, boolean pf, boolean cr); string * make_frame(string * data, Byte * path, Byte pid, Byte nr, Byte ns, Byte f_type, Byte f_id, boolean rpt, boolean pf, boolean cr);
void rst_t3(TAX25Port * AX25Sess); void rst_t3(TAX25Port * AX25Sess);
@ -1545,6 +1546,11 @@ void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag)
// No Session. If socket is set (so call is in incoming calls list) and SABM set up session // No Session. If socket is set (so call is in incoming calls list) and SABM set up session
// Check addresses to us
if (memcmp(path, axMYCALL, 7) != 0)
return; // ignore
if (listenEnable == 0) if (listenEnable == 0)
{ {
set_DM(snd_ch, path); set_DM(snd_ch, path);
@ -1584,6 +1590,10 @@ void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag)
// Must be SABM. See if it would duplicate an existing session (but could it - wouldn't that be found earlier ?? // Must be SABM. See if it would duplicate an existing session (but could it - wouldn't that be found earlier ??
// Make sure it is for us
if (get_user_dupe(snd_ch, path)) // Not SABM or a duplicate call pair if (get_user_dupe(snd_ch, path)) // Not SABM or a duplicate call pair
{ {
freeString(data); freeString(data);

12
debug/moc_predefs.h Normal file
View File

@ -0,0 +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

11
release/moc_predefs.h Normal file
View File

@ -0,0 +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