aidl: usb: Support enableUsbData()
authorTim Zimmermann <tim@linux4.de>
Thu, 25 Aug 2022 09:47:40 +0000 (11:47 +0200)
committerTim Zimmermann <tim@linux4.de>
Fri, 14 Oct 2022 15:31:47 +0000 (17:31 +0200)
Change-Id: I369731be320b708e63c92bae08f563607d6a8512

aidl/usb/Usb.cpp
aidl/usb/Usb.h
aidl/usb/android.hardware.usb-service.samsung.rc

index 7e738c477f3e9fe63bbe4570f9209cf7ce008baa..71d792e0abd62a37d797adc46a665dea01549012 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -58,11 +59,17 @@ void queryVersionHelper(android::hardware::usb::Usb *usb,
 
 ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable, int64_t in_transactionId) {
     std::vector<PortStatus> currentPortStatus;
+    bool result = true;
 
     pthread_mutex_lock(&mLock);
+    if (!WriteStringToFile(in_enable ? "1" : "0", USB_DATA_PATH)) {
+        ALOGE("Not able to turn %s usb connection notification", in_enable ? "on" : "off");
+        result = false;
+    }
+
     if (mCallback != NULL) {
         ScopedAStatus ret = mCallback->notifyEnableUsbDataStatus(
-            in_portName, true, in_enable ? Status::SUCCESS : Status::ERROR, in_transactionId);
+            in_portName, true, result ? Status::SUCCESS : Status::ERROR, in_transactionId);
         if (!ret.isOk())
             ALOGE("notifyEnableUsbDataStatus error %s", ret.getDescription().c_str());
     } else {
index d507af6f5322b9315f08e8f1bc7f314f93d459dc..46be609db99e24226a57077840b9903b27566fab 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,6 +29,7 @@
 // Having a margin of ~3 secs for the directory and other related bookeeping
 // structures created and uvent fired.
 #define PORT_TYPE_TIMEOUT 8
+#define USB_DATA_PATH "/sys/devices/virtual/usb_notify/usb_control/usb_data_enabled"
 
 namespace aidl {
 namespace android {
index ee5c4c0a88c4acc5f254cf613251d1c53979efe8..62360c82253d44ef71f506ff643213ad4d24d08a 100644 (file)
@@ -2,3 +2,14 @@ service vendor.usb_default /vendor/bin/hw/android.hardware.usb-service.samsung
     class hal
     user system
     group system
+
+on post-fs
+    chown root system /sys/class/typec/port0/power_role
+    chown root system /sys/class/typec/port0/data_role
+    chown root system /sys/class/typec/port0/port_type
+    chown root system /sys/devices/virtual/sec/ccic/water
+    chown root system /sys/devices/virtual/usb_notify/usb_control/usb_data_enabled
+    chmod 664 /sys/class/typec/port0/power_role
+    chmod 664 /sys/class/typec/port0/data_role
+    chmod 664 /sys/class/typec/port0/port_type
+    chmod 664 /sys/devices/virtual/usb_notify/usb_control/usb_data_enabled