Commit Graph

799 Commits

Author SHA1 Message Date
Niccolò Izzo 5ff74aaaa7 Add FM tone decrease Macro
Reorganize macro menu buttons to enable tone decrease and eliminate
channel save as it was not yet implemented.
2022-09-27 22:35:50 +02:00
Niccolò Izzo d395afd370 Fix missing splashscreen
Fix a bug where the splashscreen was not showing on radios with GPS
enabled.
2022-09-27 22:35:50 +02:00
Niccolò Izzo 6a9ce50f6b Usability improvements
Remove DMR from macro menu until we actually support it.
Remove print of M17 source callsign
Bank and channel visualization is more compact to make room for
additional data on a single screen.
Refactor mode screen to fit all data into a single screen.
2022-09-27 22:35:50 +02:00
Silvano Seva 91d608cc6b Small reorganization of threads and tasks 2022-09-08 09:11:00 +02:00
Silvano Seva 94baec6981 Changed the granularity of VFO frequency input mode from tens to hundreds: this reduces the number of digits to be inserted to seven and avoids the line to overflow towards the bottom 2022-09-02 07:54:32 +02:00
Silvano Seva b5fc9b252d Moved code of compensating filter for MDx PWM-based DAC to a dedicated class. 2022-08-28 12:17:04 +02:00
Silvano Seva d11bb903b1 Made public the M17Modulator.stop() function, added macro to enable the transmission of an M17 EOT frame (disabled by default). 2022-08-28 12:00:36 +02:00
Jacob McSwain fa33f15417 Implemented M17 EOT marker 2022-08-28 11:59:31 +02:00
Silvano Seva a22aceb576 Reorganized code for M17 transmission: removed M17Transmitter class, use M17FrameEncoder to assemble LSF and data frames, modified API of M17Modulator class. 2022-08-28 11:59:31 +02:00
Silvano Seva 48cd81ee7c Changed to 'static' some variables inside UI module 2022-08-28 11:49:10 +02:00
Silvano Seva b26d783429 Small optimisation of UI management: perform an update and render of the graphics only when necessary 2022-08-28 11:49:03 +02:00
edgetriggered a5a0de1428 UI: Build time font selection 2022-08-15 08:17:37 +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 84d66ca1b3 Changed parameters of ui_pushEvent(): now it accepts event type and payload instead of a single element, this cleans the code up a little bit 2022-08-10 18:05:02 +02:00
Silvano Seva f1dbfbfe1f Fixed compilation warnings 2022-08-04 22:22:56 +02:00
Silvano Seva 5ebdb36ffb Resetting M17 frame decoder when demodulator transitions from unlocked to locked state 2022-07-22 22:54:57 +02:00
Silvano Seva 9c2091c060 Changed M17 RX behaviour so that received stream data is forwarded to codec2 decode only when a full valid LSF is received. 2022-07-21 22:14:55 +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
Alain Carlucci dea0ecbf29 fix double-free when codec_terminate is called multiple times 2022-07-17 22:28:03 +02:00
AlexandreRouma bb5891aca5 Fixed setPixel swapping red and blue 2022-07-11 15:54:17 +02:00
Silvano Seva 844e0619e2 Fixed bug in check for M17 phase inversion causing MD3x0 UHF not to demodulate the signal anymore 2022-07-11 15:35:59 +02:00
Silvano Seva eda835ee0b Tightened locking conditions for M17 demodulator: now lock is acquired only when there is an exact syncword match (zero hamming distance) 2022-07-11 10:37:58 +02:00
Silvano Seva fa58b99c9e Fixed text blink in settings restore menu 2022-07-11 10:09:18 +02:00
Silvano Seva 7e8a960001 Fixed compiler warnings on MD-UV3x0 and MD-9600 targets 2022-07-10 09:23:37 +02:00
tarxvf 111cb9e431 Fixed compiler warnings after signedness conversion of point_t 2022-07-10 09:14:41 +02:00
tarxvf ac3c8ea711 Renamed sat_t data structure to gpssat_t, changed signedness of point_t coordinates from unsigned to signed.
rename sat_t to gpssat_t to avoid future name collisions
allow signed values in point_t to allow relative values
fix crash when attempting to 'draw' negative absolute pixel values (like when zooming a map)
2022-07-10 09:13:47 +02:00
Silvano Seva 54aa794bf8 Changed file extension of all C++ only header files from .h to .hpp 2022-07-09 18:22:36 +02:00
Silvano Seva 34c90c2485 Moved FIR filter class to a dedicated header file 2022-07-09 18:07:42 +02:00
Silvano Seva 22ce4d6925 Moved codeplug initialisation from state init function to main initialisation sequence 2022-07-02 10:47:19 +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 5f40ceceb3 Added field to state data structure containing the current operating state of the device. Implemented clean shutdown of all the threads. 2022-07-02 10:47:19 +02:00
Silvano Seva 810daf7599 Reorganised system initialisation sequence, improved reactivity of UI and device threads 2022-07-02 10:47:19 +02:00
Silvano Seva 42569af38a Improved GPS management routine 2022-07-02 10:47:19 +02:00
Silvano Seva 23a1a38a3a Moved mutex for concurrent access to radio state inside state.h/.c, minimized the time spent with state mutex locked when updating the GPS data fields 2022-07-02 10:47:19 +02:00
Silvano Seva 101b33ce6b Merged keyboard and UI threads, merged GPS and device threads. 2022-07-02 10:47:18 +02:00
Silvano Seva 4528e102a2 Moved the UI event queue inside the UI engine itself, UI FSM update now becomes a periodic task 2022-07-02 10:28:28 +02:00
Silvano Seva fed368a4db Fixed routine computing the battery charge level so that the returned charge value cannot be greater than 100% 2022-07-02 10:28:28 +02:00
Silvano Seva 40337e7c97 Removed radio model name from UI info page 2022-07-02 10:28:28 +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 6d10f52b5b Clean termination of all the threads on device shutdown 2022-07-02 10:28:28 +02:00
Silvano Seva bc0c80edf6 Displaying of current heap usage in info page 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
Silvano Seva 3cc5852ef3 Refactored keyboard thread by moving the keypad scan logic to a dedicated function inside input.h 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
Jeff Gustafson 1f56018e52 Added space character to UI text input mode. 2022-06-17 12:15:00 +02:00
Wojciech Kaczmarski a5b7658878 Fixed bug causing the newline character to misalign text if "TEXT_ALIGN_CENTER" is used with multi-line strings. 2022-06-17 12:14:22 +02:00
Wojciech Kaczmarski e5fbb77cd2 Fixed displayed voltage error 2022-06-12 11:52:17 +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 980fa32e73 Reorganised source code of linux emulator SDL engine 2022-06-09 22:48:41 +02:00
Silvano Seva d2e0b7d940 Improved heap memory management in M17 modulator class 2022-06-05 12:27:25 +02:00
Silvano Seva a1888ae19e Improved heap memory management in M17 demodulator class 2022-06-05 12:24:43 +02:00
Silvano Seva 8b5b6ed571 Moved OpenRTX startup code from main.c to dedicated openrtx_init() and openrtx_run() functions in a separate source file. 2022-06-02 10:01:34 +02:00
Silvano Seva 316e588bc3 Updated copyright headers 2022-06-02 09:56:05 +02:00
Niccolò Izzo 521865f489 Fix bug in new cps code
Fixed some bugs in the write and insert functions of the new cps format
functions, currently available only on libc implementations.
Add unit test to ensure that no regressions happen.

