From 7ceadbf60b7eba8f861364f95bafe07145c7f2cc Mon Sep 17 00:00:00 2001 From: Chipster Date: Thu, 11 Jan 2024 16:12:45 -0600 Subject: [PATCH] Add support/modem FW for (new) DVMega EuroNode --- Config.h | 2 + IOSTM.cpp | 12 ++-- configs/DVMega_Euronode.h | 121 ++++++++++++++++++++++++++++++++++++++ scripts/build_fw.sh | 46 +++++++++------ version.h | 7 ++- 5 files changed, 162 insertions(+), 26 deletions(-) create mode 100644 configs/DVMega_Euronode.h diff --git a/Config.h b/Config.h index 61a5ff6..4bb5073 100644 --- a/Config.h +++ b/Config.h @@ -38,6 +38,8 @@ // #define SKYBRIDGE_HS // 9) LoneStar USB Stick ADF7071 // #define LONESTAR_USB +// 10) DVMega EuroNode Hotspot/board +// #define MMDVM_HS_HAT_DVM_EuroNode // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/IOSTM.cpp b/IOSTM.cpp index c621009..4a47c91 100644 --- a/IOSTM.cpp +++ b/IOSTM.cpp @@ -195,7 +195,7 @@ #define PIN_COS_LED GPIO_Pin_15 #define PORT_COS_LED GPIOB -#elif defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) +#elif defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(MMDVM_HS_HAT_DVM_EuroNode) #define PIN_SCLK GPIO_Pin_5 #define PORT_SCLK GPIOB @@ -275,7 +275,7 @@ #define PORT_COS_LED GPIOB #else -#error "Either PI_HAT_7021_REV_02, ZUMSPOT_ADF7021, LONESTAR_USB, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10, NANO_HOTSPOT, NANO_DV_REV11, D2RG_MMDVM_HS or SKYBRIDGE_HS need to be defined" +#error "Either PI_HAT_7021_REV_02, ZUMSPOT_ADF7021, LONESTAR_USB, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10, NANO_HOTSPOT, NANO_DV_REV11, D2RG_MMDVM_HS, MMDVM_HS_HAT_DVM_EuroNode or SKYBRIDGE_HS need to be defined" #endif extern "C" { @@ -297,7 +297,7 @@ extern "C" { } #endif -#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) +#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) || defined(MMDVM_HS_HAT_DVM_EuroNode) #if defined(BIDIR_DATA_PIN) void EXTI3_IRQHandler(void) { @@ -348,7 +348,7 @@ void CIO::Init() #if defined(PI_HAT_7021_REV_02) GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); -#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) +#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) || defined(MMDVM_HS_HAT_DVM_EuroNode) GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); #endif @@ -549,7 +549,7 @@ void CIO::Init() EXTI_InitStructure.EXTI_Line = EXTI_Line14; #endif -#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) +#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) || defined(MMDVM_HS_HAT_DVM_EuroNode) #if defined(BIDIR_DATA_PIN) // Connect EXTI3 Line @@ -601,7 +601,7 @@ void CIO::startInt() NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; -#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) +#elif defined(ZUMSPOT_ADF7021) || defined(LONESTAR_USB) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV11) || defined(D2RG_MMDVM_HS) || defined(SKYBRIDGE_HS) || defined(MMDVM_HS_HAT_DVM_EuroNode) #if defined(BIDIR_DATA_PIN) // Enable and set EXTI3 Interrupt diff --git a/configs/DVMega_Euronode.h b/configs/DVMega_Euronode.h new file mode 100644 index 0000000..9c42c5d --- /dev/null +++ b/configs/DVMega_Euronode.h @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2017,2018,2019,2020 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 +// 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) +// #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS +// 9) DVMEGA EuroNode NPI HotSpot +#define MMDVM_HS_HAT_DVM_EuroNode + +// 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 P25 LEDs for M17 +// #define USE_ALTERNATE_M17_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 + +// Enable UDID feature +#define ENABLE_UDID + +#endif diff --git a/scripts/build_fw.sh b/scripts/build_fw.sh index 30257c0..ac1dd7c 100755 --- a/scripts/build_fw.sh +++ b/scripts/build_fw.sh @@ -28,7 +28,7 @@ echo "*******************************************************" echo "********* Building ZUMspot Libre Kit firmware *********" echo "*******************************************************" cp ~/MMDVM_HS/configs/ZUMspot_Libre.h ~/MMDVM_HS/Config.h -make -j4 bl +make -j$(nproc) bl mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/zumspot_libre_fw.bin make clean @@ -37,7 +37,7 @@ echo "*************************************************" echo "********* Building ZUMspot RPi firmware *********" echo "*************************************************" cp ~/MMDVM_HS/configs/ZUMspot_RPi.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/zumspot_rpi_fw.bin make clean @@ -46,7 +46,7 @@ echo "*************************************************" echo "********* Building ZUMspot USB firmware *********" echo "*************************************************" cp ~/MMDVM_HS/configs/ZUMspot_USB.h ~/MMDVM_HS/Config.h -make -j4 bl +make -j$(nproc) bl mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/zumspot_usb_fw.bin make clean @@ -55,7 +55,7 @@ echo "****************************************************" echo "********* Building ZUMspot Duplex firmware *********" echo "****************************************************" cp ~/MMDVM_HS/configs/ZUMspot_duplex.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/zumspot_duplex_fw.bin make clean @@ -64,7 +64,7 @@ echo "******************************************************" echo "********* Building ZUMspot Dualband firmware *********" echo "******************************************************" cp ~/MMDVM_HS/configs/ZUMspot_dualband.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/zumspot_dualband_fw.bin make clean @@ -73,7 +73,7 @@ echo "**************************************************" echo "********* Building MMDVM_HS_Hat firmware *********" echo "**************************************************" cp ~/MMDVM_HS/configs/MMDVM_HS_Hat.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/mmdvm_hs_hat_fw.bin make clean @@ -82,7 +82,7 @@ echo "********************************************************************" echo "********* Building MMDVM_HS_Hat (12.288 MHz TCXO) firmware *********" echo "********************************************************************" cp ~/MMDVM_HS/configs/MMDVM_HS_Hat-12mhz.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/mmdvm_hs_hat_fw-12mhz.bin make clean @@ -91,7 +91,7 @@ echo "*******************************************************" echo "********* Building MMDVM_HS_Dual_Hat firmware *********" echo "*******************************************************" cp ~/MMDVM_HS/configs/MMDVM_HS_Dual_Hat.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/mmdvm_hs_dual_hat_fw.bin make clean @@ -100,7 +100,7 @@ echo "*************************************************************************" echo "********* Building MMDVM_HS_Dual_Hat (12.288 MHz TCXO) firmware *********" echo "*************************************************************************" cp ~/MMDVM_HS/configs/MMDVM_HS_Dual_Hat-12mhz.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/mmdvm_hs_dual_hat_fw-12mhz.bin make clean @@ -109,7 +109,7 @@ echo "**************************************************" echo "********* Building Nano hotSPOT firmware *********" echo "**************************************************" cp ~/MMDVM_HS/configs/Nano_hotSPOT.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/nano_hotspot_fw.bin make clean @@ -118,7 +118,7 @@ echo "************************************************" echo "********* Building NanoDV NPi firmware *********" echo "************************************************" cp ~/MMDVM_HS/configs/NanoDV_NPi.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/nanodv_npi_fw.bin make clean @@ -127,7 +127,7 @@ echo "************************************************" echo "********* Building NanoDV USB firmware *********" echo "************************************************" cp ~/MMDVM_HS/configs/NanoDV_USB.h ~/MMDVM_HS/Config.h -make -j4 bl +make -j$(nproc) bl mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/nanodv_usb_fw.bin make clean @@ -136,7 +136,7 @@ echo "***************************************************" echo "********* Building D2RG MMDVM_HS firmware *********" echo "***************************************************" cp ~/MMDVM_HS/configs/D2RG_MMDVM_HS.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/d2rg_mmdvm_hs.bin make clean @@ -145,7 +145,7 @@ echo "**********************************************************" echo "********* Building Generic Simplex GPIO firmware *********" echo "**********************************************************" cp ~/MMDVM_HS/configs/generic_gpio.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/generic_gpio_fw.bin make clean @@ -154,7 +154,7 @@ echo "*********************************************************" echo "********* Building Generic Duplex GPIO firmware *********" echo "*********************************************************" cp ~/MMDVM_HS/configs/generic_duplex_gpio.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/generic_duplex_gpio_fw.bin make clean @@ -163,7 +163,7 @@ echo "********************************************************" echo "********* Building Generic Duplex USB firmware *********" echo "********************************************************" cp ~/MMDVM_HS/configs/generic_duplex_usb.h ~/MMDVM_HS/Config.h -make -j4 bl +make -j$(nproc) bl mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/generic_duplex_usb_fw.bin make clean @@ -172,7 +172,7 @@ echo "******************************************************" echo "********* Building SkyBridge RPi HS firmware *********" echo "******************************************************" cp ~/MMDVM_HS/configs/SkyBridge_RPi.h ~/MMDVM_HS/Config.h -make -j4 +make -j$(nproc) mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/skybridge_rpi_fw.bin make clean @@ -181,8 +181,18 @@ echo "*************************************************" echo "********* Building LoneStar USB firmware *********" echo "*************************************************" cp ~/MMDVM_HS/configs/LoneStar_USB.h ~/MMDVM_HS/Config.h -make -j4 bl +make -j$(nproc) bl mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/lonestar_usb_fw.bin make clean +# Building DVMEGA EuroNode HS_HAT HS GPIO +echo "********************************************************************" +echo "********* Building DVMEGA EuroNode HS_HAT HS GPIO firmware *********" +echo "********************************************************************" +cp ~/MMDVM_HS/configs/DVMega_Euronode.h ~/MMDVM_HS/Config.h +make -j5 +mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/euronode_pi_fw.bin +make clean + +# Put "Stock" config back cp ~/MMDVM_HS/configs/ZUMspot_Libre.h ~/MMDVM_HS/Config.h diff --git a/version.h b/version.h index 4239a85..77981e9 100644 --- a/version.h +++ b/version.h @@ -46,6 +46,8 @@ #define BOARD_INFO "SkyBridge" #elif defined(LONESTAR_USB) #define BOARD_INFO "LS_USB_STICK" +#elif defined(MMDVM_HS_HAT_DVM_EuroNode) +#define BOARD_INFO "EuroNode" #else #define BOARD_INFO "MMDVM_HS" #endif @@ -71,13 +73,15 @@ #define FW_VERSION "v" VER_MAJOR "." VER_MINOR "." VER_REV " " VERSION_DATE -#define DESCRIPTION BOARD_INFO "-" FW_VERSION " " TCXO_FREQ "MHz " RF_DUAL RF_CHIP " FW by CA6JAU" +#define DESCRIPTION BOARD_INFO "-" FW_VERSION " " TCXO_FREQ "MHz " RF_DUAL RF_CHIP " FW by CA6JAU, G4KLX, W0CHP." #if defined(MADEBYMAKEFILE) #include "GitVersion.h" #endif #if defined(GITVERSION) +#define GIT_HASH_SIZE 10 +#define TRUNCATED_GITVERSION (GITVERSION[0:GIT_HASH_SIZE]) #define concat(a, b) a " GitID #" b "" const char HARDWARE[] = concat(DESCRIPTION, GITVERSION); #else @@ -86,4 +90,3 @@ const char HARDWARE[] = concat(DESCRIPTION, __TIME__, __DATE__); #endif #endif -