Commit Graph

625 Commits

Author SHA1 Message Date
Silvano Seva 4920921862 MD-UV3x0: fixed bug causing no FM rx after tx end. Fix #171
Thanks to turnrye and tarxvf for debugging and testing this.
2023-08-23 09:54:36 +02:00
k5jae c1a9db22b7 Made Brightness setting optional based on HW capabilities 2023-08-16 20:46:25 +02:00
Silvano Seva 6c12a326cc Fixed a bug in STM32 flash driver causing data not being written to the internal flash.
Solves #133.
2023-07-29 16:31:14 +02:00
Silvano Seva 4cd1fdfcf3 Moved gpio.h to peripherals 2023-07-21 19:27:14 +02:00
Silvano Seva 28122a3bf3 Moved gps.h to peripherals 2023-07-21 08:32:26 +02:00
Silvano Seva dcafd07085 Created "peripherals" include folder for non-mandatory drivers, moved rtc.h to peripherals folder. 2023-07-21 08:23:41 +02:00
Silvano Seva 009930f914 Moved get/set of current time to platform interface API 2023-07-21 07:58:29 +02:00
Silvano Seva b335aeb22c Adding folder with stub drivers for the OpenRTX interface APIs.
Stub drivers provide a safe default implementation of the OpenRTX interface
APIs and can be used both as a starting point to implement the actual drivers
and to allow compiling binary images without needing to provide an actual
implementation first.
2023-07-18 23:08:49 +02:00
Silvano Seva 65dde770e7 Changed return type of cps_readBankData() from "int32_t" to "int".
Made the return type of cps_readBankData() consistent with the one of
the other CPS API functions.
2023-07-18 23:04:31 +02:00
Silvano Seva a5b925e76f Small code cleanup in MD-UV3x0 HR_C6000 driver, temporary workaround to fix #129 2023-07-14 18:12:31 +02:00
Silvano Seva 8019b29947 Moved the setBacklightLevel() API function from platform.h to display.h 2023-07-14 12:26:47 +02:00
Silvano Seva 163a3df607 Refactored MDx backlight driver 2023-07-14 12:26:47 +02:00
Silvano Seva 313e9615a6 Removed platform_getCalibrationData() function because of limited usefulness.
Given that each radio driver loads its calibration data when initializing
and that the radio driver is strongly platform-specific, there is no strong
need for an intermediate redirection layer through the platform API.
2023-07-14 12:26:39 +02:00
Silvano Seva 6d58230c8c Module17: set threshold for detection of hardware rev 0.1e to 3V 2023-07-13 09:12:45 +02:00
Silvano Seva 933d291154 Made hwInfo struct const and statically initialized where dynamic loading is not needed.
Changed the hwInfo variable to static const in all the platformw where
the information are not loaded from NVM. Doing so puts the variable in
.rodata section and spares a tiny amount of RAM and FLASH.
2023-07-13 08:49:25 +02:00
Silvano Seva beca0ea093 Module17: implemented control of power on switch, introduced in rev 0.1e 2023-06-14 21:57:33 +02:00
Silvano Seva 694181df92 Module17: implemented detection of hardware version 2023-06-14 21:50:12 +02:00
Silvano Seva 1afd868d64 Renamed "lcd_type" field of hardare info struct to "hw_version" 2023-06-14 21:30:52 +02:00
Silvano Seva e93666a515 Implemented mic gain setting based on UI for Module 17 2023-05-29 22:12:40 +02:00
Mathis Schmieder 89aedef3ae Implemented non-volatile memory for settings on Module 17 2023-05-29 22:12:40 +02:00
Silvano Seva 2b7fc6e150 Implemented control of Module 17 MCP4551 digital wipers 2023-05-29 22:12:40 +02:00
Silvano Seva c862638fd1 Created calibration data structure for Module17 2023-05-29 22:12:40 +02:00
Wojciech Kaczmarski a9a6217d89 Removed RTC_PRESENT macro for Module 17 since hardware does not have an RTC 2023-05-29 22:12:40 +02:00
Silvano Seva bd8585c45d Fixed SDL-based display driver giving errors when compiled in BW pixel mode 2023-05-29 22:12:40 +02:00
Silvano Seva a89a7523cb Updated year in copyright headers 2023-02-08 16:33:02 +01:00
Silvano Seva 0692bea269 Partial fix for speaker pop when a voiceprompt begins 2022-10-31 08:41:31 +01:00
Silvano Seva 4411e0f3e8 Implemented audio path management API in GDx and Mod17 audio drivers, removed old audio management API 2022-10-28 09:47:47 +02:00
Silvano Seva 21481072e7 Moved audio management in M17 opmode handler to audio path system 2022-10-28 09:47:47 +02:00
Silvano Seva ebc7be39ab Implemented audio path management API in MDx audio driver 2022-10-28 09:47:47 +02:00
Silvano Seva 3c65f8834a Added to radio driver interface two functions to enable and disable AF output towards the speaker 2022-10-28 09:47:47 +02:00
Silvano Seva 714a0dd331 Implemented audio path management API in linux audio driver 2022-10-28 09:47:47 +02:00
vk7js 853db877e9 Link beep to volume knob appropriately. 2022-10-28 08:30:47 +02:00
vk7js 94424ce908 Adding beeps to MD380 platform.c. 2022-10-28 08:30:47 +02:00
vk7js eb89f5a55a Now play generic beep on any key press as well as different tones when navigating the menu, when menu item wraps, and when function key latches and unlatches if voice prompt level is set to beep. 2022-10-28 08:30:47 +02:00
vk7js a1e302b19d Got beeps working so long as you don't have ctcss set.
Reduced durations to sensible values.
2022-10-28 08:30:47 +02:00
vk7js 0298aa897b Implemented beeps on MD-UV3x0 platform driver. 2022-10-28 08:30:47 +02:00
Silvano Seva 26048b90d1 Bugfix and refactoring of linux output stream driver 2022-10-28 08:30:46 +02:00
Niccolò Izzo adbd1f070d Fixed bug in circular buffer management inside linux output stream driver, added unit test for circular buffer mode.
TG-220
2022-10-28 08:30:46 +02:00
Niccolò Izzo 58c1c3bbd6 Implemented circular buffer mode in linux output stream driver. 2022-10-28 08:30:46 +02:00
Niccolò Izzo 081b19e52c Implemented output audio stream driver for linux.
Implement outputStream backend on linux using Pulseaudio simple API.

