6.0.23.34

This commit is contained in:
John Wiseman 2022-12-31 10:44:53 +00:00
parent ebc845ec8c
commit 90bdcbe130
15 changed files with 136 additions and 378 deletions

View File

@ -4950,7 +4950,7 @@ BOOL DecodeLocationString(UCHAR * Payload, struct STATIONRECORD * Station)
if (SymChar == '_') // WX
{
if (strlen(Payload) > 50)
if (strlen(Payload) > 30)
strcpy(Station->LastWXPacket, Payload);
}
@ -5060,6 +5060,10 @@ int DecodeAPRSPayload(char * Payload, struct STATIONRECORD * Station)
Station->Object = NULL;
if (strcmp(Station->Callsign, "LA1ZDA-2") == 0)
{
int i = 1;
}
switch(*Payload)
{
case '`':
@ -8627,7 +8631,7 @@ int GetAPRSPageInfo(char * Buffer, double N, double S, double W, double E, int a
int KM = DefaultDistKM;
char * ptr1;
while (ptr && aprs)
while (ptr && aprs && Len < 240000)
{
if (ptr->Lat != 0.0 && ptr->Lon != 0.0)
{

View File

@ -1652,6 +1652,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
}
STREAM->Connecting = TRUE;
STREAM->ConnectTime = time(NULL);
return 0;
}

View File

@ -1130,7 +1130,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// Attempt to fix Tracker/WinRPR reconnect code (30)
// Changes to FreeDATA - Don't use deamon and add txlevel and send text commands (31)
// Fix interactive commands in tracker driver (33)
// Fix SESSIONTIMELIMIT processing
#define CKernel

View File

@ -1026,9 +1026,13 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
closesocket(TNC->TCPDataSock);
}
if (TNC->WeStartedTNC)
KillTNC(TNC);
printf("FreeData Closing %d\n", TNC->WeStartedTNC);
if (TNC->WeStartedTNC)
{
printf("Calling KillTNC\n");
KillTNC(TNC);
}
return 0;
@ -1377,6 +1381,7 @@ VOID * FreeDataExtInit(EXTPORTDATA * PortEntry)
u_long param = 1;
int line;
int i;
int n = 0;
srand(time(NULL));
@ -1500,7 +1505,7 @@ VOID * FreeDataExtInit(EXTPORTDATA * PortEntry)
// Build SSID List
if (TNC->LISTENCALLS)
{
{
strcpy(TNC->FreeDataInfo->SSIDList, TNC->LISTENCALLS);
}
else
@ -1541,6 +1546,16 @@ VOID * FreeDataExtInit(EXTPORTDATA * PortEntry)
}
List[Listptr] = 0;
}
// Build SSID List for Linux
TNC->FreeDataInfo->SSIDS[n] = _strdup(TNC->FreeDataInfo->SSIDList);
while (TNC->FreeDataInfo->SSIDS[n])
{
TNC->FreeDataInfo->SSIDS[n+1] = strlop(TNC->FreeDataInfo->SSIDS[n], ' ');
n++;
}
TNC->WebWindowProc = WebProc;
TNC->WebWinX = 520;
@ -3196,12 +3211,12 @@ void ProcessTNCJSON(struct TNCINFO * TNC, char * Msg, int Len)
}
}
else if (memcmp(ptr, "disconnecting", 12) == 0)
else if (memcmp(ptr, "close", 12) == 0)
{
if (TNC->FreeDataInfo->arqstate != 4)
{
TNC->FreeDataInfo->arqstate = 4;
Debugprintf("%d arq_session_state %s", TNC->Port, "disconnecting");
Debugprintf("%d arq_session_state %s", TNC->Port, "Closed");
}
}
else if (memcmp(ptr, "failed", 5) == 0)
@ -3927,6 +3942,11 @@ TNCNotRunning:
CountRestarts(TNC);
Sleep(TNC->AutoStartDelay);
#ifdef LINBPQ
Sleep(5000);
#endif
}
TNCRunning:
@ -4015,14 +4035,6 @@ TNCRunning:
sprintf(Msg, "Connected to FreeData TNC Port %d\r\n", TNC->Port);
WritetoConsole(Msg);
#ifndef LINBPQ
// FreeSemaphore(&Semaphore);
Sleep(1000); // Give VARA time to update Window title
// EnumWindows(EnumVARAWindowsProc, (LPARAM)TNC);
// GetSemaphore(&Semaphore, 52);
#endif
while (TNC->TNCCONNECTED)
{
FD_ZERO(&readfs);
@ -4103,6 +4115,8 @@ closeThread:
}
sprintf(Msg, "FreeData Thread Terminated Port %d\r\n", TNC->Port);
TNC->lasttime = time(NULL); // Prevent immediate restart
WritetoConsole(Msg);
}
@ -4214,312 +4228,6 @@ void buildParamString(struct TNCINFO * TNC, char * line)
}
#ifndef WIN32
#include <alsa/asoundlib.h>
char ** WriteDevices = NULL;
int WriteDeviceCount = 0;
char ** ReadDevices = NULL;
int ReadDeviceCount = 0;
int GetOutputDeviceCollection()
{
// Get all the suitable devices and put in a list for GetNext to return
snd_ctl_t *handle= NULL;
snd_pcm_t *pcm= NULL;
snd_ctl_card_info_t *info;
snd_pcm_info_t *pcminfo;
snd_pcm_hw_params_t *pars;
snd_pcm_format_mask_t *fmask;
char NameString[256];
Debugprintf("Playback Devices\n");
// free old struct if called again
// while (WriteDeviceCount)
// {
// WriteDeviceCount--;
// free(WriteDevices[WriteDeviceCount]);
// }
// if (WriteDevices)
// free(WriteDevices);
WriteDevices = NULL;
WriteDeviceCount = 0;
// Add virtual device ARDOP so ALSA plugins can be used if needed
WriteDevices = realloc(WriteDevices,(WriteDeviceCount + 1) * sizeof(WriteDevices));
// Get Device List from ALSA
snd_ctl_card_info_alloca(&info);
snd_pcm_info_alloca(&pcminfo);
snd_pcm_hw_params_alloca(&pars);
snd_pcm_format_mask_alloca(&fmask);
char hwdev[80];
unsigned min, max, ratemin, ratemax;
int card, err, dev, nsubd;
snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
card = -1;
if (snd_card_next(&card) < 0)
{
Debugprintf("No Devices");
return 0;
}
while (card >= 0)
{
sprintf(hwdev, "hw:%d", card);
err = snd_ctl_open(&handle, hwdev, 0);
err = snd_ctl_card_info(handle, info);
Debugprintf("Card %d, ID `%s', name `%s'", card, snd_ctl_card_info_get_id(info),
snd_ctl_card_info_get_name(info));
dev = -1;
if(snd_ctl_pcm_next_device(handle, &dev) < 0)
{
// Card has no devices
snd_ctl_close(handle);
WriteDevices = realloc(WriteDevices,(WriteDeviceCount + 1) * sizeof(WriteDevices));
WriteDevices[WriteDeviceCount++] = strupr(strdup("DummyDevice"));
goto nextcard;
}
while (dev >= 0)
{
snd_pcm_info_set_device(pcminfo, dev);
snd_pcm_info_set_subdevice(pcminfo, 0);
snd_pcm_info_set_stream(pcminfo, stream);
err = snd_ctl_pcm_info(handle, pcminfo);
if (err == -ENOENT)
goto nextdevice;
nsubd = snd_pcm_info_get_subdevices_count(pcminfo);
Debugprintf(" Device hw:%d,%d ID `%s', name `%s', %d subdevices (%d available)",
card, dev, snd_pcm_info_get_id(pcminfo), snd_pcm_info_get_name(pcminfo),
nsubd, snd_pcm_info_get_subdevices_avail(pcminfo));
sprintf(hwdev, "hw:%d,%d", card, dev);
err = snd_pcm_open(&pcm, hwdev, stream, SND_PCM_NONBLOCK);
if (err)
{
Debugprintf("Error %d opening output device", err);
goto nextdevice;
}
// Get parameters for this device
err = snd_pcm_hw_params_any(pcm, pars);
snd_pcm_hw_params_get_channels_min(pars, &min);
snd_pcm_hw_params_get_channels_max(pars, &max);
snd_pcm_hw_params_get_rate_min(pars, &ratemin, NULL);
snd_pcm_hw_params_get_rate_max(pars, &ratemax, NULL);
if( min == max )
if( min == 1 )
Debugprintf(" 1 channel, sampling rate %u..%u Hz", ratemin, ratemax);
else
Debugprintf(" %d channels, sampling rate %u..%u Hz", min, ratemin, ratemax);
else
Debugprintf(" %u..%u channels, sampling rate %u..%u Hz", min, max, ratemin, ratemax);
// Add device to list
sprintf(NameString, "hw:%d,%d %s(%s)", card, dev,
snd_pcm_info_get_name(pcminfo), snd_ctl_card_info_get_name(info));
WriteDevices = realloc(WriteDevices,(WriteDeviceCount + 1) * sizeof(WriteDevices));
WriteDevices[WriteDeviceCount++] = strupr(strdup(NameString));
snd_pcm_close(pcm);
pcm= NULL;
nextdevice:
if (snd_ctl_pcm_next_device(handle, &dev) < 0)
break;
}
snd_ctl_close(handle);
nextcard:
Debugprintf("");
if (snd_card_next(&card) < 0) // No more cards
break;
}
return WriteDeviceCount;
}
int GetNextOutputDevice(char * dest, int max, int n)
{
if (n >= WriteDeviceCount)
return 0;
strcpy(dest, WriteDevices[n]);
return strlen(dest);
}
int GetInputDeviceCollection()
{
// Get all the suitable devices and put in a list for GetNext to return
snd_ctl_t *handle= NULL;
snd_pcm_t *pcm= NULL;
snd_ctl_card_info_t *info;
snd_pcm_info_t *pcminfo;
snd_pcm_hw_params_t *pars;
snd_pcm_format_mask_t *fmask;
char NameString[256];
Debugprintf("Capture Devices\n");
ReadDevices = NULL;
ReadDeviceCount = 0;
ReadDevices = realloc(ReadDevices,(ReadDeviceCount + 1) * sizeof(ReadDevices));
// Get Device List from ALSA
snd_ctl_card_info_alloca(&info);
snd_pcm_info_alloca(&pcminfo);
snd_pcm_hw_params_alloca(&pars);
snd_pcm_format_mask_alloca(&fmask);
char hwdev[80];
unsigned min, max, ratemin, ratemax;
int card, err, dev, nsubd;
snd_pcm_stream_t stream = SND_PCM_STREAM_CAPTURE;
card = -1;
if(snd_card_next(&card) < 0)
{
Debugprintf("No Devices");
return 0;
}
while(card >= 0)
{
sprintf(hwdev, "hw:%d", card);
err = snd_ctl_open(&handle, hwdev, 0);
err = snd_ctl_card_info(handle, info);
// Debugprintf("Card %d, ID `%s', name `%s'", card, snd_ctl_card_info_get_id(info),
// snd_ctl_card_info_get_name(info));
dev = -1;
if (snd_ctl_pcm_next_device(handle, &dev) < 0) // No Devicdes
{
snd_ctl_close(handle);
ReadDevices = realloc(ReadDevices,(ReadDeviceCount + 1) * sizeof(ReadDevices));
ReadDevices[ReadDeviceCount++] = strupr(strdup("DummyDevice"));
Debugprintf("%d %s", ReadDeviceCount, "DummyDevice");
goto nextcard;
}
while(dev >= 0)
{
snd_pcm_info_set_device(pcminfo, dev);
snd_pcm_info_set_subdevice(pcminfo, 0);
snd_pcm_info_set_stream(pcminfo, stream);
err= snd_ctl_pcm_info(handle, pcminfo);
if (err == -ENOENT)
goto nextdevice;
nsubd= snd_pcm_info_get_subdevices_count(pcminfo);
// Debugprintf(" Device hw:%d,%d ID `%s', name `%s', %d subdevices (%d available)",
// card, dev, snd_pcm_info_get_id(pcminfo), snd_pcm_info_get_name(pcminfo),
// nsubd, snd_pcm_info_get_subdevices_avail(pcminfo));
sprintf(hwdev, "hw:%d,%d", card, dev);
/*
err = snd_pcm_open(&pcm, hwdev, stream, SND_PCM_NONBLOCK);
if (err)
{
Debugprintf("Error %d opening input device", err);
goto nextdevice;
}
err = snd_pcm_hw_params_any(pcm, pars);
snd_pcm_hw_params_get_channels_min(pars, &min);
snd_pcm_hw_params_get_channels_max(pars, &max);
snd_pcm_hw_params_get_rate_min(pars, &ratemin, NULL);
snd_pcm_hw_params_get_rate_max(pars, &ratemax, NULL);
if( min == max )
if( min == 1 )
Debugprintf(" 1 channel, sampling rate %u..%u Hz", ratemin, ratemax);
else
Debugprintf(" %d channels, sampling rate %u..%u Hz", min, ratemin, ratemax);
else
Debugprintf(" %u..%u channels, sampling rate %u..%u Hz", min, max, ratemin, ratemax);
*/
sprintf(NameString, "hw:%d,%d %s(%s)", card, dev,
snd_pcm_info_get_name(pcminfo), snd_ctl_card_info_get_name(info));
Debugprintf("%d %s", ReadDeviceCount, NameString);
ReadDevices = realloc(ReadDevices,(ReadDeviceCount + 1) * sizeof(ReadDevices));
ReadDevices[ReadDeviceCount++] = strupr(strdup(NameString));
nextdevice:
if (snd_ctl_pcm_next_device(handle, &dev) < 0)
break;
}
snd_ctl_close(handle);
nextcard:
Debugprintf("");
if (snd_card_next(&card) < 0 )
break;
}
return ReadDeviceCount;
}
int GetNextInputDevice(char * dest, int max, int n)
{
if (n >= ReadDeviceCount)
return 0;
strcpy(dest, ReadDevices[n]);
return strlen(dest);
}
#endif
// We need a local restart tnc as we need to add params and start a python progrm on Linux
BOOL KillOldTNC(char * Path);
@ -4584,47 +4292,10 @@ static BOOL RestartTNC(struct TNCINFO * TNC)
char txLevelVal[16];
char RigPort[16];
int n = 0;
int i = 0;
pid_t child_pid;
struct FreeDataINFO * FDI = TNC->FreeDataInfo;
int capindex = -1, playindex = -1;
int i;
if (ReadDeviceCount == 0)
{
GetOutputDeviceCollection();
GetInputDeviceCollection();
}
//
for (i = 0; i < ReadDeviceCount; i++)
{
printf("%s %s\n", &ReadDevices[i][0], TNC->FreeDataInfo->Capture);
if (strstr(&ReadDevices[i][0], TNC->FreeDataInfo->Capture))
{
capindex = i;
break;
}
}
for (i = 0; i < WriteDeviceCount; i++)
{
printf("%s %s\n", &WriteDevices[i][0], TNC->FreeDataInfo->Playback);
if (strstr(&WriteDevices[i][0], TNC->FreeDataInfo->Playback))
{
playindex = i;
break;
}
}
capindex=playindex=3;
printf("%d %d \n", capindex, playindex);
signal(SIGCHLD, SIG_IGN); // Silently (and portably) reap children.
@ -4633,14 +4304,17 @@ static BOOL RestartTNC(struct TNCINFO * TNC)
arg_list[n++] = "--mycall";
arg_list[n++] = FDI->ourCall;
arg_list[n++] = "--ssid";
arg_list[n++] = FDI->SSIDList;
while(TNC->FreeDataInfo->SSIDS[i])
arg_list[n++] = TNC->FreeDataInfo->SSIDS[i++];
arg_list[n++] = "--mygrid";
arg_list[n++] = LOC;
arg_list[n++] = "--rx";
sprintf(rxVal, "%d", capindex);
sprintf(rxVal, "%s", TNC->FreeDataInfo->Capture);
arg_list[n++] = rxVal;
arg_list[n++] = "--tx";
sprintf(txVal, "%d", playindex);
sprintf(txVal, "%s", TNC->FreeDataInfo->Playback);
arg_list[n++] = txVal;
arg_list[n++] = "--port";
sprintf(portVal, "%d", TNC->TCPPort);
@ -4699,8 +4373,9 @@ static BOOL RestartTNC(struct TNCINFO * TNC)
printf ("Failed to start TNC\n");
exit(0); // Kill the new process
}
printf("Started TNC\n");
sleep(5000);
TNC->PID = child_pid;
printf("Started TNC, Process ID = %d\n", TNC->PID);
return TRUE;
}

