XR_EXT_interaction_profile_battery_state_display

Name String

XR_EXT_interaction_profile_battery_state_display

Extension Type

Rozszerzenie instancji

Registered Extension Number

837

Revision

1

Ratification Status

Zatwierdzone

Extension and Version Dependencies

OpenXR 1.0

Last Modified Date

2025-10-21

IP Status

Brak znanych roszczeń dotyczących własności intelektualnej.

Contributors

John Kearney, Meta
Daniel Willmott, Valve
Denny Rönngren, Varjo
Jakob Bornecrantz, NVIDIA
Nathan Nuber, Valve
Lachlan Ford, Google
Nihav Jain, Google

Przegląd

Rozszerzenie XR_EXT_interaction_profile_battery_state_display umożliwia aplikacjom wysyłanie do środowiska wykonawczego zapytań o informacje o stanie baterii urządzeń używanych z profilami interakcji. Informacje o stanie baterii powinny być używane tylko do wyświetlania, a środowisko wykonawcze powinno dbać o to, aby te informacje były zgodne z informacjami używanymi w wbudowanych interfejsach systemowych.

W przypadkach, gdy wiele urządzeń fizycznych przekazuje dane wejściowe do działań powiązanych ze ścieżką najwyższego poziomu, np. gdy środowiska wykonawcze przeprowadzają ponowne mapowanie na potrzeby dostosowania przez użytkownika lub ułatwień dostępu, środowiska te powinny dołożyć wszelkich starań, aby przedstawić przydatne informacje o baterii w postaci pojedynczej wartości.

W szczególności nie oczekuje się, że te informacje będą kalibrowane między środowiskami wykonawczymi lub urządzeniami, i nie należy ich używać do generowania ostrzeżeń ani do modyfikowania zachowania aplikacji.

Wysyłanie zapytań o stan baterii

Struktura XrBatteryStateDisplayEXT jest zdefiniowana w ten sposób:

typedef struct XrBatteryStateDisplayEXT {
    XrStructureType                       type;
    void*                                 next;
    XrBatteryStateDisplayStateFlagsEXT    stateFlags;
    float                                 batteryLevel;
} XrBatteryStateDisplayEXT;

Opisy elementów

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktur.
  • stateFlags opisuje ważność batteryLevel za pomocą masek bitowych zdefiniowanych w XrBatteryStateDisplayStateFlagBitsEXT
  • batteryLevel to poziom naładowania baterii (od 0,0f do 1,0f) urządzenia połączonego z powiązanym elementem lub działaniem.

Aby wysłać zapytanie o poziom baterii, aplikacja łączy strukturę XrBatteryStateDisplayEXT z łańcuchem XrInteractionProfileState :: next podczas wywoływania xrGetCurrentInteractionProfile .

Jeśli xrGetCurrentInteractionProfile ustawi XrInteractionProfileState :: interactionProfile na XR_NULL_PATH , środowisko wykonawcze nie może ustawić bitu XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT w stateFlags .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT wskazuje, czy batteryLevel zawiera prawidłowe dane. Aplikacja nie może odczytywać batteryLevel, jeśli bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT nie jest ustawiony w stateFlags .

Prawidłowe użycie (niejawne)

Element XrBatteryStateDisplayEXT :: stateFlags jest typu podanego poniżej i zawiera bitowe OR zera lub większej liczby bitów zdefiniowanych w XrBatteryStateDisplayStateFlagBitsEXT .

typedef XrFlags64 XrBatteryStateDisplayStateFlagsEXT;

// Flag bits for XrBatteryStateDisplayStateFlagsEXT
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT = 0x00000001;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT = 0x00000002;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT = 0x00000004;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT = 0x00000008;

Bity flag mają te znaczenia:

Opisy flag

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT – wskazuje ważność XrBatteryStateDisplayEXT :: batteryLevel.
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT – wskazuje, że urządzenie powiązane z profilem interakcji jest ładowane.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT – wskazuje, że urządzenie powiązane z profilem interakcji jest podłączone do źródła zasilania.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT – wskazuje, że urządzenie powiązane z profilem interakcji nie ma baterii.

Przykład

// previously initialized
extern XrSession session;
extern XrPath topLevelUserPath;

XrBatteryStateDisplayEXT batteryStateDisplay{XR_TYPE_BATTERY_STATE_DISPLAY_EXT};
XrInteractionProfileState ipState{XR_TYPE_INTERACTION_PROFILE_STATE, &batteryStateDisplay};
CHK_XR(xrGetCurrentInteractionProfile(session, topLevelUserPath, &ipState));
if ((batteryStateDisplay.stateFlags & XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT) != 0) {
  // use value of batteryStateDisplay.batteryLevel
}

Nowe struktury

Nowe wartości w polu enum

Nowe maski bitowe

Nowe stałe w polu enum

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Rozszerzanie XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Problemy

  • Czy za pomocą tego rozszerzenia aplikacja może wysyłać zapytania o poziom baterii wyświetlany na urządzeniu montowanym na głowie?

    • Rozwiązane. Nie bezpośrednio. To rozszerzenie obsługuje tylko zwracanie poziomu naładowania baterii wyświetlanego w przypadku ścieżek /user najwyższego poziomu z bieżącymi profilami interakcji. Jeśli aplikacja sugeruje powiązania z profilem interakcji dla urządzenia montowanego na głowie ( /user/head), a środowisko wykonawcze aktywuje ten profil interakcji, może zwrócić poziom naładowania baterii dla tej ścieżki /user najwyższego poziomu.

Historia zmian

  • Wersja 1, 2025-10-21 (John Kearney)

    • Pierwsza wersja robocza.