From 0d8be9c38bcb79376cde682af9b55d94c6806b91 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Thu, 1 Aug 2019 01:17:48 +0200
Subject: [PATCH] feat(pycardium): Add RTC_ALARM interrupt number

Signed-off-by: Rahix <rahix@rahix.de>
---
 Documentation/pycardium/utime.rst | 19 +++++++++++++++++++
 pycardium/modules/interrupt.c     |  7 ++++++-
 pycardium/modules/qstrdefs.h      |  1 +
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/Documentation/pycardium/utime.rst b/Documentation/pycardium/utime.rst
index 457e948e..c765d2fe 100644
--- a/Documentation/pycardium/utime.rst
+++ b/Documentation/pycardium/utime.rst
@@ -65,3 +65,22 @@ alarm.
          utime.alarm(alarm, minute_timer)
 
       minute_timer(None)
+
+   Alternatively, you can register a callback using the interrupt module and
+   then call :py:func:`utime.alarm` without a ``callback`` parameter:
+
+   .. code-block:: python
+
+      import interrupt, utime
+
+      def 5_second_timer(x):
+         current = utime.time()
+         print("Current: " + str(current))
+         alarm = (current // 10) * 10 + 5
+         utime.alarm(alarm)
+
+      # This time, we need to register and enable the callback manually
+      interrupt.set_callback(interrupt.RTC_ALARM, 5_second_timer)
+      interrupt.enable_callback(interrupt.RTC_ALARM)
+
+      5_second_timer(None)
diff --git a/pycardium/modules/interrupt.c b/pycardium/modules/interrupt.c
index e48f54ff..45bea663 100644
--- a/pycardium/modules/interrupt.c
+++ b/pycardium/modules/interrupt.c
@@ -81,7 +81,12 @@ static const mp_rom_map_elem_t interrupt_module_globals_table[] = {
 	  MP_ROM_PTR(&interrupt_enable_callback_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_disable_callback),
 	  MP_ROM_PTR(&interrupt_disable_callback_obj) },
-	{ MP_ROM_QSTR(MP_QSTR_BHI160), MP_OBJ_NEW_SMALL_INT(2) },
+
+	/* Interrupt Numbers */
+	{ MP_ROM_QSTR(MP_QSTR_BHI160),
+	  MP_OBJ_NEW_SMALL_INT(EPIC_INT_BHI160_TEST) },
+	{ MP_ROM_QSTR(MP_QSTR_RTC_ALARM),
+	  MP_OBJ_NEW_SMALL_INT(EPIC_INT_RTC_ALARM) },
 };
 static MP_DEFINE_CONST_DICT(
 	interrupt_module_globals, interrupt_module_globals_table
diff --git a/pycardium/modules/qstrdefs.h b/pycardium/modules/qstrdefs.h
index ec162d21..dedc57c0 100644
--- a/pycardium/modules/qstrdefs.h
+++ b/pycardium/modules/qstrdefs.h
@@ -34,6 +34,7 @@ Q(set_callback)
 Q(enable_callback)
 Q(disable_callback)
 Q(BHI160)
+Q(RTC_ALARM)
 
 /* display */
 Q(sys_display)
-- 
GitLab