TG-250
2022-10-28 08:30:46 +02:00
Silvano Seva b861beb0e6 Compiling miosix kernel from sources instead of linking against a pre-build image 2022-09-08 09:11:00 +02:00
Silvano Seva 3ab36f3738 Fixed bug in MD3x0 radio driver causing underdeviation of M17 signal 2022-08-28 10:13:22 +02:00
Silvano Seva e2137eae23 Implemented CRC of persistent data (settings and VFO state) in MDx devices 2022-08-11 17:02:04 +02:00
Silvano Seva 4b0326b1c8 Fixed missing NOLOAD directive in STM32F405 linker scripts causing the linker to emit initialisation data for the BSS section at address 0x2000 0000 and, consequently, making the flasher to wipe up the settings region in MCU's internal flash. 2022-08-11 09:26:11 +02:00
Silvano Seva 57349cba80 Changed allocation of display framebuffers from dynamic to static. Reorganised code in some of the display drivers. 2022-08-10 12:26:04 +02:00
Silvano Seva fdb2143157 Fixed bug affecting CTCSS RX squelch on MD-UV380. Solves #42 2022-08-02 12:54:51 +02:00
Silvano Seva 1fa13d63d8 Modified radio drivers so that bandwidth parameter in radio configuration is ignored for operating modes different from analog FM. Fixes #100 2022-08-01 18:29:20 +02:00
Silvano Seva 1bb574c4fa Reorganised graphics module and moved graphics.h from interfaces to core folder 2022-07-18 21:30:43 +02:00
Silvano Seva e29994f396 Fixed bad include in STM32 USB virtual COM driver causing clash of #define directives in xmodem implementation 2022-07-18 18:48:44 +02:00
Jacob McSwain 822fb84146 nvmem: md3x0: Explicitly read in calibration data
This should fix the frequency offset issues
2022-07-17 08:18:16 +02:00
Jacob McSwain 44dc9239be baseband: C5000: Set the mic input during early init
Otherwise, the "frequency wiggle" is present
2022-07-16 08:18:06 +02:00
Alain Carlucci 724e3196b4 Removed exceptions from linux input stream driver 2022-07-10 11:01:15 +02:00
Alain Carlucci 07394cc8a0 Linux input stream driver: bugfixes and completed test 2022-07-10 11:00:49 +02:00
Alain Carlucci 1d48e5e3e0 Implementation of linux input stream driver 2022-07-10 10:59:45 +02:00
Silvano Seva 7e8a960001 Fixed compiler warnings on MD-UV3x0 and MD-9600 targets 2022-07-10 09:23:37 +02:00
tarxvf fc6849afb9 Fixed linux RTC driver to make it return UTC time instead of local one 2022-07-10 09:15:10 +02:00
Silvano Seva d39783af2f Moved libc implementation of CPS I/O interface to drivers folder 2022-07-02 10:47:19 +02:00
Silvano Seva 28929aab90 Fixed memory leaks at linux emulator shutdown 2022-07-02 10:47:19 +02:00
Silvano Seva 3a288769ba Added the 'sleepUntil' API function to delays interface, allowing to put a thread in sleeping state until a certain absolute timepoint is reached 2022-07-02 10:47:19 +02:00
Silvano Seva 2fc89bf583 Renamed 'HAS_GPS' and 'HAS_RTC' to, respectively, 'GPS_PRESENT' and 'RTC_PRESENT' 2022-07-02 10:28:28 +02:00
Silvano Seva 52ead401bd Reorganised GPS task to make it a non-blocking task to be called periodically 2022-07-02 10:28:28 +02:00
Silvano Seva d16eb04696 Reorganised data structures and functions to manage date and time 2022-07-02 10:28:28 +02:00
Silvano Seva 45d919f50f Reorganised GPS driver to allow for non-blocking acquisition of NMEA sentences 2022-07-02 10:28:28 +02:00
Wojciech Kaczmarski f1b1dc2034 Changed battery type for Module17 to BAT_NONE 2022-06-21 12:06:20 +02:00
Silvano Seva cdbbaa0ef1 In Module17 output stream driver prevented the DAC channel for baseband output to be turned off when the speaker stream is activated. Fixes #78 2022-06-14 21:01:11 +02:00
Silvano Seva 6b2affe2cd Fixed setting of RSSI level value from linux emulator shell 2022-06-09 23:11:01 +02:00
Silvano Seva c966f82352 Fixed setting of battery voltage and transmission of PTT press signal from linux emulator shell 2022-06-09 23:02:38 +02:00
Silvano Seva 5c94d33b6b Reorganised source code of linux emulator main engine 2022-06-09 22:48:51 +02:00
Silvano Seva 763eb0c2be In SDL engine force display rendering when brightness texture is changed 2022-06-09 22:48:51 +02:00
Silvano Seva 980fa32e73 Reorganised source code of linux emulator SDL engine 2022-06-09 22:48:41 +02:00
Silvano Seva a1888ae19e Improved heap memory management in M17 demodulator class 2022-06-05 12:24:43 +02:00
Silvano Seva 316e588bc3 Updated copyright headers 2022-06-02 09:56:05 +02:00
Silvano Seva 14f2dccef9 Fixed compilation warnings 2022-06-02 09:04:04 +02:00
Niccolò Izzo ae12a2126a Implement codeplug read and write functions
Implemented remaining codeplug functions to read, write and insert
codeplug entries. Fix bugs in ui code. Add unit tests.

