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
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
ae0ccbcea9
AP_RCProtocol: support byte input for DSM
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
301884f7a6
AP_RCProtocol: fixed coverity error in SUMD
...
CID308356
2018-08-07 13:22:08 +10:00
Michael du Breuil
4aff747b28
AP_RCProtocol: Fix out of bounds write, CID 308323 and 308333
2018-08-07 12:11:49 +10: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
14db344c12
AP_RCProtocol: improve s-bus parsing
...
This relax s-bus timing requirement to allow not so perfect signals.
Fixes s-bus on s-bus pin in matekf405-wing
Also fixed comment a bit
2018-06-27 09:10:11 +10:00
Alexander Malishev
9e4ec33277
AP_RCProtocol: add error check for ppm input
2018-06-06 08:23:51 +10:00
Alexander Malishev
47451be875
AP_RCProtocol: add support for non-inverted s-bus
2018-05-25 12:05:50 +10:00
Patrick José Pereira
c755d341f4
AP_RCProtocol: Remove unused variable
...
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2018-05-11 10:47:11 +10:00
Andrew Tridgell
bccea9c8b9
AP_RCProtocol: support DSM bind
2018-04-10 17:22:21 +10:00
Andrew Tridgell
d6b9ab7756
AP_RCProtocol: tidy up frontend/backend split
2018-01-20 17:40:07 +11:00
Andrew Tridgell
ff5e00da32
AP_RCProtocol: fixed DSM decoding
2018-01-20 17:40:07 +11: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