Commit Graph

186 Commits

Author SHA1 Message Date
Andrew Tridgell c858b7201d AP_RCProtocol: prevent decoding past end of output array
this fixes test_sbus on clang
2023-10-13 09:42:25 +11:00
Andrew Tridgell a2717a84bf AP_RCProtocol: added a test suite for SBUS encode/decode
cover all values and check special handling of 875
2023-10-13 09:42:25 +11:00
Andrew Tridgell ca4f26db17 AP_RCProtocol: make sbus_decode public to allow for a test suite 2023-10-13 09:42:25 +11:00
Andrew Tridgell 120a8c1b1d AP_RCProtocol: protect against invalid data in SBUS 2023-10-13 09:42:25 +11:00
Peter Barker c1110d4b43 AP_RCProtocol: disable raw logging if no RC_Channel
We're asking the singleton here for information on whether we should do raw logging.  We may not actually be compiling the RC_Channel library in.
2023-10-03 11:46:43 +11:00
Andrew Tridgell 24139d661a AP_RCProtocol: allow for fport without FRSky telem 2023-08-19 20:27:24 +10:00
Peter Barker b8a80817e4 AP_RCProtocol: add support for DroneCAN RCInput packets 2023-08-19 20:27:24 +10:00
Andy Piper 15047ddfc7 AP_RCProtocol: rescan at CRSFv3 baud rates to avoid RX loss on soft reboot 2023-07-19 16:32:36 +09:00
Andy Piper 7a6065940d AP_RCProtocol: report tracer frame rate correctly 2023-07-19 16:32:36 +09:00
Andrew Tridgell 36528cae57 AP_RCProtocol: removed set_blocking_writes 2023-07-12 17:06:02 +10:00
Michael du Breuil bbcc31ecec AP_RCProtocol: Refactor SUMD to remove legacy cruft
Of particular note this removes the partial SUMH support. This has been
broken as far back as 2018, as we only called add_input() if we were in
the SUMD or SUMD failsafe cases, which meant SUMH didn't work. This
commits to that path, and removes all the 8 bit CRC, SUMH support.

This also refactors a number of things for readability (condensing white
space, simplifying guards around debug code). Many of the debugs could
probably be removed, but this simplifies it.

This was tested against the RCProtocol example test, and everything
there reports a pass.
2023-06-27 10:57:06 +10:00
murata 004054d1b1 AP_RCProtocol: Remove invalid Slot ID checks 2023-06-20 09:06:04 +10:00
Peter Barker f75c905d25 AP_RCProtocol: remove intermediate option_is_enabled methods for RC_Channel 2023-06-14 17:39:43 +10:00
Peter Barker 109e29f048 AP_RCProtocol: move use of __builtin_parity to crc 2023-06-07 21:41:14 +10:00
Peter Barker d4dbf82c33 AP_RCProtocol: let compiler elide unused method
... rather than removing it based on target.

