33#include "SensorPCF8563.hpp"
48bool i2c_wr_function(uint8_t addr, uint8_t reg, uint8_t *
buf,
size_t len,
bool writeReg,
bool isWrite)
51 Wire.beginTransmission(addr);
58 return (Wire.endTransmission() == 0);
62 Wire.beginTransmission(addr);
64 Wire.endTransmission();
66 Wire.requestFrom(addr,
static_cast<uint8_t
>(len));
67 for (
size_t i = 0;
i < len; ++
i) {
68 if (Wire.available()) {
83 uint8_t pin =
reinterpret_cast<uintptr_t
>(param1);
84 uint8_t mode =
reinterpret_cast<uintptr_t
>(param2);
89 uint8_t pin =
reinterpret_cast<uintptr_t
>(param1);
90 uint8_t
level =
reinterpret_cast<uintptr_t
>(param2);
91 digitalWrite(pin,
level);
95 uint8_t pin =
reinterpret_cast<uintptr_t
>(param1);
96 return digitalRead(pin);
104 uint32_t ms =
reinterpret_cast<uintptr_t
>(param1);
110 uint32_t us =
reinterpret_cast<uintptr_t
>(param1);
111 delayMicroseconds(us);
122 Serial.begin(115200);
125#if (defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_STM32)) && !defined(ARDUINO_ARCH_MBED)
129#elif defined(ARDUINO_ARCH_NRF52)
132#elif defined(ARDUINO_ARCH_ESP32)
141 Serial.println(
"Failed to find PCF8563 - check your wiring!");
152 timeinfo.tm_yday = 2025 - 1900;
153 timeinfo.tm_mon = 1 - 1;
154 timeinfo.tm_mday = 17;
155 timeinfo.tm_hour = 4;
156 timeinfo.tm_min = 30;
157 timeinfo.tm_sec = 30;
177 size_t written = strftime(
buf, 64,
"%A, %B %d %Y %H:%M:%S", &timeinfo);
183 written = strftime(
buf, 64,
"%b %d %Y %H:%M:%S", &timeinfo);
189 written = strftime(
buf, 64,
"%A, %d. %B %Y %I:%M%p", &timeinfo);
Driver for the PCF8563 real-time clock (RTC) over I2C.
void setDateTime(RTC_DateTime datetime) override
Set the RTC date/time.
bool begin(SensorCommCustom::CustomCallback callback)
Initialize the device using a user-provided transport callback.
RTC_DateTime getDateTime() override
Get the current RTC date/time.
uint32_t hal_callback(SensorCommCustomHal::Operation op, void *param1, void *param2)
bool i2c_wr_function(uint8_t addr, uint8_t reg, uint8_t *buf, size_t len, bool writeReg, bool isWrite)