TG-428
2022-06-01 16:05:35 +02:00
Niccolò Izzo dc250a25d6 Implement new codeplug interface
The new codeplug interface was implemented for linux and retrofitted to
all the existing OpenRTX platforms. Limited unit testing was also
implemented.

TG-428
2022-06-01 15:59:27 +02:00
Silvano Seva cbd3922325 Cleanup and reorganisation of state header file, new OpenRTX CPS data structure 2022-06-01 15:04:17 +02:00
Silvano Seva da22d6ff64 Separated interface for CPS loading from the non volatile memory one 2022-06-01 14:56:33 +02:00
Silvano Seva c3cfaba4b2 Renamed zones into banks to align to M17 codeplug naming convention. 2022-06-01 14:56:22 +02:00
Silvano Seva 4367db53d0 Added configuration of AT1846S registers for digital modes in MD-UV3x0 driver. In M17 mode handler forced signal phase inversion at demodulator side also for MD-UV3x0 devices 2022-05-31 18:19:57 +02:00
Silvano Seva 2dc0106380 On MD-UV3x0 force silencing of HR_C6000 audio output when in M17 RX to avoid spillover of baseband signal towards the speaker. 2022-05-31 14:22:31 +02:00
Niccolò Izzo 6322cb49a4 Cleanup demodulator, improved quantization log
Unified offset and phase variable to reduce the chance of off-by-ones
between buffers. Improved logging on linux and module17 adding
quantization indices.