TG-428
2022-06-01 16:05:36 +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 7ed4a64027 On MD-3x0 added a fixed gain of four to codec2 demodulated audio to compensate for the low output volume 2022-05-31 21:28:09 +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 4d4ebae2f3 Added configurable phase inversion to M17 demodulator. Forced enabling of phase inversion for MD3x0 VHF radios. 2022-05-30 19:19:01 +02:00
Silvano Seva bfa3494777 Fixed bug in M17 demodulator causing the M17Demodulator::getFrame() function to return the frame currently being processed instead of the fully demodulated one. 2022-05-27 21:49:33 +02:00
Silvano Seva 63f4c787c0 Moved helper functions for M17 Golay to a dedicated source file 2022-05-27 21:49:33 +02:00
Silvano Seva 1620889640 Reorganised main FSM inside M17 operating mode handler 2022-05-27 21:49:33 +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
Silvano Seva 76be50db61 Improved debug log in M17 demodulator, changed trigger condition for log dump, re-enabled audio reproduction when logging. 2022-05-27 21:49:33 +02:00
Silvano Seva 4304013d62 Updated M17 demodulator debug logger: now log data is continously updated and dumped only in case of a missed sync after lock has been acquired. 2022-05-27 21:49:33 +02:00
Niccolò Izzo 29ad0830f0 M17 demodulation improvement
Add logging in syncword sweep, fix unsigned underflow bug,
fixed symbol average computation for quantization.
Do syncword sweep whenever available.

TG-81
2022-05-27 21:49:33 +02:00
Silvano Seva d17d683b2d M17 code cleanup pass: reorganised data type definitions and constants 2022-05-27 21:49:33 +02:00
Silvano Seva 5b27e6b692 Ensure proper termination of baseband sampling when M17Demodulator::terminate() is called.
Solves #74.
2022-05-27 21:49:33 +02:00
Silvano Seva 7aff678069 Improved robustness of frame type detection, now based on minimum hamming distance between syncwords 2022-05-27 21:49:33 +02:00
Niccolò Izzo 115982d279 Add demod log script
Add script to receive the demodulated data from Module17/radio, to use
it you need to add in meson.build:12 the ENABLE_DEMOD_LOG define.
Build and flash into the platform, build and run scripts/get_demod_log,
turn on the radio, remember to turn of radio before you terminate
get_demod_log, print the output with
`scripts/plot_m17_demod_csv.py serial_demod_log.csv`.

TG-81
2022-05-27 21:49:32 +02:00
Niccolò Izzo c987848382 Add syncword hot re-sync fix DC removal
DC removal filter had a bug that created weird positive spikes on
Module17, add a syncword hot re-sync to be able to correct small phase
errors that appear every five seconds more or less.

TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva 1f77c2af6c Reorganised logging inside M17 demodulator, logging is disabled by default.
On non-linux devices log data is printed on the serial port in raw binary format.
2022-05-27 21:48:47 +02:00
Niccolò Izzo ef61c532a3 Cleaned up quantization average
Now average is computed over all the syncword symbols, for each syncword
as a simple average.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 5fe5b0e578 Refactor M17 logging
Refactored logging functions to enable in-system logging on Module17 and
MDx radios.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo c3c984d504 Add syncword fuzzy detection
Frame decoder now tolerates bit error in syncword, removed syncword type
detection in demodulator code.

TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva b998d3b78f Modified time constant of DC removal high-pass filter to avoid a too high cut-off frequency when run with at fast sample rates 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
Niccolò Izzo b1f2cb109f Switch M17 Rx sample rate to 5SPS
Due to the RRC computation sometimes violating the timing constraints,
we switched the M17 demodulator to 5 samples per symbol (24KHz), thus
dividing the processing time by four ar the number of samples halves as
well as the number of taps of the RRC.
Minor adaptation on the code followed.

TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva e68b05d859 Fixed double free errors in M17 code, see #73 2022-05-27 21:48:47 +02:00
Niccolò Izzo 2d59658d60 Switch M17 Rx sample rate to 5SPS
Due to the RRC computation sometimes violating the timing constraints,
we switched the M17 demodulator to 5 samples per symbol (24KHz), thus
dividing the processing time by four ar the number of samples halves as
well as the number of taps of the RRC.
Minor adaptation on the code followed.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 63bd864674 Fix M17 Rx LED
Now LED turns on when a syncword is successfully detected, not just when
the correlation is sufficiently high.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo c4483edff0 Improve quantization strategy
Now quantization is performed by averaging syncword samples and dividing
the resulting threshold by a constant.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 2e7ed7a8f0 M17 demodulator further improvements
- Fix phase propagation across buffers
- Fix initial syncword offset detection
- Improve quantization algorithm

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 7d1b89550e Rewrite quantization algorithm
Quantization algorithm is now based on separate rolling averages for
positive and negative samples.
Merged csv outputs from syncword search and quantization on Linux.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo aa9fcc26b7 Remove useless DC bias in quantization
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo d1651a702c Add proper DC-bias removal, tuned EMAs 2022-05-27 21:48:47 +02:00
Silvano Seva da5c453852 Implemented unpacking and decoding of M17 audio stream frames 2022-05-27 21:48:47 +02:00
Silvano Seva beca0d2acc Reorganised constants inside M17 demodulator class 2022-05-27 21:48:47 +02:00
Silvano Seva 77dfeef9e7 Implemented audio decoding functions in CODEC2 module 2022-05-27 21:48:47 +02:00
Silvano Seva e5b5daba85 Moved state variables of PWM compensator and DC removal filter outside the function bodies to allow keeping their consistency among function calls 2022-05-27 21:48:47 +02:00
Mathis Schmieder 89c05a7332 Adjusted Module17 mic processing gain; interim-fix for DC offset removal 2022-05-27 21:48:47 +02:00
Silvano Seva 49e5486ea6 Parametric mic gain inside codec2 module 2022-05-27 21:48:47 +02:00
Silvano Seva b144657257 Moved CODEC2 management to a dedicated module 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 4a3e31cd03 Fixed bug in M17 demodulator caused by the precedent code refactoring 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 83020d4fa3 Increased priority of CODEC2 thread, this fixes glitches when generating M17 baseband signal 2022-05-27 21:48:47 +02:00
Silvano Seva 3d169484e9 Improved management of CODEC2 thread in M17 mode handler, now activated only when transmitting. Fixes a confict with RTX and MIC input streams causing the rtx thread to hang when PTT was pressed 2022-05-27 21:48:47 +02:00
Silvano Seva 54a89abcd0 Removed a printf left behind after debugging from M17 demodulator class and slightly cleaned up the code 2022-05-27 21:48:47 +02:00
Silvano Seva c9a4bfb199 Cleanup and refactoring of M17 modulator class, now using output streams for baseband signal output 2022-05-27 21:48:47 +02:00
Silvano Seva 5c90c19bea Data conversion utilities 2022-05-27 21:48:47 +02:00
Silvano Seva 7891288030 Fixed compilation warnings generated by graphics.cpp 2022-05-27 21:48:47 +02:00
Silvano Seva 427c5f50b3 Made M17Demodulator::update() return a boolean indicating when a new decoded frame is ready 2022-05-27 21:48:47 +02:00
Niccolò Izzo 77aead675a Improve runtime performance of M17 Demodulator
Tweaked the exponential moving average alpha factors to improve the
reactivity of the M17 demodulator.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 5ef145cd39 Add fuzzy syncword validation
Now syncword match is not exact but can tolerate up to two erroneous
bits.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo ca49b306b9 Update constants for M17 demodulation
Constants were updated to increase performance based on baseband sample
collected with Module17.

TG-81
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
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 a091bca35f M17 Demodulator bugfixes
Fixed several bugs in the M17 Demodulator code.

