The firmware for the MMDVM (Multi-Mode Digital Voice Modem)
Go to file
Jonathan Naylor 7f339556f4 Add the ST-Micro licences. 2023-10-29 20:32:18 +00:00
STM32F4XX_Lib Add the ST-Micro licences. 2023-10-29 20:32:18 +00:00
STM32F7XX_Lib Add the ST-Micro licences. 2023-10-29 20:32:18 +00:00
Tools Update filter generation script 2020-05-24 07:44:38 +02:00
pins Adding support for WA0EDA STM32-DVM-MTR2K v2.0d with FM LED, and a (commented) line to compile for 500000 serial port speed to support the WA0EDA MODEMs and others that use Armbian + AllWinner H2/H3 SOC that does not support 4600800. 2023-01-09 07:06:42 -06:00
.gitignore Add submodules for F4/F7 libs 2018-06-23 22:40:13 +02:00
.gitmodules Remove the submodules. 2023-10-28 16:32:48 +01:00
AX25Defines.h Increase the maximum AX25 frame size. 2020-06-24 13:14:10 +01:00
AX25Demodulator.cpp Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
AX25Demodulator.h Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
AX25Frame.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
AX25Frame.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
AX25RX.cpp Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
AX25RX.h Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
AX25TX.cpp The AX25 sine value ranges from 0-4095, and inside io.write() will perform the calculation (value * q15_t(txLevel) >> 15) which may exceed 4096 and cause the DAC Overflow error 2022-09-13 20:18:03 +08:00
AX25TX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
AX25Twist.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
AX25Twist.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CWIdTX.cpp Handle extended packet lengths. 2020-06-19 13:16:47 +01:00
CWIdTX.h Handle extended packet lengths. 2020-06-19 13:16:47 +01:00
CalDMR.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalDMR.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalDStarRX.cpp Use the D-Star correlator receiver. 2020-11-09 11:50:02 +00:00
CalDStarRX.h Use the D-Star correlator receiver. 2020-11-09 11:50:02 +00:00
CalDStarTX.cpp Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
CalDStarTX.h Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
CalFM.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalFM.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalM17.cpp Add the transmit function. 2021-10-27 21:28:43 +01:00
CalM17.h Add the transmit function. 2021-10-27 21:28:43 +01:00
CalNXDN.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalNXDN.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalP25.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalP25.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
CalPOCSAG.cpp Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
CalPOCSAG.h Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
CalRSSI.cpp Small tweaks. 2016-12-30 11:34:31 +00:00
CalRSSI.h Add the RSSI calibration mode. 2016-12-28 18:07:31 +00:00
Config.h Remove the submodules. 2023-10-28 16:32:48 +01:00
DMRDMORX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRDMORX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRDMOTX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRDMOTX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRDefines.h Add new interpolation for most modes and start positioning for P25 and YSF. 2017-02-06 21:02:45 +00:00
DMRIdleRX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRIdleRX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRRX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRRX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRSlotRX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRSlotRX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRSlotType.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRSlotType.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRTX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DMRTX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
DStarDefines.h Use the D-Star correlator receiver. 2020-11-09 11:50:02 +00:00
DStarRX.cpp Merge branch 'master' into M17_AX25_FM 2020-12-14 09:53:38 +00:00
DStarRX.h Merge branch 'master' into M17_AX25_FM 2020-12-14 09:53:38 +00:00
DStarTX.cpp Use the D-Star correlator receiver. 2020-11-09 11:50:02 +00:00
DStarTX.h Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
Debug.h Allow for hex dumps of modem data by the host. 2021-04-11 18:15:19 +01:00
FM.cpp Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
FM.h Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
FMBlanking.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMBlanking.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMCTCSSRX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMCTCSSRX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMCTCSSTX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMCTCSSTX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMDirectForm1.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMDownSampler.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMDownSampler.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMKeyer.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMKeyer.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMNoiseSquelch.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMNoiseSquelch.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMSamplePairPack.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMTimeout.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMTimeout.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMTimer.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMTimer.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMUpSampler.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
FMUpSampler.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
Globals.h Add the LL library files and clean up some indentation. 2023-10-28 20:30:36 +01:00
IO.cpp Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
IO.h Split the DMR and YSF filtering 2021-10-26 20:51:21 +01:00
IOPins.h RB STM32_DVM_F7 support 2021-04-18 09:50:46 -04:00
IOSTM.cpp Restart the RSSI ADC conversion in the STM32 interrupt to match the signal ADC. 2023-10-10 20:06:50 +01:00
LICENCE Initial commit 2016-01-14 18:57:21 +00:00
M17Defines.h Change the EOF sync pattern for simplicity. 2021-08-26 16:50:18 +01:00
M17RX.cpp Change the EOF sync pattern for simplicity. 2021-08-26 16:50:18 +01:00
M17RX.h Change the EOF sync pattern for simplicity. 2021-08-26 16:50:18 +01:00
M17TX.cpp Make the type correct for silence frames. 2023-10-10 20:03:01 +01:00
M17TX.h Change the EOT handling on TX. 2021-09-19 14:25:12 +01:00
MMDVM.cpp Add M17 calibration mode. 2021-10-27 19:37:58 +01:00
Makefile RB STM32_DVM_F7 support 2021-04-18 09:50:46 -04:00
NXDNDefines.h Add support for NXDN 4800. 2018-02-07 20:25:16 +00:00
NXDNRX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
NXDNRX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
NXDNTX.cpp Make the type correct for silence frames. 2023-10-10 20:03:01 +01:00
NXDNTX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
P25Defines.h fix proper PDU reception and processing; 2018-10-08 10:19:31 -04:00
P25RX.cpp Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
P25RX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
P25TX.cpp Make the type correct for silence frames. 2023-10-10 20:03:01 +01:00
P25TX.h Make AX.25, DMR, P25, NXDN and FM selectable at compile time. 2020-11-08 22:23:27 +00:00
POCSAGTX.cpp Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
POCSAGTX.h Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
README.md Remove Due, Teensy, and STM32F1xx support. 2023-10-27 16:23:49 +01:00
RingBuffer.h Made Get volatile 2020-05-10 08:01:10 +02:00
RingBuffer.impl.h Made Get volatile 2020-05-10 08:01:10 +02:00
STMUART.cpp Add the LL library files and clean up some indentation. 2023-10-28 20:30:36 +01:00
STMUART.h Add the LL library files and clean up some indentation. 2023-10-28 20:30:36 +01:00
SerialPort.cpp Simplify the serial repeater code. 2023-10-05 19:49:17 +01:00
SerialPort.h Simplify the serial repeater code. 2023-10-05 19:49:17 +01:00
SerialSTM.cpp Add the LL library files and clean up some indentation. 2023-10-28 20:30:36 +01:00
Utils.cpp Begin M17 support. 2020-10-14 10:52:30 +01:00
Utils.h Begin M17 support. 2020-10-14 10:52:30 +01:00
Version.h Add RSSI reporting to FM and AX.25 2023-08-02 17:34:52 +01:00
YSFDefines.h Add new interpolation for most modes and start positioning for P25 and YSF. 2017-02-06 21:02:45 +00:00
YSFRX.cpp Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
YSFRX.h Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
YSFTX.cpp Make the type correct for silence frames. 2023-10-10 20:03:01 +01:00
YSFTX.h Make D-Star, System Fusion, M17, and POCSAG optional. 2020-11-08 21:28:26 +00:00
openocd.cfg Added Makefile for STM32F1 with CMSIS 2017-03-31 00:52:24 +02:00
stm32f4xx_link.ld New linker script file for SMT32F4XX, some minor changes on Makefile 2016-11-13 17:52:01 -03:00
stm32f722_link.ld Separating linker script for F722 and F767 2017-11-04 15:28:38 -03:00
stm32f767_link.ld Separating linker script for F722 and F767 2017-11-04 15:28:38 -03:00

README.md

This is the source code of the MMDVM firmware that supports the D-Star, DMR, System Fusion, P25, NXDN, M17, POCSAG, AX.25, and FM modes.

It runs on the STM32F4xxx and STM32F7xxx processors. What these platforms have in common is the use of an ARM Cortex-M4, or M7 processors with a minimum clock speed greater of 160 MHz, and access to at least one analogue to digital converter, one digital to analogue converter, as well as a number of GPIO pins.

The STM32 support is supplied via the ARM GCC compiler.

This software is licenced under the GPL v2 and is primarily intended for amateur and educational use.

Portions of the ARM support code include the following copyright:

Copyright (c) 2011 - 2013 ARM LIMITED

All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of ARM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.