summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-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 {
192 return MAX_UDP_CLIENTS; 192 return MAX_UDP_CLIENTS;
193} 193}
194 194
195BatteryLevel UDPClient::GetBatteryLevel(Response::Battery battery) const {
196 switch (battery) {
197 case Response::Battery::Dying:
198 return BatteryLevel::Empty;
199 case Response::Battery::Low:
200 return BatteryLevel::Critical;
201 case Response::Battery::Medium:
202 return BatteryLevel::Low;
203 case Response::Battery::High:
204 return BatteryLevel::Medium;
205 case Response::Battery::Full:
206 case Response::Battery::Charged:
207 return BatteryLevel::Full;
208 case Response::Battery::Charging:
209 default:
210 return BatteryLevel::Charging;
211 }
212}
213
195void UDPClient::OnVersion([[maybe_unused]] Response::Version data) { 214void UDPClient::OnVersion([[maybe_unused]] Response::Version data) {
196 LOG_TRACE(Input, "Version packet received: {}", data.version); 215 LOG_TRACE(Input, "Version packet received: {}", data.version);
197} 216}
@@ -299,6 +318,8 @@ void UDPClient::OnPadData(Response::PadData data, std::size_t client) {
299 const int button = static_cast<int>(buttons[i]); 318 const int button = static_cast<int>(buttons[i]);
300 SetButton(identifier, button, button_status); 319 SetButton(identifier, button, button_status);
301 } 320 }
321
322 SetBattery(identifier, GetBatteryLevel(data.info.battery));
302} 323}
303 324
304void UDPClient::StartCommunication(std::size_t client, const std::string& host, u16 port) { 325void 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 {
15class Socket; 15class Socket;
16 16
17namespace Response { 17namespace Response {
18enum class Battery : u8;
18struct PadData; 19struct PadData;
19struct PortInfo; 20struct PortInfo;
20struct TouchPad; 21struct TouchPad;
@@ -137,6 +138,9 @@ private:
137 // Translates configuration to client number 138 // Translates configuration to client number
138 std::size_t GetClientNumber(std::string_view host, u16 port) const; 139 std::size_t GetClientNumber(std::string_view host, u16 port) const;
139 140
141 // Translates UDP battery level to input engine battery level
142 BatteryLevel GetBatteryLevel(Response::Battery battery) const;
143
140 void OnVersion(Response::Version); 144 void OnVersion(Response::Version);
141 void OnPortInfo(Response::PortInfo); 145 void OnPortInfo(Response::PortInfo);
142 void OnPadData(Response::PadData, std::size_t client); 146 void OnPadData(Response::PadData, std::size_t client);