Snap for 4810559 from dd5e0e81c78b8223f095fae4cd50f3dced38d6b3 to pi-release

Change-Id: I8aff6db8365af191a6509282face2ee4697daeed
diff --git a/current.txt b/current.txt
index 1a963bc..f30a508 100644
--- a/current.txt
+++ b/current.txt
@@ -8,4 +8,4 @@
 822b5ce551c0cebb9f5a454e164638ec18f0613e248c6cd042aed5deb37fdcbf hardware.google.media.c2@1.0::IConfigurable
 de8c507e59f9563c880ecea1a04d036e281b83109371543afd5421688bfda301 hardware.google.media.c2@1.0::IInputSurface
 843fb9aab0dd6b331ce4fcede131531b23242518749cf87dd5a0ad1feab9070d hardware.google.media.c2@1.0::IInputSurfaceConnection
-71c8b96a8f82b076a4aac88b65ecb49ac257c80522f38b7645336832d183968a hardware.google.pixelstats@1.0::IPixelStats
+fe0f8bf91c3ce690567ec417a707c0e707806cf54423ae7b7f52275f293c3c4c hardware.google.pixelstats@1.0::IPixelStats
diff --git a/pixelstats/.clang-format b/pixelstats/.clang-format
new file mode 100644
index 0000000..ae4a451
--- /dev/null
+++ b/pixelstats/.clang-format
@@ -0,0 +1,11 @@
+BasedOnStyle: Google
+AccessModifierOffset: -2
+AllowShortFunctionsOnASingleLine: Inline
+ColumnLimit: 100
+CommentPragmas: NOLINT:.*
+DerivePointerAlignment: false
+IndentWidth: 4
+PointerAlignment: Left
+TabWidth: 4
+UseTab: Never
+PenaltyExcessCharacter: 32
diff --git a/pixelstats/1.0/IPixelStats.hal b/pixelstats/1.0/IPixelStats.hal
index 2cc89e2..890a552 100644
--- a/pixelstats/1.0/IPixelStats.hal
+++ b/pixelstats/1.0/IPixelStats.hal
@@ -176,4 +176,10 @@
      * @param count The number of slow IO operations of this type over 24hrs.
      */
     reportSlowIo(IoOperation operation, int32_t count);
+
+    /**
+     * Report a shutdown event caused by low battery.
+     * @param voltageMicroV last recorded battery voltage prior to shutdown.
+     */
+    reportBatteryCausedShutdown(int32_t voltageMicroV);
 };
diff --git a/pixelstats/1.0/default/PixelStats.cpp b/pixelstats/1.0/default/PixelStats.cpp
index 91f919c..6ce90f7 100644
--- a/pixelstats/1.0/default/PixelStats.cpp
+++ b/pixelstats/1.0/default/PixelStats.cpp
@@ -124,12 +124,10 @@
     if (rateLimit(android::metricslogger::ACTION_HARDWARE_FAILED, 15))
         return Void();
 
-    ComplexEventLogger logger(ACTION_HARDWARE_FAILED);
-    logger.AddTaggedData(LOGBUILDER_TYPE, TYPE_ACTION);
-    logger.AddTaggedData(FIELD_HARDWARE_TYPE, toMetricsLoggerHardwareType(hardwareType));
-    logger.AddTaggedData(FIELD_HARDWARE_LOCATION, hardwareLocation);
-    logger.AddTaggedData(FIELD_HARDWARE_FAILURE_CODE, toMetricsLoggerHardwareFailure(errorCode));
-    logger.Record();
+    logIntAction(ACTION_HARDWARE_FAILED,
+                 FIELD_HARDWARE_TYPE, toMetricsLoggerHardwareType(hardwareType),
+                 FIELD_HARDWARE_LOCATION, hardwareLocation,
+                 FIELD_HARDWARE_FAILURE_CODE, toMetricsLoggerHardwareFailure(errorCode));
     return Void();
 }
 
@@ -182,15 +180,22 @@
     // Ratelimit to max 2 per 24hrs
     if (rateLimit(android::metricslogger::ACTION_BATTERY_HEALTH, 2))
         return Void();
-    ComplexEventLogger logger(ACTION_BATTERY_HEALTH);
-    logger.AddTaggedData(LOGBUILDER_TYPE, TYPE_ACTION);
-    logger.AddTaggedData(FIELD_BATTERY_HEALTH_SNAPSHOT_TYPE, (int32_t)args.type);
-    logger.AddTaggedData(FIELD_BATTERY_TEMPERATURE_DECI_C, args.temperatureDeciC);
-    logger.AddTaggedData(FIELD_BATTERY_VOLTAGE_UV, args.voltageMicroV);
-    logger.AddTaggedData(FIELD_BATTERY_CURRENT_UA, args.currentMicroA);
-    logger.AddTaggedData(FIELD_BATTERY_OPEN_CIRCUIT_VOLTAGE_UV, args.openCircuitVoltageMicroV);
-    logger.AddTaggedData(FIELD_BATTERY_RESISTANCE_UOHMS, args.resistanceMicroOhm);
-    logger.AddTaggedData(FIELD_END_BATTERY_PERCENT, args.levelPercent);
+    logIntAction(ACTION_BATTERY_HEALTH,
+                 FIELD_BATTERY_HEALTH_SNAPSHOT_TYPE, (int32_t)args.type,
+                 FIELD_BATTERY_TEMPERATURE_DECI_C, args.temperatureDeciC,
+                 FIELD_BATTERY_VOLTAGE_UV, args.voltageMicroV,
+                 FIELD_BATTERY_CURRENT_UA, args.currentMicroA,
+                 FIELD_BATTERY_OPEN_CIRCUIT_VOLTAGE_UV, args.openCircuitVoltageMicroV,
+                 FIELD_BATTERY_RESISTANCE_UOHMS, args.resistanceMicroOhm,
+                 FIELD_END_BATTERY_PERCENT, args.levelPercent);
+    return Void();
+}
+
+Return<void> PixelStats::reportBatteryCausedShutdown(int32_t voltageMicroV) {
+    // Ratelimit to max 5 per 24hrs
+    if (rateLimit(android::metricslogger::ACTION_BATTERY_CAUSED_SHUTDOWN, 5))
+        return Void();
+    logIntAction(ACTION_BATTERY_CAUSED_SHUTDOWN, FIELD_BATTERY_VOLTAGE_UV, voltageMicroV);
     return Void();
 }
 
diff --git a/pixelstats/1.0/default/PixelStats.h b/pixelstats/1.0/default/PixelStats.h
index 7f81b17..5a4e625 100644
--- a/pixelstats/1.0/default/PixelStats.h
+++ b/pixelstats/1.0/default/PixelStats.h
@@ -55,6 +55,7 @@
     Return<void> reportChargeCycles(const hidl_string& buckets) override;
     Return<void> reportBatteryHealthSnapshot(const BatteryHealthSnapshotArgs& args) override;
     Return<void> reportSlowIo(IoOperation operation, int32_t count) override;
+    Return<void> reportBatteryCausedShutdown(int32_t voltageMicroV) override;
 
   private:
     // At most 150 events per day by default.