View File

@ -1840,7 +1840,7 @@ int standardParams(struct TNCINFO * TNC, char * buf)
if (_memicmp(buf, "WL2KREPORT", 10) == 0)
TNC->WL2K = DecodeWL2KReportLine(buf);
else if (_memicmp(buf, "SESSIONTIMELIMIT", 16) == 0)
TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit = atoi(&buf[16]) * 60;
TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit = atoi(&buf[17]) * 60;
else if (_memicmp(buf, "BUSYHOLD", 8) == 0) // Hold Time for Busy Detect
TNC->BusyHold = atoi(&buf[8]);
else if (_memicmp(buf, "BUSYWAIT", 8) == 0) // Wait time before failing connect if busy

View File

@ -2612,7 +2612,8 @@ doHeader:
}
ReplyLen = GetAPRSPageInfo(_REPLYBUFFER, N, S, W, E, aprs, ais, adsb);
ReplyLen += GetAISPageInfo(&_REPLYBUFFER[ReplyLen], ais, adsb);
if (ReplyLen < 240000)
ReplyLen += GetAISPageInfo(&_REPLYBUFFER[ReplyLen], ais, adsb);
if (allowDeflate)
Compressed = Compressit(_REPLYBUFFER, ReplyLen, &ReplyLen);

View File

