aidl: usb: Support enableUsbData()

Change-Id: I369731be320b708e63c92bae08f563607d6a8512
diff --git a/aidl/usb/Usb.cpp b/aidl/usb/Usb.cpp
index 7e738c4..71d792e 100644
--- a/aidl/usb/Usb.cpp
+++ b/aidl/usb/Usb.cpp
@@ -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 @@
 
 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 {
diff --git a/aidl/usb/Usb.h b/aidl/usb/Usb.h
index d507af6..46be609 100644
--- a/aidl/usb/Usb.h
+++ b/aidl/usb/Usb.h
@@ -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 {
diff --git a/aidl/usb/android.hardware.usb-service.samsung.rc b/aidl/usb/android.hardware.usb-service.samsung.rc
index ee5c4c0..62360c8 100644
--- a/aidl/usb/android.hardware.usb-service.samsung.rc
+++ b/aidl/usb/android.hardware.usb-service.samsung.rc
@@ -2,3 +2,14 @@
     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