I need this symbol for other targets
2023-05-26 14:26:27 +10:00
Andrew Tridgell c7f97751cf AP_RCProtocol: return true on initial protocol detection
we need to tell the IO firmware that a byte was consumed when we first
detect a protocol as otherwise the next bad byte on DSM will lock us
on the DSM port
2023-05-23 12:11:04 +10:00
lipper-chengdu b351644583 AP_RCProtocol: Fix the issue of ST24 receiver not working 2023-05-18 08:24:22 +10:00
Peter Barker d59c9cc633 AP_RCProtocol: add separate define for AP_RCPROTOCOL_SUMD_ENABLED 2023-05-17 18:27:19 +10:00
Peter Barker c9b39c6d32 AP_RCProtocol: add separate define for AP_RCPROTOCOL_IBUS_ENABLED 2023-05-17 18:27:19 +10:00
Peter Barker 1b040fa0c3 AP_RCProtocol: add separate define for AP_RCPROTOCOL_PPMSUM_ENABLED 2023-05-17 18:27:19 +10:00
Peter Barker 1225d4c88f AP_RCProtocol: add separate define for AP_RCPROTOCOL_ST24_ENABLED 2023-05-17 18:27:19 +10:00
Peter Barker 2c00813aab AP_RCProtocol: add and use AP_RCPROTOCOL_ENABLED 2023-05-16 09:16:37 +10:00
Peter Barker 73b0ce6db8 AP_RCProtocol: define accepted RC backends for IOMCU in its hwdef files 2023-05-03 19:06:33 +10:00
Peter Barker 18e55b9d6e AP_RCProtocol: add and use AP_RCPROTOCOL_SBUS_ENABLED 2023-05-02 10:19:50 +10:00
Peter Barker 6535bfa546 AP_RCProtocol: add and use AP_RCPROTOCOL_CRSF_ENABLED 2023-04-27 18:31:30 +10:00
Peter Barker dd549ee625 AP_RCProtocol: use defaults to turn off CRSF telem on IO firmware 2023-04-27 18:31:30 +10:00
Peter Barker e89ccf1fa7 AP_RCProtocol: remove intermediate srxl2 callback-chain functions 2023-04-27 08:21:32 +10:00
Peter Barker b3b46f7be6 AP_RCProtocol: add add use AP_RCPROTOCOL_SRXL2_ENABLED 2023-04-26 22:54:33 +10:00
Peter Barker 75a0c592ab AP_RCProtocol: move code from SRXL2.cpp into Backend.cpp
NFC, just moving from one cpp to another
2023-04-21 09:15:01 +10:00
Peter Barker ff441de8ec AP_RCProtocol: move configure_vtx method to AP_RCProtocol_Backend
this is called as a static method from DSM to SRXL2 which isn't good.
2023-04-21 09:15:01 +10:00
Peter Barker b26cd59da6 AP_RCProtocol: add and use RC_Channel_config.h 2023-03-22 14:25:09 +11:00
Peter Barker 8db14c2bbf AP_RCProtocol: tidy enablement RC FastSBUS support
use the the hwdef to turn it off on IOMCU
2023-03-21 12:08:06 +11:00
Peter Barker 35e3dcd83b AP_RCProtocol: HAL_LOGGING_ENABLED in place of checking build types
We don't care how logging works, just that it does
2023-03-21 08:31:27 +11:00
Peter Barker 440db27807 AP_RCProtocol: correct use of MAX_CHANNELS in SRXL2
This is a little all over the place.  Safe, but ARRAY_SIZE ensures correctness, and we save memory...
2023-03-15 13:33:45 -07:00
Peter Barker d5bca05fb6 AP_RCProtocol: SRXL2 uses own define for max-channels
Different protocol, different count.
2023-03-15 13:33:45 -07:00
Peter Barker 9d099fbcd5 AP_RCProtocol: add option to not include SRXL in build 2023-03-15 22:45:23 +11:00
Andrew Tridgell 988028f765 AP_RCProtocol: on IOMCU don't allow protocol to change once detected
this prevents a crash where in-flight noise causes an incorrect
protocol detection, such as DSM for a SBUS input
2023-02-08 10:08:23 +11:00
Peter Barker 2a263972b2 AP_RCProtocol: iterate over array size rather than to last entry
This can move us towards not instantiating backends (having an _num_backends) at some stage.

More typical of what we do throughout the code, and makes the derefernces on the subsequent lines a lot more comfortable to casual browsing.
2023-01-25 09:14:16 +11:00
Peter Barker c139f7c730 AP_RCProtocol: add and use AP_VIDEOTX_ENABLED 2023-01-24 11:03:27 +11:00
Andy Piper 425f2b946e AP_RCProtocol: check for 3 good frames for CRSF
Move get_link_rate() and get_protocol_string() to CRSF protocol
allow ELRS at 420kbaud to be configured
allow CRSF to bootstrap at ELRS desired baudrate
2022-12-22 18:38:31 +00:00
Peter Barker 64193542ed AP_RCProtocol: allow FRSky to be compiled out 2022-11-15 18:44:45 +11:00
Andy Piper c815f04e97 AP_RCProtocol: add has_uart() 2022-10-18 11:20:25 +11:00
Peter Barker 402d9708a5 AP_RCProtocol: fix examples 2022-08-19 18:33:58 +10:00
Andy Piper 9b8ea8475d AP_RCProtocol: reset UART on RX failure for CRSF
update CRSF timestamps to use microseconds
implement RX liveness protocol and implement for CRSF
2022-06-15 17:20:36 +10:00
Andy Piper fe29324828 AP_RCProtocol: check for bad frames in CRSF decoding. 2022-06-08 17:35:03 +10:00
Andy Piper 89ea5dc12c AP_RCProtocol: flush CRSF telemety writes 2022-04-20 17:38:08 +10:00
Andrew Tridgell 5df38d0298 AP_RCProtocol: added using_uart() method 2022-03-28 17:09:26 +11:00
Andrew Tridgell 522173328c AP_RCProtocol: added failsafe_active() API 2022-03-22 10:30:35 +11:00
Andrew Tridgell 7716754c61 Revert "AP_RCProtocol: change default SBUS frame gap to 4ms"
This reverts commit af9e96c619.

revert as this causes a problem on some receivers such as the Frsky R9

fixes #19899
2022-02-11 08:10:25 +11:00
Andrew Tridgell af9e96c619 AP_RCProtocol: change default SBUS frame gap to 4ms
this is to cope with some newer receivers such as the skydroid H16
which produces SBUS frames with gaps over 2ms

without this change we get can RC failsafes constantly
2022-01-29 15:09:29 +11:00