@ -1299,7 +1299,6 @@ int main(int argc, char * argv[])
if (needAIS)
SaveAIS();
// Close Ports
PORTVEC=(PEXTPORTDATA)PORTTABLE;

View File

@ -1419,6 +1419,7 @@ VOID SCSPoll(int Port)
TNC->Streams[0].CmdSet = TNC->ConnectCmd;
TNC->Streams[0].Connecting = TRUE;
TNC->Streams[0].ConnectTime = time(NULL);
sprintf(TNC->WEB_TNCSTATE, "%s Connecting to %s", TNC->Streams[0].MyCall, TNC->Streams[0].RemoteCall);
SetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);

View File

@ -271,15 +271,76 @@ void RegisterAPPLCalls(struct TNCINFO * TNC, BOOL Unregister)
}
BOOL UZ7HOStopPort(struct PORTCONTROL * PORT)
{
// Disable Port - close TCP Sockets or Serial Port
struct TNCINFO * TNC = PORT->TNC;
TNC->CONNECTED = FALSE;
TNC->Alerted = FALSE;
if (TNC->PTTMode)
Rig_PTT(TNC, FALSE); // Make sure PTT is down
if (TNC->Streams[0].Attached)
TNC->Streams[0].ReportDISC = TRUE;
if (TNC->TCPSock)
{
shutdown(TNC->TCPSock, SD_BOTH);
Sleep(100);
closesocket(TNC->TCPSock);
}
if (TNC->TCPDataSock)
{
shutdown(TNC->TCPDataSock, SD_BOTH);
Sleep(100);
closesocket(TNC->TCPDataSock);
}
TNC->TCPSock = 0;
TNC->TCPDataSock = 0;
KillTNC(TNC);
sprintf(PORT->TNC->WEB_COMMSSTATE, "%s", "Port Stopped");
MySetWindowText(PORT->TNC->xIDC_COMMSSTATE, PORT->TNC->WEB_COMMSSTATE);
return TRUE;
}
int ConnecttoUZ7HO(int port);
BOOL UZ7HOStartPort(struct PORTCONTROL * PORT)
{
// Restart Port - Open Sockets or Serial Port
struct TNCINFO * TNC = PORT->TNC;
ConnecttoUZ7HO(TNC->Port);
TNC->lasttime = time(NULL);;
sprintf(PORT->TNC->WEB_COMMSSTATE, "%s", "Port Restarted");
MySetWindowText(PORT->TNC->xIDC_COMMSSTATE, PORT->TNC->WEB_COMMSSTATE);
return TRUE;
}
VOID UZ7HOSuspendPort(struct TNCINFO * TNC)
{
TNC->PortRecord->PORTCONTROL.PortStopped = TRUE;
TNC->PortRecord->PORTCONTROL.PortSuspended = TRUE;
RegisterAPPLCalls(TNC, TRUE);
}
VOID UZ7HOReleasePort(struct TNCINFO * TNC)
{
TNC->PortRecord->PORTCONTROL.PortStopped = FALSE;
TNC->PortRecord->PORTCONTROL.PortSuspended = FALSE;
RegisterAPPLCalls(TNC, FALSE);
}
@ -359,7 +420,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
{
AGW->LastParamTime = ltime;
if (TNC->PortRecord->PORTCONTROL.PortStopped == FALSE)
if (TNC->PortRecord->PORTCONTROL.PortSuspended == FALSE)
RegisterAPPLCalls(TNC, FALSE);
}
}
@ -618,7 +679,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
SOCKET Sock;
buffptr = Q_REM(&TNC->PortRecord->UI_Q);
if (TNC->PortRecord->PORTCONTROL.PortStopped == TRUE) // Interlock Disabled Port
if (TNC->PortRecord->PORTCONTROL.PortSuspended == TRUE) // Interlock Disabled Port
{
ReleaseBuffer((UINT *)buffptr);
return (0);
@ -653,7 +714,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
case 2: // send
if (TNC->PortRecord->PORTCONTROL.PortStopped == TRUE) // Interlock Disabled Port
if (TNC->PortRecord->PORTCONTROL.PortSuspended == TRUE) // Interlock Disabled Port
return 0;
if (!TNCInfo[MasterPort[port]]->CONNECTED) return 0; // Don't try if not connected to TNC
@ -1179,6 +1240,8 @@ void * UZ7HOExtInit(EXTPORTDATA * PortEntry)
TNC->SuspendPortProc = UZ7HOSuspendPort;
TNC->ReleasePortProc = UZ7HOReleasePort;
PortEntry->PORTCONTROL.PORTSTARTCODE = UZ7HOStartPort;
PortEntry->PORTCONTROL.PORTSTOPCODE = UZ7HOStopPort;
PortEntry->PORTCONTROL.PROTOCOL = 10;
PortEntry->PORTCONTROL.UICAPABLE = 1;
@ -1598,6 +1661,9 @@ BOOL CALLBACK uz_enum_windows_callback(HWND handle, LPARAM lParam)
int ConnecttoUZ7HO(int port)
{
if (TNCInfo[port]->CONNECTING || TNCInfo[port]->PortRecord->PORTCONTROL.PortStopped)
return 0;
_beginthread(ConnecttoUZ7HOThread, 0, (void *)(size_t)port);
return 0;
}

3
VARA.c
View File

@ -378,6 +378,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
VARASendCommand(TNC, TNC->ConnectCmd, TRUE);
TNC->Streams[0].Connecting = TRUE;
TNC->Streams[0].ConnectTime = time(NULL);
memset(TNC->Streams[0].RemoteCall, 0, 10);
memcpy(TNC->Streams[0].RemoteCall, &TNC->ConnectCmd[8], strlen(TNC->ConnectCmd)-10);
@ -401,6 +402,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
PMSGWITHLEN buffptr = GetBuff();
TNC->Streams[0].Connecting = FALSE;
TNC->Streams[0].ConnectTime = time(NULL);
if (buffptr == 0) return (0); // No buffers, so ignore
@ -1577,6 +1579,7 @@ Lost:
TNC->CONNECTED = FALSE;
TNC->Alerted = FALSE;
TNC->ConnectPending = FALSE;
if (TNC->PTTMode)
Rig_PTT(TNC, FALSE); // Make sure PTT is down

View File

@ -10,14 +10,14 @@
#endif
#define KVers 6,0,23,33
#define KVerstring "6.0.23.33\0"
#define KVers 6,0,23,34
#define KVerstring "6.0.23.34\0"
#ifdef CKernel
#define Vers KVers
#define Verstring KVerstring
#define Datestring "November 2022"
#define Datestring "December 2022"
#define VerComments "G8BPQ Packet Switch (C Version)" KVerstring
#define VerCopyright "Copyright © 2001-2022 John Wiseman G8BPQ\0"
#define VerDesc "BPQ32 Switch\0"

View File

@ -2832,6 +2832,7 @@ INT_PTR CALLBACK ConfigDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM
#ifdef LINBPQ
#include <signal.h>
#include <sys/types.h>
#endif

View File

@ -555,6 +555,7 @@ typedef struct PORTCONTROL
BOOL (FAR * PORTSTOPCODE)(); // Temporarily Stop Port
BOOL (FAR * PORTSTARTCODE)(); // Restart Port
BOOL PortStopped; // STOPPORT command used
BOOL PortSuspended; // Suspended by interlock
char PORTDESCRIPTION[31];// TEXT DESCRIPTION OF FREQ/SPEED ETC (31 so null terminated)

View File

@ -398,6 +398,7 @@ struct FreeDataINFO
int TXLevel;
int Explorer; // Enable reporting to Freedata Explorer
char SSIDList[256];
char * SSIDS[16];
};

9
upnp.c
View File

@ -33,12 +33,17 @@ POSSIBILITY OF SUCH DAMAGE.
#define MINIUPNP_STATICLIB
#include <stdio.h>
#ifdef _WIN32
#include "upnpcommands.h"
#include "miniupnpc.h"
#include "upnperrors.h"
#include <stdio.h>
#ifdef _WIN32
#include <winsock2.h>
#else
#include <miniupnpc/upnpcommands.h>
#include <miniupnpc/miniupnpc.h>
#include <miniupnpc/upnperrors.h>
#include <stdio.h>
#endif
int AddMap(char * controlURL, char * eport, char * iport, char * proto);