From 6fe493231dd05b6401b0bee9fc06d77229ec0752 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Sat, 20 Jul 2019 16:59:52 +0200
Subject: [PATCH] chore(epicardium): Port modules to use new log

Signed-off-by: Rahix <rahix@rahix.de>
---
 epicardium/api/genapi.py    |  4 ++--
 epicardium/cdcacm.c         | 18 +++++++++++-------
 epicardium/cdcacm.h         |  3 ++-
 epicardium/main.c           | 10 ++++++++--
 epicardium/modules/log.c    |  5 ++++-
 epicardium/modules/pmic.c   | 13 ++++++-------
 epicardium/modules/serial.c |  3 ++-
 7 files changed, 35 insertions(+), 21 deletions(-)

diff --git a/epicardium/api/genapi.py b/epicardium/api/genapi.py
index 9a827cdeb..a528c0cfb 100644
--- a/epicardium/api/genapi.py
+++ b/epicardium/api/genapi.py
@@ -165,7 +165,7 @@ def main():
     # Generate Dispatcher {{{
     with open(args.server, "w") as f_dispatcher:
         tmp = """\
-#include <stdio.h>
+#include "modules/log.h"
 #include "{header}"
 
 void __api_dispatch_call(uint32_t id, void*buffer)
@@ -201,7 +201,7 @@ void __api_dispatch_call(uint32_t id, void*buffer)
         tmp = """\
         default:
                 /* TODO: Better error handling */
-                printf("Error: API function %lx is unknown!!\\n", id);
+                LOG_ERR("api-dispatcher", "API function 0x%lx is unknown!!", id);
                 break;
         }}
 }}
diff --git a/epicardium/cdcacm.c b/epicardium/cdcacm.c
index 83481dd61..19b1dcfec 100644
--- a/epicardium/cdcacm.c
+++ b/epicardium/cdcacm.c
@@ -57,6 +57,8 @@
 #include "cdc_acm.h"
 #include "descriptors.h"
 
+#include "modules/log.h"
+#include <errno.h>
 
 /***** Definitions *****/
 #define EVENT_ENUM_COMP     MAXUSB_NUM_EVENTS
@@ -117,7 +119,7 @@ void delay_us(unsigned int usec)
 
 
 /******************************************************************************/
-void cdcacm_init(void)
+int cdcacm_init(void)
 {
     maxusb_cfg_options_t usb_opts;
 
@@ -135,14 +137,14 @@ void cdcacm_init(void)
 
     /* Initialize the usb module */
     if (usb_init(&usb_opts) != 0) {
-        printf("usb_init() failed\n");
-        while (1);
+        LOG_ERR("cdcacm", "usb_init() failed");
+        return -EIO;
     }
 
     /* Initialize the enumeration module */
     if (enum_init() != 0) {
-        printf("enum_init() failed\n");
-        while (1);
+        LOG_ERR("cdcacm", "enum_init() failed");
+        return -EIO;
     }
 
     /* Register enumeration data */
@@ -161,8 +163,8 @@ void cdcacm_init(void)
 
     /* Initialize the class driver */
     if (acm_init(&config_descriptor.comm_interface_descriptor) != 0) {
-        printf("acm_init() failed\n");
-        while (1);
+        LOG_ERR("cdcacm", "acm_init() failed");
+        return -EIO;
     }
 
     /* Register callbacks */
@@ -176,6 +178,8 @@ void cdcacm_init(void)
     /* TODO: Fix priority */
     NVIC_SetPriority(USB_IRQn, 6);
     NVIC_EnableIRQ(USB_IRQn);
+
+    return 0;
 }
 
 int cdcacm_num_read_avail(void)
diff --git a/epicardium/cdcacm.h b/epicardium/cdcacm.h
index b398f260c..1c25d7502 100644
--- a/epicardium/cdcacm.h
+++ b/epicardium/cdcacm.h
@@ -1,7 +1,8 @@
 #ifndef CDCACM_H
 #define CDCACM_H
+#include <stdint.h>
 
-void cdcacm_init(void);
+int cdcacm_init(void);
 int cdcacm_num_read_avail(void);
 uint8_t cdcacm_read(void);
 void cdcacm_write(uint8_t *data, int len);
