From 339bc3889c8af9bf181e30d0e98207293ca5f857 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Thu, 4 Jul 2019 15:21:35 +0200 Subject: [PATCH] feat(epicardium): Reset board when pressing power button Signed-off-by: Rahix <rahix@rahix.de> --- epicardium/main.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/epicardium/main.c b/epicardium/main.c index 929fdb67..b2bd12e5 100644 --- a/epicardium/main.c +++ b/epicardium/main.c @@ -1,10 +1,12 @@ #include <stdio.h> #include <stdlib.h> +#include "max32665.h" #include "uart.h" #include "cdcacm.h" #include "card10.h" +#include "pmic.h" #include "leds.h" #include "api/dispatcher.h" #include "serial.h" @@ -35,14 +37,23 @@ void vApiDispatcher(void*pvParameters) } } +static void pmic_button(bool falling) +{ + if (falling) { + MXC_GCR->rstr0 = MXC_F_GCR_RSTR0_SYSTEM; + } +} + int main(void) { card10_init(); card10_diag(); + pmic_set_button_callback(pmic_button); + cdcacm_init(); - printf("Initializing tasks ...\n"); + printf("=> Initializing tasks ...\n"); /* Serial */ if (xTaskCreate( @@ -69,12 +80,13 @@ int main(void) abort(); } - printf("Initializing dispatcher ...\n"); + printf("=> Initializing dispatcher ...\n"); api_dispatcher_init(); - printf("Staring core1 payload ...\n"); + printf("=> Starting core1 payload ...\n"); core1_start(); + printf("=> Starting FreeRTOS ...\n"); vTaskStartScheduler(); printf("ERROR: FreeRTOS did not start due to unknown error!\n"); } -- GitLab