TG-81
2022-05-27 21:49:33 +02:00
Silvano Seva 46c988bdc2 Restoring priority level of output streams to PRIO_BEEP when the stream terminates, made M17Modulator::emitBaseband() wait for effective stream termination before returning when transmission stop is requested. Fixes #76 2022-05-27 21:49:33 +02:00
Mathis Schmieder 54112d4d7b Increased input gain on MD-UV3x0 type of radios 2022-05-27 21:48:47 +02:00
Silvano Seva 6b31a73f42 Corrected RRC gain and changed HR_C5000 modulation factor and input gain to have the correct 2.4kHz deviation when transmitting M17 with an MD3x0 radio 2022-05-27 21:48:47 +02:00
Silvano Seva a37e24c953 Fixed a buffer management bug inside linux input stream driver 2022-05-27 21:48:47 +02:00
Silvano Seva 086cb549c7 Stub implementation of output stream driver for linux emulator 2022-05-27 21:48:47 +02:00
Silvano Seva c7fbd98dc9 Stub implementatio of output stream driver for GDx devices 2022-05-27 21:48:47 +02:00
Silvano Seva fda0fed5e7 Moved constant specifying sample rate for M17 baseband decoding from hwconfig.h files to M17Demodulator class 2022-05-27 21:48:47 +02:00
Silvano Seva 9139b19aac Fixed bug in MDx input stream driver causing the SPI clock line towards the DMR chip to be set as analog input when an audio stream from the RF stage was opened 2022-05-27 21:48:47 +02:00
Silvano Seva 4b8685b853 Changed gain and added an offset at tx RRC stage only for Module 17 to compensate for an hardware bug 2022-05-27 21:48:47 +02:00
Silvano Seva d1b4973cc9 Fixed reset of DC bias on stream stop in Module 17 output stream driver, made parametric the gain of the RRC at modulator side 2022-05-27 21:48:47 +02:00
Silvano Seva 94fdf44954 Biased Module 17 baseband DAC output to Vdd/2 when idle 2022-05-27 21:48:47 +02:00
Silvano Seva 628c341712 Small improvements to MDx and Module 17 output stream drivers 2022-05-27 21:48:47 +02:00
Silvano Seva 1bc1316f7d Fixed bug to Module 17 input stream driver causing the thread waiting on inputStream_getData() to not be woken up when stream was stopped 2022-05-27 21:48:47 +02:00
Silvano Seva 12dc186129 Fixed bug in Module 17 output stream driver causing outputStream_sync() to hang when a stream was opened for the second time 2022-05-27 21:48:47 +02:00
Silvano Seva eb22e4b4b2 Default VFO channel for Module 17, making it start in M17 operating mode at boot 2022-05-27 21:48:47 +02:00
Silvano Seva 163a2ef06a Updated Module 17 output stream driver to support also double buffered mode 2022-05-27 21:48:47 +02:00
Silvano Seva 0df1dc4f7e Extended output stream API to support also circular double-buffered mode, implemented output stream driver for MDx 2022-05-27 21:48:47 +02:00
Silvano Seva 034f5d9ee9 Removed API for audio stream playback from MDx tone generator 2022-05-27 21:48:47 +02:00
Niccolò Izzo 2d8c696a09 Complete M17 demodulator implementation
Make quantization work also on DC offset signal
Add samples plot code
Fix bug in buffer wrap around
Fix oob memory access in M17 modulator
Update tests with DC offset signal
Switch to 48KHz sample rate for Module17 and MD380
Add DC biasing script

