check.c 927 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "check.h"
  2. #include "furi-hal-task.h"
  3. #include <furi-hal-console.h>
  4. #include <stdio.h>
  5. void __furi_print_name(void) {
  6. if(task_is_isr_context()) {
  7. furi_hal_console_puts("[ISR] ");
  8. } else {
  9. const char* name = osThreadGetName(osThreadGetId());
  10. if(name == NULL) {
  11. furi_hal_console_puts("[main] ");
  12. } else {
  13. furi_hal_console_puts("[");
  14. furi_hal_console_puts(name);
  15. furi_hal_console_puts("] ");
  16. }
  17. }
  18. }
  19. void __furi_abort(void) {
  20. __disable_irq();
  21. asm("bkpt 1");
  22. while(1) {
  23. }
  24. }
  25. void furi_crash(const char* message) {
  26. furi_hal_console_puts("\r\n\033[0;31m[CRASH]");
  27. __furi_print_name();
  28. furi_hal_console_puts(message ? message : "Programming Error");
  29. furi_hal_console_puts("\r\nSystem halted. Connect debugger for more info\r\n");
  30. furi_hal_console_puts("\033[0m\r\n");
  31. __furi_abort();
  32. }