Commit Graph

506 Commits

Author SHA1 Message Date
Silvano Seva 15e7f562e3 Reorganized MDx nonvolatile memory devices 2024-08-14 18:20:05 +02:00
Silvano Seva 6aee71ec84 Reorganized Linux nonvolatile memory devices 2024-08-14 18:20:05 +02:00
Morgan Diepart 3df8657b16 fixed missing static keyword 2024-07-12 09:01:55 +02:00
Silvano Seva fe3c54153e Stm32 DAC: moved parameter for idle level from config to init function argument 2024-07-10 09:16:14 +02:00
Silvano Seva e95b5bbb6f Linux: fixed compilation errors due to missing gpio-native.h header file 2024-06-23 09:39:43 +02:00
Morgan Diepart e50b8ce80c Module17: keyboard: do not enable SMBus timeout while using the I2C mode
Enabling SMBus timeout in the capacitive touch sensor and not in the MCU would cause the CTS to reset and the MCU expecting the transaction to keep going, locking-up the device.
Timeout should be re-enabled when SMBus will be implemented.
2024-06-21 19:27:33 +02:00
Morgan Diepart b5e49a3b4d Module17: reorganized display drivers, implemented dynamic selection of display driver 2024-06-21 19:26:32 +02:00
Morgan Diepart 30e9311a20 Module17: added support for hardware revision 1.0 2024-06-21 19:26:31 +02:00
Morgan Diepart caf3225a87 Driver for CAP1206 capacitive touch controller 2024-06-21 19:26:11 +02:00
Silvano Seva 40780af16d Module17: using standard ADC driver 2024-06-21 19:26:03 +02:00
Morgan Diepart 7052dbcf8b Module17: use hardware I2C for MCP4551 2024-06-21 18:09:53 +02:00
Silvano Seva b196ce9cbc Driver for bitbanged SPI on MCU gpios 2024-06-21 18:00:33 +02:00
Silvano Seva b98ea17aee MK22: updated gpio driver 2024-06-21 18:00:33 +02:00
Silvano Seva 8842b98a52 STM32F4xx: updated gpio driver 2024-06-21 18:00:33 +02:00
Silvano Seva 695210d689 GDx: fixed missing audio output from RTX stage 2024-06-21 18:00:18 +02:00
Silvano Seva 3940405c68 stm32_dac: refactored stm32dac_init() to have a per-instance initialization 2024-06-21 09:58:04 +02:00
Silvano Seva 81f9257888 Updated radio and display driver stubs 2024-06-17 22:56:06 +02:00
Silvano Seva ed92d81543 Module17: implemented configurable logic levels for PTT in/out
See #248
2024-03-13 08:37:04 +01:00
Derecho 02bcec0bd4 Fix compilation warnings during linux build 2024-02-11 18:06:15 +01:00
Silvano Seva fdd08d4bcb Module17: removed screen contrast setting, added screen brightness setting
Module17 uses an OLED display, which does not have contrast regulation. The
contrast control register, however, allows to change the brightness of the
display.
2024-02-06 21:11:41 +01:00
Silvano Seva adc8b05075 Removed framebuffer from MD9600 2024-02-06 19:19:47 +01:00
Silvano Seva b416585819 Dropped framebuffer from GDx display driver 2024-02-06 19:19:47 +01:00
Silvano Seva 7fc16388e0 Removed framebuffer from Module17 display driver 2024-02-06 19:19:47 +01:00
Silvano Seva 11d7a92f4e Removed framebuffer from ttwrplus 2024-02-06 19:19:47 +01:00
Silvano Seva 5a164fe2ab Removed framebuffer from SDL display driver 2024-02-06 19:19:47 +01:00
Silvano Seva 5ff098d2fb Removed framebuffer from MDx display driver 2024-02-06 19:19:47 +01:00
Silvano Seva d119e7d1b2 Moved pixel framebuffer out of display drivers into graphics layer
Reorganized code for pixel framebuffer in order to have it instantiated once
and for all the possible display drivers. Dropped the display_getFrameBuffer()
function.
2024-02-06 19:19:47 +01:00
Silvano Seva 731054a131 Dropped display_renderingInProgress() function from display API
Removed display_renderingInProgress() function from display interface as it
has never been used so far.
2024-02-06 19:19:47 +01:00
Silvano Seva d8c0ab1c44 Dropped support for 20kHz bandwidth
Dropped support for 20kHz bandwith in rtx code and radio drivers. This option
is supported only by MDx radios and so far is not being used at all.
2024-02-06 19:19:47 +01:00
Silvano Seva 44385b3b25 Using signed 32-bit data type for RSSI instead of floating points
Switched to int32_t for RSSI representation to allow running the code also
on devices with limited resources. Defined a new ad-hoc type to still keep
the possibility of using floating points on more capable devices.
2024-02-01 11:07:20 +01:00
Silvano Seva 5b3929ef44 Moved from float to uint32_t for TX power, substituted dBm with mW in CPS channel struct
General code optimization allowing to reduce the overall binary size, especially
for devices without hardware floating point support. On the MD-380 (which has the
FPU) the .text size has been reduced of 4'928 bytes.
2024-02-01 11:07:20 +01:00
Silvano Seva 24c4a25b2d Made "static" all the variables local to each translation unit 2024-02-01 11:07:20 +01:00
Silvano Seva 0f4290cdfe Using Kconfig-style #defines for display parameters' description. 2024-02-01 11:07:20 +01:00
edgetriggered 2ce3f5e949 ttwrplus: Ignore revision from sa8x8-fw version
The "revisions since last tag" version field is now accurately named and no longer checked. Extra parentheses also added to reduce compiler warnings.

