summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Luo <royluo@google.com>2023-11-06 23:12:46 +0000
committerRoy Luo <royluo@google.com>2023-11-09 22:55:07 +0000
commitf23c69b2570d83f0aeba6bc614c1a6402989028e (patch)
tree0a1aefb2115cbffa364c26090c32ee48e5df9c0c
parentd7be6ca6d38ed22ffc3a88473284ec82da285a78 (diff)
downloadgs101-f23c69b2570d83f0aeba6bc614c1a6402989028e.tar.gz
usb: update incompatible charger warning reason
Report COMPLIANCE_WARNING_INPUT_POWER_LIMITED instead of COMPLIANCE_WARNING_OTHER to flag incompatible chargers. The underlying logic that generates the warning remains the same, what's changed is the enum that's being used. The purpose of the change is to have a warning type that better represents what actually happens and free up COMPLIANCE_WARNING_OTHER that was intended to act as a fallback reason code. The flag enable_input_power_limited_warning controls whether to switch to the new enum, while the flag enable_usb_data_compliance_warning controls the new enums that are added as FlaggedApi in the framework. Both flags need to be on to enable the change. Bug: 308700954 Test: manual tests with local flag override Change-Id: I6595706d1b83d533fc2d3e29086773270e045ede
-rw-r--r--usb/usb/Android.bp10
-rw-r--r--usb/usb/Usb.cpp21
2 files changed, 27 insertions, 4 deletions
diff --git a/usb/usb/Android.bp b/usb/usb/Android.bp
index 1f81899c..918d1728 100644
--- a/usb/usb/Android.bp
+++ b/usb/usb/Android.bp
@@ -44,20 +44,28 @@ cc_binary {
"android.hardware.thermal@2.0",
"android.hardware.thermal-V1-ndk",
"android.hardware.usb.gadget@1.0",
- "android.hardware.usb-V2-ndk",
+ "android.hardware.usb-V3-ndk",
"libcutils",
"android.frameworks.stats-V2-ndk",
"pixelatoms-cpp",
"libbinder_ndk",
"libprotobuf-cpp-lite",
+ "server_configurable_flags",
],
static_libs: [
"libpixelusb",
"libpixelstats",
"libthermalutils",
+ "android.hardware.usb.flags-aconfig-c-lib",
],
export_shared_lib_headers: [
"android.frameworks.stats-V2-ndk",
"pixelatoms-cpp",
],
}
+
+cc_aconfig_library {
+ name: "android.hardware.usb.flags-aconfig-c-lib",
+ vendor: true,
+ aconfig_declarations: "android.hardware.usb.flags-aconfig",
+}
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp
index 8588935c..30522e4d 100644
--- a/usb/usb/Usb.cpp
+++ b/usb/usb/Usb.cpp
@@ -39,10 +39,13 @@
#include "Usb.h"
#include <aidl/android/frameworks/stats/IStats.h>
+#include <android_hardware_usb_flags.h>
#include <pixelusb/CommonUtils.h>
#include <pixelusb/UsbGadgetCommon.h>
#include <pixelstats/StatsHelper.h>
+namespace usb_flags = android::hardware::usb::flags;
+
using aidl::android::frameworks::stats::IStats;
using android::base::GetProperty;
using android::base::Tokenize;
@@ -68,6 +71,7 @@ constexpr char kComplianceWarningBC12[] = "bc12";
constexpr char kComplianceWarningDebugAccessory[] = "debug-accessory";
constexpr char kComplianceWarningMissingRp[] = "missing_rp";
constexpr char kComplianceWarningOther[] = "other";
+constexpr char kComplianceWarningInputPowerLimited[] = "input_power_limited";
constexpr char kMax77759TcpcDevName[] = "i2c-max77759tcpc";
constexpr unsigned int kMax77759TcpcClientId = 0x25;
constexpr char kContaminantDetectionPath[] = "contaminant_detection";
@@ -373,9 +377,20 @@ Status queryNonCompliantChargerStatus(std::vector<PortStatus> *currentPortStatus
continue;
}
if (!strncmp(reason.c_str(), kComplianceWarningOther,
- strlen(kComplianceWarningOther))) {
- (*currentPortStatus)[i].complianceWarnings.push_back(ComplianceWarning::OTHER);
- continue;
+ strlen(kComplianceWarningOther)) ||
+ !strncmp(reason.c_str(), kComplianceWarningInputPowerLimited,
+ strlen(kComplianceWarningInputPowerLimited))) {
+ if (usb_flags::enable_usb_data_compliance_warning() &&
+ usb_flags::enable_input_power_limited_warning()) {
+ ALOGI("Report through INPUT_POWER_LIMITED warning");
+ (*currentPortStatus)[i].complianceWarnings.push_back(
+ ComplianceWarning::INPUT_POWER_LIMITED);
+ continue;
+ } else {
+ (*currentPortStatus)[i].complianceWarnings.push_back(
+ ComplianceWarning::OTHER);
+ continue;
+ }
}
}
if ((*currentPortStatus)[i].complianceWarnings.size() > 0 &&