aidl: usb: Fix support for contaminant presence detection
authorTim Zimmermann <tim@linux4.de>
Fri, 4 Nov 2022 15:54:23 +0000 (16:54 +0100)
committerBruno Martins <bgcngm@gmail.com>
Fri, 4 Nov 2022 16:15:17 +0000 (18:15 +0200)
* Samsung does not let userspace disable that, so better always show the
  notification instead of leaving users wondering about why USB does no
  longer work

Change-Id: Iab045c8b15a726644ce51ce2877030d4b71cbcf7

aidl/usb/Usb.cpp
aidl/usb/Usb.h

index d39d7ca56f9da0acec2c22c834e71e8d791ba9ad..bf3b55db351d5566a54a40fe0ce5ba14900ef0fb 100644 (file)
@@ -137,8 +137,7 @@ ScopedAStatus Usb::resetUsbPort(const string& in_portName, int64_t in_transactio
     return ScopedAStatus::ok();
 }
 
-Status queryMoistureDetectionStatus(android::hardware::usb::Usb *usb,
-                                    std::vector<PortStatus> *currentPortStatus) {
+Status queryMoistureDetectionStatus(std::vector<PortStatus> *currentPortStatus) {
     string enabled, status, path, DetectedPath;
 
     for (int i = 0; i < currentPortStatus->size(); i++) {
@@ -151,7 +150,7 @@ Status queryMoistureDetectionStatus(android::hardware::usb::Usb *usb,
         (*currentPortStatus)[i].supportsEnableContaminantPresenceDetection = true;
         (*currentPortStatus)[i].supportsEnableContaminantPresenceProtection = false;
 
-        if (usb->mMoistureDetectionEnabled) {
+        if (GetProperty(DISABLE_CONTAMINANT_DETECTION, "") != "true") {
             if (readFile(CONTAMINANT_DETECTION_PATH, &status)) {
                 ALOGE("Failed to open %s", CONTAMINANT_DETECTION_PATH);
                 return Status::ERROR;
@@ -296,8 +295,7 @@ Usb::Usb()
     : mLock(PTHREAD_MUTEX_INITIALIZER),
       mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER),
       mPartnerLock(PTHREAD_MUTEX_INITIALIZER),
-      mPartnerUp(false),
-      mMoistureDetectionEnabled(false)
+      mPartnerUp(false)
 {
     pthread_condattr_t attr;
     if (pthread_condattr_init(&attr)) {
@@ -578,7 +576,7 @@ void queryVersionHelper(android::hardware::usb::Usb *usb,
     Status status;
     pthread_mutex_lock(&usb->mLock);
     status = getPortStatusHelper(currentPortStatus);
-    queryMoistureDetectionStatus(usb, currentPortStatus);
+    queryMoistureDetectionStatus(currentPortStatus);
     if (usb->mCallback != NULL) {
         ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus,
             status);
@@ -609,17 +607,14 @@ ScopedAStatus Usb::queryPortStatus(int64_t in_transactionId) {
 }
 
 ScopedAStatus Usb::enableContaminantPresenceDetection(const string& in_portName,
-        bool in_enable, int64_t in_transactionId) {
+        bool /* in_enable */, int64_t in_transactionId) {
     std::vector<PortStatus> currentPortStatus;
     std::string disable = GetProperty(DISABLE_CONTAMINANT_DETECTION, "");
 
-    if (disable != "true")
-        mMoistureDetectionEnabled = in_enable;
-
     pthread_mutex_lock(&mLock);
     if (mCallback != NULL) {
         ScopedAStatus ret = mCallback->notifyContaminantEnabledStatus(
-            in_portName, false, Status::SUCCESS, in_transactionId);
+            in_portName, true, Status::SUCCESS, in_transactionId);
         if (!ret.isOk())
             ALOGE("enableContaminantPresenceDetection  error %s", ret.getDescription().c_str());
     } else {
index a0794f310c4bb88758ebc344494317f4b6f85242..9cfb22d0729d048ce275b0c2352bde0aef055bc4 100644 (file)
@@ -76,7 +76,6 @@ struct Usb : public BnUsb {
     pthread_mutex_t mPartnerLock;
     // Variable to signal partner coming back online after type switch
     bool mPartnerUp;
-    bool mMoistureDetectionEnabled;
   private:
     pthread_t mPoll;
 };