Update upstream source from tag 'upstream/0.0.0.79'
Update to upstream version '0.0.0.79'
with Debian dir 6130cfc4e0
This commit is contained in:
commit
ec7fd0a9cb
44
AGWCode.cpp
44
AGWCode.cpp
|
@ -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);
|
||||||
|
@ -587,7 +588,7 @@ void QtTermTCP::onAGWSocketStateChanged(QAbstractSocket::SocketState socketState
|
||||||
if (Sess)
|
if (Sess)
|
||||||
{
|
{
|
||||||
AGWUsers->MonSess = Sess;
|
AGWUsers->MonSess = Sess;
|
||||||
Sess->AGWSession = sender; // Flag as in use
|
// Sess->AGWSession = sender; // Flag as in use
|
||||||
|
|
||||||
if (TermMode == MDI)
|
if (TermMode == MDI)
|
||||||
Sess->setWindowTitle("AGW Monitor Window");
|
Sess->setWindowTitle("AGW Monitor Window");
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1036,9 +1038,9 @@ void on_AGW_C_frame(AGWUser * AGW, struct AGWHeader * Frame, byte * Msg)
|
||||||
Sess = newWindow((QObject *)mythis, Listen, "");
|
Sess = newWindow((QObject *)mythis, Listen, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (TermMode == Tabbed)
|
||||||
{
|
{
|
||||||
// Single or Tabbed - look for free session
|
// Single Tabbed - look for free session
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < _sessions.size(); ++i)
|
for (i = 0; i < _sessions.size(); ++i)
|
||||||
|
@ -1051,15 +1053,33 @@ void on_AGW_C_frame(AGWUser * AGW, struct AGWHeader * Frame, byte * Msg)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Single - Only one available
|
||||||
|
S = _sessions.at(0);
|
||||||
|
|
||||||
if (Sess == NULL)
|
if (S->clientSocket == NULL && S->AGWSession == NULL && S->KISSSession == NULL)
|
||||||
{
|
Sess = S;
|
||||||
// Clear connection
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Sess == NULL)
|
||||||
|
{
|
||||||
|
// Clear connection by sendinf d fraame
|
||||||
|
|
||||||
|
UCHAR Msg[512];
|
||||||
|
|
||||||
|
int snd_ch = Frame->Port;
|
||||||
|
char * CallFrom = Frame->callfrom;
|
||||||
|
char * CallTo = Frame->callto;
|
||||||
|
|
||||||
|
AGW_frame_header(Msg, Frame->Port, 'd', 240, Frame->callto, Frame->callfrom, 0);
|
||||||
|
if (AGW->socket)
|
||||||
|
AGW->socket->write((char *)Msg, AGWHDDRRLEN);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (Sess)
|
if (Sess)
|
||||||
{
|
{
|
||||||
sprintf(Title, "Connected to %s", CallFrom);
|
sprintf(Title, "Connected to %s", CallFrom);
|
||||||
|
|
164
KISSConfig.ui
164
KISSConfig.ui
|
@ -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,132 @@
|
||||||
<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 class="QLabel" name="label_18">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>200</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Open MH Window</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="KISSMH">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>390</x>
|
||||||
|
<y>83</y>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="layoutDirection">
|
||||||
|
<enum>Qt::RightToLeft</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections>
|
||||||
|
|
343
QtTermTCP.cpp
343
QtTermTCP.cpp
|
@ -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.79"
|
||||||
|
|
||||||
|
|
||||||
// .12 Save font weight
|
// .12 Save font weight
|
||||||
|
@ -8,7 +10,7 @@
|
||||||
// .14 Add YAPP and Listen Mode
|
// .14 Add YAPP and Listen Mode
|
||||||
// .15 Reuse windows in Listen Mode
|
// .15 Reuse windows in Listen Mode
|
||||||
// .17 MDI Version 7/1/20
|
// .17 MDI Version 7/1/20
|
||||||
// .18 Fix input window losing focus when data arrives on other window
|
// .18 Fix input window losing focus when data arrivn other window
|
||||||
// .19 Fix Scrollback
|
// .19 Fix Scrollback
|
||||||
// .20 WinXP compatibility changes
|
// .20 WinXP compatibility changes
|
||||||
// .21 Save Window Positions
|
// .21 Save Window Positions
|
||||||
|
@ -104,7 +106,26 @@
|
||||||
// .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)
|
||||||
|
// Fix using AGW listen in single terminal mode
|
||||||
|
|
||||||
|
// .78
|
||||||
|
// Fix restoring monitor flags when connecting to current host
|
||||||
|
|
||||||
|
|
||||||
|
// .79
|
||||||
|
// Add KISS MHEARD Window (Feb 2025)
|
||||||
|
|
||||||
|
|
||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
@ -126,6 +147,7 @@
|
||||||
#include <QActionGroup>
|
#include <QActionGroup>
|
||||||
#include <QtWidgets>
|
#include <QtWidgets>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
|
#include <QClipboard>
|
||||||
#ifdef USESERIAL
|
#ifdef USESERIAL
|
||||||
#include <QtSerialPort/QSerialPort>
|
#include <QtSerialPort/QSerialPort>
|
||||||
#include <QtSerialPort/QSerialPortInfo>
|
#include <QtSerialPort/QSerialPortInfo>
|
||||||
|
@ -308,12 +330,23 @@ 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" int KISSMH;
|
||||||
|
|
||||||
|
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)
|
||||||
|
@ -531,6 +564,7 @@ void AGWMonWindowClosing(Ui_ListenSession *Sess);
|
||||||
void AGWWindowClosing(Ui_ListenSession *Sess);
|
void AGWWindowClosing(Ui_ListenSession *Sess);
|
||||||
extern "C" void KISSDataReceived(void * socket, unsigned char * data, int length);
|
extern "C" void KISSDataReceived(void * socket, unsigned char * data, int length);
|
||||||
void closeSerialPort();
|
void closeSerialPort();
|
||||||
|
int newMHWindow(QObject * parent, int Type, const char * Label);
|
||||||
|
|
||||||
extern void initUTF8();
|
extern void initUTF8();
|
||||||
int checkUTF8(unsigned char * Msg, int Len, unsigned char * out);
|
int checkUTF8(unsigned char * Msg, int Len, unsigned char * out);
|
||||||
|
@ -708,12 +742,39 @@ void DoTermResize(Ui_ListenSession * Sess)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" Ui_ListenSession * MHWindow;
|
||||||
|
|
||||||
bool QtTermTCP::eventFilter(QObject* obj, QEvent *event)
|
bool QtTermTCP::eventFilter(QObject* obj, QEvent *event)
|
||||||
{
|
{
|
||||||
// See if from a Listening Session
|
// See if from a Listening Session
|
||||||
|
|
||||||
Ui_ListenSession * Sess;
|
Ui_ListenSession * Sess;
|
||||||
|
|
||||||
|
if (obj == MHWindow)
|
||||||
|
{
|
||||||
|
if (event->type() == QEvent::Resize)
|
||||||
|
{
|
||||||
|
QRect r = MHWindow->rect();
|
||||||
|
|
||||||
|
int H, Width, Border = 3;
|
||||||
|
|
||||||
|
Width = r.width() - 6;
|
||||||
|
H = r.height() - 6;
|
||||||
|
|
||||||
|
MHWindow->monWindow->setGeometry(QRect(Border, Border, Width, H));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (event->type() == QEvent::Close)
|
||||||
|
{
|
||||||
|
QSettings mysettings(GetConfPath(), QSettings::IniFormat);
|
||||||
|
mysettings.setValue("MHgeometry", MHWindow->saveGeometry());
|
||||||
|
SaveSettings();
|
||||||
|
MHWindow = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < _sessions.size(); ++i)
|
for (int i = 0; i < _sessions.size(); ++i)
|
||||||
{
|
{
|
||||||
Sess = _sessions.at(i);
|
Sess = _sessions.at(i);
|
||||||
|
@ -874,6 +935,14 @@ bool QtTermTCP::eventFilter(QObject* obj, QEvent *event)
|
||||||
|
|
||||||
if (k->button() == Qt::RightButton)
|
if (k->button() == Qt::RightButton)
|
||||||
{
|
{
|
||||||
|
// Get clipboard data and process a line at a time
|
||||||
|
|
||||||
|
QClipboard *clipboard = QGuiApplication::clipboard();
|
||||||
|
QString Text = clipboard->text();
|
||||||
|
QByteArray ba = Text.toLocal8Bit();
|
||||||
|
char * Msg = ba.data();
|
||||||
|
|
||||||
|
|
||||||
Sess->inputWindow->paste();
|
Sess->inputWindow->paste();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -986,9 +1055,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(),
|
||||||
|
@ -1300,6 +1369,12 @@ QtTermTCP::QtTermTCP(QWidget *parent) : QMainWindow(parent)
|
||||||
|
|
||||||
updateWindowMenu();
|
updateWindowMenu();
|
||||||
|
|
||||||
|
if (KISSEnable && KISSMH)
|
||||||
|
{
|
||||||
|
newMHWindow(this, 0, "KISS MH");
|
||||||
|
MHWindow->restoreGeometry(mysettings.value("MHgeometry").toByteArray());
|
||||||
|
}
|
||||||
|
|
||||||
connectMenu = mymenuBar->addMenu(tr("&Connect"));
|
connectMenu = mymenuBar->addMenu(tr("&Connect"));
|
||||||
|
|
||||||
actHost[16] = new QAction("AGW Connect", this);
|
actHost[16] = new QAction("AGW Connect", this);
|
||||||
|
@ -1642,6 +1717,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 +1736,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 +2805,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
|
||||||
|
@ -2818,7 +2898,8 @@ void QtTermTCP::LreturnPressed(Ui_ListenSession * Sess)
|
||||||
strcat(Msg, "\r");
|
strcat(Msg, "\r");
|
||||||
|
|
||||||
Sess->clientSocket->write(Msg);
|
Sess->clientSocket->write(Msg);
|
||||||
|
Sess->clientSocket->flush();
|
||||||
|
// QThread::msleep(1500); // Try to force as separate packets
|
||||||
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
|
||||||
|
|
||||||
|
@ -2853,6 +2934,23 @@ void QtTermTCP::LreturnPressed(Ui_ListenSession * Sess)
|
||||||
connect(Sess->clientSocket, SIGNAL(readyRead()), this, SLOT(readyRead()));
|
connect(Sess->clientSocket, SIGNAL(readyRead()), this, SLOT(readyRead()));
|
||||||
connect(Sess->clientSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onSocketStateChanged(QAbstractSocket::SocketState)));
|
connect(Sess->clientSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onSocketStateChanged(QAbstractSocket::SocketState)));
|
||||||
|
|
||||||
|
|
||||||
|
// Set Monitor Params for this host
|
||||||
|
|
||||||
|
sscanf(MonParams[Sess->CurrentHost], "%llx %x %x %x %x %x",
|
||||||
|
&Sess->portmask, &Sess->mtxparam, &Sess->mcomparam,
|
||||||
|
&Sess->MonitorNODES, &Sess->MonitorColour, &Sess->monUI);
|
||||||
|
|
||||||
|
Sess->mlocaltime = (Sess->mtxparam >> 7);
|
||||||
|
Sess->mtxparam &= 1;
|
||||||
|
|
||||||
|
MonLocalTime->setChecked(Sess->mlocaltime);
|
||||||
|
MonTX->setChecked(Sess->mtxparam);
|
||||||
|
MonSup->setChecked(Sess->mcomparam);
|
||||||
|
MonUI->setChecked(Sess->monUI);
|
||||||
|
MonNodes->setChecked(Sess->MonitorNODES);
|
||||||
|
MonColour->setChecked(Sess->MonitorColour);
|
||||||
|
|
||||||
Sess->clientSocket->connectToHost(&Host[Sess->CurrentHost][0], Port[Sess->CurrentHost]);
|
Sess->clientSocket->connectToHost(&Host[Sess->CurrentHost][0], Port[Sess->CurrentHost]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3450,6 +3548,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 +3641,14 @@ 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();
|
||||||
|
KISSMH = settings->value("KISSMH", 1).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 +3751,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 +3875,17 @@ 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("KISSMH", KISSMH);
|
||||||
|
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);
|
||||||
|
@ -3852,6 +3962,10 @@ void QtTermTCP::closeEvent(QCloseEvent *event)
|
||||||
#endif
|
#endif
|
||||||
if (process)
|
if (process)
|
||||||
process->close();
|
process->close();
|
||||||
|
|
||||||
|
if (MHWindow)
|
||||||
|
MHWindow->close();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3893,6 +4007,11 @@ QtTermTCP::~QtTermTCP()
|
||||||
mysettings.setValue("geometry", saveGeometry());
|
mysettings.setValue("geometry", saveGeometry());
|
||||||
mysettings.setValue("windowState", saveState());
|
mysettings.setValue("windowState", saveState());
|
||||||
|
|
||||||
|
if (MHWindow)
|
||||||
|
{
|
||||||
|
mysettings.setValue("MHgeometry", MHWindow->saveGeometry());
|
||||||
|
MHWindow->close();
|
||||||
|
}
|
||||||
SaveSettings();
|
SaveSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3958,6 +4077,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 +4165,13 @@ 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->KISSMH->setChecked(KISSMH);
|
||||||
|
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 +4225,15 @@ 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();
|
||||||
|
KISSMH = KISS->KISSMH->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 +4255,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 ||
|
||||||
|
@ -4131,6 +4283,26 @@ void QtTermTCP::KISSaccept()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (KISSEnable == 0 && MHWindow)
|
||||||
|
{
|
||||||
|
MHWindow->close();
|
||||||
|
MHWindow = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (KISSEnable && KISSMH && MHWindow == 0)
|
||||||
|
{
|
||||||
|
newMHWindow(this, 0, "KISS MH");
|
||||||
|
QSettings mysettings(GetConfPath(), QSettings::IniFormat);
|
||||||
|
MHWindow->restoreGeometry(mysettings.value("MHgeometry").toByteArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!KISSMH && MHWindow)
|
||||||
|
{
|
||||||
|
MHWindow->close();
|
||||||
|
MHWindow = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
delete(KISS);
|
delete(KISS);
|
||||||
SaveSettings();
|
SaveSettings();
|
||||||
deviceUI->accept();
|
deviceUI->accept();
|
||||||
|
@ -4602,10 +4774,15 @@ void QtTermTCP::onNewConnection()
|
||||||
datas.chop(2);
|
datas.chop(2);
|
||||||
datas.truncate(10); // Just in case!
|
datas.truncate(10); // Just in case!
|
||||||
|
|
||||||
|
strlop(datas.data(), 13);
|
||||||
|
|
||||||
|
if (datas.data()[0] == 0)
|
||||||
|
datas.append("UNKNOWN\0");
|
||||||
|
|
||||||
datas.append('\0');
|
datas.append('\0');
|
||||||
|
|
||||||
sprintf(Title, "Inward Connect from %s:%d Call " + datas,
|
sprintf(Title, "Inward Connect from %s:%d Call %s",
|
||||||
Host.data(), clientSocket->peerPort());
|
Host.data(), clientSocket->peerPort(), datas.data());
|
||||||
|
|
||||||
if (TermMode == MDI)
|
if (TermMode == MDI)
|
||||||
{
|
{
|
||||||
|
@ -6349,6 +6526,7 @@ void ClosePTTPort()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef ANDRIOD
|
||||||
|
|
||||||
void CM108_set_ptt(int PTTState)
|
void CM108_set_ptt(int PTTState)
|
||||||
{
|
{
|
||||||
|
@ -6413,7 +6591,7 @@ void CM108_set_ptt(int PTTState)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void QtTermTCP::RadioPTT(bool PTTState)
|
void QtTermTCP::RadioPTT(bool PTTState)
|
||||||
{
|
{
|
||||||
|
@ -6652,6 +6830,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 +7111,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 +7135,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 +8029,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;
|
||||||
}
|
}
|
||||||
|
@ -7862,3 +8060,106 @@ void WriteMonitorLog(Ui_ListenSession * Sess, char * Msg)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create MH Window
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int newMHWindow(QObject * parent, int Type, const char * Label)
|
||||||
|
{
|
||||||
|
Ui_ListenSession * Sess = new(Ui_ListenSession);
|
||||||
|
|
||||||
|
MHWindow = Sess;
|
||||||
|
|
||||||
|
// Need to explicity initialise on Qt4
|
||||||
|
|
||||||
|
Sess->termWindow = NULL;
|
||||||
|
Sess->monWindow = NULL;
|
||||||
|
Sess->inputWindow = NULL;
|
||||||
|
|
||||||
|
Sess->StackIndex = 0;
|
||||||
|
Sess->InputMode = 0;
|
||||||
|
Sess->SlowTimer = 0;
|
||||||
|
Sess->MonData = 0;
|
||||||
|
Sess->OutputSaveLen = 0;
|
||||||
|
Sess->MonSaveLen = 0;
|
||||||
|
Sess->PortMonString[0] = 0;
|
||||||
|
Sess->portmask = 0;
|
||||||
|
Sess->portmask = 1;
|
||||||
|
Sess->mtxparam = 1;
|
||||||
|
Sess->mlocaltime = 0;
|
||||||
|
Sess->mcomparam = 1;
|
||||||
|
Sess->monUI = 0;
|
||||||
|
Sess->MonitorNODES = 0;
|
||||||
|
Sess->MonitorColour = 1;
|
||||||
|
Sess->CurrentHost = 0;
|
||||||
|
|
||||||
|
Sess->SessionType = Type;
|
||||||
|
Sess->clientSocket = NULL;
|
||||||
|
Sess->AGWSession = NULL;
|
||||||
|
Sess->AGWMonSession = NULL;
|
||||||
|
Sess->KISSSession = NULL;
|
||||||
|
Sess->KISSMode = 0;
|
||||||
|
Sess->TTActive = 0;
|
||||||
|
Sess->TTFlashToggle = 0;
|
||||||
|
Sess->pageBuffer[0] = 0;
|
||||||
|
Sess->Tab = 0;
|
||||||
|
|
||||||
|
Sess->LogMonitor = false;
|
||||||
|
Sess->monSpan = (char *) "<span style=white-space:pre>";
|
||||||
|
Sess->monLogfile = nullptr;
|
||||||
|
Sess->sessNo = sessNo++;
|
||||||
|
|
||||||
|
QSettings settings(GetConfPath(), QSettings::IniFormat);
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
QFont font = QFont(settings.value("FontFamily", "Driod Sans Mono").value<QString>(),
|
||||||
|
settings.value("PointSize", 12).toInt(),
|
||||||
|
settings.value("Weight", 50).toInt());
|
||||||
|
#else
|
||||||
|
QFont font = QFont(settings.value("FontFamily", "Courier New").value<QString>(),
|
||||||
|
settings.value("PointSize", 10).toInt(),
|
||||||
|
settings.value("Weight", 50).toInt());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Sess->monWindow = new QTextEdit(Sess);
|
||||||
|
Sess->monWindow->setReadOnly(1);
|
||||||
|
Sess->monWindow->document()->setMaximumBlockCount(10000);
|
||||||
|
Sess->monWindow->setFont(font);
|
||||||
|
Sess->monWindow->setStyleSheet(monStyleSheet);
|
||||||
|
|
||||||
|
Sess->setWindowTitle(Label);
|
||||||
|
|
||||||
|
Sess->installEventFilter(mythis);
|
||||||
|
|
||||||
|
Sess->show();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Sess->monWindow->setGeometry(QRect(2, 2, 400, 400));
|
||||||
|
Sess->setGeometry(QRect(400, 400, 400, 400));
|
||||||
|
|
||||||
|
|
||||||
|
QSize Size(800, 602); // Not actually used, but Event constructor needs it
|
||||||
|
|
||||||
|
QResizeEvent event(Size, Size);
|
||||||
|
|
||||||
|
QApplication::sendEvent(Sess, &event); // Resize Widgets to fix Window
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" void WritetoMHWindow(char * Buffer)
|
||||||
|
{
|
||||||
|
unsigned char Copy[8192];
|
||||||
|
unsigned char * ptr1, *ptr2;
|
||||||
|
unsigned char Line[8192];
|
||||||
|
unsigned char out[8192];
|
||||||
|
int outlen;
|
||||||
|
|
||||||
|
int num;
|
||||||
|
|
||||||
|
if (MHWindow == NULL || MHWindow->monWindow == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
MHWindow->monWindow->setText(Buffer);
|
||||||
|
}
|
||||||
|
|
|
@ -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,14 +1,14 @@
|
||||||
<?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-12-31T18:44:43. -->
|
||||||
<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>
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
<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>
|
||||||
|
@ -37,6 +37,7 @@
|
||||||
<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.PreferSingleLineComments">false</value>
|
||||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||||
|
@ -45,6 +46,7 @@
|
||||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
@ -52,6 +54,7 @@
|
||||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
|
@ -59,6 +62,7 @@
|
||||||
<valuemap type="QVariantMap">
|
<valuemap type="QVariantMap">
|
||||||
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||||
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||||
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||||
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||||
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||||
|
@ -67,15 +71,12 @@
|
||||||
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||||
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||||
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||||
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
|
|
||||||
<value type="QString">-fno-delayed-template-parsing</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="ClangCodeModel.UseGlobalConfig">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>
|
||||||
|
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
|
||||||
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||||
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||||
|
@ -87,35 +88,28 @@
|
||||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
<valuemap type="QVariantMap">
|
<valuemap type="QVariantMap">
|
||||||
<value type="QString" key="DeviceType">Desktop</value>
|
<value type="QString" key="DeviceType">Desktop</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">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.DisplayName">Desktop Qt 5.14.2 MSVC2015 64bit</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">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.Id">{6c3e99da-2293-4df8-901e-49e24d493aeb}</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
<value type="bool">true</value>
|
|
||||||
<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>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
@ -124,13 +118,9 @@
|
||||||
<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">Qt4ProjectManager.MakeStep</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
@ -138,36 +128,27 @@
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||||
<value type="int" key="QtQuickCompiler">2</value>
|
|
||||||
<value type="int" key="SeparateDebugInfo">2</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
<value type="bool">true</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="int" key="EnableQmlDebugging">2</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Release</value>
|
||||||
<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="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Release</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>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
@ -176,13 +157,9 @@
|
||||||
<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">Qt4ProjectManager.MakeStep</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
@ -190,36 +167,29 @@
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
<value type="int" key="QtQuickCompiler">0</value>
|
<value type="int" key="QtQuickCompiler">0</value>
|
||||||
<value type="int" key="SeparateDebugInfo">2</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
<value type="bool">true</value>
|
|
||||||
<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-Profile</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Profile</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.BuildConfiguration.BuildDirectory.shadowDir">/Volumes/Source/QT/build-QtTermTCP-Qt_5_15_10_5_15_10_1-Profile</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>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
@ -228,13 +198,9 @@
|
||||||
<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">Qt4ProjectManager.MakeStep</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
@ -242,6 +208,7 @@
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
@ -249,10 +216,10 @@
|
||||||
<value type="int" key="QtQuickCompiler">0</value>
|
<value type="int" key="QtQuickCompiler">0</value>
|
||||||
<value type="int" key="SeparateDebugInfo">0</value>
|
<value type="int" key="SeparateDebugInfo">0</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
@ -262,89 +229,28 @@
|
||||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
<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="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>
|
<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.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"/>
|
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
<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="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/John/OneDrive/Dev/Source/QT/QtTermTCP/QtTermTCP.pro</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/Volumes/Source/QT/QtTermTCP2/QtTermTCP.pro</value>
|
||||||
<value type="QString" key="RunConfiguration.Arguments"></value>
|
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/Volumes/Source/QT/QtTermTCP2/QtTermTCP.pro</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.UseCppDebuggerAuto">true</value>
|
||||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">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="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
<value type="QString" key="RunConfiguration.WorkingDirectory"></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="RunConfiguration.WorkingDirectory.default">C:/Users/John/OneDrive/Dev/Source/QT/build-QtTermTCP-Desktop_Qt_5_14_2_MSVC2015_64bit-Debug</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
<value type="int">1</value>
|
<value type="qlonglong">1</value>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
|
|
@ -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,12 +1,14 @@
|
||||||
<?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\Release</LocalDebuggerWorkingDirectory>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
<LocalDebuggerCommand>C:\Dev\Msdev2005\Projects\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\Release</LocalDebuggerWorkingDirectory>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
<LocalDebuggerCommand>C:\Dev\Msdev2005\Projects\QtTermTCP\Win32\Debug\QtTermTCP.exe</LocalDebuggerCommand>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<QtLastBackgroundBuild>2022-05-19T07:28:47.9186341Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2022-05-19T07:28:47.9186341Z</QtLastBackgroundBuild>
|
||||||
|
@ -15,15 +17,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>2025-02-19T10:20:19.7224236Z</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>2025-02-19T10:20:19.9860750Z</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>2025-02-19T10:20:19.2704826Z</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>2025-02-19T10:20:19.4132585Z</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;
|
||||||
|
|
299
ax25.c
299
ax25.c
|
@ -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);
|
||||||
|
@ -40,7 +44,7 @@ void decode_frame(Byte * frame, int len, Byte * path, string * data,
|
||||||
|
|
||||||
void SetSessLabel(void * Sess, char * label);
|
void SetSessLabel(void * Sess, char * label);
|
||||||
void setMenus(int State);
|
void setMenus(int State);
|
||||||
|
void MHPROC(unsigned char * Packet, int Len);
|
||||||
/*
|
/*
|
||||||
|
|
||||||
unit ax25;
|
unit ax25;
|
||||||
|
@ -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,46 +2569,65 @@ 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!
|
*ackptr++ = FEND;
|
||||||
|
*ackptr++ = Msg[0]; // opcode and channel
|
||||||
|
|
||||||
TXMSG = newString();
|
*ackptr++ = Msg[1];
|
||||||
stringAdd(TXMSG, &Msg[0], Len); // include Control
|
*ackptr++ = Msg[2]; // ACK Bytes
|
||||||
|
*ackptr++ = FEND;
|
||||||
|
|
||||||
CRC = get_fcs(&Msg[3], Len - 3); // exclude control and ack bytes
|
KISSSendtoServer(socket, ACK, 5);
|
||||||
|
|
||||||
CRCString[0] = CRC & 0xff;
|
// remove ack bytes
|
||||||
CRCString[1] = CRC >> 8;
|
|
||||||
|
|
||||||
stringAdd(TXMSG, CRCString, 2);
|
memmove(&Msg[1], &Msg[3], Len - 2);
|
||||||
|
|
||||||
// Ackmode needs to know where to send ack back to, so save socket on end of data
|
// drop through to KISS Data
|
||||||
|
|
||||||
stringAdd(TXMSG, (unsigned char *)&socket, sizeof(socket));
|
|
||||||
|
|
||||||
// if KISS Optimise see if frame is really needed
|
|
||||||
|
|
||||||
if (!KISS_opt[Chan])
|
|
||||||
Add(&KISS.buffer[Chan], TXMSG);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (add_raw_frames(Chan, TXMSG, &KISS.buffer[Chan]))
|
|
||||||
Add(&KISS.buffer[Chan], TXMSG);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
Len -= 2;
|
||||||
|
}
|
||||||
case KISS_DATA:
|
case KISS_DATA:
|
||||||
|
|
||||||
|
if (KISSChecksum)
|
||||||
|
{
|
||||||
|
// SUM MESSAGE, AND IF DUFF DISCARD. IF OK DECREMENT COUNT TO REMOVE SUM
|
||||||
|
|
||||||
|
int sumlen = Len;
|
||||||
|
char * ptr = &Msg[0];
|
||||||
|
UCHAR sum = 0;
|
||||||
|
|
||||||
|
while (sumlen--)
|
||||||
|
{
|
||||||
|
sum ^= *(ptr++);
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
MHPROC(TXMSG->Data, TXMSG->Length);
|
||||||
|
|
||||||
analiz_frame(Chan, TXMSG, socket, 0);
|
analiz_frame(Chan, TXMSG, socket, 0);
|
||||||
|
|
||||||
free(TXMSG);
|
free(TXMSG);
|
||||||
|
@ -2702,7 +2726,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;
|
||||||
|
@ -2997,6 +3021,221 @@ char * frame_monitor(string * frame, char * code, int tx_stat)
|
||||||
return FrameData;
|
return FrameData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct _MHSTRUC
|
||||||
|
{
|
||||||
|
UCHAR MHCALL[7];
|
||||||
|
UCHAR MHDIGIS[7][8];
|
||||||
|
time_t MHTIME;
|
||||||
|
int MHCOUNT;
|
||||||
|
unsigned char MHDIGI;
|
||||||
|
char MHFreq[12];
|
||||||
|
char MHLocator[6];
|
||||||
|
} MHSTRUC, *PMHSTRUC;
|
||||||
|
|
||||||
|
|
||||||
|
#define MHENTRIES 30
|
||||||
|
|
||||||
|
MHSTRUC MHEARD[(MHENTRIES + 1) * sizeof(MHSTRUC)] = { 0 };
|
||||||
|
|
||||||
|
int CompareCalls(UCHAR * c1, UCHAR * c2)
|
||||||
|
{
|
||||||
|
// COMPARE AX25 CALLSIGNS IGNORING EXTRA BITS IN SSID
|
||||||
|
|
||||||
|
if (memcmp(c1, c2, 6))
|
||||||
|
return FALSE; // No Match
|
||||||
|
|
||||||
|
if ((c1[6] & 0x1e) == (c2[6] & 0x1e))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
||||||
|
|
||||||
|
void * MHWindow = 0;
|
||||||
|
void WritetoMHWindow(char * Buffer);
|
||||||
|
int KISSMH = 0;
|
||||||
|
|
||||||
|
char * FormatMH(PMHSTRUC MH)
|
||||||
|
{
|
||||||
|
struct tm * TM;
|
||||||
|
static char MHTime[50];
|
||||||
|
time_t szClock;
|
||||||
|
char LOC[7];
|
||||||
|
|
||||||
|
memcpy(LOC, MH->MHLocator, 6);
|
||||||
|
LOC[6] = 0;
|
||||||
|
|
||||||
|
szClock = MH->MHTIME;
|
||||||
|
// else
|
||||||
|
// szClock = time(NULL) - MH->MHTIME;
|
||||||
|
|
||||||
|
TM = gmtime(&szClock);
|
||||||
|
|
||||||
|
sprintf(MHTime, "%s %02d %.2d:%.2d:%.2d %s %s",
|
||||||
|
month[TM->tm_mon], TM->tm_mday, TM->tm_hour, TM->tm_min, TM->tm_sec, MH->MHFreq, LOC);
|
||||||
|
|
||||||
|
return MHTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MHPROC(unsigned char * Packet, int Len)
|
||||||
|
{
|
||||||
|
PMHSTRUC MH = &MHEARD[0];
|
||||||
|
PMHSTRUC MHBASE = MH;
|
||||||
|
int i;
|
||||||
|
int OldCount = 0;
|
||||||
|
char Freq[64] = "";
|
||||||
|
char DIGI = '*';
|
||||||
|
|
||||||
|
MESSAGE Frame;
|
||||||
|
MESSAGE * Buffer = &Frame;
|
||||||
|
|
||||||
|
memcpy(Buffer->DEST, Packet, Len);
|
||||||
|
|
||||||
|
|
||||||
|
// if port has a freq associated with it use it
|
||||||
|
|
||||||
|
|
||||||
|
// if (Buffer->ORIGIN[6] & 1)
|
||||||
|
DIGI = 0; // Don't think we want to do this
|
||||||
|
|
||||||
|
// See if in list
|
||||||
|
|
||||||
|
for (i = 0; i < MHENTRIES; i++)
|
||||||
|
{
|
||||||
|
if ((MH->MHCALL[0] == 0) || (CompareCalls(Buffer->ORIGIN, MH->MHCALL) && MH->MHDIGI == DIGI)) // Spare or our entry
|
||||||
|
{
|
||||||
|
OldCount = MH->MHCOUNT;
|
||||||
|
goto DoMove;
|
||||||
|
}
|
||||||
|
MH++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TABLE FULL AND ENTRY NOT FOUND - MOVE DOWN ONE, AND ADD TO TOP
|
||||||
|
|
||||||
|
i = MHENTRIES - 1;
|
||||||
|
|
||||||
|
// Move others down and add at front
|
||||||
|
DoMove:
|
||||||
|
if (i != 0) // First
|
||||||
|
memmove(MHBASE + 1, MHBASE, i * sizeof(MHSTRUC));
|
||||||
|
|
||||||
|
memcpy(MHBASE->MHCALL, Buffer->ORIGIN, 7 * 9); // Save Digis
|
||||||
|
MHBASE->MHDIGI = DIGI;
|
||||||
|
MHBASE->MHTIME = time(NULL);
|
||||||
|
MHBASE->MHCOUNT = ++OldCount;
|
||||||
|
strcpy(MHBASE->MHFreq, Freq);
|
||||||
|
MHBASE->MHLocator[0] = 0;
|
||||||
|
|
||||||
|
if (MHWindow)
|
||||||
|
{
|
||||||
|
int count = MHENTRIES;
|
||||||
|
int n;
|
||||||
|
char Normcall[20];
|
||||||
|
char From[10];
|
||||||
|
char DigiList[100];
|
||||||
|
char * Output;
|
||||||
|
int len;
|
||||||
|
char Digi = 0;
|
||||||
|
char MHPage[MHENTRIES * 100];
|
||||||
|
char * Bufferptr = MHPage;
|
||||||
|
unsigned char * ptr;
|
||||||
|
|
||||||
|
MH = &MHEARD[0];
|
||||||
|
|
||||||
|
// Note that the MHDIGIS field may contain rubbish. You have to check End of Address bit to find
|
||||||
|
// how many digis there are
|
||||||
|
|
||||||
|
Bufferptr += sprintf(Bufferptr, "Callsign Last heard Pkts RX via Digi\r");
|
||||||
|
Bufferptr += sprintf(Bufferptr, "\r");
|
||||||
|
|
||||||
|
while (count--)
|
||||||
|
{
|
||||||
|
if (MH->MHCALL[0] == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
Digi = 0;
|
||||||
|
|
||||||
|
len = ConvFromAX25(MH->MHCALL, Normcall);
|
||||||
|
|
||||||
|
Normcall[len++] = MH->MHDIGI;
|
||||||
|
Normcall[len++] = 0;
|
||||||
|
|
||||||
|
n = 8; // Max number of digi-peaters
|
||||||
|
|
||||||
|
ptr = &MH->MHCALL[6]; // End of Address bit
|
||||||
|
|
||||||
|
Output = &DigiList[0];
|
||||||
|
|
||||||
|
if ((*ptr & 1) == 0)
|
||||||
|
{
|
||||||
|
// at least one digi
|
||||||
|
|
||||||
|
strcpy(Output, "via ");
|
||||||
|
Output += 4;
|
||||||
|
|
||||||
|
while ((*ptr & 1) == 0)
|
||||||
|
{
|
||||||
|
// MORE TO COME
|
||||||
|
|
||||||
|
From[ConvFromAX25(ptr + 1, From)] = 0;
|
||||||
|
Output += sprintf((char *)Output, "%s", From);
|
||||||
|
|
||||||
|
ptr += 7;
|
||||||
|
n--;
|
||||||
|
|
||||||
|
if (n == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
// See if digi actioned - put a * on last actioned
|
||||||
|
|
||||||
|
if (*ptr & 0x80)
|
||||||
|
{
|
||||||
|
if (*ptr & 1) // if last address, must need *
|
||||||
|
{
|
||||||
|
*(Output++) = '*';
|
||||||
|
Digi = '*';
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
if ((ptr[7] & 0x80) == 0) // Repeased by next?
|
||||||
|
{
|
||||||
|
*(Output++) = '*'; // No, so need *
|
||||||
|
Digi = '*';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
*(Output++) = ',';
|
||||||
|
}
|
||||||
|
*(--Output) = 0; // remove last comma
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*(Output) = 0;
|
||||||
|
|
||||||
|
// if we used a digi set * on call and display via string
|
||||||
|
|
||||||
|
|
||||||
|
if (Digi)
|
||||||
|
Normcall[len++] = Digi;
|
||||||
|
else
|
||||||
|
DigiList[0] = 0; // Dont show list if not used
|
||||||
|
|
||||||
|
Normcall[len++] = 0;
|
||||||
|
|
||||||
|
ptr = FormatMH(MH);
|
||||||
|
|
||||||
|
Bufferptr += sprintf(Bufferptr, "%-10s %-10s %-10d %-30s\r", Normcall, ptr, MH->MHCOUNT, DigiList);
|
||||||
|
|
||||||
|
MH++;
|
||||||
|
}
|
||||||
|
|
||||||
|
WritetoMHWindow(MHPage);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
4
ax25.h
4
ax25.h
|
@ -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);
|
||||||
|
|
75
ax25_l2.c
75
ax25_l2.c
|
@ -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);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#define _MSC_EXTENSIONS
|
#define _MSC_EXTENSIONS
|
||||||
#define _INTEGRAL_MAX_BITS 64
|
#define _INTEGRAL_MAX_BITS 64
|
||||||
#define _MSC_VER 1916
|
#define _MSC_VER 1916
|
||||||
#define _MSC_FULL_VER 191627043
|
#define _MSC_FULL_VER 191627051
|
||||||
#define _MSC_BUILD 0
|
#define _MSC_BUILD 0
|
||||||
#define _WIN32
|
#define _WIN32
|
||||||
#define _M_IX86 600
|
#define _M_IX86 600
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#define _MSC_EXTENSIONS
|
#define _MSC_EXTENSIONS
|
||||||
#define _INTEGRAL_MAX_BITS 64
|
#define _INTEGRAL_MAX_BITS 64
|
||||||
#define _MSC_VER 1916
|
#define _MSC_VER 1916
|
||||||
#define _MSC_FULL_VER 191627043
|
#define _MSC_FULL_VER 191627051
|
||||||
#define _MSC_BUILD 0
|
#define _MSC_BUILD 0
|
||||||
#define _WIN32
|
#define _WIN32
|
||||||
#define _M_IX86 600
|
#define _M_IX86 600
|
||||||
|
|
Loading…
Reference in a new issue