10#include "target_constants.h"
26#define CAN_INITTYPE uint32_t
27#define CAN_MSGBUFSIZE 8
30#define CAN_INITTYPE FDCAN_InitTypeDef&
31#define CAN_MSGBUFSIZE 64
32const uint8_t
DLCtoBytes[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 16, 20, 24, 32, 48, 64};
53 return it ==
presets.end() ? 255 : std::distance(
presets.begin(),it);
56 const std::span<const PresetEntry>
presets;
79#if defined(CANTYPE_2B)
80#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
82#elif defined(CANTYPE_FDCAN)
83#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
90 uint8_t
data[CAN_MSGBUFSIZE] = {0};
97 uint8_t
data[CAN_MSGBUFSIZE] = {0};
108 uint32_t filter_id = 0;
109 uint32_t filter_mask = 0;
174 bool isIsr =
inIsr();
175 BaseType_t taskWoken = 0;
181 portYIELD_FROM_ISR(taskWoken);
184 bool isIsr =
inIsr();
185 BaseType_t taskWoken = 0;
193 portYIELD_FROM_ISR(taskWoken);
const uint8_t DLCtoBytes[]
constexpr CANPortHardwareConfig(const bool canChangeSpeed, std::span< const PresetEntry > presets_list)
const bool canChangeSpeed
constexpr uint32_t presetToSpeed(uint8_t preset) const
constexpr uint32_t speedToPreset(uint32_t speed) const
constexpr PresetEntry getPreset(uint8_t idx) const
const std::span< const PresetEntry > presets
virtual void * getHandle()=0
virtual void giveSemaphore()
virtual uint8_t speedToPreset(uint32_t speed)
Gets preset index for a speed.
virtual uint8_t getSpeedPreset()=0
cpp_freertos::BinarySemaphore configSem
static CANPort * handleToPort(void *handle)
virtual bool takeSemaphore(uint32_t delay=portMAX_DELAY)
virtual void setSpeedPreset(uint8_t preset)=0
virtual int32_t getPortUsers()
cpp_freertos::BinarySemaphore semaphore
const CANPortHardwareConfig & presets
CAN port presets for different speeds. Hardware dependent.
virtual uint32_t getSpeed()=0
CANPort(const CANPortHardwareConfig &presets, uint8_t instance=0)
virtual int32_t addCanFilter(CAN_filter filter)=0
virtual bool sendMessage(CAN_tx_msg &msg)=0
virtual void setSpeed(uint32_t speed)=0
static std::vector< CANPort * > canPorts
virtual void abortTxRequests()=0
virtual uint32_t presetToSpeed(uint8_t preset)
Gets speed for a preset index.
virtual void removeCanFilter(uint8_t filterId)=0
virtual bool sendMessage(CAN_msg_header_tx *pHeader, uint8_t aData[], uint32_t *pTxMailbox=nullptr)=0
virtual void setSilentMode(bool silent)=0
bool GiveFromISR(BaseType_t *pxHigherPriorityTaskWoken)
bool TakeFromISR(BaseType_t *pxHigherPriorityTaskWoken)
bool Take(TickType_t Timeout=portMAX_DELAY)