diff --git a/ADF7021.cpp b/ADF7021.cpp index 6ccfc07..3d3d33f 100644 --- a/ADF7021.cpp +++ b/ADF7021.cpp @@ -1,6 +1,6 @@ /* * Copyright (C) 2016 by Jim McLaughlin KI6ZUM - * Copyright (C) 2016,2017,2018,2019 by Andy Uribe CA6JAU + * Copyright (C) 2016,2017,2018,2019,2020 by Andy Uribe CA6JAU * Copyright (C) 2017 by Danilo DB4PLE * * Some of the code is based on work of Guus Van Dooren PE1PLM: @@ -216,7 +216,7 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset) m_frequency_rx = m_pocsag_freq_tx; } - #if defined (ZUMSPOT_ADF7021) + #if defined (ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) io.checkBand(m_frequency_rx, m_frequency_tx); #endif diff --git a/BUILD.md b/BUILD.md index 79a09d0..8a6b265 100644 --- a/BUILD.md +++ b/BUILD.md @@ -489,6 +489,8 @@ Please check here for detailed instructions: - make d2rg_mmdvm_hs: upload the firmware to D2RG MMDVM_HS board (using internal serial port) +- make skybridge: upload the firmware to SkyBridge HotSpot board (using internal serial port) + - make dfu [devser=/dev/ttyXXX]: upload firmware using USB bootloader. "devser" is optional, and it corresponds to the USB serial port device name. This option permits to perform a reset to enter to booloader mode (DFU). If you don't use "devser", you have to press the reset button of the ZUMspot just before using this command. - make serial devser=/dev/ttyXXX: upload standard firmware using serial port bootloader method. diff --git a/Config.h b/Config.h index 842d5df..167f4e8 100644 --- a/Config.h +++ b/Config.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/IO.cpp b/IO.cpp index 805c21e..88d5501 100644 --- a/IO.cpp +++ b/IO.cpp @@ -1,6 +1,6 @@ /* * Copyright (C) 2015,2016 by Jonathan Naylor G4KLX - * Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU + * Copyright (C) 2016,2017,2018,2019,2020 by Andy Uribe CA6JAU * Copyright (C) 2017 by Danilo DB4PLE * This program is free software; you can redistribute it and/or modify @@ -307,7 +307,7 @@ bool CIO::hasRXOverflow() return m_rxBuffer.hasOverflowed(); } -#if defined(ZUMSPOT_ADF7021) +#if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) void CIO::checkBand(uint32_t frequency_rx, uint32_t frequency_tx) { if (!(io.hasSingleADF7021())) { // There are two ADF7021s on the board @@ -380,7 +380,7 @@ uint8_t CIO::setFreq(uint32_t frequency_rx, uint32_t frequency_tx, uint8_t rf_po #endif // Check if we have a single, dualband or duplex board -#if defined (ZUMSPOT_ADF7021) +#if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) if (checkZUMspot(frequency_rx, frequency_tx) > 0) { return 4U; } diff --git a/IO.h b/IO.h index fac37fe..23f19d9 100644 --- a/IO.h +++ b/IO.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2015,2016 by Jonathan Naylor G4KLX - * Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU + * Copyright (C) 2016,2017,2018,2019,2020 by Andy Uribe CA6JAU * Copyright (C) 2017 by Danilo DB4PLE * This program is free software; you can redistribute it and/or modify @@ -124,7 +124,7 @@ class CIO { uint32_t getWatchdog(void); void getIntCounter(uint16_t &int1, uint16_t &int2); void selfTest(void); -#if defined(ZUMSPOT_ADF7021) +#if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) void checkBand(uint32_t frequency_rx, uint32_t frequency_tx); uint8_t checkZUMspot(uint32_t frequency_rx, uint32_t frequency_tx); void setBandVHF(bool vhf_on); diff --git a/IOArduino.cpp b/IOArduino.cpp index 967a38c..835b2e8 100644 --- a/IOArduino.cpp +++ b/IOArduino.cpp @@ -1,6 +1,6 @@ /* * Copyright (C) 2015,2016 by Jonathan Naylor G4KLX - * Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU + * Copyright (C) 2016,2017,2018,2019,2020 by Andy Uribe CA6JAU * Copyright (C) 2017 by Danilo DB4PLE * This program is free software; you can redistribute it and/or modify @@ -28,7 +28,7 @@ // STM32F1 pin definitions, using STM32duino -#if defined(ZUMSPOT_ADF7021) +#if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) #define PIN_SCLK PB5 #define PIN_SREAD PB6 @@ -81,7 +81,7 @@ #define PIN_COS_LED PB15 #else -#error "Either ZUMSPOT_ADF7021, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10, NANO_HOTSPOT or NANO_DV_REV10 need to be defined" +#error "Either ZUMSPOT_ADF7021, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10, NANO_HOTSPOT, NANO_DV_REV10 or SKYBRIDGE_HS need to be defined" #endif #elif defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__) @@ -156,7 +156,7 @@ void CIO::Init() { #if defined (__STM32F1__) -#if defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) +#if defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) || defined(SKYBRIDGE_HS) afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY); #endif diff --git a/IOSTM.cpp b/IOSTM.cpp index 208cdeb..0610ad4 100644 --- a/IOSTM.cpp +++ b/IOSTM.cpp @@ -1,6 +1,6 @@ /* * Copyright (C) 2016 by Jim McLaughlin KI6ZUM - * Copyright (C) 2016,2017,2018,2019 by Andy Uribe CA6JAU + * Copyright (C) 2016,2017,2018,2019,2020 by Andy Uribe CA6JAU * Copyright (C) 2017 by Danilo DB4PLE * This program is free software; you can redistribute it and/or modify @@ -92,7 +92,7 @@ #define PIN_COS_LED GPIO_Pin_13 #define PORT_COS_LED GPIOB -#elif defined(ZUMSPOT_ADF7021) +#elif defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) #define PIN_SCLK GPIO_Pin_5 #define PORT_SCLK GPIOB @@ -258,7 +258,7 @@ #define PORT_COS_LED GPIOB #else -#error "Either PI_HAT_7021_REV_02, ZUMSPOT_ADF7021, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10, NANO_HOTSPOT, NANO_DV_REV11 or D2RG_MMDVM_HS need to be defined" +#error "Either PI_HAT_7021_REV_02, ZUMSPOT_ADF7021, 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" #endif extern "C" { @@ -280,7 +280,7 @@ extern "C" { } #endif -#elif defined(ZUMSPOT_ADF7021) || 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(ZUMSPOT_ADF7021) || 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) #if defined(BIDIR_DATA_PIN) void EXTI3_IRQHandler(void) { @@ -300,7 +300,7 @@ extern "C" { #if defined(DUPLEX) void EXTI9_5_IRQHandler(void) { - #if defined(ZUMSPOT_ADF7021) + #if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) if(EXTI_GetITStatus(EXTI_Line8)!=RESET) { io.interrupt2(); EXTI_ClearITPendingBit(EXTI_Line8); @@ -331,11 +331,11 @@ void CIO::Init() #if defined(PI_HAT_7021_REV_02) GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); -#elif defined(ZUMSPOT_ADF7021) || 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(ZUMSPOT_ADF7021) || 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) GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); #endif -#if defined(ZUMSPOT_ADF7021) +#if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) // Pin defines if the board has a single ADF7021 or double GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_Pin = PIN_SGL_DBL; @@ -532,7 +532,7 @@ void CIO::Init() EXTI_InitStructure.EXTI_Line = EXTI_Line14; #endif -#elif defined(ZUMSPOT_ADF7021) || 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(ZUMSPOT_ADF7021) || 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) #if defined(BIDIR_DATA_PIN) // Connect EXTI3 Line @@ -550,7 +550,7 @@ void CIO::Init() // Connect EXTI5 Line GPIO_EXTILineConfig(PORT_TXD2_INT, PIN_TXD2_INT); // Configure EXT5 line - #if defined(ZUMSPOT_ADF7021) + #if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) EXTI_InitStructure2.EXTI_Line = EXTI_Line8; #else EXTI_InitStructure2.EXTI_Line = EXTI_Line5; @@ -584,7 +584,7 @@ void CIO::startInt() NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; -#elif defined(ZUMSPOT_ADF7021) || 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(ZUMSPOT_ADF7021) || 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) #if defined(BIDIR_DATA_PIN) // Enable and set EXTI3 Interrupt @@ -754,7 +754,7 @@ void CIO::COS_pin(bool on) GPIO_WriteBit(PORT_COS_LED, PIN_COS_LED, on ? Bit_SET : Bit_RESET); } -#if defined(ZUMSPOT_ADF7021) +#if defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS) void CIO::setBandVHF(bool vhf_on) { GPIO_WriteBit(PORT_SET_BAND, PIN_SET_BAND, vhf_on ? Bit_SET : Bit_RESET); } diff --git a/Makefile b/Makefile index 9c944e2..b30ef7c 100644 --- a/Makefile +++ b/Makefile @@ -476,6 +476,8 @@ mmdvm_hs_hat: zumspot-pi mmdvm_hs_dual_hat: zumspot-pi +skybridge: zumspot-pi + hotpot-opipc_opipcplus: ifneq ($(wildcard /usr/local/bin/stm32flash),) /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 198,-199,199:-198,199 /dev/ttyS3 diff --git a/README.md b/README.md index bf0ebe9..ad55656 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ Download the script (*.sh) that matches with your ZUMspot/MMDVM_HS board: - install_fw_gen_gpio.sh: only for generic MMDVM_HS board (EA7GIB) with GPIO serial interface - install_fw_duplex_gpio.sh: only for MMDVM_HS with dual ADF7021 (EA7GIB) or generic dual ADF7021 board with GPIO serial interface - install_fw_duplex_usb.sh: only for MMDVM_HS with dual ADF7021 (EA7GIB) or generic dual ADF7021 board with USB interface +- install_fw_skybridge_rpi.sh: only for BridgeCom SkyBridge HotSpot For example, download the ZUMspot RPi upgrade script: diff --git a/SerialPort.cpp b/SerialPort.cpp index 1d5ff50..ff1238e 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -321,7 +321,7 @@ 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) +#elif defined(DUPLEX) && (defined(ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS)) if (io.isDualBand() && m_duplex && m_calState == STATE_IDLE && modemState != STATE_DSTARCAL) { DEBUG1("Full duplex is not supported on this board"); return 6U; diff --git a/configs/D2RG_MMDVM_HS.h b/configs/D2RG_MMDVM_HS.h index 9c55cf2..4a78537 100644 --- a/configs/D2RG_MMDVM_HS.h +++ b/configs/D2RG_MMDVM_HS.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/MMDVM_HS_Dual_Hat-12mhz.h b/configs/MMDVM_HS_Dual_Hat-12mhz.h index 88779ef..d54e9d5 100644 --- a/configs/MMDVM_HS_Dual_Hat-12mhz.h +++ b/configs/MMDVM_HS_Dual_Hat-12mhz.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU, Florian Wolters DF2ET + * Copyright (C) 2017,2018,2019,2020 by Andy Uribe CA6JAU, Florian Wolters DF2ET * * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/MMDVM_HS_Dual_Hat.h b/configs/MMDVM_HS_Dual_Hat.h index ace2477..2e09050 100644 --- a/configs/MMDVM_HS_Dual_Hat.h +++ b/configs/MMDVM_HS_Dual_Hat.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU, Florian Wolters DF2ET + * Copyright (C) 2017,2018,2019,2020 by Andy Uribe CA6JAU, Florian Wolters DF2ET * * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/MMDVM_HS_Hat-12mhz.h b/configs/MMDVM_HS_Hat-12mhz.h index 34d38f2..0675cf5 100644 --- a/configs/MMDVM_HS_Hat-12mhz.h +++ b/configs/MMDVM_HS_Hat-12mhz.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU, Florian Wolters DF2ET + * Copyright (C) 2017,2018,2019,2020 by Andy Uribe CA6JAU, Florian Wolters DF2ET * * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/MMDVM_HS_Hat.h b/configs/MMDVM_HS_Hat.h index 643a817..8a875a7 100644 --- a/configs/MMDVM_HS_Hat.h +++ b/configs/MMDVM_HS_Hat.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/NanoDV_NPI.h b/configs/NanoDV_NPI.h index 8f987d7..ec1c700 100644 --- a/configs/NanoDV_NPI.h +++ b/configs/NanoDV_NPI.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018,2019 by Andy Uribe CA6JAU + * Copyright (C) 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 @@ -34,6 +34,8 @@ #define NANO_DV_REV11 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/NanoDV_USB.h b/configs/NanoDV_USB.h index ce20034..e4934d8 100644 --- a/configs/NanoDV_USB.h +++ b/configs/NanoDV_USB.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018,2019 by Andy Uribe CA6JAU + * Copyright (C) 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 @@ -34,6 +34,8 @@ #define NANO_DV_REV11 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/Nano_hotSPOT.h b/configs/Nano_hotSPOT.h index 187cab6..2547921 100644 --- a/configs/Nano_hotSPOT.h +++ b/configs/Nano_hotSPOT.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018,2019 by Andy Uribe CA6JAU + * Copyright (C) 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/SkyBridge_RPi.h b/configs/SkyBridge_RPi.h new file mode 100644 index 0000000..b9fda1a --- /dev/null +++ b/configs/SkyBridge_RPi.h @@ -0,0 +1,116 @@ +/* + * 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 + +// 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 + +// Enable UDID feature +#define ENABLE_UDID + +#endif diff --git a/configs/ZUMspot_Libre.h b/configs/ZUMspot_Libre.h index 842d5df..167f4e8 100644 --- a/configs/ZUMspot_Libre.h +++ b/configs/ZUMspot_Libre.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_RPi.h b/configs/ZUMspot_RPi.h index f7cd5f6..6611d2f 100644 --- a/configs/ZUMspot_RPi.h +++ b/configs/ZUMspot_RPi.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_USB.h b/configs/ZUMspot_USB.h index b055bfb..0441521 100644 --- a/configs/ZUMspot_USB.h +++ b/configs/ZUMspot_USB.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_dualband.h b/configs/ZUMspot_dualband.h index d974f08..5fd896e 100644 --- a/configs/ZUMspot_dualband.h +++ b/configs/ZUMspot_dualband.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -32,6 +32,10 @@ // #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 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_duplex.h b/configs/ZUMspot_duplex.h index 80da2c5..25e8761 100644 --- a/configs/ZUMspot_duplex.h +++ b/configs/ZUMspot_duplex.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/generic_duplex_gpio.h b/configs/generic_duplex_gpio.h index 96428b9..42402c0 100644 --- a/configs/generic_duplex_gpio.h +++ b/configs/generic_duplex_gpio.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/generic_duplex_usb.h b/configs/generic_duplex_usb.h index b1e7b74..769e3fb 100644 --- a/configs/generic_duplex_usb.h +++ b/configs/generic_duplex_usb.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/generic_gpio.h b/configs/generic_gpio.h index e946f12..619393d 100644 --- a/configs/generic_gpio.h +++ b/configs/generic_gpio.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -34,6 +34,8 @@ // #define NANO_DV_REV10 // 7) D2RG MMDVM_HS RPi (BG3MDO, VE2GZI, CA6JAU) // #define D2RG_MMDVM_HS +// 8) BridgeCom SkyBridge HotSpot +// #define SKYBRIDGE_HS // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/scripts/build_fw.sh b/scripts/build_fw.sh index 4ea323e..5eab4f2 100755 --- a/scripts/build_fw.sh +++ b/scripts/build_fw.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2017,2018 by Andy Uribe CA6JAU +# 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 @@ -28,7 +28,7 @@ echo "*******************************************************" echo "********* Building ZUMspot Libre Kit firmware *********" echo "*******************************************************" cp ~/MMDVM_HS/configs/ZUMspot_Libre.h ~/MMDVM_HS/Config.h -make bl +make -j4 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 +make -j4 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 bl +make -j4 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 +make -j4 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 +make -j4 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 +make -j4 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 +make -j4 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 +make -j4 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 +make -j4 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 +make -j4 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 +make -j4 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 bl +make -j4 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 +make -j4 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 +make -j4 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 +make -j4 mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/generic_duplex_gpio_fw.bin make clean @@ -163,8 +163,17 @@ echo "********************************************************" echo "********* Building Generic Duplex USB firmware *********" echo "********************************************************" cp ~/MMDVM_HS/configs/generic_duplex_usb.h ~/MMDVM_HS/Config.h -make bl +make -j4 bl mv ~/MMDVM_HS/bin/mmdvm_f1bl.bin ~/MMDVM_HS/bin/generic_duplex_usb_fw.bin make clean +# Building SkyBridge RPi HS +echo "******************************************************" +echo "********* Building SkyBridge RPi HS firmware *********" +echo "******************************************************" +cp ~/MMDVM_HS/configs/SkyBridge_RPi.h ~/MMDVM_HS/Config.h +make -j4 +mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/skybridge_rpi_fw.bin +make clean + cp ~/MMDVM_HS/configs/ZUMspot_Libre.h ~/MMDVM_HS/Config.h diff --git a/scripts/install_fw_skybridge_rpi.sh b/scripts/install_fw_skybridge_rpi.sh new file mode 100755 index 0000000..50480ad --- /dev/null +++ b/scripts/install_fw_skybridge_rpi.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +# 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. + +# Configure latest version +FW_VERSION="v1.5.2" + +# Configure beta version +FW_VERSION_BETA="v1.5.1b" + +# Firmware filename +FW_FILENAME="skybridge_rpi_fw.bin" + +# Download latest firmware +if [ $1 = "beta" ]; then + echo "Downloading beta firmware..." + curl -OL https://github.com/juribeparada/MMDVM_HS/releases/download/$FW_VERSION_BETA/$FW_FILENAME +else + echo "Downloading latest firmware (stable)..." + curl -OL https://github.com/juribeparada/MMDVM_HS/releases/download/$FW_VERSION/$FW_FILENAME +fi + +# Download STM32F10X_Lib (only for binary tools) +if [ ! -d "./STM32F10X_Lib/utils" ]; then + git clone https://github.com/juribeparada/STM32F10X_Lib +fi + +# Configure vars depending on OS +if [ $(uname -s) == "Linux" ]; then + if [ $(uname -m) == "x86_64" ]; then + echo "Linux 64-bit detected" + DFU_RST="./STM32F10X_Lib/utils/linux64/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/linux64/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/linux64/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/linux64/stm32flash" + elif [ $(uname -m) == "armv7l" ]; then + echo "Raspberry Pi 3 detected" + DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash" + elif [ $(uname -m) == "armv6l" ]; then + echo "Raspberry Pi 2 or Pi Zero W detected" + DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash" + else + echo "Linux 32-bit detected" + DFU_RST="./STM32F10X_Lib/utils/linux/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/linux/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/linux/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/linux/stm32flash" + fi +fi + +if [ $(uname -s) == "Darwin" ]; then + echo "macOS detected" + DFU_RST="./STM32F10X_Lib/utils/macosx/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/macosx/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/macosx/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/macosx/stm32flash" +fi + +# Stop MMDVMHost process to free serial port +sudo killall MMDVMHost >/dev/null 2>&1 + +# Upload the firmware +eval sudo $STM32FLASH -v -w $FW_FILENAME -g 0x0 -R -i 20,-21,21:-20,21 /dev/ttyAMA0 + diff --git a/version.h b/version.h index 7b8019f..c0a6589 100644 --- a/version.h +++ b/version.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017,2018,2019 by Andy Uribe CA6JAU + * 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 @@ -24,8 +24,8 @@ #define VER_MAJOR "1" #define VER_MINOR "5" -#define VER_REV "1b" -#define VERSION_DATE "20191201" +#define VER_REV "2" +#define VERSION_DATE "20201108" #if defined(ZUMSPOT_ADF7021) #define BOARD_INFO "ZUMspot" @@ -39,6 +39,8 @@ #define BOARD_INFO "Nano_DV" #elif defined(D2RG_MMDVM_HS) #define BOARD_INFO "D2RG_MMDVM_HS" +#elif defined(SKYBRIDGE_HS) +#define BOARD_INFO "SkyBridge" #else #define BOARD_INFO "MMDVM_HS" #endif