New upstream version 6.0.24.22
This commit is contained in:
parent
120df97dc7
commit
2ccd083256
|
@ -1581,9 +1581,9 @@ OK:
|
|||
|
||||
// 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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
time((time_t *)&Stamp);
|
||||
|
||||
Stamp = Stamp % 86400; // Secs into day
|
||||
Stamp = time(NULL) % 86400; // Secs into day
|
||||
HH = Stamp / 3600;
|
||||
|
||||
Stamp -= HH * 3600;
|
||||
|
@ -370,6 +368,12 @@ VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port)
|
|||
|
||||
while (msglen > 0)
|
||||
{
|
||||
if (msglen < 10)
|
||||
{
|
||||
Debugprintf("Corrupt INP3 Message");
|
||||
return;
|
||||
}
|
||||
|
||||
memset(alias, ' ', 6);
|
||||
memcpy(axcall, ptr1, 7);
|
||||
|
||||
|
|
|
@ -1122,6 +1122,7 @@
|
|||
|
||||
// Add FBB reject.sys style filters (3)
|
||||
// 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);
|
||||
}
|
||||
|
||||
if (mtxparam & 0x80)
|
||||
CheckMenuItem(hMonCfgMenu,MONLOCALTIME,MF_CHECKED);
|
||||
else
|
||||
CheckMenuItem(hMonCfgMenu,MONLOCALTIME,MF_UNCHECKED);
|
||||
|
||||
if (mtxparam & 1)
|
||||
CheckMenuItem(hMonCfgMenu,BPQMTX,MF_CHECKED);
|
||||
else
|
||||
|
@ -1733,6 +1738,10 @@ LRESULT CALLBACK MonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
|
|||
|
||||
break;
|
||||
}
|
||||
case MONLOCALTIME:
|
||||
|
||||
ToggleLocalTime();
|
||||
break;
|
||||
|
||||
case BPQMTX:
|
||||
|
||||
|
@ -4266,6 +4275,24 @@ int ToggleMTX(HWND hWnd)
|
|||
|
||||
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)
|
||||
{
|
||||
|
|
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)
|
||||
// Make sure CMD bit is set on UI frames
|
||||
// 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
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#define CHATTERM 1179
|
||||
#define IDM_CLOSEWINDOW 1180
|
||||
#define MONITORAPRS 1181
|
||||
#define MONLOCALTIME 1182
|
||||
#define MON_UI_ONLY 40006
|
||||
#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);
|
||||
Debugprintf("Map Update Params - %s", Params);
|
||||
|
||||
Debugprintf("Map Update failed - %s", Buffer);
|
||||
}
|
||||
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];
|
||||
|
||||
int IPPortMask = 0;
|
||||
uint64_t IPPortMask = 0;
|
||||
|
||||
IPSTATS IPStats = {0};
|
||||
|
||||
|
@ -1548,7 +1548,8 @@ VOID ProcessEthIPMsg(PETHMSG Buffer)
|
|||
|
||||
VOID ProcessEthARPMsg(PETHARP arpptr, BOOL FromTAP)
|
||||
{
|
||||
int i=0, Mask=IPPortMask;
|
||||
int i=0;
|
||||
uint64_t Mask=IPPortMask;
|
||||
PARPDATA Arp;
|
||||
PROUTEENTRY Route;
|
||||
BOOL Found;
|
||||
|
@ -1748,7 +1749,7 @@ ProxyARPReply:
|
|||
memset(AXARPREQMSG.TARGETHWADDR, 0, 7);
|
||||
AXARPREQMSG.ARPOPCODE = 0x0100;
|
||||
|
||||
for (i=1; i<=NUMBEROFPORTS; i++)
|
||||
for (i = 1; i <= MaxBPQPortNo; i++)
|
||||
{
|
||||
if (Mask & 1)
|
||||
Send_AX_Datagram((PMESSAGE)&AXARPREQMSG, 46, i, QST);
|
||||
|
@ -1847,7 +1848,8 @@ SendBack:
|
|||
|
||||
VOID ProcessAXARPMsg(PAXARP arpptr)
|
||||
{
|
||||
int i=0, Mask=IPPortMask;
|
||||
int i=0;
|
||||
uint64_t Mask=IPPortMask;
|
||||
PARPDATA Arp;
|
||||
PROUTEENTRY Route;
|
||||
|
||||
|
@ -1954,7 +1956,7 @@ AXProxyARPReply:
|
|||
AXARPREQMSG.TARGETIPADDR = arpptr->TARGETIPADDR;
|
||||
AXARPREQMSG.SENDIPADDR = arpptr->SENDIPADDR;
|
||||
|
||||
for (i=1; i<=NUMBEROFPORTS; i++)
|
||||
for (i=1; i<=MaxBPQPortNo; i++)
|
||||
{
|
||||
if (i != arpptr->MSGHDDR.PORT)
|
||||
if (Mask & 1)
|
||||
|
@ -3281,7 +3283,7 @@ static BOOL ReadConfigFile()
|
|||
|
||||
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;
|
||||
BOOL NATTAP = FALSE;
|
||||
int i;
|
||||
|
@ -3447,16 +3449,28 @@ static int ProcessLine(char * buf)
|
|||
|
||||
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 > NUMBEROFPORTS) return FALSE;
|
||||
|
||||
IPPortMask |= 1 << (i-1);
|
||||
p_port = strtok(NULL, " ,\t\n\r");
|
||||
PORTVEC = (struct _EXTPORTDATA * )GetPortTableEntryFromPortNum(i);
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
#include "bpqtermmdi.h"
|
||||
#include "BpqTermMDI.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
@ -241,6 +241,7 @@ BEGIN
|
|||
END
|
||||
POPUP "Monitor"
|
||||
BEGIN
|
||||
MENUITEM "Use Local Time", MONLOCALTIME
|
||||
MENUITEM "Monitor TX", BPQMTX
|
||||
MENUITEM "Monitor Supervisory", BPQMCOM
|
||||
MENUITEM "Monitor UI Only", MON_UI_ONLY
|
||||
|
@ -276,13 +277,13 @@ INCOMINGCALL WAVE MOVEABLE PURE "Ring.wav"
|
|||
BEGIN
|
||||
"kernelresource.h\0"
|
||||
"""\r\n"
|
||||
"bpqtermmdi.h\0"
|
||||
"BpqTermMDI.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"#include ""bpqtermmdi.h""\r\n"
|
||||
"#include ""BpqTermMDI.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
|
|
2
L4Code.c
2
L4Code.c
|
@ -115,7 +115,7 @@ VOID NETROMMSG(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG)
|
|||
{
|
||||
// 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);
|
||||
return;
|
||||
}
|
||||
|
|
2
LinBPQ.c
2
LinBPQ.c
|
@ -1581,8 +1581,8 @@ int main(int argc, char * argv[])
|
|||
{
|
||||
if (GenerateTrafficReport && (LastTrafficTime + 86400) < NOW)
|
||||
{
|
||||
LastTrafficTime = NOW;
|
||||
CreateBBSTrafficReport();
|
||||
LastTrafficTime = NOW;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,6 +74,7 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>D:\linbpq</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(Configuration)\</OutDir>
|
||||
|
@ -117,10 +118,10 @@
|
|||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<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>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
|
@ -215,6 +216,7 @@
|
|||
<ClCompile Include="FBBRoutines.c" />
|
||||
<ClCompile Include="FLDigi.c" />
|
||||
<ClCompile Include="FreeDATA.c" />
|
||||
<ClCompile Include="getopt.c" />
|
||||
<ClCompile Include="HALDriver.c" />
|
||||
<ClCompile Include="HanksRT.c" />
|
||||
<ClCompile Include="HFCommon.c" />
|
||||
|
|
|
@ -315,6 +315,9 @@
|
|||
<ClCompile Include="WPRoutines.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="getopt.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="png.h">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<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>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
|
|
|
@ -634,7 +634,7 @@ char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen)
|
|||
// If an INP3 RIF (type <> UI) decode as such
|
||||
|
||||
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);
|
||||
|
||||
|
|
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 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 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 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;
|
||||
|
||||
|
||||
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);
|
||||
|
||||
|
@ -564,6 +565,7 @@ VOID Rig_PTTEx(struct RIGINFO * RIG, BOOL PTTState, struct TNCINFO * TNC)
|
|||
case ICOM:
|
||||
case KENWOOD:
|
||||
case FT2000:
|
||||
case FTDX10:
|
||||
case FT991A:
|
||||
case FLEX:
|
||||
case NMEA:
|
||||
|
@ -782,7 +784,7 @@ int Rig_Command(TRANSPORTENTRY * Session, char * Command)
|
|||
{
|
||||
RIG = &PORT->Rigs[i];
|
||||
|
||||
if (RIG->BPQPort & (1 << Port))
|
||||
if (RIG->BPQPort & ((uint64_t)1 << Port))
|
||||
goto portok;
|
||||
}
|
||||
}
|
||||
|
@ -1285,6 +1287,7 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
|||
case KENWOOD:
|
||||
case FT991A:
|
||||
case FT2000:
|
||||
case FTDX10:
|
||||
case FLEX:
|
||||
case NMEA:
|
||||
|
||||
|
@ -1870,6 +1873,7 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
|||
|
||||
case KENWOOD:
|
||||
case FT2000:
|
||||
case FTDX10:
|
||||
case FT991A:
|
||||
case FLEX:
|
||||
|
||||
|
@ -1885,6 +1889,10 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
|||
if (_stricmp(FT2000Modes[ModeNo], Mode) == 0)
|
||||
break;
|
||||
|
||||
if (PORT->PortType == FTDX10)
|
||||
if (_stricmp(FTDX10Modes[ModeNo], Mode) == 0)
|
||||
break;
|
||||
|
||||
if (PORT->PortType == FT991A)
|
||||
if (_stricmp(FT991AModes[ModeNo], Mode) == 0)
|
||||
break;
|
||||
|
@ -1925,8 +1933,8 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
|
|||
if (PORT->PortType == FT2000)
|
||||
FreqPtr->Cmd1Len = sprintf(Poll, "FA%s;MD0%X;FA;MD;", &FreqString[1], ModeNo);
|
||||
else
|
||||
if (PORT->PortType == FT991A)
|
||||
FreqPtr->Cmd1Len = sprintf(Poll, "FA%s;MD0%X;FA;MD;", &FreqString, ModeNo);
|
||||
if (PORT->PortType == FT991A || PORT->PortType == FTDX10)
|
||||
FreqPtr->Cmd1Len = sprintf(Poll, "FA%s;MD0%X;FA;MD;", FreqString, ModeNo);
|
||||
else
|
||||
if (PORT->PortType == FLEX)
|
||||
FreqPtr->Cmd1Len = sprintf(Poll, "ZZFA00%s;ZZMD%02d;ZZFA;ZZMD;", &FreqString[1], ModeNo);
|
||||
|
@ -2201,12 +2209,12 @@ DllExport BOOL APIENTRY Rig_Init()
|
|||
|
||||
NumberofPorts = 0;
|
||||
|
||||
for (port = 0; port < 32; port++)
|
||||
for (port = 0; port < MAXBPQPORTS; port++)
|
||||
PORTInfo[port] = NULL;
|
||||
|
||||
// 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])
|
||||
NeedRig++;
|
||||
|
@ -2362,15 +2370,6 @@ DllExport BOOL APIENTRY Rig_Init()
|
|||
}
|
||||
else
|
||||
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++)
|
||||
|
@ -2381,7 +2380,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
|||
{
|
||||
int j;
|
||||
int k = 0;
|
||||
int BitMask;
|
||||
uint64_t BitMask;
|
||||
struct _EXTPORTDATA * PortEntry;
|
||||
|
||||
RIG = &PORT->Rigs[i];
|
||||
|
@ -2395,7 +2394,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
|||
// then those with neither
|
||||
|
||||
BitMask = RIG->BPQPort;
|
||||
for (j = 0; j < 32; j++)
|
||||
for (j = 0; j < MAXBPQPORTS; j++)
|
||||
{
|
||||
if (BitMask & 1)
|
||||
{
|
||||
|
@ -2408,7 +2407,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
|||
}
|
||||
|
||||
BitMask = RIG->BPQPort;
|
||||
for (j = 0; j < 32; j++)
|
||||
for (j = 0; j < MAXBPQPORTS; j++)
|
||||
{
|
||||
if (BitMask & 1)
|
||||
{
|
||||
|
@ -2421,7 +2420,7 @@ DllExport BOOL APIENTRY Rig_Init()
|
|||
}
|
||||
|
||||
BitMask = RIG->BPQPort;
|
||||
for (j = 0; j < 32; j++)
|
||||
for (j = 0; j < MAXBPQPORTS; j++)
|
||||
{
|
||||
if (BitMask & 1)
|
||||
{
|
||||
|
@ -2703,6 +2702,7 @@ BOOL Rig_Poll()
|
|||
|
||||
case KENWOOD:
|
||||
case FT2000:
|
||||
case FTDX10:
|
||||
case FT991A:
|
||||
case FLEX:
|
||||
case NMEA:
|
||||
|
@ -2772,7 +2772,7 @@ int OpenRigCOMMPort(struct RIGPORTINFO * PORT, VOID * Port, int Speed)
|
|||
if (PORT->remoteSock) // Using WINMORCONTROL
|
||||
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);
|
||||
else if (PORT->PortType == NMEA)
|
||||
PORT->hDevice = OpenCOMPort((VOID *)Port, Speed, FALSE, FALSE, PORT->Alerted, ONESTOPBIT);
|
||||
|
@ -2985,6 +2985,7 @@ void CheckRX(struct RIGPORTINFO * PORT)
|
|||
|
||||
case KENWOOD:
|
||||
case FT2000:
|
||||
case FTDX10:
|
||||
case FT991A:
|
||||
case FLEX:
|
||||
|
||||
|
@ -3266,7 +3267,7 @@ CheckOtherPorts:
|
|||
{
|
||||
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
|
||||
|
||||
|
@ -4779,6 +4780,17 @@ Loop:
|
|||
strcpy(RIG->WEB_MODE, FT991AModes[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)
|
||||
{
|
||||
Mode = atoi(&Msg[3]);
|
||||
|
@ -5902,6 +5914,13 @@ PortFound:
|
|||
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
|
||||
|
||||
if (strcmp(RigName, "FT991A") == 0 && PORT->PortType == YAESU)
|
||||
|
@ -6193,7 +6212,7 @@ CheckOtherParams:
|
|||
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
|
||||
|
||||
ptr = strtok_s(NULL, " \t\n\r", &Context);
|
||||
|
@ -6462,7 +6481,7 @@ CheckOtherParams:
|
|||
strcpy(RIG->PTTOff, "TX0;");
|
||||
RIG->PTTOffLen = 4;
|
||||
}
|
||||
else if (PORT->PortType == FT991A)
|
||||
else if (PORT->PortType == FT991A || PORT->PortType == FTDX10)
|
||||
{
|
||||
RIG->PollLen = 7;
|
||||
strcpy(RIG->Poll, "FA;MD0;");
|
||||
|
@ -6571,7 +6590,7 @@ CheckScan:
|
|||
VARAMode[0] = 0;
|
||||
Dwell = 0.0;
|
||||
|
||||
while (strchr(ptr, ':'))
|
||||
while (ptr && strchr(ptr, ':'))
|
||||
{
|
||||
// New TimeBand
|
||||
|
||||
|
@ -6593,6 +6612,9 @@ CheckScan:
|
|||
ptr = strtok_s(NULL, " \t\n\r", &Context);
|
||||
}
|
||||
|
||||
if (ptr == 0)
|
||||
break;
|
||||
|
||||
if (strchr(ptr, ',')) // New Format
|
||||
{
|
||||
DecodeModePtr(ptr, &Dwell, &Freq, Mode, &PMinLevel, &PMaxLevel, &PacketMode,
|
||||
|
@ -6793,6 +6815,24 @@ CheckScan:
|
|||
}
|
||||
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:
|
||||
|
||||
|
@ -7172,7 +7212,7 @@ CheckScan:
|
|||
{
|
||||
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);
|
||||
}
|
||||
|
@ -7330,7 +7370,7 @@ VOID SetupScanInterLockGroups(struct RIGINFO *RIG)
|
|||
if (TNC->RXRadio == Interlock)
|
||||
{
|
||||
int p = PortRecord->PORTNUMBER;
|
||||
RIG->BPQPort |= (1 << p);
|
||||
RIG->BPQPort |= ((uint64_t)1 << p);
|
||||
sprintf(PortString, "%s,%d", PortString, p);
|
||||
TNC->RIG = RIG;
|
||||
|
||||
|
@ -7340,7 +7380,7 @@ VOID SetupScanInterLockGroups(struct RIGINFO *RIG)
|
|||
if (TNC->TXRadio == Interlock && TNC->TXRadio != TNC->RXRadio)
|
||||
{
|
||||
int p = PortRecord->PORTNUMBER;
|
||||
RIG->BPQPort |= (1 << p);
|
||||
RIG->BPQPort |= ((uint64_t)1 << p);
|
||||
sprintf(TxPortString, "%s,%d", TxPortString, p);
|
||||
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
|
||||
|
||||
save = strdup(ptr3);
|
||||
save = _strdup(ptr3);
|
||||
|
||||
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 UpdateMHwithDigis(struct TNCINFO * TNC, UCHAR * Call, char Mode, char Direction);
|
||||
int standardParams(struct TNCINFO * TNC, char * buf);
|
||||
int SendPTCRadioCommand(struct TNCINFO * TNC, char * Block, int Length);
|
||||
|
||||
#define FEND 0xC0 // KISS CONTROL CODES
|
||||
#define FESC 0xDB
|
||||
|
@ -3180,9 +3181,22 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen)
|
|||
{
|
||||
// Just come up
|
||||
|
||||
struct RIGPORTINFO * PORT;
|
||||
|
||||
TNC->TNCOK = TRUE;
|
||||
sprintf(TNC->WEB_COMMSSTATE,"%s TNC link OK", TNC->PortRecord->PORTCONTROL.SerialPortName);
|
||||
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];
|
||||
|
|
|
@ -10,14 +10,14 @@
|
|||
|
||||
#endif
|
||||
|
||||
#define KVers 6,0,24,16
|
||||
#define KVerstring "6.0.24.16\0"
|
||||
#define KVers 6,0,24,22
|
||||
#define KVerstring "6.0.24.22\0"
|
||||
|
||||
#ifdef CKernel
|
||||
|
||||
#define Vers KVers
|
||||
#define Verstring KVerstring
|
||||
#define Datestring "October 2023"
|
||||
#define Datestring "November 2023"
|
||||
#define VerComments "G8BPQ Packet Switch (C Version)" KVerstring
|
||||
#define VerCopyright "Copyright © 2001-2023 John Wiseman G8BPQ\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
|
||||
|
||||
if (Msg->status != 'H' && Msg->type == 'B' && memcmp(Msg->fbbs, zeros, NBMASK) != 0)
|
||||
Msg->status = '$'; // Has forwarding
|
||||
|
||||
if (EnableUI)
|
||||
SendMsgUI(Msg);
|
||||
|
||||
|
@ -3698,6 +3701,9 @@ VOID WriteOneRecipient(struct MsgInfo * Msg, WebMailInfo * WebMail, int MsgLen,
|
|||
|
||||
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
|
||||
}
|
||||
|
||||
|
@ -4278,6 +4284,9 @@ VOID BuildMessageFromHTMLInput(struct HTTPConnectionInfo * Session, char * Reply
|
|||
|
||||
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
|
||||
|
||||
SaveMessageDatabase();
|
||||
|
|
40
WinRPR.c
40
WinRPR.c
|
@ -106,6 +106,7 @@ int ConnecttoWinRPR(int port);
|
|||
|
||||
BOOL KillOldTNC(char * Path);
|
||||
int KillTNC(struct TNCINFO * TNC);
|
||||
void CountRestarts(struct TNCINFO * TNC);
|
||||
|
||||
static BOOL RestartTNC(struct TNCINFO * TNC)
|
||||
{
|
||||
|
@ -789,16 +790,15 @@ void * WinRPRExtInit(EXTPORTDATA * PortEntry)
|
|||
return ExtProc;
|
||||
}
|
||||
|
||||
if (TNC->AutoStartDelay == 0)
|
||||
TNC->AutoStartDelay = 2000;
|
||||
|
||||
sprintf(msg,"WinRPR Host %s %d", TNC->HostName, htons(TNC->destaddr.sin_port));
|
||||
WritetoConsoleLocal(msg);
|
||||
|
||||
TNC->Port = port;
|
||||
TNC->Hardware = H_WINRPR;
|
||||
|
||||
if (TNC->ProgramPath)
|
||||
TNC->WeStartedTNC = RestartTNC(TNC);
|
||||
|
||||
|
||||
// Set up DED addresses for streams
|
||||
|
||||
for (Stream = 0; Stream <= MaxStreams; Stream++)
|
||||
|
@ -887,6 +887,9 @@ void * WinRPRExtInit(EXTPORTDATA * PortEntry)
|
|||
TNC->WEB_MODE = zalloc(20);
|
||||
TNC->WEB_BUFFERS = zalloc(100);
|
||||
TNC->WEB_TRAFFIC = zalloc(100);
|
||||
TNC->WEB_RESTARTTIME = zalloc(100);
|
||||
TNC->WEB_RESTARTS = zalloc(100);
|
||||
|
||||
|
||||
#ifndef LINBPQ
|
||||
|
||||
|
@ -1451,14 +1454,9 @@ VOID WinRPRThread(void * portptr)
|
|||
// can only check if running on local host
|
||||
|
||||
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.
|
||||
|
||||
|
@ -1480,17 +1478,25 @@ VOID WinRPRThread(void * portptr)
|
|||
}
|
||||
}
|
||||
}
|
||||
goto TNCRunning;
|
||||
}
|
||||
#endif
|
||||
|
||||
// // If we started the TNC make sure it is still running.
|
||||
TNCNotRunning:
|
||||
|
||||
// if (!IsProcess(TNC->PID))
|
||||
// {
|
||||
// RestartTNC(TNC);
|
||||
// Sleep(3000);
|
||||
// }
|
||||
// Not running or can't check, restart if we have a path
|
||||
|
||||
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->Datadestaddr.sin_addr.s_addr = inet_addr(TNC->HostName);
|
||||
|
|
2
cMain.c
2
cMain.c
|
@ -2213,7 +2213,7 @@ L2Packet:
|
|||
|
||||
// Bridge if requested
|
||||
|
||||
for (toPort = 1; toPort <= NUMBEROFPORTS; toPort++)
|
||||
for (toPort = 1; toPort <= MaxBPQPortNo; toPort++)
|
||||
{
|
||||
if (BridgeMap[CURRENTPORT][toPort])
|
||||
{
|
||||
|
|
|
@ -158,7 +158,7 @@ struct CONFIGTABLE
|
|||
char C_IDMSG[512];
|
||||
char C_CTEXT[512];
|
||||
char C_INFOMSG[2048];
|
||||
UCHAR CfgBridgeMap[MaxBPQPortNo][MaxBPQPortNo];
|
||||
UCHAR CfgBridgeMap[MaxBPQPortNo + 1][MaxBPQPortNo + 1];
|
||||
struct ROUTECONFIG C_ROUTE[MaxLockedRoutes];
|
||||
struct APPLCONFIG C_APPL[NumberofAppls];
|
||||
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
|
||||
|
||||
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 Interlock; // Interlock group for this Radio
|
||||
int IC735; // Old ICOM with shorter freq message
|
||||
|
@ -202,6 +202,7 @@ struct RIGINFO
|
|||
//G7TAJ
|
||||
#define SDRANGEL 19
|
||||
//G7TAJ
|
||||
#define FTDX10 20
|
||||
|
||||
// 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 "upnperrors.h"
|
||||
#include <winsock2.h>
|
||||
#else
|
||||
#endif
|
||||
#ifdef LINBPQ
|
||||
#ifndef MACBPQ
|
||||
#ifndef WIN32
|
||||
#include <miniupnpc/upnpcommands.h>
|
||||
#include <miniupnpc/miniupnpc.h>
|
||||
#include <miniupnpc/upnperrors.h>
|
||||
#include <stdio.h>
|
||||
#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 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