CANTram Framework 1.0.1
Dieses Framework ermöglicht die Nutzung der CANTram Hardware, einer Mikrocontroller basierten mdoularen Steuerung.
Loading...
Searching...
No Matches
CANInterface.h
Go to the documentation of this file.
1#ifndef CANINTERFACE_H
2#define CANINTERFACE_H
3
4
5#include <Arduino.h>
6#include "Interface.h"
7#include "CANCore.h"
13
14class CANInterface : public Interface {
15public:
16
17 Interface::Type getType() const override { return Interface::BUS; }
18 CANInterface()=default;
19 bool begin(){
20 if(!_canCore){
21 DEV_ERROR_PRINTLN("[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before begin().");
22 return false;
23 }
24 if(!_canCore->begin()){
25 ERROR_PRINTLN("[CANInterface] ERROR: CAN initialization failed.");
26 return false;
27 }
28 return true;
29 }
30
31 bool end(){
32 if(!_canCore){
33 DEV_ERROR_PRINTLN("[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before end().");
34 return false;
35 }
36 if(!_canCore->end()){
37 ERROR_PRINTLN("[CANInterface] ERROR: CAN deinitialization failed.");
38 return false;
39 }
40 return true;
41 }
42
43 bool setBaudrate(CANCore::Baudrate baudrate){
44 if(!_canCore){
45 DEV_ERROR_PRINTLN("[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before setBaudrate().");
46 return false;
47 }
48 if(!_canCore->setBaudrate(baudrate)){
49 ERROR_PRINTLN("[CANInterface] ERROR: Failed to set CAN baudrate.");
50 return false;
51 }
52 return true;
53 }
54
55 bool sendMessage(const CANCore::CANMessage& message){
56 if(!_canCore){
57 DEV_ERROR_PRINTLN("[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before sendMessage().");
58 return false;
59 }
60 if(!_canCore->sendMessage(message)){
61 ERROR_PRINTLN("[CANInterface] ERROR: Failed to send CAN message.");
62 return false;
63 }
64 return true;
65 }
66
67 bool receiveMessage(CANCore::CANMessage& message){
68 if(!_canCore){
69 DEV_ERROR_PRINTLN("[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before receiveMessage().");
70 return false;
71 }
72 return _canCore->readMessage(message);
73 }
74 uint8_t available(){
75 if(!_canCore){
76 DEV_ERROR_PRINTLN("[CANInterface] ERROR: No CANCore assigned. Call setCANCore() before available().");
77 return 0;
78 }
79 return _canCore->available();
80 }
81
82 void setCANCore(CANCore* canCore) { _canCore = canCore; }
83
84private:
85 CANCore* _canCore;
86
87};
88
89#endif // CANINTERFACE_H
Declaration of the CANCore class.
#define ERROR_PRINTLN(x)
Print an error-level message with newline.
Definition Debug.h:161
#define DEV_ERROR_PRINTLN(x)
Print a developer-error-level message with newline.
Definition Debug.h:209
Definition CANCore.h:13
Definition CANCore.h:16