diff options
| author | Björn Stenberg <bjorn@haxx.se> | 2002-11-12 09:04:06 +0000 |
|---|---|---|
| committer | Björn Stenberg <bjorn@haxx.se> | 2002-11-12 09:04:06 +0000 |
| commit | 42510d9e783f72a4945019bdcec19b9b60156aa1 (patch) | |
| tree | eeb516381492d5a5e5cda64b7db5f5b122100825 | |
| parent | bca1f64d136a6f34618aba60417870acccd8b483 (diff) | |
| download | rockbox-42510d9e783f72a4945019bdcec19b9b60156aa1.zip rockbox-42510d9e783f72a4945019bdcec19b9b60156aa1.tar.gz rockbox-42510d9e783f72a4945019bdcec19b9b60156aa1.tar.bz2 rockbox-42510d9e783f72a4945019bdcec19b9b60156aa1.tar.xz | |
Added '*PANIC*' string. Line is now wrapped on recorders. LED blinks slowly to indicate controlled state.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2835 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/panic.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/firmware/panic.c b/firmware/panic.c index 3dd5e15..df8afdf 100644 --- a/firmware/panic.c +++ b/firmware/panic.c @@ -19,10 +19,12 @@ #include <stdio.h> #include <stdarg.h> +#include <string.h> #include "panic.h" #include "lcd.h" #include "font.h" #include "debug.h" +#include "led.h" static char panic_buf[128]; @@ -34,6 +36,8 @@ void panicf( char *fmt, ...) va_list ap; #ifndef SIMULATOR + bool state = false; + /* Disable interrupts */ asm volatile ("ldc\t%0,sr" : : "r"(15<<4)); #endif @@ -44,17 +48,36 @@ void panicf( char *fmt, ...) #ifdef HAVE_LCD_CHARCELLS lcd_double_height(false); - lcd_puts(0,0,panic_buf); + lcd_puts(0,0,"*PANIC*"); + lcd_puts(0,1,panic_buf); #elif defined(HAVE_LCD_BITMAP) lcd_clear_display(); - lcd_setfont(FONT_SYSFIXED); - lcd_putsxy(0,0,panic_buf); + lcd_puts(0,0,"*PANIC*"); + { + /* wrap panic line */ + int i, y=1, len = strlen(panic_buf); + for (i=0; i<len; i+=18) { + unsigned char c = panic_buf[i+18]; + panic_buf[i+18] = 0; + lcd_puts(0,y++,panic_buf+i); + panic_buf[i+18] = c; + } + } lcd_update(); #else /* no LCD */ #endif DEBUGF(panic_buf); - while(1); + while (1) + { +#ifndef SIMULATOR + volatile int i; + led (state); + state = state?false:true; + + for (i = 0; i < 400000; ++i); +#endif + } } |