New upstream version 6.0.24.16

This commit is contained in:
Dave Hibberd 2023-10-31 22:42:23 +00:00
parent 7b2a99c53b
commit 120df97dc7
52 changed files with 1118 additions and 14099 deletions

View File

@ -55,11 +55,14 @@ struct AGWSocketConnectionInfo
BOOL SocketActive;
BOOL RawFlag;
BOOL MonFlag;
BOOL useLocalTime;
BOOL doNodes;
unsigned char CallSign1[10];
unsigned char CallSign2[10];
BOOL GotHeader;
int MsgDataLength;
struct AGWHeader AGWRXHeader;
unsigned char * MsgData;
};
struct BPQConnectionInfo
@ -75,8 +78,6 @@ struct BPQConnectionInfo
char AGWPorts[1000];
byte AGWMessage[1000];
struct AGWHeader AGWTXHeader;
char SessionList[100];
@ -127,7 +128,7 @@ int DataSocket_Write(struct AGWSocketConnectionInfo * sockptr, SOCKET sock);
int AGWGetSessionKey(char * key, struct AGWSocketConnectionInfo * sockptr);
int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr);
int SendDataToAppl(int Stream, byte * Buffer, int Length);
int InternalAGWDecodeFrame(char * msg, char * buffer, int Stamp, int * FrameType);
int InternalAGWDecodeFrame(char * msg, char * buffer, int Stamp, int * FrameType, int useLocalTime, int doNodes);
int AGWDataSocket_Disconnect( struct AGWSocketConnectionInfo * sockptr);
int SendRawPacket(struct AGWSocketConnectionInfo * sockptr, char *txmsg, int Length);
int ShowApps();
@ -686,7 +687,7 @@ int AGWDoMonitorData()
byte AGWBuffer[1000];
int n;
int Stamp, Frametype;
BOOL RXFlag, NeedAGW;
BOOL RXFlag;
// Look for Monitor Data
@ -731,24 +732,16 @@ int AGWDoMonitorData()
RXFlag = TRUE;
}
NeedAGW = FALSE;
// Can now have different mon flags per connection, so need to run decode for each socket
for (n = 1; n<= CurrentSockets; n++)
{
sockptr=&Sockets[n];
sockptr = &Sockets[n];
if (sockptr->SocketActive && sockptr->MonFlag) NeedAGW = TRUE;
}
if (NeedAGW)
{
if (RXFlag || LoopMonFlag) // only send txed frames if requested
if (sockptr->SocketActive && sockptr->MonFlag && (RXFlag || LoopMonFlag))
{
Length = InternalAGWDecodeFrame(Buffer, AGWBuffer,Stamp, &Frametype);
//
// Decode frame and send to applications which have requested monitoring
//
Length = InternalAGWDecodeFrame(Buffer, AGWBuffer, Stamp, &Frametype, sockptr->useLocalTime, sockptr->doNodes);
if (Length > 0)
{
AGWTXHeader.Port = Port - 1; // AGW Ports start from 0
@ -786,13 +779,7 @@ int AGWDoMonitorData()
memset(AGWTXHeader.callfrom, 0,10);
ConvFromAX25(monbuff->ORIGIN, AGWTXHeader.callfrom);
for (n = 1; n<= CurrentSockets; n++)
{
sockptr=&Sockets[n];
if (sockptr->SocketActive && sockptr->MonFlag)
SendRawPacket(sockptr, AGWBuffer, Length);
}
SendRawPacket(sockptr, AGWBuffer, Length);
}
}
}
@ -1039,10 +1026,13 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
if (DataLength >= sockptr->MsgDataLength)
{
// Read Data and Process Command
sockptr->MsgData = malloc(sockptr->MsgDataLength);
i=recv(sock, AGWMessage, sockptr->MsgDataLength, 0);
i = recv(sock, sockptr->MsgData, sockptr->MsgDataLength, 0);
ProcessAGWCommand (sockptr);
free(sockptr->MsgData);
sockptr->GotHeader = FALSE;
}
@ -1168,7 +1158,7 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
{
// Have digis
char * Digis = AGWMessage;
char * Digis = sockptr->MsgData;
int nDigis = Digis[0];
Digis ++;
@ -1205,7 +1195,7 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
{
if (memcmp(AGWConnections[con].CallKey,key,21) == 0)
{
SendMsg(AGWConnections[con].BPQStream, AGWMessage, sockptr->MsgDataLength);
SendMsg(AGWConnections[con].BPQStream, sockptr->MsgData, sockptr->MsgDataLength);
return 0;
}
}
@ -1294,15 +1284,28 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
// Send Raw Frame
SendRaw(sockptr->AGWRXHeader.Port+1,&AGWMessage[1], sockptr->MsgDataLength - 1);
SendRaw(sockptr->AGWRXHeader.Port+1,&sockptr->MsgData[1], sockptr->MsgDataLength - 1);
return 0;
case 'm':
// Toggle Monitor receive
sockptr->MonFlag = !sockptr->MonFlag;
if (sockptr->AGWRXHeader.DataLength == 12) // QtTermTCP monitor info
{
// Msg[AGWHDDRRLEN] = AGWUsers->MonSess->mlocaltime;
// Msg[AGWHDDRRLEN + 1] = AGWUsers->MonSess->MonitorNODES;
//Msg[AGWHDDRRLEN + 2] = AGWUsers->MonSess->MonitorColour;
// Msg[AGWHDDRRLEN + 3] = AGWUsers->MonSess->mtxparam;
// memcpy(&Msg[AGWHDDRRLEN + 4], (void *)&AGWUsers->MonSess->portmask, 8);
sockptr->useLocalTime = sockptr->MsgData[0];
sockptr->doNodes = sockptr->MsgData[1];
sockptr->MonFlag = 1;
}
else
sockptr->MonFlag = !sockptr->MonFlag;
return 0;
@ -1318,11 +1321,11 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
if (sockptr->AGWRXHeader.DataKind == 'V') // Unproto with VIA string
{
Digis = AGWMessage[0]; // Number of digis
Digis = sockptr->MsgData[0]; // Number of digis
for (j = 1; j<= Digis; j++)
{
ConvToAX25(&AGWMessage[(j - 1) * 10 + 1],&TXMessage[7+(j*7)]); // No "last" bit
ConvToAX25(&sockptr->MsgData[(j - 1) * 10 + 1],&TXMessage[7+(j*7)]); // No "last" bit
}
// set end of call
@ -1342,7 +1345,7 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
else
*(TXMessageptr++) = sockptr->AGWRXHeader.PID;
memcpy(TXMessageptr,&AGWMessage[MsgStart], sockptr->MsgDataLength - MsgStart);
memcpy(TXMessageptr,&sockptr->MsgData[MsgStart], sockptr->MsgDataLength - MsgStart);
TXMessageptr += (sockptr->MsgDataLength - MsgStart);

View File

@ -64,12 +64,12 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
char * strlop(char * buf, char delim);
UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, int msglen);
static UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen);
static UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen, int DoNodes);
static UCHAR * DISPLAYIPDATAGRAM(IPMSG * IP, UCHAR * Output, int MsgLen);
static UCHAR * DISPLAYARPDATAGRAM(UCHAR * Datagram, UCHAR * Output);
int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameType)
int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameType, int useLocalTime, int DoNodes)
{
UCHAR * ptr;
int n;
@ -81,7 +81,6 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameT
char PFCHAR[3] = " ";
int MSGFLAG = 0; //CR and V1 flags
char * Output = buffer;
int HH, MM, SS;
char From[10], To[10];
BOOL Info = 0;
BOOL FRMRFLAG = 0;
@ -89,6 +88,13 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameT
BOOL TESTFLAG = 0;
size_t MsgLen = msg->LENGTH;
struct tm * TM;
if (useLocalTime)
TM = localtime(&Stamp);
else
TM = gmtime(&Stamp);
// GET THE CONTROL BYTE, TO SEE IF THIS FRAME IS TO BE DISPLAYED
n = 8; // MAX DIGIS
@ -124,14 +130,6 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameT
*FrameType = CTL;
Stamp = Stamp % 86400; // Secs
HH = Stamp / 3600;
Stamp -= HH * 3600;
MM = Stamp / 60;
SS = Stamp - MM * 60;
Output += sprintf((char *)Output, " %d:Fm ", msg->PORT & 0x7f); // Mask TX bit
From[ConvFromAX25(msg->ORIGIN, From)] = 0;
@ -297,7 +295,7 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameT
}
Output += sprintf((char *)Output, "[%02d:%02d:%02d]", HH, MM, SS);
Output += sprintf((char *)Output, "[%02d:%02d:%02d]", TM->tm_hour, TM->tm_min, TM->tm_sec);
if (FRMRFLAG)
@ -345,7 +343,7 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameT
}
case NETROM_PID:
Output = DISPLAY_NETROM(ADJBUFFER, Output,(int) MsgLen);
Output = DISPLAY_NETROM(ADJBUFFER, Output,(int) MsgLen, DoNodes);
break;
case IP_PID:
@ -366,6 +364,9 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameT
}
}
if (Output == NULL)
return NULL;
if (Output[-1] != 13)
Output += sprintf((char *)Output, "\r");
@ -374,7 +375,7 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameT
}
// Display NET/ROM data
UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen)
UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen, int DoNodes)
{
char Alias[7]= "";
char Dest[10];
@ -386,6 +387,8 @@ UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen)
{
// Display NODES
if (DoNodes == 0)
return NULL;
// If an INP3 RIF (type <> UI) decode as such

View File

@ -2552,6 +2552,8 @@ VOID SendAPRSMessageEx(char * Message, int toPort, char * FromCall, int Gated)
else
continue;
Msg.DEST[6] |= 0x80; // set Command Bit
ConvToAX25(FromCall, Msg.ORIGIN);
Msg.PID = 0xf0;
Msg.CTL = 3;
@ -2580,6 +2582,8 @@ VOID SendAPRSMessageEx(char * Message, int toPort, char * FromCall, int Gated)
else
return;
Msg.DEST[6] |= 0x80; // set Command Bit
ConvToAX25(FromCall, Msg.ORIGIN);
Msg.PID = 0xf0;
Msg.CTL = 3;
@ -2756,7 +2760,8 @@ void SendBeaconThread(void * Param)
Debugprintf("Sending APRS Beacon to port %d", toPort);
memcpy(Msg.DEST, &BeaconHeader[toPort][0][0], 10 * 7); // Clear unused digis
Msg.DEST[6] |= 0x80; // set Command Bit
GetSemaphore(&Semaphore, 12);
Send_AX_Datagram(&Msg, Len + 2, toPort);
FreeSemaphore(&Semaphore);
@ -2780,6 +2785,8 @@ void SendBeaconThread(void * Param)
Msg.CTL = 3;
memcpy(Msg.DEST, &BeaconHeader[Port][0][0], 10 * 7);
Msg.DEST[6] |= 0x80; // set Command Bit
GetSemaphore(&Semaphore, 12);
Send_AX_Datagram(&Msg, Len + 2, Port);
FreeSemaphore(&Semaphore);
@ -2815,6 +2822,8 @@ VOID SendObject(struct OBJECT * Object)
Msg.CTL = 3;
Len = sprintf(Msg.L2DATA, "%s", Object->Message);
memcpy(Msg.DEST, &Object->Path[0][0], Object->PathLen + 1);
Msg.DEST[6] |= 0x80; // set Command Bit
Send_AX_Datagram(&Msg, Len + 2, Port);
}
}
@ -2881,6 +2890,8 @@ VOID SendIStatus()
if (BeaconHddrLen[Port]) // Only send to ports with a DEST defined
{
memcpy(Msg.DEST, &BeaconHeader[Port][0][0], 10 * 7);
Msg.DEST[6] |= 0x80; // set Command Bit
Send_AX_Datagram(&Msg, Len + 2, Port);
}
}

