SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
SensorCommArduino_HW.hpp
Go to the documentation of this file.
1
30#pragma once
31
32#include "../SensorCommBase.hpp"
33
34#ifdef ARDUINO
35
36#if defined(ARDUINO_API_VERSION) || defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_MBED) || defined(ARDUINO_ARCH_ZEPHYR)
37#define SENSORLIB_ARDUINO_HAS_TYPED_GPIO_API 1
38#endif
39
40class HalArduino : public SensorHal
41{
42public:
43 void pinMode(uint8_t pin, uint8_t mode)
44 {
45 if (modeCallback) {
46 modeCallback(pin, mode);
47 } else {
48#if defined(SENSORLIB_ARDUINO_HAS_TYPED_GPIO_API)
49 ::pinMode(pin, static_cast<PinMode>(mode));
50#else
51 ::pinMode(pin, mode);
52#endif
53 }
54 }
55
56 void digitalWrite(uint8_t pin, uint8_t level)
57 {
58 if (writeCallback) {
59 writeCallback(pin, level);
60 } else {
61#if defined(SENSORLIB_ARDUINO_HAS_TYPED_GPIO_API)
62 ::digitalWrite(pin, static_cast<PinStatus>(level));
63#else
65#endif
66 }
67 }
68
69 uint8_t digitalRead(uint8_t pin)
70 {
71 if (readCallback) {
72 return readCallback(pin);
73 }
74 return ::digitalRead(pin);
75 }
76
77 uint32_t millis()
78 {
79 return ::millis();
80 }
81
82 void delay(uint32_t ms)
83 {
84 ::delay(ms);;
85 }
86
87 void delayMicroseconds(uint32_t us)
88 {
90 }
91};
92
93#undef SENSORLIB_ARDUINO_HAS_TYPED_GPIO_API
94
95#endif //*ARDUINO
uint8_t level
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.
virtual uint8_t digitalRead(uint8_t pin)=0
Read the digital value from a pin.
virtual void pinMode(uint8_t pin, uint8_t mode)=0
Set the mode of a digital pin.
virtual void digitalWrite(uint8_t pin, uint8_t level)=0
Write a digital value to a pin.
virtual void delay(uint32_t ms)=0
Blocking delay for a given number of milliseconds.
virtual void delayMicroseconds(uint32_t us)=0
Blocking delay for a given number of microseconds.
virtual uint32_t millis()=0
Get the current system time in milliseconds.