CANTram Framework 1.0.1
Dieses Framework ermöglicht die Nutzung der CANTram Hardware, einer Mikrocontroller basierten mdoularen Steuerung.
Loading...
Searching...
No Matches
I2CCore.h
1#ifndef I2C_CORE_H
2#define I2C_CORE_H
3
4#include "HardwareResource.h"
5/*
6Abstract class to define a generic interface to use I2C communication*/
7class I2CCore : public HardwareResource {
8 public:
9 virtual bool reset(){
10 _i2cStatus = I2C_NOT_STARTED;
12 };
13
14 enum I2CStatus {
15 I2C_NOT_STARTED=0,
16 I2C_STARTED=1
17 };
18
19 //sets hardware parameters
20 virtual bool begin() =0;
21
22 virtual HardwareResource::Type getType() override { return Type::I2C; }
23
24 virtual void setPins(int8_t sdaPin, int8_t sclPin) { _sdaPin = sdaPin; _sclPin = sclPin; };
25 virtual void setBufferSize(uint32_t bufferSize) { _bufferSize = bufferSize; };
26 virtual void setI2CNum(int8_t i2c_num) { _i2c_num = i2c_num; };
27 virtual void setFrequency(uint32_t frequency) { _frequency = frequency; };
28 virtual uint32_t setMaxFrequency(uint32_t frequency) {
29 if(frequency < _frequency) {
30 _frequency = frequency;
31 INFO_PRINTLN("[I2CCore] Max allowed I2C frequency set to " + String(_frequency) + " Hz");
32 }
33 return _frequency;
34 }
35 virtual void beginTransmission(uint8_t address)=0;
36 virtual uint8_t endTransmission()=0;
37 virtual size_t write(uint8_t data)=0;
38 virtual size_t write(const uint8_t *data, size_t quantity)=0;
39 virtual size_t requestFrom(uint8_t address, size_t len, bool stopBit)=0;
40 virtual int available()=0;
41 virtual int read()=0;
42 virtual int peek(){ return -1; }; // Optional override to peek at next byte in receive buffer
43 virtual void flush() = 0;
44 virtual uint8_t getMaxUsages() override { return 0; } //I2C bus can be shared infinitely
45 virtual I2CStatus getI2CStatus() const { return _i2cStatus; }
46 static constexpr uint32_t I2C_DEFAULT_FREQUENCY = 1700000; // 1,7 MHz default frequency
47 protected:
48 // Protected members here
49 static constexpr uint16_t I2C_DEFAULT_BUFFER_LENGTH = 32;
50
51 int8_t _sdaPin=-1;
52 int8_t _sclPin=-1;
53 uint32_t _frequency= I2C_DEFAULT_FREQUENCY;
54 int8_t _i2c_num=-1;
55 uint32_t _bufferSize= I2C_DEFAULT_BUFFER_LENGTH;
56 I2CStatus _i2cStatus = I2C_NOT_STARTED;
57
58};
59
60#endif
#define INFO_PRINTLN(x)
Print an info-level message with newline.
Definition Debug.h:137
Base class for hardware resources.
virtual bool reset()
Reset the hardware resource to a known default state.
Definition HardwareResource.h:47
HardwareResource()=default
Default constructor.
Type
Enumeration of hardware resource types.
Definition HardwareResource.h:26
@ I2C
I2C type.
Definition HardwareResource.h:29
Definition I2CCore.h:7
virtual HardwareResource::Type getType() override
Get the hardware resource type.
Definition I2CCore.h:22
virtual bool reset()
Reset the hardware resource to a known default state.
Definition I2CCore.h:9
virtual uint8_t getMaxUsages() override
Get the maximum simultaneous usages allowed for this resource.
Definition I2CCore.h:44