Problem
The Xbox One virtual gamepad profile currently advertises that battery state is unsupported, even though its HID descriptor and input-report format can represent battery strength.
make_xbox_gip_profile() sets supports_battery from include_share_button. Xbox One passes false, while Xbox Series passes true, unintentionally coupling battery support to the presence of the Share button.
As a result:
profiles::xbox_one().capabilities.supports_battery is false.
gamepad_profile_support() reports no battery support.
GamepadStateAdapter::set_battery() and clear_battery() reject Xbox One with unsupported_profile.
However, both Xbox One and Xbox Series:
- use the 17-byte GIP-shaped input report;
- include the Generic Device Controls Battery Strength input in their HID descriptors; and
- write normalized battery strength to byte 16 in
pack_xbox_gip_input_report().
Expected behavior
The Xbox One profile should advertise battery support independently of Share-button support, and consumers such as Sunshine should be able to submit the client controller battery percentage through the normal adapter API.
Proposed direction
- Decouple
supports_battery from include_share_button in make_xbox_gip_profile().
- Advertise battery support for both Xbox One and Xbox Series profiles.
- Add explicit profile-support and adapter tests for Xbox One battery updates.
- Exercise Xbox One report packing with a non-default battery percentage.
- Verify on a Windows host that a consumer can observe the reported battery level.
- Update the end-user compatibility table after the behavior is verified.
Acceptance criteria
profiles::xbox_one() reports supports_battery == true.
GamepadStateAdapter::set_battery() and clear_battery() succeed for Xbox One.
- The configured battery percentage is present in byte 16 of the Xbox One input report.
- Existing Xbox Series battery behavior remains unchanged.
- Automated tests cover the capability and report behavior.
Problem
The Xbox One virtual gamepad profile currently advertises that battery state is unsupported, even though its HID descriptor and input-report format can represent battery strength.
make_xbox_gip_profile()setssupports_batteryfrominclude_share_button. Xbox One passesfalse, while Xbox Series passestrue, unintentionally coupling battery support to the presence of the Share button.As a result:
profiles::xbox_one().capabilities.supports_batteryis false.gamepad_profile_support()reports no battery support.GamepadStateAdapter::set_battery()andclear_battery()reject Xbox One withunsupported_profile.However, both Xbox One and Xbox Series:
pack_xbox_gip_input_report().Expected behavior
The Xbox One profile should advertise battery support independently of Share-button support, and consumers such as Sunshine should be able to submit the client controller battery percentage through the normal adapter API.
Proposed direction
supports_batteryfrominclude_share_buttoninmake_xbox_gip_profile().Acceptance criteria
profiles::xbox_one()reportssupports_battery == true.GamepadStateAdapter::set_battery()andclear_battery()succeed for Xbox One.