Commit Graph

143 Commits

Author SHA1 Message Date
Andrew Tridgell 4adb3ddfa2 AP_UAVCAN: added CAN_Dx_UC_ESC_OF parameter
this allows for an offset in ESC numbering for much more efficient CAN
bandwidth usage.

For example, on a coaxial OctoQuad quadplane the ESCs are typically
setup as outputs 5 to 12. An ideal setup is to split these over 2 CAN
buses, with one CAN bus for the top layer and the one bus for the
bottom layer (allowing for VTOL flight with one bus failed).

Without this offset parameter you would be sending RawCommand messages
like this:

bus1: [ 0, 0, 0, 0, ESC1, ESC2, ESC3, ESC4 ]
bus2: [ 0, 0, 0, 0, 0, 0, 0, 0, ESC1, ESC2, ESC3, ESC4 ]

this is very wasteful of bus bandwidth, with bus1 using 3x the
bandwidth it should and bus2 using 4x the bandwidth it should (the
above will take 3 can frames for bus1, and 4 can frames for bus 2)

With this patch you can set:

CAN_D1_UC_ESC_OF = 4
CAN_D2_UC_ESC_OF = 8

and you will get this on the bus:

bus1: [ ESC1, ESC2, ESC3, ESC4 ]
bus2: [ ESC1, ESC2, ESC3, ESC4 ]

that takes just 1 can frame per send on each bus
2022-05-28 16:08:08 +09:00
Henry Wurzburg 14c9d4e6a3 AP_UAVCAN: add metadata to GetNodeInfo log message 2022-02-14 13:38:07 +11:00
Andrew Tridgell 55f21f367b AP_UAVCAN: disable CAN filtering except on AP_Periph
this saves flash space and makes CAN forwarding for any bus without
reconfigure/reboot easy. CAN filtering is not useful in the main
flight controller firmware as we want to see nearly all packets
2022-02-12 16:36:05 +11:00
Peter Barker 7db723981c AP_UAVCAN: make C_TO_KELVIN a function macro; create KELVIN_TO_C
These are in celsius
2022-01-13 18:31:46 +11:00
Peter Barker a741499cff AP_UAVCAN: create and use AP_OPTICALFLOW_ENABLED
Including a define for each backend.
2021-12-29 18:12:03 +11:00
Jaaaky 3008a480d5 AP_UAVCAN: Fix multi #include's 2021-12-21 10:38:46 +11:00
Andrew Tridgell 9e5fcb4ced AP_UAVCAN: removed old vendor DSDL and add README.md
this DSDL is in https://github.com/DroneCAN/DSDL now
2021-12-06 20:17:02 +11:00
Andrew Tridgell 5afe055a46 AP_UAVCAN: use soft armed state for DroneCAN ARMING_STATUS
this fixes motortest on quadplanes, so that ESCs see an armed state
during the test
2021-12-06 20:16:23 +11:00
Pierre Kancir 4037104f59 AP_UAVCAN: hide -Wcast-function-type warning on GCC11 2021-11-13 17:28:30 +11:00
李孟晓 36ceb76cae AP_UAVCAN: Add battery ID field 2021-10-13 18:44:05 +11:00
bugobliterator 2673cde52b AP_UAVCAN: add dsdl for sending vehicle notify state 2021-09-30 08:52:27 +10:00
bugobliterator e4c6c0ad17 AP_UAVCAN:add support for sending Vehicle Notify state 2021-09-30 08:52:27 +10:00
bugobliterator fd369e8262 AP_UAVCAN: throw allocation error when failing to allocate 2021-09-30 08:51:26 +10:00
bugobliterator b897f984a7 AP_UAVCAN: use config error instead of panic on allocation failure 2021-09-30 08:51:26 +10:00
Andrew Tridgell 63fcb804b3 AP_UAVCAN: added CAN_Dn_UC_OPTION parameter
this allows for 2 ways of controlling conflicts in the UAVCAN DNA
database. The first is to set CAN_Dn_UC_OPTION to 1, which resets the
DNA database, thus clearing any node conflicts.

The second is to set CAN_Dn_UC_OPTION to 2, which ignores node
conflicts in the DNA database

