diff --git a/battery_mitigation/battery_mitigation.cpp b/battery_mitigation/battery_mitigation.cpp index 70e8188..a7c1fd4 100644 --- a/battery_mitigation/battery_mitigation.cpp +++ b/battery_mitigation/battery_mitigation.cpp @@ -68,6 +68,7 @@ const char kReadyFilePath[] = "/sys/devices/virtual/pmic/mitigation/instruction/ const char kReadyProperty[] = "vendor.brownout.mitigation.ready"; const char kLastMealPath[] = "/data/vendor/mitigation/lastmeal.txt"; const char kBRRequestedProperty[] = "vendor.brownout_reason"; +const char kLastMealProperty[] = "vendor.brownout.br.feasible"; const std::regex kTimestampRegex("^\\S+\\s[0-9]+:[0-9]+:[0-9]+\\S+$"); int main(int /*argc*/, char ** /*argv*/) { @@ -85,6 +86,7 @@ int main(int /*argc*/, char ** /*argv*/) { std::ifstream src(cfg.LogFilePath, std::ios::in); std::ofstream dst(kLastMealPath, std::ios::out); dst << src.rdbuf(); + android::base::SetProperty(kLastMealProperty, "1"); } bool isBatteryMitigationReady = false; std::string ready_str; diff --git a/battery_mitigation/battery_mitigation.rc b/battery_mitigation/battery_mitigation.rc index fcc9a4f..c190431 100644 --- a/battery_mitigation/battery_mitigation.rc +++ b/battery_mitigation/battery_mitigation.rc @@ -87,6 +87,9 @@ on property:ro.boot.bootreason=reboot,ocp,buckcs && property:sys.boot.reason=reb on property:ro.boot.bootreason=reboot,ocp,buckbs && property:sys.boot.reason=reboot,ocp,buckbs setprop vendor.brownout_reason "ocp,buckbs" +on property:vendor.brownout.br.feasible=1 + chown system system data/vendor/mitigation/lastmeal.txt + service vendor.battery_mitigation /vendor/bin/hw/battery_mitigation user system group system diff --git a/battery_mitigation/sepolicy/battery_mitigation.te b/battery_mitigation/sepolicy/battery_mitigation.te index ff34c43..d956f0a 100644 --- a/battery_mitigation/sepolicy/battery_mitigation.te +++ b/battery_mitigation/sepolicy/battery_mitigation.te @@ -5,6 +5,7 @@ get_prop(battery_mitigation, boot_status_prop) get_prop(battery_mitigation, vendor_brownout_reason_prop) get_prop(battery_mitigation, system_boot_reason_prop) set_prop(battery_mitigation, vendor_mitigation_ready_prop) +set_prop(battery_mitigation, vendor_brownout_br_feasible_prop) hal_client_domain(battery_mitigation, hal_thermal); hal_client_domain(battery_mitigation, hal_health); diff --git a/battery_mitigation/sepolicy/property.te b/battery_mitigation/sepolicy/property.te index d750f09..3dfa12e 100644 --- a/battery_mitigation/sepolicy/property.te +++ b/battery_mitigation/sepolicy/property.te @@ -1,3 +1,4 @@ # Battery Mitigation vendor_internal_prop(vendor_mitigation_ready_prop) vendor_public_prop(vendor_brownout_reason_prop) +vendor_internal_prop(vendor_brownout_br_feasible_prop) diff --git a/battery_mitigation/sepolicy/property_contexts b/battery_mitigation/sepolicy/property_contexts index 014cb14..d5d538a 100644 --- a/battery_mitigation/sepolicy/property_contexts +++ b/battery_mitigation/sepolicy/property_contexts @@ -1,3 +1,4 @@ # Battery Mitigation vendor.brownout.mitigation.ready u:object_r:vendor_mitigation_ready_prop:s0 vendor.brownout_reason u:object_r:vendor_brownout_reason_prop:s0 +vendor.brownout.br.feasible u:object_r:vendor_brownout_br_feasible_prop:s0 diff --git a/battery_mitigation/sepolicy/vendor_init.te b/battery_mitigation/sepolicy/vendor_init.te index 275f377..1517b13 100644 --- a/battery_mitigation/sepolicy/vendor_init.te +++ b/battery_mitigation/sepolicy/vendor_init.te @@ -1,3 +1,4 @@ # Battery Mitigation set_prop(vendor_init, vendor_brownout_reason_prop) +get_prop(vendor_init, vendor_brownout_br_feasible_prop) get_prop(vendor_init, system_boot_reason_prop)