Skip to content

Commit d60b741

Browse files
committed
pico w: Add soft RTC support
1 parent dc88379 commit d60b741

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

src/utility/time/RTCMillis.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
a commercial license, send an email to [email protected].
1616
*/
1717

18-
#ifdef ARDUINO_ARCH_ESP8266
18+
#if defined (ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
1919

2020
/**************************************************************************************
2121
* INCLUDE
@@ -59,4 +59,4 @@ unsigned long RTCMillis::get()
5959
return _last_rtc_update_value;
6060
}
6161

62-
#endif /* ARDUINO_ARCH_ESP8266 */
62+
#endif /* ARDUINO_ARCH_ESP8266 || ARDUINO_RASPBERRY_PI_PICO_W */

src/utility/time/RTCMillis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#ifndef ARDUINO_IOT_CLOUD_RTC_MILLIS_H_
1919
#define ARDUINO_IOT_CLOUD_RTC_MILLIS_H_
2020

21-
#ifdef ARDUINO_ARCH_ESP8266
21+
#if defined (ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
2222

2323
/**************************************************************************************
2424
* INCLUDE
@@ -45,6 +45,6 @@ class RTCMillis
4545

4646
};
4747

48-
#endif /* ARDUINO_ARCH_ESP8266 */
48+
#endif /* ARDUINO_ARCH_ESP8266 || ARDUINO_RASPBERRY_PI_PICO_W */
4949

5050
#endif /* ARDUINO_IOT_CLOUD_RTC_MILLIS_H_ */

src/utility/time/TimeService.cpp

+28-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
#include <mbed_rtc_time.h>
3535
#endif
3636

37-
#ifdef ARDUINO_ARCH_ESP8266
37+
#if defined (ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
3838
#include "RTCMillis.h"
3939
#endif
4040

@@ -50,7 +50,7 @@
5050
RTCZero rtc;
5151
#endif
5252

53-
#ifdef ARDUINO_ARCH_ESP8266
53+
#if defined (ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
5454
RTCMillis rtc;
5555
#endif
5656

@@ -90,6 +90,12 @@ void renesas_setRTC(unsigned long time);
9090
unsigned long renesas_getRTC();
9191
#endif
9292

93+
#ifdef ARDUINO_RASPBERRY_PI_PICO_W
94+
void pico_w_initRTC();
95+
void pico_w_setRTC(unsigned long time);
96+
unsigned long pico_w_getRTC();
97+
#endif
98+
9399
/**************************************************************************************
94100
* DEFINES
95101
**************************************************************************************/
@@ -342,6 +348,7 @@ void TimeServiceClass::initRTC()
342348
#elif defined (ARDUINO_ARCH_RENESAS)
343349
renesas_initRTC();
344350
#elif defined (ARDUINO_RASPBERRY_PI_PICO_W)
351+
pico_w_initRTC();
345352
#else
346353
#error "RTC not available for this architecture"
347354
#endif
@@ -360,6 +367,7 @@ void TimeServiceClass::setRTC(unsigned long time)
360367
#elif defined (ARDUINO_ARCH_RENESAS)
361368
renesas_setRTC(time);
362369
#elif defined (ARDUINO_RASPBERRY_PI_PICO_W)
370+
pico_w_setRTC(time);
363371
#else
364372
#error "RTC not available for this architecture"
365373
#endif
@@ -378,7 +386,7 @@ unsigned long TimeServiceClass::getRTC()
378386
#elif defined (ARDUINO_ARCH_RENESAS)
379387
return renesas_getRTC();
380388
#elif defined (ARDUINO_RASPBERRY_PI_PICO_W)
381-
return 1;
389+
return pico_w_getRTC();
382390
#else
383391
#error "RTC not available for this architecture"
384392
#endif
@@ -513,6 +521,23 @@ unsigned long renesas_getRTC()
513521
}
514522
#endif
515523

524+
#ifdef ARDUINO_RASPBERRY_PI_PICO_W
525+
void pico_w_initRTC()
526+
{
527+
rtc.begin();
528+
}
529+
530+
void pico_w_setRTC(unsigned long time)
531+
{
532+
rtc.set(time);
533+
}
534+
535+
unsigned long pico_w_getRTC()
536+
{
537+
return rtc.get();
538+
}
539+
#endif
540+
516541
/******************************************************************************
517542
* EXTERN DEFINITION
518543
******************************************************************************/

0 commit comments

Comments
 (0)