diff --git a/epicardium/modules/hw-lock.c b/epicardium/modules/hw-lock.c index f02a5882b1bdb2aabddeb2ccea77d59fe14939c4..cc9986ec96285c7f2f42e6b06a51364d656f2b0e 100644 --- a/epicardium/modules/hw-lock.c +++ b/epicardium/modules/hw-lock.c @@ -25,13 +25,25 @@ int hwlock_acquire(enum hwlock_periph p, TickType_t wait) if (p >= _HWLOCK_MAX) { return -EINVAL; } + TaskHandle_t task = xTaskGetCurrentTaskHandle(); if (xSemaphoreTake(hwlock_mutex[p], wait) != pdTRUE) { - LOG_WARN("hwlock", "Lock %u is busy.", p); + LOG_WARN( + "hwlock", + "Lock %u is busy, held by: %s, attempt to accquire by: %s", + p, + pcTaskGetName(hwlock_tasks[p]), + pcTaskGetName(task) + ); + LOG_DEBUG( + "hwlock", + "...attempted to lock from pc %p", + __builtin_return_address(0) + ); return -EBUSY; } - hwlock_tasks[p] = xTaskGetCurrentTaskHandle(); + hwlock_tasks[p] = task; return 0; } diff --git a/epicardium/modules/pmic.c b/epicardium/modules/pmic.c index 093e97ecdad2bd250636150c59ac18fcb16ad279..89365ffbf3fa587f53d00207905eb0942b3eb607 100644 --- a/epicardium/modules/pmic.c +++ b/epicardium/modules/pmic.c @@ -16,6 +16,7 @@ #include "timers.h" #include <stdio.h> +#include <string.h> /* Task ID for the pmic handler */ static TaskHandle_t pmic_task_id = NULL; @@ -207,7 +208,10 @@ static void pmic_check_battery() res = pmic_read_amux(PMIC_AMUX_BATT_U, &u_batt); if (res < 0) { - LOG_ERR("pmic", "Failed reading battery voltage: %d", res); + LOG_ERR("pmic", + "Failed reading battery voltage: %s (%d)", + strerror(-res), + res); return; }