From 7b56f29a04022da98205adc0da6a2c2fe01ae105 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Fri, 3 Apr 2020 11:59:52 +0200
Subject: [PATCH] chore(interrupts): Fix all modules to use new api

Signed-off-by: Rahix <rahix@rahix.de>
---
 epicardium/api/control.c       |  4 ++--
 epicardium/modules/bhi.c       |  3 +--
 epicardium/modules/lifecycle.c |  1 -
 epicardium/modules/max30001.c  |  3 +--
 epicardium/modules/max86150.c  |  3 +--
 epicardium/modules/rtc.c       | 10 +++++++---
 epicardium/modules/serial.c    |  5 ++---
 7 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/epicardium/api/control.c b/epicardium/api/control.c
index 99c999533..f59978842 100644
--- a/epicardium/api/control.c
+++ b/epicardium/api/control.c
@@ -1,6 +1,5 @@
 #include "epicardium.h"
 #include "api/dispatcher.h"
-#include "api/interrupt-sender.h"
 #include "modules/log.h"
 
 #include "card10.h"
@@ -10,6 +9,7 @@
 #include "tmr.h"
 
 static void __core1_init(void);
+extern void interrupt_trigger(api_int_id_t id);
 
 struct core1_info {
 	/* Location of core1's interrupt vector table */
@@ -207,7 +207,7 @@ void core1_boot(void)
 void core1_trigger_reset(void)
 {
 	/* Signal core 1 that we intend to load a new payload. */
-	api_interrupt_trigger(EPIC_INT_RESET);
+	interrupt_trigger(EPIC_INT_RESET);
 }
 
 void core1_wait_ready(void)
diff --git a/epicardium/modules/bhi.c b/epicardium/modules/bhi.c
index 5a5528f5f..baa2d1622 100644
--- a/epicardium/modules/bhi.c
+++ b/epicardium/modules/bhi.c
@@ -11,7 +11,6 @@
 #include "task.h"
 #include "queue.h"
 
-#include "api/interrupt-sender.h"
 #include "epicardium.h"
 #include "modules/log.h"
 #include "modules/modules.h"
@@ -320,7 +319,7 @@ bhi160_handle_packet(bhy_data_type_t data_type, bhy_data_generic_t *sensor_data)
 		}
 
 		if (wakeup) {
-			api_interrupt_trigger(epic_int);
+			interrupt_trigger(epic_int);
 		}
 		break;
 	default:
diff --git a/epicardium/modules/lifecycle.c b/epicardium/modules/lifecycle.c
index bce448e69..76c5648cc 100644
--- a/epicardium/modules/lifecycle.c
+++ b/epicardium/modules/lifecycle.c
@@ -4,7 +4,6 @@
 #include "modules/config.h"
 #include "modules/mutex.h"
 #include "api/dispatcher.h"
-#include "api/interrupt-sender.h"
 #include "l0der/l0der.h"
 
 #include "card10.h"
diff --git a/epicardium/modules/max30001.c b/epicardium/modules/max30001.c
index 5c2ff10f8..39379703e 100644
--- a/epicardium/modules/max30001.c
+++ b/epicardium/modules/max30001.c
@@ -11,7 +11,6 @@
 #include "task.h"
 #include "queue.h"
 
-#include "api/interrupt-sender.h"
 #include "epicardium.h"
 #include "modules/log.h"
 #include "modules/modules.h"
@@ -141,7 +140,7 @@ static void max30001_handle_samples(int16_t *sensor_data, int16_t n)
 			LOG_WARN("max30001", "queue full");
 		}
 	}
-	api_interrupt_trigger(EPIC_INT_MAX30001_ECG);
+	interrupt_trigger(EPIC_INT_MAX30001_ECG);
 }
 
 /***** Functions *****/
diff --git a/epicardium/modules/max86150.c b/epicardium/modules/max86150.c
index 0de234a87..03527052c 100644
--- a/epicardium/modules/max86150.c
+++ b/epicardium/modules/max86150.c
@@ -13,7 +13,6 @@
 #include "task.h"
 #include "queue.h"
 
-#include "api/interrupt-sender.h"
 #include "modules/modules.h"
 
 static const gpio_cfg_t max86150_interrupt_pin = {
@@ -141,7 +140,7 @@ static int max86150_handle_sample(struct max86150_sensor_data *data)
 		return -EIO;
 	}
 
-	api_interrupt_trigger(EPIC_INT_MAX86150);
+	interrupt_trigger(EPIC_INT_MAX86150);
 
 	return 0;
 }
diff --git a/epicardium/modules/rtc.c b/epicardium/modules/rtc.c
index b563462db..7d75fd169 100644
--- a/epicardium/modules/rtc.c
+++ b/epicardium/modules/rtc.c
@@ -1,6 +1,6 @@
 #include "epicardium.h"
 #include "modules/log.h"
-#include "api/interrupt-sender.h"
+#include "modules/modules.h"
 
 #include "FreeRTOS.h"
 #include "task.h"
@@ -84,19 +84,23 @@ void epic_rtc_set_milliseconds(uint64_t milliseconds)
 	monotonic_offset += diff;
 }
 
+/* We need to use interrupt_trigger_unsafe() here */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 void RTC_IRQHandler(void)
 {
 	int flags = RTC_GetFlags();
 
 	if (flags & MXC_F_RTC_CTRL_ALDF) {
 		RTC_ClearFlags(MXC_F_RTC_CTRL_ALDF);
-		api_interrupt_trigger(EPIC_INT_RTC_ALARM);
+		interrupt_trigger_unsafe(EPIC_INT_RTC_ALARM);
 	} else {
 		LOG_WARN("rtc", "Unknown IRQ caught!");
 		/* Disable IRQ so it does not retrigger */
 		NVIC_DisableIRQ(RTC_IRQn);
 	}
 }
+#pragma GCC diagnostic pop
 
 int epic_rtc_schedule_alarm(uint32_t timestamp)
 {
@@ -107,7 +111,7 @@ int epic_rtc_schedule_alarm(uint32_t timestamp)
 	 * immediately.
 	 */
 	if (epic_rtc_get_seconds() >= timestamp) {
-		api_interrupt_trigger(EPIC_INT_RTC_ALARM);
+		interrupt_trigger(EPIC_INT_RTC_ALARM);
 		return 0;
 	}
 
diff --git a/epicardium/modules/serial.c b/epicardium/modules/serial.c
index 25dd91846..e80e30f75 100644
--- a/epicardium/modules/serial.c
+++ b/epicardium/modules/serial.c
@@ -1,5 +1,4 @@
 #include "epicardium.h"
-#include "api/interrupt-sender.h"
 #include "modules/log.h"
 #include "modules/modules.h"
 
@@ -280,7 +279,7 @@ void serial_enqueue_char(char chr)
 {
 	if (chr == 0x3) {
 		/* Control-C */
-		api_interrupt_trigger(EPIC_INT_CTRL_C);
+		interrupt_trigger(EPIC_INT_CTRL_C);
 	}
 
 	if (xQueueSend(read_queue, &chr, 100) == errQUEUE_FULL) {
@@ -288,7 +287,7 @@ void serial_enqueue_char(char chr)
 		vTaskDelay(portTICK_PERIOD_MS * 50);
 	}
 
-	api_interrupt_trigger(EPIC_INT_UART_RX);
+	interrupt_trigger(EPIC_INT_UART_RX);
 }
 
 void vSerialTask(void *pvParameters)
-- 
GitLab