Commit Graph
149 Commits
Author SHA1 Message Date
ThomasKuehneandGitHub 3fe7b0e420 chore: remove executable permission from non-executable files (#4766) 2024-03-21 09:23:43 +10:00
Raphael CoefficandGitHub ff2b3ac22a fix: Internal PXX exclusive S.PORT (#3822) 2023-10-13 09:48:32 +10:00
Peter Feerick e8077021f6 chore: Formatting #3780
Forgot to push before merge
2023-10-01 15:21:44 +10:00
Raphael CoefficandGitHub 00cb9c48df refactor: Notify module driver on config changes (#3780) 2023-10-01 15:19:17 +10:00
c4f1e7127d chores(flysky): Separate AFHDS2A and AFHDS3 into 2 different module type (#3783)
* chores(flysky): separate AFHDS2A and AFHDS3 into 2 different module type

This should allow to remove some of the hacks added earlier.

* chore: Add some EL18 CI bits

* fix(afhds): cmake defs

* fix(ci): add el18 to commit-tests.sh

* chore(cpn): separate AFHDS2A and AFHDS3

* chore(cpn): remove binary import of afhds and legacy fxFreq field for afhds3

* fix(cpn): limit available internal afhds protocols to those supported by hardware

* chore(cpn): update Flysky int module test

* fix(cpn): compile error

* fix(cpn): afhds2a max channels

* fix: TR_MODULE_PROTOCOLS

* enh(cpn): more support for afhds2a and 3

* fix(cpn): rebase compile error

* fix(cpn): bit indexes

* fix(cpn): emi toString

* fix(cpn): limit available internal afhds protocols to those supported by hardware

* enh(cpn): add support for Flysky EL18

* fix(cpn): available protocols

* fix(cpn): rebase moduledata

* chore(cpn): add module fields to model print

* Separate AFHDS2A and AFHDS3 UI settings.

* Fix AFHDS3 conversion from old subtype value.
Fix 'Channel Range' layout on portrait LCD.

* Fix name.

---------

Co-authored-by: Peter Feerick <peter.feerick@gmail.com>
Co-authored-by: elecpower <neilh713@tpg.com.au>
Co-authored-by: Phil Mitchell <phil.a.mitchell@gmail.com>
2023-09-07 19:24:03 +10:00
MichaelandGitHub 5db37e2a2b feat: Support for ext. Multiplex MLink JR type module (#3352)
* introducing external MLink module telemetry as module PPM subtype

* implemented fix for sensor discovery display not showing all detected sensors (is in separate PR too)

implemented PPM subtypes in Companion

* add PPM subtype to model printer

finalize subtypes for PPM in Companion

* added logic to try to use HW UART with inverters turned off first (e.g. NV14), then, if not successfull use soft serial inverted (== uninverted data due to HW inverters on PCB)

changed start bit detection IRQ priority from 5 to the previous 0 (also in separate PR)

* extended telemetry timeout to 2s due to slow Mlink RSSI update rate

* changed the "NOTLM" sub-type texts to:

- "No Telem" for 128x64 (this is the max numbers of characters it can take)
- "No Telemetry" everything else including Companion

* Companion:

- lower case 1st charachter on PpmSubTypeStrings to ppmSubTypeStrings
- added telemetry hooks for ppmSubTypeStrings stringx

* simplified serial port initialization for MLink telemetry

* editorial change: corrected obsolete comment
2023-05-16 11:22:47 +10:00
125fd2ba28 fix: Missing configurable port code, R9M Access, support FRM303 via mod (#3442)
* Fix configurable external module port

* Added FRM303 support for TX16S via AUX1 mod, i.e. direct connect AUX1 TX/RX to PPM/Heartbeat pins.

---------

Co-authored-by: raphaelcoeffic <raphael.coeffic@frafos.com>
2023-04-15 19:04:34 +10:00
Raphael CoefficandGitHub 72193eda82 chore: New module/serial API (#3055)
* WiP: new module interface

* WiP: softserial timer DMA

* WiP: setup() and send() in one step

and remove methods specific to internal or external module

* fixes and extra port config

* horus targets

* module ports have moved

* T8 support (only internal module)

* fix nv14

* stupid GCC....

* disable BT

* remove nv14 telem driver

* remove old aux serial driver

* Move module buffers out of pulses.h

* Soft serial fixes and PXX1 support

* Fixed PPM module output

* Fixed CLI

* compilation fixes

* Ported bluetooth and flysky gimbal to new serial driver

* Re-enable soft-serial RX

* fixes and cleanup

* nv14 fixes

* Fix flysky gimbals

* Ghost module

* 16 bytes of RAM

* Remove getByte from module API

* Ghost cleanup

* fix: _half_duplex_input() must be called after usart init

* WiP

* more cleanup

* Remove board specific settings from PXX1 / PXX2 drivers

* A bit of PXX2 header cleanup

* Add support for OVER8 and ONEBIT

* Add some support for inverters (NV14 / EL18)

* Support NV14 power fixes in generic board

* Fix polarity handling

* Fix RX DMA

* Fix mixer not running

* Add soft-serial polarity control

* Quick fix for telemetry polling while module port is changed

* Fix bootloader DEBUG

* Fix MPM telemetry

* Fix pulse start

* DSM2 soft-serial fallback

* DSMP async module restart

* Fix CRSF LUA upstream

* Remove global variable telemetryProtocol

* Use HAL/LL constants

* Fix various issue with AFHDS3 and NV14/EL18 internal module

* Fixed S.PORT unit tests

* fix: update widx after writing at current index

* fix: init error condition

* Fix: possible infinite loop in _find_port()

* Add support for bidir S.PORT init

* Add support for "getLastByte" in HW serial driver

* PXX1: Add support for S.PORT based on IDLE callback

* Fix rebase error

* Fix softserial _rx_fifo_push()

* Add softserial support for waitForTxCompleted()

* Fix MPM flashing (internal / external)

* Fixed external MPM

* Activate RX DMA on internal module

Seems to work with serial passthrough without issues, at least on the L3R PRO.

* Fix softserial DMA on stdlcd F4 targets

* Add softserial support for 32bit timers (mostly TIM2)

* More precise soft-serial

* Fix MPM update using inverters & HW uart

* Raise S.PORT DMA/USART IRQ prio to achieve faster switching to input

* Remove useless delays

* Fix flashing external ELRS module

* Added a retry mechanism for FrSky S.PORT update

* Remove useless enableRx()

* External FrSky modules are all flashed via S.PORT

* Remove power management unit update

This was only used on the first batch of X-lite.
2023-02-09 19:44:32 +10:00
Raphael CoefficandGitHub 06c359f096 feat(ACCESS): Configure AUX serial port as "External module" (#2562)
* Enable RX DMA on external module USART

* feat(ACCESS): configure AUX serial port as "External module" (#2562)

This allows configuring the external access mod on runtime rather than by compilation option.

* fix: fetch external module driver
2022-12-14 18:41:32 +10:00
Raphael CoefficandGitHub 655965d7a6 fix: prevent endless loop with SBUS trainer on model change (#2515)
* fix: prevent generic module de-init if protocol is NONE

Fixes #1898

De-initialising the external module while SBUS trainer is used on external module RX leads to the following sequence:
- `extmoduleStop()` is called, thus shutting down the timer DMA
- on certain targets, the timer DMA stream is the same as the external module RX DMA stream
- when this DMA stream is used by the SBUS trainer input, this leads to DMAFifo to return random bytes continuously
- thus driving `processSbusInput()` into an endless loop, which is run in the mixer task
- as the mixer task has the highest priority, it runs forever
- after some time the watchdog timer expires, and causes a reboot

* DMAFifo: check if the stream is enabled

This provides some hardening to avoid the conditions described in previous commit.
2022-10-12 12:45:10 +10:00
Raphael CoefficandPeter Feerick 647d19bbc9 Fix access settings pop-ups 2022-08-18 12:38:35 +10:00
Raphael CoefficandRaphael Coeffic 3d3bc64d30 Fixed AFHDS2 define 2022-08-11 12:15:46 +02:00
Raphael CoefficandRaphael Coeffic 267fa84f3f WiP: better restartModule() 2022-08-11 12:15:46 +02:00
Raphael CoefficandRaphael Coeffic 39c61408e7 AFHDS3: Model ID & fixed model switch 2022-08-11 12:15:46 +02:00
Raphael CoefficandRaphael Coeffic bb6c6d6e2d WiP PoC AFHDS3 internal module 2022-08-11 12:15:46 +02:00
Raphael CoefficandRaphael Coeffic db73e4cd87 Move AFHDS3 to new module interface 2022-08-11 12:15:46 +02:00
Raphael CoefficandRaphael Coeffic 1a918bf072 Improve NV14 CMake 2022-08-11 12:15:46 +02:00
Raphael CoefficandRaphael Coeffic f952c5f7c7 Internal and external module buffers are now private 2022-08-11 12:15:46 +02:00
Raphael CoefficandPeter Feerick 8379b47e2b Fix compilation with MULTIMODULE=NO
And allow for Spektrum telemetry to stay enabled (needed for DSMP module).
2022-07-22 20:45:04 +10:00
Raphael Coeffic c11d7d58ae Moved FreeRTOS to an object library
This also allows for reducing the propagated includes and thus avoid name clashes to FreeRTOS.
2022-04-03 17:50:53 +02:00
Raphael Coeffic 0613a29122 Cleanup 2022-03-25 18:23:19 +01:00
Raphael Coeffic 0927847adb Stop telemetry timer when not needed 2022-03-25 18:15:56 +01:00
Raphael Coeffic 59191f37c3 Use software timers to trigger telemetry processing 2022-03-25 16:50:00 +01:00
Raphael CoefficandGitHub 50aeb50029 fix: Quick fix to let CRSF be used with MPM wireless trainer - limiations apply (#1724)
* Let's do some dirty hack with MPM RX

Resolves #1671

* Use the right function to sync and shutdown sync on external MPM as well
2022-03-25 12:04:15 +10:00
Raphael CoefficandRaphael Coeffic 9d5cd1876c Added support for Lemon-Rx DSMP 2022-03-24 10:40:17 +01:00
Raphael CoefficandRaphael Coeffic 86d1ca4364 Reorganize module type/subType/rfProtocol 2022-03-24 10:40:17 +01:00
Raphael Coeffic 6bb11a3b68 Kill the return of SKY9X's ghost 2022-03-22 18:39:00 +01:00
3djcandRaphael Coeffic c0e6f2a7f9 Compilation fixes 2022-03-21 11:48:49 +01:00
Raphael Coeffic 3d6c971197 Use normal soft-serial function for AFHDS3 2022-03-20 16:30:59 +01:00
Raphael Coeffic d2685aeadf Fix polarity 2022-03-20 16:30:59 +01:00
Raphael Coeffic 9999378da5 Fix SBUS polarity 2022-03-20 16:30:59 +01:00
Raphael Coeffic 530d395204 WiP 2022-03-20 16:22:14 +01:00
Raphael Coeffic 6b2139d853 Fixed module power ON/OFF 2022-03-20 16:22:13 +01:00
Raphael Coeffic fdc8e5d445 WiP: module de-init 2022-03-20 16:22:13 +01:00
Raphael Coeffic 937e92ede7 Moved PPM driver to synchronous mode (horus only)
TODO: trainer output and taranis driver
2022-03-20 16:22:13 +01:00
Raphael Coeffic 4f1d3b5ff4 Fix nv14 2022-03-20 16:22:12 +01:00
Raphael Coeffic fe2266fb70 AFHDS2 and PXX1 serial module drivers 2022-03-20 16:22:12 +01:00
Raphael Coeffic 5fb369f052 X9lite fixes 2022-03-20 16:22:12 +01:00
Raphael Coeffic a176628db6 Multi internal driver 2022-03-20 16:22:12 +01:00
Raphael Coeffic b7523e489b AFHDS2 fixes 2022-03-20 16:22:12 +01:00
Raphael Coeffic 7c05f7295e Taranis external module driver 2022-03-20 16:22:12 +01:00
Raphael Coeffic ffefd0f6dd External serial driver moved to a separate driver 2022-03-20 16:22:12 +01:00
Raphael Coeffic 803b472c85 Move all serial internal module functions into proper drivers 2022-03-20 16:22:12 +01:00
Raphael Coeffic f733810c79 WiP: refactor serial ports 2022-03-20 16:22:12 +01:00
Raphael CoefficandPeter Feerick 09c49e24ee Remove SKY9X target 2022-01-29 14:40:17 +10:00
Raphael CoefficandRaphael Coeffic 3fd3077944 Fixed simulator 2021-11-21 11:18:35 +01:00
Raphael CoefficandRaphael Coeffic 35f8dc2551 Fixed compilation for pulses based internal module 2021-11-21 11:18:35 +01:00
Raphael CoefficandRaphael Coeffic 73790c1654 Use FreeRTOS stream buffers and task notifications 2021-11-21 11:18:35 +01:00
Raphael CoefficandRaphael Coeffic 5d240e4e48 WiP internal CRSF pulses 2021-11-21 11:18:35 +01:00
Raphael Coeffic 3588c8d963 Cleanup first a bit 2021-11-06 15:59:34 +01:00