Merge tag 'android-13.0.0_r32' into int/13/fp3

Android 13.0.0 release 32

* tag 'android-13.0.0_r32':
  trusty/storage: Add property indicating when fs is ready
  Resolve ro.debuggable at build time
  init: Support reboot reason with thermal warmreset
  Add AID for PRNG seeder daemon.
  charger: fix secondary display not turning off after first display was off
  init: Add option to listen on sockets before starting service.
  Create misc_ce and misc_de mirror storage

Change-Id: Ibcc45dfc319934b83b8c3207e1928693b93db274
diff --git a/healthd/Android.bp b/healthd/Android.bp
index f180006..d046fd4 100644
--- a/healthd/Android.bp
+++ b/healthd/Android.bp
@@ -318,7 +318,706 @@
     require_root: true,
 }
 
-// /system/etc/res/images/charger/battery_fail.png
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0001.png",
+    src: "images/battery-charging0001.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0001.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0002.png",
+    src: "images/battery-charging0002.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0002.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0003.png",
+    src: "images/battery-charging0003.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0003.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0004.png",
+    src: "images/battery-charging0004.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0004.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0005.png",
+    src: "images/battery-charging0005.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0005.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0006.png",
+    src: "images/battery-charging0006.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0006.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0007.png",
+    src: "images/battery-charging0007.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0007.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0008.png",
+    src: "images/battery-charging0008.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0008.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0009.png",
+    src: "images/battery-charging0009.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0009.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0010.png",
+    src: "images/battery-charging0010.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0010.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0011.png",
+    src: "images/battery-charging0011.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0011.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0012.png",
+    src: "images/battery-charging0012.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0012.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0013.png",
+    src: "images/battery-charging0013.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0013.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0014.png",
+    src: "images/battery-charging0014.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0014.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0015.png",
+    src: "images/battery-charging0015.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0015.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0016.png",
+    src: "images/battery-charging0016.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0016.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0017.png",
+    src: "images/battery-charging0017.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0017.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0018.png",
+    src: "images/battery-charging0018.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0018.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0019.png",
+    src: "images/battery-charging0019.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0019.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0020.png",
+    src: "images/battery-charging0020.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0020.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0021.png",
+    src: "images/battery-charging0021.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0021.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0022.png",
+    src: "images/battery-charging0022.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0022.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0023.png",
+    src: "images/battery-charging0023.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0023.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0024.png",
+    src: "images/battery-charging0024.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0024.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0025.png",
+    src: "images/battery-charging0025.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0025.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0026.png",
+    src: "images/battery-charging0026.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0026.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0027.png",
+    src: "images/battery-charging0027.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0027.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0028.png",
+    src: "images/battery-charging0028.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0028.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0029.png",
+    src: "images/battery-charging0029.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0029.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0030.png",
+    src: "images/battery-charging0030.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0030.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0031.png",
+    src: "images/battery-charging0031.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0031.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0032.png",
+    src: "images/battery-charging0032.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0032.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0033.png",
+    src: "images/battery-charging0033.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0033.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0034.png",
+    src: "images/battery-charging0034.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0034.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0035.png",
+    src: "images/battery-charging0035.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0035.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0036.png",
+    src: "images/battery-charging0036.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0036.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0037.png",
+    src: "images/battery-charging0037.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0037.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0038.png",
+    src: "images/battery-charging0038.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0038.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0039.png",
+    src: "images/battery-charging0039.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0039.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0040.png",
+    src: "images/battery-charging0040.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0040.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0041.png",
+    src: "images/battery-charging0041.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0041.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0042.png",
+    src: "images/battery-charging0042.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0042.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0043.png",
+    src: "images/battery-charging0043.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0043.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0044.png",
+    src: "images/battery-charging0044.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0044.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0045.png",
+    src: "images/battery-charging0045.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0045.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0046.png",
+    src: "images/battery-charging0046.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0046.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0047.png",
+    src: "images/battery-charging0047.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0047.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0048.png",
+    src: "images/battery-charging0048.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0048.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0049.png",
+    src: "images/battery-charging0049.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0049.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0050.png",
+    src: "images/battery-charging0050.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0050.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0051.png",
+    src: "images/battery-charging0051.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0051.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0052.png",
+    src: "images/battery-charging0052.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0052.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0053.png",
+    src: "images/battery-charging0053.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0053.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0054.png",
+    src: "images/battery-charging0054.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0054.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0055.png",
+    src: "images/battery-charging0055.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0055.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0056.png",
+    src: "images/battery-charging0056.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0056.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0057.png",
+    src: "images/battery-charging0057.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0057.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0058.png",
+    src: "images/battery-charging0058.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0058.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0059.png",
+    src: "images/battery-charging0059.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0059.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0060.png",
+    src: "images/battery-charging0060.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0060.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0061.png",
+    src: "images/battery-charging0061.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0061.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0062.png",
+    src: "images/battery-charging0062.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0062.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0063.png",
+    src: "images/battery-charging0063.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0063.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0064.png",
+    src: "images/battery-charging0064.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0064.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0065.png",
+    src: "images/battery-charging0065.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0065.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0066.png",
+    src: "images/battery-charging0066.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0066.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0067.png",
+    src: "images/battery-charging0067.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0067.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0068.png",
+    src: "images/battery-charging0068.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0068.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0069.png",
+    src: "images/battery-charging0069.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0069.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0070.png",
+    src: "images/battery-charging0070.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0070.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0071.png",
+    src: "images/battery-charging0071.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0071.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0072.png",
+    src: "images/battery-charging0072.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0072.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0073.png",
+    src: "images/battery-charging0073.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0073.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0074.png",
+    src: "images/battery-charging0074.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0074.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0075.png",
+    src: "images/battery-charging0075.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0075.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0076.png",
+    src: "images/battery-charging0076.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0076.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0077.png",
+    src: "images/battery-charging0077.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0077.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0078.png",
+    src: "images/battery-charging0078.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0078.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0079.png",
+    src: "images/battery-charging0079.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0079.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0080.png",
+    src: "images/battery-charging0080.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0080.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0081.png",
+    src: "images/battery-charging0081.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0081.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0082.png",
+    src: "images/battery-charging0082.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0082.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0083.png",
+    src: "images/battery-charging0083.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0083.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0084.png",
+    src: "images/battery-charging0084.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0084.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0085.png",
+    src: "images/battery-charging0085.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0085.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0086.png",
+    src: "images/battery-charging0086.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0086.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0087.png",
+    src: "images/battery-charging0087.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0087.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0088.png",
+    src: "images/battery-charging0088.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0088.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0089.png",
+    src: "images/battery-charging0089.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0089.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0090.png",
+    src: "images/battery-charging0090.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0090.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0091.png",
+    src: "images/battery-charging0091.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0091.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0092.png",
+    src: "images/battery-charging0092.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0092.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0093.png",
+    src: "images/battery-charging0093.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0093.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0094.png",
+    src: "images/battery-charging0094.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0094.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0095.png",
+    src: "images/battery-charging0095.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0095.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0096.png",
+    src: "images/battery-charging0096.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0096.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0097.png",
+    src: "images/battery-charging0097.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0097.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0098.png",
+    src: "images/battery-charging0098.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0098.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0099.png",
+    src: "images/battery-charging0099.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0099.png",
+}
+
+prebuilt_etc {
+    name: "system_core_charger_res_images_battery-charging0100.png",
+    src: "images/battery-charging0100.png",
+    relative_install_path: "res/images/charger",
+    filename: "battery-charging0100.png",
+}
+
 prebuilt_etc {
     name: "system_core_charger_res_images_battery_fail.png",
     src: "images/battery_fail.png",
@@ -326,7 +1025,6 @@
     filename: "battery_fail.png",
 }
 
