Merge branch 'debian/latest' into raspbian/bullseye

This commit is contained in:
Dave Hibberd 2023-12-08 12:31:56 +00:00
commit 907336da3c
No known key found for this signature in database
GPG Key ID: 03A1FB7A1904771B
35 changed files with 513 additions and 133 deletions

View File

@ -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);

View File

@ -1,2 +0,0 @@
g8bpq
very bad phrase

View File

@ -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);

View File

@ -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)

View File

@ -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)
{

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

60
FormatHTML.cpp Normal file
View File

@ -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);
}

219
FormatHTML.vcproj Normal file
View File

@ -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>

View File

@ -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);
}

View File

@ -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

View File

@ -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;
}

View File

@ -1581,8 +1581,8 @@ int main(int argc, char * argv[])
{
if (GenerateTrafficReport && (LastTrafficTime + 86400) < NOW)
{
LastTrafficTime = NOW;
CreateBBSTrafficReport();
LastTrafficTime = NOW;
}
}
}

View File

View File

@ -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" />

View File

@ -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">

View File

@ -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>

View File

@ -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);

View File

@ -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

View File

@ -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++)
{

View File

@ -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];

View File

@ -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"

View File

@ -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();

View File

@ -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);

View File

@ -2213,7 +2213,7 @@ L2Packet:
// Bridge if requested
for (toPort = 1; toPort <= NUMBEROFPORTS; toPort++)
for (toPort = 1; toPort <= MaxBPQPortNo; toPort++)
{
if (BridgeMap[CURRENTPORT][toPort])
{

View File

@ -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];

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
linbpq (6.0.24.22-1) unstable; urgency=medium
* New Upstream Release
-- Dave Hibberd <d@vehibberd.com> Fri, 08 Dec 2023 12:29:40 +0000
linbpq (6.0.24.16-1~bpo11+1) bullseye; urgency=medium
* Rebuild for bullseye.

View File

View File

@ -1,2 +0,0 @@
2021/03/24 16:23:50 - 0 Active Nodes
|

View File

@ -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

View File

View File

14
upnp.c
View File

@ -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);