From b28b2193a676ed06e04ea89695629781fa4387c9 Mon Sep 17 00:00:00 2001 From: Paul Molloy Date: Mon, 20 Feb 2017 01:54:34 -0600 Subject: [PATCH] Improving dump functionality. Need to make sure buffer has completed dump operation and is ready to be read back before calling IN transfer. Similar to how need to make sure buffer is empty prior to out transfer. This slows things down, but prevents problems for long read routines. --- host/source/dump.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/host/source/dump.c b/host/source/dump.c index 1956b4c..bc0fe17 100644 --- a/host/source/dump.c +++ b/host/source/dump.c @@ -15,6 +15,7 @@ int dump_cart( USBtransfer* transfer, rom_image *rom, cartridge *cart ) int buff0 = 0; int buff1 = 1; int i; + int cur_buff_status = 0; uint8_t data[buff_size]; @@ -103,6 +104,12 @@ int dump_cart( USBtransfer* transfer, rom_image *rom, cartridge *cart ) //now just need to call series of payload IN transfers to retrieve data //for( i=0; i<(512*KByte/buff_size); i++) { for( i=0; i<(32*KByte/buff_size); i++) { + //ensure cur_buff is DUMPED prior to requsting data + check(! get_cur_buff_status( transfer, &cur_buff_status ), "Error retrieving cur_buff->status"); + while (cur_buff_status != DUMPED ) { + //debug("cur_buff->status: %x ", cur_buff_status); + check(! get_cur_buff_status( transfer, &cur_buff_status ), "Error retrieving cur_buff->status"); + } //for( i=0; i<(8*KByte/buff_size); i++) { //payload transfer in and append to file // if ( i % 256 == 0 ) debug("payload in #%d", i);