TG-81
2022-05-27 21:48:46 +02:00
Silvano Seva 10b8b59e21 Added to MDx tone generator API functions allowing user code to temporarily disable generation of 'beep' tones 2022-05-27 21:48:46 +02:00
Niccolò Izzo f9c23452bc Add plotting function to graphics library
Added plotting function to graphics library which is native C++, so
refactored the graphics source file to allow that, consequently adapted
the hwconfig header files to be included also in C++ sources.
Propagated compile flags also to C++ sources, including asan what was
previously disabled for C++ compilation units.

TG-81
2022-05-27 21:48:46 +02:00
Niccolò Izzo ae26cca46f Remove SPS
Now M17_SAPLES_PER_SYMBOL is computed dinamically from sample rate.

TG-81
2022-05-27 21:48:46 +02:00
Silvano Seva 25087b0e02 Removed BUF_CIRC from the possible buffer management modes for an input audio stream 2022-05-27 21:48:46 +02:00
Niccolò Izzo d22948a096 Fix naming error
Replaced FM with OPMODE_FM and DMR with OPMODE_DMR.
2022-05-27 21:48:46 +02:00
Niccolò Izzo 3163dd49d7 Add M17 demodulator code and tests
Added implementation of the M17 4FSK demodulator, including clock
recovery, phase detection, and quantization algorithms.
A testsuite is also included to do regression testing against a
reference baseband pre-generated and the corresponding reference
bitstream.

A 1% BER is still present due to a fault likely in the RRC filtering,
since the eye diagram of the filtered stream is bad.

TG-81
2022-05-27 21:48:46 +02:00
Niccolò Izzo 6588a6718e Add M17 namespace in M17 related source files
Now M17 source files reside in the M17 namespace, the OPMODE_ prefix
was added to all opmode enums to avoid a name clash.
2022-05-27 21:48:46 +02:00
Silvano Seva a3b7b490d4 Fixed jitter in M17 baseband signal generation 2022-05-27 21:48:46 +02:00
Silvano Seva 5ffd6e5c43 Fixed compilation errors with MD-9600 and Module 17 targets 2022-03-24 19:09:00 +01:00
Silvano Seva 19c1b8eff9 Added full chip erase function to W25Qx driver 2022-03-22 11:19:22 +01:00
Silvano Seva c0a5d0a26e Quick and dirty bugfix to STM32F4 USB VCOM driver to allow data transfers of more than 300 bytes 2022-03-06 08:44:52 +01:00
Silvano Seva b97d1154d5 STDIO redirection to USB virtual COM port disabled by default, can be enabled by defining the ENABLE_STDIO macro 2022-03-05 10:40:41 +01:00
Silvano Seva 624dca2b97 Renamed macro DISABLE_KEEP_ON to RUNNING_TESTSUITE 2022-03-05 09:09:25 +01:00
Silvano Seva 91c9408f32 Removed backwards compatibility with old settings for MDx: in case of version mismatch default values are loaded 2022-02-26 15:47:18 +01:00
Silvano Seva a5209d6f52 Modified range for display backlight level from 0 - 255 to 0 - 100, set minimum allowed level to 5. 2022-02-26 15:45:41 +01:00
Silvano Seva 24464a66a8 Integration of tinyusb driver into OpenRTX, old driver still kept active 2022-02-26 12:29:28 +01:00
Silvano Seva 4bce2c9f23 Fixed bugs in MDx and Module17 input stream drivers causing errors in sample rate: one due to wrong configuration of TIM2 registers and one due to wrong configuration of ADC channel sample time. 2022-02-07 22:01:14 +01:00
Silvano Seva 3fb93f0a86 Updated CMSIS header files for STM32F4 to version 2.6.7 2022-01-15 14:55:59 +01:00
Alessio Caiazza ce5ff047ee Add NVM for settings and VFO on linux platform 2022-01-15 14:02:19 +01:00
Silvano Seva f54a0d18a7 Implemented mechanism to allow backwards-compatibility when loading settings from memory, as backlight timer introduced a new data field 2022-01-03 15:42:16 +01:00
Alessio Caiazza ade9c47f71 Implement platform_setBacklightLevel for linux 2022-01-03 14:51:22 +01:00
Silvano Seva 3776b30121 Automatically disabling the power keep switch when running testsuites, as those may never call platform_terminate() 2022-01-03 14:49:25 +01:00
Alessio Caiazza 7c978470c2 Add brightness support for the emulator 2021-12-23 14:52:25 +01:00
Silvano Seva 9dc0819b8b Linux emulator code cleanup and refactoring 2021-12-23 14:52:25 +01:00
Alessio Caiazza 18fb916834 Remove all tabs 2021-12-23 14:52:25 +01:00
Alessio Caiazza d4300c9c04 Fix Allman bracing 2021-12-23 14:52:25 +01:00
Alessio Caiazza 75f5a0a159 Free shared channel resources on power down 2021-12-23 14:52:25 +01:00
Alessio Caiazza e2baf5a833 Document functions with Doxygen format 2021-12-23 14:52:25 +01:00
Alessio Caiazza f85942785f Fix whitespaces 2021-12-23 14:52:25 +01:00
Alessio Caiazza 992d6be6eb Ensure we do not render before the framebuffer copy completes 2021-12-23 14:52:25 +01:00
Alessio Caiazza 82699f3d07 Implement an SDL main loop inside the Main Thread 2021-12-23 14:52:25 +01:00
Alessio Caiazza 51acccaec2 Don't pump SDL events outside from the main thread 2021-12-23 14:52:25 +01:00
Silvano Seva 4eb4e43cbe Activated GPIO pull-up resistors on MD3x0 PTT lines, as it seems that RT3 radios lack a physical pull-up resistor on those GPIOs. See #52 2021-12-23 14:52:25 +01:00
Niccolò Izzo 2fdbf0f236 Initial support for I2C soft pots on Module17
Initial support for I2C soft pots on Module17, ADC1 driver for input voltage
reading. Cherry-picked from Mathis DB9MAT repo.

