diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/debug_menu.c | 77 |
1 files changed, 77 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 |