Commit Graph

59 Commits

Author SHA1 Message Date
Andrew Tridgell 8ef2046f7b AP_IOMCU: use blocking writes to uart
this avoids the issue of arming failing due to a non-zero protocol count
2019-08-17 17:36:41 +10:00
Andrew Tridgell 454717cf6f AP_IOMCU: cleanup IO protocol and add logging
this cleans up the IOMCU protocol structures now we don't need to be
compatible with the old nuttx based protocol and adds logging of IOMCU
errors
2019-08-17 17:36:41 +10:00
Andrew Tridgell 984542fa53 AP_IOMCU: fixed error handling for short packets
this prevents short packets from the IOMCU being processed. A short
enough read could be processed as a valid status packet, which would
lead to invalid values for safety flag and servo voltage

fixes issue #12030
2019-08-17 17:36:41 +10:00
Andrew Tridgell ef5f83d0b5 AP_IOMCU: remove 2s delay on boot and skip crc check on watchdog
thanks to @Jaaaky for the suggestion in #11232
2019-05-03 13:44:56 +10:00
Andrew Tridgell 6c50feaead AP_IOMCU: improved handling of IOMCU reset
use IOMCU timestamp to detect reset
2019-04-28 07:45:33 +10:00
Andrew Tridgell af54e8620e AP_IOMCU: prevent startup sync causing an internal error 2019-04-28 07:45:33 +10:00
Andrew Tridgell c7be7d7343 AP_IOMCU: cope with IOMCU reset 2019-04-22 16:53:35 +10:00
Andrew Tridgell a6e989e263 AP_IOMCU: fixed shadowed variable warning 2019-02-26 16:18:26 +11:00
Tom Pittenger 28323147ab AP_IOMCU: unify singleton naming to _singleton and get_singleton() 2019-02-10 19:09:58 -07:00
Andrew Tridgell 41264568ba AP_IOMCU: added brushed motor feature bit in protocol 2018-11-30 13:14:14 +11:00
Andrew Tridgell 5771e0a90e AP_IOMCU: added access to RC protocol name 2018-11-07 07:35:45 +11:00
Andrew Tridgell fab181345c AP_IOMCU: fixed override on RC loss
use mid-stick positions
2018-11-07 07:35:45 +11:00
Andrew Tridgell a8d91a24b6 AP_IOMCU: fixed compat with nuttx firmwares
this allows older firmwares to change the IO firmware back to a nuttx
based firmware
2018-11-07 07:35:45 +11:00
Andrew Tridgell 184c05bc70 AP_IOMCU: fixed DSM bind 2018-11-07 07:35:45 +11:00
Eugene Shamaev 4d64b86f87 AP_IOMCU: Add binding procedure for DSMx 2018-11-07 07:35:45 +11:00
Andrew Tridgell beff16abe6 AP_IOMCU: implement manual_rc_mask 2018-11-07 07:35:45 +11:00
Andrew Tridgell 46fcfe0582 AP_IOMCU: removed rc_channel range check
feedback from @WickedShell
2018-11-07 07:35:45 +11:00
Andrew Tridgell e70a98fa9a AP_IOMCU: support elevon and vtail mixing in failsafe 2018-11-07 07:35:45 +11:00
Andrew Tridgell 285508d568 AP_IOMCU: added initial mixing support
supports aileron, elevator, throttle and rudder
2018-11-07 07:35:45 +11:00
Andrew Tridgell ec73a7072b AP_IOMCU: use more bandwidth efficient IO read 2018-11-07 07:35:45 +11:00
Andrew Tridgell 191f72d2e6 AP_IOMCU: added mixing structure to protocol 2018-11-07 07:35:45 +11:00
Andrew Tridgell cab5199da8 AP_IOMCU: fixed a race in event trigger on startup
this fixes the issue with initial safety option state, and with
initial safety mask
2018-11-05 19:24:44 +11:00
Andrew Tridgell ed48c24600 AP_IOMCU: added shutdown method
this cleans up the reboot process
2018-10-30 13:00:48 +11:00
Andrew Tridgell ba87856deb AP_IOMCU: fixed build warning 2018-09-19 12:14:15 +10:00
Andrew Tridgell 2c7e27374f AP_IOMCU: use ioevents for oneshot in iofirmware 2018-09-19 12:14:15 +10:00
Andrew Tridgell 037a455784 AP_IOMCU: moved protocol structures to a common header 2018-09-19 12:14:15 +10:00
Siddharth Purohit 19c002baaf AP_IOMCU: add support for iofirmware update 2018-09-19 12:14:15 +10:00
Andrew Tridgell f22d5f0d40 AP_IOMCU: implement failsafe PWM 2018-09-13 08:15:02 +10:00
Andrew Tridgell 135e37e1f4 AP_IOMCU: cope with IOMCU reset in flight
this copes with IOMCU reset when we have safety forced off
2018-09-04 15:24:12 +10:00
Lucas De Marchi 668c941717 Global: use new version of ARRAY_SIZE 2018-08-04 15:31:55 +10:00
Siddharth Purohit 9f5dbb74e7 AP_IOMCU: move to using updated time conv API 2018-08-03 13:44:59 +10:00
Andrew Tridgell 8c9f2bc79e AP_IOMCU: fixed setting of rate masks
this affects layouts which set a subset of channels on a timer
2018-07-28 15:25:57 +10:00
Jonathan Challinger 65b20bfd83 AP_IOMCU: fix radio failsafe handling 2018-07-19 06:52:09 +10:00
Andrew Tridgell ba0fb3d9d2 AP_IOMCU: fixed repeated upload of IO fw 2018-07-11 09:51:43 +10:00
Andrew Tridgell e200de1f57 AP_IOMCU: use compressed interface for IO fw upload 2018-07-09 19:41:56 +10:00
Andrew Tridgell 0e29bcc4ab AP_IOMCU: use thread_create() API 2018-07-09 19:41:18 +10:00
Andrew Tridgell 3242b5eeb9 AP_IOMCU: fail to boot if IO firmware CRC and update fails
we don't want to fly with a bad IO firmware
2018-06-06 07:15:41 +10:00
Andrew Tridgell 7be1125084 AP_IOMCU: implement safety mask and safety pwm 2018-04-17 10:14:01 +10:00
Andrew Tridgell 214fb096eb AP_IOMCU: added healthy API for use in arming checks 2018-04-17 08:44:44 +10:00
Andrew Tridgell 09e3a3cb78 AP_IOMCU: added IO firmware upload 2018-04-17 08:44:44 +10:00
Michael du Breuil 0e8a9c2ec4 AP_IOMCU: Encapsulate debug prints in a #ifdef, fix whitespace 2018-04-14 08:23:24 +10:00
Andrew Tridgell f22964a350 AP_IOMCU: implement BRD_SAFETYOPTION 2018-04-14 06:22:07 +10:00
Andrew Tridgell 4a7a66cc16 AP_IOMCU: use a higher thread priority
this ensures PWM output gets out as fast as possible
2018-04-07 09:10:29 +10:00
Siddharth Purohit 0c914838b2 AP_IOMCU: fix data type for available bytes 2018-02-07 20:33:45 +11:00
Andrew Tridgell 442b280368 AP_IOMCU: improved error checking
and avoid pointless change of rates
2018-02-07 20:33:45 +11:00
Andrew Tridgell 5ffcff1a79 AP_IOMCU: use unbuffered UART writes
this lowers latency for servo outputs to the IOMCU
2018-02-07 20:33:45 +11:00
Andrew Tridgell 93fa74518a AP_IOMCU: limit rate to IOMCU to 500Hz
when running with very high loop rates we can saturate the IO link
2018-01-20 17:40:07 +11:00
Andrew Tridgell 30903f2acb AP_IOMCU: support oneshot mode 2018-01-20 17:40:07 +11:00
Andrew Tridgell ff3b0ec1bd AP_IOMCU: added set_default_rate method 2018-01-15 11:46:02 +11:00
Andrew Tridgell 320ada2002 AP_IOMCU: fixed crash with BRD_IO_ENABLE=0 2018-01-15 11:46:02 +11:00