mirror of https://github.com/g4klx/MMDVM.git
Merge branch 'master' into dstar_correlator
This commit is contained in:
commit
4593951680
|
@ -4,3 +4,6 @@
|
|||
[submodule "STM32F7XX_Lib"]
|
||||
path = STM32F7XX_Lib
|
||||
url = https://github.com/juribeparada/STM32F7XX_Lib.git
|
||||
[submodule "STM32F10X_Lib"]
|
||||
path = STM32F10X_Lib
|
||||
url = https://github.com/shawnchain/STM32F10X_Lib.git
|
||||
|
|
8
Config.h
8
Config.h
|
@ -44,11 +44,13 @@
|
|||
// For the original Arduino Due pin layout
|
||||
// #define ARDUINO_DUE_PAPA
|
||||
|
||||
#if defined(STM32F1)
|
||||
// For the SQ6POG board
|
||||
#define STM32F1_POG
|
||||
#else
|
||||
// For the ZUM V1.0 and V1.0.1 boards pin layout
|
||||
#define ARDUINO_DUE_ZUM_V10
|
||||
|
||||
// For the SQ6POG board
|
||||
// #define STM32F1_POG
|
||||
#endif
|
||||
|
||||
// For the SP8NTH board
|
||||
// #define ARDUINO_DUE_NTH
|
||||
|
|
|
@ -25,7 +25,7 @@ STARTUP:=$(SYSDIR)/startup_stm32f105xc.S
|
|||
STARTUP_DEFS=
|
||||
|
||||
# Include directory for CMSIS
|
||||
CMSISDIR:=/opt/STM32Cube_FW_F1_V1.4.0/Drivers/CMSIS
|
||||
CMSISDIR:=STM32F10X_Lib/CMSIS
|
||||
|
||||
# Libraries
|
||||
LIBDIR:=
|
||||
|
@ -65,7 +65,7 @@ COMMON_FLAGS =-mthumb -mlittle-endian -mcpu=$(MCPU)
|
|||
COMMON_FLAGS+= -Wall
|
||||
COMMON_FLAGS+= -I. -I$(CMSISDIR)/Include -I$(CMSISDIR)/Device/ST/STM32F1xx/Include -I$(SYSDIR)
|
||||
COMMON_FLAGS+= $(addprefix -I,$(INCDIR))
|
||||
COMMON_FLAGS+= -D$(MCU) -DMADEBYMAKEFILE
|
||||
COMMON_FLAGS+= -D$(MCU) -DMADEBYMAKEFILE -DSTM32F1
|
||||
COMMON_FLAGS+= -Os -flto -ffunction-sections -fdata-sections
|
||||
COMMON_FLAGS+= -g
|
||||
# Assembler flags
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 417e0c2f4a4571ff836d2705d7551bd07ebbf777
|
|
@ -26,8 +26,29 @@
|
|||
|
||||
#elif defined(__SAM3X8E__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__)
|
||||
|
||||
|
||||
#if defined(__SAM3X8E__)
|
||||
extern "C" {
|
||||
#include <stdio.h>
|
||||
}
|
||||
|
||||
extern char UDID[];
|
||||
|
||||
#define FLASH_ACCESS_MODE_128 0
|
||||
#define EFC0 (0x400E0A00U)
|
||||
#define EFC ((Efc*)EFC0)
|
||||
|
||||
#endif
|
||||
|
||||
void CSerialPort::beginInt(uint8_t n, int speed)
|
||||
{
|
||||
#if defined(__SAM3X8E__)
|
||||
uint32_t _id[4];
|
||||
if (0 == efc_init(EFC, FLASH_ACCESS_MODE_128, 4))
|
||||
if (0 == efc_perform_read_sequence(EFC, EFC_FCMD_STUI, EFC_FCMD_SPUI, _id, 4))
|
||||
::sprintf(UDID,"%08X%08X%08X%08X",_id[0],_id[1],_id[2],_id[3]);
|
||||
#endif
|
||||
|
||||
switch (n) {
|
||||
case 1U:
|
||||
Serial.begin(speed);
|
||||
|
|
140
SerialPort.cpp
140
SerialPort.cpp
|
@ -92,7 +92,7 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U;
|
|||
#endif
|
||||
|
||||
#if defined(STM32F4_RPT_HAT_TGO)
|
||||
#define HW_TYPE "MMDVM_RPT_HAT_TGO"
|
||||
#define HW_TYPE "MMDVM RPT_HAT_TGO"
|
||||
#else
|
||||
#define HW_TYPE "MMDVM"
|
||||
#endif
|
||||
|
@ -109,6 +109,7 @@ const char HARDWARE[] = concat(HW_TYPE, DESCRIPTION, TCXO, __TIME__, __DATE__);
|
|||
|
||||
const uint8_t PROTOCOL_VERSION = 1U;
|
||||
|
||||
char UDID[] = "00000000000000000000000000000000";
|
||||
|
||||
CSerialPort::CSerialPort() :
|
||||
m_buffer(),
|
||||
|
@ -237,7 +238,7 @@ void CSerialPort::getStatus()
|
|||
|
||||
void CSerialPort::getVersion()
|
||||
{
|
||||
uint8_t reply[150U];
|
||||
uint8_t reply[192U];
|
||||
|
||||
reply[0U] = MMDVM_FRAME_START;
|
||||
reply[1U] = 0U;
|
||||
|
@ -249,6 +250,10 @@ void CSerialPort::getVersion()
|
|||
for (uint8_t i = 0U; HARDWARE[i] != 0x00U; i++, count++)
|
||||
reply[count] = HARDWARE[i];
|
||||
|
||||
reply[count++] = '\0';
|
||||
for (uint8_t i = 0U; UDID[i] != 0x00U; i++, count++)
|
||||
reply[count] = UDID[i];
|
||||
|
||||
reply[1U] = count;
|
||||
|
||||
writeInt(1U, reply, count);
|
||||
|
@ -385,157 +390,74 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
|
|||
switch (modemState) {
|
||||
case STATE_DMR:
|
||||
DEBUG1("Mode set to DMR");
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_DSTAR:
|
||||
DEBUG1("Mode set to D-Star");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_YSF:
|
||||
DEBUG1("Mode set to System Fusion");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_P25:
|
||||
DEBUG1("Mode set to P25");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_NXDN:
|
||||
DEBUG1("Mode set to NXDN");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_POCSAG:
|
||||
DEBUG1("Mode set to POCSAG");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_DSTARCAL:
|
||||
DEBUG1("Mode set to D-Star Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_DMRCAL:
|
||||
DEBUG1("Mode set to DMR Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_RSSICAL:
|
||||
DEBUG1("Mode set to RSSI Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_LFCAL:
|
||||
DEBUG1("Mode set to 80 Hz Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_DMRCAL1K:
|
||||
DEBUG1("Mode set to DMR BS 1031 Hz Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_P25CAL1K:
|
||||
DEBUG1("Mode set to P25 1011 Hz Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_DMRDMO1K:
|
||||
DEBUG1("Mode set to DMR MS 1031 Hz Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
case STATE_NXDNCAL1K:
|
||||
DEBUG1("Mode set to NXDN 1031 Hz Calibrate");
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
dstarRX.reset();
|
||||
ysfRX.reset();
|
||||
p25RX.reset();
|
||||
nxdnRX.reset();
|
||||
cwIdTX.reset();
|
||||
break;
|
||||
default:
|
||||
case STATE_POCSAGCAL:
|
||||
DEBUG1("Mode set to POCSAG Calibrate");
|
||||
break;
|
||||
default: // STATE_IDLE
|
||||
DEBUG1("Mode set to Idle");
|
||||
// STATE_IDLE
|
||||
break;
|
||||
}
|
||||
|
||||
if (modemState != STATE_DSTAR)
|
||||
dstarRX.reset();
|
||||
|
||||
if (modemState != STATE_DMR) {
|
||||
dmrIdleRX.reset();
|
||||
dmrDMORX.reset();
|
||||
dmrRX.reset();
|
||||
}
|
||||
|
||||
if (modemState != STATE_YSF)
|
||||
ysfRX.reset();
|
||||
|
||||
if (modemState != STATE_P25)
|
||||
p25RX.reset();
|
||||
|
||||
if (modemState != STATE_NXDN)
|
||||
nxdnRX.reset();
|
||||
|
||||
cwIdTX.reset();
|
||||
|
||||
m_modemState = modemState;
|
||||
|
||||
io.setMode();
|
||||
|
|
|
@ -834,9 +834,25 @@ void WriteUART5(const uint8_t* data, uint16_t length)
|
|||
|
||||
#endif
|
||||
/////////////////////////////////////////////////////////////////
|
||||
extern char UDID[];
|
||||
extern "C" {
|
||||
#include <stdio.h>
|
||||
}
|
||||
|
||||
void CSerialPort::beginInt(uint8_t n, int speed)
|
||||
{
|
||||
#if defined(STM32F4XX)
|
||||
uint32_t *id0 = (uint32_t *) (0x1FFF7A10);
|
||||
uint32_t *id1 = (uint32_t *) (0x1FFF7A10 + 0x04);
|
||||
uint32_t *id2 = (uint32_t *) (0x1FFF7A10 + 0x08);
|
||||
::sprintf(UDID, "%08X%08X%08X", *id0,*id1,*id2);
|
||||
#elif defined(STM32F7XX)
|
||||
uint32_t *id0 = (uint32_t *) (0x1FF0F420);
|
||||
uint32_t *id1 = (uint32_t *) (0x1FF0F420 + 0x04);
|
||||
uint32_t *id2 = (uint32_t *) (0x1FF0F420 + 0x08);
|
||||
::sprintf(UDID, "%08X%08X%08X", *id0,*id1,*id2);
|
||||
#endif
|
||||
|
||||
switch (n) {
|
||||
case 1U:
|
||||
#if defined(STM32F4_DISCOVERY) || defined(STM32F7_NUCLEO)
|
||||
|
|
|
@ -106,9 +106,21 @@ RAMFUNC void USART1TxData(const uint8_t* data, uint16_t length)
|
|||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
extern char UDID[];
|
||||
extern "C" {
|
||||
#include <stdio.h>
|
||||
}
|
||||
|
||||
void CSerialPort::beginInt(uint8_t n, int speed)
|
||||
{
|
||||
#if defined(STM32F105xC)
|
||||
uint16_t *id00 = (uint16_t *) (0x1FFFF7E8);
|
||||
uint16_t *id01 = (uint16_t *) (0x1FFFF7E8 + 0x02);
|
||||
uint32_t *id1 = (uint32_t *) (0x1FFFF7E8 + 0x04);
|
||||
uint32_t *id2 = (uint32_t *) (0x1FFFF7E8 + 0x08);
|
||||
::sprintf(UDID, "%04X%04X%08X%08X", *id00,*id01,*id1,*id2);
|
||||
#endif
|
||||
|
||||
switch (n) {
|
||||
case 1U:
|
||||
USART1Init(speed);
|
||||
|
|
Loading…
Reference in New Issue