Commit Graph

50 Commits

Author SHA1 Message Date
Andrew Tridgell c868ac5fe4 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-25 11:33:10 +10:00
Andrew Tridgell 518388c9c3 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-11 09:42:55 +09: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
Andrew Tridgell 47590a55ff AP_RCProtocol: allow changes of serial settings between protocols
if we are searching for new protocols then allow for baudrate table
changes
2021-12-21 11:07:44 +11:00
Peter Barker 409147a291 AP_RCProtocol: add support for DJI Fast SBUS
It's just SBUS... but with increased opportunities for corruption
2021-11-18 17:19:04 +11:00
Peter Barker 411ed0f50e AP_RCProtocol: use data structure for serial configurations 2021-11-16 22:06:24 +11:00
Peter Barker c1cdfb448c AP_RCProtocol: move uart flow control set out of CRSF code
11:32 AM] AndrewTridgell: @Peter Barker we should disable flow control when we first add the uart - none of the RC protocols use flow control
[11:32 AM] AndrewTridgell: the blocking writes call isn't needed
[11:32 AM] Peter Barker: Thanks, I'll make a patch.
2021-11-16 22:06:24 +11:00
Peter Barker 7c774d02bb AP_RCProtocol: remove pointless 100kbaud speed change
added.opened is set to false.  Next time we check_added_uart, the baud
rate is unconditionally set in each of the phases.  Thus this line has
no effect except to confuse the reader
2021-11-10 07:04:47 +11:00
Andrew Tridgell 67fd862a8c AP_RCProtocol: check for RC protocol switching enable
by default don't allow protocol switching after initial protocol is
found
2021-10-15 19:29:23 -04:00
Hwurzburg c5f53fc0b6 AP_RCProtocol: add Link Quality reporting to RC protocols 2021-07-16 13:27:38 +10:00
Andy Piper 881fd4f37c AP_HAL_ChibiOS: use buffered writes for CRSF telemetry 2021-02-03 18:28:28 +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
Andrew Tridgell a8770a5a82 AP_RCProtocol: added FPort2 protocol support 2020-10-28 09:00:34 +11: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 e0ec46f06d AP_RCProtocol: support a mask of enabled RC protocols 2020-08-24 16:32:35 +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
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 68c6a3b03d AP_RCProtocol: SRXL2 support 2020-05-05 09:23:15 +10: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
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
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
PraiseSatan bad5fb418d AP_RCProtocol: added ibus RX support to recieve channel data from ibus transmitters. 2019-07-07 20:49:18 +10:00
Tom Pittenger a597c2972c AP_RCprotocol: unify singleton naming to _singleton and get_singleton() 2019-02-10 19:09:58 -07: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 a8e6a09903 AP_RCProtocol: expose protocol name mapping 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 87cf160875 AP_RCProtocol: switched SBUS to SoftSerial decoder 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 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
Andrew Tridgell d87bef16a2 AP_RCProtocol: require 3 good frames for weak CRC protocols 2018-11-07 07:35:45 +11:00
Andrew Tridgell 68c9f52b3e AP_RCProtocol: allow selection of protocols for pulse input 2018-11-07 07:35:45 +11:00
Andrew Tridgell 9354aca07d AP_RCProtocol: removed some unnecessary millis calls 2018-11-07 07:35:45 +11:00
Andrew Tridgell baf0be6a56 AP_RCProtocol: added check on baudrate in process_byte()
and support process_byte() in SBUS input
2018-11-07 07:35:45 +11:00
Andrew Tridgell c767828f11 AP_RCProtocol: prevent mixing of byte and pulse input 2018-11-07 07:35:45 +11:00
Andrew Tridgell 56d0d6b9be AP_RCProtocol: make singleton
used by iomcu
2018-11-07 07:35:45 +11:00
Andrew Tridgell 1dcac14b1e AP_RCProtocol: cleanup code style
using Tools/CodeStyle/ardupilot-astyle.sh
2018-07-20 15:47:18 +10:00
Siddharth Purohit baff7291ce AP_RCProtocol: add support for srxl and st24 protocol 2018-07-20 15:47:18 +10:00
Siddharth Purohit f99bd32b51 RC_Protocol: add detection of sumd protocol over sigread 2018-07-20 15:47:18 +10:00
Alexander Malishev 47451be875 AP_RCProtocol: add support for non-inverted s-bus 2018-05-25 12:05:50 +10:00
Andrew Tridgell bccea9c8b9 AP_RCProtocol: support DSM bind 2018-04-10 17:22:21 +10:00
Andrew Tridgell f87668c15c AP_RCProtocol: lock onto a single protocol to reduce CPU cost 2018-01-20 17:40:07 +11:00
Andrew Tridgell 8be59c73c7 AP_RCProtocol: fixed return value when no input 2018-01-20 17:40:07 +11:00
bugobliterator bad9f2b4c9 AP_RCProtocol: add library to process RC signals 2018-01-20 17:40:07 +11:00