mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-10-30 23:42:42 +01:00 
			
		
		
		
	Add supporting of the gamepads batteries
This commit is contained in:
		| @@ -154,6 +154,7 @@ const std::tuple<uint8_t, float, std::string, float> waybar::modules::Battery::g | |||||||
|     uint32_t    total_energy = 0;  // μWh |     uint32_t    total_energy = 0;  // μWh | ||||||
|     uint32_t    total_energy_full = 0; |     uint32_t    total_energy_full = 0; | ||||||
|     uint32_t    total_energy_full_design = 0; |     uint32_t    total_energy_full_design = 0; | ||||||
|  |     uint32_t    total_capacity{0}; | ||||||
|     std::string status = "Unknown"; |     std::string status = "Unknown"; | ||||||
|     for (auto const& item : batteries_) { |     for (auto const& item : batteries_) { | ||||||
|       auto bat = item.first; |       auto bat = item.first; | ||||||
| @@ -161,6 +162,7 @@ const std::tuple<uint8_t, float, std::string, float> waybar::modules::Battery::g | |||||||
|       uint32_t    energy_full; |       uint32_t    energy_full; | ||||||
|       uint32_t    energy_now; |       uint32_t    energy_now; | ||||||
|       uint32_t    energy_full_design; |       uint32_t    energy_full_design; | ||||||
|  |       uint32_t    capacity{0}; | ||||||
|       std::string _status; |       std::string _status; | ||||||
|       std::getline(std::ifstream(bat / "status"), _status); |       std::getline(std::ifstream(bat / "status"), _status); | ||||||
|  |  | ||||||
| @@ -188,11 +190,18 @@ const std::tuple<uint8_t, float, std::string, float> waybar::modules::Battery::g | |||||||
|         energy_now = ((uint64_t)charge_now * (uint64_t)voltage_now) / 1000000; |         energy_now = ((uint64_t)charge_now * (uint64_t)voltage_now) / 1000000; | ||||||
|         energy_full = ((uint64_t)charge_full * (uint64_t)voltage_now) / 1000000; |         energy_full = ((uint64_t)charge_full * (uint64_t)voltage_now) / 1000000; | ||||||
|         energy_full_design = ((uint64_t)charge_full_design * (uint64_t)voltage_now) / 1000000; |         energy_full_design = ((uint64_t)charge_full_design * (uint64_t)voltage_now) / 1000000; | ||||||
|  |       } // Gamepads such as PS Dualshock provide the only capacity | ||||||
|  |         else if (fs::exists(bat / "energy_now") && fs::exists(bat / "energy_full")) { | ||||||
|  |           std::ifstream(bat / "power_now") >> power_now; | ||||||
|  |           std::ifstream(bat / "energy_now") >> energy_now; | ||||||
|  |           std::ifstream(bat / "energy_full") >> energy_full; | ||||||
|  |           std::ifstream(bat / "energy_full_design") >> energy_full_design; | ||||||
|       } else { |       } else { | ||||||
|         std::ifstream(bat / "power_now") >> power_now; |         std::ifstream(bat / "capacity") >> capacity; | ||||||
|         std::ifstream(bat / "energy_now") >> energy_now; |         power_now          = 0; | ||||||
|         std::ifstream(bat / "energy_full") >> energy_full; |         energy_now         = 0; | ||||||
|         std::ifstream(bat / "energy_full_design") >> energy_full_design; |         energy_full        = 0; | ||||||
|  |         energy_full_design = 0; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       // Show the "smallest" status among all batteries |       // Show the "smallest" status among all batteries | ||||||
| @@ -203,6 +212,7 @@ const std::tuple<uint8_t, float, std::string, float> waybar::modules::Battery::g | |||||||
|       total_energy += energy_now; |       total_energy += energy_now; | ||||||
|       total_energy_full += energy_full; |       total_energy_full += energy_full; | ||||||
|       total_energy_full_design += energy_full_design; |       total_energy_full_design += energy_full_design; | ||||||
|  |       total_capacity += capacity; | ||||||
|     } |     } | ||||||
|     if (!adapter_.empty() && status == "Discharging") { |     if (!adapter_.empty() && status == "Discharging") { | ||||||
|       bool online; |       bool online; | ||||||
| @@ -222,7 +232,12 @@ const std::tuple<uint8_t, float, std::string, float> waybar::modules::Battery::g | |||||||
|         time_remaining = 0.0f; |         time_remaining = 0.0f; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     float capacity = ((float)total_energy * 100.0f / (float) total_energy_full); |     float capacity{0.0f}; | ||||||
|  |     if(total_energy_full > 0.0f) { | ||||||
|  |       capacity = ((float)total_energy * 100.0f / (float) total_energy_full); | ||||||
|  |     } else { | ||||||
|  |       capacity = (float)total_capacity; | ||||||
|  |     } | ||||||
|     // Handle design-capacity |     // Handle design-capacity | ||||||
|     if (config_["design-capacity"].isBool() ? config_["design-capacity"].asBool() : false) { |     if (config_["design-capacity"].isBool() ? config_["design-capacity"].asBool() : false) { | ||||||
|         capacity = ((float)total_energy * 100.0f / (float) total_energy_full_design); |         capacity = ((float)total_energy * 100.0f / (float) total_energy_full_design); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Viktar Lukashonak
					Viktar Lukashonak