diff --git a/drivers/pcf85063a/pcf85063a.cmake b/drivers/pcf85063a/pcf85063a.cmake index 52ea7646b..c5c05a440 100644 --- a/drivers/pcf85063a/pcf85063a.cmake +++ b/drivers/pcf85063a/pcf85063a.cmake @@ -1,10 +1,14 @@ -set(DRIVER_NAME pcf85063a) -add_library(${DRIVER_NAME} INTERFACE) - -target_sources(${DRIVER_NAME} INTERFACE - ${CMAKE_CURRENT_LIST_DIR}/${DRIVER_NAME}.cpp) - -target_include_directories(${DRIVER_NAME} INTERFACE ${CMAKE_CURRENT_LIST_DIR}) - -# Pull in pico libraries that we need -target_link_libraries(${DRIVER_NAME} INTERFACE pico_stdlib hardware_i2c hardware_rtc pimoroni_i2c) +set(DRIVER_NAME pcf85063a) +add_library(${DRIVER_NAME} INTERFACE) + +target_sources(${DRIVER_NAME} INTERFACE + ${CMAKE_CURRENT_LIST_DIR}/${DRIVER_NAME}.cpp) + +target_include_directories(${DRIVER_NAME} INTERFACE ${CMAKE_CURRENT_LIST_DIR}) + +# Include datetime_t for cross-compatibility with RP2350 (no RTC) boards +# TODO: We should migrate away from using this non-standard type +target_compile_definitions(${DRIVER_NAME} INTERFACE PICO_INCLUDE_RTC_DATETIME=1) + +# Pull in pico libraries that we need +target_link_libraries(${DRIVER_NAME} INTERFACE pico_stdlib pico_util hardware_i2c pimoroni_i2c) diff --git a/drivers/pcf85063a/pcf85063a.cpp b/drivers/pcf85063a/pcf85063a.cpp index 6a87c82df..8afe6cf11 100644 --- a/drivers/pcf85063a/pcf85063a.cpp +++ b/drivers/pcf85063a/pcf85063a.cpp @@ -53,6 +53,8 @@ namespace pimoroni { return interrupt; } +#if PICO_INCLUDE_RTC_DATETIME + datetime_t PCF85063A::get_datetime() { uint8_t result[7] = {0}; @@ -85,6 +87,8 @@ namespace pimoroni { i2c->write_bytes(address, Registers::SECONDS, data, 7); } +#endif + void PCF85063A::set_alarm(int second, int minute, int hour, int day) { uint8_t alarm[5] = { uint8_t(second != PARAM_UNUSED ? bcd_encode(second) : 0x80), diff --git a/drivers/pcf85063a/pcf85063a.hpp b/drivers/pcf85063a/pcf85063a.hpp index 12bf7450b..647324bd1 100644 --- a/drivers/pcf85063a/pcf85063a.hpp +++ b/drivers/pcf85063a/pcf85063a.hpp @@ -108,10 +108,12 @@ namespace pimoroni { int get_scl() const; int get_int() const; +#if PICO_INCLUDE_RTC_DATETIME // Set and get the date and time // Uses datetime_t from pico sdk (hardware/rtc) for compatibility datetime_t get_datetime(); void set_datetime(datetime_t *t); +#endif // Alarm manipulation methods void set_alarm(int second = PARAM_UNUSED, int minute = PARAM_UNUSED,