diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hid/emulated_controller.cpp | 14 | ||||
| -rw-r--r-- | src/core/hid/hid_types.h | 15 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 6 |
3 files changed, 20 insertions, 15 deletions
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index 2af3f06fc..8e2894449 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp | |||
| @@ -1091,30 +1091,30 @@ void EmulatedController::SetBattery(const Common::Input::CallbackStatus& callbac | |||
| 1091 | 1091 | ||
| 1092 | bool is_charging = false; | 1092 | bool is_charging = false; |
| 1093 | bool is_powered = false; | 1093 | bool is_powered = false; |
| 1094 | NpadBatteryLevel battery_level = 0; | 1094 | NpadBatteryLevel battery_level = NpadBatteryLevel::Empty; |
| 1095 | switch (controller.battery_values[index]) { | 1095 | switch (controller.battery_values[index]) { |
| 1096 | case Common::Input::BatteryLevel::Charging: | 1096 | case Common::Input::BatteryLevel::Charging: |
| 1097 | is_charging = true; | 1097 | is_charging = true; |
| 1098 | is_powered = true; | 1098 | is_powered = true; |
| 1099 | battery_level = 6; | 1099 | battery_level = NpadBatteryLevel::Full; |
| 1100 | break; | 1100 | break; |
| 1101 | case Common::Input::BatteryLevel::Medium: | 1101 | case Common::Input::BatteryLevel::Medium: |
| 1102 | battery_level = 6; | 1102 | battery_level = NpadBatteryLevel::High; |
| 1103 | break; | 1103 | break; |
| 1104 | case Common::Input::BatteryLevel::Low: | 1104 | case Common::Input::BatteryLevel::Low: |
| 1105 | battery_level = 4; | 1105 | battery_level = NpadBatteryLevel::Low; |
| 1106 | break; | 1106 | break; |
| 1107 | case Common::Input::BatteryLevel::Critical: | 1107 | case Common::Input::BatteryLevel::Critical: |
| 1108 | battery_level = 2; | 1108 | battery_level = NpadBatteryLevel::Critical; |
| 1109 | break; | 1109 | break; |
| 1110 | case Common::Input::BatteryLevel::Empty: | 1110 | case Common::Input::BatteryLevel::Empty: |
| 1111 | battery_level = 0; | 1111 | battery_level = NpadBatteryLevel::Empty; |
| 1112 | break; | 1112 | break; |
| 1113 | case Common::Input::BatteryLevel::None: | 1113 | case Common::Input::BatteryLevel::None: |
| 1114 | case Common::Input::BatteryLevel::Full: | 1114 | case Common::Input::BatteryLevel::Full: |
| 1115 | default: | 1115 | default: |
| 1116 | is_powered = true; | 1116 | is_powered = true; |
| 1117 | battery_level = 8; | 1117 | battery_level = NpadBatteryLevel::Full; |
| 1118 | break; | 1118 | break; |
| 1119 | } | 1119 | } |
| 1120 | 1120 | ||
diff --git a/src/core/hid/hid_types.h b/src/core/hid/hid_types.h index 00beb40dd..7ba75a50c 100644 --- a/src/core/hid/hid_types.h +++ b/src/core/hid/hid_types.h | |||
| @@ -302,6 +302,15 @@ enum class TouchScreenModeForNx : u8 { | |||
| 302 | Heat2, | 302 | Heat2, |
| 303 | }; | 303 | }; |
| 304 | 304 | ||
| 305 | // This is nn::hid::system::NpadBatteryLevel | ||
| 306 | enum class NpadBatteryLevel : u32 { | ||
| 307 | Empty, | ||
| 308 | Critical, | ||
| 309 | Low, | ||
| 310 | High, | ||
| 311 | Full, | ||
| 312 | }; | ||
| 313 | |||
| 305 | // This is nn::hid::NpadStyleTag | 314 | // This is nn::hid::NpadStyleTag |
| 306 | struct NpadStyleTag { | 315 | struct NpadStyleTag { |
| 307 | union { | 316 | union { |
| @@ -385,16 +394,12 @@ struct NpadGcTriggerState { | |||
| 385 | }; | 394 | }; |
| 386 | static_assert(sizeof(NpadGcTriggerState) == 0x10, "NpadGcTriggerState is an invalid size"); | 395 | static_assert(sizeof(NpadGcTriggerState) == 0x10, "NpadGcTriggerState is an invalid size"); |
| 387 | 396 | ||
| 388 | // This is nn::hid::system::NpadBatteryLevel | ||
| 389 | using NpadBatteryLevel = u32; | ||
| 390 | static_assert(sizeof(NpadBatteryLevel) == 0x4, "NpadBatteryLevel is an invalid size"); | ||
| 391 | |||
| 392 | // This is nn::hid::system::NpadPowerInfo | 397 | // This is nn::hid::system::NpadPowerInfo |
| 393 | struct NpadPowerInfo { | 398 | struct NpadPowerInfo { |
| 394 | bool is_powered{}; | 399 | bool is_powered{}; |
| 395 | bool is_charging{}; | 400 | bool is_charging{}; |
| 396 | INSERT_PADDING_BYTES(0x6); | 401 | INSERT_PADDING_BYTES(0x6); |
| 397 | NpadBatteryLevel battery_level{8}; | 402 | NpadBatteryLevel battery_level{NpadBatteryLevel::Full}; |
| 398 | }; | 403 | }; |
| 399 | static_assert(sizeof(NpadPowerInfo) == 0xC, "NpadPowerInfo is an invalid size"); | 404 | static_assert(sizeof(NpadPowerInfo) == 0xC, "NpadPowerInfo is an invalid size"); |
| 400 | 405 | ||
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index bc822f19e..21695bda2 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -1108,9 +1108,9 @@ Result Controller_NPad::DisconnectNpad(Core::HID::NpadIdType npad_id) { | |||
| 1108 | shared_memory->sixaxis_dual_right_properties.raw = 0; | 1108 | shared_memory->sixaxis_dual_right_properties.raw = 0; |
| 1109 | shared_memory->sixaxis_left_properties.raw = 0; | 1109 | shared_memory->sixaxis_left_properties.raw = 0; |
| 1110 | shared_memory->sixaxis_right_properties.raw = 0; | 1110 | shared_memory->sixaxis_right_properties.raw = 0; |
| 1111 | shared_memory->battery_level_dual = 0; | 1111 | shared_memory->battery_level_dual = Core::HID::NpadBatteryLevel::Empty; |
| 1112 | shared_memory->battery_level_left = 0; | 1112 | shared_memory->battery_level_left = Core::HID::NpadBatteryLevel::Empty; |
| 1113 | shared_memory->battery_level_right = 0; | 1113 | shared_memory->battery_level_right = Core::HID::NpadBatteryLevel::Empty; |
| 1114 | shared_memory->fullkey_color = { | 1114 | shared_memory->fullkey_color = { |
| 1115 | .attribute = ColorAttribute::NoController, | 1115 | .attribute = ColorAttribute::NoController, |
| 1116 | .fullkey = {}, | 1116 | .fullkey = {}, |