0.0.0.77Beta1

master
John Wiseman 2 years ago
parent e1ed8e1fb2
commit d432194d34

@ -262,7 +262,7 @@ void doAGWBeacon()
char ports[80]; char ports[80];
char * ptr, * context; char * ptr, * context;
int DataLen = (int)strlen(AGWBeaconMsg); int DataLen;
strcpy(ports, AGWBeaconPorts); // strtok changes it strcpy(ports, AGWBeaconPorts); // strtok changes it
@ -282,8 +282,9 @@ void doAGWBeacon()
{ {
while (ptr) while (ptr)
{ {
AGW_frame_header(Msg, atoi(ptr) - 1, 'M', 240, AGWTermCall, AGWBeaconDest, DataLen); DataLen = (int)strlen(AGWBeaconMsg);
AGW_frame_header(Msg, atoi(ptr) - 1, 'M', 240, AGWTermCall, AGWBeaconDest, DataLen);
memcpy(&Msg[AGWHDDRRLEN], AGWBeaconMsg, DataLen); memcpy(&Msg[AGWHDDRRLEN], AGWBeaconMsg, DataLen);
DataLen += AGWHDDRRLEN; DataLen += AGWHDDRRLEN;
AGWSock->write((char *)Msg, DataLen); AGWSock->write((char *)Msg, DataLen);
@ -864,7 +865,8 @@ void Send_AGW_Ds_Frame(void * Sess)
UCHAR Msg[512]; UCHAR Msg[512];
AGW_frame_header(Msg, AGW->port, 'd', 240, AGW->corrcall, AGW->mycall, 0); AGW_frame_header(Msg, AGW->port, 'd', 240, AGW->corrcall, AGW->mycall, 0);
AGW->socket->write((char *)Msg, AGWHDDRRLEN); if (AGW->socket)
AGW->socket->write((char *)Msg, AGWHDDRRLEN);
} }

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>432</width> <width>432</width>
<height>319</height> <height>399</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -17,7 +17,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>40</x> <x>40</x>
<y>262</y> <y>360</y>
<width>351</width> <width>351</width>
<height>33</height> <height>33</height>
</rect> </rect>
@ -58,7 +58,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>10</x> <x>10</x>
<y>120</y> <y>168</y>
<width>401</width> <width>401</width>
<height>57</height> <height>57</height>
</rect> </rect>
@ -140,7 +140,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>10</x> <x>10</x>
<y>70</y> <y>118</y>
<width>411</width> <width>411</width>
<height>51</height> <height>51</height>
</rect> </rect>
@ -202,7 +202,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>12</x> <x>12</x>
<y>12</y> <y>10</y>
<width>149</width> <width>149</width>
<height>21</height> <height>21</height>
</rect> </rect>
@ -215,7 +215,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>158</x> <x>158</x>
<y>10</y> <y>9</y>
<width>23</width> <width>23</width>
<height>25</height> <height>25</height>
</rect> </rect>
@ -231,7 +231,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>214</x> <x>214</x>
<y>13</y> <y>11</y>
<width>61</width> <width>61</width>
<height>17</height> <height>17</height>
</rect> </rect>
@ -243,7 +243,7 @@
<widget class="QLineEdit" name="MYCALL"> <widget class="QLineEdit" name="MYCALL">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>286</x> <x>292</x>
<y>10</y> <y>10</y>
<width>91</width> <width>91</width>
<height>22</height> <height>22</height>
@ -254,7 +254,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>25</x> <x>25</x>
<y>192</y> <y>240</y>
<width>47</width> <width>47</width>
<height>13</height> <height>13</height>
</rect> </rect>
@ -267,7 +267,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>98</x> <x>98</x>
<y>189</y> <y>240</y>
<width>47</width> <width>47</width>
<height>22</height> <height>22</height>
</rect> </rect>
@ -277,7 +277,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>213</x> <x>213</x>
<y>192</y> <y>240</y>
<width>66</width> <width>66</width>
<height>16</height> <height>16</height>
</rect> </rect>
@ -290,7 +290,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>288</x> <x>288</x>
<y>189</y> <y>240</y>
<width>47</width> <width>47</width>
<height>22</height> <height>22</height>
</rect> </rect>
@ -300,9 +300,9 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>25</x> <x>25</x>
<y>226</y> <y>270</y>
<width>47</width> <width>47</width>
<height>13</height> <height>20</height>
</rect> </rect>
</property> </property>
<property name="text"> <property name="text">
@ -313,7 +313,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>98</x> <x>98</x>
<y>223</y> <y>270</y>
<width>36</width> <width>36</width>
<height>22</height> <height>22</height>
</rect> </rect>
@ -323,7 +323,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>213</x> <x>213</x>
<y>225</y> <y>273</y>
<width>47</width> <width>47</width>
<height>13</height> <height>13</height>
</rect> </rect>
@ -336,7 +336,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>288</x> <x>288</x>
<y>222</y> <y>270</y>
<width>36</width> <width>36</width>
<height>22</height> <height>22</height>
</rect> </rect>
@ -346,7 +346,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>12</x> <x>12</x>
<y>38</y> <y>35</y>
<width>149</width> <width>149</width>
<height>21</height> <height>21</height>
</rect> </rect>
@ -359,7 +359,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>158</x> <x>158</x>
<y>38</y> <y>34</y>
<width>23</width> <width>23</width>
<height>21</height> <height>21</height>
</rect> </rect>
@ -371,6 +371,103 @@
<string/> <string/>
</property> </property>
</widget> </widget>
<widget class="QCheckBox" name="KISSChecksum">
<property name="geometry">
<rect>
<x>160</x>
<y>60</y>
<width>20</width>
<height>20</height>
</rect>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_16">
<property name="geometry">
<rect>
<x>12</x>
<y>60</y>
<width>141</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Enable checksum</string>
</property>
</widget>
<widget class="QCheckBox" name="KISSACKMODE">
<property name="geometry">
<rect>
<x>160</x>
<y>84</y>
<width>20</width>
<height>20</height>
</rect>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_17">
<property name="geometry">
<rect>
<x>12</x>
<y>85</y>
<width>141</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Enable ACKMODE</string>
</property>
</widget>
<widget class="QCheckBox" name="SetTXDelay">
<property name="geometry">
<rect>
<x>150</x>
<y>300</y>
<width>111</width>
<height>21</height>
</rect>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string>Set TXDelay</string>
</property>
</widget>
<widget class="QLineEdit" name="TXDELAY">
<property name="geometry">
<rect>
<x>99</x>
<y>300</y>
<width>36</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_29">
<property name="geometry">
<rect>
<x>26</x>
<y>302</y>
<width>71</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>TXDelay</string>
</property>
</widget>
</widget> </widget>
<resources/> <resources/>
<connections> <connections>

@ -1,6 +1,8 @@
// Qt Version of BPQTermTCP // Qt Version of BPQTermTCP
#define VersionString "0.0.0.73" // Application icon design by Red PE1RRR
#define VersionString "0.0.0.77 Beta 1"
// .12 Save font weight // .12 Save font weight
@ -104,7 +106,18 @@
// .73 November 2023 // .73 November 2023
// Raise RTS on KISS serial port // Raise RTS on KISS serial port
// .74 April 2024
// Support BPQKISS TNCs with CHECKSUM and/or ACKMODE enabled
// .75 May 2024
// Flush Monitor log file every minute
// .76 August 2024
// Fix using digs in KISS UI mode.
// Add option to send TXDELAY to KISS TNC
// .77
// Support multichannel KISS TNCs (Beta 1)
#define _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS
@ -308,12 +321,22 @@ extern "C" int KISSMonEnable;
extern "C" int KISSLocalTime; extern "C" int KISSLocalTime;
extern "C" int KISSMonNodes; extern "C" int KISSMonNodes;
extern "C" int KISSListen; extern "C" int KISSListen;
extern "C" int KISSChecksum;
extern "C" int KISSAckMode;
extern "C" short txtail[5];
extern "C" short txdelay[5];
extern "C" int sendTXDelay[4];
char SerialPort[80] = ""; char SerialPort[80] = "";
char KISSHost[128] = "127.0.0.1"; char KISSHost[128] = "127.0.0.1";
int KISSPortNum = 1000; int KISSPortNum = 1000;
int KISSBAUD = 19200; int KISSBAUD = 19200;
char MYCALL[32]; char KISSMYCALL[32];
char KISSVia[128]; // Digi String
extern "C" UCHAR axMYCALL[7]; // Mycall in ax.25 extern "C" UCHAR axMYCALL[7]; // Mycall in ax.25
int KISSMode = 0; // Connected (0) or UI (1) int KISSMode = 0; // Connected (0) or UI (1)
@ -986,9 +1009,9 @@ Ui_ListenSession * newWindow(QObject * parent, int Type, const char * Label)
QSettings settings(GetConfPath(), QSettings::IniFormat); QSettings settings(GetConfPath(), QSettings::IniFormat);
#ifdef ANDROID #ifdef ANDROID
QFont font = QFont(settings->value("FontFamily", "Driod Sans Mono").value<QString>(), QFont font = QFont(settings.value("FontFamily", "Driod Sans Mono").value<QString>(),
settings->value("PointSize", 12).toInt(), settings.value("PointSize", 12).toInt(),
settings->value("Weight", 50).toInt()); settings.value("Weight", 50).toInt());
#else #else
QFont font = QFont(settings.value("FontFamily", "Courier New").value<QString>(), QFont font = QFont(settings.value("FontFamily", "Courier New").value<QString>(),
settings.value("PointSize", 10).toInt(), settings.value("PointSize", 10).toInt(),
@ -1642,6 +1665,10 @@ QtTermTCP::QtTermTCP(QWidget *parent) : QMainWindow(parent)
connect(timer2, SIGNAL(timeout()), this, SLOT(KISSTimerSlot())); connect(timer2, SIGNAL(timeout()), this, SLOT(KISSTimerSlot()));
timer2->start(100); timer2->start(100);
QTimer *timer3 = new QTimer(this);
connect(timer3, SIGNAL(timeout()), this, SLOT(SlowTimerSlot()));
timer3->start(60000);
// Run timer now to connect to AGW if configured // Run timer now to connect to AGW if configured
MyTimerSlot(); MyTimerSlot();
@ -1657,7 +1684,7 @@ QtTermTCP::QtTermTCP(QWidget *parent) : QMainWindow(parent)
OpenPTTPort(); OpenPTTPort();
memset(axMYCALL, 0, 7); memset(axMYCALL, 0, 7);
ConvToAX25(MYCALL, axMYCALL); ConvToAX25(KISSMYCALL, axMYCALL);
// Do any autoconnects // Do any autoconnects
@ -2726,7 +2753,8 @@ void QtTermTCP::LreturnPressed(Ui_ListenSession * Sess)
strcpy(Msg, Msgptr); strcpy(Msg, Msgptr);
strcat(Msg, "\r"); strcat(Msg, "\r");
Send_UI(0, 0xF0, MYCALL, Sess->UIDEST, (unsigned char *)Msg, (int)strlen(Msg));
Send_UI(Sess->UIPORT, 0xF0, KISSMYCALL, Sess->UIDEST, Sess->UIPATH, (unsigned char *)Msg, (int)strlen(Msg));
WritetoOutputWindowEx(Sess, (unsigned char *)Msg, (int)strlen(Msg), WritetoOutputWindowEx(Sess, (unsigned char *)Msg, (int)strlen(Msg),
Sess->termWindow, &Sess->OutputSaveLen, Sess->OutputSave, EchoText); // Black Sess->termWindow, &Sess->OutputSaveLen, Sess->OutputSave, EchoText); // Black
@ -3450,6 +3478,8 @@ void getAX25Params(int chan)
void GetPortSettings(int Chan) void GetPortSettings(int Chan)
{ {
txdelay[Chan] = getAX25Param("TXDelay", 250).toInt();
sendTXDelay[Chan] = getAX25Param("sendTXDelay", 0).toInt();
maxframe[Chan] = getAX25Param("Maxframe", 4).toInt(); maxframe[Chan] = getAX25Param("Maxframe", 4).toInt();
fracks[Chan] = getAX25Param("Retries", 10).toInt(); fracks[Chan] = getAX25Param("Retries", 10).toInt();
frack_time[Chan] = getAX25Param("FrackTime", 8).toInt(); frack_time[Chan] = getAX25Param("FrackTime", 8).toInt();
@ -3541,10 +3571,13 @@ void GetSettings()
KISSMonNodes = settings->value("KISSMonNodes", 0).toInt(); KISSMonNodes = settings->value("KISSMonNodes", 0).toInt();
KISSListen = settings->value("KISSListen", 1).toInt(); KISSListen = settings->value("KISSListen", 1).toInt();
strcpy(MYCALL, settings->value("MYCALL", "").toString().toUtf8()); KISSChecksum = settings->value("KISSChecksum", 0).toInt();
KISSAckMode = settings->value("KISSAckMode", 0).toInt();
strcpy(KISSMYCALL, settings->value("MYCALL", "").toString().toUtf8());
strcpy(KISSHost, settings->value("KISSHost", "127.0.0.1").toString().toUtf8()); strcpy(KISSHost, settings->value("KISSHost", "127.0.0.1").toString().toUtf8());
KISSPortNum = settings->value("KISSPort", 8100).toInt(); KISSPortNum = settings->value("KISSPort", 8100).toInt();
KISSMode = settings->value("KISSMode", 0).toInt(); KISSMode = settings->value("KISSMode", 0).toInt();
strcpy(KISSVia, settings->value("KISSVia", "").toString().toUtf8());
strcpy(SerialPort, settings->value("KISSSerialPort", "None").toString().toUtf8()); strcpy(SerialPort, settings->value("KISSSerialPort", "None").toString().toUtf8());
KISSBAUD = settings->value("KISSBAUD", 19200).toInt(); KISSBAUD = settings->value("KISSBAUD", 19200).toInt();
@ -3647,7 +3680,8 @@ void saveAX25Params(int chan)
void SavePortSettings(int Chan) void SavePortSettings(int Chan)
{ {
saveAX25Param("Retries", fracks[Chan]); saveAX25Param("TXDelay", txdelay[Chan]);
saveAX25Param("sendTXDelay", sendTXDelay[Chan]);
saveAX25Param("Maxframe", maxframe[Chan]); saveAX25Param("Maxframe", maxframe[Chan]);
saveAX25Param("Paclen", kisspaclen[Chan]); saveAX25Param("Paclen", kisspaclen[Chan]);
saveAX25Param("FrackTime", frack_time[Chan]); saveAX25Param("FrackTime", frack_time[Chan]);
@ -3770,12 +3804,16 @@ extern "C" void SaveSettings()
settings->setValue("KISSMonNodes", KISSMonNodes); settings->setValue("KISSMonNodes", KISSMonNodes);
settings->setValue("KISSListen", KISSListen); settings->setValue("KISSListen", KISSListen);
settings->setValue("MYCALL", MYCALL); settings->setValue("KISSChecksum", KISSChecksum);
settings->setValue("KISSAckMode", KISSAckMode);
settings->setValue("MYCALL", KISSMYCALL);
settings->setValue("KISSHost", KISSHost); settings->setValue("KISSHost", KISSHost);
settings->setValue("KISSMode", KISSMode); settings->setValue("KISSMode", KISSMode);
settings->setValue("KISSPort", KISSPortNum); settings->setValue("KISSPort", KISSPortNum);
settings->setValue("KISSSerialPort", SerialPort); settings->setValue("KISSSerialPort", SerialPort);
settings->setValue("KISSBAUD", KISSBAUD); settings->setValue("KISSBAUD", KISSBAUD);
settings->setValue("KISSVia", KISSVia);
saveAX25Params(0); saveAX25Params(0);
settings->setValue("VARAEnable", VARAEnable); settings->setValue("VARAEnable", VARAEnable);
@ -3958,6 +3996,27 @@ void QtTermTCP::MyTimerSlot()
} }
void QtTermTCP::SlowTimerSlot()
{
// Runs every 60 S
Ui_ListenSession * Sess;
for (int i = 0; i < _sessions.size(); ++i)
{
Sess = _sessions.at(i);
if (Sess->monLogfile)
{
Sess->monLogfile->close();
Sess->monLogfile = nullptr;
}
}
}
extern "C" void myBeep(QString * WAV) extern "C" void myBeep(QString * WAV)
{ {
if (useBeep) if (useBeep)
@ -4025,7 +4084,12 @@ void QtTermTCP::KISSSlot()
deviceUI = &UI; deviceUI = &UI;
KISS->KISSEnable->setChecked(KISSEnable); KISS->KISSEnable->setChecked(KISSEnable);
KISS->KISSListen->setChecked(KISSListen); KISS->KISSListen->setChecked(KISSListen);
KISS->MYCALL->setText(MYCALL); KISS->KISSChecksum->setChecked(KISSChecksum);
KISS->KISSACKMODE->setChecked(KISSAckMode);
KISS->MYCALL->setText(KISSMYCALL);
KISS->TXDELAY->setText(QString::number(txdelay[0]));
KISS->SetTXDelay->setChecked(sendTXDelay[0]);
// connect(KISS->SerialPort, SIGNAL(currentIndexChanged(int)), this, SLOT(PTTPortChanged(int))); // connect(KISS->SerialPort, SIGNAL(currentIndexChanged(int)), this, SLOT(PTTPortChanged(int)));
@ -4079,12 +4143,14 @@ void QtTermTCP::KISSaccept()
KISSEnable = KISS->KISSEnable->isChecked(); KISSEnable = KISS->KISSEnable->isChecked();
KISSListen = KISS->KISSListen->isChecked(); KISSListen = KISS->KISSListen->isChecked();
KISSChecksum = KISS->KISSChecksum->isChecked();
KISSAckMode = KISS->KISSACKMODE->isChecked();
actHost[18]->setVisible(KISSEnable); // Show KISS Connect Line actHost[18]->setVisible(KISSEnable); // Show KISS Connect Line
strcpy(MYCALL, KISS->MYCALL->text().toUtf8().toUpper()); strcpy(KISSMYCALL, KISS->MYCALL->text().toUtf8().toUpper());
memset(axMYCALL, 0, 7); memset(axMYCALL, 0, 7);
ConvToAX25(MYCALL, axMYCALL); ConvToAX25(KISSMYCALL, axMYCALL);
Q = KISS->Port->text(); Q = KISS->Port->text();
KISSPortNum = Q.toInt(); KISSPortNum = Q.toInt();
@ -4106,8 +4172,11 @@ void QtTermTCP::KISSaccept()
Q = KISS->Retries->text(); Q = KISS->Retries->text();
fracks[0] = Q.toInt(); fracks[0] = Q.toInt();
myStatusBar->setVisible(AGWEnable | VARAEnable | KISSEnable); Q = KISS->TXDELAY->text();
txdelay[0] = Q.toInt();
sendTXDelay[0] = KISS->SetTXDelay->isChecked();
myStatusBar->setVisible(AGWEnable | VARAEnable | KISSEnable);
if (KISSEnable != OldEnable || KISSPortNum != OldPort || if (KISSEnable != OldEnable || KISSPortNum != OldPort ||
strcmp(oldHost, KISSHost) != 0 || strcmp(oldHost, KISSHost) != 0 ||
@ -6349,6 +6418,7 @@ void ClosePTTPort()
#endif #endif
} }
#ifndef ANDRIOD
void CM108_set_ptt(int PTTState) void CM108_set_ptt(int PTTState)
{ {
@ -6413,7 +6483,7 @@ void CM108_set_ptt(int PTTState)
} }
#endif
void QtTermTCP::RadioPTT(bool PTTState) void QtTermTCP::RadioPTT(bool PTTState)
{ {
@ -6652,6 +6722,16 @@ void QtTermTCP::onKISSSocketStateChanged(QAbstractSocket::SocketState socketStat
KISS_add_stream(sender); KISS_add_stream(sender);
// send TXDelay if enabled
if (sendTXDelay[0])
{
unsigned char Msg[5] = { FEND, 1, 25 , FEND };
Msg[2] = txdelay[0] / 10;
KISSSock->write((char *)Msg, 4);
}
// Attach a Monitor Window if available // Attach a Monitor Window if available
Ui_ListenSession * Sess = NULL; Ui_ListenSession * Sess = NULL;
@ -6923,6 +7003,16 @@ int QtTermTCP::openSerialPort()
KISS_add_stream(m_serial); KISS_add_stream(m_serial);
// send TXDelay if enabled
if (sendTXDelay[0])
{
unsigned char Msg[5] = { FEND, 1, 25 , FEND };
Msg[2] = txdelay[0] / 10;
m_serial->write((char *)Msg, 4);
}
// Attach a Monitor Window if available // Attach a Monitor Window if available
Ui_ListenSession * Sess = NULL; Ui_ListenSession * Sess = NULL;
@ -6937,7 +7027,7 @@ int QtTermTCP::openSerialPort()
S = _sessions.at(i); S = _sessions.at(i);
// for (Ui_ListenSession * S: _sessions) // for (Ui_ListenSession * S: _sessions)
// { //
if ((S->SessionType == Mon) && S->clientSocket == NULL && S->KISSSession == NULL) if ((S->SessionType == Mon) && S->clientSocket == NULL && S->KISSSession == NULL)
{ {
Sess = S; Sess = S;
@ -7831,7 +7921,7 @@ void WriteMonitorLog(Ui_ListenSession * Sess, char * Msg)
Sess->monLogfile = new QFile(FN); Sess->monLogfile = new QFile(FN);
if (Sess->monLogfile) if (Sess->monLogfile)
Sess->monLogfile->open(QIODevice::WriteOnly | QIODevice::Text); Sess->monLogfile->open(QIODevice::Append);
else else
return; return;
} }

@ -100,6 +100,7 @@ public:
void * AGWMonSession; void * AGWMonSession;
void * KISSSession; void * KISSSession;
int KISSMode; // Connected or UI int KISSMode; // Connected or UI
int UIPORT;
char UIDEST[32]; char UIDEST[32];
char UIPATH[128]; char UIPATH[128];
@ -159,6 +160,7 @@ private slots:
void LDisconnect(Ui_ListenSession * LUI); void LDisconnect(Ui_ListenSession * LUI);
void SetupHosts(); void SetupHosts();
void MyTimerSlot(); void MyTimerSlot();
void SlowTimerSlot();
void KISSTimerSlot(); void KISSTimerSlot();
void ListenSlot(); void ListenSlot();
void AGWSlot(); void AGWSlot();

@ -49,4 +49,6 @@ RESOURCES += QtTermTCP.qrc
RC_ICONS = QtTermTCP.ico RC_ICONS = QtTermTCP.ico
ICONS = QtTermTCP.icns
QMAKE_LFLAGS += -no-pie QMAKE_LFLAGS += -no-pie

@ -1,357 +1,263 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2022-12-03T18:22:04. --> <!-- Written by QtCreator 11.0.3, 2024-08-18T09:51:34. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
<value type="QByteArray">{49a2cf38-2251-47e3-97df-4ecaa9d41931}</value> <value type="QByteArray">{6e41d268-43e9-43ac-b8fa-a3c083d547a3}</value>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.ActiveTarget</variable> <variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value> <value type="qlonglong">0</value>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.EditorSettings</variable> <variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap"> <valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value> <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value> <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value> <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0"> <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value> <value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value"> <valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value> <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap> </valuemap>
</valuemap> </valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1"> <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value> <value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value"> <valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value> <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap> </valuemap>
</valuemap> </valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value> <value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value> <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value> <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value> <value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value> <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value> <value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value> <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value> <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value> <value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value> <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value> <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value> <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value> <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value> <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value> <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabSize">8</value> <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value> <value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value> <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value> <value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value> <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value> <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value> <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value> <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value> <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
</valuemap> <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</data> <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<data> <value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
<variable>ProjectExplorer.Project.PluginSettings</variable> </valuemap>
<valuemap type="QVariantMap"> </data>
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks"> <data>
<value type="bool" key="AutoTest.Framework.Boost">true</value> <variable>ProjectExplorer.Project.PluginSettings</variable>
<value type="bool" key="AutoTest.Framework.Catch">true</value> <valuemap type="QVariantMap">
<value type="bool" key="AutoTest.Framework.GTest">true</value> <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value> <value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value> <value type="bool" key="AutoTest.Framework.CTest">false</value>
</valuemap> <value type="bool" key="AutoTest.Framework.Catch">true</value>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/> <value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="int" key="AutoTest.RunAfterBuild">0</value> <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.UseGlobal">true</value> <value type="bool" key="AutoTest.Framework.QtTest">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"> </valuemap>
<value type="QString">-fno-delayed-template-parsing</value> <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
</valuelist> <value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value> <value type="bool" key="AutoTest.UseGlobal">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value> <valuemap type="QVariantMap" key="ClangTools">
<valuemap type="QVariantMap" key="ClangTools"> <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value> <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value> <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">3</value> <value type="int" key="ClangTools.ParallelJobs">0</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/> <value type="bool" key="ClangTools.PreferConfigFile">true</value>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/> <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/> <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value> <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
</valuemap> <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap> </valuemap>
</data> </valuemap>
<data> </data>
<variable>ProjectExplorer.Project.Target.0</variable> <data>
<valuemap type="QVariantMap"> <variable>ProjectExplorer.Project.Target.0</variable>
<value type="QString" key="DeviceType">Desktop</value> <valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MSVC2015 64bit</value> <value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MSVC2015 64bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.10 (5.15.10_1)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_msvc2015_64_kit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.10 (5.15.10_1)</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{6c3e99da-2293-4df8-901e-49e24d493aeb}</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> <value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<value type="bool">true</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value> <value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\John\OneDrive\Dev\Source\QT\build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Debug</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Debug</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/> </valuemap>
</valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> </valuemap>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> </valuemap>
</valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap> </valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> </valuemap>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
</valuemap> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap>
</valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Release</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Release</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="int" key="QtQuickCompiler">2</value> <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
<value type="int" key="SeparateDebugInfo">2</value> </valuemap>
</valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="bool">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="int" key="EnableQmlDebugging">2</value> </valuemap>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\John\OneDrive\Dev\Source\QT\build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Release</value> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Release</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> </valuemap>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> </valuemap>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> </valuemap>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
</valuemap> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
</valuemap> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <value type="int" key="QtQuickCompiler">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> </valuemap>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <value type="int" key="EnableQmlDebugging">0</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Profile</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Profile</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
</valuemap> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> </valuemap>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
</valuemap> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> </valuemap>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> </valuemap>
<value type="int" key="QtQuickCompiler">0</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<value type="int" key="SeparateDebugInfo">2</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
</valuemap> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="int" key="EnableQmlDebugging">0</value> </valuemap>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\John\OneDrive\Dev\Source\QT\build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Profile</value> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Profile</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> </valuemap>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/> <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
</valuemap> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> <value type="int" key="QtQuickCompiler">0</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="int" key="SeparateDebugInfo">0</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> </valuemap>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> <value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
</valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap> </valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> </valuemap>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
</valuemap> <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> <value type="int" key="PE.EnvironmentAspect.Base">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> <value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
</valuemap> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/Volumes/Source/QT/QtTermTCP2/QtTermTCP.pro</value>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/Volumes/Source/QT/QtTermTCP2/QtTermTCP.pro</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/> <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value> <value type="QString" key="RunConfiguration.WorkingDirectory.default">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Debug/QtTermTCP.app/Contents/MacOS</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> </valuemap>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
<value type="int" key="QtQuickCompiler">0</value> </valuemap>
<value type="int" key="SeparateDebugInfo">0</value> </data>
</valuemap> <data>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value> <variable>ProjectExplorer.Project.TargetCount</variable>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0"> <value type="qlonglong">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> </data>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value> <data>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value> <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value> <value type="int">22</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value> </data>
</valuemap> <data>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value> <variable>Version</variable>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/> <value type="int">22</value>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value> </data>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value> </qtcreator>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/John/OneDrive/Dev/Source/QT/QtTermTCP/QtTermTCP.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/John/OneDrive/Dev/Source/QT/QtTermTCP/QtTermTCP.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

@ -114,7 +114,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<QtInstall>5.14.2</QtInstall> <QtInstall>5.14.2</QtInstall>
<QtModules>core;network;gui;widgets;serialport</QtModules> <QtModules>core;network;gui;widgets;serialport;multimedia</QtModules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
<QtInstall>5.14.2_msvc2017</QtInstall> <QtInstall>5.14.2_msvc2017</QtInstall>
@ -122,7 +122,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<QtInstall>5.14.2</QtInstall> <QtInstall>5.14.2</QtInstall>
<QtModules>core;network;gui;widgets;serialport</QtModules> <QtModules>core;network;gui;widgets;serialport;multimedia</QtModules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
<QtInstall>5.14.2_msvc2017_64</QtInstall> <QtInstall>5.14.2_msvc2017_64</QtInstall>
@ -153,7 +153,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>shell32.lib;setupapi.lib;C:\Qt\Qt5.14.2\5.14.2\msvc2017\lib\Qt5Multimedia.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>shell32.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>-no-pie "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-no-pie "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention> <DataExecutionPrevention>true</DataExecutionPrevention>
@ -279,7 +279,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>shell32.lib;setupapi.lib;%(AdditionalDependencies);C:\Qt\Qt5.14.2\5.14.2\msvc2017\lib\Qt5Multimediad.lib</AdditionalDependencies> <AdditionalDependencies>shell32.lib;setupapi.lib;%(AdditionalDependencies);</AdditionalDependencies>
<AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>-no-pie "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-no-pie "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention> <DataExecutionPrevention>true</DataExecutionPrevention>

@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerWorkingDirectory>$(APPDATA)</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>C:\Devprogs\BPQ32\QtTermTCP</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<LocalDebuggerCommand>C:\Dev\Msdev2005\projects\QT\QtTermTCP\Win32\Debug\QtTermTCP.exe</LocalDebuggerCommand>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerWorkingDirectory>..\..\..\..\..\DevProgs\BPQ32</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>C:\Devprogs\BPQ32\QtTermTCP</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -15,15 +16,15 @@
<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>2023-10-14T13:14:56.5532991Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2024-08-18T13:22:28.7149666Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
<QtLastBackgroundBuild>2023-10-14T13:14:56.7231497Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2024-08-18T13:22:29.0403359Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<QtLastBackgroundBuild>2023-10-14T13:14:55.9367569Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2024-08-18T13:22:28.3840024Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
<QtLastBackgroundBuild>2023-10-14T13:14:56.2561805Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2024-08-18T13:22:28.6207028Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

@ -56,7 +56,7 @@ extern char UserName[MAXHOSTS + 1][80];
extern char Password[MAXHOSTS + 1][80]; extern char Password[MAXHOSTS + 1][80];
extern char SessName[MAXHOSTS + 1][80]; extern char SessName[MAXHOSTS + 1][80];
extern char MYCALL[32]; extern char KISSMYCALL[32];
QLineEdit *TermCall; QLineEdit *TermCall;
QGroupBox *groupBox; QGroupBox *groupBox;
@ -114,6 +114,7 @@ extern char * AGWPortList;
extern QStringList AGWToCalls; extern QStringList AGWToCalls;
extern int KISSMode; extern int KISSMode;
extern char KISSVia[128]; // Digi String
extern Ui_ListenSession * ActiveSession; extern Ui_ListenSession * ActiveSession;
@ -470,7 +471,7 @@ KISSConnect::KISSConnect(QWidget *parent) : QDialog(parent)
scrollArea = new QScrollArea(this); scrollArea = new QScrollArea(this);
scrollArea->setObjectName(QString::fromUtf8("scrollArea")); scrollArea->setObjectName(QString::fromUtf8("scrollArea"));
scrollArea->setGeometry(QRect(5, 5, 250, 200)); scrollArea->setGeometry(QRect(5, 5, 260, 200));
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
scrollArea->setWidgetResizable(false); scrollArea->setWidgetResizable(false);
@ -503,6 +504,13 @@ KISSConnect::KISSConnect(QWidget *parent) : QDialog(parent)
layout->addSpacing(10); layout->addSpacing(10);
layout->addLayout(formLayout2); layout->addLayout(formLayout2);
Chan = new QComboBox();
Chan->setEditable(false);
Chan->setInsertPolicy(QComboBox::NoInsert);
Chan->addItems(QStringList() << "A" << "B" << "C" << "D");
formLayout2->addRow(new QLabel("Modem Channel"), Chan);
wCallTo = new QComboBox(); wCallTo = new QComboBox();
wCallTo->setEditable(true); wCallTo->setEditable(true);
wCallTo->setInsertPolicy(QComboBox::NoInsert); wCallTo->setInsertPolicy(QComboBox::NoInsert);
@ -510,6 +518,7 @@ KISSConnect::KISSConnect(QWidget *parent) : QDialog(parent)
formLayout2->addRow(new QLabel("Call To"), wCallTo); formLayout2->addRow(new QLabel("Call To"), wCallTo);
Digis = new QLineEdit(); Digis = new QLineEdit();
formLayout2->addRow(new QLabel("Digis"), Digis); formLayout2->addRow(new QLabel("Digis"), Digis);
layout->addSpacing(2); layout->addSpacing(2);
@ -523,6 +532,9 @@ KISSConnect::KISSConnect(QWidget *parent) : QDialog(parent)
wCallTo->addItems(AGWToCalls); wCallTo->addItems(AGWToCalls);
Digis->setText(KISSVia);
Digis->resize(400, 20);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(myaccept())); connect(buttonBox, SIGNAL(accepted()), this, SLOT(myaccept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(myreject())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(myreject()));
} }
@ -544,16 +556,20 @@ void KISSConnect::myaccept()
{ {
QVariant Q; QVariant Q;
char CallTo[32]; char CallTo[128];;
char Via[128]; char Port[3];
strcpy(CallTo, wCallTo->currentText().toUpper().toUtf8()); strcpy(CallTo, wCallTo->currentText().toUpper().toUtf8());
strcpy(Via, Digis->text().toUpper().toUtf8()); strcpy(KISSVia, Digis->text().toUpper().toUtf8());
memcpy(Port, Chan->currentText().toUpper().toUtf8(), 1);
int PortNo = Port[0] - 'A';
TAX25Port * AX25Sess = 0; TAX25Port * AX25Sess = 0;
// Check for duplicate session // Check for duplicate session
AX25Sess = get_user_port_by_calls(0, MYCALL, CallTo); AX25Sess = get_user_port_by_calls(0, KISSMYCALL, CallTo);
if (AX25Sess) if (AX25Sess)
{ {
@ -561,7 +577,7 @@ void KISSConnect::myaccept()
char Msg[256]; char Msg[256];
int Len = sprintf(Msg, "You already have a session between %s and %s so can't connect\r", MYCALL, CallTo); int Len = sprintf(Msg, "You already have a session between %s and %s so can't connect\r", KISSMYCALL, CallTo);
WritetoOutputWindow(ActiveSession, (unsigned char *)Msg, Len); WritetoOutputWindow(ActiveSession, (unsigned char *)Msg, Len);
// KISSConnect::accept(); // KISSConnect::accept();
@ -581,7 +597,7 @@ void KISSConnect::myaccept()
if (KISSMode == 0) if (KISSMode == 0)
{ {
ActiveSession->KISSSession = KISSConnectOut(ActiveSession, MYCALL, CallTo, Via, 0, (void *)KISSSock); ActiveSession->KISSSession = KISSConnectOut(ActiveSession, KISSMYCALL, CallTo, KISSVia, PortNo, (void *)KISSSock);
WritetoOutputWindow(ActiveSession, (unsigned char *)"Connecting...\r", 14); WritetoOutputWindow(ActiveSession, (unsigned char *)"Connecting...\r", 14);
discAction->setEnabled(true); discAction->setEnabled(true);
} }
@ -597,7 +613,8 @@ void KISSConnect::myaccept()
ActiveSession->KISSSession = (void *)&DummyPort; // Dummy marker to show session in use ActiveSession->KISSSession = (void *)&DummyPort; // Dummy marker to show session in use
strcpy(ActiveSession->UIDEST, CallTo); strcpy(ActiveSession->UIDEST, CallTo);
strcpy(ActiveSession->UIPATH, Via); strcpy(ActiveSession->UIPATH, KISSVia);
ActiveSession->UIPORT = PortNo;
if (TermMode == Tabbed) if (TermMode == Tabbed)
Len = sprintf(Msg, "UI %s", CallTo); Len = sprintf(Msg, "UI %s", CallTo);

@ -146,6 +146,7 @@ public:
public: public:
QLineEdit * wCallFrom; QLineEdit * wCallFrom;
QComboBox * wCallTo; QComboBox * wCallTo;
QComboBox * Chan;
QLineEdit * Digis; QLineEdit * Digis;
QLineEdit * UIDest; QLineEdit * UIDest;
QListWidget * RadioPorts; QListWidget * RadioPorts;

@ -20,9 +20,13 @@ along with QtSoundModem. If not, see http://www.gnu.org/licenses
// UZ7HO Soundmodem Port by John Wiseman G8BPQ // UZ7HO Soundmodem Port by John Wiseman G8BPQ
// This is a simplified version for QtTermTCP
#include "ax25.h" #include "ax25.h"
#include <stdarg.h> #include <stdarg.h>
extern int KISSChecksum;
#ifdef WIN32 #ifdef WIN32
__declspec(dllimport) unsigned short __stdcall htons(__in unsigned short hostshort); __declspec(dllimport) unsigned short __stdcall htons(__in unsigned short hostshort);
@ -224,6 +228,8 @@ Byte users[4] = { 0,0,0,0 };
short txtail[5] = { 50, 50, 50, 50, 50 }; short txtail[5] = { 50, 50, 50, 50, 50 };
short txdelay[5] = { 400, 400, 400, 400, 400 }; short txdelay[5] = { 400, 400, 400, 400, 400 };
int sendTXDelay[4] = { 0, 0, 0, 0 };
short modem_def[5] = { 1, 1, 1, 1, 1 }; short modem_def[5] = { 1, 1, 1, 1, 1 };
@ -861,7 +867,7 @@ int get_addr(char * Calls, UCHAR * AXCalls)
char * ptr, *Context; char * ptr, *Context;
int n = 8; // Max digis int n = 8; // Max digis
memset(AXCalls, 0, 70); memset(AXCalls, 0, 72);
ptr = strtok_s(Calls, " ,", &Context); ptr = strtok_s(Calls, " ,", &Context);
@ -877,7 +883,7 @@ int get_addr(char * Calls, UCHAR * AXCalls)
ptr = strtok_s(NULL, " ,", &Context); ptr = strtok_s(NULL, " ,", &Context);
if (ConvToAX25(ptr, axptr) == 0) if (ptr == 0 || ConvToAX25(ptr, axptr) == 0)
return FALSE; return FALSE;
axptr += 7; axptr += 7;
@ -2495,6 +2501,7 @@ void KISSDataReceived(void * socket, unsigned char * data, int length)
void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag); void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag);
void KISSSendtoServer(void * Socket, char * Data, int Length);
void ProcessKISSFrame(void * socket, UCHAR * Msg, int Len) void ProcessKISSFrame(void * socket, UCHAR * Msg, int Len)
{ {
@ -2505,8 +2512,6 @@ void ProcessKISSFrame(void * socket, UCHAR * Msg, int Len)
int Chan; int Chan;
int Opcode; int Opcode;
string * TXMSG; string * TXMSG;
unsigned short CRC;
UCHAR CRCString[2];
ptr1 = ptr2 = Msg; ptr1 = ptr2 = Msg;
@ -2564,42 +2569,59 @@ void ProcessKISSFrame(void * socket, UCHAR * Msg, int Len)
if (Chan > 3) if (Chan > 3)
return; return;
// This is a lot simpler than QtSM, as frames will always be immediately processed locally, so ack mode isn't needed.
// but if enabled ack can be sent immediately
// checksum if needed
switch (Opcode) switch (Opcode)
{ {
case KISS_ACKMODE: case KISS_ACKMODE:
{
// send ack
// How best to do ACKMODE?? I think pass whole frame including CMD and ack bytes to all_frame_buf unsigned char ACK[16];
unsigned char * ackptr = ACK;
// But ack should only be sent to client that sent the message - needs more thought!
TXMSG = newString(); *ackptr++ = FEND;
stringAdd(TXMSG, &Msg[0], Len); // include Control *ackptr++ = Msg[0]; // opcode and channel
CRC = get_fcs(&Msg[3], Len - 3); // exclude control and ack bytes *ackptr++ = Msg[1];
*ackptr++ = Msg[2]; // ACK Bytes
*ackptr++ = FEND;
CRCString[0] = CRC & 0xff; KISSSendtoServer(socket, ACK, 5);
CRCString[1] = CRC >> 8;
stringAdd(TXMSG, CRCString, 2); // remove ack bytes
// Ackmode needs to know where to send ack back to, so save socket on end of data memmove(&Msg[1], &Msg[3], Len - 2);
stringAdd(TXMSG, (unsigned char *)&socket, sizeof(socket)); // drop through to KISS Data
// if KISS Optimise see if frame is really needed Len -= 2;
}
case KISS_DATA:
if (!KISS_opt[Chan]) if (KISSChecksum)
Add(&KISS.buffer[Chan], TXMSG);
else
{ {
if (add_raw_frames(Chan, TXMSG, &KISS.buffer[Chan])) // SUM MESSAGE, AND IF DUFF DISCARD. IF OK DECREMENT COUNT TO REMOVE SUM
Add(&KISS.buffer[Chan], TXMSG);
}
int sumlen = Len;
char * ptr = &Msg[0];
UCHAR sum = 0;
return; while (sumlen--)
{
sum ^= *(ptr++);
}
case KISS_DATA: if (sum)
{
Debugprintf("KISS Checksum Error");
return;
}
Len--; // Remove Checksum
}
TXMSG = newString(); TXMSG = newString();
stringAdd(TXMSG, &Msg[1], Len - 1); // include Control stringAdd(TXMSG, &Msg[1], Len - 1); // include Control
@ -2702,7 +2724,7 @@ TAX25Port * KISSConnectOut(void * Sess, char * CallFrom, char * CallTo, char * D
strcpy((char *)AX25Sess->Path, (char *)axpath); strcpy((char *)AX25Sess->Path, (char *)axpath);
reverse_addr(axpath, AX25Sess->ReversePath, AX25Sess->pathLen); reverse_addr(axpath, AX25Sess->ReversePath, AX25Sess->pathLen);
set_link(AX25Sess, AX25Sess->Path); set_link(AX25Sess, AX25Sess->Path); // Sends SABM
return AX25Sess; return AX25Sess;
} }
return 0; return 0;

@ -228,7 +228,7 @@ extern "C" void WriteDebugLog(char * Mess);
extern "C" void SendtoTerm(Ui_ListenSession * Sess, char * Msg, int Len); extern "C" void SendtoTerm(Ui_ListenSession * Sess, char * Msg, int Len);
extern "C" void ClearSessLabel(Ui_ListenSession * Sess); extern "C" void ClearSessLabel(Ui_ListenSession * Sess);
extern "C" void rst_timer(TAX25Port * AX25Sess); extern "C" void rst_timer(TAX25Port * AX25Sess);
extern "C" void Send_UI(int port, Byte PID, char * CallFrom, char *CallTo, Byte * Msg, int MsgLen); extern "C" void Send_UI(int port, Byte PID, char * CallFrom, char *CallTo, char * Via, Byte * Msg, int MsgLen);
#else #else
void monitor_frame(int snd_ch, string * frame, char * code, int tx, int excluded); void monitor_frame(int snd_ch, string * frame, char * code, int tx, int excluded);
void SendtoTerm(void * Sess, char * Msg, int Len); void SendtoTerm(void * Sess, char * Msg, int Len);
@ -236,7 +236,7 @@ void ClearSessLabel(void * Sess);
void WriteDebugLog(char * Mess); void WriteDebugLog(char * Mess);
void AX25_disc(TAX25Port * AX25Sess, Byte mode); void AX25_disc(TAX25Port * AX25Sess, Byte mode);
void rst_timer(TAX25Port * AX25Sess); void rst_timer(TAX25Port * AX25Sess);
void Send_UI(int port, Byte PID, char * CallFrom, char *CallTo, Byte * Msg, int MsgLen); void Send_UI(int port, Byte PID, char * CallFrom, char *CallTo, char * via, Byte * Msg, int MsgLen);
#endif #endif
BOOL ConvToAX25(char * callsign, unsigned char * ax25call); BOOL ConvToAX25(char * callsign, unsigned char * ax25call);

@ -20,12 +20,18 @@ along with QtSoundModem. If not, see http://www.gnu.org/licenses
// UZ7HO Soundmodem Port by John Wiseman G8BPQ // UZ7HO Soundmodem Port by John Wiseman G8BPQ
// This is a simplified version for QtTermTCP
#include "ax25.h" #include "ax25.h"
UCHAR TimerEvent = TIMER_EVENT_OFF; UCHAR TimerEvent = TIMER_EVENT_OFF;
extern int busy; extern int busy;
int listenEnable; int listenEnable;
int KISSListen = 1; int KISSListen = 1;
int KISSChecksum = 0;
int KISSAckMode = 0;
void * KISSSockCopy[4]; void * KISSSockCopy[4];
extern UCHAR axMYCALL[7] = ""; // Mycall in ax.25 extern UCHAR axMYCALL[7] = ""; // Mycall in ax.25
@ -301,6 +307,32 @@ int KISS_encode(UCHAR * KISSBuffer, int port, string * frame)
(*ptr2++) = c; (*ptr2++) = c;
} }
} }
// Add checksum if needed
if (KISSChecksum)
{
c = TXCCC;
// We don't support TNCX with Checksum
switch (c)
{
case FEND:
(*ptr2++) = FESC;
(*ptr2++) = TFEND;
break;
case FESC:
(*ptr2++) = FESC;
(*ptr2++) = TFESC;
break;
default:
(*ptr2++) = c;
}
}
(*ptr2++) = FEND; (*ptr2++) = FEND;
return (int)(ptr2 - KISSBuffer); return (int)(ptr2 - KISSBuffer);
@ -317,23 +349,13 @@ void add_pkt_buf(TAX25Port * AX25Sess, string * data)
// ? Don't we just send to TNC? // ? Don't we just send to TNC?
Length = KISS_encode(KISSBuffer, 0, data); Length = KISS_encode(KISSBuffer, AX25Sess->snd_ch, data);
KISSSendtoServer(AX25Sess->socket, KISSBuffer, Length); KISSSendtoServer(AX25Sess->socket, KISSBuffer, Length);
monitor_frame(0, data, "", 1, 0); // Monitor monitor_frame(0, data, "", 1, 0); // Monitor
freeString(data); freeString(data);
// while (i < AX25Sess->frame_buf.Count && !found)
// {
// found = compareStrings(Strings(&AX25Sess->frame_buf, i++), data);
// }
// if (found)
// freeString(data);
// else
// Add(&AX25Sess->frame_buf, data);
} }
void add_I_FRM(TAX25Port * AX25Sess) void add_I_FRM(TAX25Port * AX25Sess)
@ -1227,20 +1249,9 @@ void timer_event()
for (snd_ch = 0; snd_ch < 4; snd_ch++) for (snd_ch = 0; snd_ch < 4; snd_ch++)
{ {
//reset the slottime timer //reset the slottime timer
if (dyn_frack[snd_ch])
{
UpdateActiveConnects(snd_ch);
if (users[snd_ch] > 0)
active = users[snd_ch] - 1;
else
active = 0;
frack = frack_time[snd_ch] + frack_time[snd_ch] * active * 0.5; frack = frack_time[snd_ch];
}
else
frack = frack_time[snd_ch];
//
for (port = 0; port < port_num; port++) for (port = 0; port < port_num; port++)
{ {
AX25Sess = &AX25Port[snd_ch][port]; AX25Sess = &AX25Port[snd_ch][port];
@ -1703,10 +1714,12 @@ void analiz_frame(int snd_ch, string * frame, void * socket, boolean fecflag)
int get_addr(char * Calls, UCHAR * AXCalls); int get_addr(char * Calls, UCHAR * AXCalls);
void Send_UI(int port, Byte PID, char * CallFrom, char *CallTo, Byte * Msg, int MsgLen) void Send_UI(int port, Byte PID, char * CallFrom, char *CallTo, char * via, Byte * Msg, int MsgLen)
{ {
Byte path[80]; char Addrs[256];
char Calls[80]; Byte path[256];
int destlen = 0;
string * Data = newString(); string * Data = newString();
string * Frame; string * Frame;
@ -1715,17 +1728,19 @@ void Send_UI(int port, Byte PID, char * CallFrom, char *CallTo, Byte * Msg, int
stringAdd(Data, Msg, MsgLen); stringAdd(Data, Msg, MsgLen);
sprintf(Calls, "%s,%s", CallTo, CallFrom); // We Need Dest, Source, Digis in path, with end of address bit set appropriately.
get_addr(Calls, path); sprintf(Addrs, "%s %s %s", CallTo, CallFrom, via);
destlen = get_addr(Addrs, path);
Frame = make_frame(Data, path, PID, 0, 0, U_FRM, U_UI, FALSE, SET_F, SET_C); Frame = make_frame(Data, path, PID, 0, 0, U_FRM, U_UI, FALSE, SET_F, SET_C);
// ? Don't we just send to TNC? // ? Don't we just send to TNC?
Length = KISS_encode(KISSBuffer, 0, Frame); Length = KISS_encode(KISSBuffer, port, Frame);
KISSSendtoServer(KISSSockCopy[port], KISSBuffer, Length); KISSSendtoServer(KISSSockCopy[0], KISSBuffer, Length);
monitor_frame(0, Frame, "", 1, 0); // Monitor monitor_frame(0, Frame, "", 1, 0); // Monitor
freeString(Frame); freeString(Frame);

Loading…
Cancel
Save

Powered by TurnKey Linux.