diff --git a/epicardium/api/genapi.py b/epicardium/api/genapi.py index 9a827cdeb87dc88624d5cca03f97806d678e6938..a528c0cfb3840a7105de8cc292b88173eeebe671 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 83481dd61322d1d70589cb9deef6633b2237a807..19b1dcfeca2df30f18cbb15d062e7783ecdd4ea6 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 b398f260c8b44e1a47ea8fea10ca0b54c06c17a2..1c25d75027cebffd593f32364ebab7eec65fa7e6 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 4ffb263cc60ee55f9d940c669ee185608b43d2a2..0117add3c1290474fba9f8cb6bb88c18339057a0 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 c04084f21d73af8b8bd56f58e858140fa9c01ec6..888c68bf2ea8d9cbaa218ecaea6056a4b178236d 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 41b4b8fde025ddb93fc3d9c4ca6ef2bab189a864..045b009aabcc17274e1b78a92e2bcd2765092f22 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 2efc4b9219e1c43170ddb30d5d247bf1d9388a2c..9e41efed4e75db20fcbb56d3022b276c44b770c7 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); }