14class CANInterface :
public Interface {
17 Interface::Type getType()
const override {
return Interface::BUS; }
18 CANInterface()=
default;
21 DEV_ERROR_PRINTLN(
"[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before begin().");
24 if(!_canCore->begin()){
25 ERROR_PRINTLN(
"[CANInterface] ERROR: CAN initialization failed.");
33 DEV_ERROR_PRINTLN(
"[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before end().");
37 ERROR_PRINTLN(
"[CANInterface] ERROR: CAN deinitialization failed.");
43 bool setBaudrate(CANCore::Baudrate baudrate){
45 DEV_ERROR_PRINTLN(
"[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before setBaudrate().");
48 if(!_canCore->setBaudrate(baudrate)){
49 ERROR_PRINTLN(
"[CANInterface] ERROR: Failed to set CAN baudrate.");
57 DEV_ERROR_PRINTLN(
"[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before sendMessage().");
60 if(!_canCore->sendMessage(message)){
61 ERROR_PRINTLN(
"[CANInterface] ERROR: Failed to send CAN message.");
69 DEV_ERROR_PRINTLN(
"[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before receiveMessage().");
72 return _canCore->readMessage(message);
76 DEV_ERROR_PRINTLN(
"[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before available().");
79 return _canCore->available();
82 void setCANCore(
CANCore* canCore) { _canCore = canCore; }