Fix #217
2023-12-24 10:48:41 +01:00
Silvano Seva ab4a964ddd Linux NVM: added implementation of nvm_getMemoryAreas() 2023-12-07 12:02:48 +01:00
Silvano Seva 419d02a203 Linux NVM: updated implementation to use the new standard API 2023-12-03 19:00:55 +01:00
Silvano Seva 070ed3de32 Device driver for file-based nonvolatile memory storage 2023-12-03 19:00:55 +01:00
Silvano Seva 578c4f425b Added list of NVM areas to ttwrplus target 2023-12-03 19:00:55 +01:00
Silvano Seva f94e6ce49e Added list of NVM areas to Module17 2023-12-03 19:00:55 +01:00
Silvano Seva ecd3602662 Added list of NVM areas to GDx targets 2023-12-03 19:00:55 +01:00
Silvano Seva 72c8b8246b Added list of NVM areas to MDx targets 2023-12-03 19:00:52 +01:00
Niccolò Izzo 09587ab6c8 Added wrapper to NVM device API for Zephyr flash API.
Wrapped Zephyr flash API calls for OpenRTX interface, added
additional settings specific to T-TWR Plus.

TG-553
2023-12-03 18:34:39 +01:00
Silvano Seva d20f0e2c8d Added implementation of the standard NVM device API to AT24Cx driver. 2023-12-03 18:34:39 +01:00
Silvano Seva ab66054341 Added implementation of the standard NVM device API to W25Qx driver. 2023-12-03 18:34:39 +01:00
Silvano Seva f125bbe9be Refactored AT24Cx EEPROM driver and implemented memory write function 2023-12-03 18:34:39 +01:00
Silvano Seva be07b8f73e Refactoring of W25Qx driver 2023-12-03 18:34:39 +01:00
Silvano Seva 91c0965007 Module17: made M17 baseband output have correct DC bias and amplitude
Removed an old workaround for an hardware bug of Module17 rev 0.1b limiting
the output swing of baseband signal in newer hardware revisions.

Contribution by Mathis Schmieder DB9MAT.
2023-11-21 18:46:03 +01:00
Silvano Seva 75abbaa12c Linux: using file-based driver for SOURCE_RTX input device 2023-11-12 12:35:21 +01:00
Silvano Seva 8040a012b4 Driver for file-based audio input device 2023-11-12 12:34:37 +01:00
Silvano Seva e362a80d45 Fixed truncation error in AT1846S setFrequency()
Fixed error in compuation of values for AT1846S frequency registers
causing the output frequency to have an effective resolution of 1kHz
instead of 62.5Hz.
2023-10-22 03:24:25 +02:00
Niccolò Izzo 4697be5ea6 Fix squelch behaviour on T-TWR Plus
On LILYGO T-TWR Plus the squelch was being controlled by AT1846s,
resulting in the squelch bar setting being completely ignored. Now we
are introducing the support for a new command of sa8x8-fw called
AT+AUDIO that controls the muting or unmuting of the speaker power
amplifier, enabling us to:
1. Disable AT1846s embedded squelch
2. Enable OpeRTX squelch
Also fixed a bug where the sa8x8-fw version was incorrectly checked.
AT+AUDIO requires sa8x8-fw version v1.3.0.r1, bumped version check in
OpenRTX.

TG-553
2023-10-17 09:54:09 +02:00
Niccolò Izzo 04d6d01a5c
Reduce encoder sensitivity on T-TWR Plus
Reduce encoder sensitivity on T-TWR Plus by dividing the pulse counter
input by two.

TG-553
2023-10-09 09:23:45 +02:00
Silvano Seva e2ab831c27 Added 1750Hz squelch tone on MD-3x0 radios 2023-09-22 13:58:59 +02:00
marco 06515e324a Enabled 1750Hz squelch tone on GDx 2023-09-22 13:58:59 +02:00
marco 77e0ad27a0 Added support for 1750Hz squelch tone, implemented squelch tone in UV-3x0 radio driver.
When pressing the Hash key and the PTT key in FM mode
a 1750 Hz tone is transmitted
2023-09-22 13:58:59 +02:00
Silvano Seva 6f567cc38d ttwrplus: implemented the platform_pwrButtonStatus() function.
The platform_pwrButtonStatus() function returns false (shutdown) in
case of a long press of the power button.
2023-09-20 21:16:43 +02:00
Niccolò Izzo 7619b9473b ttwrplus: Slow down encoder input
Two ticks are needed to emit one KNOB_LEFT or KNOB_RIGHT event, thus
slowing down the rotary encoder input and making it more comfortable.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo fe027c440c ttwrplus: enable volume control
Replaced KEY_F7 and KEY_F8 with KEY_VOLUP and KEY_VOLDOWN.
Remapped the T-TWR Plus volume up and down keys to those, fixing a bug
in the pmu key detection where the wrong active edge was selected.
Adapt soft volume code for the UV3x0 to control code in the T-TWR Plus
by acting on the AT1846s Rx gain.
For target T-TWR Plus bound long press of KEY_VOLDOWN to macro menu open.
Unbound KNOB_LEFT and KNOB_RIGHT to squelch control and bound
instead KEY_VOLUP and KEY_VOLDOWN.

