diff options
| author | Björn Stenberg <bjorn@haxx.se> | 2002-12-03 13:12:55 +0000 |
|---|---|---|
| committer | Björn Stenberg <bjorn@haxx.se> | 2002-12-03 13:12:55 +0000 |
| commit | 45d32cec5b78dcc8d84e737985fd25ab744f292c (patch) | |
| tree | 495fdc80fae65e84240daed02500eee52b6889d7 | |
| parent | db8cc18010ebfbc1ba639a8beba8aa325e62239e (diff) | |
| download | rockbox-45d32cec5b78dcc8d84e737985fd25ab744f292c.zip rockbox-45d32cec5b78dcc8d84e737985fd25ab744f292c.tar.gz rockbox-45d32cec5b78dcc8d84e737985fd25ab744f292c.tar.bz2 rockbox-45d32cec5b78dcc8d84e737985fd25ab744f292c.tar.xz | |
Added 'Disk info' to debug menu
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2908 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/debug_menu.c | 77 | ||||
| -rw-r--r-- | firmware/drivers/ata.c | 5 | ||||
| -rw-r--r-- | firmware/drivers/ata.h | 1 |
3 files changed, 83 insertions, 0 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index ae660d4..3aca2b8 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c @@ -39,6 +39,7 @@ #include "disk.h" #include "mpeg.h" #include "settings.h" +#include "ata.h" #ifdef HAVE_LCD_BITMAP #include "widgets.h" #include "peakmeter.h" @@ -1080,6 +1081,81 @@ static bool view_runtime(void) return false; } +static bool dbg_disk_info(void) +{ + char buf[128]; + bool done = false; + int i; + int page = 0; + const int max_page = 2; + unsigned short* identify_info = ata_get_identify(); + + while(!done) + { + int y=0; + int key; + lcd_clear_display(); +#ifdef HAVE_LCD_BITMAP + lcd_puts(0, y++, "Disk info:"); + y++; +#endif + + switch (page) { + case 0: + for (i=0; i < 20; i++) + ((unsigned short*)buf)[i]=identify_info[i+27]; + buf[40]=0; + /* kill trailing space */ + for (i=39; i && buf[i]==' '; i--) + buf[i] = 0; + lcd_puts(0, y++, "Model"); + lcd_puts_scroll(0, y++, buf); + break; + + case 1: + for (i=0; i < 4; i++) + ((unsigned short*)buf)[i]=identify_info[i+23]; + buf[8]=0; + lcd_puts(0, y++, "Firmware"); + lcd_puts(0, y++, buf); + break; + + case 2: + snprintf(buf, sizeof buf, "%d MB", + ((unsigned)identify_info[61] << 16 | + (unsigned)identify_info[60]) / 2048 ); + lcd_puts(0, y++, "Size"); + lcd_puts(0, y++, buf); + } + lcd_update(); + + /* Wait for a key to be pushed */ + key = button_get_w_tmo(HZ*5); + switch(key) { +#ifdef HAVE_PLAYER_KEYPAD + case BUTTON_STOP | BUTTON_REL: +#else + case BUTTON_OFF | BUTTON_REL: +#endif + done = true; + break; + + case BUTTON_LEFT: + if (--page < 0) + page = max_page; + break; + + case BUTTON_RIGHT: + if (++page > max_page) + page = 0; + break; + } + lcd_stop_scroll(); + } + + return false; +} + bool debug_menu(void) { int m; @@ -1105,6 +1181,7 @@ bool debug_menu(void) #endif { "View HW info", dbg_hw_info }, { "View partitions", dbg_partitions }, + { "View disk info", dbg_disk_info }, #ifdef HAVE_LCD_BITMAP { "View mpeg thread", dbg_mpeg_thread }, #ifdef PM_DEBUG diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index bdb7440..1b2cbd3 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -717,6 +717,11 @@ static int set_multiple_mode(int sectors) return 0; } +unsigned short* ata_get_identify(void) +{ + return identify_info; +} + int ata_init(void) { mutex_init(&ata_mtx); diff --git a/firmware/drivers/ata.h b/firmware/drivers/ata.h index 4a24cff..a9a7987 100644 --- a/firmware/drivers/ata.h +++ b/firmware/drivers/ata.h @@ -45,6 +45,7 @@ extern int ata_write_sectors(unsigned long start, int count, void* buf); extern void ata_delayed_write(unsigned long sector, void* buf); extern void ata_flush(void); extern void ata_spin(void); +extern unsigned short* ata_get_identify(void); extern long last_disk_activity; |