Thomas Watson
fe849fe22d
AP_HAL_ChibiOS: remove bxCAN priority-based transmission support
...
As commented and detailed in the previous commit, it wasn't commonly used
and was disabled by switching the hardware to FIFO mode, so there is no
need for the software support.
Changes behavior on bxCAN based flight controllers only.
2025-12-09 11:52:05 +11:00
jaromc
079f8a69dc
AP_HAL_ChibiOS: Enable tx FIFO for multiframe bxcan messages
...
AP_Periph was already assuming this behavior by never checking the write
result of `select` and instead just sending frames and relying on the
mailbox full check.
This therefore fixes AP_Periph misordering multi-part messages. Each part
is the same priority, so in priority mode the hardware transmits in slot
order, which may not equal queue order.
bxCAN based flight controllers no longer use priority now, but FDCAN
always used FIFO mode so this brings the drivers closer anyway.
In all cases before and after this patch, priority is maintained in
libcanard so only the highest priority frames are dequeued for
transmission by the hardware anyway. But if a high priority message is
enqueued in the hardware, it will not be transmitted until lower priority
messages in the hardware are sent first. This is against CAN priority
semantics, where higher priority messages should be transmitted first.
Fortunately, it has worked well in practice. (Though there was still the
possibility for a higher priority message to be dequeued and not have
space in the hardware even in priority mode).
2025-12-09 11:52:05 +11:00
Thomas Watson
048f4d9b60
AP_HAL_ChibiOS: drop CAN interface alternate mode support
...
Only "NormalMode" was ever used; the others had rotted or were never
implemented.
2025-11-11 10:58:43 +11:00
Thomas Watson
763a6361de
AP_HAL_ChibiOS: drop CAN filter support from HAL
...
Has been unused since the removal of libuavcan.
2025-11-11 10:58:43 +11:00
Thomas Watson
0e4db74c75
AP_HAL_ChibiOS: ignore rare CAN modes
...
These are never used anywhere by ArduPilot.
2025-11-11 10:58:43 +11:00
Peter Barker
8b9154d115
AP_HAL_ChibiOS: re-order initialiser lines so -Werror=reorder will work
2024-09-24 22:50:28 +10:00
Andrew Tridgell
05d43fd00b
HAL_ChibiOS: allow for MCAST UDP with no CAN link
...
this allows the CAN interface to operate without a CAN cable, allowing
for bridging of MCAST UDP CAN
2024-09-17 10:02:29 +10:00
Andrew Tridgell
8dbad82c8a
AP_HAL_ChibiOS: use NEW_NOTHROW for new(std::nothrow)
2024-06-04 09:20:21 +10:00
Andrew Tridgell
c0d0aeee86
HAL_ChibiOS: reimplement CAN with BinarySemaphore
2024-01-03 07:37:05 +11:00
Thomas Watson
87fef1ae5d
AP_HAL_ChibiOS: use get_HAL_mutable() to install new CAN interfaces
...
Avoids dubious extern redefinition.
2023-11-28 08:24:25 +11:00
Andrew Tridgell
ebffc8fc65
HAL_ChibiOS: fixed CAN statistics on F4/L4/F3/F7
2023-09-19 07:33:53 +10:00
Andrew Tridgell
ef3d42ee9d
HAL_ChibiOS: fixed bootloader build with F4 CAN
2023-09-05 06:56:51 +10:00
Andrew Tridgell
bc373354fc
HAL_ChibiOS: enable CAN stats on AP_Periph for bxCAN interface
...
this allows for dead interface detection
2023-09-05 06:56:51 +10:00
Andrew Tridgell
d5fbce0547
AP_HAL_ChibiOS: added last_transmit_us to CAN stats
2023-09-05 06:56:51 +10:00
Andrew Tridgell
0cfd9c2ed5
HAL_ChibiOS: don't consider a MAVCAN send failure as a send failure
...
this prevents duplicate sends if MAVCAN buffer is full
2023-06-08 10:15:50 +10:00
Robert Taylor
805ed73d94
AP_HAL_ChibiOS: Fix bug where STM32L496 would not init CAN2
...
This is due to the way that the APB peripheral was configured. RCC_APB1ENR1_CAN2EN was not accounted for in the CAN hardware init, so CAN2 clock init was never attempted.
I copied the way CAN1 is initialized based on different hardware description headers.
2023-03-21 11:35:17 +11:00
Andrew Tridgell
bfff5548ef
HAL_ChibiOS: implement get_statistics()
2022-12-13 16:56:57 +11:00
Andrew Tridgell
638e20a0b9
HAL_ChibiOS: bring in hal.h where it is needed
2022-02-22 12:13:19 +11:00
Andrew Tridgell
fd8d28e23c
HAL_ChibiOS: reduced time in critical sections for CAN processing
2022-02-19 18:24:56 +11:00
Andrew Tridgell
33ebc83a68
AP_HAL_ChibiOS: 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
Andrew Tridgell
124c9d5d9b
HAL_ChibiOS: support mavcan message forwarding
2022-02-12 16:36:05 +11:00
murata
a6ea55735f
AP_HAL_ChibiOS: Remove meaningless semicolons
2022-02-07 08:27:34 +09:00
Andrew Tridgell
0212e23cd3
HAL_ChibiOS: added support for STM32L496 MCUs
...
good MCU for AP_Periph
2021-09-24 18:08:00 +10:00
Siddharth Purohit
882b01bae3
AP_HAL_ChibiOS: Use HAL_CANMANAGER_ENABLED instead of HAL_ENABLE_LIBUAVCAN_DRIVERS
2021-06-24 09:02:42 +10:00
Tom Pittenger
7a004656a2
AP_HAL_ChibiOS: use HAL_ENABLE_LIBUAVCAN_DRIVERS instead of HAL_MAX_CAN_PROTOCOL_DRIVERS
2021-06-09 18:36:18 +10:00
Tom Pittenger
f764bd6547
AP_HAL_ChibiOS: disable EventSource only when CH_CFG_USE_EVENTS is false
...
(cherry picked from commit 6e7542a70ca2343ab8d18470deaf5fc2d27390af) from bugobliterator
2021-06-09 18:36:18 +10:00
Siddharth Purohit
ad9a8c8bd9
AP_HAL_ChibiOS: record error states in CANFDIface and CANIface
2021-05-26 18:25:01 +10:00
Andrew Tridgell
07313ae71d
HAL_ChibiOS: fixed 2nd CAN inferface on F4/F7
...
CAN1_TX_IRQn is an enum not a defined. This was broken by the recent
change to support different CAN ordering
2021-03-29 20:14:29 +11:00
Andrew Tridgell
353eca79b6
HAL_ChibiOS: fixed 32/64 micros bug in CAN select()
2021-03-23 12:01:20 +11:00
Andrew Tridgell
f57b1b9c4b
HAL_ChibiOS: support logical/physical CAN bus mapping
...
allow for first CAN interface to be CAN2 or CAN3
2021-03-23 12:01:20 +11:00
Andrew Tridgell
439a944801
HAL_ChibiOS: added support for STM32G474 MCU
2021-03-23 12:01:20 +11:00
Andrew Tridgell
42bc9adfb7
HAL_ChibiOS: use ExpandingString for @SYS buffers
2021-01-05 10:52:00 +11:00
Andrew Tridgell
2d459dccc3
HAL_ChibiOS: reduced stack usage in CAN RX handler
2020-12-01 11:14:50 +11:00
bugobliterator
ca957519dc
AP_HAL_ChibiOS: redo filter configuration to make it work with STM32H7
2020-10-08 09:31:35 +11:00
Siddharth Purohit
36ffcdae30
HAL_ChibiOS: modify hal can drivers for use by AP_Periph
2020-09-24 12:32:19 +10:00
Siddharth Purohit
cdf8e369f1
AP_HAL_ChibiOS: create UAVCAN agnostic CANIface driver
...
HAL_ChibiOS
2020-08-19 17:31:09 +10:00
Mirko Denecke
b84dcd483d
AP_HAL_ChibiOS: remove unnecessary tabs and whitespaces
2019-10-21 08:01:56 +11:00
Siddharth Purohit
2b410479af
HAL_ChibiOS: remove unused code
2019-10-19 09:55:38 +11:00
Andrew Tridgell
15e4641e51
AP_HAL_ChibiOS: cleanup ifdefs for SLCAN enable
2019-10-08 10:02:14 +11:00
Siddharth Purohit
2f153a3577
HAL_ChibiOS: remove singleton interface from slcan_router
2019-07-08 12:18:29 +10:00
Siddharth Purohit
67c925865c
HAL_ChibiOS: add support for CAN on STM32H7 boards
2019-07-08 12:18:29 +10:00
Andrew Tridgell
bbd25350eb
HAL_ChibiOS: support ChibiOS kernel major 6
...
preparing for STM32H7 support
2019-02-26 16:18:26 +11:00
Siddharth Purohit
2792f015b9
HAL_ChibiOS: disable SLCAN for minimize feature enabled
2019-01-29 13:40:35 +09:00
Siddharth Purohit
664c952460
HAL_ChibiOS: disable code for CAN for non UAVCAN supported
2019-01-23 15:57:05 +11:00
Siddharth Purohit
8f964b08b0
ChibiOS: move CAN driver code into HAL
2019-01-23 15:57:05 +11:00