diff --git a/Config.h b/Config.h index a6d60a3..2027c33 100644 --- a/Config.h +++ b/Config.h @@ -58,7 +58,7 @@ // Frequencies such as 10.0 Mhz (48000 * 208.333) or 20 Mhz (48000 * 416.666) are not suitable. // // For 12 MHz -// #define EXTERNAL_OSC 12000000 +#define EXTERNAL_OSC 12000000 // For 12.288 MHz // #define EXTERNAL_OSC 12288000 // For 14.4 MHz @@ -66,10 +66,10 @@ // For 19.2 MHz // #define EXTERNAL_OSC 19200000 -// Use a higher baudrate for host communication. Required for FM network ! -// #define SERIAL_SPEED 115200 //suitable for most older boards (Arduino, Due STM32F1_POG etc). External FM will NOT work with this ! -// #define SERIAL_SPEED 230400 // Only works on newer board M4, M7, Teensy. External FM might work with this -#define SERIAL_SPEED 460800 // Only works on newer board M4, M7, Teensy. External FM should work with this +// Select a baud rate for host communication. The faster speeds are needed for external FM to work. +// #define SERIAL_SPEED 115200 // Suitable for most older boards (Arduino Due, STM32F1_POG, etc). External FM will NOT work with this! +// #define SERIAL_SPEED 230400 // Only works on newer boards like fast M4, M7, Teensy 3.x. External FM might work with this +#define SERIAL_SPEED 460800 // Only works on newer boards like fast M4, M7, Teensy 3.x. External FM should work with this // Allow the use of the COS line to lockout the modem // #define USE_COS_AS_LOCKOUT @@ -129,5 +129,11 @@ // Use the D-Star and YSF LEDs for FM #define USE_ALTERNATE_FM_LEDS +#if defined(STM32F1_POG) +// Slower boards need to run their serial at 115200 baud +#undef SERIAL_SPEED +#define SERIAL_SPEED 115200 +#endif + #endif diff --git a/IO.cpp b/IO.cpp index 7ad2067..e12110e 100644 --- a/IO.cpp +++ b/IO.cpp @@ -746,6 +746,7 @@ void CIO::setMode(MMDVM_STATE state) case STATE_M17: setM17Int(false); break; case STATE_POCSAG: setPOCSAGInt(false); break; case STATE_FM: setFMInt(false); break; + default: break; } switch (state) { @@ -757,6 +758,7 @@ void CIO::setMode(MMDVM_STATE state) case STATE_M17: setM17Int(true); break; case STATE_POCSAG: setPOCSAGInt(true); break; case STATE_FM: setFMInt(true); break; + default: break; } #endif diff --git a/M17RX.cpp b/M17RX.cpp index 1e0dc92..6e10e35 100644 --- a/M17RX.cpp +++ b/M17RX.cpp @@ -214,6 +214,8 @@ void CM17RX::processData(q15_t sample) case M17RXS_PACKET: DEBUG4("M17RX: packet sync found pos/centre/threshold", m_syncPtr, m_centreVal, m_thresholdVal); break; + default: + break; } uint8_t frame[M17_FRAME_LENGTH_BYTES + 3U]; @@ -249,6 +251,8 @@ void CM17RX::processData(q15_t sample) case M17RXS_PACKET: writeRSSIPacket(frame); break; + default: + break; } m_maxCorr = 0; diff --git a/SerialPort.cpp b/SerialPort.cpp index efeb4ca..3a51798 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -374,22 +374,41 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint16_t length) bool rxInvert = (data[0U] & 0x01U) == 0x01U; bool txInvert = (data[0U] & 0x02U) == 0x02U; bool pttInvert = (data[0U] & 0x04U) == 0x04U; +#if defined(MODE_YSF) bool ysfLoDev = (data[0U] & 0x08U) == 0x08U; +#endif bool useCOSAsLockout = (data[0U] & 0x20U) == 0x20U; bool simplex = (data[0U] & 0x80U) == 0x80U; m_debug = (data[0U] & 0x10U) == 0x10U; +#if defined(MODE_DSTAR) bool dstarEnable = (data[1U] & 0x01U) == 0x01U; +#endif +#if defined(MODE_DMR) bool dmrEnable = (data[1U] & 0x02U) == 0x02U; +#endif +#if defined(MODE_YSF) bool ysfEnable = (data[1U] & 0x04U) == 0x04U; +#endif +#if defined(MODE_P25) bool p25Enable = (data[1U] & 0x08U) == 0x08U; +#endif +#if defined(MODE_NXDN) bool nxdnEnable = (data[1U] & 0x10U) == 0x10U; +#endif +#if defined(MODE_FM) bool fmEnable = (data[1U] & 0x20U) == 0x20U; +#endif +#if defined(MODE_M17) bool m17Enable = (data[1U] & 0x40U) == 0x40U; - +#endif +#if defined(MODE_POCSAG) bool pocsagEnable = (data[2U] & 0x01U) == 0x01U; +#endif +#if defined(MODE_AX25) bool ax25Enable = (data[2U] & 0x02U) == 0x02U; +#endif uint8_t txDelay = data[3U]; if (txDelay > 50U) @@ -480,17 +499,28 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint16_t length) uint8_t fmTXLevel = data[16U]; uint8_t ax25TXLevel = data[17U]; +#if defined(MODE_YSF) uint8_t ysfTXHang = data[20U]; +#endif +#if defined(MODE_P25) uint8_t p25TXHang = data[21U]; +#endif +#if defined(MODE_NXDN) uint8_t nxdnTXHang = data[22U]; +#endif +#if defined(MODE_M17) uint8_t m17TXHang = data[23U]; +#endif +#if defined(MODE_DMR) uint8_t colorCode = data[26U]; if (colorCode > 15U) return 4U; uint8_t dmrDelay = data[27U]; +#endif +#if defined(MODE_AX25) int8_t ax25RXTwist = int8_t(data[28U]) - 128; if (ax25RXTwist < -4 || ax25RXTwist > 10) return 4U; @@ -498,6 +528,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint16_t length) uint8_t ax25TXDelay = data[29U]; uint8_t ax25SlotTime = data[30U]; uint8_t ax25PPersist = data[31U]; +#endif setMode(modemState); @@ -939,7 +970,7 @@ void CSerialPort::process() } writeSerialData(buffer, serialAvail - m_lastSerialAvail); m_lastSerialAvailCount = 0U; - } else if (serialAvail > 0U && serialAvail == m_lastSerialAvail) { + } else if (serialAvail > 0 && serialAvail == m_lastSerialAvail) { m_lastSerialAvailCount++; } else { m_lastSerialAvail = serialAvail; diff --git a/Version.h b/Version.h index 0c90f87..9841303 100644 --- a/Version.h +++ b/Version.h @@ -19,7 +19,7 @@ #if !defined(VERSION_H) #define VERSION_H -#define VERSION "20210617" +#define VERSION "20210719" #endif