#include "bstd.h" #include "ministd.h" #include "stdio.h" BDBG_MODULE(stdio); /* Register software module with debug interface */ typedef struct mem_io_t { char *name; bool open; uint8_t *data; unsigned int *size; unsigned int cnt; }mem_io_t; #ifdef CONFIG_DCC_TEST /* 480i Standard Fonts */ extern const unsigned char g_cinecavB14_type[]; extern unsigned int g_cinecavB14_type_size; extern const unsigned char g_cinecavB18_type[]; extern unsigned int g_cinecavB18_type_size; extern const unsigned char g_cinecavB22_type[]; extern unsigned int g_cinecavB22_type_size; extern const unsigned char g_cinecavB14_mono[]; extern unsigned int g_cinecavB14_mono_size; extern const unsigned char g_cinecavB18_mono[]; extern unsigned int g_cinecavB18_mono_size; extern const unsigned char g_cinecavB22_mono[]; extern unsigned int g_cinecavB22_mono_size; extern const unsigned char g_cinecavB12_serif[]; extern unsigned int g_cinecavB12_serif_size; extern const unsigned char g_cinecavB15_serif[]; extern unsigned int g_cinecavB15_serif_size; extern const unsigned char g_cinecavB19_serif[]; extern unsigned int g_cinecavB19_serif_size; extern const unsigned char g_cinecavB12_sans[]; extern unsigned int g_cinecavB12_sans_size; extern const unsigned char g_cinecavB15_sans[]; extern unsigned int g_cinecavB15_sans_size; extern const unsigned char g_cinecavB19_sans[]; extern unsigned int g_cinecavB19_sans_size; extern const unsigned char g_cinecavB13_casual[]; extern unsigned int g_cinecavB13_casual_size; extern const unsigned char g_cinecavB16_casual[]; extern unsigned int g_cinecavB16_casual_size; extern const unsigned char g_cinecavB20_casual[]; extern unsigned int g_cinecavB20_casual_size; extern const unsigned char g_cinecavB12_script[]; extern unsigned int g_cinecavB12_script_size; extern const unsigned char g_cinecavB14_script[]; extern unsigned int g_cinecavB14_script_size; extern const unsigned char g_cinecavB18_script[]; extern unsigned int g_cinecavB18_script_size; extern const unsigned char g_cinecavB13_sc[]; extern unsigned int g_cinecavB13_sc_size; extern const unsigned char g_cinecavB15_sc[]; extern unsigned int g_cinecavB15_sc_size; extern const unsigned char g_cinecavB19_sc[]; extern unsigned int g_cinecavB19_sc_size; /* 480i Italic Fonts */ extern const unsigned char g_cinecavB14i_type[]; extern unsigned int g_cinecavB14i_type_size; extern const unsigned char g_cinecavB18i_type[]; extern unsigned int g_cinecavB18i_type_size; extern const unsigned char g_cinecavB22i_type[]; extern unsigned int g_cinecavB22i_type_size; extern const unsigned char g_cinecavB14i_mono[]; extern unsigned int g_cinecavB14i_mono_size; extern const unsigned char g_cinecavB18i_mono[]; extern unsigned int g_cinecavB18i_mono_size; extern const unsigned char g_cinecavB22i_mono[]; extern unsigned int g_cinecavB22i_mono_size; extern const unsigned char g_cinecavB12i_serif[]; extern unsigned int g_cinecavB12i_serif_size; extern const unsigned char g_cinecavB15i_serif[]; extern unsigned int g_cinecavB15i_serif_size; extern const unsigned char g_cinecavB19i_serif[]; extern unsigned int g_cinecavB19i_serif_size; extern const unsigned char g_cinecavB12i_sans[]; extern unsigned int g_cinecavB12i_sans_size; extern const unsigned char g_cinecavB15i_sans[]; extern unsigned int g_cinecavB15i_sans_size; extern const unsigned char g_cinecavB19i_sans[]; extern unsigned int g_cinecavB19i_sans_size; extern const unsigned char g_cinecavB13i_casual[]; extern unsigned int g_cinecavB13i_casual_size; extern const unsigned char g_cinecavB16i_casual[]; extern unsigned int g_cinecavB16i_casual_size; extern const unsigned char g_cinecavB20i_casual[]; extern unsigned int g_cinecavB20i_casual_size; extern const unsigned char g_cinecavB12i_script[]; extern unsigned int g_cinecavB12i_script_size; extern const unsigned char g_cinecavB14i_script[]; extern unsigned int g_cinecavB14i_script_size; extern const unsigned char g_cinecavB18i_script[]; extern unsigned int g_cinecavB18i_script_size; extern const unsigned char g_cinecavB13i_sc[]; extern unsigned int g_cinecavB13i_sc_size; extern const unsigned char g_cinecavB15i_sc[]; extern unsigned int g_cinecavB15i_sc_size; extern const unsigned char g_cinecavB19i_sc[]; extern unsigned int g_cinecavB19i_sc_size; /*1080i Standard Fonts */ extern const unsigned char g_cinecavB32_type[]; extern unsigned int g_cinecavB32_type_size; extern const unsigned char g_cinecavB41_type[]; extern unsigned int g_cinecavB41_type_size; extern const unsigned char g_cinecavB49_type[]; extern unsigned int g_cinecavB49_type_size; extern const unsigned char g_cinecavB34_mono[]; extern unsigned int g_cinecavB34_mono_size; extern const unsigned char g_cinecavB43_mono[]; extern unsigned int g_cinecavB43_mono_size; extern const unsigned char g_cinecavB52_mono[]; extern unsigned int g_cinecavB52_mono_size; extern const unsigned char g_cinecavB28_serif[]; extern unsigned int g_cinecavB28_serif_size; extern const unsigned char g_cinecavB35_serif[]; extern unsigned int g_cinecavB35_serif_size; extern const unsigned char g_cinecavB44_serif[]; extern unsigned int g_cinecavB44_serif_size; extern const unsigned char g_cinecavB28_sans[]; extern unsigned int g_cinecavB28_sans_size; extern const unsigned char g_cinecavB35_sans[]; extern unsigned int g_cinecavB35_sans_size; extern const unsigned char g_cinecavB44_sans[]; extern unsigned int g_cinecavB44_sans_size; extern const unsigned char g_cinecavB30_casual[]; extern unsigned int g_cinecavB30_casual_size; extern const unsigned char g_cinecavB36_casual[]; extern unsigned int g_cinecavB36_casual_size; extern const unsigned char g_cinecavB45_casual[]; extern unsigned int g_cinecavB45_casual_size; extern const unsigned char g_cinecavB25_script[]; extern unsigned int g_cinecavB25_script_size; extern const unsigned char g_cinecavB28_script[]; extern unsigned int g_cinecavB28_script_size; extern const unsigned char g_cinecavB38_script[]; extern unsigned int g_cinecavB38_script_size; extern const unsigned char g_cinecavB28_sc[]; extern unsigned int g_cinecavB28_sc_size; extern const unsigned char g_cinecavB35_sc[]; extern unsigned int g_cinecavB35_sc_size; extern const unsigned char g_cinecavB45_sc[]; extern unsigned int g_cinecavB45_sc_size; /*1080i Italic Fonts */ extern const unsigned char g_cinecavB32i_type[]; extern unsigned int g_cinecavB32i_type_size; extern const unsigned char g_cinecavB41i_type[]; extern unsigned int g_cinecavB41i_type_size; extern const unsigned char g_cinecavB49i_type[]; extern unsigned int g_cinecavB49i_type_size; extern const unsigned char g_cinecavB34i_mono[]; extern unsigned int g_cinecavB34i_mono_size; extern const unsigned char g_cinecavB43i_mono[]; extern unsigned int g_cinecavB43i_mono_size; extern const unsigned char g_cinecavB52i_mono[]; extern unsigned int g_cinecavB52i_mono_size; extern const unsigned char g_cinecavB28i_serif[]; extern unsigned int g_cinecavB28i_serif_size; extern const unsigned char g_cinecavB35i_serif[]; extern unsigned int g_cinecavB35i_serif_size; extern const unsigned char g_cinecavB44i_serif[]; extern unsigned int g_cinecavB44i_serif_size; extern const unsigned char g_cinecavB28i_sans[]; extern unsigned int g_cinecavB28i_sans_size; extern const unsigned char g_cinecavB35i_sans[]; extern unsigned int g_cinecavB35i_sans_size; extern const unsigned char g_cinecavB44i_sans[]; extern unsigned int g_cinecavB44i_sans_size; extern const unsigned char g_cinecavB30i_casual[]; extern unsigned int g_cinecavB30i_casual_size; extern const unsigned char g_cinecavB36i_casual[]; extern unsigned int g_cinecavB36i_casual_size; extern const unsigned char g_cinecavB45i_casual[]; extern unsigned int g_cinecavB45i_casual_size; extern const unsigned char g_cinecavB25i_script[]; extern unsigned int g_cinecavB25i_script_size; extern const unsigned char g_cinecavB28i_script[]; extern unsigned int g_cinecavB28i_script_size; extern const unsigned char g_cinecavB38i_script[]; extern unsigned int g_cinecavB38i_script_size; extern const unsigned char g_cinecavB28i_sc[]; extern unsigned int g_cinecavB28i_sc_size; extern const unsigned char g_cinecavB35i_sc[]; extern unsigned int g_cinecavB35i_sc_size; extern const unsigned char g_cinecavB45i_sc[]; extern unsigned int g_cinecavB45i_sc_size; static mem_io_t g_files[] = { /* 480i Standard Fonts */ { "cc_fonts/cinecavB14_type.bwin_font",false,(uint8_t*)g_cinecavB14_type,&g_cinecavB14_type_size,0}, { "cc_fonts/cinecavB18_type.bwin_font",false,(uint8_t*)g_cinecavB18_type,&g_cinecavB18_type_size,0}, { "cc_fonts/cinecavB22_type.bwin_font",false,(uint8_t*)g_cinecavB22_type,&g_cinecavB22_type_size,0}, { "cc_fonts/cinecavB12_serif.bwin_font",false,(uint8_t*)g_cinecavB12_serif,&g_cinecavB12_serif_size,0}, { "cc_fonts/cinecavB15_serif.bwin_font",false,(uint8_t*)g_cinecavB15_serif,&g_cinecavB15_serif_size,0}, { "cc_fonts/cinecavB19_serif.bwin_font",false,(uint8_t*)g_cinecavB19_serif,&g_cinecavB19_serif_size,0}, { "cc_fonts/cinecavB14_mono.bwin_font",false,(uint8_t*)g_cinecavB14_mono,&g_cinecavB14_mono_size,0}, { "cc_fonts/cinecavB18_mono.bwin_font",false,(uint8_t*)g_cinecavB18_mono,&g_cinecavB18_mono_size,0}, { "cc_fonts/cinecavB22_mono.bwin_font",false,(uint8_t*)g_cinecavB22_mono,&g_cinecavB22_mono_size,0}, { "cc_fonts/cinecavB12_sans.bwin_font",false,(uint8_t*)g_cinecavB12_sans,&g_cinecavB12_sans_size,0}, { "cc_fonts/cinecavB15_sans.bwin_font",false,(uint8_t*)g_cinecavB15_sans,&g_cinecavB15_sans_size,0}, { "cc_fonts/cinecavB19_sans.bwin_font",false,(uint8_t*)g_cinecavB19_sans,&g_cinecavB19_sans_size,0}, { "cc_fonts/cinecavB13_casual.bwin_font",false,(uint8_t*)g_cinecavB13_casual,&g_cinecavB13_casual_size,0}, { "cc_fonts/cinecavB16_casual.bwin_font",false,(uint8_t*)g_cinecavB16_casual,&g_cinecavB16_casual_size,0}, { "cc_fonts/cinecavB20_casual.bwin_font",false,(uint8_t*)g_cinecavB20_casual,&g_cinecavB20_casual_size,0}, { "cc_fonts/cinecavB12_script.bwin_font",false,(uint8_t*)g_cinecavB12_script,&g_cinecavB12_script_size,0}, { "cc_fonts/cinecavB14_script.bwin_font",false,(uint8_t*)g_cinecavB14_script,&g_cinecavB14_script_size,0}, { "cc_fonts/cinecavB18_script.bwin_font",false,(uint8_t*)g_cinecavB18_script,&g_cinecavB18_script_size,0}, { "cc_fonts/cinecavB13_sc.bwin_font",false,(uint8_t*)g_cinecavB13_sc,&g_cinecavB13_sc_size,0}, { "cc_fonts/cinecavB15_sc.bwin_font",false,(uint8_t*)g_cinecavB15_sc,&g_cinecavB15_sc_size,0}, { "cc_fonts/cinecavB19_sc.bwin_font",false,(uint8_t*)g_cinecavB19_sc,&g_cinecavB19_sc_size,0}, /* 480i Italic Fonts */ { "cc_fonts/cinecavB14i_type.bwin_font",false,(uint8_t*)g_cinecavB14i_type,&g_cinecavB14i_type_size,0}, { "cc_fonts/cinecavB18i_type.bwin_font",false,(uint8_t*)g_cinecavB18i_type,&g_cinecavB18i_type_size,0}, { "cc_fonts/cinecavB22i_type.bwin_font",false,(uint8_t*)g_cinecavB22i_type,&g_cinecavB22i_type_size,0}, { "cc_fonts/cinecavB12i_serif.bwin_font",false,(uint8_t*)g_cinecavB12i_serif,&g_cinecavB12i_serif_size,0}, { "cc_fonts/cinecavB15i_serif.bwin_font",false,(uint8_t*)g_cinecavB15i_serif,&g_cinecavB15i_serif_size,0}, { "cc_fonts/cinecavB19i_serif.bwin_font",false,(uint8_t*)g_cinecavB19i_serif,&g_cinecavB19i_serif_size,0}, { "cc_fonts/cinecavB14i_mono.bwin_font",false,(uint8_t*)g_cinecavB14i_mono,&g_cinecavB14i_mono_size,0}, { "cc_fonts/cinecavB18i_mono.bwin_font",false,(uint8_t*)g_cinecavB18i_mono,&g_cinecavB18i_mono_size,0}, { "cc_fonts/cinecavB22i_mono.bwin_font",false,(uint8_t*)g_cinecavB22i_mono,&g_cinecavB22i_mono_size,0}, { "cc_fonts/cinecavB12i_sans.bwin_font",false,(uint8_t*)g_cinecavB12i_sans,&g_cinecavB12i_sans_size,0}, { "cc_fonts/cinecavB15i_sans.bwin_font",false,(uint8_t*)g_cinecavB15i_sans,&g_cinecavB15i_sans_size,0}, { "cc_fonts/cinecavB19i_sans.bwin_font",false,(uint8_t*)g_cinecavB19i_sans,&g_cinecavB19i_sans_size,0}, { "cc_fonts/cinecavB13i_casual.bwin_font",false,(uint8_t*)g_cinecavB13i_casual,&g_cinecavB13i_casual_size,0}, { "cc_fonts/cinecavB16i_casual.bwin_font",false,(uint8_t*)g_cinecavB16i_casual,&g_cinecavB16i_casual_size,0}, { "cc_fonts/cinecavB20i_casual.bwin_font",false,(uint8_t*)g_cinecavB20i_casual,&g_cinecavB20i_casual_size,0}, { "cc_fonts/cinecavB12i_script.bwin_font",false,(uint8_t*)g_cinecavB12i_script,&g_cinecavB12i_script_size,0}, { "cc_fonts/cinecavB14i_script.bwin_font",false,(uint8_t*)g_cinecavB14i_script,&g_cinecavB14i_script_size,0}, { "cc_fonts/cinecavB18i_script.bwin_font",false,(uint8_t*)g_cinecavB18i_script,&g_cinecavB18i_script_size,0}, { "cc_fonts/cinecavB13i_sc.bwin_font",false,(uint8_t*)g_cinecavB13i_sc,&g_cinecavB13i_sc_size,0}, { "cc_fonts/cinecavB15i_sc.bwin_font",false,(uint8_t*)g_cinecavB15i_sc,&g_cinecavB15i_sc_size,0}, { "cc_fonts/cinecavB19i_sc.bwin_font",false,(uint8_t*)g_cinecavB19i_sc,&g_cinecavB19i_sc_size,0}, /*1080i Standard Fonts */ { "cc_fonts/cinecavB32_type.bwin_font",false,(uint8_t*)g_cinecavB32_type,&g_cinecavB32_type_size,0}, { "cc_fonts/cinecavB41_type.bwin_font",false,(uint8_t*)g_cinecavB41_type,&g_cinecavB41_type_size,0}, { "cc_fonts/cinecavB49_type.bwin_font",false,(uint8_t*)g_cinecavB49_type,&g_cinecavB49_type_size,0}, { "cc_fonts/cinecavB28_serif.bwin_font",false,(uint8_t*)g_cinecavB28_serif,&g_cinecavB28_serif_size,0}, { "cc_fonts/cinecavB35_serif.bwin_font",false,(uint8_t*)g_cinecavB35_serif,&g_cinecavB35_serif_size,0}, { "cc_fonts/cinecavB44_serif.bwin_font",false,(uint8_t*)g_cinecavB44_serif,&g_cinecavB44_serif_size,0}, { "cc_fonts/cinecavB34_mono.bwin_font",false,(uint8_t*)g_cinecavB34_mono,&g_cinecavB34_mono_size,0}, { "cc_fonts/cinecavB43_mono.bwin_font",false,(uint8_t*)g_cinecavB43_mono,&g_cinecavB43_mono_size,0}, { "cc_fonts/cinecavB52_mono.bwin_font",false,(uint8_t*)g_cinecavB52_mono,&g_cinecavB52_mono_size,0}, { "cc_fonts/cinecavB28_sans.bwin_font",false,(uint8_t*)g_cinecavB28_sans,&g_cinecavB28_sans_size,0}, { "cc_fonts/cinecavB35_sans.bwin_font",false,(uint8_t*)g_cinecavB35_sans,&g_cinecavB35_sans_size,0}, { "cc_fonts/cinecavB44_sans.bwin_font",false,(uint8_t*)g_cinecavB44_sans,&g_cinecavB44_sans_size,0}, { "cc_fonts/cinecavB30_casual.bwin_font",false,(uint8_t*)g_cinecavB30_casual,&g_cinecavB30_casual_size,0}, { "cc_fonts/cinecavB36_casual.bwin_font",false,(uint8_t*)g_cinecavB36_casual,&g_cinecavB36_casual_size,0}, { "cc_fonts/cinecavB45_casual.bwin_font",false,(uint8_t*)g_cinecavB45_casual,&g_cinecavB45_casual_size,0}, { "cc_fonts/cinecavB25_script.bwin_font",false,(uint8_t*)g_cinecavB25_script,&g_cinecavB25_script_size,0}, { "cc_fonts/cinecavB28_script.bwin_font",false,(uint8_t*)g_cinecavB28_script,&g_cinecavB28_script_size,0}, { "cc_fonts/cinecavB38_script.bwin_font",false,(uint8_t*)g_cinecavB38_script,&g_cinecavB38_script_size,0}, { "cc_fonts/cinecavB28_sc.bwin_font",false,(uint8_t*)g_cinecavB28_sc,&g_cinecavB28_sc_size,0}, { "cc_fonts/cinecavB35_sc.bwin_font",false,(uint8_t*)g_cinecavB35_sc,&g_cinecavB35_sc_size,0}, { "cc_fonts/cinecavB45_sc.bwin_font",false,(uint8_t*)g_cinecavB45_sc,&g_cinecavB45_sc_size,0}, /*1080i Italic Fonts */ { "cc_fonts/cinecavB32i_type.bwin_font",false,(uint8_t*)g_cinecavB32i_type,&g_cinecavB32i_type_size,0}, { "cc_fonts/cinecavB41i_type.bwin_font",false,(uint8_t*)g_cinecavB41i_type,&g_cinecavB41i_type_size,0}, { "cc_fonts/cinecavB49i_type.bwin_font",false,(uint8_t*)g_cinecavB49i_type,&g_cinecavB49i_type_size,0}, { "cc_fonts/cinecavB28i_serif.bwin_font",false,(uint8_t*)g_cinecavB28i_serif,&g_cinecavB28i_serif_size,0}, { "cc_fonts/cinecavB35i_serif.bwin_font",false,(uint8_t*)g_cinecavB35i_serif,&g_cinecavB35i_serif_size,0}, { "cc_fonts/cinecavB44i_serif.bwin_font",false,(uint8_t*)g_cinecavB44i_serif,&g_cinecavB44i_serif_size,0}, { "cc_fonts/cinecavB34i_mono.bwin_font",false,(uint8_t*)g_cinecavB34i_mono,&g_cinecavB34i_mono_size,0}, { "cc_fonts/cinecavB43i_mono.bwin_font",false,(uint8_t*)g_cinecavB43i_mono,&g_cinecavB43i_mono_size,0}, { "cc_fonts/cinecavB52i_mono.bwin_font",false,(uint8_t*)g_cinecavB52i_mono,&g_cinecavB52i_mono_size,0}, { "cc_fonts/cinecavB28i_sans.bwin_font",false,(uint8_t*)g_cinecavB28i_sans,&g_cinecavB28i_sans_size,0}, { "cc_fonts/cinecavB35i_sans.bwin_font",false,(uint8_t*)g_cinecavB35i_sans,&g_cinecavB35i_sans_size,0}, { "cc_fonts/cinecavB44i_sans.bwin_font",false,(uint8_t*)g_cinecavB44i_sans,&g_cinecavB44i_sans_size,0}, { "cc_fonts/cinecavB30i_casual.bwin_font",false,(uint8_t*)g_cinecavB30i_casual,&g_cinecavB30i_casual_size,0}, { "cc_fonts/cinecavB36i_casual.bwin_font",false,(uint8_t*)g_cinecavB36i_casual,&g_cinecavB36i_casual_size,0}, { "cc_fonts/cinecavB45i_casual.bwin_font",false,(uint8_t*)g_cinecavB45i_casual,&g_cinecavB45i_casual_size,0}, { "cc_fonts/cinecavB25i_script.bwin_font",false,(uint8_t*)g_cinecavB25i_script,&g_cinecavB25i_script_size,0}, { "cc_fonts/cinecavB28i_script.bwin_font",false,(uint8_t*)g_cinecavB28i_script,&g_cinecavB28i_script_size,0}, { "cc_fonts/cinecavB38i_script.bwin_font",false,(uint8_t*)g_cinecavB38i_script,&g_cinecavB38i_script_size,0}, { "cc_fonts/cinecavB28i_sc.bwin_font",false,(uint8_t*)g_cinecavB28i_sc,&g_cinecavB28i_sc_size,0}, { "cc_fonts/cinecavB35i_sc.bwin_font",false,(uint8_t*)g_cinecavB35i_sc,&g_cinecavB35i_sc_size,0}, { "cc_fonts/cinecavB45i_sc.bwin_font",false,(uint8_t*)g_cinecavB45i_sc,&g_cinecavB45i_sc_size,0}, { "",false,0,0,0}, }; #else static mem_io_t g_files[] = { { "",false,0,0,0}, }; #endif size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) { mem_io_t *file = (mem_io_t*)stream; BDBG_ASSERT(file); size = size * nmemb; if (file->cnt + size > *(file->size)) { BDBG_WRN(("Requesting more bytes than available (cnt = %d, size = %d,total = %d)\n", file->cnt,size,*(file->size))); size = *(file->size) - file->cnt; } memcpy(ptr,&(file->data[file->cnt]),size); file->cnt += size; return size; } size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) { mem_io_t *file = (mem_io_t*)stream; BDBG_ASSERT(file); size = size * nmemb; if (file->cnt + size > *(file->size)) { BDBG_WRN(("Attempt to write more bytes than available (cnt = %d, size = %d,total = %d)\n", file->cnt,size,*(file->size))); size = *(file->size) - file->cnt; } memcpy(&(file->data[file->cnt]),ptr,size); file->cnt += size; return size; } FILE *fopen(const char *path, const char *mode) { int idx = 0; while(g_files[idx].data != NULL) { if ((strcmp(path,g_files[idx].name) == 0) && !g_files[idx].open) { g_files[idx].open = true; g_files[idx].cnt = 0; return &(g_files[idx]); } idx++; } return NULL; } int fclose(FILE *stream) { mem_io_t *file = (mem_io_t*)stream; BDBG_ASSERT(file); file->open = false; return 0; } int fseek(FILE *stream, long offset, int whence) { mem_io_t *file = (mem_io_t*)stream; switch(whence) { default: case SEEK_SET: file->cnt = offset; break; case SEEK_CUR: file->cnt += offset; break; case SEEK_END: file->size += offset; break; } return file->cnt; } long ftell(FILE *stream) { mem_io_t *file = (mem_io_t*)stream; return (long) file->cnt; } int fflush(FILE *stream) { return 0; }