forked from ROMEO/obsw
handling failed freeRTOS assertion as panic
This commit is contained in:
@ -21,8 +21,10 @@ fn panic(panic: &PanicInfo<'_>) -> ! {
|
||||
osal::stop_it();
|
||||
}
|
||||
// TODO: Make this unicode-safe
|
||||
sif!("In Task \"");
|
||||
sifln!("");
|
||||
sif!("in task \"");
|
||||
unsafe {
|
||||
//TODO is from_ptr safe enough?
|
||||
let task_name = core::ffi::CStr::from_ptr(osal::get_task_name());
|
||||
let task_name_utf8 = core::str::from_utf8(task_name.to_bytes());
|
||||
match task_name_utf8 {
|
||||
@ -41,6 +43,25 @@ fn panic(panic: &PanicInfo<'_>) -> ! {
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
extern "C" fn rust_assert_called(ptr: *const core::ffi::c_char, line: core::ffi::c_ulong) {
|
||||
let file_name = unsafe {
|
||||
//TODO is from_ptr safe enough?
|
||||
let file_name = core::ffi::CStr::from_ptr(ptr);
|
||||
let file_name_utf8 = core::str::from_utf8(file_name.to_bytes());
|
||||
match file_name_utf8 {
|
||||
Ok(string) => {
|
||||
string
|
||||
}
|
||||
Err(_) => {
|
||||
"Schei<EFBFBD> Encoding"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
panic!("assertion failed at {file_name}:{}", line);
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
extern "C" fn rust_main() {
|
||||
sifln!("Rust startup 🚀");
|
||||
|
Reference in New Issue
Block a user