TG-398
2021-12-23 14:52:25 +01:00
Silvano Seva d4ba8a5b9c Moved new display driver for Module_17 to 'SH110x_Mod17.c', restored and kept old one 2021-11-27 10:10:12 +01:00
Silvano Seva 6aece95e98 Fixed license header 2021-11-27 08:23:59 +01:00
Wojciech Kaczmarski 5d63c0fe63 display fix for 0.1c 2021-11-27 08:09:39 +01:00
Mathis Schmieder e9a6b0261e Fixed compilation for Module17 2021-11-27 08:09:39 +01:00
Mathis Schmieder 3d987a8ae8 Fixed reversed Enter and ESC keys for Module17 2021-11-27 08:09:39 +01:00
Mathis Schmieder 22a0d73fbc Initial fix for Module17 r0.1c display 2021-11-27 08:09:39 +01:00
Mathis Schmieder 55c0b0d868 Module17 platform changes for revision 0.1c 2021-11-27 08:09:39 +01:00
Mathis Schmieder 4811838cb8 Module17: implemented keyboard driver, updated display, output audio stream and platform drivers 2021-11-24 19:53:48 +01:00
Silvano Seva 83b0182057 Implementation of audio output stream driver for Module 17 2021-11-24 19:53:48 +01:00
Silvano Seva cc00cce982 Driver for input audio stream on Module17 2021-11-24 19:53:48 +01:00
Silvano Seva 38231e3a53 Driver stubs for keyboard and non volatile memory on Module17 2021-11-24 19:53:48 +01:00
Mathis Schmieder 7bfa2336d7 Driver for SSD1306 SPI display driver on Module17 2021-11-24 19:53:48 +01:00
Silvano Seva a0d9161e1d Very preliminary support for Module17, providing only the files and configurations essential for a minimal bootstrap of the OpenRTX firmware 2021-11-24 19:53:48 +01:00
Silvano Seva 036f74c69e Removed call to rtc_terminate inside MDx platform_terminate, as this freezed RTC on radio power off 2021-11-12 22:46:11 +01:00
Silvano Seva 38c6a7fee6 Fixed bug in MD3x keyboard driver causing the generation of an UP keypress at boot (#48) 2021-11-10 19:29:34 +01:00
Silvano Seva 691b388228 Implemented load/save of settings and VFO configuration for MDx devices 2021-11-09 19:28:23 +01:00