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};
54 return it ==
presets.end() ? 255 : std::distance(
presets.begin(),it);
57 const std::span<const PresetEntry>
presets;
80#if defined(CANTYPE_2B)
81#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
83#elif defined(CANTYPE_FDCAN)
84#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
91 uint8_t
data[CAN_MSGBUFSIZE] = {0};
98 uint8_t
data[CAN_MSGBUFSIZE] = {0};
109 uint32_t filter_id = 0;
110 uint32_t filter_mask = 0;
175 bool isIsr =
inIsr();
176 BaseType_t taskWoken = 0;
182 portYIELD_FROM_ISR(taskWoken);
185 bool isIsr =
inIsr();
186 BaseType_t taskWoken = 0;
194 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)
constexpr PresetEntry(const CAN_INITTYPE init, const uint32_t speed, const char *name)