2
AlertWords.txt Normal file
View File

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

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

File diff suppressed because it is too large Load Diff

View File

@ -1120,7 +1120,10 @@
// 6.0.25.1 ??
// Aff FBB reject.sys style filters (3)
// Add FBB reject.sys style filters (3)
// Improve Webmail on 64 bit builds
#include "bpqmail.h"
#include "winstdint.h"

View File

@ -68,7 +68,7 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="..\lib\bpq32.lib wsock32.lib comctl32.lib winmm.lib ..\lib\libconfig.lib DbgHelp.lib"
OutputFile="d:\DevProgs\bpq32\BPQMail.exe"
OutputFile="c:\DevProgs\bpq32\BPQMail.exe"
LinkIncremental="2"
IgnoreAllDefaultLibraries="false"
IgnoreDefaultLibraryNames="LIBCMT"

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-MHE5LO8"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-MHE5LO8"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="HPLAPTOP"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="HPLAPTOP"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1193,7 +1193,9 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// Add SDRAngel rig control (11)
// Add option to specify config and data directories on linbpq (12)
// Allow zero resptime (send RR immediately) (13)
// Fix corruptions in Webmail on 64 bit builds, eg in displaying 7+ files (15)
// 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)
#define CKernel
@ -1602,7 +1604,7 @@ char PopupText[30][100] = {""};
// Next 3 should be uninitialised so they are local to each process
UCHAR MCOM;
UCHAR MTX;
UCHAR MTX; // Top bit indicates use local time
uint64_t MMASK;
UCHAR MUIONLY;

