Create fatal component to handle fatal errors

This commit is contained in:
Camden Dixie O'Brien 2023-05-14 21:13:35 +01:00
parent cc020d12bf
commit ae1d470b4b
5 changed files with 51 additions and 1 deletions

View File

@ -0,0 +1,5 @@
idf_component_register(
SRCS "fatal.c"
INCLUDE_DIRS "."
REQUIRES esp_system log
)

17
components/fatal/fatal.c Normal file
View File

@ -0,0 +1,17 @@
/*
* SPDX-License-Identifier: AGPL-3.0-only
* Copyright (c) Camden Dixie O'Brien
*/
#include "fatal.h"
#include "esp_log.h"
#include "esp_system.h"
#define TAG "Fatal"
void _fatal(const char *func, const char *file, unsigned line)
{
ESP_LOGE(TAG, "%s() @ %s:%u", func, file, line);
while (1) { }
}

21
components/fatal/fatal.h Normal file
View File

@ -0,0 +1,21 @@
/*
* SPDX-License-Identifier: AGPL-3.0-only
* Copyright (c) Camden Dixie O'Brien
*
* Fatal error module.
*
* This small module provides the FATAL() macro, intended to be used
* to signal a fatal error. This prompts a system restart.
*/
#ifndef FATAL_H
#define FATAL_H
/**
* Signals a fatal error.
*/
#define FATAL() _fatal(__func__, __FILE__, __LINE__)
void _fatal(const char *func, const char *file, unsigned line);
#endif

View File

@ -1 +1,5 @@
idf_component_register(SRCS "main.c")
idf_component_register(
SRCS "main.c"
INCLUDE_DIRS "."
REQUIRES fatal
)

View File

@ -3,6 +3,9 @@
* Copyright (c) Camden Dixie O'Brien
*/
#include "fatal.h"
void app_main(void)
{
FATAL();
}