diff --git a/epicardium/main.c b/epicardium/main.c
index 4ffb263cc..0117add3c 100644
--- a/epicardium/main.c
+++ b/epicardium/main.c
@@ -26,6 +26,7 @@ TaskHandle_t dispatcher_task_id;
  */
 void vApiDispatcher(void *pvParameters)
 {
+	LOG_DEBUG("dispatcher", "Ready.");
 	while (1) {
 		if (api_dispatcher_poll()) {
 			api_dispatcher_exec();
@@ -36,6 +37,8 @@ void vApiDispatcher(void *pvParameters)
 
 int main(void)
 {
+	LOG_INFO("startup", "Epicardium startup ...");
+
 	card10_init();
 	card10_diag();
 
@@ -45,10 +48,13 @@ int main(void)
 	/* TODO: Move this to its own function */
 	SCB->SCR |= SCB_SCR_SEVONPEND_Msk;
 
-	cdcacm_init();
+	if (cdcacm_init() < 0) {
+		LOG_ERR("startup", "USB-Serial unavailable");
+	}
+
 	fatfs_init();
 
-	LOG_DEBUG("startup", "Initializing tasks ...");
+	LOG_INFO("startup", "Initializing tasks ...");
 
 	/* Serial */
 	if (xTaskCreate(
diff --git a/epicardium/modules/log.c b/epicardium/modules/log.c
index c04084f21..888c68bf2 100644
--- a/epicardium/modules/log.c
+++ b/epicardium/modules/log.c
@@ -21,11 +21,14 @@ int log_msg(const char *subsys, const char *format, ...)
 		char *msg_color = "";
 
 		switch (format[0]) {
+		case 'D':
+			msg_color = "\x1B[2m";
+			break;
 		case 'W':
 			msg_color = "\x1B[1m";
 			break;
 		case 'E':
-			msg_color = "\x1B[31;1m";
+			msg_color = "\x1B[31m";
 			break;
 		case 'C':
 			msg_color = "\x1B[37;41;1m";
diff --git a/epicardium/modules/pmic.c b/epicardium/modules/pmic.c
index 41b4b8fde..045b009aa 100644
--- a/epicardium/modules/pmic.c
+++ b/epicardium/modules/pmic.c
@@ -10,6 +10,7 @@
 
 #include "epicardium.h"
 #include "modules.h"
+#include "modules/log.h"
 
 /* Task ID for the pmic handler */
 static TaskHandle_t pmic_task_id = NULL;
@@ -33,12 +34,11 @@ void vPmicTask(void *pvParameters)
 		ulTaskNotifyTake(pdTRUE, delay);
 
 		if (count == PMIC_PRESS_SLEEP) {
-			printf("pmic: Sleep\n"
-			       "[[ Unimplemented ]]\n");
+			LOG_ERR("pmic", "Sleep [[ Unimplemented ]]");
 		}
 
 		if (count == PMIC_PRESS_POWEROFF) {
-			printf("pmic: Poweroff\n");
+			LOG_INFO("pmic", "Poweroff");
 			MAX77650_setSFT_RST(0x2);
 		}
 
@@ -52,7 +52,7 @@ void vPmicTask(void *pvParameters)
 		if (int_flag & MAX77650_INT_nEN_R) {
 			/* Button was pressed */
 			if (count < PMIC_PRESS_SLEEP) {
-				printf("pmic: Reset\n");
+				LOG_INFO("pmic", "Reset");
 				/*
 				 * Give the UART fifo time to clear.
 				 * TODO: Do this properly
@@ -69,9 +69,8 @@ void vPmicTask(void *pvParameters)
 
 		/* TODO: Remove when all interrupts are handled */
 		if (int_flag & ~(MAX77650_INT_nEN_F | MAX77650_INT_nEN_R)) {
-			printf("=====> WARNING <=====\n"
-			       "* Unhandled PMIC Interrupt: %x\n",
-			       int_flag);
+			LOG_WARN("pmic", "Unhandled PMIC Interrupt: %x",
+			         int_flag);
 		}
 
 		if (delay != portMAX_DELAY) {
diff --git a/epicardium/modules/serial.c b/epicardium/modules/serial.c
index 2efc4b921..9e41efed4 100644
--- a/epicardium/modules/serial.c
+++ b/epicardium/modules/serial.c
@@ -11,6 +11,7 @@
 #include "queue.h"
 
 #include "modules.h"
+#include "modules/log.h"
 
 /* Task ID for the serial handler */
 TaskHandle_t serial_task_id = NULL;
@@ -93,7 +94,7 @@ void vSerialTask(void *pvParameters)
 	while (1) {
 		int ret = UART_ReadAsync(ConsoleUart, &read_req);
 		if (ret != E_NO_ERROR && ret != E_BUSY) {
-			printf("error reading uart: %d\n", ret);
+			LOG_ERR("serial", "error reading uart: %d", ret);
 			vTaskDelay(portMAX_DELAY);
 		}
 
-- 
GitLab