BIN
CBPQ32.suo Normal file

Binary file not shown.

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="c:\devprogs\bpq32\bpq32.exe"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-MHE5LO8"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor="0"
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command=""
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-MHE5LO8"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="C:\Devprogs\BPQ32\bpq32.exe"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="C:\Devprogs\BPQ32\bpq32.exe"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="C:\Devprogs\BPQ32\bpq32.exe"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="HPLAPTOP"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command=""
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="HPLAPTOP"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="C:\DevProgs\BPQ32\bpq32.exe"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="C:\DevProgs\BPQ32\bpq32.exe"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

9
Cmd.c
View File

@ -2157,6 +2157,7 @@ VOID CQCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CM
ConvToAX25("CQ", CQCALL);
memcpy(Msg.DEST, CQCALL, 7);
Msg.DEST[6] |= 0x80; // set Command Bit
memcpy(Msg.ORIGIN, Session->L4USER, 7);
Msg.ORIGIN[6] ^= 0x1e; // Flip SSID
Msg.PID = 0xf0; // Data PID
@ -4714,6 +4715,7 @@ VOID InnerCommandHandler(TRANSPORTENTRY * Session, struct DATAMESSAGE * Buffer)
Msg.PORT = Port;
Msg.CTL = 3; // UI
memcpy(Msg.DEST, Session->UADDRESS, 7);
Msg.DEST[6] |= 0x80; // set Command Bit
memcpy(Msg.ORIGIN, Session->L4USER, 7);
memcpy(Msg.DIGIS, &Session->UADDRESS[7], Session->UAddrLen - 7);
memcpy(&Msg.PID, &Buffer->PID, Len);
@ -5789,6 +5791,7 @@ VOID HELPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
int UZ7HOSetFreq(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESSAGE buff, PMSGWITHLEN buffptr);
int UZ7HOSetModem(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESSAGE buff, PMSGWITHLEN buffptr);
int UZ7HOSetFlags(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESSAGE buff, PMSGWITHLEN buffptr);
VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
@ -5822,7 +5825,7 @@ VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
return;
}
if (_memicmp(Cmd, "FREQ", 4) == 0 || _memicmp(Cmd, "MODEM", 5) == 0)
if (_memicmp(Cmd, "FREQ", 4) == 0 || _memicmp(Cmd, "MODEM", 5) == 0 || _memicmp(Cmd, "FLAGS", 5) == 0)
{
// Pass to procesing code in UZ7HO driver. This expects command in a PDATAMESSAGE amd places response in a PMSGWITHLEN buffer
@ -5844,6 +5847,8 @@ VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
if (_memicmp(Cmd, "FREQ", 4) == 0)
UZ7HOSetFreq(port, TNC, AGW, buff, buffptr);
else if (_memicmp(Cmd, "FLAGS", 5) == 0)
UZ7HOSetFlags(port, TNC, AGW, buff, buffptr);
else
UZ7HOSetModem(port, TNC, AGW, buff, buffptr);
@ -5854,7 +5859,7 @@ VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
ReleaseBuffer(buffptr);
}
else
Bufferptr = Cmdprintf(Session, Bufferptr, "Invalid UZ7HO Command (not Freq or Modem)\r");
Bufferptr = Cmdprintf(Session, Bufferptr, "Invalid UZ7HO Command (not Freq Modem or FLAGS)\r");
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
return;

File diff suppressed because it is too large Load Diff

View File

