Added printf() instead of snprintf/lcd_puts/lcd_update

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12033 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Linus Nielsen Feltzing 2007-01-16 23:12:02 +00:00
parent d1e2ce2918
commit f3f0d1c9bb

View file

@ -24,6 +24,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include "cpu.h"
#include "system.h"
#include "lcd.h"
@ -156,6 +157,31 @@ int opto_keypad_read(void)
}
#endif
char printfbuf[256];
void reset_screen(void)
{
lcd_clear_display();
line = 0;
}
void printf(const char *format, ...)
{
int len;
unsigned char *ptr;
va_list ap;
va_start(ap, format);
ptr = printfbuf;
len = vsnprintf(ptr, sizeof(printfbuf), format, ap);
va_end(ap);
lcd_puts(0, line++, ptr);
lcd_update();
if(line >= 30)
line = 0;
}
static int key_pressed(void)
{
unsigned char state;
@ -200,7 +226,6 @@ int load_rockbox(unsigned char* buf, char* firmware)
char model[5];
unsigned long sum;
int i;
char str[80];
char filename[MAX_PATH];
snprintf(filename,sizeof(filename),"/.rockbox/%s",firmware);
@ -231,13 +256,9 @@ int load_rockbox(unsigned char* buf, char* firmware)
model[4] = 0;
snprintf(str, 80, "Model: %s", model);
lcd_puts(0, line++, str);
snprintf(str, 80, "Checksum: %x", chksum);
lcd_puts(0, line++, str);
snprintf(str, 80, "Loading %s", firmware);
lcd_puts(0, line++, str);
lcd_update();
printf("Model: %s", model);
printf("Checksum: %x", chksum);
printf("Loading %s", firmware);
lseek(fd, FIRMWARE_OFFSET_FILE_DATA, SEEK_SET);
@ -253,12 +274,10 @@ int load_rockbox(unsigned char* buf, char* firmware)
sum += buf[i];
}
snprintf(str, 80, "Sum: %x", sum);
lcd_puts(0, line++, str);
lcd_update();
printf("Sum: %x", sum);
if(sum != chksum)
return -5;
return -5;
return len;
}
@ -268,7 +287,6 @@ int load_linux(unsigned char* buf) {
int fd;
int rc;
int len;
char str[80];
fd=open("/linux.bin",O_RDONLY);
if (fd < 0)
@ -283,9 +301,7 @@ int load_linux(unsigned char* buf) {
if (rc < len)
return -4;
snprintf(str, 80, "Loaded Linux: %d bytes", len);
lcd_puts(0, line++, str);
lcd_update();
printf("Loaded Linux: %d bytes", len);
return len;
}
@ -300,14 +316,13 @@ void fatal_error(void)
/* System font is 6 pixels wide */
#if LCD_WIDTH >= (30*6)
lcd_puts(0, line++, "Press MENU+SELECT to reboot");
lcd_puts(0, line++, "then SELECT+PLAY for disk mode");
printf("Press MENU+SELECT to reboot");
printf("then SELECT+PLAY for disk mode");
#else
lcd_puts(0, line++, "Press MENU+SELECT to");
lcd_puts(0, line++, "reboot then SELECT+PLAY");
lcd_puts(0, line++, "for disk mode");
printf("Press MENU+SELECT to");
printf("reboot then SELECT+PLAY");
printf("for disk mode");
#endif
lcd_update();
while (1) {
if (button_hold() != holdstatus) {
@ -389,12 +404,9 @@ void* main(void)
lcd_setfont(FONT_SYSFIXED);
lcd_puts(0, line++, "Rockbox boot loader");
snprintf(buf, sizeof(buf), "Version: 20%s", version);
lcd_puts(0, line++, buf);
snprintf(buf, sizeof(buf), "IPOD version: 0x%08x", IPOD_HW_REVISION);
lcd_puts(0, line++, buf);
lcd_update();
printf("Rockbox boot loader");
printf("Version: 20%s", version);
printf("IPOD version: 0x%08x", IPOD_HW_REVISION);
i=ata_init();
if (i==0) {
@ -407,27 +419,22 @@ void* main(void)
for (i=39; i && buf[i]==' '; i--) {
buf[i]=0;
}
lcd_puts(0, line++, buf);
lcd_update();
printf(buf);
} else {
snprintf(buf, sizeof(buf), "ATA: %d", i);
lcd_puts(0, line++, buf);
lcd_update();
printf("ATA: %d", i);
}
disk_init();
rc = disk_mount_all();
if (rc<=0)
{
lcd_puts(0, line++, "No partition found");
printf("No partition found");
fatal_error();
}
pinfo = disk_partinfo(1);
snprintf(buf, sizeof(buf), "Partition 1: 0x%02x %ld MB",
pinfo->type, pinfo->size / 2048);
lcd_puts(0, line++, buf);
lcd_update();
printf("Partition 1: 0x%02x %ld MB",
pinfo->type, pinfo->size / 2048);
/* See if there is an Apple firmware image in RAM */
haveretailos = (memcmp((void*)(DRAM_START+0x20),"portalplayer",12)==0);
@ -438,29 +445,22 @@ void* main(void)
i=key_pressed();
if ((i!=BUTTON_MENU) && (i!=BUTTON_PLAY)) {
lcd_puts(0, line, "Loading Rockbox...");
lcd_update();
printf("Loading Rockbox...");
rc=load_rockbox(loadbuffer, BOOTFILE);
if (rc < 0) {
snprintf(buf, sizeof(buf), "Rockbox error: %d",rc);
lcd_puts(0, line++, buf);
lcd_update();
printf("Rockbox error: %d",rc);
} else {
lcd_puts(0, line++, "Rockbox loaded.");
lcd_update();
printf("Rockbox loaded.");
memcpy((void*)DRAM_START,loadbuffer,rc);
return (void*)DRAM_START;
}
}
if (i==BUTTON_PLAY) {
lcd_puts(0, line, "Loading Linux...");
lcd_update();
printf("Loading Linux...");
rc=load_linux(loadbuffer);
if (rc < 0) {
snprintf(buf, sizeof(buf), "Linux error: %d",rc);
lcd_puts(0, line++, buf);
lcd_update();
printf("Linux error: %d",rc);
} else {
memcpy((void*)DRAM_START,loadbuffer,rc);
return (void*)DRAM_START;
@ -472,8 +472,7 @@ void* main(void)
/* If either the hold switch was on, or loading Rockbox/IPL
failed, then try the Apple firmware */
lcd_puts(0, line, "Loading original firmware...");
lcd_update();
printf("Loading original firmware...");
/* First try an apple_os.ipod file on the FAT32 partition
(either in .rockbox or the root)
@ -483,12 +482,9 @@ void* main(void)
/* Only report errors if the file was found */
if (rc < -1) {
snprintf(buf, sizeof(buf), "apple_os.ipod error: %d",rc);
lcd_puts(0, line++, buf);
lcd_update();
printf("apple_os.ipod error: %d",rc);
} else if (rc > 0) {
lcd_puts(0, line++, "apple_os.ipod loaded.");
lcd_update();
printf("apple_os.ipod loaded.");
memcpy((void*)DRAM_START,loadbuffer,rc);
return (void*)DRAM_START;
}
@ -499,7 +495,7 @@ void* main(void)
}
/* Everything failed - just loop forever */
lcd_puts(0, line++, "No RetailOS detected");
printf("No RetailOS detected");
fatal_error();