TG-81
2022-05-27 21:48:46 +02:00
Silvano Seva d2c7be9cc8 Fixed bug affecting LSF reassembling from LICH segments inside M17 frame decoder class 2022-05-27 21:48:46 +02:00
Silvano Seva 35c1f062c6 Implementation of M17 frame encoder 2022-05-27 21:48:46 +02:00
Silvano Seva 82dd0a63f1 Clarification of naming: renamed DATA_SYNC_WORD to STREAM_SYNC_WORD and Audio_puncture to DATA_PUNCTURE 2022-05-27 21:48:46 +02:00
Silvano Seva 5fbd39959c Implementation of M17 frame decoder 2022-05-27 21:48:46 +02:00
Silvano Seva 49bd8ee2f4 Reorganised internal structure of M17LinkSetupFrame class, renamed M17Frame to M17StreamFrame and reorganised its structure 2022-05-27 21:48:46 +02:00
Silvano Seva c73aa92305 Reorganised M17LinkSetupframe and M17Frame classes, encapsulating structs defining their internal data structure 2022-05-27 21:48:46 +02:00
Silvano Seva 8f63d349a2 Temporarily deactivating M17 demodulator until fully debugged as it makes the radio crash 2022-05-27 21:48:46 +02:00
Niccolò Izzo 7a9bbfcaf2 Demodulator bugfix
Fix several bugs in the demodulator code, tipycally sign errors.
2022-05-27 21:48:46 +02:00
Niccolò Izzo 1a9b3c4168 Implement M17 demodulator logic
Implemented frame wrapping logic and demodulator loop.
2022-05-27 21:48:46 +02:00
Silvano Seva 963fbdc141 M17 mode handler: calling demodulator update function when in RX mode 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 5bf4df75ba Fine tune demodulator to OpenRTX M17 baseband
Fine tuned M17 demodulator with code generated from OpenRTX itself.

TG-81
2022-05-27 21:48:46 +02:00
Niccolò Izzo 4b498689f5 Replace RRC filter taps, update M17 testsuite
RRC filter taps have been replaced with the ones generated by Wojciech,
a new baseband for the M17 demodulation testsuite has been generated,
using OpenRTX itself and some further minor changes.

TG-81
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 3aeade6c1f Clarify M17 modulator constant naming
Further clarify modulator constant naming for sample rate and frame
lengths, to distinguish between demodulator values.
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
Niccolò Izzo 876cb87d57 Move rrc filter into separate compilation unit
By moving the rrc filter into a separate compilation unit with its own
header file, we can use it both in the modulator and in the demodulator.
2022-05-27 21:48:46 +02:00
Silvano Seva 8a3643ad3a Implementation of Golay(24,12) decoder, reimplemented Golay(24,12) encoder using generator matrix, unit test for Golay(24,12) encoding and decoding routines 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 ab3d148449 Implemented activation of external flash backup and restore via menu entries 2022-03-22 15:10:52 +01:00
Silvano Seva a1c26b2898 Simple utility functions for backup and restore of external flash memory content 2022-03-22 13:39:08 +01:00
Silvano Seva f513454acf Implementation of xmodem data reception 2022-03-21 17:36:27 +01:00
Niccolò Izzo 48824accb9 Add flash backup and restore menu
Add flash backup and flash restore entries to menu system, to access
these functionalities from the radio itself.

