summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/debug_menu.c396
1 files changed, 203 insertions, 193 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 197e8fec8b..f640e0c4c0 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -57,12 +57,12 @@ void dbg_os(void)
57 57
58 while(1) 58 while(1)
59 { 59 {
60 lcd_puts(0, 0, "Stack usage:"); 60 lcd_puts(0, 0, "Stack usage:");
61 for(i = 0; i < num_threads;i++) 61 for(i = 0; i < num_threads;i++)
62 { 62 {
63 usage = thread_stack_usage(i); 63 usage = thread_stack_usage(i);
64 snprintf(buf, 32, "%s: %d%%", thread_name[i], usage); 64 snprintf(buf, 32, "%s: %d%%", thread_name[i], usage);
65 lcd_puts(0, 1+i, buf); 65 lcd_puts(0, 1+i, buf);
66 } 66 }
67 67
68 lcd_update(); 68 lcd_update();
@@ -72,8 +72,9 @@ void dbg_os(void)
72 72
73 switch(button) 73 switch(button)
74 { 74 {
75 case BUTTON_OFF: 75 case BUTTON_OFF:
76 return; 76 case BUTTON_LEFT:
77 return;
77 } 78 }
78 } 79 }
79} 80}
@@ -89,11 +90,11 @@ void dbg_os(void)
89 90
90 while(1) 91 while(1)
91 { 92 {
92 lcd_puts(0, 0, "Stack usage"); 93 lcd_puts(0, 0, "Stack usage");
93 94
94 usage = thread_stack_usage(currval); 95 usage = thread_stack_usage(currval);
95 snprintf(buf, 32, "%d: %d%% ", currval, usage); 96 snprintf(buf, 32, "%d: %d%% ", currval, usage);
96 lcd_puts(0, 1, buf); 97 lcd_puts(0, 1, buf);
97 98
98 sleep(HZ/10); 99 sleep(HZ/10);
99 100
@@ -101,20 +102,20 @@ void dbg_os(void)
101 102
102 switch(button) 103 switch(button)
103 { 104 {
104 case BUTTON_STOP: 105 case BUTTON_STOP:
105 return; 106 return;
106 107
107 case BUTTON_LEFT: 108 case BUTTON_LEFT:
108 currval--; 109 currval--;
109 if(currval < 0) 110 if(currval < 0)
110 currval = num_threads-1; 111 currval = num_threads-1;
111 break; 112 break;
112 113
113 case BUTTON_RIGHT: 114 case BUTTON_RIGHT:
114 currval++; 115 currval++;
115 if(currval > num_threads-1) 116 if(currval > num_threads-1)
116 currval = 0; 117 currval = 0;
117 break; 118 break;
118 } 119 }
119 } 120 }
120} 121}
@@ -175,20 +176,20 @@ void dbg_ports(void)
175 176
176 switch(button) 177 switch(button)
177 { 178 {
178 case BUTTON_ON: 179 case BUTTON_ON:
179 charge_status = charge_status?false:true; 180 charge_status = charge_status?false:true;
180 charger_enable(charge_status); 181 charger_enable(charge_status);
181 break; 182 break;
182 183
183 case BUTTON_UP: 184 case BUTTON_UP:
184 ide_status = ide_status?false:true; 185 ide_status = ide_status?false:true;
185 ide_power_enable(ide_status); 186 ide_power_enable(ide_status);
186 break; 187 break;
187 188
188 case BUTTON_OFF: 189 case BUTTON_OFF:
189 charger_enable(false); 190 charger_enable(false);
190 ide_power_enable(true); 191 ide_power_enable(true);
191 return; 192 return;
192 } 193 }
193 } 194 }
194} 195}
@@ -215,45 +216,45 @@ void dbg_ports(void)
215 216
216 switch(currval) 217 switch(currval)
217 { 218 {
218 case 0: 219 case 0:
219 snprintf(buf, 32, "PADR: %04x ", porta); 220 snprintf(buf, 32, "PADR: %04x ", porta);
220 break; 221 break;
221 case 1: 222 case 1:
222 snprintf(buf, 32, "PBDR: %04x ", portb); 223 snprintf(buf, 32, "PBDR: %04x ", portb);
223 break; 224 break;
224 case 2: 225 case 2:
225 snprintf(buf, 32, "AN0: %03x ", adc_read(0)); 226 snprintf(buf, 32, "AN0: %03x ", adc_read(0));
226 break; 227 break;
227 case 3: 228 case 3:
228 snprintf(buf, 32, "AN1: %03x ", adc_read(1)); 229 snprintf(buf, 32, "AN1: %03x ", adc_read(1));
229 break; 230 break;
230 case 4: 231 case 4:
231 snprintf(buf, 32, "AN2: %03x ", adc_read(2)); 232 snprintf(buf, 32, "AN2: %03x ", adc_read(2));
232 break; 233 break;
233 case 5: 234 case 5:
234 snprintf(buf, 32, "AN3: %03x ", adc_read(3)); 235 snprintf(buf, 32, "AN3: %03x ", adc_read(3));
235 break; 236 break;
236 case 6: 237 case 6:
237 snprintf(buf, 32, "AN4: %03x ", adc_read(4)); 238 snprintf(buf, 32, "AN4: %03x ", adc_read(4));
238 break; 239 break;
239 case 7: 240 case 7:
240 snprintf(buf, 32, "AN5: %03x ", adc_read(5)); 241 snprintf(buf, 32, "AN5: %03x ", adc_read(5));
241 break; 242 break;
242 case 8: 243 case 8:
243 snprintf(buf, 32, "AN6: %03x ", adc_read(6)); 244 snprintf(buf, 32, "AN6: %03x ", adc_read(6));
244 break; 245 break;
245 case 9: 246 case 9:
246 snprintf(buf, 32, "AN7: %03x ", adc_read(7)); 247 snprintf(buf, 32, "AN7: %03x ", adc_read(7));
247 break; 248 break;
248 case 10: 249 case 10:
249 snprintf(buf, 32, "%s, 0x%x ", 250 snprintf(buf, 32, "%s, 0x%x ",
250 ata_device?"slv":"mst", ata_io_address); 251 ata_device?"slv":"mst", ata_io_address);
251 break; 252 break;
252 case 11: 253 case 11:
253 mas_readmem(MAS_BANK_D0, 0x303, &crc_count, 1); 254 mas_readmem(MAS_BANK_D0, 0x303, &crc_count, 1);
254 255
255 snprintf(buf, 32, "CRC: %d ", crc_count); 256 snprintf(buf, 32, "CRC: %d ", crc_count);
256 break; 257 break;
257 } 258 }
258 lcd_puts(0, 0, buf); 259 lcd_puts(0, 0, buf);
259 260
@@ -270,20 +271,20 @@ void dbg_ports(void)
270 271
271 switch(button) 272 switch(button)
272 { 273 {
273 case BUTTON_STOP: 274 case BUTTON_STOP:
274 return; 275 return;
275 276
276 case BUTTON_LEFT: 277 case BUTTON_LEFT:
277 currval--; 278 currval--;
278 if(currval < 0) 279 if(currval < 0)
279 currval = 11; 280 currval = 11;
280 break; 281 break;
281 282
282 case BUTTON_RIGHT: 283 case BUTTON_RIGHT:
283 currval++; 284 currval++;
284 if(currval > 11) 285 if(currval > 11)
285 currval = 0; 286 currval = 0;
286 break; 287 break;
287 } 288 }
288 } 289 }
289} 290}
@@ -319,20 +320,20 @@ void dbg_rtc(void)
319 320
320 switch(button) 321 switch(button)
321 { 322 {
322 case BUTTON_DOWN: 323 case BUTTON_DOWN:
323 if (addr < 63-16) { addr += 16; } 324 if (addr < 63-16) { addr += 16; }
324 break; 325 break;
325 case BUTTON_UP: 326 case BUTTON_UP:
326 if (addr) { addr -= 16; } 327 if (addr) { addr -= 16; }
327 break; 328 break;
328 case BUTTON_F2: 329 case BUTTON_F2:
329 /* clear the user RAM space */ 330 /* clear the user RAM space */
330 for (c = 0; c <= 43; c++) 331 for (c = 0; c <= 43; c++)
331 rtc_write(0x18 + c, 0); 332 rtc_write(0x18 + c, 0);
332 break; 333 break;
333 case BUTTON_OFF: 334 case BUTTON_OFF:
334 case BUTTON_LEFT: 335 case BUTTON_LEFT:
335 return; 336 return;
336 } 337 }
337 } 338 }
338} 339}
@@ -371,26 +372,26 @@ void dbg_mas(void)
371 switch(button_get(false)) 372 switch(button_get(false))
372 { 373 {
373#ifdef HAVE_RECORDER_KEYPAD 374#ifdef HAVE_RECORDER_KEYPAD
374 case BUTTON_DOWN: 375 case BUTTON_DOWN:
375#else 376#else
376 case BUTTON_RIGHT: 377 case BUTTON_RIGHT:
377#endif 378#endif
378 addr += NUMROWS; 379 addr += NUMROWS;
379 break; 380 break;
380#ifdef HAVE_RECORDER_KEYPAD 381#ifdef HAVE_RECORDER_KEYPAD
381 case BUTTON_UP: 382 case BUTTON_UP:
382#else 383#else
383 case BUTTON_LEFT: 384 case BUTTON_LEFT:
384#endif 385#endif
385 if(addr) 386 if(addr)
386 addr -= NUMROWS; 387 addr -= NUMROWS;
387 break; 388 break;
388#ifdef HAVE_RECORDER_KEYPAD 389#ifdef HAVE_RECORDER_KEYPAD
389 case BUTTON_LEFT: 390 case BUTTON_LEFT:
390#else 391#else
391 case BUTTON_DOWN: 392 case BUTTON_DOWN:
392#endif 393#endif
393 return; 394 return;
394 } 395 }
395 } 396 }
396} 397}
@@ -417,14 +418,14 @@ void dbg_mas_codec(void)
417 418
418 switch(button_get(false)) 419 switch(button_get(false))
419 { 420 {
420 case BUTTON_DOWN: 421 case BUTTON_DOWN:
421 addr += 4; 422 addr += 4;
422 break; 423 break;
423 case BUTTON_UP: 424 case BUTTON_UP:
424 if (addr) { addr -= 4; } 425 if (addr) { addr -= 4; }
425 break; 426 break;
426 case BUTTON_LEFT: 427 case BUTTON_LEFT:
427 return; 428 return;
428 } 429 }
429 } 430 }
430} 431}
@@ -450,85 +451,94 @@ void view_battery(void)
450 while(1) 451 while(1)
451 { 452 {
452 switch (view) { 453 switch (view) {
453 case 0: /* voltage history graph */ 454 case 0: /* voltage history graph */
454 /* Find maximum and minimum voltage for scaling */ 455 /* Find maximum and minimum voltage for scaling */
455 maxv = minv = 0; 456 maxv = minv = 0;
456 for (i = BAT_FIRST_VAL; i < POWER_HISTORY_LEN; i++) { 457 for (i = BAT_FIRST_VAL; i < POWER_HISTORY_LEN; i++) {
457 if (power_history[i] > maxv) 458 if (power_history[i] > maxv)
458 maxv = power_history[i]; 459 maxv = power_history[i];
459 if ((minv == 0) || ((power_history[i]) && (power_history[i] < minv)) ) 460 if ((minv == 0) || ((power_history[i]) &&
460 minv = power_history[i]; 461 (power_history[i] < minv)) )
462 {
463 minv = power_history[i];
461 } 464 }
465 }
462 466
463 if (minv < 1) 467 if (minv < 1)
464 minv = 1; 468 minv = 1;
465 if (maxv < 2) 469 if (maxv < 2)
466 maxv = 2; 470 maxv = 2;
467 471
468 lcd_clear_display(); 472 lcd_clear_display();
469 lcd_puts(0, 0, "Battery voltage:"); 473 lcd_puts(0, 0, "Battery voltage:");
470 snprintf(buf, 30, "scale %d.%02d-%d.%02d V", minv / 100, minv % 100, maxv / 100, maxv % 100); 474 snprintf(buf, 30, "scale %d.%02d-%d.%02d V",
471 lcd_puts(0, 1, buf); 475 minv / 100, minv % 100, maxv / 100, maxv % 100);
476 lcd_puts(0, 1, buf);
472 477
473 x = 0; 478 x = 0;
474 for (i = BAT_FIRST_VAL+1; i < POWER_HISTORY_LEN; i++) { 479 for (i = BAT_FIRST_VAL+1; i < POWER_HISTORY_LEN; i++) {
475 y = (power_history[i] - minv) * BAT_YSPACE / (maxv - minv); 480 y = (power_history[i] - minv) * BAT_YSPACE / (maxv - minv);
476 lcd_clearline(x, LCD_HEIGHT-1, x, 20); 481 lcd_clearline(x, LCD_HEIGHT-1, x, 20);
477 lcd_drawline(x, LCD_HEIGHT-1, x, MIN(MAX(LCD_HEIGHT-1 - y, 20), LCD_HEIGHT-1)); 482 lcd_drawline(x, LCD_HEIGHT-1, x,
478 x++; 483 MIN(MAX(LCD_HEIGHT-1 - y, 20), LCD_HEIGHT-1));
479 } 484 x++;
485 }
480 486
481 break; 487 break;
482 488
483 case 1: /* status: */ 489 case 1: /* status: */
484 lcd_clear_display(); 490 lcd_clear_display();
485 lcd_puts(0, 0, "Power status:"); 491 lcd_puts(0, 0, "Power status:");
486 492
487 y = (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) / 10000; 493 y = (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) / 10000;
488 snprintf(buf, 30, "Battery: %d.%02d V", y / 100, y % 100); 494 snprintf(buf, 30, "Battery: %d.%02d V", y / 100, y % 100);
489 lcd_puts(0, 1, buf); 495 lcd_puts(0, 1, buf);
490 y = (adc_read(ADC_EXT_POWER) * EXT_SCALE_FACTOR) / 10000; 496 y = (adc_read(ADC_EXT_POWER) * EXT_SCALE_FACTOR) / 10000;
491 snprintf(buf, 30, "External: %d.%02d V", y / 100, y % 100); 497 snprintf(buf, 30, "External: %d.%02d V", y / 100, y % 100);
492 lcd_puts(0, 2, buf); 498 lcd_puts(0, 2, buf);
493 snprintf(buf, 30, "Charger: %s", charger_inserted() ? "present" : "absent"); 499 snprintf(buf, 30, "Charger: %s",
494 lcd_puts(0, 3, buf); 500 charger_inserted() ? "present" : "absent");
501 lcd_puts(0, 3, buf);
495#ifdef HAVE_CHARGE_CTRL 502#ifdef HAVE_CHARGE_CTRL
496 snprintf(buf, 30, "Charging: %s", charger_enabled ? "yes" : "no"); 503 snprintf(buf, 30, "Charging: %s", charger_enabled ? "yes" : "no");
497 lcd_puts(0, 4, buf); 504 lcd_puts(0, 4, buf);
498#endif 505#endif
499 y = 0; 506 y = 0;
500 for (i = 0; i < CHARGE_END_NEGD; i++) 507 for (i = 0; i < CHARGE_END_NEGD; i++)
501 y += power_history[POWER_HISTORY_LEN-1-i]*100 - power_history[POWER_HISTORY_LEN-1-i-1]*100; 508 y += power_history[POWER_HISTORY_LEN-1-i]*100 -
502 y = y / CHARGE_END_NEGD; 509 power_history[POWER_HISTORY_LEN-1-i-1]*100;
510 y = y / CHARGE_END_NEGD;
503 511
504 snprintf(buf, 30, "short delta: %d", y); 512 snprintf(buf, 30, "short delta: %d", y);
505 lcd_puts(0, 5, buf); 513 lcd_puts(0, 5, buf);
506 514
507 y = 0; 515 y = 0;
508 for (i = 0; i < CHARGE_END_ZEROD; i++) 516 for (i = 0; i < CHARGE_END_ZEROD; i++)
509 y += power_history[POWER_HISTORY_LEN-1-i]*100 - power_history[POWER_HISTORY_LEN-1-i-1]*100; 517 y += power_history[POWER_HISTORY_LEN-1-i]*100 -
510 y = y / CHARGE_END_ZEROD; 518 power_history[POWER_HISTORY_LEN-1-i-1]*100;
519 y = y / CHARGE_END_ZEROD;
511 520
512 snprintf(buf, 30, "long delta: %d", y); 521 snprintf(buf, 30, "long delta: %d", y);
513 lcd_puts(0, 6, buf); 522 lcd_puts(0, 6, buf);
514 523
515#ifdef HAVE_CHARGE_CTRL 524#ifdef HAVE_CHARGE_CTRL
516 lcd_puts(0, 7, power_message); 525 lcd_puts(0, 7, power_message);
517#endif 526#endif
518 break; 527 break;
519 528
520 case 2: /* voltage deltas: */ 529 case 2: /* voltage deltas: */
521 lcd_clear_display(); 530 lcd_clear_display();
522 lcd_puts(0, 0, "Voltage deltas:"); 531 lcd_puts(0, 0, "Voltage deltas:");
523 532
524 for (i = 0; i <= 6; i++) { 533 for (i = 0; i <= 6; i++) {
525 y = power_history[POWER_HISTORY_LEN-1-i] - power_history[POWER_HISTORY_LEN-1-i-1]; 534 y = power_history[POWER_HISTORY_LEN-1-i] -
526 snprintf(buf, 30, "-%d min: %s%d.%02d V", i, 535 power_history[POWER_HISTORY_LEN-1-i-1];
527 (y < 0) ? "-" : "", 536 snprintf(buf, 30, "-%d min: %s%d.%02d V", i,
528 ((y < 0) ? y * -1 : y) / 100, ((y < 0) ? y * -1 : y ) % 100); 537 (y < 0) ? "-" : "", ((y < 0) ? y * -1 : y) / 100,
529 lcd_puts(0, i+1, buf); 538 ((y < 0) ? y * -1 : y ) % 100);
530 } 539 lcd_puts(0, i+1, buf);
531 break; 540 }
541 break;
532 } 542 }
533 543
534 lcd_update(); 544 lcd_update();
@@ -536,19 +546,19 @@ void view_battery(void)
536 546
537 switch(button_get(false)) 547 switch(button_get(false))
538 { 548 {
539 case BUTTON_UP: 549 case BUTTON_UP:
540 if (view) 550 if (view)
541 view--; 551 view--;
542 break; 552 break;
543 553
544 case BUTTON_DOWN: 554 case BUTTON_DOWN:
545 if (view < 2) 555 if (view < 2)
546 view++; 556 view++;
547 break; 557 break;
548 558
549 case BUTTON_LEFT: 559 case BUTTON_LEFT:
550 case BUTTON_OFF: 560 case BUTTON_OFF:
551 return; 561 return;
552 } 562 }
553 } 563 }
554} 564}