mirror of
				https://github.com/Djeeberjr/fw-anwesenheit.git
				synced 2025-11-03 23:24:10 +00:00 
			
		
		
		
	updated panic handler
This commit is contained in:
		
							parent
							
								
									41adf7353d
								
							
						
					
					
						commit
						c4d6ed45f1
					
				
							
								
								
									
										11
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										11
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -78,9 +78,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "bitflags"
 | 
			
		||||
version = "2.9.1"
 | 
			
		||||
version = "2.9.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
 | 
			
		||||
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "bleps"
 | 
			
		||||
@ -714,7 +714,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f3887eda2917deef3d99e7a5c324f9190714e99055361ad36890dffd0a995b49"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "bitfield 0.19.1",
 | 
			
		||||
 "bitflags 2.9.1",
 | 
			
		||||
 "bitflags 2.9.4",
 | 
			
		||||
 "bytemuck",
 | 
			
		||||
 "cfg-if",
 | 
			
		||||
 "critical-section",
 | 
			
		||||
@ -1058,6 +1058,7 @@ dependencies = [
 | 
			
		||||
name = "fw-anwesenheit"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "bitflags 2.9.4",
 | 
			
		||||
 "bleps",
 | 
			
		||||
 "chrono",
 | 
			
		||||
 "critical-section",
 | 
			
		||||
@ -1412,7 +1413,7 @@ source = "git+https://github.com/sammhicks/picoserve.git?rev=400df53f61137e1bb28
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "const-sha1",
 | 
			
		||||
 "embassy-net",
 | 
			
		||||
 "embassy-time 0.4.0",
 | 
			
		||||
 "embassy-time 0.5.0",
 | 
			
		||||
 "embedded-io-async",
 | 
			
		||||
 "heapless",
 | 
			
		||||
 "log",
 | 
			
		||||
@ -1531,7 +1532,7 @@ version = "0.11.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "679341d22c78c6c649893cbd6c3278dcbe9fc4faa62fea3a9296ae2b50c14625"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "bitflags 2.9.1",
 | 
			
		||||
 "bitflags 2.9.4",
 | 
			
		||||
 "memchr",
 | 
			
		||||
 "unicase",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
@ -70,6 +70,7 @@ embedded-sdmmc = "0.8.0"
 | 
			
		||||
embedded-hal-bus = "0.3.0"
 | 
			
		||||
serde_json = { version = "1.0.143", default-features = false, features = ["alloc"]}
 | 
			
		||||
embassy-futures = { version = "0.1.2", features = ["log"] }
 | 
			
		||||
bitflags = "2.9.4"
 | 
			
		||||
 | 
			
		||||
[profile.dev]
 | 
			
		||||
# Rust debug is too slow.
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,6 @@
 | 
			
		||||
use core::cell::RefCell;
 | 
			
		||||
use core::sync::atomic::{AtomicU8, Ordering};
 | 
			
		||||
use alloc::string::ToString;
 | 
			
		||||
use critical_section::Mutex;
 | 
			
		||||
use embassy_executor::Spawner;
 | 
			
		||||
use embassy_net::Stack;
 | 
			
		||||
@ -26,9 +28,12 @@ use esp_hal_smartled::{SmartLedsAdapterAsync, buffer_size_async};
 | 
			
		||||
use esp_println::logger::init_logger;
 | 
			
		||||
use log::{debug, error};
 | 
			
		||||
 | 
			
		||||
use crate::FEEDBACK_STATE;
 | 
			
		||||
use crate::feedback:: FeedbackState;
 | 
			
		||||
use crate::init::network;
 | 
			
		||||
use crate::init::sd_card::{SDCardPersistence, setup_sdcard};
 | 
			
		||||
use crate::init::wifi;
 | 
			
		||||
use bitflags::bitflags;
 | 
			
		||||
 | 
			
		||||
/*************************************************
 | 
			
		||||
 * GPIO Pinout Xiao Esp32c6
 | 
			
		||||
@ -52,11 +57,38 @@ pub const LED_BUFFER_SIZE: usize = NUM_LEDS * 25;
 | 
			
		||||
 | 
			
		||||
static SD_DET: Mutex<RefCell<Option<Input>>> = Mutex::new(RefCell::new(None));
 | 
			
		||||
 | 
			
		||||
static ERR_FLAGS: AtomicU8 = AtomicU8::new(0);
 | 
			
		||||
 | 
			
		||||
bitflags! {
 | 
			
		||||
    struct Flags: u8 {
 | 
			
		||||
        const ERR_FLG_FEEDBACK = 0b00000001;
 | 
			
		||||
        const ERR_FLG_SDCARD = 0b00000010;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[panic_handler]
 | 
			
		||||
fn panic(info: &core::panic::PanicInfo) -> ! {
 | 
			
		||||
    loop {
 | 
			
		||||
 | 
			
		||||
    error!("PANIC: {info}");
 | 
			
		||||
 | 
			
		||||
    let ordering: Ordering = Ordering::Relaxed;
 | 
			
		||||
    let bits = ERR_FLAGS.load(ordering);
 | 
			
		||||
    let flags = Flags::from_bits_truncate(bits);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if !flags.contains(Flags::ERR_FLG_FEEDBACK) {
 | 
			
		||||
        FEEDBACK_STATE.signal(FeedbackState::Error);
 | 
			
		||||
    }
 | 
			
		||||
    ERR_FLAGS.fetch_or(Flags::ERR_FLG_FEEDBACK.bits(), ordering);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    if !flags.contains(Flags::ERR_FLG_SDCARD) {
 | 
			
		||||
        let info_str = info.to_string();
 | 
			
		||||
        // TODO: save error string to SD Card
 | 
			
		||||
    }
 | 
			
		||||
    ERR_FLAGS.fetch_or(Flags::ERR_FLG_SDCARD.bits(), ordering);
 | 
			
		||||
 | 
			
		||||
    loop {}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
esp_bootloader_esp_idf::esp_app_desc!();
 | 
			
		||||
@ -137,9 +169,9 @@ fn setup_uart(
 | 
			
		||||
    uart_tx: GPIO16<'static>,
 | 
			
		||||
    uart_rx: GPIO17<'static>,
 | 
			
		||||
) -> Uart<'static, Async> {
 | 
			
		||||
    let uard_device = Uart::new(uart1, esp_hal::uart::Config::default().with_baudrate(9600));
 | 
			
		||||
    let uart_device = Uart::new(uart1, esp_hal::uart::Config::default().with_baudrate(9600));
 | 
			
		||||
 | 
			
		||||
    match uard_device {
 | 
			
		||||
    match uart_device {
 | 
			
		||||
        Ok(block) => block.with_rx(uart_rx).with_tx(uart_tx).into_async(),
 | 
			
		||||
        Err(e) => {
 | 
			
		||||
            error!("Failed to initialize UART: {e}");
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user