TG-428
2022-03-13 00:21:52 +01:00
Silvano Seva 7e3131d9d1 Implemented xmodem data sending 2022-03-12 23:32:31 +01:00
Silvano Seva e56cf52f28 Partial implementation of xmodem protocol: function for transmission of xmodem packets and small testsuite for dumping the content of external flash memory via xmodem 2022-03-11 19:28:45 +01:00
Silvano Seva 052580df3a Implementation of CCITT CRC16 2022-03-05 11:08:31 +01:00
Silvano Seva 3588f351a1 Created 'core' subfolders inside openrtx/include and openrtx/src containing main OpenRTX source files 2022-03-05 10:39:35 +01:00
Silvano Seva 3f2df608c9 Moved code for radio state update to a dedicated function 2022-02-27 09:00:49 +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
tarxvf 9297c08b05
Add a menu for clearing settings and vfo to sane defaults (#67) 2022-02-26 12:42:28 +01:00
Alessio Caiazza d04180c0df Rename brightness_timer into display_timenr 2022-01-03 14:51:22 +01:00
Alessio Caiazza d742d027b7 Display timer UI 2022-01-03 14:51:22 +01:00
Alessio Caiazza 269420c2be Load standby timer from settings 2022-01-03 14:51:22 +01:00
Alessio Caiazza fefe2f6de0 Exit standby when the squelch is open 2022-01-03 14:51:22 +01:00
Alessio Caiazza ade9c47f71 Implement platform_setBacklightLevel for linux 2022-01-03 14:51:22 +01:00
Alessio Caiazza 6e3fda2a70 PTT terminates standby
Also the keypress getting out of standby is ignored unless is the MONI
key to activate the MACRO menu
2022-01-03 14:51:22 +01:00
Alessio Caiazza f9751c9867 Send the screen in standby after 30s idle 2022-01-03 14:51:22 +01:00
Alessio Caiazza 78a2b02c91 Show TX frequency during transmission 2021-12-23 14:52:25 +01:00
Alessio Caiazza 91486291b6 MD380: adjust squelch with left and right keys 2021-12-23 14:52:25 +01:00
Silvano Seva 3c6ad9802c Added API function allowing to query the current status of the RX audio squelch 2021-12-23 14:52:25 +01:00
Alessio Caiazza 18fb916834 Remove all tabs 2021-12-23 14:52:25 +01:00
Alessio Caiazza 8a0f0564b9 Ensure proper finalization is done in emulator mode 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
tarxvf e7c98aa71f fixes #60 (make sure volume setting is restored after tx) 2021-12-23 14:52:25 +01:00
Alessio Caiazza 5605797816 Never store a brightness level of 0
Enforce a minimum brightness level to prevent booting with a black screen

Related to https://github.com/OpenRTX/OpenRTX/issues/50
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 691b388228 Implemented load/save of settings and VFO configuration for MDx devices 2021-11-09 19:28:23 +01:00
Silvano Seva 756812ca31 Created function for writing settings and VFO status to NVM, starting of temporary implementation writing data to the MCU's internal flash 2021-11-08 22:22:26 +01:00
Silvano Seva c91e306026 Reorganised settings data structure 2021-11-08 21:44:33 +01:00
Silvano Seva 83fdfc4367 Setting default squelch level at boot to S3 for all platforms. Solves #44 2021-10-18 21:05:32 +02:00
mark 17cdf3c67b https://github.com/OpenRTX/OpenRTX/issues/43 Force Squelch re-detection when coming out of TX. 2021-10-18 20:58:24 +02:00
Federico Amedeo Izzo 1e19574fd6 Add destination callsign input for M17, Add -/ to keypad input 2021-10-09 18:53:28 +02:00
Niccolò Izzo 65a632054a Disable CTCSS tones in M17 mode
Removed CTCSS modulation for M17 mode, removed FM analog specific
settings in macro menu such as tone selection, tone enable and tx
bandwidth.
2021-10-08 16:02:03 +02:00
Silvano Seva 42e7521205 Fixed compilation error with GDx targets
Added codec2 as a dependency also for GD77, DM1801 and MD9600 targets to allow compilation of OpMode_17.cpp file
Stub input audio stream driver for GDx targets
2021-10-06 21:43:07 +02:00
Silvano Seva 7db53b8bdc Fixed some compiler warnings 2021-10-06 21:30:45 +02:00
Federico Amedeo Izzo 990f5e8ce6 UI: Fix level meter and set it to platform mic level 2021-09-26 18:38:29 +02:00
Silvano Seva f2f013f5a5 Switched to pthread API for CODEC2 thread management inside M17 OpMode handler 2021-09-19 15:29:43 +02:00
Silvano Seva 0b276b2b64 Experimental implementation of voice transmission in M17 protocol handler 2021-09-07 12:22:35 +02:00
Niccolò Izzo 120fd92d73 Fix M17 callsign management
Now a default callsign "OPNRTX" is used in M17 mode, and when the user
sets its own callsign in the settings menu, that one is correctly used
instead. Add initialization to RTX data structure.
2021-09-06 22:55:46 +02:00
Niccolò Izzo e60d79241d Set CAN to 0 2021-09-05 22:05:13 +02:00
Silvano Seva b1a91603c8 Fixed wrong function signature in dsp.cpp causing linking errors 2021-09-05 19:03:29 +02:00
Silvano Seva e954f3fda2 Moved sleep regulating update rate of rtx task from rtx thread to OpMode implementations, as each operating mode may require a custom update rate 2021-09-03 16:44:57 +02:00
Silvano Seva 2f3db118fc Changed streamType_t from bitfield struct to union of anonymous bitfield struct and uint16_t to facilitate endianness conversion. Change also fixed a bug in endianness conversion inside M17LinkSetupFrame class due to unaligned memory access. 2021-09-03 16:44:57 +02:00
Silvano Seva 065c15fb72 Force deactivation of TX and RX tone squelch for operating modes different from FM 2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo c04ceb9a8d Add M17 radio mode to UI 2021-09-03 16:44:57 +02:00
Niccolò Izzo f43f54117c Fix M17 callsign setting
Fix M17 callsign disappearing in M17 settings.

The generic callsign (currently not used) was being shown instead of M17 callsign.
2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo dc28f90a1d Fix keypad text input, add caps-only input, add terminator to callsign 2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo f104955686 Text Input: Delete character by using any arrow button 2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo acc1c2a779 M17: Print source and destination IDs in mode screen 2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo 229a81b2ad Add text input draft
Fix text input position not being reset when entering edit mode
2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo 87703a76e6 Add M17 Settings 2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo 882a657359 * Combine S-meter and Level meter
* Make squelch bar always yellow
* Include font height in s-meter total height

Correct bottom bar printing position

Increase bottom bar size on GD-77
2021-09-03 16:44:57 +02:00
Federico Amedeo Izzo 118c514081 UI: Add digital mode screen
Use main screen bottom bar in mode screen

mode screen: Move frequency and channel name to center

Show S-meter without squelch bar for digital modes

Change S-meter for digital modes, add audio level meter

Print FM information in mode screen

Add mode screen fonts
2021-09-03 16:44:57 +02:00
Silvano Seva c8d62ff47f Initial implementation of M17 operating mode handler 2021-09-03 16:44:57 +02:00
Silvano Seva 98e4164f54 M17 transmitter class 2021-09-03 16:44:57 +02:00
Silvano Seva 39e41ee470 M17 4FSK modulator class 2021-09-03 16:44:57 +02:00
Silvano Seva 0ebcbeed5d Updated digital filter for compensation of PWM filter frequency response. 2021-09-03 16:43:44 +02:00
Niccolò Izzo 3439f3a497 Add invert phase DSP filter 2021-09-03 16:40:41 +02:00
Silvano Seva 7b5e98bbca Implemented generation of Golay(24,12) LICH blocks inside M17LinkSetupFrame class 2021-09-03 16:39:06 +02:00
Silvano Seva 9e5c689bf3 M17 protocol data structures 2021-09-03 16:39:06 +02:00
Silvano Seva 222ba690a5 Improved implementation of DSP function for DC removal 2021-09-03 15:46:13 +02:00
Silvano Seva 4d3eacc144 Switched 'v_bat' and 'charge' fields of state struct from float to, respectively, uint16_t and uint8_t and updated UI functions accordingly. Rationale for this change is providing better support for future platforms without hardware floating point unit. 2021-08-14 12:56:45 +02:00
Silvano Seva 46819ba993 Modified 'battery_getCharge': now it takes as input the battery voltage in mV and returns charge percentage as an integer ranging from 0 to 100. Function body is implemented using fixed point math instead of floats for improved platform compatibility when hardware floating point support is not present. 2021-08-14 12:52:55 +02:00
Silvano Seva 8e0a5d1c0f Made 'platform_getVolumeLevel' and 'platform_getMicLevel' API functions return a normalised 8 bit value ranging from 0 to 255 (TG-293 #closed) 2021-08-14 10:18:55 +02:00
Silvano Seva a1ca509eec Restore original functionality of getCurrentFreeHeap() memory profiling function, as the cause of its incorrect behaviour has been found 2021-08-10 09:35:00 +02:00
Niccolò Izzo 3bdaae0805 Fix squelch control on md3x0
Knob now generates dedicated KNOB_LEFT and KNOB_RIGHT messages,
fixed ui to consider those for enabling the squelch change.
2021-07-10 06:57:09 +02:00
Silvano Seva eb474d6bee Driver for STM32F4 USART3, can be used as a debug serial interface on MD3x0 devices without GPS and is enabled by defining the macro MD3x0_ENABLE_DBG 2021-07-09 08:53:12 +02:00
Federico Amedeo Izzo 1fbecb4c22 Increase keyboard thread polling rate to 40Hz to improve knob reactivity 2021-06-07 20:10:02 +02:00
Federico Amedeo Izzo 57b66652b7 Use channel knob to change frequency and navigate menus (TG-238) 2021-06-05 18:11:30 +02:00
Federico Amedeo Izzo f5a70b3e43 Fixed Initial GUI rendering with an empty state 2021-06-05 16:32:05 +02:00
Federico Amedeo Izzo 01b4a98f85 Set initial frequency based on supported bands (TG-239) 2021-06-05 11:06:22 +02:00
Federico Amedeo Izzo f5c9d97e49 Check frequency limits against hwInfo_t, not hardcoded defines 2021-06-05 10:47:52 +02:00
Federico Amedeo Izzo 5b3f2b7e23 Simplify frequency limits check for VFO input 2021-06-05 10:08:15 +02:00
Federico Amedeo Izzo 49cb28c5b8 Fix RTX not updated when switching from MEM to VFO (#30,TG-240,TG-241) 2021-06-05 09:36:00 +02:00
Silvano Seva b29b24fdc0 Implemented RX tone squelch on MD-UV3x0 and GDx (TG-43) 2021-06-02 12:44:46 +02:00
Silvano Seva f1a01d7613 New radio driver for MD-UV3x0, testing required 2021-05-29 08:20:12 +02:00
Silvano Seva f0dfd7036f Fixed bug in OpMode_FM.cpp which prevented entering in RX mode, removed code for setting input gain in HR_C5000 driver, modified meson.build to make it compile the new sources 2021-05-29 08:20:12 +02:00
Silvano Seva 850e3580ed New radio driver for MD-3x0 platform, still requiring a bit of debugging 2021-05-29 08:20:12 +02:00
Silvano Seva 5b0bec8c5f Created OpMode class for modular OOP-based management of operating modes. Created OpMode_FM class for analog FM management. Refactored and moved to C++ the content of openrtx/src/rtx.c. (TG-38, TG-41) 2021-05-29 08:20:12 +02:00
Niccolò Izzo e3a128f035 Add DSP code with DC removal and FIR PWM filter compensation
Add generic FIR implementation, specialized to compensate the PWM filter
applied by STM32 targets when modulating M17 signal.
Add DC bias compensation to normalize audio signal received from STM32
ADC.

TG-85 #ready-for-test
TG-199 #ready-for-test
2021-04-16 09:46:32 +02:00
Silvano Seva c0ecf2e13f Basic audio management module, controlling only speaker PA and microphone preamplifier. TG-61 2021-04-12 19:10:13 +02:00
Silvano Seva 90048700ba Fixed compilation error on linux target after addition of memory profiling functions 2021-04-12 12:13:55 +02:00
Silvano Seva 60defbedc0 Implemented stack and heap memory profiling functions. TG-47 2021-04-12 12:03:15 +02:00
Silvano Seva 4b30a66735 Added 'platform_pwrButtonStatus' API function, which returns the current status of the power button/knob. Implemented power on/off mechanism on MD-9600 2021-04-11 12:38:20 +02:00
Federico Amedeo Izzo a42354a204 Remove Messages menu as it's not implemented yet 2021-04-11 10:06:12 +02:00
Federico Amedeo Izzo 58f4f5dcaf Print git commit or tag inside Info menu 2021-04-11 09:56:46 +02:00
Federico Amedeo Izzo 26eb381ca2 Fix date change if timezone brings to different day 2021-04-10 15:57:58 +02:00
Federico Amedeo Izzo 341c46a263 Now state.time is UTC, add functions to convert from UTC to local and reverse 2021-04-10 15:39:59 +02:00
Silvano Seva d70e0bc60a Made 'battery_getCharge' return full charge when 'BAT_NONE' is defined 2021-04-10 12:45:07 +02:00
Silvano Seva cdaf3f38dd Renamed MDx display, keyboard and spiFlash drivers to MD3x to adapt the changes made to meson.build also to MD-9600. Fixed missing API change in ui_main. 2021-04-10 12:37:45 +02:00
Federico Amedeo Izzo 2d3d932111 Print battery voltage instead of battery icon for platform without battery 2021-04-10 12:16:21 +02:00
Federico Amedeo Izzo 8045a9bcea Improve gfx_printLine calculation 2021-04-10 11:10:52 +02:00
Federico Amedeo Izzo 3e326a43f0 Add gfx_getFontHeigth() function 2021-04-10 11:10:52 +02:00
Federico Amedeo Izzo c3a8251ca9 Integrated getLineY() functionality in gfx_printLine() 2021-04-10 11:10:52 +02:00
Federico Amedeo Izzo 765fb3f4c9 Add getLineY Layout helper function 2021-04-10 11:10:52 +02:00
Federico Amedeo Izzo 0e33848d68 gfx_print: use global buffer instead of allocating it to the stack 2021-04-10 11:10:52 +02:00
Federico Amedeo Izzo 341ab84ce9 Converted `gfx_print()` from char * pointer to format string 2021-04-10 11:10:52 +02:00
Federico Amedeo Izzo 9fb7ace303 Fix swapped UP/DOWN keys in Display Settings 2021-04-04 20:36:23 +02:00
Silvano Seva 1d8596e3c8 Renamed 'MD-UV380' folder and 'PLATFORM_MDUV380' define to, respectively, 'MD-UV3x0' and 'PLATFORM_MDUV3x0' to make them consistent with the meson build target 2021-04-01 08:48:56 +02:00
Silvano Seva 9d02ffaea4 Fix for #20, caused by a memory leak when clearing information about GPS satellites in state data structure 2021-03-26 17:50:06 +01:00
Silvano Seva 90122b0c7a Fixed bug in gps task which made it setting time and date even whithout GPS fix. 2021-03-24 12:28:57 +01:00
Fred f4e25a3f8f Fix compilation for gd77 and dm1801 targets 2021-03-24 09:25:57 +01:00
Niccolò Izzo d95e0a1513 Print signed GPS longitude as unsigned+direction 2021-03-24 08:54:46 +01:00
Federico Amedeo Izzo 75df9b7bb8 Set default squelch to S3 2021-03-24 08:54:46 +01:00
Federico Amedeo Izzo 75cd4417c7 Restore squelch functionality after mute fix 2021-03-21 17:51:23 +01:00
Federico Amedeo Izzo e8ae618382 Add ifdef to fix compilation on Linux 2021-03-21 11:59:35 +01:00
Federico Amedeo Izzo 3a92547ef5 UV380: Mute speaker when volume knob is set to minimum 2021-03-21 11:42:47 +01:00
Federico Amedeo Izzo 42153be082 Macro Menu: Change squelch also with UP and DOWN 2021-03-21 09:14:44 +01:00
Silvano Seva 2bde981222 Removed speaker 'POP' on squelch opening and when starting TX with squelch open 2021-03-20 11:51:35 +01:00
Silvano Seva c1abeefd67 Implemented volume control for audio coming from radio stage on MD-UV3x0 and fixed a compilation warning regarding non-const access to a const variable 2021-03-20 11:51:35 +01:00
Silvano Seva a5120ffddc Radio driver for MD-UV3x0 targets 2021-03-20 11:51:35 +01:00
Silvano Seva 01ea1a9b3f Made the main() thread run the UI task, thus removing the need for a dedicated one 2021-03-14 17:17:24 +01:00
Silvano Seva 952f5afc3c Fixed squelch issue on GDx which made it briefly opening whenever an RTX parameter changed 2021-03-14 16:54:07 +01:00
Federico Amedeo Izzo 92e0abafa2 Display: Set default contrast at boot. Improve default contrast for GD-77 2021-03-14 11:35:45 +01:00
Federico Amedeo Izzo 3da311ee38 UI: Change contrast steps to 4 to match GD-77 HW contrast range (0-63) 2021-03-14 11:21:39 +01:00
Federico Amedeo Izzo 1637159329 Completely disable persistence until we have a proper flash backup/restore method 2021-03-13 23:03:37 +01:00
Federico Amedeo Izzo 9720032238 Disable reading VFO and settings from flash until persistence is implemented 2021-03-13 22:52:37 +01:00
Federico Amedeo Izzo 9e7b04c1fa Disable reading VFO channel from flash to fix boot freeze on GD-77 2021-03-13 22:21:23 +01:00
Silvano Seva a02b693843 Made the RTX thread run with the maximum priority on ARM Cortex targets 2021-03-13 09:16:06 +01:00
Silvano Seva 20ad9b7dcf Fixed issue with MDx ADC, rolling back to real battery voltage measurement 2021-03-13 09:16:06 +01:00
Silvano Seva 81e8aae103 Re-enabled all the tasks, temporarily bypassing battery voltage reading since it has to be debugged 2021-03-13 09:16:06 +01:00
Silvano Seva e5316aa8be Minimal refactoring of queue sources 2021-03-13 09:16:06 +01:00
Silvano Seva fb3447b0c6 Moving to miosix kernel: swapped old uC/OS-III task management functions with pthread ones 2021-03-13 09:16:06 +01:00
Silvano Seva cbfb78e19e Fixed bug which made the GPS task re-syncronising the RTC with GPS time once per second. 2021-03-13 09:14:26 +01:00
Federico Amedeo Izzo fb3c055f85 Disable writing settings until DFU support is ready 2021-03-01 20:52:57 +01:00
Niccolò Izzo de85ba90cb Filter out BeiDou NMEA strings 2021-02-25 11:20:31 +01:00
Silvano Seva 056c53b35d Made UI fsm skip low battery check when TX is enabled to avoid spurious triggers of low battery alert caused by the high current absorption from RF PA 2021-02-24 21:00:30 +01:00
Niccolò Izzo 6b24895ef3 Extended GPS support to UV-380 module 2021-02-24 08:07:58 +01:00
Silvano Seva 3438006ef5 Removed moving average filtering from MDx ADC1 driver, added code for proper filtering of ADC samples in platform-independent code 2021-02-23 15:49:55 +01:00
Silvano Seva 416ae13eb1 Fixed linking error when building for linux 2021-02-23 14:01:09 +01:00
Niccolò Izzo eb0a5ee9f0 Fix compass orientation, speed formatting 2021-02-21 20:38:54 +01:00
Silvano Seva d0e8d15389 Added 'packed' attribute to settings data structure. Some refactoring of settings and state code. 2021-02-21 19:25:09 +01:00
Federico Amedeo Izzo 35bde9bccb Add state_terminate() that saves settings to flash 2021-02-21 16:44:31 +01:00
Federico Amedeo Izzo d4981ee288 Add Settings persistence to SPI Flash 2021-02-21 15:58:41 +01:00
Federico Amedeo Izzo 0b14e36bdb Fix About screen on GD-77 2021-02-20 16:25:06 +01:00
Federico Amedeo Izzo 820ac73d08 UI: Add menu_h and menu_font layout parameters 2021-02-20 16:03:37 +01:00
Federico Amedeo Izzo 9c47797ff0 UI: Fixed mismatch between visible and selectable menu elements 2021-02-20 15:47:41 +01:00
Federico Amedeo Izzo c644e8db1d UI: Remove position parameter from menu list 2021-02-20 15:35:19 +01:00
Federico Amedeo Izzo 711d8426c9 Add 10pt font. Reduce frequency line on GD-77 to avoid overlap 2021-02-20 15:14:35 +01:00
Federico Amedeo Izzo 5bb200933b UI: Add missing GPS ifdefs 2021-02-17 20:02:53 +01:00
Niccolò Izzo f49655c44d Better GPS time synchronization 2021-02-17 14:58:20 +01:00
Niccolò Izzo 4d66d8b1af Fix various warnings 2021-02-17 11:21:46 +01:00
Federico Amedeo Izzo f357f476dc GPS: Enable GPS on gps_task start only if enabled in settings 2021-02-16 22:47:38 +01:00
Federico Amedeo Izzo cbe657cd77 UI: Fixed GPS OFF bug caused by ambiguous enable/disable code 2021-02-16 22:22:20 +01:00
Federico Amedeo Izzo 9de0857ff4 UI: Add switch cases default options 2021-02-16 22:09:28 +01:00
Niccolò Izzo fed9912c7d Improved RTC GPS time synchronization 2021-02-16 08:33:34 +01:00
Niccolò Izzo 8d90ee0588 Add Smeter numbers 2021-02-16 07:59:37 +01:00
Federico Amedeo Izzo 75c1f13882 UI: Replaced strcmp with switch case to fix GPS/menu bug 2021-02-15 22:02:09 +01:00
Niccolò Izzo 479eda3d96 Fix altitude print 2021-02-15 13:54:23 +01:00
Niccolò Izzo d230a19623 Adjusted battery thresholds 2021-02-15 09:28:23 +01:00
Niccolò Izzo f850dbdc45 Add GPS RTC time synchronization, remove debug prints 2021-02-15 09:26:13 +01:00
Niccolò Izzo e9f0a46823 Fix speed tracking bug 2021-02-15 07:40:25 +01:00
Federico Amedeo Izzo 9255dfb969 Disable GPS functions for radios that don't support a GPS chip 2021-02-14 17:49:23 +01:00
Federico Amedeo Izzo 663673b697 UI: Fix compilation warnings 2021-02-14 14:04:01 +01:00
Federico Amedeo Izzo 619cda7aeb Turn off GPS when it's turned off in settings 2021-02-14 13:55:33 +01:00
Federico Amedeo Izzo 31552ff2b2 Consider RTC time UTC instead of local time, applying timezone 2021-02-13 22:11:25 +01:00
Federico Amedeo Izzo ebe87b22e2 UI: Add menu edit mode. Small refactoring 2021-02-13 21:29:25 +01:00
Federico Amedeo Izzo 66af402e83 Move settings from UI to State 2021-02-13 20:32:53 +01:00
Federico Amedeo Izzo d66b59694a UI: Add GPS settings menu 2021-02-13 17:23:16 +01:00
Federico Amedeo Izzo a803958c61 UI: Menu scrolling logic refactoring, add GPS Settings entry 2021-02-13 16:35:03 +01:00
Federico Amedeo Izzo 0a04650d58 UI: Use more compact representation for menu entries 2021-02-13 16:14:44 +01:00
Niccolò Izzo a163bc6998 Fix a bug where only satellites with a low id were marked active 2021-02-13 13:49:03 +01:00
Niccolò Izzo 7577b4d6ae Improved algorithm for keeping track of active satellites 2021-02-13 13:27:06 +01:00