-// /system/etc/res/images/charger/battery_scale.png
 prebuilt_etc {
     name: "system_core_charger_res_images_battery_scale.png",
     src: "images/battery_scale.png",
@@ -337,6 +1035,106 @@
 phony {
     name: "charger_res_images",
     required: [
+        "system_core_charger_res_images_battery-charging0001.png",
+        "system_core_charger_res_images_battery-charging0002.png",
+        "system_core_charger_res_images_battery-charging0003.png",
+        "system_core_charger_res_images_battery-charging0004.png",
+        "system_core_charger_res_images_battery-charging0005.png",
+        "system_core_charger_res_images_battery-charging0006.png",
+        "system_core_charger_res_images_battery-charging0007.png",
+        "system_core_charger_res_images_battery-charging0008.png",
+        "system_core_charger_res_images_battery-charging0009.png",
+        "system_core_charger_res_images_battery-charging0010.png",
+        "system_core_charger_res_images_battery-charging0011.png",
+        "system_core_charger_res_images_battery-charging0012.png",
+        "system_core_charger_res_images_battery-charging0013.png",
+        "system_core_charger_res_images_battery-charging0014.png",
+        "system_core_charger_res_images_battery-charging0015.png",
+        "system_core_charger_res_images_battery-charging0016.png",
+        "system_core_charger_res_images_battery-charging0017.png",
+        "system_core_charger_res_images_battery-charging0018.png",
+        "system_core_charger_res_images_battery-charging0019.png",
+        "system_core_charger_res_images_battery-charging0020.png",
+        "system_core_charger_res_images_battery-charging0021.png",
+        "system_core_charger_res_images_battery-charging0022.png",
+        "system_core_charger_res_images_battery-charging0023.png",
+        "system_core_charger_res_images_battery-charging0024.png",
+        "system_core_charger_res_images_battery-charging0025.png",
+        "system_core_charger_res_images_battery-charging0026.png",
+        "system_core_charger_res_images_battery-charging0027.png",
+        "system_core_charger_res_images_battery-charging0028.png",
+        "system_core_charger_res_images_battery-charging0029.png",
+        "system_core_charger_res_images_battery-charging0030.png",
+        "system_core_charger_res_images_battery-charging0031.png",
+        "system_core_charger_res_images_battery-charging0032.png",
+        "system_core_charger_res_images_battery-charging0033.png",
+        "system_core_charger_res_images_battery-charging0034.png",
+        "system_core_charger_res_images_battery-charging0035.png",
+        "system_core_charger_res_images_battery-charging0036.png",
+        "system_core_charger_res_images_battery-charging0037.png",
+        "system_core_charger_res_images_battery-charging0038.png",
+        "system_core_charger_res_images_battery-charging0039.png",
+        "system_core_charger_res_images_battery-charging0040.png",
+        "system_core_charger_res_images_battery-charging0041.png",
+        "system_core_charger_res_images_battery-charging0042.png",
+        "system_core_charger_res_images_battery-charging0043.png",
+        "system_core_charger_res_images_battery-charging0044.png",
+        "system_core_charger_res_images_battery-charging0045.png",
+        "system_core_charger_res_images_battery-charging0046.png",
+        "system_core_charger_res_images_battery-charging0047.png",
+        "system_core_charger_res_images_battery-charging0048.png",
+        "system_core_charger_res_images_battery-charging0049.png",
+        "system_core_charger_res_images_battery-charging0050.png",
+        "system_core_charger_res_images_battery-charging0051.png",
+        "system_core_charger_res_images_battery-charging0052.png",
+        "system_core_charger_res_images_battery-charging0053.png",
+        "system_core_charger_res_images_battery-charging0054.png",
+        "system_core_charger_res_images_battery-charging0055.png",
+        "system_core_charger_res_images_battery-charging0056.png",
+        "system_core_charger_res_images_battery-charging0057.png",
+        "system_core_charger_res_images_battery-charging0058.png",
+        "system_core_charger_res_images_battery-charging0059.png",
+        "system_core_charger_res_images_battery-charging0060.png",
+        "system_core_charger_res_images_battery-charging0061.png",
+        "system_core_charger_res_images_battery-charging0062.png",
+        "system_core_charger_res_images_battery-charging0063.png",
+        "system_core_charger_res_images_battery-charging0064.png",
+        "system_core_charger_res_images_battery-charging0065.png",
+        "system_core_charger_res_images_battery-charging0066.png",
+        "system_core_charger_res_images_battery-charging0067.png",
+        "system_core_charger_res_images_battery-charging0068.png",
+        "system_core_charger_res_images_battery-charging0069.png",
+        "system_core_charger_res_images_battery-charging0070.png",
+        "system_core_charger_res_images_battery-charging0071.png",
+        "system_core_charger_res_images_battery-charging0072.png",
+        "system_core_charger_res_images_battery-charging0073.png",
+        "system_core_charger_res_images_battery-charging0074.png",
+        "system_core_charger_res_images_battery-charging0075.png",
+        "system_core_charger_res_images_battery-charging0076.png",
+        "system_core_charger_res_images_battery-charging0077.png",
+        "system_core_charger_res_images_battery-charging0078.png",
+        "system_core_charger_res_images_battery-charging0079.png",
+        "system_core_charger_res_images_battery-charging0080.png",
+        "system_core_charger_res_images_battery-charging0081.png",
+        "system_core_charger_res_images_battery-charging0082.png",
+        "system_core_charger_res_images_battery-charging0083.png",
+        "system_core_charger_res_images_battery-charging0084.png",
+        "system_core_charger_res_images_battery-charging0085.png",
+        "system_core_charger_res_images_battery-charging0086.png",
+        "system_core_charger_res_images_battery-charging0087.png",
+        "system_core_charger_res_images_battery-charging0088.png",
+        "system_core_charger_res_images_battery-charging0089.png",
+        "system_core_charger_res_images_battery-charging0090.png",
+        "system_core_charger_res_images_battery-charging0091.png",
+        "system_core_charger_res_images_battery-charging0092.png",
+        "system_core_charger_res_images_battery-charging0093.png",
+        "system_core_charger_res_images_battery-charging0094.png",
+        "system_core_charger_res_images_battery-charging0095.png",
+        "system_core_charger_res_images_battery-charging0096.png",
+        "system_core_charger_res_images_battery-charging0097.png",
+        "system_core_charger_res_images_battery-charging0098.png",
+        "system_core_charger_res_images_battery-charging0099.png",
+        "system_core_charger_res_images_battery-charging0100.png",
         "system_core_charger_res_images_battery_fail.png",
         "system_core_charger_res_images_battery_scale.png",
     ],
diff --git a/healthd/animation.h b/healthd/animation.h
index c2d5f1c..795010d 100644
--- a/healthd/animation.h
+++ b/healthd/animation.h
@@ -30,6 +30,7 @@
 
 struct animation {
     struct frame {
+        std::string name;
         int disp_time;
         int min_level;
         int max_level;
diff --git a/healthd/healthd_mode_charger.cpp b/healthd/healthd_mode_charger.cpp
index 282ffa2..41d2b63 100644
--- a/healthd/healthd_mode_charger.cpp
+++ b/healthd/healthd_mode_charger.cpp
@@ -16,6 +16,7 @@
 
 #include <charger/healthd_mode_charger.h>
 
+#include <array>
 #include <dirent.h>
 #include <errno.h>
 #include <fcntl.h>
@@ -162,38 +163,702 @@
 void Charger::InitDefaultAnimationFrames() {
     owned_frames_ = {
             {
-                    .disp_time = 750,
+                    .name = "charger/battery-charging0001.png",
+                    .disp_time = 500,
                     .min_level = 0,
+                    .max_level = 1,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0002.png",
+                    .disp_time = 500,
+                    .min_level = 2,
+                    .max_level = 2,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0003.png",
+                    .disp_time = 500,
+                    .min_level = 3,
+                    .max_level = 3,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0004.png",
+                    .disp_time = 500,
+                    .min_level = 4,
+                    .max_level = 4,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0005.png",
+                    .disp_time = 500,
+                    .min_level = 5,
+                    .max_level = 5,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0006.png",
+                    .disp_time = 500,
+                    .min_level = 6,
+                    .max_level = 6,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0007.png",
+                    .disp_time = 500,
+                    .min_level = 7,
+                    .max_level = 7,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0008.png",
+                    .disp_time = 500,
+                    .min_level = 8,
+                    .max_level = 8,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0009.png",
+                    .disp_time = 500,
+                    .min_level = 9,
+                    .max_level = 9,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0010.png",
+                    .disp_time = 500,
+                    .min_level = 10,
+                    .max_level = 10,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0011.png",
+                    .disp_time = 500,
+                    .min_level = 11,
+                    .max_level = 11,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0012.png",
+                    .disp_time = 500,
+                    .min_level = 12,
+                    .max_level = 12,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0013.png",
+                    .disp_time = 500,
+                    .min_level = 13,
+                    .max_level = 13,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0014.png",
+                    .disp_time = 500,
+                    .min_level = 14,
+                    .max_level = 14,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0015.png",
+                    .disp_time = 500,
+                    .min_level = 15,
+                    .max_level = 15,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0016.png",
+                    .disp_time = 500,
+                    .min_level = 16,
+                    .max_level = 16,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0017.png",
+                    .disp_time = 500,
+                    .min_level = 17,
+                    .max_level = 17,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0018.png",
+                    .disp_time = 500,
+                    .min_level = 18,
+                    .max_level = 18,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0019.png",
+                    .disp_time = 500,
+                    .min_level = 19,
                     .max_level = 19,
                     .surface = NULL,
             },
             {
-                    .disp_time = 750,
-                    .min_level = 0,
+                    .name = "charger/battery-charging0020.png",
+                    .disp_time = 500,
+                    .min_level = 20,
+                    .max_level = 20,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0021.png",
+                    .disp_time = 500,
+                    .min_level = 21,
+                    .max_level = 21,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0022.png",
+                    .disp_time = 500,
+                    .min_level = 22,
+                    .max_level = 22,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0023.png",
+                    .disp_time = 500,
+                    .min_level = 23,
+                    .max_level = 23,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0024.png",
+                    .disp_time = 500,
+                    .min_level = 24,
+                    .max_level = 24,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0025.png",
+                    .disp_time = 500,
+                    .min_level = 25,
+                    .max_level = 25,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0026.png",
+                    .disp_time = 500,
+                    .min_level = 26,
+                    .max_level = 26,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0027.png",
+                    .disp_time = 500,
+                    .min_level = 27,
+                    .max_level = 27,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0028.png",
+                    .disp_time = 500,
+                    .min_level = 28,
+                    .max_level = 28,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0029.png",
+                    .disp_time = 500,
+                    .min_level = 29,
+                    .max_level = 29,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0030.png",
+                    .disp_time = 500,
+                    .min_level = 30,
+                    .max_level = 30,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0031.png",
+                    .disp_time = 500,
+                    .min_level = 31,
+                    .max_level = 31,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0032.png",
+                    .disp_time = 500,
+                    .min_level = 32,
+                    .max_level = 32,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0033.png",
+                    .disp_time = 500,
+                    .min_level = 33,
+                    .max_level = 33,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0034.png",
+                    .disp_time = 500,
+                    .min_level = 34,
+                    .max_level = 34,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0035.png",
+                    .disp_time = 500,
+                    .min_level = 35,
+                    .max_level = 35,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0036.png",
+                    .disp_time = 500,
+                    .min_level = 36,
+                    .max_level = 36,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0037.png",
+                    .disp_time = 500,
+                    .min_level = 37,
+                    .max_level = 37,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0038.png",
+                    .disp_time = 500,
+                    .min_level = 38,
+                    .max_level = 38,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0039.png",
+                    .disp_time = 500,
+                    .min_level = 39,
                     .max_level = 39,
                     .surface = NULL,
             },
             {
-                    .disp_time = 750,
-                    .min_level = 0,
+                    .name = "charger/battery-charging0040.png",
+                    .disp_time = 500,
+                    .min_level = 40,
+                    .max_level = 40,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0041.png",
+                    .disp_time = 500,
+                    .min_level = 41,
+                    .max_level = 41,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0042.png",
+                    .disp_time = 500,
+                    .min_level = 42,
+                    .max_level = 42,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0043.png",
+                    .disp_time = 500,
+                    .min_level = 43,
+                    .max_level = 43,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0044.png",
+                    .disp_time = 500,
+                    .min_level = 44,
+                    .max_level = 44,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0045.png",
+                    .disp_time = 500,
+                    .min_level = 45,
+                    .max_level = 45,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0046.png",
+                    .disp_time = 500,
+                    .min_level = 46,
+                    .max_level = 46,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0047.png",
+                    .disp_time = 500,
+                    .min_level = 47,
+                    .max_level = 47,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0048.png",
+                    .disp_time = 500,
+                    .min_level = 48,
+                    .max_level = 48,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0049.png",
+                    .disp_time = 500,
+                    .min_level = 49,
+                    .max_level = 49,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0050.png",
+                    .disp_time = 500,
+                    .min_level = 50,
+                    .max_level = 50,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0051.png",
+                    .disp_time = 500,
+                    .min_level = 51,
+                    .max_level = 51,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0052.png",
+                    .disp_time = 500,
+                    .min_level = 52,
+                    .max_level = 52,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0053.png",
+                    .disp_time = 500,
+                    .min_level = 53,
+                    .max_level = 53,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0054.png",
+                    .disp_time = 500,
+                    .min_level = 54,
+                    .max_level = 54,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0055.png",
+                    .disp_time = 500,
+                    .min_level = 55,
+                    .max_level = 55,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0056.png",
+                    .disp_time = 500,
+                    .min_level = 56,
+                    .max_level = 56,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0057.png",
+                    .disp_time = 500,
+                    .min_level = 57,
+                    .max_level = 57,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0058.png",
+                    .disp_time = 500,
+                    .min_level = 58,
+                    .max_level = 58,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0059.png",
+                    .disp_time = 500,
+                    .min_level = 59,
                     .max_level = 59,
                     .surface = NULL,
             },
             {
-                    .disp_time = 750,
-                    .min_level = 0,
+                    .name = "charger/battery-charging0060.png",
+                    .disp_time = 500,
+                    .min_level = 60,
+                    .max_level = 60,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0061.png",
+                    .disp_time = 500,
+                    .min_level = 61,
+                    .max_level = 61,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0062.png",
+                    .disp_time = 500,
+                    .min_level = 62,
+                    .max_level = 62,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0063.png",
+                    .disp_time = 500,
+                    .min_level = 63,
+                    .max_level = 63,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0064.png",
+                    .disp_time = 500,
+                    .min_level = 64,
+                    .max_level = 64,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0065.png",
+                    .disp_time = 500,
+                    .min_level = 65,
+                    .max_level = 65,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0066.png",
+                    .disp_time = 500,
+                    .min_level = 66,
+                    .max_level = 66,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0067.png",
+                    .disp_time = 500,
+                    .min_level = 67,
+                    .max_level = 67,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0068.png",
+                    .disp_time = 500,
+                    .min_level = 68,
+                    .max_level = 68,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0069.png",
+                    .disp_time = 500,
+                    .min_level = 69,
+                    .max_level = 69,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0070.png",
+                    .disp_time = 500,
+                    .min_level = 70,
+                    .max_level = 70,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0071.png",
+                    .disp_time = 500,
+                    .min_level = 71,
+                    .max_level = 71,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0072.png",
+                    .disp_time = 500,
+                    .min_level = 72,
+                    .max_level = 72,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0073.png",
+                    .disp_time = 500,
+                    .min_level = 73,
+                    .max_level = 73,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0074.png",
+                    .disp_time = 500,
+                    .min_level = 74,
+                    .max_level = 74,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0075.png",
+                    .disp_time = 500,
+                    .min_level = 75,
+                    .max_level = 75,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0076.png",
+                    .disp_time = 500,
+                    .min_level = 76,
+                    .max_level = 76,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0077.png",
+                    .disp_time = 500,
+                    .min_level = 77,
+                    .max_level = 77,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0078.png",
+                    .disp_time = 500,
+                    .min_level = 78,
+                    .max_level = 78,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0079.png",
+                    .disp_time = 500,
+                    .min_level = 79,
                     .max_level = 79,
                     .surface = NULL,
             },
             {
-                    .disp_time = 750,
+                    .name = "charger/battery-charging0080.png",
+                    .disp_time = 500,
                     .min_level = 80,
+                    .max_level = 80,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0081.png",
+                    .disp_time = 500,
+                    .min_level = 81,
+                    .max_level = 81,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0082.png",
+                    .disp_time = 500,
+                    .min_level = 82,
+                    .max_level = 82,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0083.png",
+                    .disp_time = 500,
+                    .min_level = 83,
+                    .max_level = 83,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0084.png",
+                    .disp_time = 500,
+                    .min_level = 84,
+                    .max_level = 84,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0085.png",
+                    .disp_time = 500,
+                    .min_level = 85,
+                    .max_level = 85,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0086.png",
+                    .disp_time = 500,
+                    .min_level = 86,
+                    .max_level = 86,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0087.png",
+                    .disp_time = 500,
+                    .min_level = 87,
+                    .max_level = 87,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0088.png",
+                    .disp_time = 500,
+                    .min_level = 88,
+                    .max_level = 88,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0089.png",
+                    .disp_time = 500,
+                    .min_level = 89,
+                    .max_level = 89,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0090.png",
+                    .disp_time = 500,
+                    .min_level = 90,
+                    .max_level = 90,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0091.png",
+                    .disp_time = 500,
+                    .min_level = 91,
+                    .max_level = 91,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0092.png",
+                    .disp_time = 500,
+                    .min_level = 92,
+                    .max_level = 92,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0093.png",
+                    .disp_time = 500,
+                    .min_level = 93,
+                    .max_level = 93,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0094.png",
+                    .disp_time = 500,
+                    .min_level = 94,
+                    .max_level = 94,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0095.png",
+                    .disp_time = 500,
+                    .min_level = 95,
                     .max_level = 95,
                     .surface = NULL,
             },
             {
-                    .disp_time = 750,
-                    .min_level = 0,
+                    .name = "charger/battery-charging0096.png",
+                    .disp_time = 500,
+                    .min_level = 96,
+                    .max_level = 96,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0097.png",
+                    .disp_time = 500,
+                    .min_level = 97,
+                    .max_level = 97,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0098.png",
+                    .disp_time = 500,
+                    .min_level = 98,
+                    .max_level = 98,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0099.png",
+                    .disp_time = 500,
+                    .min_level = 99,
+                    .max_level = 99,
+                    .surface = NULL,
+            },
+            {
+                    .name = "charger/battery-charging0100.png",
+                    .disp_time = 500,
+                    .min_level = 100,
                     .max_level = 100,
                     .surface = NULL,
             },
@@ -621,6 +1286,125 @@
     }
 }
 
+/* Follow in ../hardware/qcom/display/liblight/lights.c */
+static constexpr const char* rgb_red_blink_file = "/sys/class/leds/red/breath";
+static constexpr const char* rgb_red_led_file   = "/sys/class/leds/red/brightness";
+static constexpr const char* rgb_green_led_file = "/sys/class/leds/green/brightness";
+static constexpr const char* rgb_blue_led_file  = "/sys/class/leds/blue/brightness";
+using light_buffer_t = std::array<char, 128u>;
+static constexpr unsigned int RGB_ON_LEVEL  = 0x7F;
+static constexpr unsigned int RGB_OFF_LEVEL = 0x00;
+static int write_level_to_led(unsigned int level, const char* led_file)
+{
+    const int fd = open(led_file, O_WRONLY);
+    if (fd < 0) {
+        return -errno;
+    }
+    light_buffer_t buffer{};
+    const int bytes = sprintf(buffer.data(), "%u", level);
+    if (bytes <= 0) {
+        LOGE("Charging RGB: Failed on buffer init!\n");
+        close(fd);
+        return -1;
+    }
+    const int vRet = write(fd, buffer.data(), static_cast<size_t>(bytes));
+    LOGV("Charging RGB: Config LED %s(%d)\n", buffer.data(), vRet);
+    const int errno_ = errno;
+    close(fd);
+    if (vRet == -1) {
+        LOGE("Charging RGB: Failed at write(): %d\n", errno_);
+        return -errno_;
+    }
+    return 0;
+}
+static int write_rgb_red_led_cfg(unsigned int level)
+{
+    const int err = write_level_to_led(level, rgb_red_led_file);
+    LOGV("Charging RGB: Config RED LED (%d)\n", err);
+    return err;
+}
+static int write_rgb_red_blink_cfg(unsigned int level, unsigned int onMS, unsigned int offMS)
+{
+    int blink = 0;
+    if (onMS > 0 && offMS > 0) {
+        /* if ON time == OFF time
+         *   use blink mode 2
+         * else
+         *   use blink mode 1
+         */
+        if (onMS == offMS) {
+            blink = 2;
+        } else {
+            blink = 1;
+        }
+    }
+    if (blink) {
+        const int err = write_level_to_led(blink, rgb_red_blink_file);
+        if (err) {
+            LOGE("Charging RGB: Config RED BLINK failed!\n");
+            return err;
+        }
+        LOGV("Charging RGB: Config RED BLINK (%d)\n", err);
+        return 0;
+    }
+    return write_rgb_red_led_cfg(level);
+}
+static int write_rgb_green_led_cfg(unsigned int level)
+{
+    const int err = write_level_to_led(level, rgb_green_led_file);
+    LOGV("Charging RGB: Config GREEN LED (%d)\n", err);
+    return err;
+}
+static int write_rgb_blue_led_cfg(unsigned int level)
+{
+    const int err = write_level_to_led(level, rgb_blue_led_file);
+    LOGV("Charging RGB: Config BLUE LED (%d)\n", err);
+    return err;
+}
+static void charging_rgbled_off()
+{
+    write_rgb_red_led_cfg(RGB_OFF_LEVEL);
+    write_rgb_green_led_cfg(RGB_OFF_LEVEL);
+    write_rgb_blue_led_cfg(RGB_OFF_LEVEL);
+}
+void Charger::charging_rgbled_update()
+{
+    if (!have_battery_state_) {
+        LOGE("Charging RGB: There is not battery\n");
+        led_last_battery_level_ = -1;  /* Reset record when charger plug out */
+        charging_rgbled_off();
+        return;
+    }
+    if (!configuration_->ChargerIsOnline()) {
+        LOGV("Charging RGB: unplug charging\n");
+        led_last_battery_level_ = -1;  /* Reset record when charger plug out */
+        charging_rgbled_off();
+        return;
+    }
+    const int battery_level = health_info_.battery_level;
+    if (led_last_battery_level_ == battery_level) {
+        return;
+    }
+    LOGV("Charging RGB: Battery Level: %d / %d\n", battery_level, led_last_battery_level_);
+    led_last_battery_level_ = battery_level;
+    if (battery_level >= 100) {
+        write_rgb_green_led_cfg(RGB_ON_LEVEL);
+        write_rgb_red_led_cfg(RGB_OFF_LEVEL);
+    } else if (battery_level < 100 && battery_level >= 90) {
+        write_rgb_green_led_cfg(RGB_ON_LEVEL);
+        write_rgb_red_led_cfg(RGB_OFF_LEVEL);
+    } else if (battery_level < 90 && battery_level >= 15) {
+        write_rgb_green_led_cfg(RGB_ON_LEVEL);
+        write_rgb_red_led_cfg(RGB_ON_LEVEL);
+    } else if (battery_level < 15 && battery_level >= 5) {
+        write_rgb_green_led_cfg(RGB_OFF_LEVEL);
+        write_rgb_red_blink_cfg(RGB_ON_LEVEL, 0x00, 0x00);
+    } else {
+        write_rgb_green_led_cfg(RGB_OFF_LEVEL);
+        write_rgb_red_blink_cfg(RGB_ON_LEVEL, 0x00, 0x00);
+    }
+}
+
 void Charger::OnHeartbeat() {
     // charger* charger = &charger_state;
     int64_t now = curr_time_ms();
@@ -632,6 +1416,8 @@
      * screen transitions (animations, etc)
      */
     UpdateScreenState(now);
+
+    charging_rgbled_update();
 }
 
 void Charger::OnHealthInfoChanged(const ChargerHealthInfo& health_info) {
@@ -782,24 +1568,15 @@
         }
     }
 
-    GRSurface** scale_frames;
-    int scale_count;
-    int scale_fps;  // Not in use (charger/battery_scale doesn't have FPS text
-                    // chunk). We are using hard-coded frame.disp_time instead.
-    ret = CreateMultiDisplaySurface(batt_anim_.animation_file, &scale_count, &scale_fps,
-                                    &scale_frames);
-    if (ret < 0) {
-        LOGE("Cannot load battery_scale image\n");
-        batt_anim_.num_frames = 0;
-        batt_anim_.num_cycles = 1;
-    } else if (scale_count != batt_anim_.num_frames) {
-        LOGE("battery_scale image has unexpected frame count (%d, expected %d)\n", scale_count,
-             batt_anim_.num_frames);
-        batt_anim_.num_frames = 0;
-        batt_anim_.num_cycles = 1;
-    } else {
-        for (i = 0; i < batt_anim_.num_frames; i++) {
-            batt_anim_.frames[i].surface = scale_frames[i];
+    for (i = 0; i < batt_anim_.num_frames; i++) {
+        LOGW("[B]%s(%d): frame.name=%s\n", __func__, __LINE__, batt_anim_.frames[i].name.c_str());
+        ret = CreateDisplaySurface((system_animation_root + batt_anim_.frames[i].name).c_str(),
+                                   &batt_anim_.frames[i].surface);
+        if (ret < 0) {
+            LOGE("Cannot load image %s\n", batt_anim_.frames[i].name.c_str());
+            /* TODO: free the already allocated surfaces... */
+            batt_anim_.num_frames = 0;
+            batt_anim_.num_cycles = 1;
         }
     }
     drm_ = DRM_INNER;
diff --git a/healthd/images/battery-charging0001.png b/healthd/images/battery-charging0001.png
new file mode 100644
index 0000000..9f0a378
--- /dev/null
+++ b/healthd/images/battery-charging0001.png
Binary files differ
diff --git a/healthd/images/battery-charging0002.png b/healthd/images/battery-charging0002.png
new file mode 100644
index 0000000..9592934
--- /dev/null
+++ b/healthd/images/battery-charging0002.png
Binary files differ
diff --git a/healthd/images/battery-charging0003.png b/healthd/images/battery-charging0003.png
new file mode 100644
index 0000000..d312f57
--- /dev/null
+++ b/healthd/images/battery-charging0003.png
Binary files differ
diff --git a/healthd/images/battery-charging0004.png b/healthd/images/battery-charging0004.png
new file mode 100644
index 0000000..b883715
--- /dev/null
+++ b/healthd/images/battery-charging0004.png
Binary files differ
diff --git a/healthd/images/battery-charging0005.png b/healthd/images/battery-charging0005.png
new file mode 100644
index 0000000..3af10ac
--- /dev/null
+++ b/healthd/images/battery-charging0005.png
Binary files differ
diff --git a/healthd/images/battery-charging0006.png b/healthd/images/battery-charging0006.png
new file mode 100644
index 0000000..8e35bf1
--- /dev/null
+++ b/healthd/images/battery-charging0006.png
Binary files differ
diff --git a/healthd/images/battery-charging0007.png b/healthd/images/battery-charging0007.png
new file mode 100644
index 0000000..68b0771
--- /dev/null
+++ b/healthd/images/battery-charging0007.png
Binary files differ
diff --git a/healthd/images/battery-charging0008.png b/healthd/images/battery-charging0008.png
new file mode 100644
index 0000000..14db6b2
--- /dev/null
+++ b/healthd/images/battery-charging0008.png
Binary files differ
diff --git a/healthd/images/battery-charging0009.png b/healthd/images/battery-charging0009.png
new file mode 100644
index 0000000..e57a671
--- /dev/null
+++ b/healthd/images/battery-charging0009.png
Binary files differ
diff --git a/healthd/images/battery-charging0010.png b/healthd/images/battery-charging0010.png
new file mode 100644
index 0000000..b753006
--- /dev/null
+++ b/healthd/images/battery-charging0010.png
Binary files differ
diff --git a/healthd/images/battery-charging0011.png b/healthd/images/battery-charging0011.png
new file mode 100644
index 0000000..ff0e354
--- /dev/null
+++ b/healthd/images/battery-charging0011.png
Binary files differ
diff --git a/healthd/images/battery-charging0012.png b/healthd/images/battery-charging0012.png
new file mode 100644
index 0000000..9789542
--- /dev/null
+++ b/healthd/images/battery-charging0012.png
Binary files differ
diff --git a/healthd/images/battery-charging0013.png b/healthd/images/battery-charging0013.png
new file mode 100644
index 0000000..0bdd8a1
--- /dev/null
+++ b/healthd/images/battery-charging0013.png
Binary files differ
diff --git a/healthd/images/battery-charging0014.png b/healthd/images/battery-charging0014.png
new file mode 100644
index 0000000..76c7a0c
--- /dev/null
+++ b/healthd/images/battery-charging0014.png
Binary files differ
diff --git a/healthd/images/battery-charging0015.png b/healthd/images/battery-charging0015.png
new file mode 100644
index 0000000..aff6bbd
--- /dev/null
+++ b/healthd/images/battery-charging0015.png
Binary files differ
diff --git a/healthd/images/battery-charging0016.png b/healthd/images/battery-charging0016.png
new file mode 100644
index 0000000..a4e691a
--- /dev/null
+++ b/healthd/images/battery-charging0016.png
Binary files differ
diff --git a/healthd/images/battery-charging0017.png b/healthd/images/battery-charging0017.png
new file mode 100644
index 0000000..87b2dc1
--- /dev/null
+++ b/healthd/images/battery-charging0017.png
Binary files differ
diff --git a/healthd/images/battery-charging0018.png b/healthd/images/battery-charging0018.png
new file mode 100644
index 0000000..837861f
--- /dev/null
+++ b/healthd/images/battery-charging0018.png
Binary files differ
diff --git a/healthd/images/battery-charging0019.png b/healthd/images/battery-charging0019.png
new file mode 100644
index 0000000..9e1605d
--- /dev/null
+++ b/healthd/images/battery-charging0019.png
Binary files differ
diff --git a/healthd/images/battery-charging0020.png b/healthd/images/battery-charging0020.png
new file mode 100644
index 0000000..8224eb0
--- /dev/null
+++ b/healthd/images/battery-charging0020.png
Binary files differ
diff --git a/healthd/images/battery-charging0021.png b/healthd/images/battery-charging0021.png
new file mode 100644
index 0000000..8b48fcb
--- /dev/null
+++ b/healthd/images/battery-charging0021.png
Binary files differ
diff --git a/healthd/images/battery-charging0022.png b/healthd/images/battery-charging0022.png
new file mode 100644
index 0000000..d1b8c3c
--- /dev/null
+++ b/healthd/images/battery-charging0022.png
Binary files differ
diff --git a/healthd/images/battery-charging0023.png b/healthd/images/battery-charging0023.png
new file mode 100644
index 0000000..2e26268
--- /dev/null
+++ b/healthd/images/battery-charging0023.png
Binary files differ
diff --git a/healthd/images/battery-charging0024.png b/healthd/images/battery-charging0024.png
new file mode 100644
index 0000000..8ccfbb4
--- /dev/null
+++ b/healthd/images/battery-charging0024.png
Binary files differ
diff --git a/healthd/images/battery-charging0025.png b/healthd/images/battery-charging0025.png
new file mode 100644
index 0000000..41776fa
--- /dev/null
+++ b/healthd/images/battery-charging0025.png
Binary files differ
diff --git a/healthd/images/battery-charging0026.png b/healthd/images/battery-charging0026.png
new file mode 100644
index 0000000..498e915
--- /dev/null
+++ b/healthd/images/battery-charging0026.png
Binary files differ
diff --git a/healthd/images/battery-charging0027.png b/healthd/images/battery-charging0027.png
new file mode 100644
index 0000000..52e40fa
--- /dev/null
+++ b/healthd/images/battery-charging0027.png
Binary files differ
diff --git a/healthd/images/battery-charging0028.png b/healthd/images/battery-charging0028.png
new file mode 100644
index 0000000..146d670
--- /dev/null
+++ b/healthd/images/battery-charging0028.png
Binary files differ
diff --git a/healthd/images/battery-charging0029.png b/healthd/images/battery-charging0029.png
new file mode 100644
index 0000000..87b267b
--- /dev/null
+++ b/healthd/images/battery-charging0029.png
Binary files differ
diff --git a/healthd/images/battery-charging0030.png b/healthd/images/battery-charging0030.png
new file mode 100644
index 0000000..f7f9f36
--- /dev/null
+++ b/healthd/images/battery-charging0030.png
Binary files differ
diff --git a/healthd/images/battery-charging0031.png b/healthd/images/battery-charging0031.png
new file mode 100644
index 0000000..5473037
--- /dev/null
+++ b/healthd/images/battery-charging0031.png
Binary files differ
diff --git a/healthd/images/battery-charging0032.png b/healthd/images/battery-charging0032.png
new file mode 100644
index 0000000..ee50bf7
--- /dev/null
+++ b/healthd/images/battery-charging0032.png
Binary files differ
diff --git a/healthd/images/battery-charging0033.png b/healthd/images/battery-charging0033.png
new file mode 100644
index 0000000..160e0f5
--- /dev/null
+++ b/healthd/images/battery-charging0033.png
Binary files differ
diff --git a/healthd/images/battery-charging0034.png b/healthd/images/battery-charging0034.png
new file mode 100644
index 0000000..e54baf8
--- /dev/null
+++ b/healthd/images/battery-charging0034.png
Binary files differ
diff --git a/healthd/images/battery-charging0035.png b/healthd/images/battery-charging0035.png
new file mode 100644
index 0000000..4fcac18
--- /dev/null
+++ b/healthd/images/battery-charging0035.png
Binary files differ
diff --git a/healthd/images/battery-charging0036.png b/healthd/images/battery-charging0036.png
new file mode 100644
index 0000000..7829485
--- /dev/null
+++ b/healthd/images/battery-charging0036.png
Binary files differ
diff --git a/healthd/images/battery-charging0037.png b/healthd/images/battery-charging0037.png
new file mode 100644
index 0000000..593139f
--- /dev/null
+++ b/healthd/images/battery-charging0037.png
Binary files differ
diff --git a/healthd/images/battery-charging0038.png b/healthd/images/battery-charging0038.png
new file mode 100644
index 0000000..49e7499
--- /dev/null
+++ b/healthd/images/battery-charging0038.png
Binary files differ
diff --git a/healthd/images/battery-charging0039.png b/healthd/images/battery-charging0039.png
new file mode 100644
index 0000000..827a609
--- /dev/null
+++ b/healthd/images/battery-charging0039.png
Binary files differ
diff --git a/healthd/images/battery-charging0040.png b/healthd/images/battery-charging0040.png
new file mode 100644
index 0000000..2127825
--- /dev/null
+++ b/healthd/images/battery-charging0040.png
Binary files differ
diff --git a/healthd/images/battery-charging0041.png b/healthd/images/battery-charging0041.png
new file mode 100644
index 0000000..8c81d47
--- /dev/null
+++ b/healthd/images/battery-charging0041.png
Binary files differ
diff --git a/healthd/images/battery-charging0042.png b/healthd/images/battery-charging0042.png
new file mode 100644
index 0000000..e32d2bf
--- /dev/null
+++ b/healthd/images/battery-charging0042.png
Binary files differ
diff --git a/healthd/images/battery-charging0043.png b/healthd/images/battery-charging0043.png
new file mode 100644
index 0000000..ec28657
--- /dev/null
+++ b/healthd/images/battery-charging0043.png
Binary files differ
diff --git a/healthd/images/battery-charging0044.png b/healthd/images/battery-charging0044.png
new file mode 100644
index 0000000..57e33ff
--- /dev/null
+++ b/healthd/images/battery-charging0044.png
Binary files differ
diff --git a/healthd/images/battery-charging0045.png b/healthd/images/battery-charging0045.png
new file mode 100644
index 0000000..28adfbb
--- /dev/null
+++ b/healthd/images/battery-charging0045.png
Binary files differ
diff --git a/healthd/images/battery-charging0046.png b/healthd/images/battery-charging0046.png
new file mode 100644
index 0000000..3aa7409
--- /dev/null
+++ b/healthd/images/battery-charging0046.png
Binary files differ
diff --git a/healthd/images/battery-charging0047.png b/healthd/images/battery-charging0047.png
new file mode 100644
index 0000000..6bac491
--- /dev/null
+++ b/healthd/images/battery-charging0047.png
Binary files differ
diff --git a/healthd/images/battery-charging0048.png b/healthd/images/battery-charging0048.png
new file mode 100644
index 0000000..1de66b4
--- /dev/null
+++ b/healthd/images/battery-charging0048.png
Binary files differ
diff --git a/healthd/images/battery-charging0049.png b/healthd/images/battery-charging0049.png
new file mode 100644
index 0000000..ab80ba5
--- /dev/null
+++ b/healthd/images/battery-charging0049.png
Binary files differ
diff --git a/healthd/images/battery-charging0050.png b/healthd/images/battery-charging0050.png
new file mode 100644
index 0000000..e393bf9
--- /dev/null
+++ b/healthd/images/battery-charging0050.png
Binary files differ
diff --git a/healthd/images/battery-charging0051.png b/healthd/images/battery-charging0051.png
new file mode 100644
index 0000000..300c987
--- /dev/null
+++ b/healthd/images/battery-charging0051.png
Binary files differ
diff --git a/healthd/images/battery-charging0052.png b/healthd/images/battery-charging0052.png
new file mode 100644
index 0000000..da571ae
--- /dev/null
+++ b/healthd/images/battery-charging0052.png
Binary files differ
diff --git a/healthd/images/battery-charging0053.png b/healthd/images/battery-charging0053.png
new file mode 100644
index 0000000..1f64265
--- /dev/null
+++ b/healthd/images/battery-charging0053.png
Binary files differ
diff --git a/healthd/images/battery-charging0054.png b/healthd/images/battery-charging0054.png
new file mode 100644
index 0000000..d21c96e
--- /dev/null
+++ b/healthd/images/battery-charging0054.png
Binary files differ
diff --git a/healthd/images/battery-charging0055.png b/healthd/images/battery-charging0055.png
new file mode 100644
index 0000000..517ddfd
--- /dev/null
+++ b/healthd/images/battery-charging0055.png
Binary files differ
diff --git a/healthd/images/battery-charging0056.png b/healthd/images/battery-charging0056.png
new file mode 100644
index 0000000..2ea3077
--- /dev/null
+++ b/healthd/images/battery-charging0056.png
Binary files differ
diff --git a/healthd/images/battery-charging0057.png b/healthd/images/battery-charging0057.png
new file mode 100644
index 0000000..ef8ae66
--- /dev/null
+++ b/healthd/images/battery-charging0057.png
Binary files differ
diff --git a/healthd/images/battery-charging0058.png b/healthd/images/battery-charging0058.png
new file mode 100644
index 0000000..93dfce8
--- /dev/null
+++ b/healthd/images/battery-charging0058.png
Binary files differ
diff --git a/healthd/images/battery-charging0059.png b/healthd/images/battery-charging0059.png
new file mode 100644
index 0000000..270a2a9
--- /dev/null
+++ b/healthd/images/battery-charging0059.png
Binary files differ
diff --git a/healthd/images/battery-charging0060.png b/healthd/images/battery-charging0060.png
new file mode 100644
index 0000000..8ff09f7
--- /dev/null
+++ b/healthd/images/battery-charging0060.png
Binary files differ
diff --git a/healthd/images/battery-charging0061.png b/healthd/images/battery-charging0061.png
new file mode 100644
index 0000000..0f889cb
--- /dev/null
+++ b/healthd/images/battery-charging0061.png
Binary files differ
diff --git a/healthd/images/battery-charging0062.png b/healthd/images/battery-charging0062.png
new file mode 100644
index 0000000..f596eb0
--- /dev/null
+++ b/healthd/images/battery-charging0062.png
Binary files differ
diff --git a/healthd/images/battery-charging0063.png b/healthd/images/battery-charging0063.png
new file mode 100644
index 0000000..6919e52
--- /dev/null
+++ b/healthd/images/battery-charging0063.png
Binary files differ
diff --git a/healthd/images/battery-charging0064.png b/healthd/images/battery-charging0064.png
new file mode 100644
index 0000000..bae2261
--- /dev/null
+++ b/healthd/images/battery-charging0064.png
Binary files differ
diff --git a/healthd/images/battery-charging0065.png b/healthd/images/battery-charging0065.png
new file mode 100644
index 0000000..5747f9b
--- /dev/null
+++ b/healthd/images/battery-charging0065.png
Binary files differ
diff --git a/healthd/images/battery-charging0066.png b/healthd/images/battery-charging0066.png
new file mode 100644
index 0000000..f874151
--- /dev/null
+++ b/healthd/images/battery-charging0066.png
Binary files differ
diff --git a/healthd/images/battery-charging0067.png b/healthd/images/battery-charging0067.png
new file mode 100644
index 0000000..c77f7f1
--- /dev/null
+++ b/healthd/images/battery-charging0067.png
Binary files differ
diff --git a/healthd/images/battery-charging0068.png b/healthd/images/battery-charging0068.png
new file mode 100644
index 0000000..154c1c6
--- /dev/null
+++ b/healthd/images/battery-charging0068.png
Binary files differ
diff --git a/healthd/images/battery-charging0069.png b/healthd/images/battery-charging0069.png
new file mode 100644
index 0000000..67fe662
--- /dev/null
+++ b/healthd/images/battery-charging0069.png
Binary files differ
diff --git a/healthd/images/battery-charging0070.png b/healthd/images/battery-charging0070.png
new file mode 100644
index 0000000..f297bd9
--- /dev/null
+++ b/healthd/images/battery-charging0070.png
Binary files differ
diff --git a/healthd/images/battery-charging0071.png b/healthd/images/battery-charging0071.png
new file mode 100644
index 0000000..f017a1d
--- /dev/null
+++ b/healthd/images/battery-charging0071.png
Binary files differ
diff --git a/healthd/images/battery-charging0072.png b/healthd/images/battery-charging0072.png
new file mode 100644
index 0000000..3492161
--- /dev/null
+++ b/healthd/images/battery-charging0072.png
Binary files differ
diff --git a/healthd/images/battery-charging0073.png b/healthd/images/battery-charging0073.png
new file mode 100644
index 0000000..687795f
--- /dev/null
+++ b/healthd/images/battery-charging0073.png
Binary files differ
diff --git a/healthd/images/battery-charging0074.png b/healthd/images/battery-charging0074.png
new file mode 100644
index 0000000..f8d651a
--- /dev/null
+++ b/healthd/images/battery-charging0074.png
Binary files differ
diff --git a/healthd/images/battery-charging0075.png b/healthd/images/battery-charging0075.png
new file mode 100644
index 0000000..dabc874
--- /dev/null
+++ b/healthd/images/battery-charging0075.png
Binary files differ
diff --git a/healthd/images/battery-charging0076.png b/healthd/images/battery-charging0076.png
new file mode 100644
index 0000000..774eff4
--- /dev/null
+++ b/healthd/images/battery-charging0076.png
Binary files differ
diff --git a/healthd/images/battery-charging0077.png b/healthd/images/battery-charging0077.png
new file mode 100644
index 0000000..4f2acba
--- /dev/null
+++ b/healthd/images/battery-charging0077.png
Binary files differ
diff --git a/healthd/images/battery-charging0078.png b/healthd/images/battery-charging0078.png
new file mode 100644
index 0000000..e45507d
--- /dev/null
+++ b/healthd/images/battery-charging0078.png
Binary files differ
diff --git a/healthd/images/battery-charging0079.png b/healthd/images/battery-charging0079.png
new file mode 100644
index 0000000..9780cf9
--- /dev/null
+++ b/healthd/images/battery-charging0079.png
Binary files differ
diff --git a/healthd/images/battery-charging0080.png b/healthd/images/battery-charging0080.png
new file mode 100644
index 0000000..33008e5
--- /dev/null
+++ b/healthd/images/battery-charging0080.png
Binary files differ
diff --git a/healthd/images/battery-charging0081.png b/healthd/images/battery-charging0081.png
new file mode 100644
index 0000000..077bab9
--- /dev/null
+++ b/healthd/images/battery-charging0081.png
Binary files differ
diff --git a/healthd/images/battery-charging0082.png b/healthd/images/battery-charging0082.png
new file mode 100644
index 0000000..a18157f
--- /dev/null
+++ b/healthd/images/battery-charging0082.png
Binary files differ
diff --git a/healthd/images/battery-charging0083.png b/healthd/images/battery-charging0083.png
new file mode 100644
index 0000000..523a7b8
--- /dev/null
+++ b/healthd/images/battery-charging0083.png
Binary files differ
diff --git a/healthd/images/battery-charging0084.png b/healthd/images/battery-charging0084.png
new file mode 100644
index 0000000..a2e1468
--- /dev/null
+++ b/healthd/images/battery-charging0084.png
Binary files differ
diff --git a/healthd/images/battery-charging0085.png b/healthd/images/battery-charging0085.png
new file mode 100644
index 0000000..441352e
--- /dev/null
+++ b/healthd/images/battery-charging0085.png
Binary files differ
diff --git a/healthd/images/battery-charging0086.png b/healthd/images/battery-charging0086.png
new file mode 100644
index 0000000..4188355
--- /dev/null
+++ b/healthd/images/battery-charging0086.png
Binary files differ
diff --git a/healthd/images/battery-charging0087.png b/healthd/images/battery-charging0087.png
new file mode 100644
index 0000000..d29f7e9
--- /dev/null
+++ b/healthd/images/battery-charging0087.png
Binary files differ
diff --git a/healthd/images/battery-charging0088.png b/healthd/images/battery-charging0088.png
new file mode 100644
index 0000000..67111c9
--- /dev/null
+++ b/healthd/images/battery-charging0088.png
Binary files differ
diff --git a/healthd/images/battery-charging0089.png b/healthd/images/battery-charging0089.png
new file mode 100644
index 0000000..236488b
--- /dev/null
+++ b/healthd/images/battery-charging0089.png
Binary files differ
diff --git a/healthd/images/battery-charging0090.png b/healthd/images/battery-charging0090.png
new file mode 100644
index 0000000..9f2afa8
--- /dev/null
+++ b/healthd/images/battery-charging0090.png
Binary files differ
diff --git a/healthd/images/battery-charging0091.png b/healthd/images/battery-charging0091.png
new file mode 100644
index 0000000..d938757
--- /dev/null
+++ b/healthd/images/battery-charging0091.png
Binary files differ
diff --git a/healthd/images/battery-charging0092.png b/healthd/images/battery-charging0092.png
new file mode 100644
index 0000000..0194991
--- /dev/null
+++ b/healthd/images/battery-charging0092.png
Binary files differ
diff --git a/healthd/images/battery-charging0093.png b/healthd/images/battery-charging0093.png
new file mode 100644
index 0000000..dda4fd7
--- /dev/null
+++ b/healthd/images/battery-charging0093.png
Binary files differ
diff --git a/healthd/images/battery-charging0094.png b/healthd/images/battery-charging0094.png
new file mode 100644
index 0000000..e40d35b
--- /dev/null
+++ b/healthd/images/battery-charging0094.png
Binary files differ
diff --git a/healthd/images/battery-charging0095.png b/healthd/images/battery-charging0095.png
new file mode 100644
index 0000000..7f12783
--- /dev/null
+++ b/healthd/images/battery-charging0095.png
Binary files differ
diff --git a/healthd/images/battery-charging0096.png b/healthd/images/battery-charging0096.png
new file mode 100644
index 0000000..5859fc6
--- /dev/null
+++ b/healthd/images/battery-charging0096.png
Binary files differ
diff --git a/healthd/images/battery-charging0097.png b/healthd/images/battery-charging0097.png
new file mode 100644
index 0000000..87ba922
--- /dev/null
+++ b/healthd/images/battery-charging0097.png
Binary files differ
diff --git a/healthd/images/battery-charging0098.png b/healthd/images/battery-charging0098.png
new file mode 100644
index 0000000..5839e24
--- /dev/null
+++ b/healthd/images/battery-charging0098.png
Binary files differ
diff --git a/healthd/images/battery-charging0099.png b/healthd/images/battery-charging0099.png
new file mode 100644
index 0000000..005f389
--- /dev/null
+++ b/healthd/images/battery-charging0099.png
Binary files differ
diff --git a/healthd/images/battery-charging0100.png b/healthd/images/battery-charging0100.png
new file mode 100644
index 0000000..6bf7012
--- /dev/null
+++ b/healthd/images/battery-charging0100.png
Binary files differ
diff --git a/healthd/include_charger/charger/healthd_mode_charger.h b/healthd/include_charger/charger/healthd_mode_charger.h
index 8957a7b..b3816e8 100644
--- a/healthd/include_charger/charger/healthd_mode_charger.h
+++ b/healthd/include_charger/charger/healthd_mode_charger.h
@@ -108,6 +108,7 @@
     int RequestEnableSuspend();
     int RequestDisableSuspend();
     void BlankSecScreen();
+    void charging_rgbled_update();
 
     bool have_battery_state_ = false;
     bool screen_blanked_ = false;
@@ -116,6 +117,7 @@
     int64_t next_key_check_ = 0;
     int64_t next_pwr_check_ = 0;
     int64_t wait_batt_level_timestamp_ = 0;
+    int led_last_battery_level_ = -1;
 
     DirectRenderManager drm_;
     SrceenSwitch screen_switch_;
diff --git a/libsystem/include/system/camera.h b/libsystem/include/system/camera.h
index 2ca90c3..990edcf 100644
--- a/libsystem/include/system/camera.h
+++ b/libsystem/include/system/camera.h
@@ -88,9 +88,20 @@
     // Notify on autofocus start and stop. This is useful in continuous
     // autofocus - FOCUS_MODE_CONTINUOUS_VIDEO and FOCUS_MODE_CONTINUOUS_PICTURE.
     CAMERA_MSG_FOCUS_MOVE = 0x0800,       // notifyCallback
+    CAMERA_MSG_VENDOR_START = 0x1000,
+    CAMERA_MSG_STATS_DATA = CAMERA_MSG_VENDOR_START,
+    CAMERA_MSG_META_DATA = 0x2000,
+    CAMERA_MSG_VENDOR_END = 0x8000,
     CAMERA_MSG_ALL_MSGS = 0xFFFF
 };
 
+/** meta data type in CameraMetaDataCallback */
+enum {
+    CAMERA_META_DATA_ASD = 0x001,    //ASD data
+    CAMERA_META_DATA_FD = 0x002,     //FD/FP data
+    CAMERA_META_DATA_HDR = 0x003,    //Auto HDR data
+};
+
 /** cmdType in sendCommand functions */
 enum {
     CAMERA_CMD_START_SMOOTH_ZOOM = 1,
@@ -189,7 +200,25 @@
      * IMPLEMENTATION_DEFINED, then HALv3 devices will use gralloc usage flags
      * of SW_READ_OFTEN.
      */
-    CAMERA_CMD_SET_VIDEO_FORMAT = 11
+    CAMERA_CMD_SET_VIDEO_FORMAT = 11,
+
+    CAMERA_CMD_VENDOR_START = 20,
+    /**
+     * Commands to enable/disable preview histogram
+     *
+     * Based on user's input to enable/disable histogram from the camera
+     * UI, send the appropriate command to the HAL to turn on/off the histogram
+     * stats and start sending the data to the application.
+     */
+    CAMERA_CMD_HISTOGRAM_ON = CAMERA_CMD_VENDOR_START,
+    CAMERA_CMD_HISTOGRAM_OFF = CAMERA_CMD_VENDOR_START + 1,
+    CAMERA_CMD_HISTOGRAM_SEND_DATA  = CAMERA_CMD_VENDOR_START + 2,
+    CAMERA_CMD_LONGSHOT_ON = CAMERA_CMD_VENDOR_START + 3,
+    CAMERA_CMD_LONGSHOT_OFF = CAMERA_CMD_VENDOR_START + 4,
+    CAMERA_CMD_STOP_LONGSHOT = CAMERA_CMD_VENDOR_START + 5,
+    CAMERA_CMD_METADATA_ON = CAMERA_CMD_VENDOR_START + 6,
+    CAMERA_CMD_METADATA_OFF = CAMERA_CMD_VENDOR_START + 7,
+    CAMERA_CMD_VENDOR_END = 200,
 };
 
 /** camera fatal errors */
@@ -284,10 +313,32 @@
      * -2000, -2000 if this is not supported.
      */
     int32_t mouth[2];
+    int32_t smile_degree;
+    int32_t smile_score;
+    int32_t blink_detected;
+    int32_t face_recognised;
+    int32_t gaze_angle;
+    int32_t updown_dir;
+    int32_t leftright_dir;
+    int32_t roll_dir;
+    int32_t left_right_gaze;
+    int32_t top_bottom_gaze;
+    int32_t leye_blink;
+    int32_t reye_blink;
 
 } camera_face_t;
 
 /**
+ * The information of a data type received in a camera frame.
+ */
+typedef enum {
+    /** Data buffer */
+    CAMERA_FRAME_DATA_BUF = 0x000,
+    /** File descriptor */
+    CAMERA_FRAME_DATA_FD = 0x100
+} camera_frame_data_type_t;
+
+/**
  * The metadata of the frame data.
  */
 typedef struct camera_frame_metadata {