teensy4-panic

Crates.ioteensy4-panic
lib.rsteensy4-panic
version0.2.3
sourcesrc
created_at2020-12-26 21:15:40.772109
updated_at2023-09-15 13:45:12.00525
descriptionPanic handler for the Teensy 4. Part of the teensy4-rs project.
homepage
repositoryhttps://github.com/mciantyre/teensy4-rs
max_upload_size
id327627
size22,957
Ian McIntyre (mciantyre)

documentation

README

teensy4-panic

Panic handler for the Teensy 4.

When you link teensy4-panic into your program, any panic!() will cause your Teensy's LED to blink S.O.S. in Morse code. Supports both Teensy 4.0 and 4.1 boards.

Usage

Depend on teensy4-panic:

[dependencies]
teensy4-panic = "0.2"

Then, include the crate in your final program:

use teensy4_panic as _;

Finally, use panic!() to stop the program and blink the LED.

Features

The table below summarizes this crate's features. Each subsection details the feature.

Feature Description Default feature?
panic-handler Define the Teensy 4's panic handler in this crate
log Log the panic message using log::error!

It does not make sense to disable panic-handler and enable log, since logging can only happen when panic-handler is enabled.

Custom panic handlers

By default, teensy4-panic enables the panic-handler feature. If you want to use the S.O.S. routine in your own panic handler, disable the default features, and call sos():

[dependencies]
teensy4-panic = "0.2"
default-features = false
use teensy4_panic::sos;

#[panic_handler]
fn panic(_: &core::panic::PanicInfo) -> ! {
    // Your panic handler here...
    sos()
}

Log the panic message

If the log feature is enabled, the crate links with the log crate. Before blinking, the panic handler logs the panic message and source location at the error priority, using log::error!. The logging target is teensy4_panic.

The example below shows a panic! and an example of its corresponding log message:

const DELAY_MS: u32 = 5_000;
panic!("This is a panic message written after {}ms", DELAY_MS);
[ERROR teensy4_panic]: panicked at 'This is a panic message written after 5000ms', examples/panic_log.rs:22:5

The panic handler only emits the log message once. You're responsible for making sure that the log message can reach its destination while a panic! is active.

License: MIT OR Apache-2.0

Commit count: 593

cargo fmt