* =================================================================================================
* Detailed Description:
*
* This example demonstrates Classical CAN and CAN FD reception and transmission using
* interrupt-driven Message Buffers and FreeRTOS.
*
* FlexCAN0 is configured in Normal mode. MB0 receives standard-ID frames and MB1 receives
* extended-ID frames. The FlexCAN callback copies every received frame into a FreeRTOS queue
* and immediately rearms the corresponding RX Message Buffer.
*
* A dedicated FreeRTOS task waits for frames in the queue and echoes them through CAN TX MB2.
* The transmitted frame preserves the received identifier type, identifier, payload length,
* payload, CAN FD EDL state, and BRS state. The user LED is toggled after a transmit request
* is accepted by the driver.
*
* Note:
* FreeRTOS API functions such as xQueueSendFromISR() are used from the FlexCAN callback.
* Therefore, the FlexCAN interrupt priority must comply with the FreeRTOS interrupt-priority
* requirements defined by configMAX_SYSCALL_INTERRUPT_PRIORITY.
*
* =================================================================================================
* Test HW: FRDM-A-S32K344 (SCH-94921 / SPF-94921 Rev. C)
* MCU: S32K344
* Compiler: S32DS 3.6.x
* RTD release: S32K3_RTD_6_0_0_D2506_ASR_REL_4_7_REV_0000_20250610
* Debugger: On-Board Debugger
* Target: Internal_FLASH
* Communication: Classical CAN / CAN FD, STD and EXT ID, optional BRS
* =================================================================================================