@ -1271,6 +1271,8 @@ static VOID Send_AX_Datagram(PMESSAGE Block, DWORD Len, UCHAR Port, UCHAR * HWAD
memcpy(Block->DEST, HWADDR, 7);
memcpy(Block->ORIGIN, MYCALL, 7);
Block->DEST[6] &= 0x7e; // Clear End of Call
Block->DEST[6] |= 0x80; // set Command Bit
Block->ORIGIN[6] |= 1; // Set End of Call
Block->CTL = 3; //UI

View File

@ -1297,14 +1297,11 @@ VOID CONNECTREQUEST(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, UINT Appl
char BPQPARAMS[10]; // Extended Connect Params from BPQ Node
int CONERROR;
int Index;
char xxx[16] = "";
memcpy(BPQPARAMS, &L4T1, 2); // SET DEFAULT T1 IN CASE NOT FROM ANOTHER BPQ NODE
BPQPARAMS[2] = 0; // 'SPY' NOT SET
ConvFromAX25(&L3MSG->L4DATA[1], xxx);
if (CheckExcludeList(&L3MSG->L4DATA[1]) == 0)
{
SendConNAK(LINK, L3MSG);

1975
LinBPQ.c~

File diff suppressed because it is too large Load Diff

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

Binary file not shown.

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-MHE5LO8"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-MHE5LO8"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory="C:\linbpq"
CommandArguments="-h"
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor="0"
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="HPLAPTOP"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="HPLAPTOP"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory="c:\linbpq"
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor="0"
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

8
MailNode.vcxproj.user Normal file
View File

@ -0,0 +1,8 @@
<?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>
<LocalDebuggerWorkingDirectory>c:\linbpq</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -163,7 +163,6 @@ int IntDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, uint64_t Mask, BO
int Port;
int MSGFLAG = 0; //CR and V1 flags
char * Output = buffer;
int HH, MM, SS;
char TR = 'R';
char From[10], To[10];
BOOL Info = 0;
@ -173,6 +172,15 @@ int IntDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, uint64_t Mask, BO
size_t MsgLen = msg->LENGTH;
// Use gmtime so we can also display in local time
struct tm * TM;
if (MTX & 0x80)
TM = localtime(&Stamp);
else
TM = gmtime(&Stamp);
// MINI mode is for Node Listen (remote monitor) Mode. Keep info to minimum
/*
KO6IZ*>K7TMG-1:
@ -190,7 +198,7 @@ KC6OAR*>ID:
if (Port & 0x80)
{
if (MTX == 0)
if ((MTX & 1) == 0)
return 0; // TRANSMITTED FRAME - SEE IF MTX ON
TR = 'T';
@ -214,17 +222,9 @@ KC6OAR*>ID:
// Need Timestamp and T/R
Stamp = Stamp % 86400; // Secs
HH = (int)(Stamp / 3600);
Stamp -= HH * 3600;
MM = (int)(Stamp / 60);
SS = (int)(Stamp - MM * 60);
// Add Port: unless Mail Mon (port 64)
Output += sprintf((char *)Output, "%02d:%02d:%02d%c ", HH, MM, SS, TR);
Output += sprintf((char *)Output, "%02d:%02d:%02d%c ", TM->tm_hour, TM->tm_min, TM->tm_sec, TR);
strcpy(Output, &msg->DEST[1]);
Output += strlen(Output);
@ -286,18 +286,10 @@ KC6OAR*>ID:
}
Stamp = Stamp % 86400; // Secs
HH = (int)(Stamp / 3600);
Stamp -= HH * 3600;
MM = (int)(Stamp / 60);
SS = (int)(Stamp - MM * 60);
// Add Port: if MINI mode and monitoring more than one port
if (MINI == 0)
Output += sprintf((char *)Output, "%02d:%02d:%02d%c ", HH, MM, SS, TR);
Output += sprintf((char *)Output, "%02d:%02d:%02d%c ", TM->tm_hour, TM->tm_min, TM->tm_sec, TR);
else
if (CountBits64(Mask) > 1)
Output += sprintf((char *)Output, "%d:", Port);

BIN
PCBeep.wav Normal file

Binary file not shown.

View File

@ -1,120 +0,0 @@
[General]
HostParams0=|0||||
HostParams1=|0||||
HostParams2=|0||||
HostParams3=|0||||
HostParams4=|0||||
HostParams5=|0||||
HostParams6=|0||||
HostParams7=|0||||
HostParams8=|0||||
HostParams9=|0||||
HostParams10=|0||||
HostParams11=|0||||
HostParams12=|0||||
HostParams13=|0||||
HostParams14=|0||||
HostParams15=|0||||
Split=50
ChatMode=1
AutoTeletext=0
Bells=1
StripLF=1
AlertBeep=1
ConnectBeep=1
AlertInterval=300
CurrentHost=0 0 0 0 0 0 0 0 0 0
YAPPPath=
MaxRXSize=100000
listenPort=8015
listenEnable=0
listenCText=
convUTF8=0
PTT=None
PTTBAUD=19200
PTTMode=19200
CATHex=1
PTTOffString=
PTTOnString=
pttGPIOPin=17
pttGPIOPinR=17
CM108Addr=0xD8C:0x08
HamLibPort=4532
HamLibHost=127.0.0.1
FLRigPort=12345
FLRigHost=127.0.0.1
AGWEnable=0
AGWMonEnable=0
AGWTermCall=
AGWBeaconDest=
AGWBeaconPath=
AGWBeaconInterval=0
AGWBeaconPorts=
AGWBeaconText=
AGWHost=127.0.0.1
AGWPort=8000
AGWPaclen=80
AGWToCalls=
KISSEnable=0
MYCALL=
KISSHost=127.0.0.1
KISSMode=0
KISSPort=8100
KISSSerialPort=None
KISSBAUD=19200
VARAEnable=0
VARATermCall=
VARAHost=127.0.0.1
VARAPort=8300
VARAInit=
VARAPath=C:\\VARA\\VARA.exe
VARAHostHF=127.0.0.1
VARAPortHF=8300
VARAPathHF=C:\\VARA\\VARA.exe
VARAHostFM=127.0.0.1
VARAPortFM=8300
VARAPathFM=C:\\VARA\\VARAFM.exe
VARAHostSAT=127.0.0.1
VARAPortSAT=8300
VARAPathSAT=C:\\VARA\\VARASAT.exe
VARA500=0
VARA2300=1
VARA2750=0
VARAHF=1
VARAFM=0
VARASAT=0
TabType=1 1 1 1 1 1 1 2 2 0
AutoConnect=0 0 0 0 0 0 0 0 0 0
monBackground=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0)
monRxText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0)
monTxText=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
monOtherText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
termBackground=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0)
outputText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0)
EchoText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
WarningText=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
inputBackground=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0)
inputText=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
useBeep=false
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2\x39\0\0\0\xab\0\0\x5\x45\0\0\x3\x64\0\0\x2\x39\0\0\0\xab\0\0\x5\x45\0\0\x3\x64\0\0\0\0\0\0\0\0\a\x80\0\0\x2\x39\0\0\0\xab\0\0\x5\x45\0\0\x3\x64)
windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x3\r\0\0\x2\xa4\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x3\0\0\0\x1\0\0\0\x16\0m\0\x61\0i\0n\0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
ConnectWAV=C:/OneDrive/Dev/Source/bpq32/CommonSource/Ring.wav
[AX25_A]
Retries=10
Maxframe=4
Paclen=128
FrackTime=8
IdleTime=180
SlotTime=100
Persist=128
RespTime=1500
TXFrmMode=1
FrameCollector=6
ExcludeCallsigns=
ExcludeAPRSFrmType=
KISSOptimization=0
DynamicFrack=0
BitRecovery=0
IPOLL=80
MyDigiCall=

View File

@ -2230,7 +2230,7 @@ DllExport BOOL APIENTRY Rig_Init()
TNC->ClientHeight = NeedRig * 20 + 60;
TNC->ClientWidth = 550;
for (port = 0; port < 33; port++)
for (port = 0; port < MAXBPQPORTS; port++)
{
if (RadioConfigMsg[port])
{
@ -2263,7 +2263,7 @@ DllExport BOOL APIENTRY Rig_Init()
struct TNCINFO * PTCTNC;
int n;
for (n = 1; n < 33; n++)
for (n = 1; n < MAXBPQPORTS; n++)
{
PTCTNC = TNCInfo[n];
@ -2346,7 +2346,6 @@ DllExport BOOL APIENTRY Rig_Init()
{
SDRANGELRunning = 1;
ConnecttoSDRANGEL(PORT);
}
//---- G7TAJ ----
else if (PORT->HIDDevice) // This is RAWHID, Not CM108
@ -2363,6 +2362,15 @@ 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++)
@ -2573,7 +2581,7 @@ DllExport BOOL APIENTRY Rig_Close()
// And free the TNC config info
for (p = 1; p < 33; p++)
for (p = 1; p < MAXBPQPORTS; p++)
{
TNC = TNCInfo[p];
@ -2788,7 +2796,6 @@ int OpenRigCOMMPort(struct RIGPORTINFO * PORT, VOID * Port, int Speed)
COMClearDTR(PORT->hDevice);
else
COMSetDTR(PORT->hDevice);
if (strcmp(PORT->Rigs[0].RigName, "FT847") == 0)
{
// Looks like FT847 Needa a "Cat On" Command
@ -2798,6 +2805,7 @@ int OpenRigCOMMPort(struct RIGPORTINFO * PORT, VOID * Port, int Speed)
WriteCOMBlock(PORT->hDevice, CATON, 5);
}
if (PORT->PortType == NMEA)
{
// Looks like NMEA Needs Remote ON
@ -7310,7 +7318,7 @@ VOID SetupScanInterLockGroups(struct RIGINFO *RIG)
// Find TNC ports in this Rig's scan group
for (port = 1; port < 33; port++)
for (port = 1; port < MAXBPQPORTS; port++)
{
TNC = TNCInfo[port];
@ -7359,7 +7367,7 @@ VOID SetupPortRIGPointers()
struct TNCINFO * TNC;
int port;
for (port = 1; port < 33; port++)
for (port = 1; port < MAXBPQPORTS; port++)
{
TNC = TNCInfo[port];

View File

@ -634,6 +634,8 @@ static VOID SendPacket(struct TNCINFO * TNC, struct STREAMINFO * STREAM, UCHAR *
Block.PID = 0xF0;
ConvToAX25(STREAM->RemoteCall, Block.DEST);
Block.DEST[6] |= 0x80; // set Command Bit
memcpy(Block.ORIGIN, MYCALL, 7);
Block.L2DATA[0] = STREAM->ARQInfo->FarStream;

View File

@ -86,6 +86,9 @@ static char ClassName[]="ARDOPSTATUS";
static char WindowTitle[] = "UZ7HO";
static int RigControlRow = 165;
char FX25Modes[8][8] = {"None", "RxOnly", "RX+TX"};
char IL2PModes[8][10] = {"None", "RxOnly", "RX+TX", "il2pOnly"};
//LOGFONT LFTTYFONT ;
@ -378,7 +381,7 @@ int UZ7HOSetFreq(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESS
return 1;
}
if (TNCInfo[MasterPort[port]]->AGWInfo->isQTSM == 3)
if (TNCInfo[MasterPort[port]]->AGWInfo->isQTSM >= 3)
{
// QtSM so can send Set Freq Command
@ -437,7 +440,7 @@ int UZ7HOSetModem(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMES
return 1;
}
else if (TNCInfo[MasterPort[port]]->AGWInfo->isQTSM == 3)
else if (TNCInfo[MasterPort[port]]->AGWInfo->isQTSM >= 3)
{
// Can send modem name to QTSM
@ -452,6 +455,8 @@ int UZ7HOSetModem(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMES
strcpy(&Buffer[4], &buff->L2DATA[6]);
Buffer[27] = 1; // Modem can set modem flags
AGW->TXHeader.Port = UZ7HOChannel[port];
AGW->TXHeader.DataKind = 'g';
memset(AGW->TXHeader.callfrom, 0, 10);
@ -496,6 +501,119 @@ int UZ7HOSetModem(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMES
return 1;
}
int UZ7HOSetFlags(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESSAGE buff, PMSGWITHLEN buffptr)
{
int txlen = GetLengthfromBuffer(buff) - (MSGHDDRLEN + 1);
char Buffer[32] = "";
int MsgLen = 32;
char * ptr, * context;
int i;
if (TNCInfo[MasterPort[port]]->AGWInfo->isQTSM != 7)
{
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Sorry Setting UZ7HO flags not supported on this modem\r");
return 1;
}
// May be read or set flags
if (txlen == 6)
{
// Read Flags
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} fx25 %s il2p %s %s\r",
FX25Modes[TNC->AGWInfo->fx25Flags], IL2PModes[TNC->AGWInfo->il2pFlags], TNC->AGWInfo->il2pcrc?"CRC":"");
return 1;
}
ptr = strtok_s(&buff->L2DATA[6], " ,\r", &context);
while (ptr && ptr[0])
{
if (_stricmp(ptr, "fx25") == 0)
{
ptr = strtok_s(NULL, " ,\r", &context);
i = 4;
if (ptr && ptr[0])
{
for (i = 0; i < 4; i++)
{
if (_stricmp(FX25Modes[i], ptr) == 0)
{
TNC->AGWInfo->fx25Flags = i;
break;
}
}
}
if (i == 4)
{
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Failed - fx25 flags invalid\r");
return 1;
}
}
else if (_stricmp(ptr, "il2p") == 0)
{
ptr = strtok_s(NULL, " ,\r", &context);
i = 4;
if (ptr && ptr[0])
{
for (i = 0; i < 4; i++)
{
if (_stricmp(IL2PModes[i], ptr) == 0)
{
TNC->AGWInfo->il2pFlags = i;
break;
}
}
}
if (i == 4)
{
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Failed - il2p flags invalid\r");
return 1;
}
}
else if (_stricmp(ptr, "crc") == 0)
TNC->AGWInfo->il2pcrc = 1;
else if (_stricmp(ptr, "nocrc") == 0)
TNC->AGWInfo->il2pcrc = 0;
else
{
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Failed - invalid flag %s\r", ptr);
return 1;
}
ptr = strtok_s(NULL, " ,\r", &context);
}
Buffer[27] = 2; // Set Flags
Buffer[28] = TNC->AGWInfo->fx25Flags;
Buffer[29] = TNC->AGWInfo->il2pFlags;
Buffer[30] = TNC->AGWInfo->il2pcrc;
AGW->TXHeader.Port = UZ7HOChannel[port];
AGW->TXHeader.DataKind = 'g';
memset(AGW->TXHeader.callfrom, 0, 10);
memset(AGW->TXHeader.callto, 0, 10);
#ifdef __BIG_ENDIAN__
AGW->TXHeader.DataLength = reverse(MsgLen);
#else
AGW->TXHeader.DataLength = MsgLen;
#endif
send(TNCInfo[MasterPort[port]]->TCPSock, (char *)&AGW->TXHeader, AGWHDDRLEN, 0);
send(TNCInfo[MasterPort[port]]->TCPSock, Buffer, MsgLen, 0);
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Set Modem Flags command sent Ok\r");
return 1;
}
static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
{
@ -977,6 +1095,18 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
}
return 1;
}
if (_memicmp(&buff->L2DATA[0], "FLAGS", 5) == 0)
{
PMSGWITHLEN buffptr = (PMSGWITHLEN)GetBuff();
if (buffptr)
{
UZ7HOSetFlags(port, TNC, AGW, buff, buffptr);
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
}
return 1;
}
// See if a Connect Command.
if (toupper(buff->L2DATA[0]) == 'C' && buff->L2DATA[1] == ' ' && txlen > 2) // Connect
@ -1311,7 +1441,7 @@ void * UZ7HOExtInit(EXTPORTDATA * PortEntry)
#ifndef LINBPQ
CreatePactorWindow(TNC, ClassName, WindowTitle, RigControlRow, PacWndProc, 500, 450, ForcedClose);
CreatePactorWindow(TNC, ClassName, WindowTitle, RigControlRow, PacWndProc, 520, 450, ForcedClose);
CreateWindowEx(0, "STATIC", "Comms State", WS_CHILD | WS_VISIBLE, 10,6,120,20, TNC->hDlg, NULL, hInstance, NULL);
TNC->xIDC_COMMSSTATE = CreateWindowEx(0, "STATIC", "", WS_CHILD | WS_VISIBLE, 120,6,386,20, TNC->hDlg, NULL, hInstance, NULL);
@ -1327,7 +1457,7 @@ void * UZ7HOExtInit(EXTPORTDATA * PortEntry)
0,170,250,300, TNC->hDlg, NULL, hInstance, NULL);
TNC->ClientHeight = 450;
TNC->ClientWidth = 500;
TNC->ClientWidth = 520;
TNC->hMenu = CreatePopupMenu();
@ -2615,7 +2745,7 @@ GotStream:
if (RXHeader->DataLength == 12)
{
// First reply - request Modem Freq and Name
for (p = This; p < 33; p++)
for (p = This; p < MAXBPQPORTS; p++)
{
if (MasterPort[p] == This)
{
@ -2627,6 +2757,7 @@ GotStream:
int MsgLen = 32;
SOCKET sock = TNCInfo[MasterPort[This]]->TCPSock;
Buffer[27] = 1; // Modem can set modem flags
TNC->AGWInfo->isQTSM |= 2;
@ -2647,7 +2778,7 @@ GotStream:
return;
}
if (RXHeader->DataLength == 44)
if (RXHeader->DataLength == 44 || RXHeader->DataLength == 48)
{
// Modem Freq and Type Report from QtSM
@ -2662,7 +2793,21 @@ GotStream:
memcpy(&TNC->AGWInfo->ModemName, &Message[16], 20);
memcpy(&TNC->AGWInfo->Version, &Message[38], 4);
sprintf(TNC->WEB_MODE, "%s / %d Hz", TNC->AGWInfo->ModemName, TNC->AGWInfo->CenterFreq);
if (RXHeader->DataLength == 48)
{
// includes modem flags
TNC->AGWInfo->isQTSM |= 4; // can send flags
TNC->AGWInfo->fx25Flags = (Message[45] & 3);
TNC->AGWInfo->il2pFlags = (Message[46] & 3);
TNC->AGWInfo->il2pcrc = Message[47];
sprintf(TNC->WEB_MODE, "%s/%d Hz FX %s IL2P %s %s", TNC->AGWInfo->ModemName, TNC->AGWInfo->CenterFreq,
FX25Modes[TNC->AGWInfo->fx25Flags], IL2PModes[TNC->AGWInfo->il2pFlags], TNC->AGWInfo->il2pcrc?"CRC":"");
}
else
sprintf(TNC->WEB_MODE, "%s/%d Hz ", TNC->AGWInfo->ModemName, TNC->AGWInfo->CenterFreq);
SetWindowText(TNC->xIDC_MODE, TNC->WEB_MODE);
}
}

5
VARA.c
View File

@ -2413,6 +2413,7 @@ VOID VARAProcessReceivedData(struct TNCINFO * TNC)
Msg->PID = 0xcf;
Msg->PORT = TNC->Port | 0x80;
Msg->CTL = 3;
Msg->DEST[6] |= 0x80; // set Command Bit
Msg->ORIGIN[6] |= 1; // set end of address
time(&Msg->Timestamp);
BPQTRACE(Msg, FALSE);
@ -2445,6 +2446,8 @@ VOID VARAProcessReceivedData(struct TNCINFO * TNC)
ConvToAX25(TNC->NRNeighbour, Buffer->DEST);
memcpy(Buffer->ORIGIN, NETROMCALL, 7);
Buffer->ORIGIN[6] |= 1; // set end of address
Buffer->DEST[6] |= 0x80; // set Command Bit
time(&Buffer->Timestamp);
BPQTRACE(Buffer, FALSE); // TRACE
NETROMMSG(TNC->DummyLink, L3MSG);
@ -2886,6 +2889,8 @@ void SendVARANetromMsg(struct TNCINFO * TNC, L3MESSAGEBUFFER * MSG)
ConvToAX25(TNC->NRNeighbour, Buffer->DEST);
memcpy(Buffer->ORIGIN, NETROMCALL, 7);
Buffer->ORIGIN[6] |= 1; // set end of address
Buffer->DEST[6] |= 0x80; // set Command Bit
time(&Buffer->Timestamp);

View File

@ -10,8 +10,8 @@
#endif
#define KVers 6,0,24,15
#define KVerstring "6.0.24.15\0"
#define KVers 6,0,24,16
#define KVerstring "6.0.24.16\0"
#ifdef CKernel

View File

@ -1193,6 +1193,10 @@ int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Nu
}
}
}
if (DisplayHTML && stristr(Message, "</html>"))
DisplayStyle = "div"; // Use div so HTML and XML are interpreted
return sprintf(Reply, WebMailMsgTemplate, BBSName, User->Call, Msg->number, Msg->number, Key, Msg->number, Key, DownLoad, Key, Key, Key, DisplayStyle, Message, DisplayStyle);
}
@ -1232,9 +1236,7 @@ int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Nu
size_t origlen = msgLen + 1;
UCHAR * BufferB = malloc(2 * origlen);
#ifdef WIN32
WCHAR * BufferW = malloc(2 * origlen);
int wlen;
int len = (int)origlen;
@ -1246,10 +1248,10 @@ int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Nu
Save = MsgBytes = BufferB;
free(BufferW);
msgLen = len - 1; // exclude NULL
#else
size_t left = 2 * msgLen;
size_t len = msgLen;
size_t outbuflen = left;
size_t len = msgLen + 1; // include null
int ret;
UCHAR * BufferBP = BufferB;
char * orig = MsgBytes;
@ -1270,15 +1272,18 @@ int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Nu
iconv(icu, NULL, NULL, NULL, NULL); // Reset State Machine
ret = iconv(icu, &MsgBytes, &len, (char ** __restrict__)&BufferBP, &left);
}
// left is next location to write, so length written is outbuflen - left
// add a null in case iconv didn't complete comversion
BufferB[outbuflen - left] = 0;
free(Save);
Save = MsgBytes = BufferB;
msgLen = strlen(MsgBytes);
#endif
}
// ptr += sprintf(ptr, "%s", MsgBytes);
memcpy(ptr, MsgBytes, msgLen);
@ -1307,13 +1312,10 @@ int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Nu
ptr += sprintf(ptr, "File for Message %d not found\r", Number);
}
if (DisplayHTML && stristr(Message, "html>"))
if (DisplayHTML && stristr(Message, "</html>"))
DisplayStyle = "div"; // Use div so HTML and XML are interpreted
return sprintf(Reply, WebMailMsgTemplate, BBSName, User->Call, Msg->number, Msg->number, Key, Msg->number, Key, DownLoad, Key, Key, Key, DisplayStyle, Message, DisplayStyle);
}

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments="COM53 127.0.0.1:4532"
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor="0"
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments="COM53 127.0.0.1:4532"
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor="0"
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="DESKTOP-TGEL8RC"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -1,36 +0,0 @@
// ADIF Logging Bits
typedef struct ADIF
{
char Call[16];
time_t StartTime;
int Mode;
char LOC[7];
char Band[8]; // ?Derive from freq?
int Freq;
// Extra fields for Trimode comment fields
char CMSCall[16];
char ServerSID[80];
char UserSID[80];
char ReportMode[16];
char Termination[8]; // Last "F" message from CMS
int Sent;
int Received;
int BytesSent;
int BytesReceived;
char Dirn; // Direction of current transfer (In/Out)
int FBBIndex; // For saving proposals
int FBBLen[5]; // Proposed messages
BOOL GotFC; // Flag for acking messages on first FC
char PartMessage[256]; // Some modes frame size too small for complete lines
} ADIF;
BOOL UpdateADIFRecord(ADIF * ADIF, char * Msg, char Dirn);
BOOL WriteADIFRecord(ADIF * ADIF);

BIN
ding.wav Normal file

Binary file not shown.

1428
getopt.c

File diff suppressed because it is too large Load Diff

214
getopt.h
View File

@ -1,108 +1,108 @@
#ifndef __GETOPT_H__
/*
* getopt.h
*
* $Id: getopt.h,v 1.4 2009/01/04 17:35:36 keithmarshall Exp $
*
* Defines constants and function prototypes required to implement
* the `getopt', `getopt_long' and `getopt_long_only' APIs.
*
* This file is part of the MinGW32 package set.
*
* Contributed by Keith Marshall <keithmarshall@users.sourceforge.net>
*
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Revision: 1.4 $
* $Author: keithmarshall $
* $Date: 2009/01/04 17:35:36 $
*
*/
#define __GETOPT_H__
#ifdef __cplusplus
extern "C" {
#endif
extern int optind; /* index of first non-option in argv */
extern int optopt; /* single option character, as parsed */
extern int opterr; /* flag to enable built-in diagnostics... */
/* (user may set to zero, to suppress) */
extern char *optarg; /* pointer to argument of current option */
extern int getopt( int, char * const [], const char * );
#ifdef _BSD_SOURCE
/*
* BSD adds the non-standard `optreset' feature, for reinitialisation
* of `getopt' parsing. We support this feature, for applications which
* proclaim their BSD heritage, before including this header; however,
* to maintain portability, developers are advised to avoid it.
*/
# define optreset __mingw_optreset
extern int optreset;
#endif
#ifdef __cplusplus
}
#endif
/*
* POSIX requires the `getopt' API to be specified in `unistd.h';
* thus, `unistd.h' includes this header. However, we do not want
* to expose the `getopt_long' or `getopt_long_only' APIs, when
* included in this manner. Thus, close the standard __GETOPT_H__
* declarations block, and open an additional __GETOPT_LONG_H__
* specific block, only when *not* __UNISTD_H_SOURCED__, in which
* to declare the extended API.
*/
#endif /* !defined(__GETOPT_H__) */
#if !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__)
#define __GETOPT_LONG_H__
#ifdef __cplusplus
extern "C" {
#endif
struct option /* specification for a long form option... */
{
const char *name; /* option name, without leading hyphens */
int has_arg; /* does it take an argument? */
int *flag; /* where to save its status, or NULL */
int val; /* its associated status value */
};
enum /* permitted values for its `has_arg' field... */
{
no_argument = 0, /* option never takes an argument */
required_argument, /* option always requires an argument */
optional_argument /* option may take an argument */
};
extern int getopt_long( int, char * const [], const char *, const struct option *, int * );
extern int getopt_long_only( int, char * const [], const char *, const struct option *, int * );
/*
* Previous MinGW implementation had...
*/
#ifndef HAVE_DECL_GETOPT
/*
* ...for the long form API only; keep this for compatibility.
*/
# define HAVE_DECL_GETOPT 1
#endif
#ifdef __cplusplus
}
#endif
#endif /* !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) */
#ifndef __GETOPT_H__
/*
* getopt.h
*
* $Id: getopt.h,v 1.4 2009/01/04 17:35:36 keithmarshall Exp $
*
* Defines constants and function prototypes required to implement
* the `getopt', `getopt_long' and `getopt_long_only' APIs.
*
* This file is part of the MinGW32 package set.
*
* Contributed by Keith Marshall <keithmarshall@users.sourceforge.net>
*
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Revision: 1.4 $
* $Author: keithmarshall $
* $Date: 2009/01/04 17:35:36 $
*
*/
#define __GETOPT_H__
#ifdef __cplusplus
extern "C" {
#endif
extern int optind; /* index of first non-option in argv */
extern int optopt; /* single option character, as parsed */
extern int opterr; /* flag to enable built-in diagnostics... */
/* (user may set to zero, to suppress) */
extern char *optarg; /* pointer to argument of current option */
extern int getopt( int, char * const [], const char * );
#ifdef _BSD_SOURCE
/*
* BSD adds the non-standard `optreset' feature, for reinitialisation
* of `getopt' parsing. We support this feature, for applications which
* proclaim their BSD heritage, before including this header; however,
* to maintain portability, developers are advised to avoid it.
*/
# define optreset __mingw_optreset
extern int optreset;
#endif
#ifdef __cplusplus
}
#endif
/*
* POSIX requires the `getopt' API to be specified in `unistd.h';
* thus, `unistd.h' includes this header. However, we do not want
* to expose the `getopt_long' or `getopt_long_only' APIs, when
* included in this manner. Thus, close the standard __GETOPT_H__
* declarations block, and open an additional __GETOPT_LONG_H__
* specific block, only when *not* __UNISTD_H_SOURCED__, in which
* to declare the extended API.
*/
#endif /* !defined(__GETOPT_H__) */
#if !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__)
#define __GETOPT_LONG_H__
#ifdef __cplusplus
extern "C" {
#endif
struct option /* specification for a long form option... */
{
const char *name; /* option name, without leading hyphens */
int has_arg; /* does it take an argument? */
int *flag; /* where to save its status, or NULL */
int val; /* its associated status value */
};
enum /* permitted values for its `has_arg' field... */
{
no_argument = 0, /* option never takes an argument */
required_argument, /* option always requires an argument */
optional_argument /* option may take an argument */
};
extern int getopt_long( int, char * const [], const char *, const struct option *, int * );
extern int getopt_long_only( int, char * const [], const char *, const struct option *, int * );
/*
* Previous MinGW implementation had...
*/
#ifndef HAVE_DECL_GETOPT
/*
* ...for the long form API only; keep this for compatibility.
*/
# define HAVE_DECL_GETOPT 1
#endif
#ifdef __cplusplus
}
#endif
#endif /* !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) */
/* $RCSfile: getopt.h,v $Revision: 1.4 $: end of file */

View File

@ -282,6 +282,9 @@ typedef struct AGWINFO
int Modem; // Modem number in list
char ModemName[20];
unsigned char Version[4];
unsigned char fx25Flags;
unsigned char il2pFlags;
unsigned char il2pcrc;
} *PAGWINFO;