TG-553
2023-09-20 21:08:35 +02:00
Silvano Seva 6a17bb8483 ttwrplus: implemented radio band detection. 2023-09-20 21:08:35 +02:00
Niccolò Izzo ad1beffcf3 ttwrplus: implemented PMU interrupts handling
TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo 2dabacebd8 ttwrplus: Implement power control on SA8x8
Implemented power control in T-TWR Plus by using the embedded switch
(RADIO_PWR) that controls the H/L pin of the SA868.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo c276fc5a51 ttwrplus: moved all the SA8x8 code in a dedicated translation unit. 2023-09-20 21:08:35 +02:00
Niccolò Izzo d935532fc4 ttwrplus: enable GPS
GPS was enabled using UART1 and Zephyr message queues.
UI is a bit crushed on the small 128x64 screen but hardware works as expected.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo eeb05bcc0f ttwrplus: fix unstable baseband startup
A proper baseband reset is now issued at each startup. Now OpenRTX check
for SA868 responsiveness before proceeding with radio initialization,
eliminating unstable behaviour at boot.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo dc84908fbc ttwrplus: enable TURBO mode on SA868S
Enabled AT+TURBO command on SA868 that switches the baud rate of the
serial communication from 9600 to 115200 to get a more responsive
baseband. Bumped up the required baseband firmware version to
v1.1.0.r20.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo 82218aabce ttwrplus: enable macro menu
Modified keyboard mapping to enable macro menu, interface is still
broken as the T-TWR Plus is missing a keyboard.
Now the volume down key, mapped as the MONI button can be also used to
set the squelch level.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo 4c035bbf16 ttwrplus: enable Tx capability
Enabled Tx capability on T-TWR Plus.
Since Tx requires the SA8x8 to disable the Rx stage, we check that at
least firmware v.1.1.0.r14 is present on the baseband, otherwise we
don't initialize the radio.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo 4df315473f ttwrplus: add RGB LED support
Implemented WS2812C support with Zephyr driver.
Hooked up the RGB control to the existing RED and GREEN LED support.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo c60f580396 ttwrplus: add support for SA868
Add support for initializing SA868 and querying its firmware version,
created a new instance of the AT1846S class that leverages the SA8x8
serial connection as an i2c implementation.
Rx works! In the sense that the RSSI bar behaves as expected, still no
audio.

This commit was contributed by edgetriggered.

TG-553
2023-09-20 21:08:35 +02:00
Niccolò Izzo df853c8527 ttwrplus: add support for keys using Zephyr bindings
Zephyr already provides button support based on gpios. We are mapping
Zephyr keycodes to OpenRTX therefore future targets will only need to
configure their devicetrees to have button support.

Rotary encoder readout leverages the hardware pulse counter. PTT in
this device is also bound to KEY_ESC, that matched the behaviour
observed in many commercial radios.

TG-553
2023-09-20 21:08:35 +02:00
Silvano Seva 67f6d56168 Display driver for ttwrplus 2023-09-20 21:08:35 +02:00
Silvano Seva ebc5910015 Renamed "bcd2bin" utility to "bcdToBin" to avoid conflicting with Zephyr includes 2023-09-20 21:08:35 +02:00
Silvano Seva 5ea94ee1af Improved management of FM audio volume on MD-UV3x0.
Fix #160.
2023-09-08 16:14:11 +02:00
Silvano Seva 8dc1cba1f7 Removed sources of old audio stream drivers, updated stub audio driver 2023-08-30 18:04:25 +02:00
Silvano Seva cd936ea216 Audio devices table for linux and GDx targets 2023-08-30 18:04:25 +02:00
Silvano Seva 344aa46da7 Audio devices table for MDx 2023-08-30 18:04:25 +02:00
Silvano Seva 2b1d3236d3 Audio devices table for Module17 2023-08-30 18:04:25 +02:00
Silvano Seva f56771734f Audio device driver for STM32F4xx ADC peripheral 2023-08-30 18:04:25 +02:00
Silvano Seva 5aed3e3316 Audio device driver for STM32F4xx PWM-based 8-bit DAC emulation 2023-08-30 18:04:25 +02:00
Silvano Seva efb5f22750 Audio device driver for STM32F4xx DAC peripheral 2023-08-30 18:04:24 +02:00
Silvano Seva 1011dd1081 Moved audio_stream.h from interfaces to core headers 2023-08-30 18:04:24 +02:00
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 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 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 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 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