diff --git a/Config.h b/Config.h index baad81d..fb9f74d 100644 --- a/Config.h +++ b/Config.h @@ -73,4 +73,11 @@ // Do not use if employing an external hardware watchdog // #define CONSTANT_SRV_LED +// Use the YSF and P25 LEDs for NXDN +// #define USE_ALTERNATE_NXDN_LEDS + +// Use the D-Star and DMR LEDs for POCSAG +// #define USE_ALTERNATE_POCSAG_LEDS + #endif + diff --git a/IODue.cpp b/IODue.cpp index d568e1d..e57de1a 100644 --- a/IODue.cpp +++ b/IODue.cpp @@ -236,12 +236,22 @@ void CIO::setP25Int(bool on) void CIO::setNXDNInt(bool on) { +#if defined(USE_ALTERNATE_NXDN_LEDS) + digitalWrite(PIN_YSF, on ? HIGH : LOW); + digitalWrite(PIN_P25, on ? HIGH : LOW); +#else digitalWrite(PIN_NXDN, on ? HIGH : LOW); +#endif } void CIO::setPOCSAGInt(bool on) { +#if defined(USE_ALTERNATE_POCSAG_LEDS) + digitalWrite(PIN_DSTAR, on ? HIGH : LOW); + digitalWrite(PIN_DMR, on ? HIGH : LOW); +#else digitalWrite(PIN_POCSAG, on ? HIGH : LOW); +#endif } void CIO::delayInt(unsigned int dly) diff --git a/IOSTM.cpp b/IOSTM.cpp index bb5a1d3..ff4d742 100644 --- a/IOSTM.cpp +++ b/IOSTM.cpp @@ -1115,14 +1115,31 @@ void CIO::setP25Int(bool on) void CIO::setNXDNInt(bool on) { +#if defined(USE_ALTERNATE_NXDN_LEDS) + GPIO_WriteBit(PORT_YSF, PIN_YSF, on ? Bit_SET : Bit_RESET); + GPIO_WriteBit(PORT_P25, PIN_P25, on ? Bit_SET : Bit_RESET); +#if defined(STM32F4_NUCLEO_MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO) + GPIO_WriteBit(PORT_MYSF, PIN_MYSF, on ? Bit_SET : Bit_RESET); + GPIO_WriteBit(PORT_MP25, PIN_MP25, on ? Bit_SET : Bit_RESET); +#endif +#else GPIO_WriteBit(PORT_NXDN, PIN_NXDN, on ? Bit_SET : Bit_RESET); #if defined(STM32F4_NUCLEO_MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO) GPIO_WriteBit(PORT_MNXDN, PIN_MNXDN, on ? Bit_SET : Bit_RESET); #endif +#endif } void CIO::setPOCSAGInt(bool on) { +#if defined(USE_ALTERNATE_POCSAG_LEDS) + GPIO_WriteBit(PORT_DSTAR, PIN_DSTAR, on ? Bit_SET : Bit_RESET); + GPIO_WriteBit(PORT_DMR, PIN_DMR, on ? Bit_SET : Bit_RESET); +#if defined(STM32F4_NUCLEO_MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO) + GPIO_WriteBit(PORT_MDSTAR, PIN_MDSTAR, on ? Bit_SET : Bit_RESET); + GPIO_WriteBit(PORT_MDMR, PIN_MDMR, on ? Bit_SET : Bit_RESET); +#endif +#endif } // Simple delay function for STM32 diff --git a/IOSTM_CMSIS.cpp b/IOSTM_CMSIS.cpp index 43e9d89..d996fce 100644 --- a/IOSTM_CMSIS.cpp +++ b/IOSTM_CMSIS.cpp @@ -436,12 +436,22 @@ void CIO::setP25Int(bool on) void CIO::setNXDNInt(bool on) { +#if defined(USE_ALTERNATE_NXDN_LEDS) + BB_YSF = !!on; + BB_P25 = !!on; +#else BB_NXDN = !!on; +#endif } void CIO::setPOCSAGInt(bool on) { +#if defined(USE_ALTERNATE_POCSAG_LEDS) + BB_DSTAR = !!on; + BB_DMR = !!on; +#else BB_POCSAG = !!on; +#endif } void CIO::delayInt(unsigned int dly) diff --git a/IOTeensy.cpp b/IOTeensy.cpp index cf07856..03c6ebf 100644 --- a/IOTeensy.cpp +++ b/IOTeensy.cpp @@ -219,14 +219,24 @@ void CIO::setP25Int(bool on) digitalWrite(PIN_P25, on ? HIGH : LOW); } -void CIO::setNXDNInt(bool on) +void CIO::setNXDNInt(bool on) { +#if defined(USE_ALTERNATE_NXDN_LEDS) + digitalWrite(PIN_YSF, on ? HIGH : LOW); + digitalWrite(PIN_P25, on ? HIGH : LOW); +#else digitalWrite(PIN_NXDN, on ? HIGH : LOW); +#endif } void CIO::setPOCSAGInt(bool on) { +#if defined(USE_ALTERNATE_POCSAG_LEDS) + digitalWrite(PIN_DSTAR, on ? HIGH : LOW); + digitalWrite(PIN_DMR, on ? HIGH : LOW); +#else digitalWrite(PIN_POCSAG, on ? HIGH : LOW); +#endif } void CIO::delayInt(unsigned int dly)