Commit Graph

1063 Commits

Author SHA1 Message Date
Ryan Turner fdbe3f2583 M17: add Callsign class
Added class representing M17 callsign objects. Objects can be
constructed both from strings and base-40 encoded values and allow
conversion to any of the other representation. The class implements the
comparison operator to allow easy check for callsign match.
2025-11-17 22:04:27 +01:00
Ryan Turner 76ffe2d612 M17: FrameDecoder: drop stream frames with high BER
In case the number of bit errors detected by the viterbi algorithm in a
stream frame are above a given threshold, do not copy its payload. This
prevents audio artifacts when data is processed by codec2 decoder.
2025-11-03 21:01:00 +01:00
Ryan Turner 5fe5cb287b M17: FrameDecoder: style formatting pass 2025-11-03 20:56:24 +01:00
Silvano Seva 79d2e9a27e M17: Demodulator: force unlock on EOT frame
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-11-03 18:59:00 +01:00
Silvano Seva b763d6456f M17: Demodulator: improve sampling point estimation
ClockRecovery module provides the best sampling point estimate based on
the previous baseband history, tracking clock drifts more promptly than
methods based on syncword correlation.

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-11-03 18:59:00 +01:00
Silvano Seva dc81639713 M17: Demodulator: improve symbol deviation estimation
Using the DevEstimator class to obtain a better estimation of the outer
symbol deviation: now values are estimated using a full frame instead of
just the outer symbols of a syncword.

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-11-03 18:59:00 +01:00
Silvano Seva 2df90bb269 M17: add symbol deviation estimator
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-11-03 18:59:00 +01:00
Silvano Seva 3956ec60ed M17: add clock recovery module
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-11-03 18:59:00 +01:00
Silvano Seva a6561ef59b M17: Demodulator: split FSM states into functions
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-11-03 18:59:00 +01:00
Silvano Seva 7b633c5bee M17: Demodulator: reduce indentation levels
Removed some indentation levels in M17Demodulator::update function body,
no functional change.

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-11-03 18:59:00 +01:00
Silvano Seva 52a8cd1769 ui: strings: add missing string table entries
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-04 21:35:55 +02:00
Silvano Seva 1264882004 ui: strings: change "Frequency Offset" to "Offset"
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-04 21:35:55 +02:00
Silvano Seva f742a081d3 ui: fix voice prompts for CTCSS settings menu
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-04 21:35:55 +02:00
Silvano Seva 18cef67746 ui: gps: hide RTC settings if there is no RTC
Show settings entries for RTC synchronization and UTC timezone only if
the CONFIG_RTC macro is present

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-03 19:47:07 +02:00
Silvano Seva c95f9ab6b6 rtc: add settings entry for RTC sync with GPS
Added settings menu entry to make RTC synchronization with GPS
persistent across reboots. When the synchronization is enabled
the RTC will be updated on the first valid RMC sentence received.

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-03 19:46:36 +02:00
Silvano Seva b3b057699b core: gps: skip active satellites with ID > 31
Some GPS modules can work on multiple systems at the same time. However,
the current code has been written only for GPS and, consequently is not
able to manage satellites with an ID greater than 32. This commit provides
an hotfix until all the GPS code gets refactored an extended to support
also GLONASS and Galileo.

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-03 19:09:58 +02:00
Silvano Seva f2f84f3da1 core: gps: add enums for GPS fix quality and type
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-03 19:09:58 +02:00
Silvano Seva 809f54cb1b core: gps: get position from GGA sentence
Moved retrieval of latitude and longitude coordinates from RMC to GGA
sentence. This prevents from having a valid fix but coordinates still
equal to 0.0, 0.0

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-10-03 19:09:58 +02:00
Ryan Turner d2ddddf478 Fix incorrect include paths for platform-unique header files 2025-10-02 19:43:55 +02:00
Ryan Turner 00a4dbb063 style: resolve ambiguous paths on include macros
Update meson and cmake config to only include openrtx and platform paths.
Update files to use <..> for system and external libraries, ".." for
project files and new relative paths as necessary.

Did not attempt to fix areas where includes that should be <..> were
previously ".."

Inspired by #96, closes #359.

Acked-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-28 17:27:45 +02:00
Silvano Seva c0d8984d09 core: dsp: drop dsp_invertPhase function
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-28 14:12:20 +02:00
Silvano Seva 6db558e89c core: dsp: refactor DC block filter implementation
New DC block filter implementation using fixed-point math and guaranteeing
zero DC component on the output signal.

Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-28 14:12:20 +02:00
Silvano Seva 4b9f75fe81 ui: converted SpanishStrings.h file to Unix line endings
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-22 21:59:07 +02:00
Silvano Seva d092c51df5 ui: settings: add CTCSS enable to FM settings menu
Added the ability to manage CTCSS enablement via the FM settings menu.
As part of this, refactored the existing instances of setting and
displaying this value on the main vfo screen and on the macro menu.

