summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-01-22 10:28:14 +0100
committerGitHub <noreply@github.com>2022-01-22 10:28:14 +0100
commit8433edacb34be3e3db9462c91d91c4a78987871d (patch)
tree34116e9c9f4f6384c76641b893a90021e290c475
parentMerge pull request #7737 from bunnei/fix-dummy-thread-leak (diff)
parentinput_common: Report battery for UDP controllers (diff)
downloadyuzu-8433edacb34be3e3db9462c91d91c4a78987871d.tar
yuzu-8433edacb34be3e3db9462c91d91c4a78987871d.tar.gz
yuzu-8433edacb34be3e3db9462c91d91c4a78987871d.tar.bz2
yuzu-8433edacb34be3e3db9462c91d91c4a78987871d.tar.lz
yuzu-8433edacb34be3e3db9462c91d91c4a78987871d.tar.xz
yuzu-8433edacb34be3e3db9462c91d91c4a78987871d.tar.zst
yuzu-8433edacb34be3e3db9462c91d91c4a78987871d.zip
-rw-r--r--src/input_common/drivers/udp_client.cpp21
-rw-r--r--src/input_common/drivers/udp_client.h4
2 files changed, 25 insertions, 0 deletions
diff --git a/src/input_common/drivers/udp_client.cpp b/src/input_common/drivers/udp_client.cpp
index c8a12c7d5..9aaeb91be 100644
--- a/src/input_common/drivers/udp_client.cpp
+++ b/src/input_common/drivers/udp_client.cpp
@@ -192,6 +192,25 @@ std::size_t UDPClient::GetClientNumber(std::string_view host, u16 port) const {
return MAX_UDP_CLIENTS;
}
+BatteryLevel UDPClient::GetBatteryLevel(Response::Battery battery) const {
+ switch (battery) {
+ case Response::Battery::Dying:
+ return BatteryLevel::Empty;
+ case Response::Battery::Low:
+ return BatteryLevel::Critical;
+ case Response::Battery::Medium:
+ return BatteryLevel::Low;
+ case Response::Battery::High:
+ return BatteryLevel::Medium;
+ case Response::Battery::Full:
+ case Response::Battery::Charged:
+ return BatteryLevel::Full;
+ case Response::Battery::Charging:
+ default:
+ return BatteryLevel::Charging;
+ }
+}
+
void UDPClient::OnVersion([[maybe_unused]] Response::Version data) {
LOG_TRACE(Input, "Version packet received: {}", data.version);
}
@@ -299,6 +318,8 @@ void UDPClient::OnPadData(Response::PadData data, std::size_t client) {
const int button = static_cast<int>(buttons[i]);
SetButton(identifier, button, button_status);
}
+
+ SetBattery(identifier, GetBatteryLevel(data.info.battery));
}
void UDPClient::StartCommunication(std::size_t client, const std::string& host, u16 port) {
diff --git a/src/input_common/drivers/udp_client.h b/src/input_common/drivers/udp_client.h
index 1adc947c4..61a1fff37 100644
--- a/src/input_common/drivers/udp_client.h
+++ b/src/input_common/drivers/udp_client.h
@@ -15,6 +15,7 @@ namespace InputCommon::CemuhookUDP {
class Socket;
namespace Response {
+enum class Battery : u8;
struct PadData;
struct PortInfo;
struct TouchPad;
@@ -137,6 +138,9 @@ private:
// Translates configuration to client number
std::size_t GetClientNumber(std::string_view host, u16 port) const;
+ // Translates UDP battery level to input engine battery level
+ BatteryLevel GetBatteryLevel(Response::Battery battery) const;
+
void OnVersion(Response::Version);
void OnPortInfo(Response::PortInfo);
void OnPadData(Response::PadData, std::size_t client);