6.0.23.34
This commit is contained in:
parent
ebc845ec8c
commit
90bdcbe130
|
@ -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)
|
||||
{
|
||||
|
|
1
ARDOP.c
1
ARDOP.c
|
@ -1652,6 +1652,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
}
|
||||
|
||||
STREAM->Connecting = TRUE;
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
|
2
Bpq32.c
2
Bpq32.c
|
@ -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
|
||||
|
|
399
FreeDATA.c
399
FreeDATA.c
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
1
LinBPQ.c
1
LinBPQ.c
|
@ -1299,7 +1299,6 @@ int main(int argc, char * argv[])
|
|||
if (needAIS)
|
||||
SaveAIS();
|
||||
|
||||
|
||||
// Close Ports
|
||||
|
||||
PORTVEC=(PEXTPORTDATA)PORTTABLE;
|
||||
|
|
|
@ -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);
|
||||
|
|
76
UZ7HODrv.c
76
UZ7HODrv.c
|
@ -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
3
VARA.c
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
1
WINMOR.c
1
WINMOR.c
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -398,6 +398,7 @@ struct FreeDataINFO
|
|||
int TXLevel;
|
||||
int Explorer; // Enable reporting to Freedata Explorer
|
||||
char SSIDList[256];
|
||||
char * SSIDS[16];
|
||||
};
|
||||
|
||||
|
||||
|
|
9
upnp.c
9
upnp.c
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue