# HG changeset patch # User Nathan Keynes # Date 1305067531 -36000 # Node ID 43eef98ff2656e9af116146d6f2bf1bf80f487c8 # Parent d644413208a3457e02b75233fa4ed87f8db4247a Fix returned maple packet length for VMU block reads and get-mem-info Fix returned block-id in block reads to match the input block-id. --- a/src/maple/maple.c Tue May 10 20:31:14 2011 +1000 +++ b/src/maple/maple.c Wed May 11 08:45:31 2011 +1000 @@ -176,7 +176,7 @@ *((uint32_t *)return_buf) = -1; } else { int status, func; - unsigned int pt, phase, block; + unsigned int pt, phase, block, blkid; out_length = 0; switch( cmd ) { case MAPLE_CMD_INFO: @@ -241,6 +241,7 @@ status = MAPLE_ERR_CMD_UNKNOWN; else status = dev->get_memory_info(dev,func, pt, return_buf+8, &out_length); if( status == 0 ) { + out_length++; status = MAPLE_RESP_DATA; PUTWORD(4,func); } @@ -250,6 +251,7 @@ pt = GETBYTE(16); phase = GETBYTE(17); block = (GETBYTE(18)<<8) | GETBYTE(19); + blkid = GETWORD(16); if( dev->read_block == NULL ) status = MAPLE_ERR_CMD_UNKNOWN; else status = dev->read_block(dev, func, pt, block, phase, @@ -257,8 +259,9 @@ &out_length ); if( status == 0 ) { status = MAPLE_RESP_DATA; + out_length += 2; PUTWORD(4,func); - PUTWORD(8,block); + PUTWORD(8,blkid); } break; case MAPLE_CMD_WRITE_BLOCK: --- a/src/maple/vmu.c Tue May 10 20:31:14 2011 +1000 +++ b/src/maple/vmu.c Wed May 11 08:45:31 2011 +1000 @@ -209,7 +209,9 @@ break; case MAPLE_FUNC_MEMORY: if( vmu->vol != NULL ) { - vmu_volume_read_block( vmu->vol, pt, block, outbuf ); + if( vmu_volume_read_block( vmu->vol, pt, block, outbuf ) ) { + *buflen = VMU_BLOCK_SIZE/4; + } return 0; } // Else fallthrough for now