goto cleanup;
}
res = get_first_reply(); // This first one doesn't have the usual magic bytes at the beginning, and is 96 bytes long - much longer than the usual 12-byte replies.
+ if (res < 0) {
+ LOG("get_first_reply() failed");
+ goto cleanup;
+ }
+
res = get_reply(); // I'm not sure why we do this twice here, but maybe it'll make sense later.
+ if (res < 0) {
+ LOG("First get_reply() failed");
+ goto cleanup;
+ }
seq++;
// Split addr declaration and assignment in order to compile as C++,
unsigned char page[0x4000];
int read;
do {
- read = fread(page, 1, 0x4000, fw);
+ read = (int)fread(page, 1, 0x4000, fw);
if (read <= 0) {
break;
}
//LOG("");
cmd.seq = fn_le32(seq);
- cmd.bytes = fn_le32(read);
+ cmd.bytes = fn_le32((unsigned int)read);
cmd.cmd = fn_le32(0x03);
cmd.write_addr = fn_le32(addr);
LOG("About to send: ");
bytes_sent += to_send;
}
res = get_reply();
+ if (res < 0) {
+ LOG("get_reply failed");
+ goto cleanup;
+ }
addr += (uint32_t)read;
seq++;
// Now the device reenumerates.
cleanup:
+ libusb_release_interface(dev, KINECT_AUDIO_INTERFACE);
libusb_close(dev);
fail_libusb_open:
libusb_exit(NULL);