#include "check.h" #include "furi-hal-task.h" #include #include void __furi_print_name(void) { if(task_is_isr_context()) { furi_hal_console_puts("[ISR] "); } else { const char* name = osThreadGetName(osThreadGetId()); if(name == NULL) { furi_hal_console_puts("[main] "); } else { furi_hal_console_puts("["); furi_hal_console_puts(name); furi_hal_console_puts("] "); } } } void __furi_abort(void) { __disable_irq(); asm("bkpt 1"); while(1) { } } void furi_crash(const char* message) { furi_hal_console_puts("\r\n\033[0;31m[CRASH]"); __furi_print_name(); furi_hal_console_puts(message ? message : "Programming Error"); furi_hal_console_puts("\r\nSystem halted. Connect debugger for more info\r\n"); furi_hal_console_puts("\033[0m\r\n"); __furi_abort(); }