Commit Graph

172 Commits

Author SHA1 Message Date
Andy Piper 8035b92e6e AP_RCProtocol: increase CRSF frame timeout to account for scheduling delays 2021-08-31 08:18:32 +10:00
Andrew Tridgell 0bdbdcec21 AP_RCProtocol: mark logger Write() calls as streaming where appropriate 2021-08-18 10:20:03 +10:00
Andrew Tridgell 36dcc0d16d AP_RCProtocol: make SBUS frame gap configurable 2021-08-10 10:08:05 +10:00
Andy Piper 293bb7704e AP_RCProtocol: implementation of CRSF v3
add CRSF command frame types
allow CRSF baud rate changes
record CRSF version being processed
2021-08-04 17:26:18 +10:00
Hwurzburg c5f53fc0b6 AP_RCProtocol: add Link Quality reporting to RC protocols 2021-07-16 13:27:38 +10:00
Andy Piper dd310fd12f AP_RCProtocol: move AP_VideoTX to AP_VideoTX 2021-02-23 11:43:32 +11:00
Patrick José Pereira 8f96580e9d AP_RCProtocol: Add missing const in member functions
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2021-02-03 18:45:14 +11:00
Andy Piper 881fd4f37c AP_HAL_ChibiOS: use buffered writes for CRSF telemetry 2021-02-03 18:28:28 +11:00
Andy Piper f6a2d20579 AP_RCProtocol: add tracer 250Hz mode 2021-01-20 18:06:24 +11:00
yaapu 5ef20aec27 AP_RCProtocol: added support for passthrough telemetry over crossfire 2021-01-20 18:06:24 +11:00
Andy Piper 27d7c73c8e AP_RCProtocol: rc_protocols_mask must be set before bootstrap occurs 2021-01-04 20:04:19 +11:00
Andrew Tridgell 9fcf36bad9 AP_RCProtocol: save memory in IO firmware
disable FPort2 to save memory.
Disable SBUS_NI as it is not needed on IOMCU as it has a dedicated
inverter
2020-12-28 08:27:23 +11:00
Andy Piper e6d0e38129 AP_RCProtocol: allow handshake to initiate RC connection. Support listen-only SRXL2 devices.
only bootstrap when SRXL2 is the only configured protocol (RC_PROTOCOLS=256)
remove spurious 0 initializers
2020-12-16 18:06:49 +11:00
yaapu c530df7e31 AP_RCProtocol: added fport2 24ch test 2020-12-01 15:05:02 +11:00
yaapu 7e9458b53a AP_RCProtocol: fport2 fixes
Fixed 16ch fport2 telemetry and enabled bidir support.
Fixed 24ch fport2, had to disable telemetry on 24ch for timing is too tight and telemetry would be unreliable.
2020-12-01 15:05:02 +11:00
Andy Piper 7f3f135dc5 AP_RCProtocol: add debug for further CRSF messages
add better frame debug info to CRSF
2020-11-11 18:13:11 +11:00
Andrew Tridgell 2dd58c8ed1 AP_RCProtocol: send null pkts for FPort2
when we have no data to send, we should send an empty packet to ensure
the receiver schedules us for data as often as possible
2020-10-28 19:51:45 +11:00
Andrew Tridgell 20c4f1950b AP_RCProtocol: added FPort protocol test 2020-10-28 09:00:34 +11:00
Andrew Tridgell df5105e20b AP_RCProtocol: added FPort2 protocol test 2020-10-28 09:00:34 +11:00
Andrew Tridgell a8770a5a82 AP_RCProtocol: added FPort2 protocol support 2020-10-28 09:00:34 +11:00
yaapu 4dec72a230 AP_RCProtocol: added support for frsky fport bidirectional telemetry 2020-10-27 10:17:53 +11:00
yaapu f33d197b16 AP_RCProtocol: fix fport rssi 2020-09-29 09:04:38 +10:00
Andy Piper 1f3c24d436 AP_RCProtocol: put back DSM VTX control and logging, add tests 2020-09-02 17:10:59 +10:00
Andrew Tridgell 2bac4b1d97 AP_RCProtocol: fixed up DSM decoder test suite
reverted values from new decoder and added another example
2020-08-24 16:32:35 +10:00
Andrew Tridgell 78c4e27259 AP_RCProtocol: reverted DSM protocol decoder
the new decoder done by Andy is much nicer looking code, but fails to
correctly parse several valid DSM setups, and parses both SBUS and
FPort as DSM, breaking setups that were previously working
2020-08-24 16:32:35 +10:00
Andrew Tridgell 6e1aeb905f AP_RCProtocol: added another DSM satellite protocol 2020-08-24 16:32:35 +10:00
Andrew Tridgell 1560c33418 AP_RCProtocol: fixed support for spektrum satellite receivers
this was broken by the recent DSM protocol decoder change
2020-08-24 16:32:35 +10:00
Andrew Tridgell 2779b26e6e AP_RCProtocol: fixed the "3 good frames" test
require 3 consecutive good frames, not 3 frames total, to declare the
weak protocols as detected
2020-08-24 16:32:35 +10:00
Andrew Tridgell 380e9d3075 AP_RCProtocol: greatly increase robustness of DSM decoding
this prevents other protocols being decoded as DSM
2020-08-24 16:32:35 +10:00
Andrew Tridgell e0ec46f06d AP_RCProtocol: support a mask of enabled RC protocols 2020-08-24 16:32:35 +10:00
Andy Piper ce970dcf75 AP_RCProtocol: process CRSF link statistics frames to get RSSI 2020-08-06 18:24:46 +10:00
Peter Barker 8f77536c08 AP_RCProtocol: fix segfault in example due to lack of VideoTX singleton 2020-07-31 07:55:09 +10:00
Andy Piper b697a44aed AP_RCProtocol: configure VTX when a SRXL2 VTX packet is received
support DSM VTX control
2020-07-14 16:50:08 +10:00
Andy Piper 80e1c0ebb0 AP_RCProtocol: decode DSM frame markers to avoid timing related jitters especially in SITL
complete re-write of DSM decoding
2020-07-13 19:36:49 +10:00
Andy Piper 4e88adf86e AP_RCProtocol: TBS CRSF implementation
refactor rc channels decoding into backend
refactor SBUS to use decode_11bit_channels()
only support big-endian
don't include CRSF in iomcu
2020-07-07 18:48:06 +10:00
Andrew Tridgell 21937a7830 AP_RCProtocol: fixed alignment errors in SRXL2
invalid alignment used
2020-07-07 10:23:00 +10:00
Andy Piper 6162605388 AP_RCProtocol: ignore SRXL2 dbm rssi value like BF does 2020-07-07 09:03:40 +10:00
Andy Piper acff7daba5 AP_RCProtocol: scale SRXL2 using published conversion values. switch SRXL2 channels to match ArduPilot 2020-05-24 07:45:01 +10:00
Andy Piper 167e1d12d7 AP_RCProtocol: disable flow-control and buffered-writes for SRXL2 uart
switched spm_srxl.c to C++ compilation
Correctly set budget for half-duplex writes
Tidy PACKED and other externalities
disable SRXL2 on IOMCU and softserial - SRXL2 is a serial half-duplex protocol-only
fixed buffer overrun in SRXL2 parser
fix bugs in decoder sketch and allow output to SITL
2020-05-05 09:23:15 +10:00
Andy Piper e3a88f686d AP_RCTelemetry: Spektrum telemetry library and telemetry abstraction
add support for temperature, battery voltage, battery current, flight pack
altitiude, airspeed, attitude and compass, GPS, ESC telemetry based on BLHeli
status messages and QOS packets.
refactor into AP_Telemetry
conditionally compile based on HAL_MINIMIZE_FEATURES
don't initialize spektrum telemetry if there is no RC uart
2020-05-05 09:23:15 +10:00
Andy Piper 68c6a3b03d AP_RCProtocol: SRXL2 support 2020-05-05 09:23:15 +10:00
Andrew Tridgell 7e835d1037 AP_RCProtocol: fixed buffer overflow in st24 parser
found using random data injection in SITL
2020-04-21 06:02:29 +10:00
Peter Barker 061c3ecb7f AP_RCProtocol: add documentation for RCDA message 2020-04-14 07:34:59 +10:00
Andrew Tridgell 087da57858 AP_RCProtocol: added logging of RC prototol input bytes 2020-03-24 09:10:36 +09:00
Andrew Tridgell 6b35497129 AP_RCProtocol: moved fport variables into class
reduced pollution of global namespace
2020-03-20 12:37:52 +11:00
Andrew Tridgell a1069d85cb AP_RCProtocol: fixed bug in FPort parser
if we got invalid frame->type values we would overrun the buffer and
cause memory corruption. This was the cause of the bug Polarijet found
2020-03-20 12:37:52 +11:00
yaapu b4bdc76a53 AP_RCProtocol: handle 0x10 and 0x00 frames, check scheduler delay and fix incoming crc
Respond to 0x10 when the rx is controlling bandwidth, else respond only to 0x00
but in this case never exceed a max number of consecutive frames.
Always respond to polling and if necessary send a null frame.
moved delay check after get_telem_data() to account for scheduler time
align incoming to outgoing crc
2020-02-21 09:29:15 +11:00
Andrew Tridgell 8e67c3459a AP_RCProtocol: added multi-channel read() API
and use pulse_input_enable() to disable pulse input when not needed
2020-01-31 11:09:07 +11:00
yaapu 88f0d54574 AP_RCProtocol: fport downlink packet: fixed CRC and added missing PACKED attribute 2020-01-22 06:58:29 +11:00
Peter Barker 4d6f6c09fb AP_RCProtocol: add missing break statement 2020-01-15 13:55:42 +11:00
Andrew Tridgell 74ca9033e2 AP_RCProtocol: fixed support for 22ms multi-frame DSM 2020-01-09 17:38:52 +11:00
Andrew Tridgell 39b738e407 AP_RCProtocol: expand test suite for multi-frame protocols 2020-01-09 17:38:52 +11:00
Andrew Tridgell 5588229f68 AP_RCProtocol: fixed scaling on FPort RSSI
make it match OpenTX
2020-01-09 07:08:11 +11:00
Andrew Tridgell f8847bf569 AP_RCProtocol: auto-create Frsky_Telem object when needed for FPort 2020-01-02 09:52:57 +11:00
Andrew Tridgell 33182a9f11 AP_RCProtocol: use RC_OPTIONS fport pad option 2020-01-02 09:52:57 +11:00
Andrew Tridgell fd5ff97b59 AP_RCProtocol: support FPort telemetry data
get SPort data from AP_FrSky_Telem
2020-01-02 09:52:57 +11:00
Andrew Tridgell a72eaabc96 AP_RCProtocol: support FPort RSSI 2020-01-02 09:52:57 +11:00
Andrew Tridgell 9332c08c46 AP_RCProtocol: added FPort protocol support 2020-01-02 09:52:57 +11:00
Andy Piper afa232cc7e AP_RCProtocol: fix example compile on macos 2019-12-30 13:02:04 +11:00
Mirko Denecke fe46dc34d4 AP_RCProtocol: remove duplicated definition from protocol_detected 2019-10-31 08:24:30 +11:00
Andrew Tridgell aa20be4270 AP_RCProtocol: fixed SUMD with 16 channels
with 16 channels it is more than 3ms per frame
2019-09-07 10:02:26 +10:00
Andrew Tridgell c8de2ec9c7 AP_RCProtocol: added update() method for use by SITL 2019-09-06 08:51:45 +10:00
Andrew Tridgell 2b856abdd1 AP_RCProtocol: support an additional uart on RC input
this will allow for any UART to be configured as an additional RC
input source
2019-09-06 08:51:45 +10:00
Mirko Denecke 633eb11bfd AP_RCProtocol: IBUS remove unused field 2019-07-22 09:12:57 +09:00
murata 954e6a0c50 AP_RCProtocol: Match output type and variable type 2019-07-16 10:11:13 +10:00
PraiseSatan bad5fb418d AP_RCProtocol: added ibus RX support to recieve channel data from ibus transmitters. 2019-07-07 20:49:18 +10:00
Andrew Tridgell 0f4c54aaa6 AP_RCProtocol: fixed a overflow in SRXL decoder
thanks to coverity 343308 and Peter for noticing
2019-07-06 08:53:44 +10:00
Peter Barker cbf6d44277 AP_RCProtocol: fix missing-declaration warning in example 2019-06-04 10:25:15 +10:00
murata 987966a6d7 AP_RCProtocol: Change to shared CRC16 method 2019-04-09 12:50:17 +10:00
Peter Barker 807c673b4f AP_RCProtocol: tidy RC option flag handling 2019-04-02 10:16:30 +11:00
Andrew Tridgell 9f1eaf4b37 AP_RCProtocol: fixed RC option check for iofirmware 2019-03-15 14:38:57 +11:00
Andrew Tridgell db9912fd58 AP_RCProtocol: use RC_IGNORE_FAILSAFE 2019-03-15 14:38:57 +11:00
Andrew Tridgell 7b3e8afd4c AP_RCProtocol: added another SUMD test
based on data from Luis from issue #10346
2019-03-04 11:59:04 +11:00
Tom Pittenger a597c2972c AP_RCprotocol: unify singleton naming to _singleton and get_singleton() 2019-02-10 19:09:58 -07:00
Andrew Tridgell 3f25891fea AP_RCProtocol: on DSM sync error don't reset channel count
this fixes the issue noticed by Andreyl in 3.6.5rc1
2019-01-14 12:46:16 +11:00
Andrew Tridgell b7dd255050 AP_RCProtocol: small improvement to SBUS parsing robustness
ensure that if we see a frame gab that we reset input buffer
2018-11-28 10:35:50 +11:00
Andrew Tridgell 5baf4c42ea AP_RCProtocol: fixed decoding of SBUS switch channels
these are not used now, but may be in the future
2018-11-28 10:35:50 +11:00
Andrew Tridgell d4c2945a48 AP_RCProtocol: increased robustness of SBUS parsing
take full advantage of the frame gap to reduce CPU and the chance of a
bad decode
2018-11-27 09:38:18 +11:00
Andrew Tridgell 24b23d6784 AP_RCProtocol: make DSM parsing more robust
this makes DSM parsing much more robust. It fixes an issue with DSM
input for the Solo, where it occasionally saw glitches
2018-11-27 09:38:18 +11:00
Andrew Tridgell 50df8c7e28 AP_RCProtocol: added cmdline RC decoder program 2018-11-27 09:38:18 +11:00
Andrew Tridgell b4c551b56c AP_RCProtocol: expand DSM test to 8 channels 2018-11-15 19:54:36 +11:00
Andrew Tridgell da0301c208 AP_RCProtocol: fixed DSM parser for 8 channels
this ensures we remember channels from the previous frame, avoiding a
bug with more than 7 channels
2018-11-15 19:54:36 +11:00
Andrew Tridgell 137253ac2c AP_RCProtocol: fixed SBUS failsafe
thanks to Nate for spotting this
2018-11-08 20:55:46 +11:00
Andrew Tridgell 8d8853d4b7 AP_RCProtocol: fixed test build on navio 2018-11-07 07:35:45 +11:00
Andrew Tridgell a8e6a09903 AP_RCProtocol: expose protocol name mapping 2018-11-07 07:35:45 +11:00
Andrew Tridgell ae18fd1cef AP_RCProtocol: added SUMD protocol test 2018-11-07 07:35:45 +11:00
Andrew Tridgell 7996259726 AP_RCProtocol: added timeout handling to SUMD 2018-11-07 07:35:45 +11:00
Andrew Tridgell b1e5e0aba9 AP_RCProtocol: convert SUMD and ST24 to SoftSerial 2018-11-07 07:35:45 +11:00
Andrew Tridgell 408db791e3 AP_RCProtocol: added test suite 2018-11-07 07:35:45 +11:00
Andrew Tridgell eb78d4fa26 AP_RCProtocol: added destructor
for use by test suite
2018-11-07 07:35:45 +11:00
Andrew Tridgell 696d4b47a1 AP_RCProtocol: use SoftSerial clock for SRXL 2018-11-07 07:35:45 +11:00
Andrew Tridgell 3bd27ba094 AP_RCProtocol: use SoftSerial for DSM 2018-11-07 07:35:45 +11:00
Andrew Tridgell b93dee7fe6 AP_RCProtocol: switched SRXL to SoftSerial decoder 2018-11-07 07:35:45 +11:00
Andrew Tridgell 87cf160875 AP_RCProtocol: switched SBUS to SoftSerial decoder 2018-11-07 07:35:45 +11:00
Andrew Tridgell b7c4ae8ae9 AP_RCProtocol: added separate soft serial decoder
this will replace the version in each protocol
2018-11-07 07:35:45 +11:00
Andrew Tridgell 7e8b6709ae AP_RCProtocol: improved reliability of DSM vs SRXL detection
base detection on framing, not including failsafe
2018-11-07 07:35:45 +11:00
Andrew Tridgell 53b6f38027 AP_RCProtocol: allow switching between all protocols on IOMCU
this allows searching for uart protocols after losing a pulse based
protocol
2018-11-07 07:35:45 +11:00
Andrew Tridgell eca4fec2aa AP_RCProtocol: use pulses as clock for frame timeout
for SRXL and DSM we should judge a frame timeout from the pulses,
otherwise lag in the DMA capture can cause a false frame drop
2018-11-07 07:35:45 +11:00
Andrew Tridgell faf8f73437 AP_RCProtocol: added process_pulse_list()
this provides more efficient processing of RC pulses
2018-11-07 07:35:45 +11:00
Andrew Tridgell e1385573b1 AP_RCProtocol: return protocol name string 2018-11-07 07:35:45 +11:00