From a2a3537ea24d3cdcc1b210b45695d6eed33ee433 Mon Sep 17 00:00:00 2001
From: Nicolas Haunold
Date: Thu, 13 May 2010 12:18:17 +0200
Subject: Added irecv_reset()

---
 include/libirecovery.h |  2 ++
 src/irecovery.c        |  3 +++
 src/libirecovery.c     | 10 ++++++++++
 3 files changed, 15 insertions(+)

diff --git a/include/libirecovery.h b/include/libirecovery.h
index c94a3e6..342e99b 100644
--- a/include/libirecovery.h
+++ b/include/libirecovery.h
@@ -39,5 +39,7 @@ typedef struct {
 
 int irecv_init(irecv_device** device);
 int irecv_open(irecv_device* device);
+int irecv_reset(irecv_device* device);
 int irecv_close(irecv_device* device);
 int irecv_exit(irecv_device* device);
+
diff --git a/src/irecovery.c b/src/irecovery.c
index dfcf422..90f975b 100644
--- a/src/irecovery.c
+++ b/src/irecovery.c
@@ -49,6 +49,9 @@ int main(int argc, char** argv) {
 		break;
 	}
 
+	printf("Sending USB reset...\n");
+	irecv_reset(device);
+
 	irecv_exit(device);
 	return 0;
 }
diff --git a/src/libirecovery.c b/src/libirecovery.c
index dfc0aea..cdb0c53 100644
--- a/src/libirecovery.c
+++ b/src/libirecovery.c
@@ -78,6 +78,16 @@ int irecv_open(irecv_device* device) {
 	return IRECV_ERROR_NO_DEVICE;
 }
 
+int irecv_reset(irecv_device* device) {
+	if (device != NULL) {
+		if (device->handle != NULL) {
+			libusb_reset_device(device->handle);
+		}
+	}
+
+	return IRECV_SUCCESS;
+}
+
 int irecv_close(irecv_device* device) {
 	if (device != NULL) {
 		if (device->handle != NULL) {
-- 
cgit v1.1-32-gdbae