Acked-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-22 21:55:55 +02:00
imostlylurk f7e5e45d09 ui: settings: introduce FM settings menu option
This seeks to create a place for settings on the FM mode that complement
the quick actions available from the macro menu. This way as more FM mode
features are added, there is a menu to configure them in.

Co-authored-by: Ryan Turner <ryan@turnrye.com>
Acked-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-22 21:54:26 +02:00
imostlylurk 2df9addccc ui: refactor CTCSS entries in macro menu to be more user friendly
This change makes it so that the macro menu shows the current tone and
change the tone setting with macro 1, then change tone frequency with
macro 2 and 3. This is a clearer UX.

Co-authored-by: Ryan Turner <ryan@turnrye.com>
Acked-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-22 21:51:06 +02:00
Silvano Seva a30dae357d ui: fix misspelled strings
Signed-off-by: Silvano Seva <silseva@fastwebnet.it>
2025-09-21 18:52:08 +02:00
romanat 3add35275c ui: battery: add menu entry to select between icon or percentage 2025-09-18 19:43:08 +02:00
Silvano Seva 76b8d191b0 core: gps: clear the RTC update request flag when sync is done
Once the RTC has been synchronized with GPS time, set the gps_set_time
flag back to false. This resets also the corresponding ON/OFF menu entry,
providing both a feedback that the operation is done and allowing the user
to just set it back to ON in case a new synchronization is needed.
2025-08-25 21:31:00 +02:00
Silvano Seva 2f0b7f8df7 core: gps: added field for HDOP to GPS data
HDOP is expressed in cm, meaning that an HDOP of 1.37m is stored as 137 in
the GPS data structure.
2025-08-25 21:31:00 +02:00
Silvano Seva 40ff9baa47 ui: gps: added indication for no GPS device detected
Clearly show on UI the case when no GPS receiver has been detected in the
hardware. Previously either the "GPS off" or "No fix" strings where shown
also in case of no GPS, causing ambiguity.
2025-08-15 20:07:32 +02:00
Silvano Seva 72845e4c1f core: gps: use new gps device API 2025-08-15 20:00:20 +02:00
Silvano Seva 219bb4e986 core: gps: added new API for GPS device management 2025-08-15 20:00:20 +02:00
Silvano Seva 280d5ad350 Fixed compilation errors with GCC 15.1 2025-07-08 21:36:25 +02:00
Silvano Seva 0962b533c7 core: battery: added Li-Ion battery type, updated targets accordingly 2025-07-08 21:18:41 +02:00
Silvano Seva 71c144d426 core: battery: split configurations for battery chemistry and cells number 2025-07-05 14:05:49 +02:00
Silvano Seva 03d1ae5546 Updated year in copyright headers 2025-04-04 21:15:39 +02:00
Silvano Seva 23b16053df Audio stream: fixed early start of input stream when in liner buffer mode 2025-04-02 19:31:50 +02:00
Silvano Seva 15a544e2ad DM-1701: radio driver 2025-04-02 19:28:22 +02:00
Silvano Seva fb9dd20147 CS7000P: added radio driver 2025-03-26 19:58:14 +01:00
Silvano Seva 959e9df457 Added support for STM32H743 MCU 2025-03-16 17:50:19 +01:00
Silvano Seva e204891776 CS7000: calibrated AK2365 RSSI output curve 2025-03-16 10:13:00 +01:00
Silvano Seva 68b001310e CS7000: radio driver 2025-03-16 10:13:00 +01:00
Silvano Seva 135bf562f1 CS7000: NVM: added reading of calibration data 2025-03-16 10:13:00 +01:00
Silvano Seva b5ca097c52 Added implementation of CTCSS tone detector 2025-03-07 19:06:16 +01:00
Silvano Seva 4515bd9e60 utils: added macro to retrieve the number of elements of an array 2025-03-02 18:09:08 +01:00
Jim Ancona b16c3c0fd1 M17: replaced std::experimental::array with std:array 2025-03-01 20:01:08 +01:00
Jim Ancona 5b7f835817 Small code changes to support emulator build on MacOS 2025-03-01 20:01:06 +01:00
Silvano Seva 1099f0f7a3 CPS: added enumeration type for CTCSS tone index 2025-03-01 19:01:10 +01:00
Silvano Seva 4f791a8f09 M17: FrameDecoder: decodeLich: added validation of LICH chunk number 2025-02-11 19:01:34 +01:00