diff --git a/APRSCode.c b/APRSCode.c index e48fea7..8d70dd6 100644 --- a/APRSCode.c +++ b/APRSCode.c @@ -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) { diff --git a/ARDOP.c b/ARDOP.c index 6d9c843..ced421c 100644 --- a/ARDOP.c +++ b/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; } diff --git a/Bpq32.c b/Bpq32.c index a229b3a..ff2a8a6 100644 --- a/Bpq32.c +++ b/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 diff --git a/FreeDATA.c b/FreeDATA.c index 7bd4afc..a5a3133 100644 --- a/FreeDATA.c +++ b/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 - -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; } diff --git a/HFCommon.c b/HFCommon.c index 106228b..723d33d 100644 --- a/HFCommon.c +++ b/HFCommon.c @@ -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 diff --git a/HTTPcode.c b/HTTPcode.c index b18b374..6ea9e76 100644 --- a/HTTPcode.c +++ b/HTTPcode.c @@ -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); diff --git a/LinBPQ.c b/LinBPQ.c index 5fe7b61..cd1dd3d 100644 --- a/LinBPQ.c +++ b/LinBPQ.c @@ -1299,7 +1299,6 @@ int main(int argc, char * argv[]) if (needAIS) SaveAIS(); - // Close Ports PORTVEC=(PEXTPORTDATA)PORTTABLE; diff --git a/SCSPactor.c b/SCSPactor.c index 72de66c..f42dfcb 100644 --- a/SCSPactor.c +++ b/SCSPactor.c @@ -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); diff --git a/UZ7HODrv.c b/UZ7HODrv.c index 3710126..37c530d 100644 --- a/UZ7HODrv.c +++ b/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; } diff --git a/VARA.c b/VARA.c index eeba91c..edad83b 100644 --- a/VARA.c +++ b/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 diff --git a/Versions.h b/Versions.h index 74f6219..febfea0 100644 --- a/Versions.h +++ b/Versions.h @@ -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" diff --git a/WINMOR.c b/WINMOR.c index a18a97c..e09accb 100644 --- a/WINMOR.c +++ b/WINMOR.c @@ -2832,6 +2832,7 @@ INT_PTR CALLBACK ConfigDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM #ifdef LINBPQ #include +#include #endif diff --git a/asmstrucs.h b/asmstrucs.h index 2bf6a7e..a849dc3 100644 --- a/asmstrucs.h +++ b/asmstrucs.h @@ -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) diff --git a/tncinfo.h b/tncinfo.h index 1e8d573..f795d94 100644 --- a/tncinfo.h +++ b/tncinfo.h @@ -398,6 +398,7 @@ struct FreeDataINFO int TXLevel; int Explorer; // Enable reporting to Freedata Explorer char SSIDList[256]; + char * SSIDS[16]; }; diff --git a/upnp.c b/upnp.c index dcbd2a1..cdc68a4 100644 --- a/upnp.c +++ b/upnp.c @@ -33,12 +33,17 @@ POSSIBILITY OF SUCH DAMAGE. #define MINIUPNP_STATICLIB +#include +#ifdef _WIN32 #include "upnpcommands.h" #include "miniupnpc.h" #include "upnperrors.h" -#include -#ifdef _WIN32 #include +#else +#include +#include +#include +#include #endif int AddMap(char * controlURL, char * eport, char * iport, char * proto);