These options are useful for vehicles with UAVCAN smart batteries
where the node ID is fixed but the hwid changes and you want to do
battery swapping (possibly without rebooting)
2021-09-17 12:32:59 +10:00
Josh Henderson b1028035bc AP_UAVCAN: cleanup comments in BatteryInfoAux dsdl message 2021-08-31 10:30:28 +10:00
bugobliterator e8c4b99a99 AP_UAVCAN: add support for setting parameters on CAN nodes 2021-08-19 14:20:58 +10:00
bugobliterator ddc82f7619 AP_UAVCAN: add messages for doing MovingBaseline Heading over UAVCAN 2021-08-19 14:20:58 +10:00
Andrew Tridgell cb462cac6e AP_UAVCAN: fixed printf format errors 2021-08-05 09:43:35 +10:00
Siddharth Purohit 0217d1c3dc AP_UAVCAN: add BatteryInfoAux dsdl message 2021-07-08 11:56:06 +10:00
Siddharth Purohit 9494a439ec AP_UAVCAN: Use HAL_ENABLE_LIBUAVCAN_DRIVERS instead of HAL_MAX_CAN_PROTOCOL_DRIVERS 2021-06-24 09:02:42 +10:00
Dr.-Ing. Amilcar do Carmo Lucas ff200e9d11 AP_UAVCAN: fix compilation when HAL_WITH_ESC_TELEM == 0 2021-06-09 21:42:51 +10:00
Tom Pittenger c807035e02 AP_UAVCAN: use HAL_ENABLE_LIBUAVCAN_DRIVERS instead of HAL_MAX_CAN_PROTOCOL_DRIVERS 2021-06-09 18:36:18 +10:00
Peter Barker 42b1a0998f AP_UAVCAN: move from HAL_NO_LOGGING to HAL_LOGGING_ENABLED 2021-05-19 17:38:47 +10:00
Andy Piper f513b1d1c2 AP_UAVCAN: add esc telemetry updates
remove send_esc_telemetry_mavlink()
remove datastructures and semaphore obsoleted by AP_ESC_Telem* (<amilcar.lucas@iav.de>)
record volts, amps and consumption as floats
2021-05-12 17:01:11 +10:00
Michael du Breuil e47857a278 AP_UAVCAN: Add ardupilot.gnss.Status 2021-03-12 09:39:55 +11:00
Patrick José Pereira 9904b397d8 AP_UAVCAN: Add missing const in member functions
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2021-02-03 18:45:14 +11:00
Michael du Breuil 05b9aa2fa2 AP_UAVCAN: Broadcast ArmingStatus regularly 2021-02-02 10:57:57 +11:00
Michael Oborne 5ef3e1bec3 UAVCAN: add dsdl for gps heading 2021-01-07 15:56:28 +11:00
Andy Piper 40090dcce9 AP_UAVCAN: compile fix for debug/assertions 2021-01-03 08:57:13 +11:00
Andrew Tridgell a4517032c5 AP_UAVCAN: log all UAVCAN devices in CAND log message 2021-01-01 17:30:14 +11:00
Andrew Tridgell 88b5523d47 AP_UAVCAN: added logging of UAVCAN LogMessage messages
this allows us to log internal errors from nodes into main flight
controller log
2020-12-01 11:14:50 +11:00
Andrew Tridgell 77687a9639 AP_UAVCAN: fixed build with no GCS
Co-authored-by: Peter Barker <pbarker@barker.dropbear.id.au>
2020-11-10 16:15:45 +11:00
bugobliterator 49915ed06f AP_UAVCAN: save some stack space 2020-10-08 09:31:35 +11:00
Siddharth Purohit d8852615ed AP_UAVCAN: disable UAVCAN library when libuavcan drivers are disabled 2020-09-24 12:32:19 +10:00
Andy Piper 940d708438 AP_UAVCAN: conditionally compile in ADSB support 2020-09-22 09:33:51 +10:00
Tom Pittenger b502582d14 AP_UAVCAN: replace old hardcoded value with new mavlink enum 2020-09-15 13:09:50 -07:00
Andrew Tridgell 6803408453 AP_UAVCAN: fixed string warnings 2020-09-15 09:40:03 +10:00
bugobliterator fbc0b9e599 AP_UAVCAN: silence function cast warning/error for Registry template 2020-09-08 07:42:20 +10:00
Siddharth Purohit c8c913e203 AP_UAVCAN: fix UAVCAN sniffer example 2020-08-20 07:44:53 +10:00
Siddharth Purohit 23d9be3499 AP_UAVCAN: disable build for UAVCAN test 2020-08-19 19:00:42 +10:00
Siddharth Purohit e473eed368 AP_UAVCAN: ignore first alloc messages while waiting for followup 2020-08-19 17:31:09 +10:00
Siddharth Purohit 07b4708a36 AP_UAVCAN: move all uavcan related methods to AP_UAVCAN 2020-08-19 17:31:09 +10:00
elhayra fe7e243b01 AP_UAVCAN: sending UAVCAN MAVlink ESC messages 2020-08-06 09:28:35 +10:00
Peter Barker 2ace0f0a1f AP_UAVCAN: handle pop from rx_queue failing 2020-07-20 10:19:47 +09:00
Peter Barker 90038339dc AP_UAVCAN: use new UARTDriver discard_input method 2020-05-26 09:20:32 +10:00
Peter Barker f1f30a2fee AP_UAVCAN: regularise CAN pre-arm failure messages
AP_Arming tacks on the sub-system bit.

Remove PiccoloCAN's silly nullptr check

Require the library to supply the failure message (no default message)

Remove default cases so authors know to think about places they should
add things.
2020-05-05 11:27:53 +10:00
Andrew Tridgell 82d77fe014 AP_UAVCAN: make all semaphores recursive
the cost is very similar and this prevents an easy coding error which
can occur on less used code paths
2020-01-19 20:19:30 +11:00
Andrew Tridgell ceb8082d84 AP_UAVCAN: protect UAVCAN DNA server with semaphore 2020-01-18 15:43:36 +11:00
Andrew Tridgell a2d40d040a AP_UAVCAN: added logging of CAN ESC status 2020-01-05 15:25:56 +11:00