early-access version 2422

This commit is contained in:
pineappleEA 2022-01-21 04:04:34 +01:00
parent 899ade82ac
commit eb6157eec1
4 changed files with 32 additions and 1 deletions

View file

@ -1,7 +1,7 @@
yuzu emulator early access yuzu emulator early access
============= =============
This is the source code for early-access 2420. This is the source code for early-access 2422.
## Legal Notice ## Legal Notice

View file

@ -45,6 +45,12 @@ template <typename T>
return static_cast<u32>(log2_f + static_cast<u64>((value ^ (1ULL << log2_f)) != 0ULL)); return static_cast<u32>(log2_f + static_cast<u64>((value ^ (1ULL << log2_f)) != 0ULL));
} }
template <typename T>
requires std::is_unsigned_v<T>
[[nodiscard]] constexpr bool IsPow2(T value) {
return std::has_single_bit(value);
}
template <typename T> template <typename T>
requires std::is_integral_v<T> requires std::is_integral_v<T>
[[nodiscard]] T NextPow2(T value) { [[nodiscard]] T NextPow2(T value) {

View file

@ -192,6 +192,25 @@ std::size_t UDPClient::GetClientNumber(std::string_view host, u16 port) const {
return MAX_UDP_CLIENTS; 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) { void UDPClient::OnVersion([[maybe_unused]] Response::Version data) {
LOG_TRACE(Input, "Version packet received: {}", data.version); 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]); const int button = static_cast<int>(buttons[i]);
SetButton(identifier, button, button_status); SetButton(identifier, button, button_status);
} }
SetBattery(identifier, GetBatteryLevel(data.info.battery));
} }
void UDPClient::StartCommunication(std::size_t client, const std::string& host, u16 port) { void UDPClient::StartCommunication(std::size_t client, const std::string& host, u16 port) {

View file

@ -15,6 +15,7 @@ namespace InputCommon::CemuhookUDP {
class Socket; class Socket;
namespace Response { namespace Response {
enum class Battery : u8;
struct PadData; struct PadData;
struct PortInfo; struct PortInfo;
struct TouchPad; struct TouchPad;
@ -137,6 +138,9 @@ private:
// Translates configuration to client number // Translates configuration to client number
std::size_t GetClientNumber(std::string_view host, u16 port) const; 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 OnVersion(Response::Version);
void OnPortInfo(Response::PortInfo); void OnPortInfo(Response::PortInfo);
void OnPadData(Response::PadData, std::size_t client); void OnPadData(Response::PadData, std::size_t client);