Commit Graph
144 Commits
Author SHA1 Message Date
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
Raphael CoefficandPeter Feerick ba03d02b7a Fixes a race condition on proto list class init between UI and mixer task 2021-10-04 21:52:08 +11:00
rotormanandRisto fc2142ec78 Changed uniformly to EdgeTX boiler plate (also added boiler for files that were missing it). 2021-10-02 14:22:01 +02:00
Bryan MaylandandPeter Feerick 31cb282dd2 Stop using 50ms mixer period when no module enabled
Also adds a 2ms mixer period if internal and external modules are stopped
but joystick mode is active
2021-10-01 11:16:43 +10:00
Raphael Coeffic e29138f7e3 Draft support internal module NV14 2021-09-19 16:17:47 +02:00
Raphael Coeffic e90c300bf4 Clean-up / renaming MODULE_TYPE_AFHDS3 to MODULE_TYPE_FLYSKY 2021-09-19 16:17:47 +02:00