diff --git a/Config.h b/Config.h
index 703d11c..ffdca3b 100644
--- a/Config.h
+++ b/Config.h
@@ -38,8 +38,8 @@
// Allow the use of the COS line to lockout the modem
// #define USE_COS_AS_LOCKOUT
-// Use pins to output the current mode
-// #define MODE_PINS
+// Use pins to output the current mode via LEDs
+// #define MODE_LEDS
// For the original Arduino Due pin layout
// #define ARDUINO_DUE_PAPA
@@ -57,8 +57,8 @@
// #define STM32F4_NUCLEO_MORPHO_HEADER
#define STM32F4_NUCLEO_ARDUINO_HEADER
-// Use separate mode pins to switch external filters/bandwidth for example
-// #define STM32F4_NUCLEO_MODE_PINS
+// Use separate mode pins to switch external channel/filters/bandwidth for example
+// #define MODE_PINS
// For the VK6MST Pi3 Shield communicating over i2c. i2c address & speed defined in i2cTeensy.cpp
// #define VK6MST_TEENSY_PI3_SHIELD_I2C
diff --git a/Globals.h b/Globals.h
index c1fce11..00e349f 100644
--- a/Globals.h
+++ b/Globals.h
@@ -97,6 +97,12 @@ const uint16_t RX_BLOCK_SIZE = 2U;
const uint16_t TX_RINGBUFFER_SIZE = 1000U;
const uint16_t RX_RINGBUFFER_SIZE = 1200U;
+#if defined(STM32F105xC) || defined(__MK20DX256__)
+const uint16_t TX_BUFFER_LEN = 2000U;
+#else
+const uint16_t TX_BUFFER_LEN = 4000U;
+#endif
+
extern MMDVM_STATE m_modemState;
extern bool m_dstarEnable;
diff --git a/IODue.cpp b/IODue.cpp
index b777020..9cf1ddc 100644
--- a/IODue.cpp
+++ b/IODue.cpp
@@ -95,7 +95,7 @@ void CIO::initInt()
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_COS, INPUT);
-#if defined(MODE_PINS)
+#if defined(MODE_LEDS)
// Set up the mode output pins
pinMode(PIN_DSTAR, OUTPUT);
pinMode(PIN_DMR, OUTPUT);
diff --git a/IOSTM.cpp b/IOSTM.cpp
index d94e643..2cd9319 100644
--- a/IOSTM.cpp
+++ b/IOSTM.cpp
@@ -433,6 +433,7 @@ DMR PC6 output
YSF PC7 output
P25 PC8 output
NXDN PC9 output
+POCSAG PA8 output
RX PA0 analog input
RSSI PA7 analog input
@@ -465,9 +466,9 @@ EXT_CLK PA15 input
#define PORT_NXDN GPIOC
#define RCC_Per_NXDN RCC_AHB1Periph_GPIOC
-#define PIN_POCSAG GPIO_Pin_12
-#define PORT_POCSAG GPIOB
-#define RCC_Per_POCSAG RCC_AHB1Periph_GPIOB
+#define PIN_POCSAG GPIO_Pin_8
+#define PORT_POCSAG GPIOA
+#define RCC_Per_POCSAG RCC_AHB1Periph_GPIOA
#define PIN_DSTAR GPIO_Pin_15
#define PORT_DSTAR GPIOB
@@ -514,13 +515,14 @@ DMR PB4 output CN10 Pin27
YSF PB5 output CN10 Pin29
P25 PB3 output CN10 Pin31
NXDN PA10 output CN10 Pin33
-POCSAG PB12 output
+POCSAG PB12 output CN10 Pin16
MDSTAR PC4 output CN10 Pin34
MDMR PC5 output CN10 Pin6
MYSF PC2 output CN7 Pin35
MP25 PC3 output CN7 Pin37
MNXDN PC6 output CN10 Pin4
+MPOCSAG PC8 output CN10 Pin2
RX PA0 analog input CN7 Pin28
RSSI PA1 analog input CN7 Pin30
@@ -569,7 +571,7 @@ EXT_CLK PA15 input CN7 Pin17
#define PORT_YSF GPIOB
#define RCC_Per_YSF RCC_AHB1Periph_GPIOB
-#if defined(STM32F4_NUCLEO_MODE_PINS)
+#if defined(MODE_PINS)
#define PIN_MP25 GPIO_Pin_3
#define PORT_MP25 GPIOC
#define RCC_Per_MP25 RCC_AHB1Periph_GPIOC
@@ -589,6 +591,10 @@ EXT_CLK PA15 input CN7 Pin17
#define PIN_MYSF GPIO_Pin_2
#define PORT_MYSF GPIOC
#define RCC_Per_MYSF RCC_AHB1Periph_GPIOC
+
+#define PIN_MPOCSAG GPIO_Pin_8
+#define PORT_MPOCSAG GPIOC
+#define RCC_Per_MPOCSAG RCC_AHB1Periph_GPIOC
#endif
#define PIN_EXT_CLK GPIO_Pin_15
@@ -761,7 +767,7 @@ EXT_CLK PA15 input CN11 Pin17
#define PORT_YSF GPIOB
#define RCC_Per_YSF RCC_AHB1Periph_GPIOB
-#if defined(STM32F4_NUCLEO_MODE_PINS)
+#if defined(MODE_PINS)
#define PIN_MP25 GPIO_Pin_3
#define PORT_MP25 GPIOC
#define RCC_Per_MP25 RCC_AHB1Periph_GPIOC
@@ -814,6 +820,7 @@ NXDN PB9 output
DSTAR PB6 output
DMR PB5 output
YSF PB7 output
+POCSAG PC10 output
RX PB0 analog input
RSSI PB1 analog input
@@ -859,6 +866,10 @@ EXT_CLK PA15 input
#define PORT_YSF GPIOB
#define RCC_Per_YSF RCC_AHB1Periph_GPIOB
+#define PIN_POCSAG GPIO_Pin_10
+#define PORT_POCSAG GPIOC
+#define RCC_Per_POCSAG RCC_AHB1Periph_GPIOC
+
#define PIN_EXT_CLK GPIO_Pin_15
#define SRC_EXT_CLK GPIO_PinSource15
#define PORT_EXT_CLK GPIOA
@@ -926,7 +937,7 @@ void CIO::initInt()
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_Init(PORT_COS, &GPIO_InitStruct);
-#if defined(MODE_PINS)
+#if defined(MODE_LEDS)
// DSTAR pin
RCC_AHB1PeriphClockCmd(RCC_Per_DSTAR, ENABLE);
GPIO_InitStruct.GPIO_Pin = PIN_DSTAR;
@@ -968,7 +979,7 @@ void CIO::initInt()
#endif
#endif
-#if defined(STM32F4_NUCLEO_MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
+#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
// DSTAR mode pin
RCC_AHB1PeriphClockCmd(RCC_Per_MDSTAR, ENABLE);
GPIO_InitStruct.GPIO_Pin = PIN_MDSTAR;
@@ -1218,7 +1229,7 @@ void CIO::setCOSInt(bool on)
void CIO::setDStarInt(bool on)
{
GPIO_WriteBit(PORT_DSTAR, PIN_DSTAR, on ? Bit_SET : Bit_RESET);
-#if defined(STM32F4_NUCLEO_MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
+#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
GPIO_WriteBit(PORT_MDSTAR, PIN_MDSTAR, on ? Bit_SET : Bit_RESET);
#endif
}
@@ -1226,7 +1237,7 @@ void CIO::setDStarInt(bool on)
void CIO::setDMRInt(bool on)
{
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)
+#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
GPIO_WriteBit(PORT_MDMR, PIN_MDMR, on ? Bit_SET : Bit_RESET);
#endif
}
@@ -1234,7 +1245,7 @@ void CIO::setDMRInt(bool on)
void CIO::setYSFInt(bool on)
{
GPIO_WriteBit(PORT_YSF, PIN_YSF, on ? Bit_SET : Bit_RESET);
-#if defined(STM32F4_NUCLEO_MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
+#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
GPIO_WriteBit(PORT_MYSF, PIN_MYSF, on ? Bit_SET : Bit_RESET);
#endif
}
@@ -1242,7 +1253,7 @@ void CIO::setYSFInt(bool on)
void CIO::setP25Int(bool on)
{
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)
+#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
GPIO_WriteBit(PORT_MP25, PIN_MP25, on ? Bit_SET : Bit_RESET);
#endif
}
@@ -1252,13 +1263,13 @@ 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)
+#if defined(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)
+#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
GPIO_WriteBit(PORT_MNXDN, PIN_MNXDN, on ? Bit_SET : Bit_RESET);
#endif
#endif
@@ -1269,13 +1280,13 @@ 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)
+#if defined(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
#else
GPIO_WriteBit(PORT_POCSAG, PIN_POCSAG, on ? Bit_SET : Bit_RESET);
-#if defined(STM32F4_NUCLEO_MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
+#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && defined(STM32F4_NUCLEO)
GPIO_WriteBit(PORT_MPOCSAG, PIN_MPOCSAG, on ? Bit_SET : Bit_RESET);
#endif
#endif
diff --git a/IOTeensy.cpp b/IOTeensy.cpp
index 6b9101c..ea746a6 100644
--- a/IOTeensy.cpp
+++ b/IOTeensy.cpp
@@ -64,7 +64,7 @@ void CIO::initInt()
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_COS, INPUT);
-#if defined(MODE_PINS)
+#if defined(MODE_LEDS)
// Set up the mode output pins
pinMode(PIN_DSTAR, OUTPUT);
pinMode(PIN_DMR, OUTPUT);
diff --git a/MMDVM_STM32F4xx.coproj b/MMDVM_STM32F4xx.coproj
index b292998..aee9615 100644
--- a/MMDVM_STM32F4xx.coproj
+++ b/MMDVM_STM32F4xx.coproj
@@ -248,13 +248,13 @@
-
+
-
+
@@ -266,37 +266,37 @@
-
+
-
-
+
+
-
+
+
-
-
+
-
+
@@ -344,8 +344,8 @@
-
+
diff --git a/NXDNTX.cpp b/NXDNTX.cpp
index 507beb4..171d6b8 100644
--- a/NXDNTX.cpp
+++ b/NXDNTX.cpp
@@ -47,7 +47,7 @@ const uint8_t NXDN_PREAMBLE[] = {0x57U, 0x75U, 0xFDU};
const uint8_t NXDN_SYNC = 0x5FU;
CNXDNTX::CNXDNTX() :
-m_buffer(4000U),
+m_buffer(TX_BUFFER_LEN),
m_modFilter(),
m_modState(),
m_poBuffer(),
diff --git a/P25TX.cpp b/P25TX.cpp
index 737adef..6ea8849 100644
--- a/P25TX.cpp
+++ b/P25TX.cpp
@@ -49,7 +49,7 @@ const q15_t P25_LEVELD = -1260;
const uint8_t P25_START_SYNC = 0x77U;
CP25TX::CP25TX() :
-m_buffer(4000U),
+m_buffer(TX_BUFFER_LEN),
m_modFilter(),
m_lpFilter(),
m_modState(),
diff --git a/POCSAGTX.cpp b/POCSAGTX.cpp
index 946d4fc..f5406c2 100644
--- a/POCSAGTX.cpp
+++ b/POCSAGTX.cpp
@@ -35,7 +35,7 @@ const uint16_t SHAPING_FILTER_LEN = 12U;
const uint8_t POCSAG_SYNC = 0xAAU;
CPOCSAGTX::CPOCSAGTX() :
-m_buffer(4000U),
+m_buffer(TX_BUFFER_LEN),
m_modFilter(),
m_modState(),
m_poBuffer(),
diff --git a/SerialPort.cpp b/SerialPort.cpp
index b6f3e7a..ecc5bfc 100644
--- a/SerialPort.cpp
+++ b/SerialPort.cpp
@@ -90,7 +90,7 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U;
#define TCXO "NO TCXO"
#endif
-#define DESCRIPTION "MMDVM 20180724-48k (D-Star/DMR/System Fusion/P25/NXDN)"
+#define DESCRIPTION "MMDVM 20180822-48k (D-Star/DMR/System Fusion/P25/NXDN)"
#if defined(GITVERSION)
#define concat(a, b, c) a " " b " GitID #" c ""
diff --git a/SerialRB.h b/SerialRB.h
index 7b6b7b9..6f005a4 100644
--- a/SerialRB.h
+++ b/SerialRB.h
@@ -32,7 +32,11 @@ Boston, MA 02110-1301, USA.
#include
#endif
+#if defined(STM32F105xC) || defined(__MK20DX256__) || defined(STM32F4XX)
const uint16_t SERIAL_RINGBUFFER_SIZE = 370U;
+#else
+const uint16_t SERIAL_RINGBUFFER_SIZE = 1000U;
+#endif
class CSerialRB {
public:
diff --git a/YSFTX.cpp b/YSFTX.cpp
index e358c99..dc25e11 100644
--- a/YSFTX.cpp
+++ b/YSFTX.cpp
@@ -50,7 +50,7 @@ const uint8_t YSF_END_SYNC = 0xFFU;
const uint8_t YSF_HANG = 0x00U;
CYSFTX::CYSFTX() :
-m_buffer(4000U),
+m_buffer(TX_BUFFER_LEN),
m_modFilter(),
m_modState(),
m_poBuffer(),
@@ -69,6 +69,7 @@ m_txCount(0U)
m_modFilter.pState = m_modState;
}
+
void CYSFTX::process()
{
if (m_buffer.getData() == 0U && m_poLen == 0U && m_txCount == 0U)
@@ -92,7 +93,7 @@ void CYSFTX::process()
if (m_poLen > 0U) {
// Transmit YSF data.
uint16_t space = io.getSpace();
-
+
while (space > (4U * YSF_RADIO_SYMBOL_LENGTH)) {
uint8_t c = m_poBuffer[m_poPtr++];
writeByte(c);
diff --git a/mmdvmmenu.sh b/mmdvmmenu.sh
index 014e32b..7c31b4a 100755
--- a/mmdvmmenu.sh
+++ b/mmdvmmenu.sh
@@ -83,7 +83,7 @@ EOF
"3") sed -e 's/\/\/ #define EXTERNAL_OSC 14400000/#define EXTERNAL_OSC 14400000/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "14.400 MHz clock enabled";;
"4") sed -e 's/\/\/ #define EXTERNAL_OSC 19200000/#define EXTERNAL_OSC 19200000/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "19.200 MHz clock enabled";;
"5") sed -e 's/\/\/ #define USE_COS_AS_LOCKOUT /#define USE_COS_AS_LOCKOUT/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "COS as Lockout enabled";;
- "6") sed -e 's/\/\/ #define MODE_PINS/#define MODE_PINS/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "Mode pins enabled";;
+ "6") sed -e 's/\/\/ #define MODE_LEDS/#define MODE_LEDS/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "Mode pins enabled";;
"7") sed -e 's/\/\/ #define ARDUINO_DUE_PAPA/#define ARDUINO_DUE_PAPA/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "Layout for the PAPA board enabled";;
"8") sed -e 's/\/\/ #define ARDUINO_DUE_ZUM_V10/#define ARDUINO_DUE_ZUM_V10/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "Layout for ZUM V1.0 and V1.0.1 boards enabled";;
"9") sed -e 's/\/\/ #define ARDUINO_DUE_NTH/#define ARDUINO_DUE_NTH/' $conf > $conf.tmp && mv -f $conf.tmp $conf && echo "Layout for SP8NTH board enabled";;