diff options
-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 ae660d49c5..3aca2b8f2c 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include "disk.h" | 39 | #include "disk.h" |
40 | #include "mpeg.h" | 40 | #include "mpeg.h" |
41 | #include "settings.h" | 41 | #include "settings.h" |
42 | #include "ata.h" | ||
42 | #ifdef HAVE_LCD_BITMAP | 43 | #ifdef HAVE_LCD_BITMAP |
43 | #include "widgets.h" | 44 | #include "widgets.h" |
44 | #include "peakmeter.h" | 45 | #include "peakmeter.h" |
@@ -1080,6 +1081,81 @@ static bool view_runtime(void) | |||
1080 | return false; | 1081 | return false; |
1081 | } | 1082 | } |
1082 | 1083 | ||
1084 | static bool dbg_disk_info(void) | ||
1085 | { | ||
1086 | char buf[128]; | ||
1087 | bool done = false; | ||
1088 | int i; | ||
1089 | int page = 0; | ||
1090 | const int max_page = 2; | ||
1091 | unsigned short* identify_info = ata_get_identify(); | ||
1092 | |||
1093 | while(!done) | ||
1094 | { | ||
1095 | int y=0; | ||
1096 | int key; | ||
1097 | lcd_clear_display(); | ||
1098 | #ifdef HAVE_LCD_BITMAP | ||
1099 | lcd_puts(0, y++, "Disk info:"); | ||
1100 | y++; | ||
1101 | #endif | ||
1102 | |||
1103 | switch (page) { | ||
1104 | case 0: | ||
1105 | for (i=0; i < 20; i++) | ||
1106 | ((unsigned short*)buf)[i]=identify_info[i+27]; | ||
1107 | buf[40]=0; | ||
1108 | /* kill trailing space */ | ||
1109 | for (i=39; i && buf[i]==' '; i--) | ||
1110 | buf[i] = 0; | ||
1111 | lcd_puts(0, y++, "Model"); | ||
1112 | lcd_puts_scroll(0, y++, buf); | ||
1113 | break; | ||
1114 | |||
1115 | case 1: | ||
1116 | for (i=0; i < 4; i++) | ||
1117 | ((unsigned short*)buf)[i]=identify_info[i+23]; | ||
1118 | buf[8]=0; | ||
1119 | lcd_puts(0, y++, "Firmware"); | ||
1120 | lcd_puts(0, y++, buf); | ||
1121 | break; | ||
1122 | |||
1123 | case 2: | ||
1124 | snprintf(buf, sizeof buf, "%d MB", | ||
1125 | ((unsigned)identify_info[61] << 16 | | ||
1126 | (unsigned)identify_info[60]) / 2048 ); | ||
1127 | lcd_puts(0, y++, "Size"); | ||
1128 | lcd_puts(0, y++, buf); | ||
1129 | } | ||
1130 | lcd_update(); | ||
1131 | |||
1132 | /* Wait for a key to be pushed */ | ||
1133 | key = button_get_w_tmo(HZ*5); | ||
1134 | switch(key) { | ||
1135 | #ifdef HAVE_PLAYER_KEYPAD | ||
1136 | case BUTTON_STOP | BUTTON_REL: | ||
1137 | #else | ||
1138 | case BUTTON_OFF | BUTTON_REL: | ||
1139 | #endif | ||
1140 | done = true; | ||
1141 | break; | ||
1142 | |||
1143 | case BUTTON_LEFT: | ||
1144 | if (--page < 0) | ||
1145 | page = max_page; | ||
1146 | break; | ||
1147 | |||
1148 | case BUTTON_RIGHT: | ||
1149 | if (++page > max_page) | ||
1150 | page = 0; | ||
1151 | break; | ||
1152 | } | ||
1153 | lcd_stop_scroll(); | ||
1154 | } | ||
1155 | |||
1156 | return false; | ||
1157 | } | ||
1158 | |||
1083 | bool debug_menu(void) | 1159 | bool debug_menu(void) |
1084 | { | 1160 | { |
1085 | int m; | 1161 | int m; |
@@ -1105,6 +1181,7 @@ bool debug_menu(void) | |||
1105 | #endif | 1181 | #endif |
1106 | { "View HW info", dbg_hw_info }, | 1182 | { "View HW info", dbg_hw_info }, |
1107 | { "View partitions", dbg_partitions }, | 1183 | { "View partitions", dbg_partitions }, |
1184 | { "View disk info", dbg_disk_info }, | ||
1108 | #ifdef HAVE_LCD_BITMAP | 1185 | #ifdef HAVE_LCD_BITMAP |
1109 | { "View mpeg thread", dbg_mpeg_thread }, | 1186 | { "View mpeg thread", dbg_mpeg_thread }, |
1110 | #ifdef PM_DEBUG | 1187 | #ifdef PM_DEBUG |
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index bdb744095d..1b2cbd369c 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c | |||
@@ -717,6 +717,11 @@ static int set_multiple_mode(int sectors) | |||
717 | return 0; | 717 | return 0; |
718 | } | 718 | } |
719 | 719 | ||
720 | unsigned short* ata_get_identify(void) | ||
721 | { | ||
722 | return identify_info; | ||
723 | } | ||
724 | |||
720 | int ata_init(void) | 725 | int ata_init(void) |
721 | { | 726 | { |
722 | mutex_init(&ata_mtx); | 727 | mutex_init(&ata_mtx); |
diff --git a/firmware/drivers/ata.h b/firmware/drivers/ata.h index 4a24cff412..a9a79870c4 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); | |||
45 | extern void ata_delayed_write(unsigned long sector, void* buf); | 45 | extern void ata_delayed_write(unsigned long sector, void* buf); |
46 | extern void ata_flush(void); | 46 | extern void ata_flush(void); |
47 | extern void ata_spin(void); | 47 | extern void ata_spin(void); |
48 | extern unsigned short* ata_get_identify(void); | ||
48 | 49 | ||
49 | extern long last_disk_activity; | 50 | extern long last_disk_activity; |
50 | 51 | ||