ardupilot/libraries/AP_UAVCAN
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
..
dsdl AP_UAVCAN: removed old vendor DSDL and add README.md 2021-12-06 20:17:02 +11:00
examples/UAVCAN_sniffer AP_UAVCAN: fix UAVCAN sniffer example 2020-08-20 07:44:53 +10:00
AP_UAVCAN.cpp AP_UAVCAN: added CAN_Dx_UC_ESC_OF parameter 2022-05-28 16:08:08 +09:00
AP_UAVCAN.h AP_UAVCAN: added CAN_Dx_UC_ESC_OF parameter 2022-05-28 16:08:08 +09:00
AP_UAVCAN_Clock.h AP_UAVCAN: move all uavcan related methods to AP_UAVCAN 2020-08-19 17:31:09 +10:00
AP_UAVCAN_DNA_Server.cpp AP_UAVCAN: add metadata to GetNodeInfo log message 2022-02-14 13:38:07 +11:00
AP_UAVCAN_DNA_Server.h AP_UAVCAN: added CAN_Dn_UC_OPTION parameter 2021-09-17 12:32:59 +10:00
AP_UAVCAN_IfaceMgr.cpp AP_UAVCAN: disable CAN filtering except on AP_Periph 2022-02-12 16:36:05 +11:00
AP_UAVCAN_IfaceMgr.h AP_UAVCAN: disable CAN filtering except on AP_Periph 2022-02-12 16:36:05 +11:00