diff --git a/src/host/calibrate/HostCal.cpp b/src/host/calibrate/HostCal.cpp index f69db7af..8ea8ebdc 100644 --- a/src/host/calibrate/HostCal.cpp +++ b/src/host/calibrate/HostCal.cpp @@ -137,12 +137,17 @@ int HostCal::run(int argc, char **argv) writeRFParams(); getStatus(); - uint8_t timeout = 0U; + uint32_t timeout = 0U; + uint32_t maxTimeout = 75U; // ~375ms + if (m_isPTY) { + maxTimeout = 2000U; // ~10s for PTY which can be slower to respond depending on SDR startup + } + while (!m_hasFetchedStatus) { m_modem->clock(0U); timeout++; - if (timeout >= 75U) { + if (timeout >= maxTimeout) { break; } diff --git a/src/host/setup/HostSetup.cpp b/src/host/setup/HostSetup.cpp index 66a4199f..60084852 100644 --- a/src/host/setup/HostSetup.cpp +++ b/src/host/setup/HostSetup.cpp @@ -6,7 +6,7 @@ * * Copyright (C) 2015,2016,2017 Jonathan Naylor, G4KLX * Copyright (C) 2017,2018 Andy Uribe, CA6JAU - * Copyright (C) 2021-2024 Bryan Biedenkapp, N2PLL + * Copyright (C) 2021-2026 Bryan Biedenkapp, N2PLL * */ #include "common/dmr/DMRDefines.h" @@ -23,6 +23,7 @@ #include "common/edac/CRC.h" #include "modem/port/ModemNullPort.h" #include "modem/port/UARTPort.h" +#include "modem/port/PseudoPTYPort.h" #include "common/Log.h" #include "common/Utils.h" #include "setup/HostSetup.h" @@ -122,6 +123,7 @@ HostSetup::HostSetup(const std::string& confFile) : m_p25TduTest(false), m_nxdnEnabled(false), m_isHotspot(false), + m_isPTY(false), m_isConnected(false), m_debug(false), m_mode(STATE_DMR_CAL_1K), @@ -800,7 +802,7 @@ bool HostSetup::createModem(bool consoleDisplay) if (portType == NULL_PORT) { modemPort = new port::ModemNullPort(); } - else if (portType == UART_PORT) { + else if (portType == UART_PORT || portType == PTY_PORT) { port::SERIAL_SPEED serialSpeed = port::SERIAL_115200; switch (uartSpeed) { case 1200: @@ -837,14 +839,22 @@ bool HostSetup::createModem(bool consoleDisplay) break; } - if (modemMode == MODEM_MODE_DFSI) { - modemPort = new port::UARTPort(uartPort, serialSpeed, false, true); - LogInfo(" RTS/DTR boot flags enabled"); - } else { - modemPort = new port::UARTPort(uartPort, serialSpeed, true, false); + if (portType == PTY_PORT) { + modemPort = new port::UARTPort(uartPort, serialSpeed, false, false); + LogInfo(" PTY Port: %s", uartPort.c_str()); + LogInfo(" PTY Speed: %u", uartSpeed); + m_isPTY = true; + } + else { + if (modemMode == MODEM_MODE_DFSI) { + modemPort = new port::UARTPort(uartPort, serialSpeed, false, true); + LogInfo(" RTS/DTR boot flags enabled"); + } else { + modemPort = new port::UARTPort(uartPort, serialSpeed, true, false); + } + LogInfo(" UART Port: %s", uartPort.c_str()); + LogInfo(" UART Speed: %u", uartSpeed); } - LogInfo(" UART Port: %s", uartPort.c_str()); - LogInfo(" UART Speed: %u", uartSpeed); } LogInfo(" RX Invert: %s", rxInvert ? "yes" : "no"); diff --git a/src/host/setup/HostSetup.h b/src/host/setup/HostSetup.h index 8d7c6545..9f5b68e5 100644 --- a/src/host/setup/HostSetup.h +++ b/src/host/setup/HostSetup.h @@ -156,6 +156,7 @@ protected: bool m_nxdnEnabled; bool m_isHotspot; + bool m_isPTY; bool m_isConnected; bool m_debug;