Update upstream source from tag 'upstream/6.0.24.22'
Update to upstream version '6.0.24.22'
with Debian dir 0520fb299a
This commit is contained in:
commit
fd1249b1e2
|
@ -1581,9 +1581,9 @@ OK:
|
||||||
|
|
||||||
// Copy frame to a DIGIMessage Struct
|
// Copy frame to a DIGIMessage Struct
|
||||||
|
|
||||||
memcpy(&Msg, monbuff, 21 + (7 * Digis)); // Header, Dest, Source, Addresses and Digis
|
memcpy(&Msg, monbuff, MSGHDDRLEN + 14 + (7 * Digis)); // Header, Dest, Source, Addresses and Digis
|
||||||
|
|
||||||
len = Msg.LENGTH - 21 - (7 * Digis); // Payload Length (including CTL and PID
|
len = Msg.LENGTH - (MSGHDDRLEN + 14) - (7 * Digis); // Payload Length (including CTL and PID
|
||||||
|
|
||||||
memcpy(&Msg.CTL, &AdjBuff->CTL, len);
|
memcpy(&Msg.CTL, &AdjBuff->CTL, len);
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
g8bpq
|
|
||||||
very bad phrase
|
|
10
BPQINP3.c
10
BPQINP3.c
|
@ -358,9 +358,7 @@ VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port)
|
||||||
|
|
||||||
// Update Timestamp on Route
|
// Update Timestamp on Route
|
||||||
|
|
||||||
time((time_t *)&Stamp);
|
Stamp = time(NULL) % 86400; // Secs into day
|
||||||
|
|
||||||
Stamp = Stamp % 86400; // Secs into day
|
|
||||||
HH = Stamp / 3600;
|
HH = Stamp / 3600;
|
||||||
|
|
||||||
Stamp -= HH * 3600;
|
Stamp -= HH * 3600;
|
||||||
|
@ -370,6 +368,12 @@ VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port)
|
||||||
|
|
||||||
while (msglen > 0)
|
while (msglen > 0)
|
||||||
{
|
{
|
||||||
|
if (msglen < 10)
|
||||||
|
{
|
||||||
|
Debugprintf("Corrupt INP3 Message");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
memset(alias, ' ', 6);
|
memset(alias, ' ', 6);
|
||||||
memcpy(axcall, ptr1, 7);
|
memcpy(axcall, ptr1, 7);
|
||||||
|
|
||||||
|
|
|
@ -1122,6 +1122,7 @@
|
||||||
|
|
||||||
// Add FBB reject.sys style filters (3)
|
// Add FBB reject.sys style filters (3)
|
||||||
// Improve Webmail on 64 bit builds
|
// Improve Webmail on 64 bit builds
|
||||||
|
// Fix setting status '$' on Bulls sent via WebMail (22)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
27
BPQTermMDI.c
27
BPQTermMDI.c
|
@ -614,6 +614,11 @@ VOID CALLBACK SetupTermSessions(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dw
|
||||||
AppendMenu(hMonCfgMenu,MF_STRING | MF_UNCHECKED,BPQBASE + i,msg);
|
AppendMenu(hMonCfgMenu,MF_STRING | MF_UNCHECKED,BPQBASE + i,msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mtxparam & 0x80)
|
||||||
|
CheckMenuItem(hMonCfgMenu,MONLOCALTIME,MF_CHECKED);
|
||||||
|
else
|
||||||
|
CheckMenuItem(hMonCfgMenu,MONLOCALTIME,MF_UNCHECKED);
|
||||||
|
|
||||||
if (mtxparam & 1)
|
if (mtxparam & 1)
|
||||||
CheckMenuItem(hMonCfgMenu,BPQMTX,MF_CHECKED);
|
CheckMenuItem(hMonCfgMenu,BPQMTX,MF_CHECKED);
|
||||||
else
|
else
|
||||||
|
@ -1733,6 +1738,10 @@ LRESULT CALLBACK MonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case MONLOCALTIME:
|
||||||
|
|
||||||
|
ToggleLocalTime();
|
||||||
|
break;
|
||||||
|
|
||||||
case BPQMTX:
|
case BPQMTX:
|
||||||
|
|
||||||
|
@ -4266,6 +4275,24 @@ int ToggleMTX(HWND hWnd)
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int ToggleLocalTime(HWND hWnd)
|
||||||
|
{
|
||||||
|
mtxparam = mtxparam ^ 0x80;
|
||||||
|
|
||||||
|
if (mtxparam & 0x80)
|
||||||
|
|
||||||
|
CheckMenuItem(hMonCfgMenu,MONLOCALTIME,MF_CHECKED);
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
CheckMenuItem(hMonCfgMenu,MONLOCALTIME,MF_UNCHECKED);
|
||||||
|
|
||||||
|
IntSetTraceOptionsEx(portmask,mtxparam,mcomparam, monUI);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
|
||||||
}
|
}
|
||||||
int ToggleMCOM(HWND hWnd)
|
int ToggleMCOM(HWND hWnd)
|
||||||
{
|
{
|
||||||
|
|
9
Bpq32.c
9
Bpq32.c
|
@ -1195,7 +1195,14 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
||||||
// Allow zero resptime (send RR immediately) (13)
|
// Allow zero resptime (send RR immediately) (13)
|
||||||
// Make sure CMD bit is set on UI frames
|
// Make sure CMD bit is set on UI frames
|
||||||
// Add setting Modem Flags in QtSM AGW mode
|
// Add setting Modem Flags in QtSM AGW mode
|
||||||
// If FT847 om PTC Port send a "Cat On" command (16)
|
// If FT847 om PTC Port send a "Cat On" command (17)
|
||||||
|
// Fix some 63 port bugs in RigCOntrol (17)
|
||||||
|
// Fix 63 port bug in Bridging (18)
|
||||||
|
// Add FTDX10 Rigcontrol (19)
|
||||||
|
// Fix 64 bit bug in displaying INP3 Messages (20)
|
||||||
|
// Improve restart of WinRPR TNC on remote host (21)
|
||||||
|
// Fix some Rigcontrol issues with empty timebands (22)
|
||||||
|
// Fix 64 bit bug in processing INP3 Messages (22)
|
||||||
|
|
||||||
#define CKernel
|
#define CKernel
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#define CHATTERM 1179
|
#define CHATTERM 1179
|
||||||
#define IDM_CLOSEWINDOW 1180
|
#define IDM_CLOSEWINDOW 1180
|
||||||
#define MONITORAPRS 1181
|
#define MONITORAPRS 1181
|
||||||
|
#define MONLOCALTIME 1182
|
||||||
#define MON_UI_ONLY 40006
|
#define MON_UI_ONLY 40006
|
||||||
#define StopALLMon 40007
|
#define StopALLMon 40007
|
||||||
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
IZ4FVW 0 Giulio Cesena ITA JN64ce, 1k2 bps radio link¬55¬0
|
|
||||||
N5UXT 0 Angelo th New Orleans, La¬99¬0
|
|
||||||
N0NJY 0 Rick Oak Island, NC¬76¬0
|
|
||||||
KB8UVN 0 Matt Johnstown, Ohio¬95¬0
|
|
||||||
WA3WLH 0 Rich East Greenville, PA¬55¬0
|
|
||||||
EI2GYB 0 Steve_353 Donegal, Ireland (IO65JG)¬55¬0
|
|
||||||
PE1RRR 0 Red Network Hub Monitor¬91¬0
|
|
||||||
PE1NNZ 0 Guido nr Eindhoven¬91¬0
|
|
||||||
G7TAJ 0 Steve_44 E.Sussex UK,JO00FU¬91¬0
|
|
||||||
N3HYM 0 Ray Frederick, Md¬97¬0
|
|
||||||
VE3CGH 0 Ted ?_qth¬71¬0
|
|
||||||
WE1H 0 Matt Merrimack, NH¬26¬0
|
|
||||||
W9IKU 0 Greg Portage, Wisconsin USA¬55¬0
|
|
||||||
KA3VSP 0 Brian New Castle, DE¬91¬0
|
|
||||||
G8BPQ 0 John Nottingham¬26¬0
|
|
||||||
GM8BPQ 40 John ?_qth¬14¬0
|
|
|
@ -4955,6 +4955,7 @@ VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int
|
||||||
{
|
{
|
||||||
strlop(Buffer, 13);
|
strlop(Buffer, 13);
|
||||||
Debugprintf("Map Update Params - %s", Params);
|
Debugprintf("Map Update Params - %s", Params);
|
||||||
|
|
||||||
Debugprintf("Map Update failed - %s", Buffer);
|
Debugprintf("Map Update failed - %s", Buffer);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
// FormatHTML.cpp : Defines the entry point for the console application.
|
||||||
|
//
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main () {
|
||||||
|
FILE *fp, *fp2;
|
||||||
|
char str[256];
|
||||||
|
char newstr[256];
|
||||||
|
char * ptr, * inptr;
|
||||||
|
|
||||||
|
/* opening file for reading */
|
||||||
|
fp = fopen("D:/AtomProject/test.html" , "r");
|
||||||
|
fp2 = fopen("D:/AtomProject/test.html.c" , "w");
|
||||||
|
|
||||||
|
if(fp == NULL) {
|
||||||
|
perror("Error opening file");
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
while(fgets (str, 256, fp) != NULL)
|
||||||
|
{
|
||||||
|
// Replace any " with \" and add " on front and \r\n" on end
|
||||||
|
|
||||||
|
char c;
|
||||||
|
ptr = newstr;
|
||||||
|
inptr = str;
|
||||||
|
|
||||||
|
c = *(inptr++);
|
||||||
|
|
||||||
|
*(ptr++) = '"';
|
||||||
|
|
||||||
|
while (c && c != 10)
|
||||||
|
{
|
||||||
|
if (c == '"')
|
||||||
|
*(ptr++) = '\\';
|
||||||
|
|
||||||
|
*(ptr++) = c;
|
||||||
|
|
||||||
|
c = *(inptr++);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
*(ptr++) = '\\';
|
||||||
|
*(ptr++) = 'r';
|
||||||
|
*(ptr++) = '\\';
|
||||||
|
*(ptr++) = 'n';
|
||||||
|
*(ptr++) = '"';
|
||||||
|
*(ptr++) = 10;
|
||||||
|
*(ptr++) = 0;
|
||||||
|
|
||||||
|
puts(newstr);
|
||||||
|
fputs(newstr, fp2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
fclose(fp2);
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
|
@ -0,0 +1,219 @@
|
||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="FormatHTML"
|
||||||
|
ProjectGUID="{2B892B53-6549-4872-AF51-45280ADC8AB5}"
|
||||||
|
RootNamespace="FormatHTML"
|
||||||
|
Keyword="Win32Proj"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="0"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||||
|
LinkIncremental="2"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||||
|
RuntimeLibrary="2"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||||
|
LinkIncremental="1"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="1"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\FormatHTML.cpp"
|
||||||
|
>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
CompileAs="1"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\stdafx.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||||
|
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\stdafx.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Resource Files"
|
||||||
|
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||||
|
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||||
|
>
|
||||||
|
</Filter>
|
||||||
|
<File
|
||||||
|
RelativePath=".\ReadMe.txt"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
38
IPCode.c
38
IPCode.c
|
@ -233,7 +233,7 @@ UCHAR ourMACAddr[6] = {02,'B','P','Q',1,1};
|
||||||
|
|
||||||
UCHAR RealMacAddress[6];
|
UCHAR RealMacAddress[6];
|
||||||
|
|
||||||
int IPPortMask = 0;
|
uint64_t IPPortMask = 0;
|
||||||
|
|
||||||
IPSTATS IPStats = {0};
|
IPSTATS IPStats = {0};
|
||||||
|
|
||||||
|
@ -1548,7 +1548,8 @@ VOID ProcessEthIPMsg(PETHMSG Buffer)
|
||||||
|
|
||||||
VOID ProcessEthARPMsg(PETHARP arpptr, BOOL FromTAP)
|
VOID ProcessEthARPMsg(PETHARP arpptr, BOOL FromTAP)
|
||||||
{
|
{
|
||||||
int i=0, Mask=IPPortMask;
|
int i=0;
|
||||||
|
uint64_t Mask=IPPortMask;
|
||||||
PARPDATA Arp;
|
PARPDATA Arp;
|
||||||
PROUTEENTRY Route;
|
PROUTEENTRY Route;
|
||||||
BOOL Found;
|
BOOL Found;
|
||||||
|
@ -1748,7 +1749,7 @@ ProxyARPReply:
|
||||||
memset(AXARPREQMSG.TARGETHWADDR, 0, 7);
|
memset(AXARPREQMSG.TARGETHWADDR, 0, 7);
|
||||||
AXARPREQMSG.ARPOPCODE = 0x0100;
|
AXARPREQMSG.ARPOPCODE = 0x0100;
|
||||||
|
|
||||||
for (i=1; i<=NUMBEROFPORTS; i++)
|
for (i = 1; i <= MaxBPQPortNo; i++)
|
||||||
{
|
{
|
||||||
if (Mask & 1)
|
if (Mask & 1)
|
||||||
Send_AX_Datagram((PMESSAGE)&AXARPREQMSG, 46, i, QST);
|
Send_AX_Datagram((PMESSAGE)&AXARPREQMSG, 46, i, QST);
|
||||||
|
@ -1847,7 +1848,8 @@ SendBack:
|
||||||
|
|
||||||
VOID ProcessAXARPMsg(PAXARP arpptr)
|
VOID ProcessAXARPMsg(PAXARP arpptr)
|
||||||
{
|
{
|
||||||
int i=0, Mask=IPPortMask;
|
int i=0;
|
||||||
|
uint64_t Mask=IPPortMask;
|
||||||
PARPDATA Arp;
|
PARPDATA Arp;
|
||||||
PROUTEENTRY Route;
|
PROUTEENTRY Route;
|
||||||
|
|
||||||
|
@ -1954,7 +1956,7 @@ AXProxyARPReply:
|
||||||
AXARPREQMSG.TARGETIPADDR = arpptr->TARGETIPADDR;
|
AXARPREQMSG.TARGETIPADDR = arpptr->TARGETIPADDR;
|
||||||
AXARPREQMSG.SENDIPADDR = arpptr->SENDIPADDR;
|
AXARPREQMSG.SENDIPADDR = arpptr->SENDIPADDR;
|
||||||
|
|
||||||
for (i=1; i<=NUMBEROFPORTS; i++)
|
for (i=1; i<=MaxBPQPortNo; i++)
|
||||||
{
|
{
|
||||||
if (i != arpptr->MSGHDDR.PORT)
|
if (i != arpptr->MSGHDDR.PORT)
|
||||||
if (Mask & 1)
|
if (Mask & 1)
|
||||||
|
@ -3281,7 +3283,7 @@ static BOOL ReadConfigFile()
|
||||||
|
|
||||||
static int ProcessLine(char * buf)
|
static int ProcessLine(char * buf)
|
||||||
{
|
{
|
||||||
char * ptr, * p_value, * p_origport, * p_host, * p_port;
|
char * ptr, * p_value, * p_origport, * p_host;
|
||||||
int port, mappedport, ipad, mappedipad;
|
int port, mappedport, ipad, mappedipad;
|
||||||
BOOL NATTAP = FALSE;
|
BOOL NATTAP = FALSE;
|
||||||
int i;
|
int i;
|
||||||
|
@ -3447,16 +3449,28 @@ static int ProcessLine(char * buf)
|
||||||
|
|
||||||
if (_stricmp(ptr,"IPPorts") == 0)
|
if (_stricmp(ptr,"IPPorts") == 0)
|
||||||
{
|
{
|
||||||
p_port = strtok(p_value, " ,\t\n\r");
|
struct _EXTPORTDATA * PORTVEC;
|
||||||
|
|
||||||
while (p_port != NULL)
|
while (p_value != NULL)
|
||||||
{
|
{
|
||||||
i=atoi(p_port);
|
i=atoi(p_value);
|
||||||
if (i == 0) return FALSE;
|
if (i == 0) return FALSE;
|
||||||
if (i > NUMBEROFPORTS) return FALSE;
|
|
||||||
|
|
||||||
IPPortMask |= 1 << (i-1);
|
PORTVEC = (struct _EXTPORTDATA * )GetPortTableEntryFromPortNum(i);
|
||||||
p_port = strtok(NULL, " ,\t\n\r");
|
|
||||||
|
if (PORTVEC == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
// if not KISS, make sure it can send UI frames
|
||||||
|
|
||||||
|
if (PORTVEC->PORTCONTROL.PORTTYPE == 16) // EXTERNAL
|
||||||
|
if (PORTVEC->PORTCONTROL.PROTOCOL == 10) // Pactor/WINMOR
|
||||||
|
if (PORTVEC->PORTCONTROL.UICAPABLE == 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
|
||||||
|
IPPortMask |= (uint64_t)1 << (i-1);
|
||||||
|
p_value = strlop(p_value, ',');
|
||||||
}
|
}
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
// Generated from the TEXTINCLUDE 2 resource.
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
//
|
//
|
||||||
#include "afxres.h"
|
#include "afxres.h"
|
||||||
#include "bpqtermmdi.h"
|
#include "BpqTermMDI.h"
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
@ -241,6 +241,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "Monitor"
|
POPUP "Monitor"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM "Use Local Time", MONLOCALTIME
|
||||||
MENUITEM "Monitor TX", BPQMTX
|
MENUITEM "Monitor TX", BPQMTX
|
||||||
MENUITEM "Monitor Supervisory", BPQMCOM
|
MENUITEM "Monitor Supervisory", BPQMCOM
|
||||||
MENUITEM "Monitor UI Only", MON_UI_ONLY
|
MENUITEM "Monitor UI Only", MON_UI_ONLY
|
||||||
|
@ -276,13 +277,13 @@ INCOMINGCALL WAVE MOVEABLE PURE "Ring.wav"
|
||||||
BEGIN
|
BEGIN
|
||||||
"kernelresource.h\0"
|
"kernelresource.h\0"
|
||||||
"""\r\n"
|
"""\r\n"
|
||||||
"bpqtermmdi.h\0"
|
"BpqTermMDI.h\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
2 TEXTINCLUDE DISCARDABLE
|
2 TEXTINCLUDE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
"#include ""afxres.h""\r\n"
|
"#include ""afxres.h""\r\n"
|
||||||
"#include ""bpqtermmdi.h""\r\n"
|
"#include ""BpqTermMDI.h""\r\n"
|
||||||
"\0"
|
"\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
2
L4Code.c
2
L4Code.c
|
@ -115,7 +115,7 @@ VOID NETROMMSG(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG)
|
||||||
{
|
{
|
||||||
// INP3
|
// INP3
|
||||||
|
|
||||||
ProcessINP3RIF(LINK->NEIGHBOUR, &L3MSG->L3SRCE[1], L3MSG->LENGTH - 9, L3MSG->Port);
|
ProcessINP3RIF(LINK->NEIGHBOUR, &L3MSG->L3SRCE[1], L3MSG->LENGTH - (MSGHDDRLEN + 2), L3MSG->Port); // = 2 = PID + FF Flag
|
||||||
ReleaseBuffer(L3MSG);
|
ReleaseBuffer(L3MSG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
2
LinBPQ.c
2
LinBPQ.c
|
@ -1581,8 +1581,8 @@ int main(int argc, char * argv[])
|
||||||
{
|
{
|
||||||
if (GenerateTrafficReport && (LastTrafficTime + 86400) < NOW)
|
if (GenerateTrafficReport && (LastTrafficTime + 86400) < NOW)
|
||||||
{
|
{
|
||||||
LastTrafficTime = NOW;
|
|
||||||
CreateBBSTrafficReport();
|
CreateBBSTrafficReport();
|
||||||
|
LastTrafficTime = NOW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>D:\linbpq</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<OutDir>C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(Configuration)\</OutDir>
|
<OutDir>C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(Configuration)\</OutDir>
|
||||||
|
@ -117,10 +118,10 @@
|
||||||
<PrecompiledHeader>
|
<PrecompiledHeader>
|
||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>kernel32.lib;WS2_32.Lib;..\lib\libconfigd.lib;DbgHelp.lib;setupapi.lib;miniupnpc.lib;zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>kernel32.lib;WS2_32.Lib;C:\OneDrive\Dev\Source\bpq32\libconfig\x64\Release\libconfig.lib;DbgHelp.lib;setupapi.lib;C:\Dev\Msdev2005\projects\bpq32\CKernel\x64\Debug\miniupnpc.lib;C:\OneDrive\Dev\Source\zlib-1.2.11\contrib\vstudio\vc14\x64\ZlibStatDebug\zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<OutputFile>c:\LINBPQ\$(ProjectName).exe</OutputFile>
|
<OutputFile>c:\LINBPQ\$(ProjectName).exe</OutputFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<GenerateMapFile>true</GenerateMapFile>
|
<GenerateMapFile>true</GenerateMapFile>
|
||||||
|
@ -215,6 +216,7 @@
|
||||||
<ClCompile Include="FBBRoutines.c" />
|
<ClCompile Include="FBBRoutines.c" />
|
||||||
<ClCompile Include="FLDigi.c" />
|
<ClCompile Include="FLDigi.c" />
|
||||||
<ClCompile Include="FreeDATA.c" />
|
<ClCompile Include="FreeDATA.c" />
|
||||||
|
<ClCompile Include="getopt.c" />
|
||||||
<ClCompile Include="HALDriver.c" />
|
<ClCompile Include="HALDriver.c" />
|
||||||
<ClCompile Include="HanksRT.c" />
|
<ClCompile Include="HanksRT.c" />
|
||||||
<ClCompile Include="HFCommon.c" />
|
<ClCompile Include="HFCommon.c" />
|
||||||
|
|
|
@ -315,6 +315,9 @@
|
||||||
<ClCompile Include="WPRoutines.c">
|
<ClCompile Include="WPRoutines.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="getopt.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="png.h">
|
<ClInclude Include="png.h">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?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|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LocalDebuggerCommand>C:\Dev\Msdev2005\projects\bpq32\BPQMail\x64\Debug\LinBPQ.exe</LocalDebuggerCommand>
|
<LocalDebuggerCommand>c:\linbpq\linbpq.exe</LocalDebuggerCommand>
|
||||||
<LocalDebuggerWorkingDirectory>c:\linbpq</LocalDebuggerWorkingDirectory>
|
<LocalDebuggerWorkingDirectory>c:\linbpq</LocalDebuggerWorkingDirectory>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
|
@ -634,7 +634,7 @@ char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen)
|
||||||
// If an INP3 RIF (type <> UI) decode as such
|
// If an INP3 RIF (type <> UI) decode as such
|
||||||
|
|
||||||
if (ADJBUFFER->CTL != 3) // UI
|
if (ADJBUFFER->CTL != 3) // UI
|
||||||
return DisplayINP3RIF(&ADJBUFFER->L2DATA[1], Output, MsgLen - 24);
|
return DisplayINP3RIF(&ADJBUFFER->L2DATA[1], Output, MsgLen - (MSGHDDRLEN + 14 + 3));
|
||||||
|
|
||||||
memcpy(Alias, ++ptr, 6);
|
memcpy(Alias, ++ptr, 6);
|
||||||
|
|
||||||
|
|
26
RTKnown.txt
26
RTKnown.txt
|
@ -1,26 +0,0 @@
|
||||||
G8BPQ-1 1681280155
|
|
||||||
GM8BPQ-3 1681280155
|
|
||||||
KB8UVN-6 1681280155
|
|
||||||
N8BHL-6 1681280155
|
|
||||||
KF8MZ-6 1681280155
|
|
||||||
W8BAP-6 1681280155
|
|
||||||
G8BPQ-4 1681280155
|
|
||||||
EI2GYB-4 1681280155
|
|
||||||
IZ4FVW-10 1681280155
|
|
||||||
PE1NNZ-5 1681280155
|
|
||||||
PI1LAP-4 1681280155
|
|
||||||
K8OPG-14 1681280155
|
|
||||||
KB9PVH-11 1681280155
|
|
||||||
N0NJY-11 1681280155
|
|
||||||
N3MEL-3 1681280155
|
|
||||||
K5DAT-11 1681280155
|
|
||||||
N2UEM-11 1681280155
|
|
||||||
W9IKU-11 1681280155
|
|
||||||
WA3WLH-11 1681280155
|
|
||||||
WA3WLH-14 1681280155
|
|
||||||
PE1RRR-4 1681280155
|
|
||||||
MS0HFI-4 1681280155
|
|
||||||
AE5E-2 1681280155
|
|
||||||
G0BMH-4 1681280155
|
|
||||||
OH5RM-8 1681280155
|
|
||||||
GM8BPQ-4 1681280155
|
|
98
RigControl.c
98
RigControl.c
|
@ -175,9 +175,10 @@ char FTRXModes[8][6] = {"LSB", "USB", "CW", "AM", "FM", "RTTY", "PKT", ""};
|
||||||
|
|
||||||
char KenwoodModes[16][6] = {"????", "LSB", "USB", "CW", "FM", "AM", "FSK", "????"};
|
char KenwoodModes[16][6] = {"????", "LSB", "USB", "CW", "FM", "AM", "FSK", "????"};
|
||||||
|
|
||||||
//char FT2000Modes[16][6] = {"????", "LSB", "USB", "CW", "FM", "AM", "FSK", "PKT-L", "FSK-R", "PKT-FM", "FM-N", "PKT-U", "????"};
|
|
||||||
char FT2000Modes[16][6] = {"????", "LSB", "USB", "CW", "FM", "AM", "FSK", "CW-R", "PKT-L", "FSK-R", "PKT-FM", "FM-N", "PKT-U", "????"};
|
char FT2000Modes[16][6] = {"????", "LSB", "USB", "CW", "FM", "AM", "FSK", "CW-R", "PKT-L", "FSK-R", "PKT-FM", "FM-N", "PKT-U", "????"};
|
||||||
|
|
||||||
|
char FTDX10Modes[16][9] = {"????", "LSB", "USB", "CW-U", "FM", "AM", "RTTY-L", "CW-L", "DATA-L", "RTTY-U", "DATA-FM", "FM-N", "DATA-U", "AM-N", "PSK", "DATA-FM-N"};
|
||||||
|
|
||||||
char FT991AModes[16][9] = {"????", "LSB", "USB", "CW-U", "FM", "AM", "RTTY-LSB", "CW-L", "DATA-LSB", "RTTY-USB", "DATA-FM", "FM-N", "DATA-USB", "AM-N", "C4FM", "????"};
|
char FT991AModes[16][9] = {"????", "LSB", "USB", "CW-U", "FM", "AM", "RTTY-LSB", "CW-L", "DATA-LSB", "RTTY-USB", "DATA-FM", "FM-N", "DATA-USB", "AM-N", "C4FM", "????"};
|
||||||
|
|
||||||
char FLEXModes[16][6] = {"LSB", "USB", "DSB", "CWL", "CWU", "FM", "AM", "DIGU", "SPEC", "DIGL", "SAM", "DRM"};
|
char FLEXModes[16][6] = {"LSB", "USB", "DSB", "CWL", "CWU", "FM", "AM", "DIGU", "SPEC", "DIGL", "SAM", "DRM"};
|
||||||
|
@ -202,7 +203,7 @@ char * RigWebPage = 0;
|
||||||
int RigWebPageLen = 0;
|
int RigWebPageLen = 0;
|
||||||
|
|
||||||
|
|
||||||
struct RIGPORTINFO * PORTInfo[34] = {NULL}; // Records are Malloc'd
|
struct RIGPORTINFO * PORTInfo[MAXBPQPORTS + 2] = {NULL}; // Records are Malloc'd
|
||||||
|
|
||||||
struct RIGINFO * DLLRIG = NULL; // Rig record for dll PTT interface (currently only for UZ7HO);
|
struct RIGINFO * DLLRIG = NULL; // Rig record for dll PTT interface (currently only for UZ7HO);
|
||||||
|
|
||||||
|
@ -564,6 +565,7 @@ VOID Rig_PTTEx(struct RIGINFO * RIG, BOOL PTTState, struct TNCINFO * TNC)
|
||||||
case ICOM:
|
case ICOM:
|
||||||
case KENWOOD:
|
case KENWOOD:
|
||||||
case FT2000:
|
case FT2000:
|
||||||
|
case FTDX10:
|
||||||
case FT991A:
|
case FT991A:
|
||||||
case FLEX:
|
case FLEX:
|
||||||
case NMEA:
|
case NMEA:
|
||||||
|
@ -782,7 +784,7 @@ int Rig_Command(TRANSPORTENTRY * Session, char * Command)
|
||||||
{
|
{
|
||||||
RIG = &PORT->Rigs[i];
|
RIG = &PORT->Rigs[i];
|
||||||
|
|
||||||
if (RIG->BPQPort & (1 << Port))
|
if (RIG->BPQPort & ((uint64_t)1 << Port))
|
||||||
goto portok;
|
goto portok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1285,6 +1287,7 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
||||||
case KENWOOD:
|
case KENWOOD:
|
||||||
case FT991A:
|
case FT991A:
|
||||||
case FT2000:
|
case FT2000:
|
||||||
|
case FTDX10:
|
||||||
case FLEX:
|
case FLEX:
|
||||||
case NMEA:
|
case NMEA:
|
||||||
|
|
||||||
|
@ -1870,6 +1873,7 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
||||||
|
|
||||||
case KENWOOD:
|
case KENWOOD:
|
||||||
case FT2000:
|
case FT2000:
|
||||||
|
case FTDX10:
|
||||||
case FT991A:
|
case FT991A:
|
||||||
case FLEX:
|
case FLEX:
|
||||||
|
|
||||||
|
@ -1885,6 +1889,10 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
||||||
if (_stricmp(FT2000Modes[ModeNo], Mode) == 0)
|
if (_stricmp(FT2000Modes[ModeNo], Mode) == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if (PORT->PortType == FTDX10)
|
||||||
|
if (_stricmp(FTDX10Modes[ModeNo], Mode) == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
if (PORT->PortType == FT991A)
|
if (PORT->PortType == FT991A)
|
||||||
if (_stricmp(FT991AModes[ModeNo], Mode) == 0)
|
if (_stricmp(FT991AModes[ModeNo], Mode) == 0)
|
||||||
break;
|
break;
|
||||||
|
@ -1925,8 +1933,8 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
||||||
if (PORT->PortType == FT2000)
|
if (PORT->PortType == FT2000)
|
||||||
FreqPtr->Cmd1Len = sprintf(Poll, "FA%s;MD0%X;FA;MD;", &FreqString[1], ModeNo);
|
FreqPtr->Cmd1Len = sprintf(Poll, "FA%s;MD0%X;FA;MD;", &FreqString[1], ModeNo);
|
||||||
else
|
else
|
||||||
if (PORT->PortType == FT991A)
|
if (PORT->PortType == FT991A || PORT->PortType == FTDX10)
|
||||||
FreqPtr->Cmd1Len = sprintf(Poll, "FA%s;MD0%X;FA;MD;", &FreqString, ModeNo);
|
FreqPtr->Cmd1Len = sprintf(Poll, "FA%s;MD0%X;FA;MD;", FreqString, ModeNo);
|
||||||
else
|
else
|
||||||
if (PORT->PortType == FLEX)
|
if (PORT->PortType == FLEX)
|
||||||
FreqPtr->Cmd1Len = sprintf(Poll, "ZZFA00%s;ZZMD%02d;ZZFA;ZZMD;", &FreqString[1], ModeNo);
|
FreqPtr->Cmd1Len = sprintf(Poll, "ZZFA00%s;ZZMD%02d;ZZFA;ZZMD;", &FreqString[1], ModeNo);
|
||||||
|
@ -2201,12 +2209,12 @@ DllExport BOOL APIENTRY Rig_Init()
|
||||||
|
|
||||||
NumberofPorts = 0;
|
NumberofPorts = 0;
|
||||||
|
|
||||||
for (port = 0; port < 32; port++)
|
for (port = 0; port < MAXBPQPORTS; port++)
|
||||||
PORTInfo[port] = NULL;
|
PORTInfo[port] = NULL;
|
||||||
|
|
||||||
// See if any rigcontrol defined (either RADIO or RIGCONTROL lines)
|
// See if any rigcontrol defined (either RADIO or RIGCONTROL lines)
|
||||||
|
|
||||||
for (port = 0; port < 32; port++)
|
for (port = 0; port < MAXBPQPORTS; port++)
|
||||||
{
|
{
|
||||||
if (RadioConfigMsg[port])
|
if (RadioConfigMsg[port])
|
||||||
NeedRig++;
|
NeedRig++;
|
||||||
|
@ -2362,15 +2370,6 @@ DllExport BOOL APIENTRY Rig_Init()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
PORT->hPTTDevice = PORT->hDevice; // Use same port for PTT
|
PORT->hPTTDevice = PORT->hDevice; // Use same port for PTT
|
||||||
|
|
||||||
|
|
||||||
// Looks like FT847 Needa a "Cat On" Command. If PTC port need to send it here
|
|
||||||
|
|
||||||
if (PORT->PTC && strcmp(PORT->Rigs[0].RigName, "FT847") == 0)
|
|
||||||
{
|
|
||||||
UCHAR CATON[6] = {0,0,0,0,0};
|
|
||||||
SendPTCRadioCommand(PORT->PTC, CATON, 5);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (p = 0; p < NumberofPorts; p++)
|
for (p = 0; p < NumberofPorts; p++)
|
||||||
|
@ -2381,7 +2380,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
int k = 0;
|
int k = 0;
|
||||||
int BitMask;
|
uint64_t BitMask;
|
||||||
struct _EXTPORTDATA * PortEntry;
|
struct _EXTPORTDATA * PortEntry;
|
||||||
|
|
||||||
RIG = &PORT->Rigs[i];
|
RIG = &PORT->Rigs[i];
|
||||||
|
@ -2395,7 +2394,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
||||||
// then those with neither
|
// then those with neither
|
||||||
|
|
||||||
BitMask = RIG->BPQPort;
|
BitMask = RIG->BPQPort;
|
||||||
for (j = 0; j < 32; j++)
|
for (j = 0; j < MAXBPQPORTS; j++)
|
||||||
{
|
{
|
||||||
if (BitMask & 1)
|
if (BitMask & 1)
|
||||||
{
|
{
|
||||||
|
@ -2408,7 +2407,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
BitMask = RIG->BPQPort;
|
BitMask = RIG->BPQPort;
|
||||||
for (j = 0; j < 32; j++)
|
for (j = 0; j < MAXBPQPORTS; j++)
|
||||||
{
|
{
|
||||||
if (BitMask & 1)
|
if (BitMask & 1)
|
||||||
{
|
{
|
||||||
|
@ -2421,7 +2420,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
BitMask = RIG->BPQPort;
|
BitMask = RIG->BPQPort;
|
||||||
for (j = 0; j < 32; j++)
|
for (j = 0; j < MAXBPQPORTS; j++)
|
||||||
{
|
{
|
||||||
if (BitMask & 1)
|
if (BitMask & 1)
|
||||||
{
|
{
|
||||||
|
@ -2703,6 +2702,7 @@ BOOL Rig_Poll()
|
||||||
|
|
||||||
case KENWOOD:
|
case KENWOOD:
|
||||||
case FT2000:
|
case FT2000:
|
||||||
|
case FTDX10:
|
||||||
case FT991A:
|
case FT991A:
|
||||||
case FLEX:
|
case FLEX:
|
||||||
case NMEA:
|
case NMEA:
|
||||||
|
@ -2772,7 +2772,7 @@ int OpenRigCOMMPort(struct RIGPORTINFO * PORT, VOID * Port, int Speed)
|
||||||
if (PORT->remoteSock) // Using WINMORCONTROL
|
if (PORT->remoteSock) // Using WINMORCONTROL
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if (PORT->PortType == FT2000 || PORT->PortType == FT991A || strcmp(PORT->Rigs[0].RigName, "FT847") == 0) // FT2000 and similar seem to need two stop bits
|
if (PORT->PortType == FT2000 || PORT->PortType == FT991A || PORT->PortType == FTDX10 || strcmp(PORT->Rigs[0].RigName, "FT847") == 0) // FT2000 and similar seem to need two stop bits
|
||||||
PORT->hDevice = OpenCOMPort((VOID *)Port, Speed, FALSE, FALSE, PORT->Alerted, TWOSTOPBITS);
|
PORT->hDevice = OpenCOMPort((VOID *)Port, Speed, FALSE, FALSE, PORT->Alerted, TWOSTOPBITS);
|
||||||
else if (PORT->PortType == NMEA)
|
else if (PORT->PortType == NMEA)
|
||||||
PORT->hDevice = OpenCOMPort((VOID *)Port, Speed, FALSE, FALSE, PORT->Alerted, ONESTOPBIT);
|
PORT->hDevice = OpenCOMPort((VOID *)Port, Speed, FALSE, FALSE, PORT->Alerted, ONESTOPBIT);
|
||||||
|
@ -2985,6 +2985,7 @@ void CheckRX(struct RIGPORTINFO * PORT)
|
||||||
|
|
||||||
case KENWOOD:
|
case KENWOOD:
|
||||||
case FT2000:
|
case FT2000:
|
||||||
|
case FTDX10:
|
||||||
case FT991A:
|
case FT991A:
|
||||||
case FLEX:
|
case FLEX:
|
||||||
|
|
||||||
|
@ -3266,7 +3267,7 @@ CheckOtherPorts:
|
||||||
{
|
{
|
||||||
PortRecord = RIG->PortRecord[i];
|
PortRecord = RIG->PortRecord[i];
|
||||||
|
|
||||||
if (PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, 1))
|
if (PortRecord->PORT_EXT_ADDR && PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, 1))
|
||||||
{
|
{
|
||||||
// 1 means can't change - release all
|
// 1 means can't change - release all
|
||||||
|
|
||||||
|
@ -4779,6 +4780,17 @@ Loop:
|
||||||
strcpy(RIG->WEB_MODE, FT991AModes[Mode]);
|
strcpy(RIG->WEB_MODE, FT991AModes[Mode]);
|
||||||
strcpy(RIG->ModeString, RIG->WEB_MODE);
|
strcpy(RIG->ModeString, RIG->WEB_MODE);
|
||||||
}
|
}
|
||||||
|
else if (PORT->PortType == FTDX10)
|
||||||
|
{
|
||||||
|
Mode = Msg[3] - 48;
|
||||||
|
if (Mode > 16)
|
||||||
|
Mode -= 7;
|
||||||
|
|
||||||
|
if (Mode > 15) Mode = 15;
|
||||||
|
SetWindowText(RIG->hMODE, FTDX10Modes[Mode]);
|
||||||
|
strcpy(RIG->WEB_MODE, FTDX10Modes[Mode]);
|
||||||
|
strcpy(RIG->ModeString, RIG->WEB_MODE);
|
||||||
|
}
|
||||||
else if (PORT->PortType == FLEX)
|
else if (PORT->PortType == FLEX)
|
||||||
{
|
{
|
||||||
Mode = atoi(&Msg[3]);
|
Mode = atoi(&Msg[3]);
|
||||||
|
@ -5902,6 +5914,13 @@ PortFound:
|
||||||
PORT->PortType = FT2000;
|
PORT->PortType = FT2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FTDX10 seems to be different to most other YAESU types
|
||||||
|
|
||||||
|
if (strcmp(RigName, "FTDX10") == 0 && PORT->PortType == YAESU)
|
||||||
|
{
|
||||||
|
PORT->PortType = FTDX10;
|
||||||
|
}
|
||||||
|
|
||||||
// FT991A seems to be different to most other YAESU types
|
// FT991A seems to be different to most other YAESU types
|
||||||
|
|
||||||
if (strcmp(RigName, "FT991A") == 0 && PORT->PortType == YAESU)
|
if (strcmp(RigName, "FT991A") == 0 && PORT->PortType == YAESU)
|
||||||
|
@ -6193,7 +6212,7 @@ CheckOtherParams:
|
||||||
RIG->defaultFreq = atoi(&ptr[12]);
|
RIG->defaultFreq = atoi(&ptr[12]);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (atoi(ptr))
|
else if (atoi(ptr) || ptr[2] == ':')
|
||||||
break; // Not scan freq oe timeband, so see if another param
|
break; // Not scan freq oe timeband, so see if another param
|
||||||
|
|
||||||
ptr = strtok_s(NULL, " \t\n\r", &Context);
|
ptr = strtok_s(NULL, " \t\n\r", &Context);
|
||||||
|
@ -6462,7 +6481,7 @@ CheckOtherParams:
|
||||||
strcpy(RIG->PTTOff, "TX0;");
|
strcpy(RIG->PTTOff, "TX0;");
|
||||||
RIG->PTTOffLen = 4;
|
RIG->PTTOffLen = 4;
|
||||||
}
|
}
|
||||||
else if (PORT->PortType == FT991A)
|
else if (PORT->PortType == FT991A || PORT->PortType == FTDX10)
|
||||||
{
|
{
|
||||||
RIG->PollLen = 7;
|
RIG->PollLen = 7;
|
||||||
strcpy(RIG->Poll, "FA;MD0;");
|
strcpy(RIG->Poll, "FA;MD0;");
|
||||||
|
@ -6571,7 +6590,7 @@ CheckScan:
|
||||||
VARAMode[0] = 0;
|
VARAMode[0] = 0;
|
||||||
Dwell = 0.0;
|
Dwell = 0.0;
|
||||||
|
|
||||||
while (strchr(ptr, ':'))
|
while (ptr && strchr(ptr, ':'))
|
||||||
{
|
{
|
||||||
// New TimeBand
|
// New TimeBand
|
||||||
|
|
||||||
|
@ -6593,6 +6612,9 @@ CheckScan:
|
||||||
ptr = strtok_s(NULL, " \t\n\r", &Context);
|
ptr = strtok_s(NULL, " \t\n\r", &Context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ptr == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
if (strchr(ptr, ',')) // New Format
|
if (strchr(ptr, ',')) // New Format
|
||||||
{
|
{
|
||||||
DecodeModePtr(ptr, &Dwell, &Freq, Mode, &PMinLevel, &PMaxLevel, &PacketMode,
|
DecodeModePtr(ptr, &Dwell, &Freq, Mode, &PMinLevel, &PMaxLevel, &PacketMode,
|
||||||
|
@ -6793,6 +6815,24 @@ CheckScan:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FTDX10:
|
||||||
|
|
||||||
|
for (ModeNo = 0; ModeNo < 16; ModeNo++)
|
||||||
|
{
|
||||||
|
if (strlen(Mode) == 1)
|
||||||
|
{
|
||||||
|
if (FTDX10Modes[ModeNo][0] == Mode[0])
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_stricmp(FTDX10Modes[ModeNo], Mode) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case FT100:
|
case FT100:
|
||||||
|
|
||||||
|
@ -7172,7 +7212,7 @@ CheckScan:
|
||||||
{
|
{
|
||||||
FreqPtr[0]->Cmd1Len = sprintf(CmdPtr, "FA%s;MD0%X;FA;MD;", &FreqString[1], ModeNo);
|
FreqPtr[0]->Cmd1Len = sprintf(CmdPtr, "FA%s;MD0%X;FA;MD;", &FreqString[1], ModeNo);
|
||||||
}
|
}
|
||||||
else if (PORT->PortType == FT991A)
|
else if (PORT->PortType == FT991A || PORT->PortType == FTDX10)
|
||||||
{
|
{
|
||||||
FreqPtr[0]->Cmd1Len = sprintf(CmdPtr, "FA%s;MD0%X;FA;MD0;", &FreqString, ModeNo);
|
FreqPtr[0]->Cmd1Len = sprintf(CmdPtr, "FA%s;MD0%X;FA;MD0;", &FreqString, ModeNo);
|
||||||
}
|
}
|
||||||
|
@ -7330,7 +7370,7 @@ VOID SetupScanInterLockGroups(struct RIGINFO *RIG)
|
||||||
if (TNC->RXRadio == Interlock)
|
if (TNC->RXRadio == Interlock)
|
||||||
{
|
{
|
||||||
int p = PortRecord->PORTNUMBER;
|
int p = PortRecord->PORTNUMBER;
|
||||||
RIG->BPQPort |= (1 << p);
|
RIG->BPQPort |= ((uint64_t)1 << p);
|
||||||
sprintf(PortString, "%s,%d", PortString, p);
|
sprintf(PortString, "%s,%d", PortString, p);
|
||||||
TNC->RIG = RIG;
|
TNC->RIG = RIG;
|
||||||
|
|
||||||
|
@ -7340,7 +7380,7 @@ VOID SetupScanInterLockGroups(struct RIGINFO *RIG)
|
||||||
if (TNC->TXRadio == Interlock && TNC->TXRadio != TNC->RXRadio)
|
if (TNC->TXRadio == Interlock && TNC->TXRadio != TNC->RXRadio)
|
||||||
{
|
{
|
||||||
int p = PortRecord->PORTNUMBER;
|
int p = PortRecord->PORTNUMBER;
|
||||||
RIG->BPQPort |= (1 << p);
|
RIG->BPQPort |= ((uint64_t)1 << p);
|
||||||
sprintf(TxPortString, "%s,%d", TxPortString, p);
|
sprintf(TxPortString, "%s,%d", TxPortString, p);
|
||||||
TNC->TXRIG = RIG;
|
TNC->TXRIG = RIG;
|
||||||
|
|
||||||
|
@ -9912,7 +9952,7 @@ void ProcessSDRANGELFrame(struct RIGPORTINFO * PORT)
|
||||||
|
|
||||||
// As we mess with the message, save a copy and restore for each Rig
|
// As we mess with the message, save a copy and restore for each Rig
|
||||||
|
|
||||||
save = strdup(ptr3);
|
save = _strdup(ptr3);
|
||||||
|
|
||||||
for (i = 0; i < PORT->ConfiguredRigs; i++)
|
for (i = 0; i < PORT->ConfiguredRigs; i++)
|
||||||
{
|
{
|
||||||
|
|
14
SCSPactor.c
14
SCSPactor.c
|
@ -122,6 +122,7 @@ VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len);
|
||||||
void SCSTryToSendDATA(struct TNCINFO * TNC, int Stream);
|
void SCSTryToSendDATA(struct TNCINFO * TNC, int Stream);
|
||||||
VOID UpdateMHwithDigis(struct TNCINFO * TNC, UCHAR * Call, char Mode, char Direction);
|
VOID UpdateMHwithDigis(struct TNCINFO * TNC, UCHAR * Call, char Mode, char Direction);
|
||||||
int standardParams(struct TNCINFO * TNC, char * buf);
|
int standardParams(struct TNCINFO * TNC, char * buf);
|
||||||
|
int SendPTCRadioCommand(struct TNCINFO * TNC, char * Block, int Length);
|
||||||
|
|
||||||
#define FEND 0xC0 // KISS CONTROL CODES
|
#define FEND 0xC0 // KISS CONTROL CODES
|
||||||
#define FESC 0xDB
|
#define FESC 0xDB
|
||||||
|
@ -3180,9 +3181,22 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen)
|
||||||
{
|
{
|
||||||
// Just come up
|
// Just come up
|
||||||
|
|
||||||
|
struct RIGPORTINFO * PORT;
|
||||||
|
|
||||||
TNC->TNCOK = TRUE;
|
TNC->TNCOK = TRUE;
|
||||||
sprintf(TNC->WEB_COMMSSTATE,"%s TNC link OK", TNC->PortRecord->PORTCONTROL.SerialPortName);
|
sprintf(TNC->WEB_COMMSSTATE,"%s TNC link OK", TNC->PortRecord->PORTCONTROL.SerialPortName);
|
||||||
SetWindowText(TNC->xIDC_COMMSSTATE, TNC->WEB_COMMSSTATE);
|
SetWindowText(TNC->xIDC_COMMSSTATE, TNC->WEB_COMMSSTATE);
|
||||||
|
|
||||||
|
// If using an FT847 on PTC Port it needa a "Cat On" Command. Send it here
|
||||||
|
|
||||||
|
PORT = TNC->RIG->PORT;
|
||||||
|
|
||||||
|
if (PORT->PTC && strcmp(PORT->Rigs[0].RigName, "FT847") == 0)
|
||||||
|
{
|
||||||
|
UCHAR CATON[6] = {0,0,0,0,0};
|
||||||
|
SendPTCRadioCommand(PORT->PTC, CATON, 5);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Stream = RealStream = Msg[2];
|
Stream = RealStream = Msg[2];
|
||||||
|
|
|
@ -10,14 +10,14 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define KVers 6,0,24,16
|
#define KVers 6,0,24,22
|
||||||
#define KVerstring "6.0.24.16\0"
|
#define KVerstring "6.0.24.22\0"
|
||||||
|
|
||||||
#ifdef CKernel
|
#ifdef CKernel
|
||||||
|
|
||||||
#define Vers KVers
|
#define Vers KVers
|
||||||
#define Verstring KVerstring
|
#define Verstring KVerstring
|
||||||
#define Datestring "October 2023"
|
#define Datestring "November 2023"
|
||||||
#define VerComments "G8BPQ Packet Switch (C Version)" KVerstring
|
#define VerComments "G8BPQ Packet Switch (C Version)" KVerstring
|
||||||
#define VerCopyright "Copyright © 2001-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 2001-2023 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "BPQ32 Switch\0"
|
#define VerDesc "BPQ32 Switch\0"
|
||||||
|
|
|
@ -2773,6 +2773,9 @@ VOID SaveNewMessage(struct HTTPConnectionInfo * Session, char * MsgPtr, char * R
|
||||||
|
|
||||||
BuildNNTPList(Msg); // Build NNTP Groups list
|
BuildNNTPList(Msg); // Build NNTP Groups list
|
||||||
|
|
||||||
|
if (Msg->status != 'H' && Msg->type == 'B' && memcmp(Msg->fbbs, zeros, NBMASK) != 0)
|
||||||
|
Msg->status = '$'; // Has forwarding
|
||||||
|
|
||||||
if (EnableUI)
|
if (EnableUI)
|
||||||
SendMsgUI(Msg);
|
SendMsgUI(Msg);
|
||||||
|
|
||||||
|
@ -3698,6 +3701,9 @@ VOID WriteOneRecipient(struct MsgInfo * Msg, WebMailInfo * WebMail, int MsgLen,
|
||||||
|
|
||||||
MatchMessagetoBBSList(Msg, 0);
|
MatchMessagetoBBSList(Msg, 0);
|
||||||
|
|
||||||
|
if (Msg->status != 'H' && Msg->type == 'B' && memcmp(Msg->fbbs, zeros, NBMASK) != 0)
|
||||||
|
Msg->status = '$'; // Has forwarding
|
||||||
|
|
||||||
BuildNNTPList(Msg); // Build NNTP Groups list
|
BuildNNTPList(Msg); // Build NNTP Groups list
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4278,6 +4284,9 @@ VOID BuildMessageFromHTMLInput(struct HTTPConnectionInfo * Session, char * Reply
|
||||||
|
|
||||||
MatchMessagetoBBSList(Msg, 0);
|
MatchMessagetoBBSList(Msg, 0);
|
||||||
|
|
||||||
|
if (Msg->status != 'H' && Msg->type == 'B' && memcmp(Msg->fbbs, zeros, NBMASK) != 0)
|
||||||
|
Msg->status = '$'; // Has forwarding
|
||||||
|
|
||||||
BuildNNTPList(Msg); // Build NNTP Groups list
|
BuildNNTPList(Msg); // Build NNTP Groups list
|
||||||
|
|
||||||
SaveMessageDatabase();
|
SaveMessageDatabase();
|
||||||
|
|
40
WinRPR.c
40
WinRPR.c
|
@ -106,6 +106,7 @@ int ConnecttoWinRPR(int port);
|
||||||
|
|
||||||
BOOL KillOldTNC(char * Path);
|
BOOL KillOldTNC(char * Path);
|
||||||
int KillTNC(struct TNCINFO * TNC);
|
int KillTNC(struct TNCINFO * TNC);
|
||||||
|
void CountRestarts(struct TNCINFO * TNC);
|
||||||
|
|
||||||
static BOOL RestartTNC(struct TNCINFO * TNC)
|
static BOOL RestartTNC(struct TNCINFO * TNC)
|
||||||
{
|
{
|
||||||
|
@ -789,16 +790,15 @@ void * WinRPRExtInit(EXTPORTDATA * PortEntry)
|
||||||
return ExtProc;
|
return ExtProc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (TNC->AutoStartDelay == 0)
|
||||||
|
TNC->AutoStartDelay = 2000;
|
||||||
|
|
||||||
sprintf(msg,"WinRPR Host %s %d", TNC->HostName, htons(TNC->destaddr.sin_port));
|
sprintf(msg,"WinRPR Host %s %d", TNC->HostName, htons(TNC->destaddr.sin_port));
|
||||||
WritetoConsoleLocal(msg);
|
WritetoConsoleLocal(msg);
|
||||||
|
|
||||||
TNC->Port = port;
|
TNC->Port = port;
|
||||||
TNC->Hardware = H_WINRPR;
|
TNC->Hardware = H_WINRPR;
|
||||||
|
|
||||||
if (TNC->ProgramPath)
|
|
||||||
TNC->WeStartedTNC = RestartTNC(TNC);
|
|
||||||
|
|
||||||
|
|
||||||
// Set up DED addresses for streams
|
// Set up DED addresses for streams
|
||||||
|
|
||||||
for (Stream = 0; Stream <= MaxStreams; Stream++)
|
for (Stream = 0; Stream <= MaxStreams; Stream++)
|
||||||
|
@ -887,6 +887,9 @@ void * WinRPRExtInit(EXTPORTDATA * PortEntry)
|
||||||
TNC->WEB_MODE = zalloc(20);
|
TNC->WEB_MODE = zalloc(20);
|
||||||
TNC->WEB_BUFFERS = zalloc(100);
|
TNC->WEB_BUFFERS = zalloc(100);
|
||||||
TNC->WEB_TRAFFIC = zalloc(100);
|
TNC->WEB_TRAFFIC = zalloc(100);
|
||||||
|
TNC->WEB_RESTARTTIME = zalloc(100);
|
||||||
|
TNC->WEB_RESTARTS = zalloc(100);
|
||||||
|
|
||||||
|
|
||||||
#ifndef LINBPQ
|
#ifndef LINBPQ
|
||||||
|
|
||||||
|
@ -1451,14 +1454,9 @@ VOID WinRPRThread(void * portptr)
|
||||||
// can only check if running on local host
|
// can only check if running on local host
|
||||||
|
|
||||||
TNC->PID = GetListeningPortsPID(TNC->destaddr.sin_port);
|
TNC->PID = GetListeningPortsPID(TNC->destaddr.sin_port);
|
||||||
if (TNC->PID == 0)
|
|
||||||
{
|
|
||||||
TNC->CONNECTING = FALSE;
|
|
||||||
sprintf(TNC->WEB_COMMSSTATE, "Waiting for TNC");
|
|
||||||
MySetWindowText(TNC->xIDC_COMMSSTATE, TNC->WEB_COMMSSTATE);
|
|
||||||
|
|
||||||
return; // Not listening so no point trying to connect
|
if (TNC->PID == 0)
|
||||||
}
|
goto TNCNotRunning;
|
||||||
|
|
||||||
// Get the File Name in case we want to restart it.
|
// Get the File Name in case we want to restart it.
|
||||||
|
|
||||||
|
@ -1480,17 +1478,25 @@ VOID WinRPRThread(void * portptr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
goto TNCRunning;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// // If we started the TNC make sure it is still running.
|
TNCNotRunning:
|
||||||
|
|
||||||
// if (!IsProcess(TNC->PID))
|
// Not running or can't check, restart if we have a path
|
||||||
// {
|
|
||||||
// RestartTNC(TNC);
|
|
||||||
// Sleep(3000);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
if (TNC->ProgramPath)
|
||||||
|
{
|
||||||
|
Consoleprintf("Trying to (re)start TNC %s", TNC->ProgramPath);
|
||||||
|
|
||||||
|
if (RestartTNC(TNC))
|
||||||
|
CountRestarts(TNC);
|
||||||
|
|
||||||
|
Sleep(TNC->AutoStartDelay);
|
||||||
|
}
|
||||||
|
|
||||||
|
TNCRunning:
|
||||||
|
|
||||||
TNC->destaddr.sin_addr.s_addr = inet_addr(TNC->HostName);
|
TNC->destaddr.sin_addr.s_addr = inet_addr(TNC->HostName);
|
||||||
TNC->Datadestaddr.sin_addr.s_addr = inet_addr(TNC->HostName);
|
TNC->Datadestaddr.sin_addr.s_addr = inet_addr(TNC->HostName);
|
||||||
|
|
2
cMain.c
2
cMain.c
|
@ -2213,7 +2213,7 @@ L2Packet:
|
||||||
|
|
||||||
// Bridge if requested
|
// Bridge if requested
|
||||||
|
|
||||||
for (toPort = 1; toPort <= NUMBEROFPORTS; toPort++)
|
for (toPort = 1; toPort <= MaxBPQPortNo; toPort++)
|
||||||
{
|
{
|
||||||
if (BridgeMap[CURRENTPORT][toPort])
|
if (BridgeMap[CURRENTPORT][toPort])
|
||||||
{
|
{
|
||||||
|
|
|
@ -158,7 +158,7 @@ struct CONFIGTABLE
|
||||||
char C_IDMSG[512];
|
char C_IDMSG[512];
|
||||||
char C_CTEXT[512];
|
char C_CTEXT[512];
|
||||||
char C_INFOMSG[2048];
|
char C_INFOMSG[2048];
|
||||||
UCHAR CfgBridgeMap[MaxBPQPortNo][MaxBPQPortNo];
|
UCHAR CfgBridgeMap[MaxBPQPortNo + 1][MaxBPQPortNo + 1];
|
||||||
struct ROUTECONFIG C_ROUTE[MaxLockedRoutes];
|
struct ROUTECONFIG C_ROUTE[MaxLockedRoutes];
|
||||||
struct APPLCONFIG C_APPL[NumberofAppls];
|
struct APPLCONFIG C_APPL[NumberofAppls];
|
||||||
struct PORTCONFIG C_PORT[MaxBPQPortNo + 4];
|
struct PORTCONFIG C_PORT[MaxBPQPortNo + 4];
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
2021/03/24 16:23:50 - 0 Active Nodes
|
|
||||||
|
|
|
|
@ -67,7 +67,7 @@ struct RIGINFO
|
||||||
|
|
||||||
void * BPQtoRADIO_Q; // Frames from switch for radio
|
void * BPQtoRADIO_Q; // Frames from switch for radio
|
||||||
|
|
||||||
UINT BPQPort; // Port this radio is attached to. Bit Map, as may be more than one port controlling radio
|
uint64_t BPQPort; // Port this radio is attached to. Bit Map, as may be more than one port controlling radio
|
||||||
// int PortNum; // Number of port that defined this rig
|
// int PortNum; // Number of port that defined this rig
|
||||||
int Interlock; // Interlock group for this Radio
|
int Interlock; // Interlock group for this Radio
|
||||||
int IC735; // Old ICOM with shorter freq message
|
int IC735; // Old ICOM with shorter freq message
|
||||||
|
@ -202,6 +202,7 @@ struct RIGINFO
|
||||||
//G7TAJ
|
//G7TAJ
|
||||||
#define SDRANGEL 19
|
#define SDRANGEL 19
|
||||||
//G7TAJ
|
//G7TAJ
|
||||||
|
#define FTDX10 20
|
||||||
|
|
||||||
// Yease seem to have lots of variants of the same model
|
// Yease seem to have lots of variants of the same model
|
||||||
|
|
||||||
|
|
14
upnp.c
14
upnp.c
|
@ -39,13 +39,23 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "miniupnpc.h"
|
#include "miniupnpc.h"
|
||||||
#include "upnperrors.h"
|
#include "upnperrors.h"
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#else
|
#endif
|
||||||
|
#ifdef LINBPQ
|
||||||
|
#ifndef MACBPQ
|
||||||
|
#ifndef WIN32
|
||||||
#include <miniupnpc/upnpcommands.h>
|
#include <miniupnpc/upnpcommands.h>
|
||||||
#include <miniupnpc/miniupnpc.h>
|
#include <miniupnpc/miniupnpc.h>
|
||||||
#include <miniupnpc/upnperrors.h>
|
#include <miniupnpc/upnperrors.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef MACBPQ
|
||||||
|
#include </usr/local/Cellar/miniupnpc/2.2.5/include/miniupnpc/upnpcommands.h>
|
||||||
|
#include </usr/local/Cellar/miniupnpc/2.2.5/include/miniupnpc/miniupnpc.h>
|
||||||
|
#include </usr/local/Cellar/miniupnpc/2.2.5/include/miniupnpc/upnperrors.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
int AddMap(char * controlURL, char * eport, char * iport, char * proto);
|
int AddMap(char * controlURL, char * eport, char * iport, char * proto);
|
||||||
int DeleteMap(char * controlURL, char * eport, char * iport, char * proto);
|
int DeleteMap(char * controlURL, char * eport, char * iport, char * proto);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,187 @@
|
||||||
|
// Includes code from MiniUPnPc, used subject to the following conditions:
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
MiniUPnPc
|
||||||
|
Copyright (c) 2005-2020, Thomas BERNARD
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* The name of the author may not be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MINIUPNP_STATICLIB
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include "upnpcommands.h"
|
||||||
|
#include "miniupnpc.h"
|
||||||
|
#include "upnperrors.h"
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
|
#include <miniupnpc/upnpcommands.h>
|
||||||
|
#include <miniupnpc/miniupnpc.h>
|
||||||
|
#include <miniupnpc/upnperrors.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int AddMap(char * controlURL, char * eport, char * iport, char * proto);
|
||||||
|
int DeleteMap(char * controlURL, char * eport, char * iport, char * proto);
|
||||||
|
|
||||||
|
void Consoleprintf(const char * format, ...);
|
||||||
|
|
||||||
|
struct UPNP
|
||||||
|
{
|
||||||
|
struct UPNP * Next;
|
||||||
|
char * Protocol;
|
||||||
|
char * LANport;
|
||||||
|
char * WANPort;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct UPNP * UPNPConfig;
|
||||||
|
|
||||||
|
char * controlURL = 0;
|
||||||
|
char * servicetype = 0;
|
||||||
|
char iaddr[] = "IP";
|
||||||
|
char * inClient = NULL;
|
||||||
|
#ifdef LINBPQ
|
||||||
|
char desc[] = "LinBPQ ";
|
||||||
|
#else
|
||||||
|
char desc[] = "BPQ32 ";
|
||||||
|
#endif
|
||||||
|
char * remoteHost = NULL;
|
||||||
|
char * leaseDuration = NULL;
|
||||||
|
|
||||||
|
struct UPNPDev * devlist = 0;
|
||||||
|
char lanaddr[64] = "unset"; /* my ip address on the LAN */
|
||||||
|
struct UPNPUrls urls;
|
||||||
|
struct IGDdatas data;
|
||||||
|
|
||||||
|
int i;
|
||||||
|
const char * rootdescurl = 0;
|
||||||
|
const char * multicastif = 0;
|
||||||
|
const char * minissdpdpath = 0;
|
||||||
|
int localport = UPNP_LOCAL_PORT_ANY;
|
||||||
|
int retcode = 0;
|
||||||
|
int error = 0;
|
||||||
|
int ipv6 = 0;
|
||||||
|
int ignore = 0;
|
||||||
|
unsigned char ttl = 2;
|
||||||
|
|
||||||
|
|
||||||
|
int upnpInit()
|
||||||
|
{
|
||||||
|
struct UPNP * Config = UPNPConfig;
|
||||||
|
int i;
|
||||||
|
#ifdef WIN32
|
||||||
|
WSADATA wsaData;
|
||||||
|
int nResult = WSAStartup(MAKEWORD(2,2), &wsaData);
|
||||||
|
if(nResult != NO_ERROR)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "WSAStartup() failed.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
while (Config)
|
||||||
|
{
|
||||||
|
if (devlist == NULL)
|
||||||
|
{
|
||||||
|
devlist = upnpDiscover(2000, multicastif, minissdpdpath, localport, ipv6, ttl, &error);
|
||||||
|
|
||||||
|
if (devlist == NULL)
|
||||||
|
{
|
||||||
|
Consoleprintf("Failed to find a UPNP device");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
|
||||||
|
}
|
||||||
|
|
||||||
|
AddMap(devlist->descURL, Config->LANport, Config->WANPort, Config->Protocol);
|
||||||
|
Config = Config->Next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int upnpClose()
|
||||||
|
{
|
||||||
|
struct UPNP * Config = UPNPConfig;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
while (Config)
|
||||||
|
{
|
||||||
|
if (devlist == NULL)
|
||||||
|
{
|
||||||
|
devlist = upnpDiscover(2000, multicastif, minissdpdpath, localport, ipv6, ttl, &error);
|
||||||
|
|
||||||
|
if (devlist == NULL)
|
||||||
|
{
|
||||||
|
Consoleprintf("Failed to find a UPNP device");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteMap(devlist->descURL, Config->LANport, Config->WANPort, Config->Protocol);
|
||||||
|
Config = Config->Next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int AddMap(char * controlURL, char * eport, char * iport, char * proto)
|
||||||
|
{
|
||||||
|
int r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
|
||||||
|
eport, iport, lanaddr, desc,
|
||||||
|
proto, remoteHost, leaseDuration);
|
||||||
|
|
||||||
|
if (r != UPNPCOMMAND_SUCCESS)
|
||||||
|
{
|
||||||
|
Consoleprintf("UPNP AddPortMapping(%s, %s, %s) failed with code %d (%s)", eport, iport, lanaddr, r, strupnperror(r));
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
Consoleprintf("UPNP AddPortMapping(%s, %s, %s) Succeeded", eport, iport, lanaddr, r);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DeleteMap(char * controlURL, char * eport, char * iport, char * proto)
|
||||||
|
{
|
||||||
|
int r = UPNP_DeletePortMapping(urls.controlURL, data.first.servicetype, eport, proto, remoteHost);
|
||||||
|
|
||||||
|
if(r != UPNPCOMMAND_SUCCESS)
|
||||||
|
{
|
||||||
|
Consoleprintf("UPNP DeletePortMapping(%s, %s, %s) failed with code %d (%s)", eport, iport, lanaddr, r, strupnperror(r));
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
Consoleprintf("UPNP DeletePortMapping(%s, %s, %s) Succeeded", eport, iport, lanaddr, r);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue