CANTram Framework 1.0.1
Dieses Framework ermöglicht die Nutzung der CANTram Hardware, einer Mikrocontroller basierten mdoularen Steuerung.
Loading...
Searching...
No Matches
CANCore.h
Go to the documentation of this file.
1#ifndef CANCORE_H
2#define CANCORE_H
3
4#include <Arduino.h>
5#include "HardwareResource.h"
6
7#include "Debug.h"
13class CANCore : public HardwareResource{
14public:
15
16struct CANMessage {
17 uint32_t id; // 11-bit or 29-bit identifier
18 bool isExtended; // True if extended ID (29-bit), false for standard ID (11-bit)
19 bool isRemote; // True if remote frame
20 uint8_t data[8]; // Data payload (0-8 bytes)
21 uint8_t length; // Length of data in bytes
22 bool error; // Flag for error frames
23 String toString() const {
24 String msg = "CANMessage[ID: " + String(id) + (isExtended ? " (Extended)" : " (Standard)") + ", Remote: " + String(isRemote) + ", Length: " + String(length) + ", Data: ";
25 for(uint8_t i=0; i<length; i++) {
26 msg += String(data[i], HEX);
27 if(i < length - 1) msg += " ";
28 }
29 msg += "]";
30 return msg;
31 }
32};
33
34enum Baudrate {
35 BR_NOT_SET = 0,
36 BR_125K = 125000,
37 BR_250K = 250000,
38 BR_500K = 500000,
39 BR_1M = 1000000
40};
41
42enum Status{
43 STATUS_OK,
44 STATUS_ERROR_ACTIVE,
45 STATUS_BUS_OFF,
46 STATUS_ERROR_PASSIVE
47};
48
49enum FilterType {
50 FILTER_ACCEPT_ALL,
51 FILTER_MATCH_ID,
52 FILTER_MASKED
53};
54
55
56 virtual bool begin()=0;
57 virtual bool setBaudrate(Baudrate baudrate)=0;
58 virtual bool setPins(int8_t txPin, int8_t rxPin)=0;
59 virtual bool end()=0;
60 virtual bool sendMessage(const CANMessage& message)=0;
61 virtual bool readMessage(CANMessage& message)=0;
62 virtual uint8_t available()=0;
63 virtual bool setupFilter(uint32_t id, uint32_t mask)=0;
64
65 Baudrate getBaudrate() const { return _baudrate; }
66 uint8_t getTxPin() const { return _txPin; }
67 uint8_t getRxPin() const { return _rxPin; }
68
69 virtual bool reset() override {
70 INFO_PRINTLN("[CANCore] Resetting CAN core.");
71
72 bool success = end();
73 _isInitialized = false;
74 _txPin = -1;
75 _rxPin = -1;
76 _filterId = 0;
77 _filterMask = 0;
78 _baudrate = BR_NOT_SET;
79 _filterType = FILTER_ACCEPT_ALL;
80 _status = STATUS_OK;
81 success &= HardwareResource::reset();
82 return success;
83 }
84
85
86 protected:
87 CANCore()=default;
88 ~CANCore()=default;
89
90 Baudrate _baudrate = BR_NOT_SET;
91 FilterType _filterType = FILTER_ACCEPT_ALL;
92 int8_t _txPin = -1;
93 int8_t _rxPin = -1;
94 Status _status = STATUS_OK;
95 bool _isInitialized = false;
96 uint32_t _filterId = 0;
97 uint32_t _filterMask = 0;
98
99
100};
101
102#endif
Logging and debug macro definitions for CANTramCore.
#define INFO_PRINTLN(x)
Print an info-level message with newline.
Definition Debug.h:137
Base class for hardware resources.
Definition CANCore.h:13
virtual bool reset() override
Reset the hardware resource to a known default state.
Definition CANCore.h:69
virtual bool reset()
Reset the hardware resource to a known default state.
Definition HardwareResource.h:47
HardwareResource()=default
Default constructor.
Definition CANCore.h:16