SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
SensorCommCustomHal.hpp
Go to the documentation of this file.
1
30#pragma once
31
32#include "SensorCommBase.hpp"
33
35{
36public:
45
46 using CustomHalCallback = uint32_t (*)(Operation op, void *param1, void *param2);
47
48 SensorCommCustomHal(CustomHalCallback callback) : halCallback(callback) {}
49
50 void pinMode(uint8_t pin, uint8_t mode) override
51 {
52 if (modeCallback) {
53 modeCallback(pin, mode);
54 } else if (halCallback) {
55 halCallback(OP_PINMODE, reinterpret_cast<void *>(pin), reinterpret_cast<void *>(mode));
56 }
57 }
58
59 void digitalWrite(uint8_t pin, uint8_t level) override
60 {
61 if (writeCallback) {
62 writeCallback(pin, level);
63 } else if (halCallback) {
64 halCallback(OP_DIGITALWRITE, reinterpret_cast<void *>(pin), reinterpret_cast<void *>(level));
65 }
66 }
67
68 uint8_t digitalRead(uint8_t pin) override
69 {
70 if (readCallback) {
71 return readCallback(pin);
72 } else if (halCallback) {
73 return halCallback(OP_DIGITALREAD, reinterpret_cast<void *>(pin), nullptr);
74 }
75 return 0;
76 }
77
78 uint32_t millis()override
79 {
80 if (halCallback) {
81 return halCallback(OP_MILLIS, nullptr, nullptr);
82 }
83 return 0;
84 }
85
86 void delay(uint32_t ms) override
87 {
88 if (halCallback) {
89 halCallback(OP_DELAY, reinterpret_cast<void *>(ms), nullptr);
90 }
91 }
92
93 void delayMicroseconds(uint32_t us)override
94 {
95 if (halCallback) {
96 halCallback(OP_DELAYMICROSECONDS, reinterpret_cast<void *>(us), nullptr);
97 }
98 }
99private:
100 CustomHalCallback halCallback;
101};
@license MIT License
uint8_t level
uint32_t millis() override
Get the current system time in milliseconds.
void delay(uint32_t ms) override
Blocking delay for a given number of milliseconds.
uint8_t digitalRead(uint8_t pin) override
Read the digital value from a pin.
SensorCommCustomHal(CustomHalCallback callback)
void delayMicroseconds(uint32_t us) override
Blocking delay for a given number of microseconds.
void pinMode(uint8_t pin, uint8_t mode) override
Set the mode of a digital pin.
uint32_t(*)(Operation op, void *param1, void *param2) CustomHalCallback
void digitalWrite(uint8_t pin, uint8_t level) override
Write a digital value to a pin.
CustomMode modeCallback
Custom pinMode, nullptr if not set.
CustomWrite writeCallback
Custom digitalWrite, nullptr if not set.
CustomRead readCallback
Custom digitalRead, nullptr if not set.
Abstract hardware abstraction layer.