diff --git a/avr/usbload/dir.c b/avr/usbload/dir.c index 873e12b..db38fe6 100644 --- a/avr/usbload/dir.c +++ b/avr/usbload/dir.c @@ -20,6 +20,8 @@ #include "dir.h" +#include "file.h" +#include "fat.h" #include "debug.h" #include "sram.h" #include "config.h" @@ -27,12 +29,15 @@ #include -uint16_t positon = 0; +uint16_t position = 0; + +extern struct File file; void dir_entry_start(){ - positon = 0; + position = 0; } + void dir_entry_dump(uint32_t addr, dir_ent_t* ent){ debug(DEBUG_FAT,"dir_entry_dump: addr=0x%06lx id=%li name=%s size=%li attr=%i\n", addr, ent->id, ent->file_name, ent->file_size, ent->file_attr); @@ -46,17 +51,46 @@ void dir_entry_add(uint32_t id, uint8_t* file_name,uint32_t file_size,uint8_t fi ent.id = id; ent.file_size = file_size; ent.file_attr = file_attr; - addr = DIR_ENTRY_LOC + (positon << DIR_ENTRY_SIZE_SHIFT ); + addr = DIR_ENTRY_LOC + (position << DIR_ENTRY_SIZE_SHIFT ); sram_bulk_copy(addr, (uint8_t *) &ent, DIR_ENTRY_SIZE ); dir_entry_dump(addr, &ent); - positon++; + position++; } -void dir_entry_header(uint16_t position, uint8_t * header){ +void dir_entry_header(uint16_t idx, uint8_t * header){ uint32_t addr; - addr = DIR_ENTRY_LOC + ( position << DIR_ENTRY_SIZE_SHIFT ) + DIR_ENTRY_HEADER_OFF; + addr = DIR_ENTRY_LOC + ( idx << DIR_ENTRY_SIZE_SHIFT ) + DIR_ENTRY_HEADER_OFF; sram_bulk_copy(addr, (uint8_t *) header, DIR_ENTRY_HEADER_SIZE); } +uint32_t dir_entry_get(uint32_t idx, dir_ent_t* ent){ + uint32_t addr; + addr = DIR_ENTRY_LOC + ( idx << DIR_ENTRY_SIZE_SHIFT ); + sram_bulk_read_buffer( addr, (uint8_t *) ent, DIR_ENTRY_SIZE); + return addr; +} + +void dir_entry_loop(){ + uint8_t i; + uint8_t j; + uint32_t addr; + dir_ent_t ent; + for (i=0; i< position; i++){ + addr = dir_entry_get(i,&ent); + dir_entry_dump(addr,&ent); + ffopen( ent.file_name ); + if (file.length != 524288){ + ffclose(); + continue; + } + //ffseek(0x7fc0); + for (j=0; j< 64; j++) + printf ("0x%02x " ,ffread()); + printf("\n"); + ffclose(); + + } +} + diff --git a/avr/usbload/testing.c b/avr/usbload/testing.c index d3f9445..9dda499 100644 --- a/avr/usbload/testing.c +++ b/avr/usbload/testing.c @@ -126,6 +126,7 @@ void test_sdcard(void){ printf("Root dirlist\n"); ffls_smc(); dump_memory(DIR_ENTRY_LOC , DIR_ENTRY_LOC + (64 * 2)); + dir_entry_loop(); while(1); #if (WRITE==1)