From c34f5d511d748a13a1542f57c4fd454651dcab49 Mon Sep 17 00:00:00 2001 From: Abad-Vera Date: Thu, 19 Sep 2019 16:39:49 -0700 Subject: [PATCH] Added changes for both ZUMspot duplex and dualband boards --- Config.h | 18 +++--- IO.cpp | 6 ++ SerialPort.cpp | 5 ++ configs/ZUMspot_dualband.h | 109 +++++++++++++++++++++++++++++++++++++ configs/ZUMspot_duplex.h | 20 +++---- scripts/build_fw.sh | 8 ++- 6 files changed, 146 insertions(+), 20 deletions(-) create mode 100644 configs/ZUMspot_dualband.h diff --git a/Config.h b/Config.h index d111d99..bdfceac 100644 --- a/Config.h +++ b/Config.h @@ -21,9 +21,9 @@ // Select one board (STM32F103 based boards) // 1) ZUMspot RPi or ZUMspot USB: -#define ZUMSPOT_ADF7021 +// #define ZUMSPOT_ADF7021 // 2) Libre Kit board or any homebrew hotspot with modified RF7021SE and Blue Pill STM32F103: -// #define LIBRE_KIT_ADF7021 +#define LIBRE_KIT_ADF7021 // 3) MMDVM_HS_Hat revisions 1.1, 1.2 and 1.4 (DB9MAT & DF2ET) // #define MMDVM_HS_HAT_REV12 // 4) MMDVM_HS_Dual_Hat revisions 1.0 (DB9MAT & DF2ET & DO7EN) @@ -37,7 +37,7 @@ #define ENABLE_ADF7021 // Enable full duplex support with dual ADF7021 (valid for homebrew hotspots only): -#define DUPLEX +// #define DUPLEX // TCXO of the ADF7021 // For 14.7456 MHz: @@ -50,14 +50,14 @@ #define AD7021_GAIN_AUTO // AGC automatic with high LNA linearity: // #define AD7021_GAIN_AUTO_LIN -// AGC OFF, lowest gain: +// AGC OFF, lowest gain: // #define AD7021_GAIN_LOW // AGC OFF, highest gain: // #define AD7021_GAIN_HIGH // Host communication selection: -#define STM32_USART1_HOST -// #define STM32_USB_HOST +// #define STM32_USART1_HOST +#define STM32_USB_HOST // #define STM32_I2C_HOST // I2C host address: @@ -67,7 +67,7 @@ #define ENABLE_SCAN_MODE // Send RSSI value: -#define SEND_RSSI_DATA +// #define SEND_RSSI_DATA // Enable Nextion LCD serial port repeater on USART2 (ZUMspot Libre Kit and ZUMspot RPi): #define SERIAL_REPEATER @@ -82,7 +82,7 @@ // Disable mode LEDs blink during scan mode: // #define QUIET_MODE_LEDS -// Engage a constant or descreet Service LED mode once repeater is running +// Engage a constant or descreet Service LED mode once repeater is running // #define CONSTANT_SRV_LED // #define CONSTANT_SRV_LED_INVERTED // #define DISCREET_SRV_LED @@ -95,7 +95,7 @@ // #define USE_ALTERNATE_POCSAG_LEDS // Enable for RPi 3B+, USB mode -// #define LONG_USB_RESET +#define LONG_USB_RESET // Enable modem debug messages #define ENABLE_DEBUG diff --git a/IO.cpp b/IO.cpp index 344244e..b419cfe 100644 --- a/IO.cpp +++ b/IO.cpp @@ -351,6 +351,12 @@ uint8_t CIO::setFreq(uint32_t frequency_rx, uint32_t frequency_tx, uint8_t rf_po // Turn on UHF side io.setBandVHF(false); } + } else if (!io.isDualBand()) { + // Duplex board + if ((frequency_tx < UHF1_MIN) || (frequency_rx < UHF1_MIN)) { + // Reject VHF frequencies + return 4U; + } } } diff --git a/SerialPort.cpp b/SerialPort.cpp index 0e8c8e3..1965a02 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -312,6 +312,11 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length) DEBUG1("Full duplex not supported with this firmware"); return 6U; } +#elif defined(DUPLEX) && defined(ZUMSPOT_ADF7021) + if (io.isDualBand() && m_duplex && m_calState == STATE_IDLE && modemState != STATE_DSTARCAL) { + DEBUG1("Full duplex is not supported on this board"); + return 6U; + } #endif dstarTX.setTXDelay(txDelay); diff --git a/configs/ZUMspot_dualband.h b/configs/ZUMspot_dualband.h new file mode 100644 index 0000000..f21c673 --- /dev/null +++ b/configs/ZUMspot_dualband.h @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#if !defined(CONFIG_H) +#define CONFIG_H + +// Select one board (STM32F103 based boards) +// 1) ZUMspot RPi or ZUMspot USB: +#define ZUMSPOT_ADF7021 +// 2) Libre Kit board or any homebrew hotspot with modified RF7021SE and Blue Pill STM32F103: +// #define LIBRE_KIT_ADF7021 +// 3) MMDVM_HS_Hat revisions 1.1, 1.2 and 1.4 (DB9MAT & DF2ET) +// #define MMDVM_HS_HAT_REV12 +// 4) MMDVM_HS_Dual_Hat revisions 1.0 (DB9MAT & DF2ET & DO7EN) +// #define MMDVM_HS_DUAL_HAT_REV10 +// 5) Nano hotSPOT (BI7JTA) +// #define NANO_HOTSPOT +// 6) NanoDV NPi or USB revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 + +// Enable ADF7021 support: +#define ENABLE_ADF7021 + +// Enable full duplex support with dual ADF7021 (valid for homebrew hotspots only): +// #define DUPLEX + +// TCXO of the ADF7021 +// For 14.7456 MHz: +#define ADF7021_14_7456 +// For 12.2880 MHz: +// #define ADF7021_12_2880 + +// Configure receiver gain for ADF7021 +// AGC automatic, default settings: +#define AD7021_GAIN_AUTO +// AGC automatic with high LNA linearity: +// #define AD7021_GAIN_AUTO_LIN +// AGC OFF, lowest gain: +// #define AD7021_GAIN_LOW +// AGC OFF, highest gain: +// #define AD7021_GAIN_HIGH + +// Host communication selection: +#define STM32_USART1_HOST +// #define STM32_USB_HOST +// #define STM32_I2C_HOST + +// I2C host address: +#define I2C_ADDR 0x22 + +// Enable mode detection: +#define ENABLE_SCAN_MODE + +// Send RSSI value: +#define SEND_RSSI_DATA + +// Enable Nextion LCD serial port repeater on USART2 (ZUMspot Libre Kit and ZUMspot RPi): +#define SERIAL_REPEATER +#define SERIAL_REPEATER_BAUD 9600 + +// Enable Nextion LCD serial port repeater on USART1 (Do not use with STM32_USART1_HOST enabled): +// #define SERIAL_REPEATER_USART1 + +// Enable P25 Wide modulation: +// #define ENABLE_P25_WIDE + +// Disable mode LEDs blink during scan mode: +// #define QUIET_MODE_LEDS + +// Engage a constant or descreet Service LED mode once repeater is running +// #define CONSTANT_SRV_LED +// #define CONSTANT_SRV_LED_INVERTED +// #define DISCREET_SRV_LED +// #define DISCREET_SRV_LED_INVERTED + +// 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 + +// Enable for RPi 3B+, USB mode +// #define LONG_USB_RESET + +// Enable modem debug messages +#define ENABLE_DEBUG + +// Disable frequency bands check +// #define DISABLE_FREQ_CHECK + +// Disable frequency restrictions (satellite, ISS, etc) +// #define DISABLE_FREQ_BAN + +#endif diff --git a/configs/ZUMspot_duplex.h b/configs/ZUMspot_duplex.h index 9270598..d111d99 100644 --- a/configs/ZUMspot_duplex.h +++ b/configs/ZUMspot_duplex.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018 by Andy Uribe CA6JAU + * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,9 +21,9 @@ // Select one board (STM32F103 based boards) // 1) ZUMspot RPi or ZUMspot USB: -// #define ZUMSPOT_ADF7021 +#define ZUMSPOT_ADF7021 // 2) Libre Kit board or any homebrew hotspot with modified RF7021SE and Blue Pill STM32F103: -#define LIBRE_KIT_ADF7021 +// #define LIBRE_KIT_ADF7021 // 3) MMDVM_HS_Hat revisions 1.1, 1.2 and 1.4 (DB9MAT & DF2ET) // #define MMDVM_HS_HAT_REV12 // 4) MMDVM_HS_Dual_Hat revisions 1.0 (DB9MAT & DF2ET & DO7EN) @@ -50,14 +50,14 @@ #define AD7021_GAIN_AUTO // AGC automatic with high LNA linearity: // #define AD7021_GAIN_AUTO_LIN -// AGC OFF, lowest gain: +// AGC OFF, lowest gain: // #define AD7021_GAIN_LOW // AGC OFF, highest gain: // #define AD7021_GAIN_HIGH // Host communication selection: -// #define STM32_USART1_HOST -#define STM32_USB_HOST +#define STM32_USART1_HOST +// #define STM32_USB_HOST // #define STM32_I2C_HOST // I2C host address: @@ -67,7 +67,7 @@ #define ENABLE_SCAN_MODE // Send RSSI value: -// #define SEND_RSSI_DATA +#define SEND_RSSI_DATA // Enable Nextion LCD serial port repeater on USART2 (ZUMspot Libre Kit and ZUMspot RPi): #define SERIAL_REPEATER @@ -82,7 +82,7 @@ // Disable mode LEDs blink during scan mode: // #define QUIET_MODE_LEDS -// Engage a constant or descreet Service LED mode once repeater is running +// Engage a constant or descreet Service LED mode once repeater is running // #define CONSTANT_SRV_LED // #define CONSTANT_SRV_LED_INVERTED // #define DISCREET_SRV_LED @@ -95,10 +95,10 @@ // #define USE_ALTERNATE_POCSAG_LEDS // Enable for RPi 3B+, USB mode -#define LONG_USB_RESET +// #define LONG_USB_RESET // Enable modem debug messages -// #define ENABLE_DEBUG +#define ENABLE_DEBUG // Disable frequency bands check // #define DISABLE_FREQ_CHECK diff --git a/scripts/build_fw.sh b/scripts/build_fw.sh index 1bae995..d395390 100755 --- a/scripts/build_fw.sh +++ b/scripts/build_fw.sh @@ -40,10 +40,16 @@ make clean # Building ZUMspot Duplex cp ~/MMDVM_HS/configs/ZUMspot_duplex.h ~/MMDVM_HS/Config.h -make bl +make mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/zumspot_duplex_fw.bin make clean +# Building ZUMspot Dualband +cp ~/MMDVM_HS/configs/ZUMspot_dualband.h ~/MMDVM_HS/Config.h +make +mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/zumspot_dualband_fw.bin +make clean + # Building MMDVM_HS_Hat cp ~/MMDVM_HS/configs/MMDVM_HS_Hat.h ~/MMDVM_HS/Config.h make