Update USB Gadget HAL to V1.1 implementation

Bug: 138702846
Test: build pass, function works
Change-Id: I80c295a73aa982b09c81b7cbc3f3a1003c273101
diff --git a/manifest.xml b/manifest.xml
index 1abb805..2752608 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -293,24 +293,6 @@
         </interface>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.usb</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IUsb</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.usb.gadget</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IUsbGadget</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
         <name>android.hardware.weaver</name>
         <transport>hwbinder</transport>
         <version>1.0</version>
diff --git a/usb/Android.bp b/usb/Android.bp
index aa58163..d5fda66 100644
--- a/usb/Android.bp
+++ b/usb/Android.bp
@@ -16,6 +16,10 @@
     name: "android.hardware.usb@1.1-service.wahoo",
     relative_install_path: "hw",
     init_rc: ["android.hardware.usb@1.1-service.wahoo.rc"],
+    vintf_fragments: [
+        "android.hardware.usb@1.1-service.wahoo.xml",
+        "android.hardware.usb.gadget@1.1-service.wahoo.xml",
+    ],
     srcs: ["service.cpp", "Usb.cpp", "UsbGadget.cpp"],
     shared_libs: [
         "libbase",
@@ -26,6 +30,7 @@
         "android.hardware.usb@1.0",
         "android.hardware.usb@1.1",
         "android.hardware.usb.gadget@1.0",
+        "android.hardware.usb.gadget@1.1",
         "libcutils",
     ],
     proprietary: true,
diff --git a/usb/UsbGadget.cpp b/usb/UsbGadget.cpp
index 2263da1..e407c49 100644
--- a/usb/UsbGadget.cpp
+++ b/usb/UsbGadget.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.usb.gadget@1.0-service.wahoo"
+#define LOG_TAG "android.hardware.usb.gadget@1.1-service.wahoo"
 
 #include "UsbGadget.h"
 #include <dirent.h>
@@ -57,7 +57,7 @@
 namespace hardware {
 namespace usb {
 namespace gadget {
-namespace V1_0 {
+namespace V1_1 {
 namespace implementation {
 
 volatile bool gadgetPullup;
@@ -258,6 +258,15 @@
   return Status::SUCCESS;
 }
 
+Return<Status> UsbGadget::reset() {
+    if (!WriteStringToFile("none", PULLUP_PATH)) {
+        ALOGI("Gadget cannot be pulled down");
+        return Status::ERROR;
+    }
+
+    return Status::SUCCESS;
+}
+
 static int linkFunction(const char *function, int index) {
   char functionPath[MAX_FILE_PATH_LENGTH];
   char link[MAX_FILE_PATH_LENGTH];
@@ -645,7 +654,7 @@
   return Void();
 }
 }  // namespace implementation
-}  // namespace V1_0
+}  // namespace V1_1
 }  // namespace gadget
 }  // namespace usb
 }  // namespace hardware
diff --git a/usb/UsbGadget.h b/usb/UsbGadget.h
index 9a2c4dd..3d30233 100644
--- a/usb/UsbGadget.h
+++ b/usb/UsbGadget.h
@@ -14,29 +14,28 @@
  * limitations under the License.
  */
 
-#ifndef ANDROID_HARDWARE_USB_GADGET_V1_0_USBGADGET_H
-#define ANDROID_HARDWARE_USB_GADGET_V1_0_USBGADGET_H
+#pragma once
 
 #include <android-base/file.h>
 #include <android-base/properties.h>
 #include <android-base/unique_fd.h>
-#include <android/hardware/usb/gadget/1.0/IUsbGadget.h>
+#include <android/hardware/usb/gadget/1.1/IUsbGadget.h>
 #include <hidl/MQDescriptor.h>
 #include <hidl/Status.h>
-#include <string>
 #include <sys/epoll.h>
 #include <sys/eventfd.h>
-#include <thread>
 #include <utils/Log.h>
 #include <chrono>
 #include <condition_variable>
 #include <mutex>
+#include <string>
+#include <thread>
 
 namespace android {
 namespace hardware {
 namespace usb {
 namespace gadget {
-namespace V1_0 {
+namespace V1_1 {
 namespace implementation {
 
 using ::android::sp;
@@ -50,6 +49,9 @@
 using ::android::hardware::hidl_vec;
 using ::android::hardware::Return;
 using ::android::hardware::Void;
+using ::android::hardware::usb::gadget::V1_0::GadgetFunction;
+using ::android::hardware::usb::gadget::V1_0::Status;
+using ::android::hardware::usb::gadget::V1_1::IUsbGadget;
 using ::std::lock_guard;
 using ::std::move;
 using ::std::mutex;
@@ -78,24 +80,22 @@
   bool mCurrentUsbFunctionsApplied;
 
   Return<void> setCurrentUsbFunctions(uint64_t functions,
-                                      const sp<IUsbGadgetCallback>& callback,
+                                      const sp<V1_0::IUsbGadgetCallback> &callback,
                                       uint64_t timeout) override;
 
-  Return<void> getCurrentUsbFunctions(
-      const sp<IUsbGadgetCallback>& callback) override;
+  Return<void> getCurrentUsbFunctions(const sp<V1_0::IUsbGadgetCallback> &callback) override;
 
-  private:
+  Return<Status> reset() override;
+
+private:
   Status tearDownGadget();
-  Status setupFunctions(uint64_t functions,
-                        const sp<IUsbGadgetCallback>& callback,
+  Status setupFunctions(uint64_t functions, const sp<V1_0::IUsbGadgetCallback> &callback,
                         uint64_t timeout);
 };
 
 }  // namespace implementation
-}  // namespace V1_0
+}  // namespace V1_1
 }  // namespace gadget
 }  // namespace usb
 }  // namespace hardware
 }  // namespace android
-
-#endif  // ANDROID_HARDWARE_USB_V1_2_USBGADGET_H
diff --git a/usb/android.hardware.usb.gadget@1.1-service.wahoo.xml b/usb/android.hardware.usb.gadget@1.1-service.wahoo.xml
new file mode 100644
index 0000000..a6f9a1f
--- /dev/null
+++ b/usb/android.hardware.usb.gadget@1.1-service.wahoo.xml
@@ -0,0 +1,11 @@
+<manifest version="1.0" type="device">
+    <hal format="hidl">
+        <name>android.hardware.usb.gadget</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IUsbGadget</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+</manifest>
diff --git a/usb/android.hardware.usb@1.1-service.wahoo.xml b/usb/android.hardware.usb@1.1-service.wahoo.xml
new file mode 100644
index 0000000..5ce2ff4
--- /dev/null
+++ b/usb/android.hardware.usb@1.1-service.wahoo.xml
@@ -0,0 +1,12 @@
+<manifest version="1.0" type="device">
+    <hal format="hidl">
+        <name>android.hardware.usb</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IUsb</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+</manifest>
+
diff --git a/usb/service.cpp b/usb/service.cpp
index e540608..9162c22 100644
--- a/usb/service.cpp
+++ b/usb/service.cpp
@@ -27,10 +27,10 @@
 using android::hardware::joinRpcThreadpool;
 
 // Generated HIDL files
+using android::hardware::usb::gadget::V1_1::IUsbGadget;
+using android::hardware::usb::gadget::V1_1::implementation::UsbGadget;
 using android::hardware::usb::V1_1::IUsb;
-using android::hardware::usb::gadget::V1_0::IUsbGadget;
 using android::hardware::usb::V1_1::implementation::Usb;
-using android::hardware::usb::gadget::V1_0::implementation::UsbGadget;
 
 using android::OK;
 using android::status_t;