Optimize 3DS: Force device ID reading on first load

This commit is contained in:
Lorenzooone 2025-11-09 12:39:36 +01:00
parent 4ce35770ac
commit 76466d4e6c
2 changed files with 5 additions and 5 deletions

View File

@ -691,7 +691,7 @@ static int restart_captures_cc_reads(CaptureData* capture_data, CypressOptimize3
stored_video_data_type = wanted_input_video_data_type;
uint64_t device_id_dummy;
std::string read_key_dummy;
retval = capture_start(handlers, usb_device_desc, true, stored_video_data_type == OPTIMIZE_RGB888_FORMAT, device_id_dummy, read_key_dummy);
retval = capture_start(handlers, usb_device_desc, false, stored_video_data_type == OPTIMIZE_RGB888_FORMAT, device_id_dummy, read_key_dummy);
clock_last_capture_start = std::chrono::high_resolution_clock::now();
capture_data->status.device.video_data_type = stored_video_data_type;
if(retval < 0)

View File

@ -498,7 +498,7 @@ static int start_command_send(cy_device_device_handlers* handlers, const cyop_de
return ret;
}
static int read_device_id_serial(cy_device_device_handlers* handlers, const cyop_device_usb_device* device, uint32_t &value32, uint64_t &device_id) {
static int read_device_id_serial(cy_device_device_handlers* handlers, const cyop_device_usb_device* device, uint32_t &value32, uint64_t &device_id, bool is_first_load) {
const uint8_t first_buffer[] = { 0x64, 0x60, 0x01, 0xFF, 0xFF, 0x60, 0x02, 0x00, 0xFF, 0x00, 0xFF };
int transferred = 0;
int ret = cypress_ctrl_bulk_out_transfer(handlers, get_cy_usb_info(device), first_buffer, sizeof(first_buffer), &transferred);
@ -516,7 +516,7 @@ static int read_device_id_serial(cy_device_device_handlers* handlers, const cyop
ret = read_cached_device_id(handlers, device, device_id, is_full_0s);
if(ret < 0)
return ret;
if(is_full_0s)
if(is_full_0s || is_first_load)
ret = read_direct_serial_device_id(handlers, device, device_id);
if(ret < 0)
return ret;
@ -625,7 +625,7 @@ int capture_start(cy_device_device_handlers* handlers, const cyop_device_usb_dev
cypress_pipe_reset_ctrl_bulk_in(handlers, get_cy_usb_info(device));
cypress_pipe_reset_ctrl_bulk_out(handlers, get_cy_usb_info(device));
}
ret = read_device_id_serial(handlers, device, value32, device_id);
ret = read_device_id_serial(handlers, device, value32, device_id, true);
if(ret < 0)
return ret;
}
@ -641,7 +641,7 @@ int capture_start(cy_device_device_handlers* handlers, const cyop_device_usb_dev
}
cypress_pipe_reset_ctrl_bulk_in(handlers, get_cy_usb_info(device));
cypress_pipe_reset_ctrl_bulk_out(handlers, get_cy_usb_info(device));
ret = read_device_id_serial(handlers, device, value32, device_id);
ret = read_device_id_serial(handlers, device, value32, device_id, is_first_load);
if(ret < 0)
return ret;