From f0d9151eb085933de7f21839b47f04287dc66f00 Mon Sep 17 00:00:00 2001 From: patrickdown Date: Sun, 26 Feb 2023 17:30:40 -0500 Subject: [PATCH] Initial commit Project environment is setup --- .gitattributes | 2 + .gitignore | 26 + LICENSE.txt | 21 + README.md | 135 +- SConstruct | 43 + example/addons/tiltfive/TiltFiveNative.dll | Bin 0 -> 624128 bytes ...tiltfive.windows.template_debug.x86_64.dll | Bin 0 -> 105472 bytes example/addons/tiltfive/tiltfive.gdextension | 14 + example/icon.png | Bin 0 -> 3523 bytes example/icon.png.import | 34 + example/main.gd | 9 + example/main.tscn | 8 + example/project.godot | 16 + extension/T5Integration/Glasses.cpp | 541 ++++++ extension/T5Integration/Glasses.h | 208 +++ extension/T5Integration/LICENSE.txt | 21 + extension/T5Integration/Logging.cpp | 55 + extension/T5Integration/Logging.h | 76 + extension/T5Integration/ObjectRegistry.cpp | 56 + extension/T5Integration/ObjectRegistry.h | 37 + extension/T5Integration/README.md | 8 + extension/T5Integration/StateFlags.h | 74 + extension/T5Integration/T5Math.h | 12 + extension/T5Integration/T5Service.cpp | 231 +++ extension/T5Integration/T5Service.h | 91 + extension/T5Integration/TaskSystem.cpp | 293 ++++ extension/T5Integration/TaskSystem.h | 321 ++++ extension/T5Integration/Wand.cpp | 168 ++ extension/T5Integration/Wand.h | 95 ++ extension/TiltFiveNDK/README.txt | 82 + .../include/include/TiltFiveNative.h | 961 +++++++++++ .../include/include/TiltFiveNative.hpp | 1518 +++++++++++++++++ .../TiltFiveNDK/include/include/errors.h | 157 ++ .../TiltFiveNDK/include/include/errors.hpp | 166 ++ .../TiltFiveNDK/include/include/result.hpp | 369 ++++ extension/TiltFiveNDK/include/include/types.h | 438 +++++ .../TiltFiveNDK/lib/win64/TiltFiveNative.dll | Bin 0 -> 624128 bytes .../lib/win64/TiltFiveNative.dll.if.lib | Bin 0 -> 9120 bytes extension/src/TiltFiveManager.cpp | 22 + extension/src/TiltFiveManager.h | 28 + extension/src/register_types.cpp | 39 + extension/src/register_types.h | 7 + 42 files changed, 6294 insertions(+), 88 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 SConstruct create mode 100644 example/addons/tiltfive/TiltFiveNative.dll create mode 100644 example/addons/tiltfive/libgdtiltfive.windows.template_debug.x86_64.dll create mode 100644 example/addons/tiltfive/tiltfive.gdextension create mode 100644 example/icon.png create mode 100644 example/icon.png.import create mode 100644 example/main.gd create mode 100644 example/main.tscn create mode 100644 example/project.godot create mode 100644 extension/T5Integration/Glasses.cpp create mode 100644 extension/T5Integration/Glasses.h create mode 100644 extension/T5Integration/LICENSE.txt create mode 100644 extension/T5Integration/Logging.cpp create mode 100644 extension/T5Integration/Logging.h create mode 100644 extension/T5Integration/ObjectRegistry.cpp create mode 100644 extension/T5Integration/ObjectRegistry.h create mode 100644 extension/T5Integration/README.md create mode 100644 extension/T5Integration/StateFlags.h create mode 100644 extension/T5Integration/T5Math.h create mode 100644 extension/T5Integration/T5Service.cpp create mode 100644 extension/T5Integration/T5Service.h create mode 100644 extension/T5Integration/TaskSystem.cpp create mode 100644 extension/T5Integration/TaskSystem.h create mode 100644 extension/T5Integration/Wand.cpp create mode 100644 extension/T5Integration/Wand.h create mode 100644 extension/TiltFiveNDK/README.txt create mode 100644 extension/TiltFiveNDK/include/include/TiltFiveNative.h create mode 100644 extension/TiltFiveNDK/include/include/TiltFiveNative.hpp create mode 100644 extension/TiltFiveNDK/include/include/errors.h create mode 100644 extension/TiltFiveNDK/include/include/errors.hpp create mode 100644 extension/TiltFiveNDK/include/include/result.hpp create mode 100644 extension/TiltFiveNDK/include/include/types.h create mode 100644 extension/TiltFiveNDK/lib/win64/TiltFiveNative.dll create mode 100644 extension/TiltFiveNDK/lib/win64/TiltFiveNative.dll.if.lib create mode 100644 extension/src/TiltFiveManager.cpp create mode 100644 extension/src/TiltFiveManager.h create mode 100644 extension/src/register_types.cpp create mode 100644 extension/src/register_types.h diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..237e0b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Godot 4+ specific ignores +.godot/ +build/* +.sconsign*.dblite +.vscode + +# Binaries +*.o +*.os +*.so +*.obj +*.bc +*.pyc +*.dblite +*.pdb +*.lib +*.config +*.creator +*.creator.user +*.files +*.includes +*.idb +*.exp + + +!extension/TiltFiveNDK/lib/*/* \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..a3b1de6 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Patrick H Down + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 9dca5fe..04a9b43 100644 --- a/README.md +++ b/README.md @@ -1,109 +1,68 @@ -# GDExtension-Summator -
- - Ko-Fi Badge - - - Twitter Badge - - - Mastodon Badge - -
- -This repository is for showcasing the new GDExtension system in Godot 4. -The C++ code is from the [Custom modules example](https://docs.godotengine.org/en/latest/development/cpp/custom_modules_in_cpp.html "Click to get to the docs") of the Godot docs. - -----> **Feel free to use this repository as a template for your GDExtensions** - -## :tada: Using the extension -After compiling the extension succesfully, you can now use the Summator Class inside Godot -```gdscript -func _ready() -> void: - var s = Summator.new() - s.add(10) - s.add(20) - s.add(30) - print(s.get_total()) - # outputs 60 in the console - s.reset() -``` +# TiltFiveGodot -## 🔢 Versioning -This repository is being updated regularly to work with the latest beta release of the master (4.0) branch. If you can't compile the extension, please open an issue. +TiltFiveGodot is **GDNative** extension for the Godot engine to connect to the [Tilt Five](https://www.tiltfive.com/) +system. It implements Godot's **ARVRinterface** and has GDNative class called TiltFiveManager for scripts to connect +glasses and handle connection events. -----> **Most Recent Update: Godot 4 RC 4 working** +## Platforms -## ❓ What? How? Why? -If you are not sure what each file in this project does or if you want to know in detail: I wrote a blog post about the purpose of each file on [my Ko-Fi page](https://ko-fi.com/post/GDExtension--Godot-SUPERCHARGED--How-to-get-star-Z8Z4GLUSE). +Currently only Windows 10/11 is supported because that is the only platform supported by Tilt Five. T5 linux support +is supposed to come at some point in the future and support for that platform will revisited when it becomes available. -## Alternative templates -If you want to work with the latest master and godot-cpp version, check out this [GDExtension template by Nathan Franke](https://github.com/nathanfranke/gdextension). -If you are more used to CMake than Scons you can use [this template here by asmalone](https://github.com/asmaloney/GDExtensionTemplate) +## Build +### Prerequisites -## ℹ️ Contributing -If you can't compile the extension, please open an issue with the error log in your terminal and/or the error log in the editor (if you can't run the example scene). +Make sure you have [SCons](https://scons.org/) installed and a C++20 compatible +compiler like Visual C++ 2022. -PRs for improvements are very welcome! +After cloning this repository be sure to get and build the submodules -## ⚙️ Building the extension +``` +git submodule init +git submodule update +cd godot-cpp +git submodule init +git submodule update +scons +scons target=release +``` -### VSCode Compilation (only applicable if you are using VSCode as your code editor) -For the initial build you can run the vscode task `initial-build-extension`. This compiles both godot-cpp and the extension. For all subsequent builds, you only need to run the task `build-extension`. +### Building the extension -### Manual Compilation +Scons should be run from an environment that has the Microsoft x64 development tools setup. -To compile the extension you need to follow these steps: +> `scons target=[debug | release]` Build the shared library. Result is in `build\bin` -0. Click on the green "Use this template" button to generate the repository for you +> `scons example target=[debug | release]` Copy build products to the `example\addons\tilt-five` -1. Clone the extension recursively from this repository -```bash -# --recursive to automatically load the submodule godot-cpp -# The git adress can be found under the green "Code" dropdown menu -git clone --recursive (--GITHUB ADRESS--) -``` +> `scons zip target=[debug | release]` Create a zip archive of `example\addons` -2. Make sure you are on the right commit of the godot-cpp repository -```bash -git status -# this show's you the commit. Make sure that it is released to a similar/the same time as the master branch (especially during the beta) -``` -To make sure you have the right commit, here the [link to the pinned updated issue with the commit hashes](https://github.com/godotengine/godot-cpp/issues/874) +Note that currently due to bugs the zip archive is not compatible with godot's import function. -3. Make sure you are in the top level of the repository so `pwd` returns the following -```bash -pwd -.../GDExtensionSummator -``` +## Basic usage -4. Go inside the godot-cpp folder -```bash -cd godot-cpp -``` +After building the example you should be able to open the Godot project in the example directory +and run the default scene. -5. Compile godot-cpp and generate the bindings (only needed once when starting development or when there is an update of the submodule) -```bash -scons target=template_debug -# OR simpler (the above is the default configuration): -scons +If you want to use the extension in your own project follow these steps. -# For beta 2 and earlier: -scons target=debug generate_bindings=yes -``` +1) Copy `example\addons` to your own projects root directory. -6. Go back to the top level of the directory -```bash -cd .. -``` +2) From `addons\tilt-five\scenes` load the `t5-scene` and run. -7. Compile the extension -```bash -scons target=template_debug -# OR simpler (the above is the default configuration): -scons +3) From here you should be able to follow documentation for usage of Godot's AR/VR system. -# For beta 2 and earlier: -scons target=debug -``` +## Dependencies + +- Uses the godot-cpp headers +- Uses the Tilt Five NDK + +## TODO + +- Better docs and examples + +## Acknowledgments + +This was written by referring a lot to [GodotVR](https://github.com/GodotVR) code and reading +[Godot's](https://github.com/godotengine/godot) source code. diff --git a/SConstruct b/SConstruct new file mode 100644 index 0000000..8062c01 --- /dev/null +++ b/SConstruct @@ -0,0 +1,43 @@ +#!/usr/bin/env python +import os +import sys + +tilt_five_headers_path = "extension/TiltFiveNDK/include/include" +tilt_five_library_path = "extension/TiltFiveNDK/lib/win64" +tilt_five_library = "TiltFiveNative.dll.if" + +VariantDir("build/src","extension/src", duplicate=False) +VariantDir("build/T5Integration","extension/T5Integration", duplicate=False) + +env = SConscript("godot-cpp/SConstruct") +env['CXXFLAGS'].remove('/std:c++17') + +# For the reference: +# - CCFLAGS are compilation flags shared between C and C++ +# - CFLAGS are for C-specific compilation flags +# - CXXFLAGS are for C++-specific compilation flags +# - CPPFLAGS are for pre-processor flags +# - CPPDEFINES are for pre-processor defines +# - LINKFLAGS are for linking flags + +# tweak this if you want to use different folders, or more folders, to store your source code in. +env.Append(CPPPATH=["extension/src/","extension/T5Integration/",tilt_five_headers_path]) +sources = Glob("build/src/*.cpp") +sources += Glob('build/T5Integration/*.cpp') + +env.Append(LIBPATH=[tilt_five_library_path]) +env.Append(LIBS=[tilt_five_library, "Opengl32"]) + +if env['platform'] == "windows": + env.Append(CXXFLAGS=['/std:c++20', '/Zc:__cplusplus']) + library = env.SharedLibrary( + "build/bin/libgdtiltfive{}{}".format(env["suffix"], env["SHLIBSUFFIX"]), + source=sources, + ) + +f1 = env.Command("example/addons/tiltfive/libgdtiltfive{}{}".format(env["suffix"], env["SHLIBSUFFIX"]), library, Copy('$TARGET', '$SOURCE') ) +f2 = env.Command("example/addons/tiltfive/TiltFiveNative.dll", "extension/TiltFiveNDK/lib/win64/TiltFiveNative.dll", Copy('$TARGET', '$SOURCE') ) + +env.Alias('example', [f1, f2]) + +Default(library) diff --git a/example/addons/tiltfive/TiltFiveNative.dll b/example/addons/tiltfive/TiltFiveNative.dll new file mode 100644 index 0000000000000000000000000000000000000000..af5d1143495e40282fdd48649f3a2853f5e26cff GIT binary patch literal 624128 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 ysrUhzp%=@-80(J8V!P}M9lV7e4K6PXxhsT^5I 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�Kwcq0pG5f2XWF$1gE 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 z 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 W2kYFwe(r}f_kf?A%H;nu|MTyIdW5Rb7~26{ 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 literal 0 HcmV?d00001 diff --git a/example/icon.png.import b/example/icon.png.import new file mode 100644 index 0000000..03edd1b --- /dev/null +++ b/example/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cx1mscuegq1lo" +path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/example/main.gd b/example/main.gd new file mode 100644 index 0000000..fbadf4e --- /dev/null +++ b/example/main.gd @@ -0,0 +1,9 @@ +extends Node + + +func _ready(): + $TiltFiveManager.add(10) + $TiltFiveManager.add(20) + $TiltFiveManager.add(30) + print($TiltFiveManager.get_total()) + diff --git a/example/main.tscn b/example/main.tscn new file mode 100644 index 0000000..8fc4c54 --- /dev/null +++ b/example/main.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://dgm4ah3j8jxke"] + +[ext_resource type="Script" path="res://main.gd" id="1_ptcg0"] + +[node name="Main" type="Node"] +script = ExtResource("1_ptcg0") + +[node name="TiltFiveManager" type="TiltFiveManager" parent="."] diff --git a/example/project.godot b/example/project.godot new file mode 100644 index 0000000..8ccb30b --- /dev/null +++ b/example/project.godot @@ -0,0 +1,16 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="TiltFiveGodot4" +run/main_scene="res://main.tscn" +config/features=PackedStringArray("4.0") +config/icon="res://icon.png" diff --git a/extension/T5Integration/Glasses.cpp b/extension/T5Integration/Glasses.cpp new file mode 100644 index 0000000..d570ffb --- /dev/null +++ b/extension/T5Integration/Glasses.cpp @@ -0,0 +1,541 @@ +#include +#include +#include +#include + +using TaskSystem::task_sleep; +using TaskSystem::run_in_foreground; +using TaskSystem::run_now; + +namespace T5Integration { + + + Glasses::Glasses( const std::string& id) + : _id(id) { + + _scheduler = ObjectRegistry::scheduler(); + _math = ObjectRegistry::math(); + + _glasses_pose.posGLS_GBD.x = 0; + _glasses_pose.posGLS_GBD.y = 0; + _glasses_pose.posGLS_GBD.z = 0; + _glasses_pose.rotToGLS_GBD.x = 0; + _glasses_pose.rotToGLS_GBD.y = 0; + _glasses_pose.rotToGLS_GBD.z = 0; + _glasses_pose.rotToGLS_GBD.w = 1; + + _state.reset(GlassesState::UNAVAILABLE, true); + + } + + Glasses::~Glasses() { + destroy_handle(); + } + + void Glasses::get_pose(T5_Vec3& out_position, T5_Quat& out_orientation) { + out_position = _glasses_pose.posGLS_GBD; + out_orientation = _glasses_pose.rotToGLS_GBD; + } + + + void Glasses::get_glasses_position(float& out_pos_x, float& out_pos_y, float& out_pos_z) { + out_pos_x = _glasses_pose.posGLS_GBD.x; + out_pos_y = _glasses_pose.posGLS_GBD.y; + out_pos_z = _glasses_pose.posGLS_GBD.z; + } + + void Glasses::get_glasses_orientation(float& out_quat_x, float& out_quat_y, float& out_quat_z, float& out_quat_w) { + out_quat_x = _glasses_pose.rotToGLS_GBD.x; + out_quat_y = _glasses_pose.rotToGLS_GBD.y; + out_quat_z = _glasses_pose.rotToGLS_GBD.z; + out_quat_w = _glasses_pose.rotToGLS_GBD.w; + } + + bool Glasses::is_wand_state_set(size_t wand_num, uint8_t flags) { + return wand_num < _wand_list.size() && (_wand_list[wand_num]._state & flags) == flags; + } + + bool Glasses::is_wand_state_changed(size_t wand_num, uint8_t flags) { + if(wand_num >= _wand_list.size()) return false; + + auto current_state = _wand_list[wand_num]._state; + auto previous_state = _previous_wand_state[wand_num]; + auto changed = current_state ^ previous_state; + _previous_wand_state[wand_num] = previous_state & ~changed | current_state & changed; + return (changed & flags) != 0; + } + + bool Glasses::is_wand_pose_valid(size_t wand_num) { + return wand_num < _wand_list.size() && (_wand_list[wand_num]._state & WandState::POSE_VALID) != 0; + } + + void Glasses::get_wand_position(size_t wand_num, float& out_pos_x, float& out_pos_y, float& out_pos_z) { + if (wand_num < _wand_list.size()) { + out_pos_x = _wand_list[wand_num]._pose.posAim_GBD.x; + out_pos_y = _wand_list[wand_num]._pose.posAim_GBD.y; + out_pos_z = _wand_list[wand_num]._pose.posAim_GBD.z; + } + else { + out_pos_x = out_pos_y = out_pos_z = 0; + } + } + + void Glasses::get_wand_orientation(size_t wand_num, float& out_quat_x, float& out_quat_y, float& out_quat_z, float& out_quat_w) { + if (wand_num < _wand_list.size()) { + out_quat_x = _wand_list[wand_num]._pose.rotToWND_GBD.x; + out_quat_y = _wand_list[wand_num]._pose.rotToWND_GBD.y; + out_quat_z = _wand_list[wand_num]._pose.rotToWND_GBD.z; + out_quat_w = _wand_list[wand_num]._pose.rotToWND_GBD.w; + } + else { + out_quat_x = out_quat_y = out_quat_z = 0; + out_quat_w = 1; + } + } + + void Glasses::get_wand_trigger(size_t wand_num, float& out_trigger) { + out_trigger = 0; + if (wand_num < _wand_list.size()) { + out_trigger = _wand_list[wand_num]._analog.trigger; + } + } + + void Glasses::get_wand_stick(size_t wand_num, float& out_stick_x, float& out_stick_y) { + out_stick_x = 0; + out_stick_y = 0; + if (wand_num < _wand_list.size()) { + out_stick_x = _wand_list[wand_num]._analog.stick.x; + out_stick_y = _wand_list[wand_num]._analog.stick.y; + } + } + + void Glasses::get_wand_buttons(size_t wand_num, WandButtons& buttons) { + if (wand_num < _wand_list.size()) { + buttons = _wand_list[wand_num]._buttons; + } + } + + bool Glasses::allocate_handle(T5_Context context) { + T5_Result result; + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5CreateGlasses(context, _id.c_str(), &_glasses_handle); + } + if (result != T5_SUCCESS) { + LOG_T5_ERROR(result); + return false; + } + _state.set(GlassesState::CREATED); + _state.clear(GlassesState::UNAVAILABLE); + _scheduler->add_task(monitor_parameters()); + + return true; + } + + void Glasses::destroy_handle() { + _state.clear_all(); + { + std::lock_guard lock(g_t5_exclusivity_group_1); + t5DestroyGlasses(&_glasses_handle); + } + _glasses_handle = nullptr; + } + + CotaskPtr Glasses::monitor_connection() { + T5_Result result; + + while (_glasses_handle && _state.is_current(GlassesState::SUSTAIN_CONNECTION)) { + T5_ConnectionState connectionState; + + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5GetGlassesConnectionState(_glasses_handle, &connectionState); + } + if (result != T5_SUCCESS) { + // Doesn't seem to be anything recoverable here + co_await run_in_foreground; + LOG_T5_ERROR(result); + _state.reset(GlassesState::ERROR); + co_return; + } + + switch (connectionState) { + case kT5_ConnectionState_NotExclusivelyConnected: + { + _state.clear(GlassesState::READY); + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5ReserveGlasses(_glasses_handle, _application_name.c_str()); + } + if (result == T5_SUCCESS || result == T5_ERROR_ALREADY_CONNECTED) + continue; + else if (result == T5_ERROR_UNAVAILABLE) { + // Some else has the glasses so stop + // trying to connect + _state.clear(GlassesState::SUSTAIN_CONNECTION); + _state.set(GlassesState::UNAVAILABLE); + co_return; + } + else if (result == T5_ERROR_DEVICE_LOST) { + _state.clear(GlassesState::SUSTAIN_CONNECTION); + co_await run_in_foreground; + LOG_T5_ERROR(result); + destroy_handle(); + co_return; + } + _state.reset(GlassesState::ERROR); + co_await run_in_foreground; + LOG_T5_ERROR(result); + co_return; + } + case kT5_ConnectionState_ExclusiveReservation: + case kT5_ConnectionState_Disconnected: + { + _state.clear(GlassesState::READY); + + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5EnsureGlassesReady(_glasses_handle); + } + if (result == T5_SUCCESS) + continue; + else if (result == T5_ERROR_TRY_AGAIN) { + break; + } + if (result == T5_ERROR_UNAVAILABLE) { + // Some else has the glasses so stop + // trying to connect + _state.clear(GlassesState::SUSTAIN_CONNECTION); + _state.set(GlassesState::UNAVAILABLE); + } + else if (result == T5_ERROR_DEVICE_LOST) { + _state.clear(GlassesState::SUSTAIN_CONNECTION); + co_await run_in_foreground; + LOG_T5_ERROR(result); + destroy_handle(); + } + else { + _state.reset(GlassesState::ERROR); + co_await run_in_foreground; + LOG_T5_ERROR(result); + } + co_return; + } + case kT5_ConnectionState_ExclusiveConnection: + { + _state.set(GlassesState::READY); + if (!_state.is_current(GlassesState::GRAPHICS_INIT)) { + co_await run_in_foreground; + initialize_graphics(); + } + break; + } + } + + if (_state.any_changed(GlassesState::READY | GlassesState::GRAPHICS_INIT)) { + if (_state.is_current(GlassesState::READY | GlassesState::GRAPHICS_INIT)) + _state.set(GlassesState::CONNECTED); + else + _state.clear(GlassesState::CONNECTED); + } + if (_state.is_current(GlassesState::READY) && !_state.is_current(GlassesState::TRACKING_WANDS)) { + _state.set(GlassesState::TRACKING_WANDS); + _scheduler->add_task(monitor_wands()); + } + + co_await task_sleep( + _state.is_current(GlassesState::CONNECTED) ? + _poll_rate_for_monitoring : + _poll_rate_for_connecting); + } + } + + CotaskPtr Glasses::monitor_parameters() { + co_await query_ipd(); + co_await query_friendly_name(); + + T5_Result result; + std::vector _changed_params; + + while (_glasses_handle && _state.is_current(GlassesState::CREATED)) { + co_await task_sleep(_poll_rate_for_monitoring); + + uint16_t buffer_size = 16; + _changed_params.resize(buffer_size); + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5GetChangedGlassesParams(_glasses_handle, _changed_params.data(), &buffer_size); + } + if (result != T5_SUCCESS) { + co_await run_in_foreground; + LOG_T5_ERROR(result); + co_return; + } + + if (buffer_size == 0) + continue; + + _changed_params.resize(buffer_size); + for (auto param : _changed_params) { + switch (param) { + case kT5_ParamGlasses_Float_IPD: + { + co_await query_ipd(); + } + case kT5_ParamGlasses_UTF8_FriendlyName: + { + co_await query_friendly_name(); + } + default: + break; + } + } + } + } + + CotaskPtr Glasses::monitor_wands() { + WandService wand_service; + + if(!wand_service.start(_glasses_handle)) + co_return; + + co_await run_in_foreground; + + if(!wand_service.is_running()) + { + _state.clear(GlassesState::TRACKING_WANDS); + LOG_T5_ERROR(wand_service.get_last_error()); + co_return; + } + + while (_glasses_handle && _state.is_current(GlassesState::SUSTAIN_CONNECTION) && wand_service.is_running()) { + + auto err = wand_service.get_last_error(); + if (err != T5_SUCCESS) { + LOG_T5_ERROR(err); + } + + wand_service.get_wand_data(_wand_list); + while(_wand_list.size() > _previous_wand_state.size()) + _previous_wand_state.push_back(0); + co_await run_in_foreground; + } + + wand_service.stop(); + _state.clear(GlassesState::TRACKING_WANDS); + auto err = wand_service.get_last_error(); + if (err != T5_SUCCESS) { + LOG_T5_ERROR(wand_service.get_last_error()); + } + } + + CotaskPtr Glasses::query_ipd() { + double ipd; + T5_Result result; + for (int tries = 0; tries < 10; ++tries) { + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5GetGlassesFloatParam(_glasses_handle, 0, kT5_ParamGlasses_Float_IPD, &ipd); + } + if (result != T5_ERROR_NO_SERVICE && result != T5_ERROR_IO_FAILURE) { + break; + } + co_await task_sleep(_poll_rate_for_connecting); + } + co_await run_in_foreground; + if (result != T5_SUCCESS) { + LOG_T5_ERROR(result); + } + else { + _ipd = static_cast(ipd); + } + } + + CotaskPtr Glasses::query_friendly_name() { + std::vector buffer; + size_t buffer_size = 64; + buffer.resize(buffer_size); + + T5_Result result; + for (int tries = 0; tries < 10; ++tries) { + buffer_size = buffer.size(); + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5GetGlassesUtf8Param(_glasses_handle, 0, kT5_ParamGlasses_UTF8_FriendlyName, buffer.data(), &buffer_size); + } + if (result == T5_ERROR_OVERFLOW) { + buffer.resize(buffer_size); + continue; + } + else if (result != T5_ERROR_NO_SERVICE && result != T5_ERROR_IO_FAILURE) { + break; + } + co_await task_sleep(_poll_rate_for_connecting); + } + co_await run_in_foreground; + if (result == T5_SUCCESS) { + buffer.resize(buffer_size); + _friendly_name = buffer.data(); + } + else if(result == T5_ERROR_SETTING_UNKNOWN) { + _friendly_name = _id; + } + else + LOG_T5_ERROR(result); + } + + + void Glasses::connect(std::string application_name) { + if (_glasses_handle) { + _application_name = application_name; + + _state.set(GlassesState::SUSTAIN_CONNECTION); + _scheduler->add_task(monitor_connection()); + } + } + + void Glasses::disconnect() { + + if (_state.is_current(GlassesState::READY)) { + T5_Result result; + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5ReleaseGlasses(_glasses_handle); + } + if (result != T5_SUCCESS) { + LOG_T5_ERROR(result); + } + } + _state.clear(GlassesState::READY); + } + + bool Glasses::initialize_graphics() { + + // t5 exclusivity group 3 - serialized in main thread + auto result = t5InitGlassesGraphicsContext(_glasses_handle, kT5_GraphicsApi_GL, nullptr); + // T5_ERROR_INVALID_STATE seems to mean previously initialized + bool is_graphics_initialized = (result == T5_SUCCESS || result == T5_ERROR_INVALID_STATE); + if (!is_graphics_initialized) { + LOG_T5_ERROR(result); + return false; + } + + _state.set(GlassesState::GRAPHICS_INIT); + + return true; + } + + + void Glasses::update_pose() { + if (!_state.is_current(GlassesState::CONNECTED)) + return; + + T5_Result result; + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5GetGlassesPose(_glasses_handle, kT5_GlassesPoseUsage_GlassesPresentation, &_glasses_pose); + } + bool isTracking = (result == T5_SUCCESS); + + if (isTracking) { + _state.set(GlassesState::TRACKING); + } + else { + _state.clear(GlassesState::TRACKING); + + if (result == T5_ERROR_TRY_AGAIN) + return; + else if (result == T5_ERROR_NOT_CONNECTED) { + _state.clear(GlassesState::CONNECTED); + LOG_T5_ERROR(result); + } + else { + LOG_T5_ERROR(result); + _state.reset(GlassesState::ERROR); + } + } + LOG_TOGGLE(false, isTracking, "Tracking started", "Tracking ended"); + } + + void Glasses::get_eye_position(Eye eye, T5_Vec3& pos) { + + float dir = (eye == Left ? -1.0f : 1.0f); + auto ipd = get_ipd(); + pos.x = dir * ipd / 2.0f; + pos.y = 0.0f; + pos.z = 0.0f; + + _math->rotate_vector( + _glasses_pose.rotToGLS_GBD.x, + _glasses_pose.rotToGLS_GBD.y, + _glasses_pose.rotToGLS_GBD.z, + _glasses_pose.rotToGLS_GBD.w, + pos.x, + pos.y, + pos.z); + + pos.x += _glasses_pose.posGLS_GBD.x; + pos.y += _glasses_pose.posGLS_GBD.y; + pos.z += _glasses_pose.posGLS_GBD.z; + } + + void Glasses::send_frame(intptr_t leftEyeTexture, intptr_t rightEyeTexture) { + if (_state.is_current(GlassesState::TRACKING | GlassesState::CONNECTED)) { + T5_FrameInfo frameInfo; + + int width; + int height; + get_display_size(width, height); + + frameInfo.vci.startY_VCI = static_cast(-tan((get_fov() * 3.1415926535 / 180.0) * 0.5f)); + frameInfo.vci.startX_VCI = frameInfo.vci.startY_VCI * (float)width / (float)height; + frameInfo.vci.width_VCI = -2.0f * frameInfo.vci.startX_VCI; + frameInfo.vci.height_VCI = -2.0f * frameInfo.vci.startY_VCI; + + frameInfo.texWidth_PIX = width; + frameInfo.texHeight_PIX = height; + + frameInfo.leftTexHandle = (void*)leftEyeTexture; + frameInfo.rightTexHandle = (void*)rightEyeTexture; + + get_eye_position(Left, frameInfo.posLVC_GBD); + frameInfo.rotToLVC_GBD = _glasses_pose.rotToGLS_GBD; + + get_eye_position(Right, frameInfo.posRVC_GBD); + frameInfo.rotToRVC_GBD = _glasses_pose.rotToGLS_GBD; + + frameInfo.isUpsideDown = _is_upside_down_texture; + frameInfo.isSrgb = true; + + // t5 exclusivity group 3 - serialized in main thread + T5_Result result = t5SendFrameToGlasses(_glasses_handle, &frameInfo); + + LOG_TOGGLE(false, result == T5_SUCCESS, "Started sending frames", "Stoped sending frames"); + if (result == T5_SUCCESS) + return; + LOG_T5_ERROR(result); + if (result == T5_ERROR_NOT_CONNECTED) { + _state.clear(GlassesState::CONNECTED); + } + // not sure how we might get here + else if (result == T5_ERROR_GFX_CONTEXT_INIT_FAIL || result == T5_ERROR_INVALID_GFX_CONTEXT) { + _state.clear(GlassesState::GRAPHICS_INIT); + } + else { + _state.reset(GlassesState::ERROR); + } + } + } + + bool Glasses::update_connection() { + + return true; + } + + bool Glasses::update_tracking() { + update_pose(); + + return true; + } + +} \ No newline at end of file diff --git a/extension/T5Integration/Glasses.h b/extension/T5Integration/Glasses.h new file mode 100644 index 0000000..7a0ce45 --- /dev/null +++ b/extension/T5Integration/Glasses.h @@ -0,0 +1,208 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace T5Integration { + +using namespace std::chrono_literals; +using GlassesFlags = StateFlags; +class T5Service; +using TaskSystem::CotaskPtr; +using TaskSystem::Scheduler; + +float const g_default_fov = 48.0f; + +namespace GlassesState { + const uint16_t READY = 0x00000001; + const uint16_t GRAPHICS_INIT = 0x00000002; + const uint16_t SUSTAIN_CONNECTION = 0x00000004; + + const uint16_t CREATED = 0x00000008; + const uint16_t UNAVAILABLE = 0x00000010; + const uint16_t TRACKING = 0x00000020; + const uint16_t CONNECTED = 0x00000040; + const uint16_t TRACKING_WANDS = 0x00000080; + const uint16_t ERROR = 0x00000100; +} + +class Glasses +{ + friend T5Service; + + public: + using Ptr = std::shared_ptr; + + enum Eye + { + Mono, + Left, + Right + }; + + Glasses(const std::string& id); + + ~Glasses(); + + const std::string get_id(); + const std::string get_name(); + bool is_tracking(); + bool is_connected(); + + uint32_t get_current_state(); + uint32_t get_changed_state(); + + bool allocate_handle(T5_Context context); + void destroy_handle(); + void connect(std::string application_name); + void disconnect(); + + float get_ipd(); + float get_fov(); + void get_display_size(int& out_width, int& out_height); + + void get_pose(T5_Vec3& out_position, T5_Quat& out_orientation); + + void get_glasses_position(float& out_pos_x, float& out_pos_y, float& out_pos_z); + void get_glasses_orientation(float& out_quat_x, float& out_quat_y, float& out_quat_z, float& out_quat_w); + void send_frame(intptr_t leftEyeTexture, intptr_t rightEyeTexture); + + void set_upside_down_texture(bool is_upside_down); + + bool update_connection(); + bool update_tracking(); + + size_t get_num_wands() { return _wand_list.size(); } + + bool is_wand_state_set(size_t wand_num, uint8_t flags); + bool is_wand_state_changed(size_t wand_num, uint8_t flags); + bool is_wand_pose_valid(size_t wand_num); + void get_wand_position(size_t wand_num, float& out_pos_x, float& out_pos_y, float& out_pos_z); + void get_wand_orientation(size_t wand_num, float& out_quat_x, float& out_quat_y, float& out_quat_z, float& out_quat_w); + void get_wand_trigger(size_t wand_num, float& out_trigger); + void get_wand_stick(size_t wand_num, float& out_stick_x, float& out_stick_y); + void get_wand_buttons(size_t wand_num, WandButtons& buttons); + + + +private: + + CotaskPtr monitor_connection(); + CotaskPtr monitor_parameters(); + CotaskPtr monitor_wands(); + CotaskPtr query_ipd(); + CotaskPtr query_friendly_name(); + + bool reserve(); + bool make_ready(); + bool initialize_graphics(); + + void configure_wand_tracking(); + + void update_pose(); + + void get_eye_position(Eye eye, T5_Vec3& pos); + + private: + + Scheduler::Ptr _scheduler; + T5Math::Ptr _math; + + std::string _id; + std::string _application_name; + std::string _friendly_name; + T5_Glasses _glasses_handle = nullptr; + + T5_GlassesPose _glasses_pose; + + float _ipd = 0.059f; + + GlassesFlags _state; + + bool _is_upside_down_texture = false; + + WandList _wand_list; + std::vector _previous_wand_state; + + std::chrono::milliseconds _poll_rate_for_connecting = 100ms; + std::chrono::milliseconds _poll_rate_for_monitoring = 2s; + std::chrono::milliseconds _wait_time_for_wand_IO = 100s; + +}; + +inline const std::string Glasses::get_id() +{ + return _id; +} + +inline const std::string Glasses::get_name() { + return _friendly_name; +} + +inline bool Glasses::is_tracking() +{ + return _state.is_current(GlassesState::TRACKING); +} + +inline bool Glasses::is_connected() +{ + return _state.is_current(GlassesState::CONNECTED); +} + +inline uint32_t Glasses::get_current_state() +{ + return _state.get_current(); +} + +inline uint32_t Glasses::get_changed_state() +{ + return _state.get_then_update_changes(); +} + +inline float Glasses::get_ipd() +{ + return static_cast(_ipd); +} + +inline float Glasses::get_fov() +{ + return 48.0f; +} + +inline void Glasses::get_display_size(int& width, int& height) +{ + width = 1216; + height = 768; +} + +inline void Glasses::set_upside_down_texture(bool is_upside_down) { + _is_upside_down_texture = is_upside_down; +} + +struct GlassesEvent { + enum EType + { + E_NONE = 0, + E_ADDED = 1, + E_LOST = 2, + E_AVAILABLE = 3, + E_UNAVAILABLE = 4, + E_CONNECTED = 5, + E_DISCONNECTED = 6, + E_TRACKING = 7, + E_NOT_TRACKING = 8, + E_STOPPED_ON_ERROR = 9 + }; + GlassesEvent(int num, EType evt) + : glasses_num(num), event(evt) + {} + + int glasses_num; + EType event; +}; + + +} \ No newline at end of file diff --git a/extension/T5Integration/LICENSE.txt b/extension/T5Integration/LICENSE.txt new file mode 100644 index 0000000..4b42a7b --- /dev/null +++ b/extension/T5Integration/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Patrick H Down + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/extension/T5Integration/Logging.cpp b/extension/T5Integration/Logging.cpp new file mode 100644 index 0000000..5a145a2 --- /dev/null +++ b/extension/T5Integration/Logging.cpp @@ -0,0 +1,55 @@ +#include +#include +#include + + +namespace T5Integration { + + void DefaultLogger::log_error(const char* message, const char* func_name, const char* file_name, int line_num) { + std::cerr << file_name << "(" << line_num << ") [" << func_name << "] Error: " << message << std::endl; + } + + void DefaultLogger::log_warning(const char* message, const char* func_name, const char* file_name, int line_num) { + std::cerr << file_name << "(" << line_num << ") [" << func_name << "] Warning: " << message << std::endl; + } + + void DefaultLogger::log_string(const char* message) + { + std::cout << message << std::endl; + } + + void log_string(const char* message) { + ObjectRegistry::logger()->log_string(message); + } + + + void log_error(const char* message, const char* p_function, const char* p_file, int p_line){ + ObjectRegistry::logger()->log_error(message, p_function, p_file, p_line); + } + + void log_warning(const char* message, const char* p_function, const char* p_file, int p_line) { + ObjectRegistry::logger()->log_warning(message, p_function, p_file, p_line); + } + + void log_tilt_five_error(T5_Result result_code, const char *p_function, const char *p_file, int p_line) { + ObjectRegistry::logger()->log_error(t5GetResultMessage(result_code), p_function, p_file, p_line); + } + + void log_tilt_five_warning(T5_Result result_code, const char *p_function, const char *p_file, int p_line) { + ObjectRegistry::logger()->log_warning(t5GetResultMessage(result_code), p_function, p_file, p_line); + } + + void log_toggle(bool newValue, bool& prevVal, const char* msg1, const char* msg2) + { + if(newValue != prevVal) + { + prevVal = newValue; + if(newValue) + log_message(msg1); + else + log_message(msg2); + + } + } + +} \ No newline at end of file diff --git a/extension/T5Integration/Logging.h b/extension/T5Integration/Logging.h new file mode 100644 index 0000000..094b40c --- /dev/null +++ b/extension/T5Integration/Logging.h @@ -0,0 +1,76 @@ +#pragma once +#include +#include + +namespace T5Integration { + +class Logger { +public: + using Ptr = std::shared_ptr; + + virtual void log_error(const char* message, const char* func_name, const char* file_name, int line_num) = 0; + virtual void log_warning(const char* message, const char* func_name, const char* file_name, int line_num) = 0; + virtual void log_string(const char* message) = 0; +}; + +class DefaultLogger : public Logger { +public: + void log_error(const char* message, const char* func_name, const char* file_name, int line_num) override; + void log_warning(const char* message, const char* func_name, const char* file_name, int line_num) override; + void log_string(const char* message) override; +}; + +void log_string(const char* message); +void log_error(const char* message, const char* p_function, const char* p_file, int p_line); +void log_warning(const char* message, const char* p_function, const char* p_file, int p_line); +void log_tilt_five_error(T5_Result result_code, const char* p_function, const char* p_file, int p_line); +void log_tilt_five_warning(T5_Result result_code, const char* p_function, const char* p_file, int p_line); +void log_toggle(bool current, bool& state, const char* msg1, const char* msg2); + +inline void log_message_stream(std::stringstream& stream) {} + +template +void log_message_stream(std::stringstream& stream, T var1, Types... var2) { + stream << var1; + + log_message_stream(stream, var2...); +} + +template +void log_message(T var1, Types... var2) { + std::stringstream stream; + stream << var1; + log_message_stream(stream, var2...); + log_string(stream.str().c_str()); +} + +} //namespace T5Integration + + +#define LOG_CHECK_POINT T5Integration::log_message("===> ", __func__, " : ", __LINE__); + +#ifndef LOG_CHECK_POINT_ONCE +#define LOG_CHECK_POINT_ONCE { static bool once ## __LINE__ = false; if(! once ## __LINE__) {LOG_CHECK_POINT once ## __LINE__ = true; }} +#endif + + +#ifndef LOG_TOGGLE +#define LOG_TOGGLE(INIT, TEST, MSG1, MSG2) { static bool toggle ## __LINE__ = (INIT); T5Integration::log_toggle((TEST), toggle ## __LINE__, MSG1, MSG2); } +#endif + +#ifndef LOG_ERROR +#define LOG_ERROR(message) T5Integration::log_error((message), __func__, __FILE__, __LINE__) +#endif + +#ifndef LOG_WARNING +#define LOG_WARNING(message) T5Integration::log_warning((message), __func__, __FILE__, __LINE__) +#endif + +#ifndef LOG_T5_ERROR +#define LOG_T5_ERROR(result_code) T5Integration::log_tilt_five_error(result_code, __func__, __FILE__, __LINE__) +#endif + +#ifndef LOG_ERROR_ONCE +#define LOG_ERROR_ONCE(MSG) { static bool once ## __LINE__ = false; if(! once ## __LINE__) {LOG_ERROR(MSG); once ## __LINE__ = true; }} +#endif + diff --git a/extension/T5Integration/ObjectRegistry.cpp b/extension/T5Integration/ObjectRegistry.cpp new file mode 100644 index 0000000..7ec4b14 --- /dev/null +++ b/extension/T5Integration/ObjectRegistry.cpp @@ -0,0 +1,56 @@ +#include +#include + +namespace T5Integration { + + ObjectRegistry* ObjectRegistry::_instance = nullptr; + + ObjectRegistry::ObjectRegistry() { + _instance = this; + } + + T5Service::Ptr ObjectRegistry::service() { + assert(_instance); + return _instance->get_service(); + } + + T5Math::Ptr ObjectRegistry::math() { + assert(_instance); + return _instance->get_math(); + } + + Logger::Ptr ObjectRegistry::logger() { + assert(_instance); + return _instance->get_logger(); + } + + Scheduler::Ptr ObjectRegistry::scheduler() { + assert(_instance); + return _instance->get_scheduler(); + } + + Logger::Ptr ObjectRegistry::get_logger() { + Logger::Ptr logger; + if (_logger.expired()) + { + logger = std::make_shared(); + _logger = logger; + } + else { + logger = _logger.lock(); + } + return logger; + } + + Scheduler::Ptr ObjectRegistry::get_scheduler() { + Scheduler::Ptr scheduler; + if (_scheduler.expired()) { + scheduler = std::make_shared(); + _scheduler = scheduler; + } + else { + scheduler = _scheduler.lock(); + } + return scheduler; + } +} \ No newline at end of file diff --git a/extension/T5Integration/ObjectRegistry.h b/extension/T5Integration/ObjectRegistry.h new file mode 100644 index 0000000..acb5ca7 --- /dev/null +++ b/extension/T5Integration/ObjectRegistry.h @@ -0,0 +1,37 @@ +#pragma once +#include +#include +#include +#include +#include + +namespace T5Integration { + +using TaskSystem::Scheduler; + +class ObjectRegistry { +protected: + ObjectRegistry(); + virtual ~ObjectRegistry() = default; + +public: + + static T5Service::Ptr service(); + static T5Math::Ptr math(); + static Logger::Ptr logger(); + static Scheduler::Ptr scheduler(); + +protected: + + virtual T5Service::Ptr get_service() = 0; + virtual T5Math::Ptr get_math() = 0; + virtual Logger::Ptr get_logger(); + virtual Scheduler::Ptr get_scheduler(); + + static ObjectRegistry* _instance; + + Logger::Ptr::weak_type _logger; + Scheduler::Ptr::weak_type _scheduler; + +}; +} \ No newline at end of file diff --git a/extension/T5Integration/README.md b/extension/T5Integration/README.md new file mode 100644 index 0000000..04f0835 --- /dev/null +++ b/extension/T5Integration/README.md @@ -0,0 +1,8 @@ +# T5Wrapper + +This is a lightweight wrapper around the Tile Five Native SDK object handles created for the Hello T5 Cube app. + +## Notes + +- **Incomplete** Only has functions needed by Hello T5 Cube currently + diff --git a/extension/T5Integration/StateFlags.h b/extension/T5Integration/StateFlags.h new file mode 100644 index 0000000..cc46df7 --- /dev/null +++ b/extension/T5Integration/StateFlags.h @@ -0,0 +1,74 @@ +#pragma once +#include +#include + +template +class StateFlags +{ + static_assert(std::is_integral_v); + + using FlagType = T; + public: + + std::atomic _current; + FlagType _previous; + + FlagType get_current() + { + return _current.load(); + } + + void set(FlagType state) + { + _current.fetch_or(state); + } + + void clear(FlagType state) + { + _current.fetch_and(~state); + } + + void clear_all(bool clear_changes = true) + { + _current.store(0); + if(clear_changes) + _previous = 0; + } + + void reset(FlagType state, bool clear_changes = false) + { + _current.store(state); + if(clear_changes) + _previous = state; + } + + bool is_current(FlagType state) const + { + return (_current.load() & state) == state; + } + + bool any_changed(FlagType state) const + { + return ((_current.load() ^ _previous) & state) != 0; + } + + bool test_then_update_changes(FlagType state) + { + FlagType current = _current.load(); + bool rtn = ((current ^ _previous) & state) != 0; + _previous = current & state | _previous & ~state; + return rtn; + } + + FlagType get_changes() const + { + return (_current.load() ^ _previous); + } + + FlagType get_then_update_changes() + { + auto ret = get_changes(); + _previous = _current; + return ret; + } +}; diff --git a/extension/T5Integration/T5Math.h b/extension/T5Integration/T5Math.h new file mode 100644 index 0000000..5910452 --- /dev/null +++ b/extension/T5Integration/T5Math.h @@ -0,0 +1,12 @@ +#pragma once + +namespace T5Integration { + + class T5Math { + public: + using Ptr = std::shared_ptr; + + virtual void rotate_vector(float quat_x, float quat_y, float quat_z, float quat_w, float& vec_x, float& vec_y, float& vec_z) = 0; + }; + +} \ No newline at end of file diff --git a/extension/T5Integration/T5Service.cpp b/extension/T5Integration/T5Service.cpp new file mode 100644 index 0000000..7f7c0af --- /dev/null +++ b/extension/T5Integration/T5Service.cpp @@ -0,0 +1,231 @@ +#include +#include +#include +#include + +namespace T5Integration { + +std::mutex g_t5_exclusivity_group_1; +std::mutex g_t5_exclusivity_group_2; + +T5Service::T5Service() { + _scheduler = ObjectRegistry::scheduler(); +} + +T5Service::~T5Service() { + + stop_service(); +} + +bool T5Service::start_service(const char* application_id, const char* application_version) { + if(_is_started) return true; + + T5_ClientInfo clientInfo; + clientInfo.applicationId = application_id; + clientInfo.applicationVersion = application_version; + + auto result = t5CreateContext(&_context, &clientInfo, nullptr); + + if(result != T5_SUCCESS) { + LOG_T5_ERROR(result); + return false; + } + + _is_started = true; + + _scheduler->start(); + + _scheduler->add_task(query_ndk_version()); + _scheduler->add_task(query_glasses_list()); + + return true; +} + +void T5Service::stop_service() { + if(!_is_started) return; + _is_started = false; + + _scheduler->stop(); + + for(Glasses::Ptr glasses : _glasses_list) { + glasses->disconnect(); + glasses_were_disconnected(glasses); + glasses->destroy_handle(); + } + _glasses_list.clear(); + if(_context) + { + std::lock_guard lock(g_t5_exclusivity_group_1); + t5DestroyContext(&_context); + } + _context = nullptr; +} + +const std::vector T5Service::get_events() { + _events.clear(); + for(int i = 0; i < _glasses_list.size(); ++i) { + auto changes = _glasses_list[i]->get_changed_state(); + auto current_state = _glasses_list[i]->get_current_state(); + if((changes & GlassesState::CREATED) == GlassesState::CREATED) { + _events.push_back(GlassesEvent(i, current_state & GlassesState::CREATED ? GlassesEvent::E_ADDED : GlassesEvent::E_LOST)); + } + if((changes & GlassesState::UNAVAILABLE) == GlassesState::UNAVAILABLE) { + _events.push_back(GlassesEvent(i, current_state & GlassesState::UNAVAILABLE ? GlassesEvent::E_UNAVAILABLE : GlassesEvent::E_AVAILABLE)); + } + if((changes & GlassesState::CONNECTED) == GlassesState::CONNECTED) { + if(current_state & GlassesState::CONNECTED) { + glasses_were_connected(_glasses_list[i]); + _events.push_back(GlassesEvent(i, GlassesEvent::E_CONNECTED)); + } + else { + glasses_were_disconnected(_glasses_list[i]); + _events.push_back(GlassesEvent(i, GlassesEvent::E_DISCONNECTED)); + + } + } + if((changes & GlassesState::TRACKING) == GlassesState::TRACKING) { + _events.push_back(GlassesEvent(i, current_state & GlassesState::TRACKING ? GlassesEvent::E_TRACKING : GlassesEvent::E_NOT_TRACKING)); + } + if((changes & GlassesState::ERROR) == GlassesState::ERROR) { + // There is currently no way to recover from the error state + _events.push_back(GlassesEvent(i, current_state & GlassesState::ERROR ? GlassesEvent::E_STOPPED_ON_ERROR : GlassesEvent::E_AVAILABLE)); + } + } + return _events; +} + +CotaskPtr T5Service::query_ndk_version() { + std::vector buffer; + size_t buffer_size = 32; + buffer.resize(buffer_size); + + T5_Result result; + for(int tries = 0; tries < 10; ++tries) { + size_t buffer_size = buffer.size(); + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5GetSystemUtf8Param(_context, kT5_ParamSys_UTF8_Service_Version, buffer.data(), &buffer_size); + } + if(result == T5_ERROR_OVERFLOW) { + buffer.resize(buffer_size); + continue; + } + else if(result != T5_ERROR_NO_SERVICE && result != T5_ERROR_IO_FAILURE) { + break; + } + co_await task_sleep(_poll_rate_for_retry); + } + co_await run_in_foreground; + if(result != T5_SUCCESS) { + LOG_T5_ERROR(result); + _ndk_version = "unknown"; + } + else { + buffer.resize(buffer_size); + _ndk_version = buffer.data(); + } + log_message("Tilt Five NDK version: ", _ndk_version); +} + +CotaskPtr T5Service::query_glasses_list() { + std::vector buffer; + buffer.resize(64); + T5_Result result; + bool first_resize = true; + + for(;;) { + size_t bufferSize = buffer.size(); + + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5ListGlasses(_context, buffer.data(), &bufferSize); + } + if(result == T5_ERROR_NO_SERVICE || result == T5_ERROR_IO_FAILURE) { + co_await task_sleep(_poll_rate_for_retry); + continue; + } + else if(result == T5_ERROR_OVERFLOW && first_resize) { + buffer.resize(bufferSize); + first_resize = false; + continue; + } + else if(result != T5_SUCCESS) { + co_await run_in_foreground; + LOG_T5_ERROR(result); + co_return; + } + first_resize = true; + + std::string_view str_view(buffer.data(), buffer.size()); + std::vector parsed_id_list; + + while(!str_view.empty()) { + auto pos = str_view.find_first_of('\0'); + if(pos == 0 || pos == std::string_view::npos) + break; + parsed_id_list.emplace_back(str_view.substr(0, pos)); + str_view.remove_prefix(pos); + } + + co_await run_in_foreground; + + for(auto& id : parsed_id_list) { + auto found = std::find_if( + _glasses_list.cbegin(), + _glasses_list.cend(), + [id](auto& gls) {return gls->get_id() == id; }); + + if(found == _glasses_list.cend()) { + auto new_glasses = std::make_shared(std::string(id)); + if(new_glasses->allocate_handle(_context)) + _glasses_list.push_back(new_glasses); + } + } + + co_await task_sleep(_poll_rate_for_monitoring); + } +} + +bool T5Service::is_service_started() { + return _is_started; +} + +void T5Service::connect_glasses(int glasses_num, std::string display_name) { + if(glasses_num < 0 || glasses_num >= _glasses_list.size()) return; + + if(should_glasses_be_connected(_glasses_list[glasses_num])) + _glasses_list[glasses_num]->connect(display_name); +} + +void T5Service::disconnect_glasses(int glasses_num) { + if(glasses_num < 0 || glasses_num >= _glasses_list.size()) return; + + _glasses_list[glasses_num]->disconnect(); +} + +void T5Service::update_connection() { + _scheduler->schedule_tasks(); + _scheduler->log_exceptions([](auto msg) { log_message("Scheduler exception: ", msg); }); + + for(int i = 0; i < _glasses_list.size(); ++i) { + _glasses_list[i]->update_connection(); + } + + connection_updated(); +} + +void T5Service::update_tracking() { + if(!_is_started) + return; + + _scheduler->schedule_tasks(); + _scheduler->log_exceptions([](auto msg) { log_message("Scheduler exception: ", msg); }); + + for(auto& glasses : _glasses_list) { + if(glasses->is_connected()) + glasses->update_tracking(); + } + + tracking_updated(); +} +} // T5Integration diff --git a/extension/T5Integration/T5Service.h b/extension/T5Integration/T5Service.h new file mode 100644 index 0000000..9c9dfe8 --- /dev/null +++ b/extension/T5Integration/T5Service.h @@ -0,0 +1,91 @@ +#pragma once +#include +#include +#include +#include +#include +#include + +namespace T5Integration { + +using TaskSystem::CotaskPtr; +using TaskSystem::Scheduler; +using TaskSystem::run_in_foreground; +using TaskSystem::task_sleep; + +extern std::mutex g_t5_exclusivity_group_1; +//extern std::mutex g_t5_exclusivity_group_2; + +class T5Service { +protected: + + CotaskPtr query_ndk_version(); + CotaskPtr query_glasses_list(); + + virtual bool should_glasses_be_connected(Glasses::Ptr glasses) { return true; } + virtual void glasses_were_connected(Glasses::Ptr glasses) {} + virtual void glasses_were_disconnected(Glasses::Ptr glasses) {} + + virtual void connection_updated() {} + virtual void tracking_updated() {} + +public: + using Ptr = std::shared_ptr; + + T5Service(); + virtual ~T5Service(); + + bool start_service(const char* applicationID, const char* applicationVersion); + void stop_service(); + bool is_service_started(); + + void connect_glasses(int glasses_num, std::string display_name); + void disconnect_glasses(int glasses_num); + + void set_upside_down_texture(int glasses_num, bool is_upside_down); + + size_t get_glasses_count() { return _glasses_list.size(); } + + const std::vector get_events(); + const std::string get_glasses_id(size_t glasses_idx); + const std::string get_glasses_name(size_t glasses_idx); + + void update_connection(); + void update_tracking(); + + +protected: + + std::string _application_id; + std::string _application_version; + + T5_Context _context = nullptr; + std::string _ndk_version; + std::vector _glasses_list; + + bool _is_started = false; + + std::chrono::milliseconds _poll_rate_for_monitoring = 2s; + std::chrono::milliseconds _poll_rate_for_retry = 100ms; + + T5_Result _last_error; + + std::vector _events; + + Scheduler::Ptr _scheduler; +}; + + +inline const std::string T5Service::get_glasses_id(size_t glasses_idx) { + return glasses_idx < _glasses_list.size() ? _glasses_list[glasses_idx]->get_id() : std::string(); +} + +inline const std::string T5Service::get_glasses_name(size_t glasses_idx) { + return glasses_idx < _glasses_list.size() ? _glasses_list[glasses_idx]->get_name() : std::string(); +} + +inline void T5Service::set_upside_down_texture(int glasses_idx, bool is_upside_down) { + if(glasses_idx < _glasses_list.size()) _glasses_list[glasses_idx]->set_upside_down_texture(is_upside_down); +} + +} diff --git a/extension/T5Integration/TaskSystem.cpp b/extension/T5Integration/TaskSystem.cpp new file mode 100644 index 0000000..9d75702 --- /dev/null +++ b/extension/T5Integration/TaskSystem.cpp @@ -0,0 +1,293 @@ +// BGTask.cpp : This file contains the 'main' function. Program execution begins and ends there. +// +#include +#include + +namespace TaskSystem { + +TaskStatus TaskBase::run_background_task() { + return task_done; +} + +TaskStatus TaskBase::run_foreground_task() { + return task_done; +} + +TaskTime Task::get_scheduled_time() { + return _status._scheduled_time; +} + +bool Task::is_background() { + return _status.is_background(); +} + +bool Task::is_foreground() { + return _status.is_foreground(); +} +bool Task::is_done() { + return _status.is_done(); +} +bool Task::is_error() { + return _status.is_error(); +} +bool Task::is_exception() { + return _status.is_exception(); +} + +void Task::set_status(const TaskStatus& status) { + _status = status; +} + +TaskStatus Task::get_status() { + return _status; +} + + +#if __cplusplus >= 202002L + + +TaskStatus Cotask::run_background_task() { + auto& promise = _handle.promise(); + while(true) { + if(promise._sub_task) { + auto status = promise._sub_task->run_background_task(); + if(!status.is_done()) + return status; + promise._sub_task.reset(); + + if(status.is_error()) + return status; + if(is_foreground()) { + return run_in_foreground; + } + } + _handle.resume(); + if(!promise._sub_task) + return promise._status; + if(promise._sub_task->is_foreground()) { + return run_in_foreground; + } + } +} + +TaskStatus Cotask::run_foreground_task() { + auto& promise = _handle.promise(); + while(true) { + if(promise._sub_task) { + auto status = promise._sub_task->run_foreground_task(); + if(!status.is_done()) + return status; + promise._sub_task.reset(); + + if(status.is_error()) + return status; + if(is_background()) { + return run_now; + } + } + _handle.resume(); + if(!promise._sub_task) + return _handle.promise()._status; + if(promise._sub_task->is_background()) { + return task_sleep(0); + } + } +} + +#endif + +Scheduler::Scheduler() {} + +Scheduler::~Scheduler() { + stop(); +} + +void Scheduler::start() { + _is_running = true; + _is_initial_run = true; + _background_thread = std::thread(&Scheduler::do_background_tasks, this); +} + +void Scheduler::stop() { + if(_is_running) { + _is_running = false; + _background_release.notify_one(); + if(_background_thread.joinable()) + _background_thread.join(); + _background_run_list.clear(); + _background_wait_list.clear(); + _foreground_list.clear(); + + } +} + +void Scheduler::add_task(TaskBase::Ptr&& task) { + if(task->is_background()) { + if(task->get_scheduled_time() < Clock::now() + _average_time) { + { + std::lock_guard lk(_background_run_mutex); + _background_run_list.push_front(std::forward(task)); + } + _background_release.notify_one(); + } + else { + std::lock_guard lk(_background_wait_mutex); + _background_wait_list.push_front(std::forward(task)); + } + } + else { + std::lock_guard lk(_foreground_mutex); + _foreground_list.push_front(std::forward(task)); + } +} + +void Scheduler::schedule_tasks() { + auto time_now = Clock::now(); + if(_is_initial_run) { + _average_time = Duration(0); + _is_initial_run = false; + } + else { + auto delta = std::chrono::duration_cast(time_now - _last_run); + + _average_time = (delta + _run_count * _average_time) / (_run_count + 1); + _run_count++; + } + _last_run = time_now; + + queue_background_tasks(); + do_foreground_tasks(); +} + +void Scheduler::do_background_tasks() { + while(_is_running) { + // Swap all tasks to local stack + std::list do_list; + { + std::unique_lock lk(_background_run_mutex); + _background_release.wait(lk, [this] { return !_background_run_list.empty() || !_is_running; }); + std::swap(_background_run_list, do_list); + } + // run them + for(auto& task : do_list) { + if(!_is_running) break; + try { + task->set_status(task->run_background_task()); + } + catch(...) { + task->set_status(capture_exception()); + } + } + // move background tasks back to the background wait list + std::list to_background; + splice_if(do_list, to_background, [](const TaskBase::Ptr& task) { return task->is_background(); }); + { + std::lock_guard lk(_background_wait_mutex); + _background_wait_list.splice(_background_wait_list.end(), to_background); + } + // move foreground tasks back to the forground list + std::list to_foreground; + splice_if(do_list, to_foreground, [](const TaskBase::Ptr& task) { return task->is_foreground(); }); + { + std::lock_guard lk(_foreground_mutex); + _foreground_list.splice(_foreground_list.end(), to_foreground); + } + std::list to_exception; + for(auto& task : do_list) { + if(task->is_exception()) { + to_exception.push_back(task->get_status()._exception); + } + std::lock_guard lk(_exception_mutex); + _exception_list.splice(_exception_list.end(), to_exception); + } + // all done tasks die here + } +} + +void Scheduler::queue_background_tasks() { + auto time_now = Clock::now() + _average_time; + + // Swap all tasks to local stack + std::list test_list; + { + std::lock_guard lk(_background_wait_mutex); + std::swap(_background_wait_list, test_list); + } + + // Get the ones that need to run soon + std::list do_background; + splice_if(test_list, do_background, [time_now](const TaskBase::Ptr& task) { return task->get_scheduled_time() <= time_now; }); + + // If we have some then move them to the run list + if(!do_background.empty()) { + { + std::lock_guard lk(_background_run_mutex); + _background_run_list.splice(_background_run_list.end(), do_background); + } + _background_release.notify_one(); + } + + // Put the ones that are left back + if(!test_list.empty()) { + std::lock_guard lk(_background_wait_mutex); + _background_wait_list.splice(_background_wait_list.end(), test_list); + } +} + +void Scheduler::do_foreground_tasks() { + // Swap all tasks to local + std::list do_list; + { + std::lock_guard lk(_foreground_mutex); + std::swap(_foreground_list, do_list); + } + // run them + for(auto& task : do_list) { + try { + task->set_status(task->run_foreground_task()); + } + catch(...) { + task->set_status(capture_exception()); + } + } + // move background tasks back to the background wait list + std::list to_background; + splice_if(do_list, to_background, [](const TaskBase::Ptr& task) { return task->is_background(); }); + { + std::lock_guard lk(_background_wait_mutex); + _background_wait_list.splice(_background_wait_list.end(), to_background); + } + // move foreground tasks back to the forground list + std::list to_foreground; + splice_if(do_list, to_foreground, [](const TaskBase::Ptr& task) { return task->is_foreground(); }); + { + std::lock_guard lk(_foreground_mutex); + _foreground_list.splice(_foreground_list.end(), to_foreground); + } + std::list to_exception; + for(auto& task : do_list) { + if(task->is_exception()) { + to_exception.push_back(task->get_status()._exception); + } + std::lock_guard lk(_exception_mutex); + _exception_list.splice(_exception_list.end(), to_exception); + } + // all done tasks die here +} +std::list Scheduler::get_exceptions() { + std::list return_list; + std::lock_guard lk(_exception_mutex); + std::swap(return_list, _exception_list); + return return_list; +} +void Scheduler::log_exceptions(ExceptionLogger func) { + std::list except_list; + { + std::lock_guard lk(_exception_mutex); + std::swap(except_list, _exception_list); + } + for(auto exc_ptr : except_list) { + func(what(exc_ptr)); + } +} +} diff --git a/extension/T5Integration/TaskSystem.h b/extension/T5Integration/TaskSystem.h new file mode 100644 index 0000000..852f36a --- /dev/null +++ b/extension/T5Integration/TaskSystem.h @@ -0,0 +1,321 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 202002L +#include +#include +#endif + +namespace TaskSystem { + +using Clock = std::chrono::steady_clock; +using TaskTime = std::chrono::time_point; +using Duration = std::chrono::milliseconds; + +struct TaskStatus { + TaskTime _scheduled_time; + enum : uint8_t { + BACKGROUND, + FOREGROUND, + DONE, + ERROR, + EXCEPTION_THROWN + } _type; + std::exception_ptr _exception = nullptr; + + bool is_background() { return _type == BACKGROUND; } + bool is_foreground() { return _type == FOREGROUND; } + bool is_exception() { return _type == EXCEPTION_THROWN; } + bool is_error() { return _type == ERROR || is_exception(); } + bool is_done() { return _type == DONE || is_error(); } +}; + +const TaskStatus run_now{ TaskTime{}, TaskStatus::BACKGROUND, nullptr }; +const TaskStatus task_done{ TaskTime{}, TaskStatus::DONE, nullptr }; +const TaskStatus task_error{ TaskTime{}, TaskStatus::ERROR, nullptr }; +const TaskStatus run_in_foreground{ TaskTime{}, TaskStatus::FOREGROUND, nullptr }; + +inline TaskStatus task_sleep(Duration duration) { + return { Clock::now() + duration, TaskStatus::BACKGROUND, nullptr }; +} + +inline TaskStatus task_sleep(int duration) { + return { Clock::now() + Duration{duration}, TaskStatus::BACKGROUND, nullptr }; +} + +inline TaskStatus capture_exception() { + return { TaskTime{}, TaskStatus::EXCEPTION_THROWN, std::current_exception() }; +} +inline TaskStatus return_exception(std::exception_ptr exception) { + return { TaskTime{}, TaskStatus::EXCEPTION_THROWN, exception }; +} + +class Scheduler; +class TaskBase { +public: + + friend Scheduler; + using Ptr = std::unique_ptr; + + TaskBase() = default; + virtual ~TaskBase() = default; + + virtual TaskTime get_scheduled_time() = 0; + virtual bool is_foreground() = 0; + virtual bool is_background() = 0; + virtual bool is_done() = 0; + virtual bool is_error() = 0; + virtual bool is_exception() = 0; + + virtual void set_status(const TaskStatus& status) = 0; + virtual TaskStatus get_status() = 0; + + virtual TaskStatus run_background_task(); + virtual TaskStatus run_foreground_task(); +}; + +class Task : public TaskBase { +public: + + Task(); + ~Task() override = default; + + TaskTime get_scheduled_time() override; + bool is_foreground() override; + bool is_background() override; + bool is_done() override; + bool is_error() override; + bool is_exception() override; + + void set_status(const TaskStatus& status) override; + TaskStatus get_status() override; + +private: + + TaskStatus _status; +}; + +inline Task::Task() + : _status(run_now) {} + +#if __cplusplus >= 202002L + +class CotaskPtr; +struct CotaskPromiseType { + CotaskPtr get_return_object(); + std::suspend_always initial_suspend() { return{}; } + + void return_void(); + void unhandled_exception(); + std::suspend_always final_suspend() noexcept { return{}; } + + std::suspend_always await_transform(const TaskStatus& status); + std::suspend_always await_transform(Task::Ptr&& sub_task); + + TaskStatus _status; + Task::Ptr _sub_task; +}; + +class Cotask : public TaskBase { +public: + + std::coroutine_handle _handle = nullptr; + + Cotask(std::coroutine_handle handle) + : _handle(handle) {} + + Cotask() = default; + + Cotask(Cotask&& rhs) noexcept + : _handle(std::exchange(rhs._handle, nullptr)) {} + + Cotask& operator=(Cotask&& rhs) noexcept { + _handle = std::exchange(rhs._handle, nullptr); + return *this; + } + + ~Cotask() override { + if(_handle) { + _handle.destroy(); + } + } + + TaskStatus run_background_task() override; + TaskStatus run_foreground_task() override; + + TaskTime get_scheduled_time() override; + + bool is_foreground() override; + bool is_background() override; + bool is_done() override; + bool is_error() override; + bool is_exception() override; + void set_status(const TaskStatus& status) override; + TaskStatus get_status() override; +}; + +class CotaskPtr : public std::unique_ptr { + friend CotaskPromiseType; + CotaskPtr(Cotask* task_ptr) : std::unique_ptr(task_ptr) {} +public: + using promise_type = CotaskPromiseType; +}; + +inline CotaskPtr CotaskPromiseType::get_return_object() { + return CotaskPtr(new Cotask(std::coroutine_handle::from_promise(*this))); +} + +inline void CotaskPromiseType::return_void() { + _status = task_done; +} + +inline void CotaskPromiseType::unhandled_exception() { + _status = capture_exception(); +} + +inline std::suspend_always CotaskPromiseType::await_transform(const TaskStatus& status) { + _status = status; + return {}; +} + +inline std::suspend_always CotaskPromiseType::await_transform(Task::Ptr&& sub_task) { + _sub_task = std::move(sub_task); + return {}; +} + +inline TaskTime Cotask::get_scheduled_time() { + auto& promise = _handle.promise(); + if(promise._sub_task) + return promise._sub_task->get_scheduled_time(); + return promise._status._scheduled_time; +} + +inline bool Cotask::is_foreground() { + auto& promise = _handle.promise(); + if(promise._sub_task) + return promise._sub_task->is_foreground(); + return promise._status.is_foreground(); +} + +inline bool Cotask::is_background() { + auto& promise = _handle.promise(); + if(promise._sub_task) + return promise._sub_task->is_background(); + return promise._status.is_background(); +} + +inline bool Cotask::is_done() { + auto& promise = _handle.promise(); + if(promise._sub_task) + return promise._sub_task->is_done(); + return promise._status.is_done(); +} + +inline bool Cotask::is_error() { + auto& promise = _handle.promise(); + if(promise._sub_task) + return promise._sub_task->is_error(); + return promise._status.is_error(); +} + +inline bool Cotask::is_exception() { + auto& promise = _handle.promise(); + if(promise._sub_task) + return promise._sub_task->is_exception(); + return promise._status.is_exception(); +} + +inline void Cotask::set_status(const TaskStatus& status) { + auto& promise = _handle.promise(); + if(promise._sub_task) + promise._sub_task->set_status(status); + promise._status = status; +} + +inline TaskStatus Cotask::get_status() { + auto& promise = _handle.promise(); + if(promise._sub_task) + return promise._sub_task->get_status(); + return promise._status; +} + +#endif // __cplusplus >= 202002L + +template +void splice_if(std::list& from_list, std::list& to_list, F pred) { + auto it = from_list.begin(); + while(it != from_list.end()) { + auto cur = it++; + if(pred(*cur)) { + to_list.splice(to_list.begin(), from_list, cur); + } + } +} + +std::string what(const std::exception_ptr& eptr); +template +inline std::string nested_what(const T& e) { + try { std::rethrow_if_nested(e); } + catch(...) { return " (" + what(std::current_exception()) + ")"; } + return {}; +} +inline std::string what(const std::exception_ptr& eptr) { + if(!eptr) { throw std::bad_exception(); } + try { std::rethrow_exception(eptr); } + catch(const std::exception& e) { return e.what() + nested_what(e); } + catch(const std::string& e) { return e; } + catch(const char* e) { return e; } + catch(...) { return "unknown exception type"; } +} + +class Scheduler { +public: + using ExceptionLogger = void(std::string); + using Ptr = std::shared_ptr; + + Scheduler(); + virtual ~Scheduler(); + + void start(); + void stop(); + + void add_task(TaskBase::Ptr&& task); + + void schedule_tasks(); + std::list get_exceptions(); + void log_exceptions(ExceptionLogger func); + +private: + + void do_background_tasks(); + void queue_background_tasks(); + void do_foreground_tasks(); + + bool _is_initial_run{ true }; + TaskTime _last_run; + long _run_count = 0; + Duration _average_time = Duration(0); + + std::thread _background_thread; + + std::atomic_bool _is_running{ false }; + + std::mutex _background_run_mutex; + std::mutex _background_wait_mutex; + std::mutex _foreground_mutex; + std::mutex _exception_mutex; + + std::condition_variable _background_release; + + std::list _background_run_list; + std::list _background_wait_list; + std::list _foreground_list; + std::list _exception_list; +}; +} // namespace TaskSystem + diff --git a/extension/T5Integration/Wand.cpp b/extension/T5Integration/Wand.cpp new file mode 100644 index 0000000..0dcd8a4 --- /dev/null +++ b/extension/T5Integration/Wand.cpp @@ -0,0 +1,168 @@ +#include +#include +#include + +namespace T5Integration { + +extern std::mutex g_t5_exclusivity_group_1; + +void Wand::update_from_stream_event(T5_WandStreamEvent& event) { + switch(event.type) { + case kT5_WandStreamEventType_Connect: + { + if(_handle == 0) + _handle = event.wandId; + _state = WandState::SYNCED | WandState::CONNECTED; + _buttons = WandButtons{}; + _analog = WandAnalog{}; + _pose = WandPose{}; + _battery = 0; + } break; + case kT5_WandStreamEventType_Disconnect: + { + _state = WandState::SYNCED; + } break; + case kT5_WandStreamEventType_Report: + { + _state = WandState::SYNCED | WandState::CONNECTED; + if(event.report.buttonsValid) { + _state |= WandState::BUTTONS_VALID; + _buttons.t5 = event.report.buttons.t5; + _buttons.one = event.report.buttons.one; + _buttons.two = event.report.buttons.two; + _buttons.three = event.report.buttons.three; + _buttons.a = event.report.buttons.a; + _buttons.b = event.report.buttons.b; + _buttons.x = event.report.buttons.x; + _buttons.y = event.report.buttons.y; + } + else + _state &= ~WandState::BUTTONS_VALID; + if(event.report.analogValid) { + _state |= WandState::ANALOG_VALID; + _analog.trigger = event.report.trigger; + _analog.stick = event.report.stick; + } + else + _state &= ~WandState::ANALOG_VALID; + + if(event.report.poseValid) { + _state |= WandState::POSE_VALID; + _pose.rotToWND_GBD = event.report.rotToWND_GBD; + _pose.posAim_GBD = event.report.posAim_GBD; + _pose.posFingertips_GBD = event.report.posFingertips_GBD; + _pose.posGrip_GBD = event.report.posGrip_GBD; + } + else + _state &= ~WandState::POSE_VALID; + if(event.report.batteryValid) { + _state |= WandState::BATTERY_VALID; + _battery = event.report.battery; + } + else + _state &= ~WandState::BATTERY_VALID; + + } break; + + } +} + +void Wand::update_from_wand(const Wand& other_wand) { + _state = other_wand._state; + if(_state & WandState::BUTTONS_VALID) + _buttons = other_wand._buttons; + if(_state & WandState::ANALOG_VALID) + _analog = other_wand._analog; + if(_state & WandState::POSE_VALID) + _pose = other_wand._pose; + if(_state & WandState::BATTERY_VALID) + _battery = other_wand._battery; +} + + +bool WandService::start(T5_Glasses handle) { + _glasses_handle = handle; + _last_wand_error = T5_SUCCESS; + _running = true; + _thread = std::jthread([this](std::stop_token s_token) { monitor_wands(s_token); }); + return _running; +} + +void WandService::stop() { + _thread.get_stop_source().request_stop(); + if(_thread.joinable()) + _thread.join(); +} +bool WandService::is_running() { + return _running; +} + +void WandService::get_wand_data(WandList& list) { + std::lock_guard lock(_list_access); + list = _wand_list; +} + +bool WandService::configure_wand_tracking(bool enable) { + + T5_Result result = T5_SUCCESS; + + for(int tries = 0; tries < 10; ++tries) { + T5_WandStreamConfig config{ enable }; + T5_Result result; + { + std::lock_guard lock(g_t5_exclusivity_group_1); + result = t5ConfigureWandStreamForGlasses(_glasses_handle, &config); + } + if(result != T5_ERROR_NO_SERVICE && result != T5_ERROR_IO_FAILURE) { + break; + } + std::this_thread::sleep_for(_poll_rate_for_retry); + } + + if(result != T5_SUCCESS) { + _last_wand_error = result; + return false; + } + return true; +} + +T5_Result WandService::get_last_error() { + auto tmp = _last_wand_error; + _last_wand_error = T5_SUCCESS; + return tmp; +} + + +void WandService::monitor_wands(std::stop_token s_token) { + if(!configure_wand_tracking(true)) + return; + + while(!s_token.stop_requested()) { + T5_WandStreamEvent event; + // g_t5_exclusivity_group_2 but can't conflict with anything currently + auto result = t5ReadWandStreamForGlasses(_glasses_handle, &event, _wait_time_for_wand_IO); + if(result == T5_TIMEOUT) + continue; + else if(result != T5_SUCCESS) { + _last_wand_error = result; + std::this_thread::sleep_for(std::chrono::milliseconds(20)); + } + + if(event.type != kT5_WandStreamEventType_Desync) { + std::lock_guard lock(_list_access); + auto opt_wand_ptr = find_wand(_wand_list, event.wandId); + auto wand = opt_wand_ptr ? opt_wand_ptr.value() : &_wand_list.emplace_back(); + wand->update_from_stream_event(event); + } + else { + std::lock_guard lock(_list_access); + for(auto& wand : _wand_list) { + wand._state = 0; + } + } + } + + configure_wand_tracking(false); + _running = false; +} +} // T5Integration diff --git a/extension/T5Integration/Wand.h b/extension/T5Integration/Wand.h new file mode 100644 index 0000000..8a23762 --- /dev/null +++ b/extension/T5Integration/Wand.h @@ -0,0 +1,95 @@ +#pragma once +#include +#include +#include + + +using namespace std::chrono_literals; + +namespace T5Integration { + +namespace WandState { +const uint8_t SYNCED = 0x01; +const uint8_t CONNECTED = 0x02; +const uint8_t BUTTONS_VALID = 0x04; +const uint8_t ANALOG_VALID = 0x08; +const uint8_t POSE_VALID = 0x10; +const uint8_t BATTERY_VALID = 0x20; +}; + +struct WandButtons { + bool t5:1; + bool one:1; + bool two:1; + bool three:1; + bool a:1; + bool b:1; + bool x:1; + bool y:1; +}; + +struct WandAnalog { + float trigger; + T5_Vec2 stick; +}; + +struct WandPose { + T5_Quat rotToWND_GBD; + T5_Vec3 posAim_GBD; + T5_Vec3 posFingertips_GBD; + T5_Vec3 posGrip_GBD; +}; + +struct Wand { + T5_WandHandle _handle; + uint8_t _state; + WandButtons _buttons; + WandAnalog _analog; + WandPose _pose; + uint8_t _battery; + + void update_from_stream_event(T5_WandStreamEvent& event); + void update_from_wand(const Wand& other_wand); +}; + +using WandList = std::vector; + +class WandService { +public: + bool start(T5_Glasses handle); + void stop(); + bool is_running(); + + void get_wand_data(WandList& list); + + T5_Result get_last_error(); + +private: + bool configure_wand_tracking(bool enable); + void monitor_wands(std::stop_token s_token); + + T5_Glasses _glasses_handle; + WandList _wand_list; + + std::jthread _thread; + std::mutex _list_access; + std::atomic_bool _running; + + std::chrono::milliseconds _poll_rate_for_retry = 20ms; + uint32_t _wait_time_for_wand_IO = 100; + + T5_Result _last_wand_error; +}; + +inline std::optional find_wand(const WandList& list, T5_WandHandle handle) { + auto it = std::find_if(list.begin(), list.end(), + [handle](auto& test_wand) { + return test_wand._handle == handle; + }); + + if(it != list.end()) + return it._Ptr; + return std::nullopt; +} + +} // T5Integration \ No newline at end of file diff --git a/extension/TiltFiveNDK/README.txt b/extension/TiltFiveNDK/README.txt new file mode 100644 index 0000000..6746d4b --- /dev/null +++ b/extension/TiltFiveNDK/README.txt @@ -0,0 +1,82 @@ + ___ + / / + __/ /__ + /_ __/▟████████▛ + / / ▟██▛▀▀▀▀▀▀ ████████ ▟▙ ██ ▆█ ██████ ▟▙ + / / ▟██▛ ██ ▝▘ ██ ▐████▌ ██ ▝▘ ▜█▙ ▟█▛ ▄▆██▆▄ + / / ▟██████▆▄ ██ ██ ██ ██ █████▌ ██ ▜█▙ ▟█▛ ▐██▄▄██▌ +/ ╰-- ▀▀▀▀▀████▌ ██ ██ ██ ██ ██ ██ ▜███▛ ▐█▙ ▄▄ +\ / ▟███ ██ ██ ██ ▜██▛ ██ ██ ▜█▛ ▀████▀ + `---' ▂▄████ + ▜█████████▀ + ▀▀▀▀▀▀ + +================================================================================ + +README + + The Tilt Five native development kit enables development of content for the + Tilt Five platform. + +GETTING STARTED + + API documentation is provided in the 'docs' directory. Refer to the content + there for details on how to use the API. + + Once you're familiar with the API, developing for Tilt Five is as simple as + including the appropriate header from the 'include' directory, and packaging + the appropriate library from the 'lib' directory with your application. + + Native C headers are provided by including 'TiltFiveNative.h' (C11 required). + To use the C++ wrapper, include 'TiltFiveNative.hpp' (C++11 required). + + The native library can be dynamically loaded or linked. + +SAMPLES + + The `samples` directory in the NDK download contains three trivial clients + exercising a range of functions of the NDK. The two files `sample.c` and + `sample.cpp` use the C and C++ interface respectively. + They have been tested with GCC 11.2.0, clang 13.0.0-2, and MSVC 19.30.30705, + built as follows: + + - `gcc -std=c11 sample.c -I .. ../lib/linux64/libTiltFiveNative.so` + - `g++ -std=c++11 sample.cpp -I .. ../lib/linux64/libTiltFiveNative.so -latomic` + - `clang -std=c11 sample.c -I .. ../lib/linux64/libTiltFiveNative.so` + - `clang++ -std=c++11 sample.cpp -I .. ../lib/linux64/libTiltFiveNative.so -latomic` + - `cl /std:c11 sample.c /MD /I .. ..\lib\win64\TiltFiveNative.dll.if.lib` + - `cl /std:c++14 sample.cpp /MD /EHsc /I .. ..\lib\win64\TiltFiveNative.dll.if.lib` + +CONTACT + + Need support with your questions? + Developing a game? + Want to join our team? + Reach out! We always want to meet fellow gamers! + + Developer Relations : devrel@tiltfive.com + Careers : jobs@tiltfive.com + Press Relations : press@tiltfive.com + +WEBSITE + + Visit the Tilt Five website for the latest news and downloads: + + https://tiltfive.com + + +NOTICE + + Copyright (C) 2020-2022 Tilt Five, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/extension/TiltFiveNDK/include/include/TiltFiveNative.h b/extension/TiltFiveNDK/include/include/TiltFiveNative.h new file mode 100644 index 0000000..8b602b4 --- /dev/null +++ b/extension/TiltFiveNDK/include/include/TiltFiveNative.h @@ -0,0 +1,961 @@ +/* + * Copyright (C) 2020-2022 Tilt Five, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/// \file +/// \brief C interface definition for the Tilt Five™ API + +#include "errors.h" +#include "types.h" + +#ifndef __cplusplus +#include +#else +#include +#endif + +#ifdef _WIN32 +#ifdef BUILDING_T5_NATIVE_DLL +#ifdef __GNUC__ +#define T5_EXPORT __attribute__((dllexport)) +#else // !__GNUC__ +#define T5_EXPORT __declspec(dllexport) +#endif // !__GNUC__ +#else // !BUILDING_T5_NATIVE_DLL +#define T5_EXPORT +#endif // !BUILDING_T5_NATIVE_DLL +#else // !_WIN32 +#define T5_EXPORT __attribute__((visibility("default"))) +#endif // !_WIN32 + +#ifdef __cplusplus +extern "C" { +#endif + +////////////////////////////////////////////////////////// +//// Glasses Interface //// +////////////////////////////////////////////////////////// + +/// \defgroup C_Glasses_Interface Tilt Five™ Native Interface (C) +/// Functions for managing glasses and wands +/// \{ + +/// \defgroup C_Ctx Context object management +/// \{ + +/// \brief Create a context object +/// +/// Internally, this starts a client connection to the Tilt Five™ service, which is +/// required for other library functions. +/// +/// This function can succeed even if it can't connect to the service, but will +/// continue to attempt to connect. If the service connection goes away at any time, +/// the client will reconnect automatically when it returns. +/// +/// Calling t5CreateContext() multiple times is valid, but likely unnecessary. It +/// will result in multiple separate connections to the service. Note that you +/// _do not_ need multiple separate connections to connect to multiple glasses. +/// +/// Contexts should be destroyed with t5DestroyContext() after a client is done. +/// Failure to do so will keep the client connected and leak memory. +/// +/// Some platforms may require additional parameters to create the context. +/// For example, Android uses JNI, which requires information about the JVM +/// in the form of a NativePlatformContext passed in from the Java layer. +/// +/// \attention Ensure that the lifetimes of the ::T5_ClientInfo members remain valid +/// for the duration of the context. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[out] context - Pointer to a ::T5_Context to be created +/// \param[in] clientInfo - ::T5_ClientInfo filled by client to detail client information. +/// \param[in] platformContext - Platform specific context. +/// Platform | Value +/// ---------|------------------------------------------ +/// Android | Pointer to a jobject/NativePlatformContext +/// Linux | Should be set to 0 +/// Windows | Should be set to 0 +/// +/// \retval ::T5_SUCCESS Context object was written to `context` +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `clientInfo`. +/// \retval ::T5_ERROR_STRING_OVERFLOW One or more of the provided strings is too long. +T5_EXPORT T5_Result t5CreateContext(T5_Context* context, + const T5_ClientInfo* clientInfo, + void* platformContext); + +/// \brief Destroy a context object +/// +/// This function destroys a ::T5_Context context object created with +/// t5CreateContext() and closes it's connection to the Tilt Five™ service. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// Attempting to use a ::T5_Context after it has been destroyed will result in a +/// ::T5_ERROR_NO_CONTEXT error. +/// +/// \param[in, out] context - ::T5_Context returned by t5CreateContext(). Invalidated on return. +T5_EXPORT void t5DestroyContext(T5_Context* context); + +/// \} +// C_Ctx + +/// \defgroup C_Sys System-wide functions +/// Require a ::T5_Context for invocation +/// \{ + +/// \brief Enumerate all glasses +/// +/// An entry in this list does not mean that it's available for use by the client. +/// This list includes glasses that are locked for use by other clients as well as +/// glasses that are not in the 'ready' state (E.g. Rebooting). +/// +/// t5CreateGlasses() can be called on any entry, even if the glasses aren't currently +/// available. +/// +/// The result is encoded as a sequence of null-terminated strings, with the final +/// entry being an empty string (IE The last entry is terminated with two nulls). +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] context - ::T5_Context returned by t5CreateContext(). +/// \param[out] buffer - Buffer to receive the list of devices as a series of null +/// terminated strings. The last element will be an empty string +/// (I.E. the list is terminated with two null chars in sequence). +/// \param[in,out] bufferSize - On Call: Size of buffer.
  +/// On Return: Size of written data. Note that this may +/// be larger than the buffer, in which case ::T5_ERROR_OVERFLOW +/// is returned, and this value represents the size of the buffer +/// needed to avoid overflow. +/// +/// \retval ::T5_SUCCESS List successfully written to buffer. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `buffer`. +/// or +/// Nullptr was supplied for `count`. +/// \retval ::T5_ERROR_OVERFLOW Provided buffer is too small to contain glasses list. +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_STRING_OVERFLOW Internal (Not correctable): String conversion overflow. +/// \retval ::T5_ERROR_SERVICE_INCOMPATIBLE Service is incompatible; context cannot be used. +/// Need driver upgrade. +T5_EXPORT T5_Result t5ListGlasses(T5_Context context, char* buffer, size_t* bufferSize); + +/// \brief Create a glasses access object +/// +/// Use t5ListGlasses() to obtain a list of ids usable for the `id` parameter. +/// +/// Destroy with t5DestroyGlasses() +/// +/// \attention Ensure that the lifetime of the graphics context remains valid for the duration of +/// the glasses connection. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. The calling thread must be the thread that provided the graphics context. +/// +/// \param[in] context - ::T5_Context returned by t5CreateContext(). +/// \param[in] id - Null terminated C string specifying the target glasses. +/// \param[out] glasses - ::T5_Glasses for use with glasses related functions. +/// +/// \retval ::T5_SUCCESS Obtained handle to glasses. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `id`. +/// or +/// Nullptr was supplied for `glasses`. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_STRING_OVERFLOW One or more of the provided strings is too long. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_SERVICE_INCOMPATIBLE Service is incompatible; context cannot be used. +/// Need driver upgrade. +T5_EXPORT T5_Result t5CreateGlasses(T5_Context context, const char* id, T5_Glasses* glasses); + +/// \brief Destroy a glasses object +/// +/// Destroys a ::T5_Glasses returned by t5CreateGlasses() and frees any +/// associated resources. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// Attempting to use a ::T5_Glasses after it has been destroyed will result in a +/// ::T5_ERROR_NO_CONTEXT error. +/// +/// \param[in, out] glasses - ::T5_Glasses returned by t5CreateGlasses(). Invalidated on return. +T5_EXPORT void t5DestroyGlasses(T5_Glasses* glasses); + +/// \defgroup sys_getParam System-wide parameters + +/// \brief Get a system-wide integer parameter +/// \ingroup sys_getParam +/// +/// See ::T5_ParamSys for a list of possible parameters to retrieve. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] context - ::T5_Context returned by t5CreateContext() +/// \param[in] param - ::T5_ParamSys to get value for. +/// \param[out] value - Pointer to a int64_t to be set to the current value. +/// +/// \retval ::T5_SUCCESS Got the parameter +/// \retval ::T5_ERROR_INVALID_ARGS `param` was not a valid enumerant +/// or +/// NULL was supplied for `value` +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_SETTING_WRONG_TYPE The requested parameter is not an integer value. +/// \retval ::T5_ERROR_SERVICE_INCOMPATIBLE Service is incompatible; context cannot be used. +/// Need driver upgrade. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_SETTING_UNKNOWN Internal (Not correctable): Setting is unknown. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_MISC_REMOTE Internal (Not correctable): Generic service error. +/// \retval ::T5_ERROR_OVERFLOW Internal (Not correctable): Buffer overflow. +T5_EXPORT T5_Result t5GetSystemIntegerParam(T5_Context context, T5_ParamSys param, int64_t* value); + +/// \brief Get a system-wide floating point parameter +/// \ingroup sys_getParam +/// +/// See ::T5_ParamSys for a list of possible parameters to retrieve. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] context - ::T5_Context returned by t5CreateContext() +/// \param[in] param - ::T5_ParamSys to get value for. +/// \param[out] value - Pointer to a double to be set to the current value. +/// +/// \retval ::T5_SUCCESS Got the parameter +/// \retval ::T5_ERROR_INVALID_ARGS `param` was not a valid enumerant +/// or +/// NULL was supplied for `value` +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_SETTING_WRONG_TYPE The requested parameter is not a floating point value. +/// \retval ::T5_ERROR_SERVICE_INCOMPATIBLE Service is incompatible; context cannot be used. +/// Need driver upgrade. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_SETTING_UNKNOWN Internal (Not correctable): Setting is unknown. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_MISC_REMOTE Internal (Not correctable): Generic service error. +/// \retval ::T5_ERROR_OVERFLOW Internal (Not correctable): Buffer overflow. +T5_EXPORT T5_Result t5GetSystemFloatParam(T5_Context context, T5_ParamSys param, double* value); + +/// \brief Get a system-wide UTF-8 encoded string parameter +/// \ingroup sys_getParam +/// +/// See ::T5_ParamSys for a list of possible parameters to retrieve. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] context - ::T5_Context returned by t5CreateContext() +/// \param[in] param - ::T5_ParamSys to get value for. +/// \param[out] buffer - Pointer to a buffer into which the current value is to be +/// written as a null-terminated string of UTF-8 code points. +/// \param[in,out] bufferSize - On Call: Size of the buffer pointed to by `buffer`. +///
  +/// On Return: Size of the parameter value. Note that this +/// may be larger than the buffer, in which case ::T5_ERROR_OVERFLOW +/// is returned, and this value represents the size of the buffer +/// needed to avoid overflow. +/// +/// \retval ::T5_SUCCESS Got the parameter +/// \retval ::T5_ERROR_INVALID_ARGS `param` was not a valid enumerant +/// or +/// NULL was supplied for `buffer` +/// or +/// NULL was supplied for `bufferSize` +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_SETTING_WRONG_TYPE The requested parameter is not a UTF-8 string value. +/// \retval ::T5_ERROR_SERVICE_INCOMPATIBLE Service is incompatible; context cannot be used. +/// Need driver upgrade. +/// \retval ::T5_ERROR_OVERFLOW The provided buffer was insufficient to store the +/// UTF-8 string value. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_SETTING_UNKNOWN Internal (Not correctable): Setting is unknown. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_MISC_REMOTE Internal (Not correctable): Generic service error. +T5_EXPORT T5_Result t5GetSystemUtf8Param(T5_Context context, + T5_ParamSys param, + char* buffer, + size_t* bufferSize); + +/// \brief Get a system-wide list of changed parameters +/// \ingroup sys_getParam +/// +/// This function doesn't return the values of the changed parameters, but an +/// unordered list of the parameters that have changed since this function was +/// last called. Note that as a result, the first call to this function will +/// always result in a count of 0. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] context - ::T5_Context returned by t5CreateContext(). +/// \param[out] buffer - ::T5_ParamSys buffer to receive list of change parameters. +/// \param[in,out] count - On Call: Size of buffer in elements.
  +/// On Return: Number of changed parameters in butter. +/// +/// \retval ::T5_SUCCESS Changed parameter list written to buffer. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `buffer`. +/// or +/// Nullptr was supplied for `count`. +/// \retval ::T5_ERROR_OVERFLOW Buffer too small to contain parameter list. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_SERVICE_INCOMPATIBLE Service is incompatible; context cannot be used. +/// Need driver upgrade. +T5_EXPORT T5_Result t5GetChangedSystemParams(T5_Context context, + T5_ParamSys* buffer, + uint16_t* count); + +/// \brief Get the gameboard dimensions +/// +/// \par Threading +/// Thread safe - may be called by any thread at any time. +/// +/// \param[in] context - ::T5_Context returned by t5CreateContext() +/// \param[in] gameboardType - ::T5_GameboardType we're interested in +/// \param[out] gameboardSize - Resulting gameboard dimensions +/// +/// \retval ::T5_SUCCESS Changed parameter list written to buffer. +/// \retval ::T5_ERROR_INVALID_ARGS Gameboard type invalid or nullptr supplied for +/// gameboardSize. +T5_EXPORT T5_Result t5GetGameboardSize(T5_Context context, + T5_GameboardType gameboardType, + T5_GameboardSize* gameboardSize); +/// \} +// C_Sys + +/// \defgroup C_Gls Glasses functions +/// Require a ::T5_Glasses for invocation +/// \{ + +/// \defgroup glassesStateFns Glasses state management +/// \brief Functions related to the management of glasses state and exclusivity + +/// \brief Reserve glasses for exclusive operations by the client +/// \ingroup glassesStateFns +/// +/// Although several operations can be performed without acquiring an exclusive lock on glasses, +/// there are a few for which an exclusive lock is required. Primarily, the ability to get poses +/// (t5GetGlassesPose()) and send frames (t5SendFrameToGlasses()). To reserve glasses for +/// exclusive use, use this function. +/// +/// Clients may request glasses that aren't fully available yet (e.g. a device that isn't fully +/// booted, or needs to be rebooted to be compatible with the client). That is why there's a +/// two-step approach here requiring a request for exclusive access first. To finish preparing +/// for exclusive operations, use t5EnsureGlassesReady(). +/// +/// Repeated calls to this function should be made until reserve is successful or an error +/// occurs. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses() +/// \param[in] displayName - Null terminated C string to display in control panel (localized) +/// E.g. "Awesome Game (Player 1)" +/// +/// \retval ::T5_SUCCESS Glasses reserved for this client. +/// \retval ::T5_ERROR_UNAVAILABLE Glasses already reserved by another client. +/// \retval ::T5_ERROR_ALREADY_CONNECTED Glasses already reserved and connected for this client. +/// \retval ::T5_ERROR_DEVICE_LOST Glasses have disconnected - destroy glasses with +/// t5DestroyGlasses(), re-obtain with +/// t5CreateGlasses() and try again. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr or invalid input supplied for `displayName`. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +/// \retval ::T5_ERROR_STRING_OVERFLOW `displayName` is too long. +T5_EXPORT T5_Result t5ReserveGlasses(T5_Glasses glasses, const char* displayName); + +/// \brief Set the display name for glasses that were previously reserved for exclusive operations. +/// \ingroup glassesStateFns +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses() +/// \param[in] displayName - Null terminated C string to display in control panel (localized) +/// E.g. "Awesome Game (Player 2)" +/// +/// \retval ::T5_SUCCESS Glasses reserved for this client. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr or invalid input supplied for `displayName`. +/// \retval ::T5_ERROR_INVALID_STATE Glasses weren't reserved first or client is invalid. +/// \retval ::T5_ERROR_STRING_OVERFLOW `displayName` is too long. +T5_EXPORT T5_Result t5SetGlassesDisplayName(T5_Glasses glasses, const char* displayName); + +/// \brief Ensure that reserved glasses are ready for exclusive operations. +/// \ingroup glassesStateFns +/// +/// Ensure that reserved glasses are ready for exclusive operations, such as the ability to get +/// poses (t5GetGlassesPose()) and send frames (t5SendFrameToGlasses()). To reserve glasses for +/// exclusive use t5ReserveGlasses() . This *must* be checked for success prior to exclusive +/// operations, otherwise those operations will fail. +/// +/// In normal operation, this will return either ::T5_SUCCESS or ::T5_ERROR_TRY_AGAIN . This +/// should be called until success or an different error is seen. +/// +/// If glasses are not reserved before calling, this will return an error. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses() +/// +/// \retval ::T5_SUCCESS Glasses ready for exclusive operations. +/// \retval ::T5_ERROR_TRY_AGAIN Glasses not yet ready for exclusive operations. +/// \retval ::T5_ERROR_UNAVAILABLE Glasses already in use by another client. +/// \retval ::T5_ERROR_DEVICE_LOST Glasses have disconnected - destroy glasses with +/// t5DestroyGlasses(), re-obtain with +/// t5CreateGlasses() and try again. +/// \retval ::T5_ERROR_INVALID_STATE Glasses weren't reserved first or client is invalid. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr or invalid input supplied for `info`. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +/// \retval ::T5_ERROR_STRING_OVERFLOW One or more of the provided strings is too long. +T5_EXPORT T5_Result t5EnsureGlassesReady(T5_Glasses glasses); + +/// Release previously-reserved glasses. +/// +/// Release glasses that were previously reserved for exclusive operations by the client. +/// After calling this, exclusive operations cannot be used with the glasses unless the +/// glasses are again reserved and readied. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by T5ApiSys::createGlasses() +/// +/// \retval ::T5_SUCCESS Glasses released. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +T5_EXPORT T5_Result t5ReleaseGlasses(T5_Glasses glasses); + +/// \brief Get the exclusivity/connection status of the glasses +/// \ingroup glassesStateFns +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses() +/// \param[out] connectionState - ::T5_ConnectionState representing connection state +/// +/// \retval ::T5_SUCCESS Connection state was returned successfully +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +T5_EXPORT T5_Result t5GetGlassesConnectionState(T5_Glasses glasses, + T5_ConnectionState* connectionState); + +/// \brief Get the device identifier of a glasses. +/// \ingroup glassesStateFns +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses() +/// \param[out] buffer - C string buffer into which the result will be stored +/// \param[in,out] bufferSize - On Call: Size of buffer.
  +/// On Return: Size of written data. Note that this may +/// be larger than the buffer, in which case ::T5_ERROR_OVERFLOW +/// is returned, and this value represents the size of the buffer +/// needed to avoid overflow. +/// +/// \retval ::T5_SUCCESS Identifier written to `ident`. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `ident`. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_STRING_OVERFLOW Buffer is too small to contain the resutl +T5_EXPORT T5_Result t5GetGlassesIdentifier(T5_Glasses glasses, char* buffer, size_t* bufferSize); + +/// \defgroup c_exclusive_functions Exclusive functions +/// \brief Functions requiring an exclusive connection +/// +/// Exclusive connections are established with t5ReserveGlasses() and t5EnsureGlassesReady(). + +/// \brief Get the latest pose of the glasses +/// \ingroup c_exclusive_functions +/// +/// \par Exclusive Connection +/// Requires an exclusive connection - established with t5ReserveGlasses() and +/// t5EnsureGlassesReady(). +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[in] usage - ::T5_GlassesPoseUsage indicating the intended use for the glasses pose. +/// \param[out] pose - ::T5_GlassesPose representing current glasses pose. +/// +/// \retval ::T5_SUCCESS Pose written to `pose`. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `pose`. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_NOT_CONNECTED Glasses aren't exclusively connected for this client. +/// Use t5ReserveGlasses() and t5EnsureGlassesReady() first. +/// \retval ::T5_ERROR_TRY_AGAIN Pose wasn't been received from glasses yet. +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +T5_EXPORT T5_Result t5GetGlassesPose(T5_Glasses glasses, + T5_GlassesPoseUsage usage, + T5_GlassesPose* pose); + +/// \brief Initialize the graphics context to enable sending rendered frames to the glasses. +/// \ingroup c_exclusive_functions +/// +/// \par Graphics API +/// Clients submit frames for render via texture handles, which vary between graphics engines. +/// +/// The value of graphicsContext will depend on what library your application is using. +/// Refer to \ref aboutGraphicsApi for more details. +/// +/// Note that not all values are supported on all platforms +/// (E.g. D3D is only available on Windows). +/// +/// \par Threading +/// Exclusivity group 3 & Graphic thread only - Functions in this group must not be called +/// concurrently from different threads. The calling thread must be the thread that provided the +/// graphics context. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[in] graphicsApi - ::T5_GraphicsApi specifying the graphics API for the glasses. +/// \param[in] graphicsContext - Meaning depends on the graphics API in use. +/// +/// \retval ::T5_SUCCESS The graphics context was successfully initialized. +/// \retval ::T5_ERROR_INVALID_ARGS graphicsApi was ::kT5_GraphicsApi_None. +/// \retval ::T5_ERROR_INVALID_STATE t5InitGlassesGraphicsContext() was previously called +/// on this Glasses object. +T5_EXPORT T5_Result t5InitGlassesGraphicsContext(T5_Glasses glasses, + T5_GraphicsApi graphicsApi, + void* graphicsContext); + +/// \brief Configure the camera stream +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses() +/// \param[in] config - ::T5_CameraStreamConfig filled by client to detail configuration +/// +/// \retval ::T5_SUCCESS Stream configured ok. +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_TARGET_NOT_FOUND Device not found. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_INVALID_STATE Internal (Not correctable): Invalid state for request. +T5_EXPORT T5_Result t5ConfigureCameraStreamForGlasses(T5_Glasses glasses, + T5_CameraStreamConfig config); + +/// Get a new filled image buffer from the camera stream. Will always return the oldest filled +/// buffer. This function does not block on call, and will return a TryAgain error if there are no +/// available filled buffers. To ensure images don't become stale, continual polling of +/// t5GetFilledCamImageBuffer() and resubmission of empty buffers via t5SubmitEmptyCamImageBuffer() +/// is expected. +// +/// \par Exclusive Connection +/// Requires an exclusive connection - established with makeExclusive(). +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called simultaneously +/// from different threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by T5ApiSys::createGlasses(). +/// \param[out] image - ::T5_CamImage representing a camera image wrapper that will contain a +/// filled buffer upon successful return. +/// +/// \retval ::T5_SUCCESS Image written to `image`. +/// \retval ::T5_ERROR_TRY_AGAIN No available image. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `image`. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_NOT_CONNECTED Glasses aren't exclusively connected for this client. +/// Use makeExclusive() first. +/// \retval ::T5_INVALID_BUFFER The buffer does not have the requisite size for a camera image +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +T5_EXPORT T5_Result t5GetFilledCamImageBuffer(T5_Glasses glasses, T5_CamImage* image); + +/// Submit an empty image buffer to be filled by the camera frame stream +// +/// \par Exclusive Connection +/// Requires an exclusive connection - established with makeExclusive(). +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called simultaneously +/// from different threads. +/// +/// The memory in the image buffer Must remain valid until the corresponding wrapper is returned by +/// t5GetFilledCamImageBuffer or the buffer is canceled by t5CancelCamImageBuffer +/// +/// Note, only the image buffer inside of T5_CamImage is required to be kept valid. The T5_CamImage +/// wrapper is not. +/// +/// Incoming image is expected to have 0 width, height, and stride, and a buffer size larger than +/// the minimum image size. +/// +/// \param[in] glasses - ::T5_Glasses returned by T5ApiSys::createGlasses(). +/// \param[in] image - ::T5_CamImage representing current camera image buffer to be filled. +/// +/// \retval ::T5_SUCCESS Buffer submitted to service. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `image`. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_NOT_CONNECTED Glasses aren't exclusively connected for this client. +/// Use makeExclusive() first. +/// \retval ::T5_INVALID_BUFFER The buffer does not have the requisite size for a camera image +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +T5_EXPORT T5_Result t5SubmitEmptyCamImageBuffer(T5_Glasses glasses, T5_CamImage* image); + +/// Clear out the remaining buffers and return all buffers as a vector of camera images +// +/// \par Exclusive Connection +/// Requires an exclusive connection - established with makeExclusive(). +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called simultaneously +/// from different threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by T5ApiSys::createGlasses(). +/// \param[in] buffer - A pointer to an image buffer that should be cancelled and no longer used +/// by the service +/// +/// \retval ::T5_SUCCESS Buffer is no longer in use and is available for freeing +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_NOT_CONNECTED Glasses aren't exclusively connected for this client. +/// Use makeExclusive() first. +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +T5_EXPORT T5_Result t5CancelCamImageBuffer(T5_Glasses glasses, uint8_t* buffer); + +/// \brief Send a frame to display on the glasses +/// \ingroup c_exclusive_functions +/// +/// Both left and right stereoscopic images are presented together via this call. The textures +/// referred to by the `leftTexHandle` and `rightTexHandle` fields of \a info will be used within +/// this call to enqueue and submit graphics operations that will read the texture data. Once this +/// call returns, no additional operations referencing those textures will be performed. However, +/// depending on the graphics API being used, the application may need to perform additional +/// synchronization prior to freeing the texture resources in order to ensure that the queued +/// graphics operations have completed. +/// +/// \par Exclusive Connection +/// Requires an exclusive connection - established with t5ReserveGlasses() and +/// t5EnsureGlassesReady(). +/// +/// \par Graphics Context +/// Requires a graphics context - initialized with t5InitGraphicsContext() +// +/// \par Threading +/// Exclusivity group 3 & Graphic thread only - Functions in this group must not be called +/// concurrently from different threads. The calling thread must be the thread that provided the +/// graphics context. +/// +/// \see \ref aboutGraphicsApi +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[in] info - ::T5_FrameInfo detailing the frame to display. +/// +/// \retval ::T5_SUCCESS The frame was successfully queued to be sent. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `info`. +/// \retval ::T5_ERROR_INVALID_STATE graphicsApi was ::kT5_GraphicsApi_None when +/// t5CreateGlasses() was called. +/// \retval ::T5_ERROR_NOT_CONNECTED Glasses aren't exclusively connected for this +/// client. Use t5ReserveGlasses() and +/// t5EnsureGlassesReady() first. +/// \retval ::T5_ERROR_INVALID_GFX_CONTEXT Graphics context is invalid. Check that +/// graphicsContext was correct when +/// t5InitGraphicsContext() was called. +/// \retval ::T5_ERROR_GFX_CONTEXT_INIT_FAIL Failed to initialize graphics context. +/// Exact meaning depends on current graphics API. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_INTERNAL Internal error - not correctable. +T5_EXPORT T5_Result t5SendFrameToGlasses(T5_Glasses glasses, const T5_FrameInfo* info); + +/// \defgroup glasses_getParam Glasses parameters +/// \brief Functions for getting glasses parameters + +/// \brief Get a glasses integer parameter +/// \ingroup glasses_getParam +/// +/// See ::T5_ParamGlasses for a list of possible parameters to retrieve. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[in] wand - ::T5_WandHandle to get value for. Use 0 for non-wand queries. +/// \param[in] param - ::T5_ParamGlasses to get value for. +/// \param[out] value - Pointer to a int64_t to be set to the current value. +/// +/// \retval ::T5_SUCCESS Got the parameter +/// \retval ::T5_ERROR_INVALID_ARGS `param` was not a valid enumerant +/// or +/// NULL was supplied for `value` +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_SETTING_WRONG_TYPE The requested parameter is not an integer value. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_SETTING_UNKNOWN Internal (Not correctable): Setting is unknown. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_MISC_REMOTE Internal (Not correctable): Generic service error. +/// \retval ::T5_ERROR_OVERFLOW Internal (Not correctable): Buffer overflow. +T5_EXPORT T5_Result t5GetGlassesIntegerParam(T5_Glasses glasses, + T5_WandHandle wand, + T5_ParamGlasses param, + int64_t* value); + +/// \brief Get a glasses floating point parameter +/// \ingroup glasses_getParam +/// +/// See ::T5_ParamGlasses for a list of possible parameters to retrieve. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[in] wand - ::T5_WandHandle to get value for. Use 0 for non-wand queries. +/// \param[in] param - ::T5_ParamGlasses to get value for. +/// \param[out] value - Pointer to a double to be set to the current value. +/// +/// \retval ::T5_SUCCESS Got the parameter +/// \retval ::T5_ERROR_INVALID_ARGS `param` was not a valid enumerant +/// or +/// NULL was supplied for `value` +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_SETTING_WRONG_TYPE The requested parameter is not a floating point value. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_SETTING_UNKNOWN Internal (Not correctable): Setting is unknown. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_MISC_REMOTE Internal (Not correctable): Generic service error. +/// \retval ::T5_ERROR_OVERFLOW Internal (Not correctable): Buffer overflow. +T5_EXPORT T5_Result t5GetGlassesFloatParam(T5_Glasses glasses, + T5_WandHandle wand, + T5_ParamGlasses param, + double* value); + +/// \brief Get a glasses UTF-8 encoded string parameter +/// \ingroup glasses_getParam +/// +/// See ::T5_ParamGlasses for a list of possible parameters to retrieve. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[in] wand - ::T5_WandHandle to get value for. Use 0 for non-wand queries. +/// \param[in] param - ::T5_ParamGlasses to get value for. +/// \param[out] buffer - Pointer to a buffer into which the current value is to be +/// written as a null-terminated string of UTF-8 code points. +/// \param[in,out] bufferSize - On Call: Size of the buffer pointed to by `buffer`. +///
  +/// On Return: Size of the parameter value. Note that this +/// may be larger than the buffer, in which case ::T5_ERROR_OVERFLOW +/// is returned, and this value represents the size of the buffer +/// needed to avoid overflow. +/// +/// \retval ::T5_SUCCESS Got the parameter +/// \retval ::T5_ERROR_INVALID_ARGS `param` was not a valid enumerant +/// or +/// NULL was supplied for `value` and `bufferSize` was not +/// 0 +/// or +/// NULL was supplied for `bufferSize` +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_NO_CONTEXT `context` is invalid. +/// \retval ::T5_ERROR_SETTING_WRONG_TYPE The requested parameter is not a UTF-8 string value. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_SETTING_UNKNOWN Internal (Not correctable): Setting is unknown. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_MISC_REMOTE Internal (Not correctable): Generic service error. +/// \retval ::T5_ERROR_OVERFLOW Internal (Not correctable): Buffer overflow. +T5_EXPORT T5_Result t5GetGlassesUtf8Param(T5_Glasses glasses, + T5_WandHandle wand, + T5_ParamGlasses param, + char* buffer, + size_t* bufferSize); + +/// \brief Get a glasses-specific list of changed parameters +/// \ingroup glasses_getParam +/// +/// This function doesn't return the values of the changed parameters, but an +/// unordered list of the parameters that have changed since this function was +/// last called. Note that as a result, the first call to this function will +/// always result in a count of 0. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[out] buffer - ::T5_ParamGlasses buffer to receive list of parameters. +/// \param[in,out] count - On Call: Size of buffer in elements.
  +/// On Return: Number of changed parameters in butter. +/// +/// \retval ::T5_SUCCESS Changed parameter list written to buffer. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `buffer`. +/// or +/// Nullptr was supplied for `count`. +/// \retval ::T5_ERROR_OVERFLOW Buffer too small to contain parameter list. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +T5_EXPORT T5_Result t5GetChangedGlassesParams(T5_Glasses glasses, + T5_ParamGlasses* buffer, + uint16_t* count); + +/// \defgroup wand_functions Wand related +/// \brief Functions related to wands + +/// \brief List available wands connected to this glasses +/// \ingroup wand_functions +/// +/// The results are written to the buffer pointed to by 'buffer', up to the +/// number of elements specified in 'bufferCapacity'. If the number of wands +/// connected would overflow the buffer, ::T5_ERROR_OVERFLOW is returned. +/// +/// The number of connected wands (and the number of elements that have been, or +/// would be, written the the buffer), is returned in \a count. +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[out] buffer - ::T5_WandHandle buffer to receive the list of wand handles. +/// \param[in,out] count - On Call: Size of buffer in elements.
  +/// On Return: Number of elements present. +/// +/// \retval ::T5_SUCCESS List successfully written to buffer. +/// \retval ::T5_ERROR_INVALID_ARGS Nullptr was supplied for `buffer`. +/// or +/// Nullptr was supplied for `count`. +/// \retval ::T5_ERROR_OVERFLOW Provided buffer is too small to contain wand list. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_TARGET_NOT_FOUND Device not found. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_INVALID_STATE Internal (Not correctable): Invalid state for request. +T5_EXPORT T5_Result t5ListWandsForGlasses(T5_Glasses glasses, + T5_WandHandle* buffer, + uint8_t* count); + +/// \brief Configure the wand event stream +/// \ingroup wand_functions +/// +/// \par Threading +/// Exclusivity group 1 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses() +/// \param[in] config - ::T5_WandStreamConfig filled by client to detail configuration +/// +/// \retval ::T5_SUCCESS Stream configured ok. +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// \retval ::T5_ERROR_NO_SERVICE Service is unavailable. +/// \retval ::T5_ERROR_TARGET_NOT_FOUND Device not found. +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_INVALID_STATE Internal (Not correctable): Invalid state for request. +T5_EXPORT T5_Result t5ConfigureWandStreamForGlasses(T5_Glasses glasses, + const T5_WandStreamConfig* config); + +/// \brief Read from the wands event stream +/// \ingroup wand_functions +/// +/// The client should repeatedly call this for as long as the wand event +/// stream is enabled. In any polling period, the client should call this +/// in a loop until it returns ::T5_ERROR_TIMEOUT to ensure that the queue +/// is drained. +/// +/// The server will continuously write events to the stream, and will not block +/// for clients that have fallen behind reading the stream. Wand events that +/// overflow the buffer are discarded. In the event of falling behind the client +/// should do any static query that it needs to do (such as enumerating +/// connected wands), and attempt to read the stream faster. +/// +/// \par Threading +/// Exclusivity group 2 - Functions in this group must not be called concurrently from different +/// threads. +/// +/// \param[in] glasses - ::T5_Glasses returned by t5CreateGlasses(). +/// \param[out] event - If an event is available, it will be written here. +/// \param[in] timeoutMs - Timeout in ms to wait before returning without read. +/// +/// \retval ::T5_SUCCESS Wand stream event written to `glasses` +/// \retval ::T5_ERROR_TIMEOUT Timeout waiting for wand stream event +/// \retval ::T5_ERROR_NO_CONTEXT `glasses` is invalid. +/// \retval ::T5_ERROR_UNAVAILABLE Wand stream isn't configured as enabled. +/// Use t5ConfigureWandStream() to enable. +/// \retval ::T5_ERROR_IO_FAILURE Failed to communicate with the service. +/// +/// The following are internal errors that should be discarded and/or logged: +/// \retval ::T5_ERROR_DECODE_ERROR Internal (Not correctable): Decode error. +/// \retval ::T5_ERROR_INTERNAL Internal (Not correctable): Generic error. +/// \retval ::T5_ERROR_INVALID_STATE Internal (Not correctable): Invalid state for request. +T5_EXPORT T5_Result t5ReadWandStreamForGlasses(T5_Glasses glasses, + T5_WandStreamEvent* event, + uint32_t timeoutMs); + +/// \} +// C_Gls + +/// \{ +// C_Glasses_Interface + +#ifdef __cplusplus +} +#endif + +#undef T5_EXPORT + +/// \} diff --git a/extension/TiltFiveNDK/include/include/TiltFiveNative.hpp b/extension/TiltFiveNDK/include/include/TiltFiveNative.hpp new file mode 100644 index 0000000..f70418e --- /dev/null +++ b/extension/TiltFiveNDK/include/include/TiltFiveNative.hpp @@ -0,0 +1,1518 @@ +/* + * Copyright (C) 2020-2022 Tilt Five, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/// \file +/// \brief Main include for the Tilt Five™ C++ API Binder + +#include "TiltFiveNative.h" +#include "errors.hpp" +#include "result.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/// \defgroup CPP_Interface Tilt Five™ Native Interface (C++) +/// C++ binder for the Tilt Five NDK +/// \{ + +namespace tiltfive { + +/// \defgroup CPP_Interface Tilt Five™ Native Interface (C++) +/// C++ binder for the Tilt Five NDK +/// \{ + +////////////////////////////////////////////////////////////////////////////// +//// Client //// +////////////////////////////////////////////////////////////////////////////// + +class Client; +class Glasses; +class Wand; +class WandStreamHelper; +class GlassesConnectionHelper; +class ParamChangeHelper; +class ParamChangeListener; + +/// \cond DO_NOT_DOCUMENT +/// Internal utility functions - Do not call directly +inline auto obtainWand(T5_WandHandle handle, std::shared_ptr wandStreamHelper) + -> std::shared_ptr; +inline auto obtainWandStreamHelper( + std::shared_ptr glasses, + std::chrono::milliseconds pollTimeout = std::chrono::milliseconds(100)) + -> std::shared_ptr; +inline auto obtainGlassesConnectionHelper(std::shared_ptr glasses, + const std::string& displayName, + std::chrono::milliseconds connectionPollInterval) + -> std::unique_ptr; +inline auto obtainParamChangeHelper(std::shared_ptr client, + std::weak_ptr listener, + std::chrono::milliseconds pollInterval) + -> std::unique_ptr; +/// \endcond + +/// \brief Client for communicating with the Tilt Five™ API +class Client : public std::enable_shared_from_this { +private: + static constexpr bool kDebug = true; + + Client(std::string applicationId, std::string applicationVersion, const uint8_t sdkType) + : mApplicationId(std::move(applicationId)) + , mApplicationVersion(std::move(applicationVersion)) { + + mClientInfo.applicationId = mApplicationId.c_str(); + mClientInfo.applicationVersion = mApplicationVersion.c_str(); + mClientInfo.sdkType = sdkType; + } + + const std::string mApplicationId; + const std::string mApplicationVersion; + + T5_Context mContext{}; + T5_ClientInfo mClientInfo{}; + + friend Glasses; + friend ParamChangeHelper; + + friend std::ostream& operator<<(std::ostream& os, std::shared_ptr const& instance) { + os << *instance; + return os; + } + + friend std::ostream& operator<<(std::ostream& os, Client const& instance) { + os << ""; + return os; + } + + friend auto obtainClient(const std::string& applicationId, + const std::string& applicationVersion, + void* platformContext, + const uint8_t sdkType) -> Result>; + + static auto create(const std::string& applicationId, + const std::string& applicationVersion, + void* platformContext, + const uint8_t sdkType) -> Result> { + + // Validate inputs + if (applicationId.length() > T5_MAX_STRING_PARAM_LEN) { + return Error::kStringOverflow; + } + + if (applicationVersion.length() > T5_MAX_STRING_PARAM_LEN) { + return Error::kStringOverflow; + } + + // Create client + auto client = + std::shared_ptr(new Client(applicationId, applicationVersion, sdkType)); + + // Start up the service connection + auto err = t5CreateContext(&client->mContext, &client->mClientInfo, platformContext); + if (err) { + return static_cast(err); + } + + return client; + }; + +public: + /// \cond DO_NOT_DOCUMENT + virtual ~Client() { + // Release context and library + t5DestroyContext(&mContext); + mContext = nullptr; + } + /// \endcond + + ////////////////////////////////////////////////////////// + //// System Functions //// + ////////////////////////////////////////////////////////// + + /// \brief Enumerate glasses + /// + /// Glasses may not be ready to connect if they are in the process of booting (or rebooting). + /// + /// \return Result containing either a vector of glasses identifier strings or an error. + auto listGlasses() -> Result> { + std::vector buffer; + buffer.resize(64); + + size_t bufferSize; + + // If the buffer passed to listGlasses() is too small, it'll return with + // an overflow condition, in which case, increase the size of the buffer + // and try again. + for (;;) { + bufferSize = buffer.size(); + T5_Result err = t5ListGlasses(mContext, buffer.data(), &bufferSize); + if (!err) { + break; + } else if (err == T5_ERROR_OVERFLOW) { + if (bufferSize > 1024) { + return Error::kOverflow; + } + + buffer.resize(bufferSize); + } else { + return static_cast(err); + } + } + + // Peel off string until we encounter a naked null (empty string) + std::vector glassesList; + auto buffPtr = buffer.data(); + for (;;) { + std::string id = buffPtr; + if (id.empty()) { + break; + } + + buffPtr += id.length() + 1; + glassesList.push_back(id); + } + return glassesList; + } + + /// \brief Get the version of the Tilt Five™ service + /// + /// \return String representing the version of the Tilt Five™ service. + /// Format is
Semantic Versioning. + auto getServiceVersion() -> Result { + std::unique_ptr value(new char[T5_MAX_STRING_PARAM_LEN]); + size_t size = T5_MAX_STRING_PARAM_LEN; + T5_Result err = + t5GetSystemUtf8Param(mContext, kT5_ParamSys_UTF8_Service_Version, value.get(), &size); + if (!err) { + return std::string(value.get(), size); + } else { + return static_cast(err); + } + } + + /// \brief Get a system-wide list of changed parameters + /// + /// This function doesn't return the values of the changed parameters, but vector of the + /// parameters that have changed since this function was last called. Note that as a result, + /// the first call to this function will always result in a count of 0. + /// + /// \return A std::vector of ::T5_ParamSys containing the changed parameters + auto getChangedParams() -> Result> { + uint16_t changedParamsCount = 32; + std::vector changedParamsBuffer(changedParamsCount); + + changedParamsBuffer.resize(changedParamsCount); + T5_Result err = + t5GetChangedSystemParams(mContext, changedParamsBuffer.data(), &changedParamsCount); + + for (;;) { + if (!err) { + changedParamsBuffer.resize(changedParamsCount); + return changedParamsBuffer; + + } else if (err == T5_ERROR_OVERFLOW) { + changedParamsCount = changedParamsBuffer.size() * 2; + continue; + + } else { + return static_cast(err); + } + } + } + + /// \brief Check if the Tilt Five™ UI wants the users attention + /// + /// From time to time, the Tilt Five™ UI may want the users attention, for example if there is + /// an urgent wand firmware upgrade, or a connectivity problem that requires troubleshooting. + /// + /// Applications may query this to determine if this is the case. This results in a better user + /// experience - for example if a user is attempting to run your application with the + /// Tilt Five™ hardware, and it's not working, it may be due to an issue that can be resolved + /// in the control panel. + /// + /// \return `true` if the Tilt Five™ UI wants the users attention, `false` otherwise. + auto isTiltFiveUiRequestingAttention() -> Result { + int64_t value = 0; + + T5_Result err = + t5GetSystemIntegerParam(mContext, kT5_ParamSys_Integer_CPL_AttRequired, &value); + if (!err) { + return value != 0; + } else if (err == T5_ERROR_SETTING_UNKNOWN) { + return false; + } else { + return static_cast(err); + } + } + + /// \brief Obtain the dimensions of the gameboard + /// + /// \param[in] type - ::T5_GameboardType of the gameboard to get dimensions for. + /// \return ::T5_GameboardType containing the requested dimensions. + auto getGameboardSize(T5_GameboardType type) -> Result { + T5_GameboardSize size; + + T5_Result err = t5GetGameboardSize(mContext, type, &size); + if (!err) { + return size; + } else { + return static_cast(err); + } + } + + /// \brief Create a ParamChangeHelper + /// + /// \ref UsingParamChangeHelper + /// + /// \param[in] listener - A std::weak_ptr to a ParamChangeListener to receive callbacks + /// \param[in] pollInterval - Polling interval for changes + /// \return A std::unique_ptr to a ParamChangeHelper + [[nodiscard]] auto createParamChangedHelper( + std::weak_ptr listener, + std::chrono::milliseconds pollInterval = std::chrono::milliseconds(100)) + -> std::unique_ptr { + + return obtainParamChangeHelper(shared_from_this(), std::move(listener), pollInterval); + } +}; + +/// Represents the exclusivity connection state of glasses +enum class ConnectionState : int { + /// \brief Glasses have not been connected for exclusive use. + /// They may still be connected to the host. + kNotExclusivelyConnected, + + /// \brief Glasses are reserved for exclusive use by this client. + kReserved, + + /// \brief Glasses are connected for exclusive use by this client. + kConnected, + + /// \brief Glasses were previously connected for exclusive use, but have now disconnected. + kDisconnected, +}; + +/// \brief Represents an instance of Tilt Five™ glasses +class Glasses : public std::enable_shared_from_this { + friend Client; + friend ParamChangeHelper; + + const std::string mIdentifier; + const std::shared_ptr mClient; + std::weak_ptr mWandStreamHelper{}; + T5_Glasses mGlasses{}; + + friend std::ostream& operator<<(std::ostream& os, std::shared_ptr const& instance) { + os << *instance; + return os; + } + + friend std::ostream& operator<<(std::ostream& os, Glasses const& instance) { + os << ""; + return os; + } + + friend auto obtainGlasses(const std::string& identifier, const std::shared_ptr& client) + -> Result>; + + explicit Glasses(std::string identifier, std::shared_ptr client) + : mIdentifier(std::move(identifier)), mClient(std::move(client)) {} + + static auto create(std::string identifier, std::shared_ptr client) + -> Result> { + + if (!client) { + return tiltfive::Error::kInvalidArgument; + } + + T5_Glasses handle; + T5_Result err = t5CreateGlasses(client->mContext, identifier.c_str(), &handle); + + if (err) { + return static_cast(err); + } + + std::shared_ptr glasses{new Glasses(identifier, client)}; + + glasses->mGlasses = handle; + + return glasses; + } + +public: + /// \brief Obtain a hardware (not user facing) identifier for the glasses + /// + /// Guaranteed to be stable for the duration of the glasses connection. + /// + /// Not guaranteed to be stable between sessions. Commonly it will be, however if a user + /// de-registers their glasses and re-registers them the identifier may change. IE - It's a + /// local semi-stable software identifier, not a persistent hardware identifier. + /// + /// \return Non user-facing identifier for the glasses. + [[nodiscard]] auto getIdentifier() const -> std::string { + return mIdentifier; + } + + /// \brief Get the current connection state of the glasses + /// + /// \return ConnectionState representing the current connection state. + auto getConnectionState() -> Result { + T5_ConnectionState connectionState; + T5_Result err = t5GetGlassesConnectionState(mGlasses, &connectionState); + if (err != T5_SUCCESS) { + return static_cast(err); + } + + switch (connectionState) { + case kT5_ConnectionState_NotExclusivelyConnected: + return ConnectionState::kNotExclusivelyConnected; + + case kT5_ConnectionState_ExclusiveReservation: + return ConnectionState::kReserved; + + case kT5_ConnectionState_ExclusiveConnection: + return ConnectionState::kConnected; + + case kT5_ConnectionState_Disconnected: + return ConnectionState::kDisconnected; + + default: + return Error::kInternalError; + } + } + + /// \brief Get a system-wide list of changed parameters + /// + /// This function doesn't return the values of the changed parameters, but vector of the + /// parameters that have changed since this function was last called. Note that as a result, + /// the first call to this function will always result in a count of 0. + /// + /// \return A std::vector of T5_ParamGlasses containing the changed parameters + auto getChangedParams() -> Result> { + uint16_t changedParamsCount = 32; + std::vector changedParamsBuffer(changedParamsCount); + + changedParamsBuffer.resize(changedParamsCount); + T5_Result err = + t5GetChangedGlassesParams(mGlasses, changedParamsBuffer.data(), &changedParamsCount); + + for (;;) { + if (!err) { + changedParamsBuffer.resize(changedParamsCount); + return changedParamsBuffer; + + } else if (err == T5_ERROR_OVERFLOW) { + changedParamsCount = changedParamsBuffer.size() * 2; + continue; + + } else { + return static_cast(err); + } + } + } + + /// \brief Get the current IPD setting for this glasses + /// + /// The value of the IPD is user + /// specified in the Tilt Five™ UI. Clients should query this parameter and adjust their + /// rendering appropriately to provide a comfortable user experience. + /// + /// \return Current IPD in meters. + auto getIpd() -> Result { + double value = 0; + T5_Result err = t5GetGlassesFloatParam(mGlasses, 0, kT5_ParamGlasses_Float_IPD, &value); + if (!err) { + return value; + } else { + return static_cast(err); + } + } + + /// \brief Get the user-facing name of the glasses + /// + /// The value of the friendly name is user specified in the Tilt Five™ UI. + /// + /// This can be changed by the user during a session, and as such must not be used as any kind + /// of key. Use getIdentifier() instead. + /// + /// \return UTF8 encoded friendly name. + auto getFriendlyName() -> Result { + std::unique_ptr value(new char[T5_MAX_STRING_PARAM_LEN]); + size_t size = T5_MAX_STRING_PARAM_LEN; + T5_Result err = t5GetGlassesUtf8Param( + mGlasses, 0, kT5_ParamGlasses_UTF8_FriendlyName, value.get(), &size); + if (!err) { + return std::string(value.get()); + } else { + return static_cast(err); + } + } + + /// \brief Reserve glasses for exclusive operations by the client. + /// + /// Although several operations can be performed without acquiring an exclusive lock on glasses, + /// there are a few for which an exclusive lock is required. Primarily, the ability to get poses + /// (getLatestGlassesPose()) and send frames (sendFrame()). To reserve glasses for exclusive + /// use, use this function. + /// + /// Clients may request glasses that aren't fully available yet (e.g. a device that isn't fully + /// booted, or needs to be rebooted to be compatible with the client). That is why there's a + /// two-step approach here requiring a request for exclusive access first. To finish preparing + /// for exclusive operations, use ensureReady(). + /// + /// Repeated calls to this function should be made until a exclusive reservation is successful + /// or an error occurs. + /// + /// \attention Ensure that the lifetime of the graphics context remains valid for the duration + /// of the glasses connection. + /// + /// \param[in] displayName - string to display for this program in control panel (localized), + /// e.g. "Awesome Game (Player 1)" + auto reserve(const std::string& displayName) -> Result { + T5_Result err = t5ReserveGlasses(mGlasses, displayName.c_str()); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// \brief Ensure that reserved glasses are ready for exclusive operations. + /// + /// Ensure that reserved glasses are ready for exclusive operations, such as the ability to get + /// poses (getLatestGlassesPose()) and send frames (sendFrame()). To reserve glasses for + /// exclusive use, see reserve(). This *must* be checked for success prior to exclusive + /// operations, otherwise those operations will fail. + /// + /// In normal operation, this will return successfully or contain the error + /// tiltfive::Error::kTryAgain. This should be called until success or an different error is + /// seen. + /// + /// If glasses are not reserved before calling, this will return an error. + /// + /// \return Result indicating success or error. + auto ensureReady() -> Result { + T5_Result err = t5EnsureGlassesReady(mGlasses); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// \brief Release previously-reserved glasses + /// + /// Release glasses that were previously reserved for exclusive operations by the client. + /// After calling this, exclusive operations cannot be used with the glasses unless the + /// glasses are again reserved and readied. + /// + /// \return Result indicating success or error. + auto release() -> Result { + T5_Result err = t5ReleaseGlasses(mGlasses); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// \brief Get the latest pose for this glasses + /// + /// \param[in] usage ::T5_GlassesPoseUsage indicating the intended use for the glasses pose. + /// + /// \return ::T5_GlassesPose representing the most recent pose. + auto getLatestGlassesPose(T5_GlassesPoseUsage usage) -> Result { + T5_GlassesPose pose; + T5_Result err = t5GetGlassesPose(mGlasses, usage, &pose); + + if (!err) { + return pose; + } else { + return static_cast(err); + } + } + + /// \brief Initialize the glasses for graphics operations. + /// + /// \param[in] graphicsApi - ::T5_GraphicsApi specifying the graphics API for the glasses. + /// \param[in] graphicsContext - Meaning depends on the graphics API in use. + auto initGraphicsContext(T5_GraphicsApi graphicsApi, void* graphicsContext) -> Result { + T5_Result err = t5InitGlassesGraphicsContext(mGlasses, graphicsApi, graphicsContext); + if (!err) { + return kSuccess; + } + return static_cast(err); + } + + /// \brief Configure the wand event stream + /// + /// \param[in] config - ::T5_WandStreamConfig filled by client to detail configuration + auto configureCameraStream(T5_CameraStreamConfig config) -> Result { + T5_Result err = t5ConfigureCameraStreamForGlasses(mGlasses, config); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// Get the latest camera image for this glasses + // + /// \return ::T5_CamImage representing the most recent tt image. + auto getFilledCamImageBuffer() -> Result { + T5_CamImage img; + T5_Result err = t5GetFilledCamImageBuffer(mGlasses, &img); + if (!err) { + return std::move(img); + } else { + return static_cast(err); + } + } + + /// Submit a buffer to the camera image stream to hold Camera Frame data. + // + /// \param[in] imgBuffer - ::T5_CamImage representing the buffer to be filled. + auto submitEmptyCamImageBuffer(T5_CamImage* imgBuffer) -> Result { + T5_Result err = t5SubmitEmptyCamImageBuffer(mGlasses, imgBuffer); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// Cancel an image buffer in use by the service for freeing. + // + /// \param[in] buffer - A pointer to the buffer to be canceled and released from use by the + /// service. + auto cancelCamImageBuffer(uint8_t* buffer) -> Result { + T5_Result err = t5CancelCamImageBuffer(mGlasses, buffer); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// \brief Send a frame to display on the glasses + /// + /// \param[in] frameInfo - ::T5_FrameInfo detailing the frame to display. + auto sendFrame(const T5_FrameInfo* const frameInfo) -> Result { + T5_Result err = t5SendFrameToGlasses(mGlasses, frameInfo); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// \brief Obtain a list of connected wands + /// + /// \return std::vector <::T5_WandHandle> representing the available wands. + auto listWands() -> Result> { + uint8_t wandCount = 4; + std::vector wandBuffer(wandCount); + + for (;;) { + wandBuffer.resize(wandCount); + T5_Result err = t5ListWandsForGlasses(mGlasses, wandBuffer.data(), &wandCount); + + if (!err) { + std::vector wands; + wands.reserve(wandCount); + + for (auto i = 0; i < wandCount; i++) { + wands.push_back(wandBuffer[i]); + } + + return wands; + + } else if (err == T5_ERROR_OVERFLOW) { + wandCount = wandBuffer.size() * 2; + continue; + + } else { + return static_cast(err); + } + } + } + + /// \brief Configure the wand event stream + /// + /// \param[in] config - ::T5_WandStreamConfig filled by client to detail configuration + auto configureWandStream(const T5_WandStreamConfig* const config) -> Result { + T5_Result err = t5ConfigureWandStreamForGlasses(mGlasses, config); + if (!err) { + return kSuccess; + } else { + return static_cast(err); + } + } + + /// \brief Read from the wands event stream + /// + /// The client should repeatedly call this for as long as the wand event + /// stream is enabled. In any polling period, the client should call this + /// in a loop until it returns Error::kTimeout to ensure that the queue + /// is drained. + /// + /// The server will continuously write events to the stream, and will not block + /// for clients that have fallen behind reading the stream. Wand events that + /// overflow the buffer are discarded. In the event of falling behind the client + /// should do any static query that it needs to do (such as enumerating + /// connected wands), and attempt to read the stream faster. + /// + /// \param[in] timeout - Timeout in ms to wait before returning without read. + auto readWandStream(std::chrono::milliseconds timeout = std::chrono::milliseconds(100)) + -> Result { + T5_WandStreamEvent event; + + T5_Result err = t5ReadWandStreamForGlasses(mGlasses, &event, timeout.count()); + if (!err) { + return event; + } else { + return static_cast(err); + } + } + + /// \brief Get a WandStreamHelper + /// + /// \ref UsingWandStreamHelper + /// \return A std::shared_ptr to a WandStreamHelper + auto getWandStreamHelper() -> std::shared_ptr { + auto wandStreamHelper = mWandStreamHelper.lock(); + if (!wandStreamHelper) { + // needs initialization + wandStreamHelper = obtainWandStreamHelper(shared_from_this()); + mWandStreamHelper = wandStreamHelper; + } + return wandStreamHelper; + } + + /// \brief Create a GlassesConnectionHelper + /// + /// \ref UsingGlassesConnectionHelper + /// + /// \param[in] displayName - The user facing display name for this instance. + /// \param[in] connectionPollInterval - Period between attempts to connect. + /// \return A std::unique_ptr to a GlassesConnectionHelper + auto createConnectionHelper( + const std::string& displayName, + std::chrono::milliseconds connectionPollInterval = std::chrono::milliseconds(100)) + -> std::unique_ptr { + + return obtainGlassesConnectionHelper( + shared_from_this(), displayName, connectionPollInterval); + } + + /// \cond DO_NOT_DOCUMENT + virtual ~Glasses() { + // Disconnect the glasses if they're connected + auto connectionState = getConnectionState(); + if (!connectionState) { + return; + } + + if (mGlasses) { + t5DestroyGlasses(&mGlasses); + mGlasses = nullptr; + } + } + /// \endcond +}; + +/// \brief Utility class to automate the Glasses exclusive connection process +/// +/// See \ref UsingGlassesConnectionHelper for usage. +class GlassesConnectionHelper { +private: + const std::shared_ptr mGlasses; + const std::string mDisplayName; + const std::chrono::milliseconds mConnectionPollInterval; + const std::chrono::milliseconds mConnectedPollInterval = mConnectionPollInterval * 10; + + std::atomic mRunning{true}; + std::thread mThread; + + std::mutex mLastAsyncErrorMtx; + std::atomic mLastAsyncError{}; + + void setLastAsyncError(std::error_code err) { + std::lock_guard lock(mLastAsyncErrorMtx); + mLastAsyncError = err; + } + + void threadMain() { + while (mRunning) { + auto connectionState = mGlasses->getConnectionState(); + if (!connectionState) { + setLastAsyncError(connectionState.error()); + std::this_thread::sleep_for(mConnectionPollInterval); + continue; + } + + switch (*connectionState) { + case ConnectionState::kNotExclusivelyConnected: { + // Attempt to connect + auto result = mGlasses->reserve(mDisplayName); + if (!result) { + setLastAsyncError(result.error()); + } + // No action on success - the next call to getConnectionState() will + // detect the change + + break; + } + + case ConnectionState::kReserved: + case ConnectionState::kDisconnected: { + auto result = mGlasses->ensureReady(); + if (!result) { + setLastAsyncError(result.error()); + } + // No action on success - the next call to getConnectionState() will + // detect the change + + break; + } + + case ConnectionState::kConnected: + // If we're connected, increase polling interval to reduce excessive + // connections state queries (at the expense of slowing detection of + // disconnected devices). + std::this_thread::sleep_for(mConnectedPollInterval); + break; + } + + std::this_thread::sleep_for(mConnectionPollInterval); + } + } + + friend auto obtainGlassesConnectionHelper(std::shared_ptr glasses, + const std::string& displayName, + std::chrono::milliseconds connectionPollInterval) + -> std::unique_ptr; + + explicit GlassesConnectionHelper(std::shared_ptr glasses, + std::string displayName, + std::chrono::milliseconds connectionPollInterval) + : mGlasses(std::move(glasses)) + , mDisplayName{std::move(displayName)} + , mConnectionPollInterval(connectionPollInterval) { + + mThread = std::thread(&GlassesConnectionHelper::threadMain, this); + } + +public: + /// \brief Obtain a reference to the wrapped tiltfive::Glasses object + [[nodiscard]] auto glasses() -> Glasses& { + return *mGlasses; + } + + /// \brief Block until a connection is established + auto awaitConnection() -> Result { + auto connectionState = mGlasses->getConnectionState(); + if (!connectionState) { + return connectionState.error(); + } + + while (*connectionState != ConnectionState::kConnected) { + std::this_thread::sleep_for(mConnectionPollInterval); + + connectionState = mGlasses->getConnectionState(); + if (!connectionState) { + return connectionState.error(); + } + } + + return kSuccess; + } + + /// \brief Block until a connection is established or timed out + /// + /// \param[in] timeout - Time to wait for connection before timeout + auto awaitConnection(const std::chrono::milliseconds timeout) -> Result { + auto start = std::chrono::steady_clock::now(); + + auto connectionState = mGlasses->getConnectionState(); + if (!connectionState) { + return connectionState.error(); + } + + while (*connectionState != ConnectionState::kConnected) { + if ((std::chrono::steady_clock::now() - start) > timeout) { + return Error::kTimeout; + } + + std::this_thread::sleep_for(mConnectionPollInterval); + + connectionState = mGlasses->getConnectionState(); + if (!connectionState) { + return connectionState.error(); + } + } + + return kSuccess; + } + + /// \brief Obtain and consume the last asynchronous error + /// + /// The connection process may produce errors asynchronously which can be detected by calling + /// this. + /// + /// \return The last known error or a default std::error_code if no error was present + auto consumeLastAsyncError() -> std::error_code { + std::lock_guard lock(mLastAsyncErrorMtx); + return mLastAsyncError.exchange({}); + } + + /// \cond DO_NOT_DOCUMENT + virtual ~GlassesConnectionHelper() { + mRunning = false; + if (mThread.joinable()) { + mThread.join(); + } + } + /// \endcond +}; + +/// \brief Utility class to manage the wand stream +/// +/// De-multiplexes the wand stream into abstract tiltfive::Wand +/// objects that can be independently queried for their last +/// known state. +/// +/// See \ref UsingWandStreamHelper for usage. +class WandStreamHelper : public std::enable_shared_from_this { +private: + friend Wand; + + const std::shared_ptr mGlasses; + const std::chrono::milliseconds mPollTimeout; + + std::atomic mWandListDirty{true}; + std::mutex mWandListMtx; // guards access to mWandList + std::vector mWandList; + + std::atomic mRunning{true}; + std::thread mThread; + + std::mutex mLastWandReportsMtx; // guards access to mLastWandReports + std::map mLastWandReports; + + std::mutex mLastAsyncErrorMtx; + std::atomic mLastAsyncError{}; + + void setLastAsyncError(std::error_code err) { + std::lock_guard lock(mLastAsyncErrorMtx); + mLastAsyncError = err; + } + + auto drainStream(const std::shared_ptr& glasses) -> Result { + while (mRunning) { + auto result = glasses->readWandStream(mPollTimeout); + if (!result) { + return result.error(); + } + + std::lock_guard lock{mLastWandReportsMtx}; + + // Process the event + switch (result->type) { + case kT5_WandStreamEventType_Connect: + mLastWandReports[result->wandId] = {}; + mWandListDirty = true; + break; + + case kT5_WandStreamEventType_Disconnect: + mLastWandReports.erase(result->wandId); + mWandListDirty = true; + break; + + case kT5_WandStreamEventType_Desync: + mWandListDirty = true; + break; + + case kT5_WandStreamEventType_Report: + mLastWandReports[result->wandId] = result->report; + break; + } + } + + return Error::kUnavailable; + } + + // Update the reports map based on the latest wand list. + // Ensure empty reports are populated for newly-connected wands. + // Remove reports for wands that are no longer connected. + // + // PRECONDITIONS: Wand list mutex must be held. + auto refreshReports() -> void { + std::lock_guard lock{mLastWandReportsMtx}; + + // Obtain a set of the wand handles held in mLastWandReports + std::set lastWandReportKeys; + std::transform(mLastWandReports.cbegin(), + mLastWandReports.cend(), + std::inserter(lastWandReportKeys, lastWandReportKeys.end()), + [](std::pair pair) { return pair.first; }); + + // Remove from the list all connected wands and add empty reports for new wands. + for (const auto& connectedWand : mWandList) { + lastWandReportKeys.erase(connectedWand); + mLastWandReports.insert({connectedWand, T5_WandReport{}}); + } + + // The remainder of the list is wand reports for disconnected wands - remove them + for (auto defunctKey : lastWandReportKeys) { + mLastWandReports.erase(defunctKey); + } + } + + void threadMain() { + T5_WandStreamConfig streamConfig{true}; + bool configured = false; + + while (mRunning) { + // Configure the stream if we haven't already + if (!configured) { + auto configureRequest = mGlasses->configureWandStream(&streamConfig); + if (!configureRequest) { + setLastAsyncError(configureRequest.error()); + std::this_thread::sleep_for(std::chrono::milliseconds(20)); + continue; + } + configured = true; + } + + // Drain the stream + auto result = drainStream(mGlasses); + if ((result.error() != tiltfive::Error::kTimeout) && + (result.error() != tiltfive::Error::kUnavailable)) { + + // For errors other than timeout, record it, small delay and loop + setLastAsyncError(result.error()); + std::this_thread::sleep_for(std::chrono::milliseconds(20)); + } + } + + // Disable the stream + streamConfig.enabled = false; + auto configureRequest = mGlasses->configureWandStream(&streamConfig); + if (!configureRequest) { + setLastAsyncError(configureRequest.error()); + } + + // Flag as no longer running if we've exited due to error + mRunning = false; + } + + friend inline auto obtainWandStreamHelper(std::shared_ptr glasses, + std::chrono::milliseconds pollTimeout) + -> std::shared_ptr; + + explicit WandStreamHelper( + std::shared_ptr glasses, + std::chrono::milliseconds pollTimeout = std::chrono::milliseconds(100)) + : mGlasses(std::move(glasses)), mPollTimeout(pollTimeout) { + + mThread = std::thread(&WandStreamHelper::threadMain, this); + } + + auto getLatestReport(const T5_WandHandle& handle) -> Result { + std::lock_guard lock{mLastWandReportsMtx}; + + auto report = mLastWandReports.find(handle); + if (report == mLastWandReports.end()) { + return tiltfive::Error::kTargetNotFound; + } + + return report->second; + }; + +public: + /// \brief Obtain and consume the last asynchronous error + /// + /// The connection process may produce errors asynchronously which can + /// be detected by calling this. + /// + /// \return The last known error or a default std::error_code if no error + /// was present + auto consumeLastAsyncError() -> std::error_code { + std::lock_guard lock(mLastAsyncErrorMtx); + return mLastAsyncError.exchange({}); + } + + /// \brief Obtain a list of tiltfive::Wand + /// + /// The tiltfive::WandStreamHelper maintains a stream reader thread + /// while there are any outstanding references to the returned + /// tiltfive::Wand objects, automatically terminating the stream + /// when they go out of scope. + auto listWands() -> Result>> { + std::lock_guard lock{mWandListMtx}; + + // Update the wand list if it's been invalidated + if (mWandListDirty.exchange(false)) { + auto result = mGlasses->listWands(); + if (!result) { + mWandListDirty = true; + return result.error(); + } + + std::vector wandHandles; + for (auto wandHandle : *result) { + wandHandles.push_back(wandHandle); + } + mWandList = wandHandles; + + refreshReports(); + } + + // Realize wand list + std::vector> wands; + for (auto wandHandle : mWandList) { + wands.push_back(obtainWand(wandHandle, shared_from_this())); + } + + return wands; + }; + + /// \cond DO_NOT_DOCUMENT + virtual ~WandStreamHelper() { + mRunning = false; + if (mThread.joinable()) { + mThread.join(); + } + } + /// \endcond +}; + +/// \brief Virtual base class for use with tiltfive::ParamChangeHelper +class ParamChangeListener { +public: + /// \brief Called by a tiltfive::ParamChangeHelper when system-wide (::T5_ParamSys) params + /// have changed + virtual auto onSysParamChanged(const std::vector& changed) -> void = 0; + + /// \brief Called by a tiltfive::ParamChangeHelper when glasses specific (::T5_ParamGlasses) + /// params have changed + virtual auto onGlassesParamChanged(const std::shared_ptr& glasses, + const std::vector& changed) -> void = 0; + + /// \cond DO_NOT_DOCUMENT + virtual ~ParamChangeListener() = default; + /// \endcond +}; + +/// \brief Utility class to track changes to parameters +/// \ref UsingParamChangeHelper +class ParamChangeHelper { +private: + const std::shared_ptr mClient; + const std::weak_ptr mChangeListener; + + static constexpr size_t kDefaultSettingBufferSize = 16; + + std::mutex mRegisteredGlassesMtx; + std::set> mRegisteredGlasses; + + std::vector mChangedSysParams; + std::vector mChangedGlassesParams; + + std::chrono::milliseconds mPollInterval; + + std::thread mThread; + std::atomic mRunning{true}; + + std::mutex mLastAsyncErrorMtx; + std::atomic mLastAsyncError{}; + + void setLastAsyncError(std::error_code err) { + std::lock_guard lock(mLastAsyncErrorMtx); + mLastAsyncError = err; + } + + friend auto obtainParamChangeHelper(std::shared_ptr client, + std::weak_ptr listener, + std::chrono::milliseconds pollInterval) + -> std::unique_ptr; + + ParamChangeHelper(std::shared_ptr client, + std::weak_ptr listener, + std::chrono::milliseconds pollInterval) + : mClient(std::move(client)) + , mChangeListener(std::move(listener)) + , mPollInterval(pollInterval) { + + mThread = std::thread(&ParamChangeHelper::threadMain, this); + } + + auto checkGlassesParams(const std::shared_ptr& listener) -> void { + std::lock_guard lock(mRegisteredGlassesMtx); + for (const auto& glasses : mRegisteredGlasses) { + checkGlassesParams(glasses, listener); + } + } + + auto checkGlassesParams(const std::shared_ptr& glasses, + const std::shared_ptr& listener) -> void { + uint16_t changeCount; + + mChangedGlassesParams.resize(kDefaultSettingBufferSize); + for (;;) { + changeCount = mChangedGlassesParams.size(); + T5_Result err = t5GetChangedGlassesParams( + glasses->mGlasses, mChangedGlassesParams.data(), &changeCount); + + if (!err) { + if (changeCount > 0) { + mChangedGlassesParams.resize(changeCount); + listener->onGlassesParamChanged(glasses, mChangedGlassesParams); + } + break; + } + + // Error - increase buffer if we overflowed, or record the error and exit + if (err == T5_ERROR_OVERFLOW) { + mChangedSysParams.resize(mChangedSysParams.size() * 2); + continue; + } + + setLastAsyncError(static_cast(err)); + break; + } + } + + auto checkSysParams(const std::shared_ptr& listener) -> void { + uint16_t changeCount; + + mChangedSysParams.resize(kDefaultSettingBufferSize); + for (;;) { + changeCount = mChangedSysParams.size(); + T5_Result err = + t5GetChangedSystemParams(mClient->mContext, mChangedSysParams.data(), &changeCount); + + if (!err) { + if (changeCount > 0) { + mChangedSysParams.resize(changeCount); + listener->onSysParamChanged(mChangedSysParams); + } + break; + } + + // Error - increase buffer if we overflowed, or record the error and exit + if (err == T5_ERROR_OVERFLOW) { + mChangedSysParams.resize(mChangedSysParams.size() * 2); + continue; + } + + setLastAsyncError(static_cast(err)); + break; + } + } + + auto threadMain() -> void { + while (mRunning) { + // Listener weak_ptr -> shared_ptr or exit + { + auto listener = mChangeListener.lock(); + if (!listener) { + break; + } + + checkGlassesParams(listener); + + checkSysParams(listener); + } + + std::this_thread::sleep_for(mPollInterval); + } + } + +public: + /// \cond DO_NOT_DOCUMENT + virtual ~ParamChangeHelper() { + mRunning = false; + if (mThread.joinable()) { + mThread.join(); + } + } + /// \endcond + + /// \brief Obtain and consume the last asynchronous error + /// + /// The connection process may produce errors asynchronously which can + /// be detected by calling this. + /// + /// \return The last known error or a default std::error_code if no error + /// was present + auto consumeLastAsyncError() -> std::error_code { + std::lock_guard lock(mLastAsyncErrorMtx); + return mLastAsyncError.exchange({}); + } + + /// \brief Register glasses for parameter change tracking + auto registerGlasses(const std::shared_ptr& glasses) -> void { + std::lock_guard lock(mRegisteredGlassesMtx); + mRegisteredGlasses.insert(glasses); + } + + /// \brief De-register glasses for parameter change tracking + auto deregisterGlasses(const std::shared_ptr& glasses) -> void { + std::lock_guard lock(mRegisteredGlassesMtx); + mRegisteredGlasses.erase(glasses); + } +}; + +/// \brief Represents an abstract instance of a Tilt Five™ wand +/// Used with tiltfive::WandStreamHelper +class Wand { +private: + T5_WandHandle mHandle; + std::shared_ptr mWandStreamHelper; + + friend WandStreamHelper; + + friend std::ostream& operator<<(std::ostream& os, std::shared_ptr const& instance) { + os << *instance; + return os; + } + + friend std::ostream& operator<<(std::ostream& os, Wand const& instance) { + os << ""; + return os; + } + + friend auto obtainWand(T5_WandHandle handle, std::shared_ptr wandStreamHelper) + -> std::shared_ptr; + + Wand(T5_WandHandle handle, std::shared_ptr wandStreamHelper) + : mHandle(handle), mWandStreamHelper(std::move(wandStreamHelper)) {} + +public: + /// \brief Get the latest wand report for this wand + auto getLatestReport() const -> Result { + return mWandStreamHelper->getLatestReport(mHandle); + } + + /// \brief Get the wand handle + [[nodiscard]] T5_WandHandle handle() const { + return mHandle; + } +}; + +/// \brief Obtain an instance of the Tilt Five™ API client +/// +/// \param[in] applicationId - Application ID. Refer to T5 docs for format. +/// \param[in] applicationVersion - Application version. Refer to T5 docs for format. +/// \param[in] platformContext - Platform specific context. Refer to T5 docs for format. +/// \param[in] sdkType - Internal type. Leave at default value unless otherwise +/// instructed by T5 staff. +/// +/// \return Instance of the Tilt Five™ API client or error. +inline auto obtainClient(const std::string& applicationId, + const std::string& applicationVersion, + void* platformContext, + const uint8_t sdkType = 0) -> Result> { + + return Client::create(applicationId, applicationVersion, platformContext, sdkType); +} + +/// \brief Obtain an instance of the Tilt Five™ Glasses +/// +/// \param[in] identifier - Unique identifier for the glasses from listGlasses() +/// \param[in] client - Instance of the Tilt Five™ API client +/// +/// \return Instance of the Tilt Five™ API Glasses or error. +inline auto obtainGlasses(const std::string& identifier, const std::shared_ptr& client) + -> Result> { + return Glasses::create(identifier, client); +} + +/// Internal utility function - Do not call directly +inline auto obtainWandStreamHelper(std::shared_ptr glasses, + std::chrono::milliseconds pollTimeout) + -> std::shared_ptr { + return std::shared_ptr(new WandStreamHelper(std::move(glasses), pollTimeout)); +} + +/// Internal utility function - Do not call directly +inline auto obtainWand(T5_WandHandle handle, std::shared_ptr wandStreamHelper) + -> std::shared_ptr { + return std::shared_ptr(new Wand(handle, std::move(wandStreamHelper))); +} + +/// Internal utility function - Do not call directly +inline auto obtainGlassesConnectionHelper(std::shared_ptr glasses, + const std::string& displayName, + std::chrono::milliseconds connectionPollInterval) + -> std::unique_ptr { + + return std::unique_ptr( + new GlassesConnectionHelper(std::move(glasses), displayName, connectionPollInterval)); +} + +/// Internal utility function - Do not call directly +inline auto obtainParamChangeHelper(std::shared_ptr client, + std::weak_ptr listener, + std::chrono::milliseconds pollInterval) + -> std::unique_ptr { + + return std::unique_ptr( + new ParamChangeHelper(std::move(client), std::move(listener), pollInterval)); +} +/// \endcond + +/// \} + +} // namespace tiltfive + +/// \defgroup ostreamFormatters std::ostream formatters + +/// \brief Support for writing ::T5_WandReport to an std::ostream +/// \ingroup ostreamFormatters +inline std::ostream& operator<<(std::ostream& os, const T5_WandReport& instance) { + // Print the validity flags + os << "[" << (instance.analogValid ? "A" : "_") << (instance.buttonsValid ? "B" : "_") + << (instance.poseValid ? "P" : "_") << "]"; + + if (instance.analogValid) { + os << "[A: " << std::right << std::fixed << std::setw(10) << instance.stick.x << "x" + << std::right << std::fixed << std::setw(10) << instance.stick.y << " | " << std::right + << std::fixed << std::setw(10) << instance.trigger << "]"; + } else { + os << "[A: Invalid]"; + } + + if (instance.buttonsValid) { + os << "[B: " << (instance.buttons.t5 ? "T" : "_") << (instance.buttons.one ? "1" : "_") + << (instance.buttons.two ? "2" : "_") << (instance.buttons.three ? "3" : "_") + << (instance.buttons.a ? "A" : "_") << (instance.buttons.b ? "B" : "_") + << (instance.buttons.x ? "X" : "_") << (instance.buttons.y ? "Y" : "_") << "]"; + } else { + os << "[B: Invalid]"; + } + + if (instance.poseValid) { + os << "[P: (" << std::right << std::fixed << std::setw(10) << instance.posGrip_GBD.x << "," + << std::right << std::fixed << std::setw(10) << instance.posGrip_GBD.y << "," + << std::right << std::fixed << std::setw(10) << instance.posGrip_GBD.z << ") (" + << std::right << std::fixed << std::setw(10) << instance.rotToWND_GBD.w << "," + << std::right << std::fixed << std::setw(10) << instance.rotToWND_GBD.x << "," + << std::right << std::fixed << std::setw(10) << instance.rotToWND_GBD.y << "," + << std::right << std::fixed << std::setw(10) << instance.rotToWND_GBD.z << ")" + << "]"; + } + + return os; +} + +/// \brief Support for writing ::T5_GlassesPose to an std::ostream +/// \ingroup ostreamFormatters +inline std::ostream& operator<<(std::ostream& os, const T5_GlassesPose& instance) { + std::string gameboardType; + switch (instance.gameboardType) { + case kT5_GameboardType_None: + gameboardType = "None"; + break; + case kT5_GameboardType_LE: + gameboardType = "LE"; + break; + case kT5_GameboardType_XE: + gameboardType = "XE"; + break; + case kT5_GameboardType_XE_Raised: + gameboardType = "XE (Raised)"; + break; + default: + // Shouldn't happen unless there's some bad casting going on elsewhere. + gameboardType = std::string("[Invalid T5_GameboardType : ") + + std::to_string(static_cast(instance.gameboardType)) + + std::string("]"); + break; + } + + os << "[" << instance.timestampNanos << "| " << gameboardType << " (" << std::right + << std::fixed << std::setw(10) << instance.posGLS_GBD.x << "," << std::right << std::fixed + << std::setw(10) << instance.posGLS_GBD.y << "," << std::right << std::fixed << std::setw(10) + << instance.posGLS_GBD.z << ") (" << std::right << std::fixed << std::setw(10) + << instance.rotToGLS_GBD.w << "," << std::right << std::fixed << std::setw(10) + << instance.rotToGLS_GBD.x << "," << std::right << std::fixed << std::setw(10) + << instance.rotToGLS_GBD.y << "," << std::right << std::fixed << std::setw(10) + << instance.rotToGLS_GBD.z << ")" + << "]"; + + return os; +} + +/// \brief Support for writing ::T5_ParamSys to an std::ostream +/// \ingroup ostreamFormatters +inline std::ostream& operator<<(std::ostream& os, const T5_ParamSys& instance) { + switch (instance) { + case kT5_ParamSys_UTF8_Service_Version: + os << "Service Version"; + break; + + case kT5_ParamSys_Integer_CPL_AttRequired: + os << "UI Attention Required"; + break; + + default: + // Shouldn't happen unless there's some bad casting going on elsewhere. + os << "[Invalid T5_ParamSys : " << static_cast(instance) << "]"; + break; + } + + return os; +} + +/// \brief Support for writing ::T5_ParamGlasses to an std::ostream +/// \ingroup ostreamFormatters +inline std::ostream& operator<<(std::ostream& os, const T5_ParamGlasses& instance) { + switch (instance) { + case kT5_ParamGlasses_Float_IPD: + os << "IPD"; + break; + + case kT5_ParamGlasses_UTF8_FriendlyName: + os << "Friendly Name"; + break; + + default: + // Shouldn't happen unless there's some bad casting going on elsewhere. + os << "[Invalid T5_ParamGlasses : " << static_cast(instance) << "]"; + break; + } + + return os; +} + +/// \} diff --git a/extension/TiltFiveNDK/include/include/errors.h b/extension/TiltFiveNDK/include/include/errors.h new file mode 100644 index 0000000..6fd9cdf --- /dev/null +++ b/extension/TiltFiveNDK/include/include/errors.h @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2020-2022 Tilt Five, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/// \file +/// \brief C errors for the Tilt Five™ API + +#ifndef __cplusplus +#include +#else +#include +#endif + +#ifdef _WIN32 +#ifdef BUILDING_T5_NATIVE_DLL +#ifdef __GNUC__ +#define T5_EXPORT __attribute__((dllexport)) +#else // !__GNUC__ +#define T5_EXPORT __declspec(dllexport) +#endif // !__GNUC__ +#else // !BUILDING_T5_NATIVE_DLL +#define T5_EXPORT +#endif // !BUILDING_T5_NATIVE_DLL +#else // !_WIN32 +#define T5_EXPORT __attribute__((visibility("default"))) +#endif // !_WIN32 + +#ifdef __cplusplus +extern "C" { +#endif + +/// \brief Represents an error code that may be returned by the Tilt Five™ API. +typedef uint32_t T5_Result; + +/// \defgroup C_Errors Tilt Five™ Error Codes (C) +/// \brief Many exported functions return a ::T5_Result, with a value as defined in this list. +/// \{ + +/// Success +#define T5_SUCCESS (0x0000) + +/// Timeout +#define T5_TIMEOUT (0x0001) + +/// \brief No context. +/// +/// Some functions require either a ::T5_Context or a ::T5_Glasses. +/// This error is returned if an invalid object is passed. +#define T5_ERROR_NO_CONTEXT (0x1000) + +/// No library loaded +#define T5_ERROR_NO_LIBRARY (0x1001) + +/// An internal error occurred +#define T5_ERROR_INTERNAL (0x1002) + +/// Service isn't connected +#define T5_ERROR_NO_SERVICE (0x1003) + +/// Misc IO failure +#define T5_ERROR_IO_FAILURE (0x1004) + +/// Service doesn't understand the request +#define T5_ERROR_REQUEST_ID_UNKNOWN (0x1005) + +/// Argument(s) are invalid +#define T5_ERROR_INVALID_ARGS (0x1006) + +/// Device lost +#define T5_ERROR_DEVICE_LOST (0x1007) + +/// Target (wand) not found +#define T5_ERROR_TARGET_NOT_FOUND (0x1008) + +/// Incorrect state for the request +#define T5_ERROR_INVALID_STATE (0x1009) + +/// The requested param is unknown +#define T5_ERROR_SETTING_UNKNOWN (0x100A) + +/// The requested param has a different type to the requested type +#define T5_ERROR_SETTING_WRONG_TYPE (0x100B) + +/// Miscellaneous remote error +#define T5_ERROR_MISC_REMOTE (0x100C) + +/// Buffer overflow +#define T5_ERROR_OVERFLOW (0x100D) + +/// Specified graphics API is unavailable +#define T5_ERROR_GRAPHICS_API_UNAVAILABLE (0x100E) + +/// Action is unsupported +#define T5_ERROR_UNSUPPORTED (0x100F) + +/// Failed to decode +#define T5_ERROR_DECODE_ERROR (0x1010) + +/// Graphics context is invalid +#define T5_ERROR_INVALID_GFX_CONTEXT (0x1011) + +/// Failed to initialize graphics context +#define T5_ERROR_GFX_CONTEXT_INIT_FAIL (0x1012) + +/// Target is not currently available +#define T5_ERROR_TRY_AGAIN (0x1015) + +/// Target is unavailable +#define T5_ERROR_UNAVAILABLE (0x1016) + +/// The target is already connected +#define T5_ERROR_ALREADY_CONNECTED (0x1017) + +/// The target is not connected +#define T5_ERROR_NOT_CONNECTED (0x1018) + +/// Overflow during string conversion operation +#define T5_ERROR_STRING_OVERFLOW (0x1019) + +/// Service incompatible +#define T5_ERROR_SERVICE_INCOMPATIBLE (0x101A) + +/// Permission denied +#define T5_PERMISSION_DENIED (0x101B) + +/// Invalid Buffer Size +#define T5_ERROR_INVALID_BUFFER_SIZE (0x101C) + +/// Maximum C error code +#define T5_MAX_ERROR (0x8000) + +/// Get a human readable error message +/// +/// \param[in] result - A ::T5_Result +T5_EXPORT const char* t5GetResultMessage(T5_Result result); + +/// \} + +#ifdef __cplusplus +} // extern "C" +#endif + +#undef T5_EXPORT diff --git a/extension/TiltFiveNDK/include/include/errors.hpp b/extension/TiltFiveNDK/include/include/errors.hpp new file mode 100644 index 0000000..9096b18 --- /dev/null +++ b/extension/TiltFiveNDK/include/include/errors.hpp @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2020-2022 Tilt Five, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/// \file +/// \brief C++ errors for the Tilt Five™ API + +#include "errors.h" + +#include + +namespace tiltfive { + +/////////////////////////////////////////////////////////////////////////////// +// Error // +/////////////////////////////////////////////////////////////////////////////// + +/// \defgroup Cpp_Errors Tilt Five™ Error Codes (C++) +/// \brief Common error codes for all C++ functions +/// \{ + +/// Error codes returned by most functions of return type Result +enum class Error { + // --------- C Errors --------- + /// Success + kSuccess = T5_SUCCESS, + + /// Timeout + kTimeout = T5_TIMEOUT, + + /// No context + // + /// Some functions require either a T5_Context or a T5_Glasses. + /// This error is returned if an invalid object is passed. + kNoContext = T5_ERROR_NO_CONTEXT, + + /// Library Unavailable + kLibraryUnavailable = T5_ERROR_NO_LIBRARY, + + /// An internal error occurred + kInternalError = T5_ERROR_INTERNAL, + + /// Service isn't connected + kNoService = T5_ERROR_NO_SERVICE, + + /// Misc IO failure + kIoFailure = T5_ERROR_IO_FAILURE, + + /// Service doesn't understand the request + kRequestIdUnknown = T5_ERROR_REQUEST_ID_UNKNOWN, + + /// Argument(s) are invalid + kInvalidArgument = T5_ERROR_INVALID_ARGS, + + /// Device lost + kDeviceLost = T5_ERROR_DEVICE_LOST, + + /// Target (wand) not found + kTargetNotFound = T5_ERROR_TARGET_NOT_FOUND, + + /// Incorrect state for the request + kInvalidState = T5_ERROR_INVALID_STATE, + + /// The requested param is unknown + kSettingUnknown = T5_ERROR_SETTING_UNKNOWN, + + /// The requested param has a different type to the requested type + kSettingWrongType = T5_ERROR_SETTING_WRONG_TYPE, + + /// Miscellaneous remote error + kMiscRemote = T5_ERROR_MISC_REMOTE, + + /// Buffer overflow + kOverflow = T5_ERROR_OVERFLOW, + + /// Specified graphics API is unavailable + kGfxApiUnavailable = T5_ERROR_GRAPHICS_API_UNAVAILABLE, + + /// Action is unsupported + kUnsupported = T5_ERROR_UNSUPPORTED, + + /// Failed to decode + kDecodeError = T5_ERROR_DECODE_ERROR, + + /// Graphics context is invalid + kInvalidGfxContext = T5_ERROR_INVALID_GFX_CONTEXT, + + /// Failed to initialize graphics context + kGfxContextInitFail = T5_ERROR_GFX_CONTEXT_INIT_FAIL, + + /// Target is temporarily unavailable + kTryAgain = T5_ERROR_TRY_AGAIN, + + /// Target is unavailable + kUnavailable = T5_ERROR_UNAVAILABLE, + + /// Target is already connected + kAlreadyConnected = T5_ERROR_ALREADY_CONNECTED, + + /// Target is not connected + kNotConnected = T5_ERROR_NOT_CONNECTED, + + /// String overflow + kStringOverflow = T5_ERROR_STRING_OVERFLOW, + + /// Service incompatible + kServiceIncompatible = T5_ERROR_SERVICE_INCOMPATIBLE, + + /// Permission denied + kPermissionDenied = T5_PERMISSION_DENIED, + + /// Invalid buffer size + kInvalidBuffer = T5_ERROR_INVALID_BUFFER_SIZE, +}; + +/// \} + +namespace details { + +// Work around the lack of inline variable support. +template +struct ErrorCategory : std::error_category { + [[nodiscard]] auto name() const noexcept -> const char* override { + return "Tilt Five Error"; + } + + [[nodiscard]] auto message(int ev) const -> std::string override { + return ::t5GetResultMessage(static_cast(ev)); + } + + static const ErrorCategory kSingleton; +}; + +template +const ErrorCategory ErrorCategory::kSingleton; + +} // namespace details + +using ErrorCategory = details::ErrorCategory; + +inline std::error_code make_error_code(Error e) noexcept { + return {static_cast(e), ErrorCategory::kSingleton}; +} + +} // namespace tiltfive + +namespace std { + +template <> +struct is_error_code_enum : true_type {}; + +} // namespace std diff --git a/extension/TiltFiveNDK/include/include/result.hpp b/extension/TiltFiveNDK/include/include/result.hpp new file mode 100644 index 0000000..ebe5ffe --- /dev/null +++ b/extension/TiltFiveNDK/include/include/result.hpp @@ -0,0 +1,369 @@ +/* + * Copyright (C) 2020-2022 Tilt Five, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/// \file +/// \brief C++ Templated common return type for the Tilt Five™ API + +#include +#include + +namespace tiltfive { + +/// Throw when attempting to access a bad result +class BadResultAccess : public std::logic_error { +public: + BadResultAccess() : logic_error("bad result access") {} + explicit BadResultAccess(const char* what) : logic_error(what) {} + ~BadResultAccess() noexcept override = default; +}; + +/// Templated return type with support for error conditions +template +class [[nodiscard]] Result { +public: + using Value = T; + + Result(Value&& value) noexcept : mValue(std::move(value)), mErrFlags(kErrFlagsNone) {} + + Result(const Value& value) : mValue(value), mErrFlags(kErrFlagsNone) {} + + Result(std::error_code err) noexcept : mErr(err), mErrFlags(kErrFlagHaveErr) {} + + Result(Result&& other) : mErrFlags(other.mErrFlags) { + if (mErrFlags == kErrFlagsNone) { + new (&mValue) Value(std::move(other.mValue)); + } else { + new (&mErr) std::error_code(std::move(other.mErr)); + } + } + + Result(const Result& other) noexcept : mErrFlags(other.mErrFlags) { + if (mErrFlags == kErrFlagsNone) { + new (&mValue) Value(other.mValue); + } else { + new (&mErr) std::error_code(other.mErr); + } + } + + template < + typename ErrorCodeEnum, + typename = typename std::enable_if::value>::type> + Result(ErrorCodeEnum err) noexcept : mErr(err), mErrFlags(kErrFlagHaveErr) {} + + Result(std::errc err) noexcept : mErr(std::make_error_code(err)), mErrFlags(kErrFlagHaveErr) {} + + ~Result() { + if (mErrFlags == kErrFlagsNone) { + mValue.~Value(); + } else { + using std::error_code; + mErr.~error_code(); + } + } + + auto operator=(Result&& other) noexcept -> Result& { + if (mErrFlags == kErrFlagsNone) { + if (other.mErrFlags == kErrFlagsNone) { + mValue = std::move(other.mValue); + } else { + mValue.~Value(); + new (&mErr) std::error_code(std::move(other.mErr)); + } + } else { + if (other.mErrFlags == kErrFlagsNone) { + using std::error_code; + mErr.~error_code(); + new (&mValue) Value(std::move(other.mValue)); + } else { + mErr = std::move(other.mErr); + } + } + mErrFlags = other.mErrFlags; + return *this; + } + + auto operator=(const Result& other) -> Result& { + if (mErrFlags == kErrFlagsNone) { + if (other.mErrFlags == kErrFlagsNone) { + mValue = other.mValue; + } else { + mValue.~Value(); + new (&mErr) std::error_code(other.mErr); + } + } else { + if (other.mErrFlags == kErrFlagsNone) { + using std::error_code; + mErr.~error_code(); + new (&mValue) Value(other.mValue); + } else { + mErr = other.mErr; + } + } + mErrFlags = other.mErrFlags; + return *this; + } + + explicit operator bool() const noexcept { + return mErrFlags == kErrFlagsNone; + } + + auto operator*() -> Value& { + if (mErrFlags != kErrFlagsNone) { + throwBadResultAccess(); + } + return mValue; + } + + auto operator*() const -> const Value& { + if (mErrFlags != kErrFlagsNone) { + throwBadResultAccess(); + } + return mValue; + } + + auto operator->() -> Value* { + if (mErrFlags != kErrFlagsNone) { + throwBadResultAccess(); + } + return &mValue; + } + + auto operator->() const -> const Value* { + if (mErrFlags != kErrFlagsNone) { + throwBadResultAccess(); + } + return &mValue; + } + + [[nodiscard]] auto error() const noexcept -> std::error_code { + if (mErrFlags != kErrFlagsNone) { + return mErr; + } + return {}; + } + + [[nodiscard]] auto logged() const noexcept -> bool { + return (mErrFlags & kErrFlagLogged) != 0; + } + + [[nodiscard]] auto skipped() const noexcept -> bool { + return (mErrFlags & kErrFlagSkipped) != 0; + } + +private: + [[noreturn]] void throwBadResultAccess() const { +#if (__has_feature__cxx_exceptions) + throw BadResultAccess{}; +#else + std::terminate(); +#endif + } + + union { + Value mValue; + std::error_code mErr; + }; + + static constexpr uint8_t kErrFlagsNone = 0x00; + static constexpr uint8_t kErrFlagHaveErr = 0x01; // Do we have an error? + static constexpr uint8_t kErrFlagLogged = 0x02; // Is mErr already logged? + static constexpr uint8_t kErrFlagSkipped = 0x04; // Was logging skipped? + + uint8_t mErrFlags; +}; + +/// \private +struct success_t { + enum class Construct { kToken }; + + explicit constexpr success_t(Construct) {} +}; + +/// Specialization of tiltfive::Result for functions with 'no return' +template <> +class [[nodiscard]] Result { +public: + using Value = void; + + Result() noexcept : mDummy(), mErrFlags(kErrFlagsNone) {} + + Result(std::error_code err) noexcept : mErr(err), mErrFlags(kErrFlagHaveErr) {} + + Result(Result&& other) : mErrFlags(other.mErrFlags) { + if (mErrFlags != kErrFlagsNone) { + new (&mErr) std::error_code(other.mErr); + } + } + + Result(const Result& other) noexcept : mErrFlags(other.mErrFlags) { + if (mErrFlags != kErrFlagsNone) { + new (&mErr) std::error_code(other.mErr); + } + } + + template < + typename ErrorCodeEnum, + typename = typename std::enable_if::value>::type> + Result(ErrorCodeEnum err) noexcept : mErr(err), mErrFlags(kErrFlagHaveErr) {} + + Result(std::errc err) noexcept : mErr(std::make_error_code(err)), mErrFlags(kErrFlagHaveErr) {} + + Result(success_t) noexcept : mDummy(), mErrFlags(kErrFlagsNone) {} + + ~Result() { + if (mErrFlags != kErrFlagsNone) { + using std::error_code; + mErr.~error_code(); + } + } + + auto operator=(Result&& other) -> Result& { + if (mErrFlags == kErrFlagsNone) { + if (other.mErrFlags != kErrFlagsNone) { + new (&mErr) std::error_code(other.mErr); + } + } else { + if (other.mErrFlags == kErrFlagsNone) { + using std::error_code; + mErr.~error_code(); + } else { + mErr = other.mErr; + } + } + mErrFlags = other.mErrFlags; + return *this; + } + + auto operator=(const Result& other) -> Result& { + if (mErrFlags == kErrFlagsNone) { + if (other.mErrFlags != kErrFlagsNone) { + new (&mErr) std::error_code(other.mErr); + } + } else { + if (other.mErrFlags == kErrFlagsNone) { + using std::error_code; + mErr.~error_code(); + } else { + mErr = other.mErr; + } + } + mErrFlags = other.mErrFlags; + return *this; + } + + auto operator=(success_t) -> Result& { + if (mErrFlags != kErrFlagsNone) { + using std::error_code; + mErr.~error_code(); + } + mErrFlags = kErrFlagsNone; + return *this; + } + + explicit operator bool() const noexcept { + return mErrFlags == kErrFlagsNone; + } + + auto operator==(success_t) const noexcept -> bool { + return mErrFlags == kErrFlagsNone; + } + + [[nodiscard]] auto error() const noexcept -> std::error_code { + if (mErrFlags != kErrFlagsNone) { + return mErr; + } + return {}; + } + + [[nodiscard]] auto logged() const noexcept -> bool { + return (mErrFlags & kErrFlagLogged) != 0; + } + + [[nodiscard]] auto skipped() const noexcept -> bool { + return (mErrFlags & kErrFlagSkipped) != 0; + } + +private: + [[noreturn]] static void throwBadResultAccess() { +#if (__has_feature__cxx_exceptions) + throw BadResultAccess{}; +#else + std::terminate(); +#endif + } + + union { + uint8_t mDummy[sizeof(std::error_code)]{}; + std::error_code mErr; + }; + + static constexpr uint8_t kErrFlagsNone = 0x00; + static constexpr uint8_t kErrFlagHaveErr = 0x01; // Do we have an error? + static constexpr uint8_t kErrFlagLogged = 0x02; // Is mErr already logged? + static constexpr uint8_t kErrFlagSkipped = 0x04; // Was logging skipped? + + uint8_t mErrFlags; +}; + +/// Indicates 'success' for a Result function +static constexpr success_t kSuccess{success_t::Construct::kToken}; + +// Support struct to determine if a type supports std::ostream& operator<< +template +struct supports_ostream : std::false_type {}; +template +struct supports_ostream() << std::declval())> + : std::true_type {}; + +template +void stringifyForStream(T& t, + std::ostream& os, + typename std::enable_if::value, T>::type* = 0) { + os << t; +} + +template +void stringifyForStream(T& t, + std::ostream& os, + typename std::enable_if::value, T>::type* = 0) { + os << "[" << typeid(t).name() << "]"; +} + +} // namespace tiltfive + +/// Support for writing tiltfive::Result<> to an std::ostream +template +std::ostream& operator<<(std::ostream& os, const tiltfive::Result& instance) { + if (!instance) { + os << instance.error().message(); + } else { + tiltfive::stringifyForStream(*instance, os); + } + return os; +} + +///// Specialization for writing tiltfive::Result to an std::ostream +template <> +inline std::ostream& operator<<(std::ostream& os, const tiltfive::Result& instance) { + if (!instance) { + os << instance.error().message(); + } else { + os << "Success"; + } + return os; +} diff --git a/extension/TiltFiveNDK/include/include/types.h b/extension/TiltFiveNDK/include/include/types.h new file mode 100644 index 0000000..aae2887 --- /dev/null +++ b/extension/TiltFiveNDK/include/include/types.h @@ -0,0 +1,438 @@ +/* + * Copyright (C) 2020-2022 Tilt Five, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/// \file +/// \brief C common types for the Tilt Five™ API + +#ifndef __cplusplus +#include +#include +#else +#include +#endif + +////////////////////////////////////////////////////////// +//// Common Types //// +////////////////////////////////////////////////////////// + +/// \defgroup C_Common_Types Tilt Five™ Common Types +/// Common types for use with C and C++ interface +/// \{ + +/// \brief The maximum number of characters allowed for string values +#define T5_MAX_STRING_PARAM_LEN (260) + +/// \brief The minimum width required for camera image buffers +#define T5_MIN_CAM_IMAGE_BUFFER_WIDTH (768) + +/// \brief The minimum height required for camera image buffers +#define T5_MIN_CAM_IMAGE_BUFFER_HEIGHT (600) + +/// \brief 2D vector +typedef struct { + float x; + float y; +} T5_Vec2; + +/// \brief 3D vector +typedef struct { + float x; + float y; + float z; +} T5_Vec3; + +/// \brief Quaternion +typedef struct { + float w; + float x; + float y; + float z; +} T5_Quat; + +/// \brief Opaque handle used with system-wide functions +/// +/// Obtained from t5GetContext().
+/// Release with t5ReleaseContext(). +typedef struct T5_ContextImpl* T5_Context; + +/// \brief Opaque handle used with glasses +/// +/// Obtained from ::t5CreateGlasses().
+/// Released with ::t5DestroyGlasses(). +typedef struct T5_GlassesImpl* T5_Glasses; + +/// \brief Opaque handle used with wands +/// +/// Obtained from t5ListWandsForGlasses().
+/// Release not currently required. +typedef uint8_t T5_WandHandle; + +/// \brief Graphics API types +typedef enum { + /// \brief No graphics API (for clients that don't send frames) + kT5_GraphicsApi_None = 1, + + /// \brief OpenGL + kT5_GraphicsApi_GL = 2, + + /// \brief Direct3D 11 (Windows Only) + kT5_GraphicsApi_D3D11 = 3, +} T5_GraphicsApi; + +/// \brief Possible gameboard types +typedef enum { + /// \brief No gameboard + kT5_GameboardType_None = 1, + + /// \brief An LE gameboard + kT5_GameboardType_LE = 2, + + /// \brief An XE gameboard, flap laid flat + kT5_GameboardType_XE = 3, + + /// \brief An XE gameboard, flap raised at an angle on the kickstand + kT5_GameboardType_XE_Raised = 4, +} T5_GameboardType; + +/// \brief Physical dimensions of a gameboard. +typedef struct { + /// \brief The distance in meters from the gameboard origin to the edge of the viewable area in + /// the positive X direction. + float viewableExtentPositiveX; + + /// \brief The distance in meters from the gameboard origin to the edge of the viewable area in + /// the negative X direction. + float viewableExtentNegativeX; + + /// \brief The distance in meters from the gameboard origin to the edge of the viewable area in + /// the positive Y direction. + float viewableExtentPositiveY; + + /// \brief The distance in meters from the gameboard origin to the edge of the viewable area in + /// the negative Y direction. + float viewableExtentNegativeY; + + /// \brief The distance in meters above the gameboard origin that the viewable area extends in + /// the positive Z direction. + float viewableExtentPositiveZ; +} T5_GameboardSize; + +/// \brief Client provided information for use with t5CreateGlasses() +typedef struct { + /// \brief The application ID. + const char* applicationId; + + /// \brief The application version. + const char* applicationVersion; + + /// \brief The SDK type. + /// + /// Should be set to 0x00 unless otherwise instructed by T5 staff. + uint8_t sdkType; + + /// \brief RESERVED: Must be set to 0 + uint64_t reserved; +} T5_ClientInfo; + +/// \brief Glasses connection state +typedef enum { + /// \brief Glasses are connected for exclusive use + kT5_ConnectionState_ExclusiveConnection = 1, + + /// \brief Glasses are reserved for exclusive use + kT5_ConnectionState_ExclusiveReservation = 2, + + /// \brief Glasses have not been exclusively connected or reserved + kT5_ConnectionState_NotExclusivelyConnected = 3, + + /// \brief Glasses were previously exclusively connected, but the device has disconnected + kT5_ConnectionState_Disconnected = 4, +} T5_ConnectionState; + +/// \brief Glasses pose usage indicator +typedef enum { + /// \brief The pose will be used to render images to be presented on the glasses. + /// + /// Querying a glasses pose for this usage will return a pose prediction intended to account for + /// the render and presentation latency. The predicted pose is prone to include errors, and the + /// rendered images may appear very jittery if they are displayed on a device other than the + /// glasses. When displayed via the glasses, the on-glasses image stabilization compensates for + /// this prediction error, so the image should not appear jittery. + kT5_GlassesPoseUsage_GlassesPresentation = 1, + + /// \brief The pose will be used to render images to be presented on a device other than the + /// glasses, such at the host system's primary display. + /// + /// Querying a glasses pose for this usage will return a pose with less noise than that intended + /// for presentation via the glasses. + kT5_GlassesPoseUsage_SpectatorPresentation = 2, +} T5_GlassesPoseUsage; + +/// \brief Glasses pose information to be retrieved with t5GetGlassesPose() +/// +/// The pose describes the relationship between two reference frames: one defined in terms of the +/// glasses, and the other in terms of the gameboard. Both reference frames are right-handed. The +/// glasses reference frame, abbreviated as GLS, has its origin at the midpoint between the +/// effective optical position of the projectors. It is oriented such that +X points to the right, +/// +Y points up, and +Z points backward for someone wearing the glasses. The gameboard reference +/// frame, abbreviated GBD, is oriented such that +X points to the right, +Y points forward, and +Z +/// points up from the perspective of a person facing the gameboard on a table from the side of the +/// gameboard with the T5 logo. The origin of the gameboard reference frame is located at the point +/// equidistant from the three gameboard sides nearest to the T5 logo (i.e. the side on which the +/// logo appears and the two adjacent sides). This places the gameboard origin in the center of the +/// square LE gameboard, and off-center along the longer dimension of the rectangular XE gameboard. +typedef struct { + /// \brief The timestamp of the pose. + uint64_t timestampNanos; + + /// \brief The position of the origin of the GLS (glasses) frame relative to the GBD (gameboard) + /// frame. + T5_Vec3 posGLS_GBD; + + /// \brief The rotation that transforms points in the GBD (gameboard) frame orientation to the + /// GLS (glasses) frame orientation. + T5_Quat rotToGLS_GBD; + + /// \brief The type of gameboard visible for this pose + T5_GameboardType gameboardType; +} T5_GlassesPose; + +/// \brief Camera stream configuration +typedef struct { + /// \brief The index of the camera to be modified. + uint8_t cameraIndex; + + /// \brief Enable or disable the camera stream. True = enabled + bool enabled; +} T5_CameraStreamConfig; + +/// Render information to be used with t5SendFrameToGlasses() +typedef struct { + /// \brief Texture handle for the left image. + /// + /// The meaning of the handle will depend on the current graphics API. + /// + /// \see \ref aboutGraphicsApi for further details. + void* leftTexHandle; + + /// \brief Texture handle for the right image. + /// + /// The meaning of the handle will depend on the current graphics API. + /// + /// \see \ref aboutGraphicsApi for further details. + void* rightTexHandle; + + /// \brief Width of the textures pointed to by leftTexHandle and rightTexHandle. + uint16_t texWidth_PIX; + + /// \brief Height of the textures pointed to by leftTexHandle and rightTexHandle. + uint16_t texHeight_PIX; + + /// \brief True if the texture is srgb. This is only relevant for the OpenGL graphics API. + bool isSrgb; + + /// \brief True if the image is 'upside down'. + bool isUpsideDown; + + /// \brief The image rectangle in the normalized (z=1) image space of the virtual cameras. + struct { + float startX_VCI; + float startY_VCI; + float width_VCI; + float height_VCI; + } vci; + + /// \brief The rotation from GBD to VC, the virtual camera reference frame for the left eye. + T5_Quat rotToLVC_GBD; + + /// \brief The position of VC, the virtual camera reference frame, relative to GBD for the left + /// eye. + T5_Vec3 posLVC_GBD; + + /// \brief The rotation from GBD to VC, the virtual camera reference frame for the right eye + T5_Quat rotToRVC_GBD; + + /// \brief The position of VC, the virtual camera reference frame, relative to GBD for the right + /// eye. + T5_Vec3 posRVC_GBD; +} T5_FrameInfo; + +/// \brief Camera Frame information to be retrieved with t5GetFilledCamImageBuffer() +typedef struct { + /// \brief The width of the image in the image buffer. Empty buffers should set these parameters + /// to 0. + uint16_t imageWidth; + + /// \brief The height of the image in the image buffer. Empty buffers should set these + /// parameters to 0. + uint16_t imageHeight; + + /// \brief The stride of the image in the image buffer. Empty buffers should set these + /// parameters to 0. + uint16_t imageStride; + + /// \brief The index of the desired camera. 0 for tangible tracking camera, 1 for head tracking + /// camera. + uint8_t cameraIndex; + + /// \brief The illumination mode for incoming frames. 0 for unknown frame. 1 for Light frames. 2 + /// for dark frame. + uint8_t illuminationMode; + + /// \brief The total size of the provided image buffer. Must be at least + /// T5_MIN_CAM_IMAGE_BUFFER_WIDTH * T5_MIN_CAM_IMAGE_BUFFER_HEIGHT. + uint32_t bufferSize; + + /// \brief The image buffer being filled by the Tilt Five service. + uint8_t* pixelData; + + /// \brief The position of the camera relative to the GBD. + T5_Vec3 posCAM_GBD; + + /// \brief The rotation of the camera relative to the GBD. + T5_Quat rotToCAM_GBD; +} T5_CamImage; + +/// \brief Wand stream configuration +typedef struct { + /// \brief Enable or disable the entire stream. True = enabled + bool enabled; + +} T5_WandStreamConfig; + +/// \brief Wand stream event type +typedef enum { + /// \brief Wand connected + kT5_WandStreamEventType_Connect = 1, + + /// \brief Wand disconnected + kT5_WandStreamEventType_Disconnect = 2, + + /// \brief Stream has desynchronized + kT5_WandStreamEventType_Desync = 3, + + /// \brief Wand report (Pose, Buttons, Trigger, Stick, Battery) + kT5_WandStreamEventType_Report = 4, +} T5_WandStreamEventType; + +/// \brief Wand hand +typedef enum { + /// \brief Hand unknown + kT5_Hand_Unknown = 0, + + /// \brief Left hand + kT5_Hand_Left = 1, + + /// \brief Right hand + kT5_Hand_Right = 2, +} T5_Hand; + +/// \brief Contains wand related information (Pose, Buttons, Trigger, Stick, Battery) +typedef struct { + /// \brief The timestamp of the wand event in nanoseconds + uint64_t timestampNanos; + + /// \brief Validity of analog parameters. True = valid + bool analogValid; + + /// \brief Validity of battery parameters. True = valid + bool batteryValid; + + /// \brief Validity of button parameters. True = valid + bool buttonsValid; + + /// \brief Validity of pose parameters. True = valid + bool poseValid; + + /// \brief Trigger - Analog, Range [0.0 - 1.0], 1.0 = Fully depressed + float trigger; + + /// \brief Stick (X/Y) - Analog, Range [-1.0 - 1.0], 0 = Centered, 1.0 = Top/Right + T5_Vec2 stick; + + // TODO(khunt) : Determine units + /// Battery + uint8_t battery; + + /// \brief Buttons state. True = Pressed + struct { + bool t5; + bool one; + bool two; + bool three; + bool a; + bool b; + bool x; + bool y; + } buttons; + + /// \brief WND/GBD rotation unit quaternion + // + /// The rotation unit quaternion that takes points from the GBD (gameboard) + /// reference frame to the WND (wand) reference frame orientation. + T5_Quat rotToWND_GBD; + + /// \brief Position (Aim Point) - Vector3f + T5_Vec3 posAim_GBD; + + /// \brief Position (Fingertips) - Vector3f + T5_Vec3 posFingertips_GBD; + + /// \brief Position (Grip) - Vector3f + T5_Vec3 posGrip_GBD; + + /// \brief Wand hand + T5_Hand hand; +} T5_WandReport; + +/// \brief Represents an event from the wand stream +typedef struct { + /// \brief Opaque identifier for the wand + T5_WandHandle wandId; + + /// \brief Type of event + T5_WandStreamEventType type; + + /// \brief The timestamp of the wand event in nanoseconds + uint64_t timestampNanos; + + /// \brief Report (Valid if type = ::kT5_WandStreamEventType_Report) + T5_WandReport report; +} T5_WandStreamEvent; + +/// \brief Possible parameters that can be retrieved for glasses +typedef enum { + /// \brief Interpupillary + /// distance - Float, millimeters + kT5_ParamGlasses_Float_IPD = 1, + + /// User-facing name of the glasses - UTF8 + kT5_ParamGlasses_UTF8_FriendlyName = 6, +} T5_ParamGlasses; + +/// \brief Possible parameters that can be retrieved with \ref sys_getParam. +typedef enum { + /// \brief Version of the service software - UTF8 + kT5_ParamSys_UTF8_Service_Version = 1, + + /// \brief Non-zero if the control panel requires user interaction + /// (E.g. Important firmware update) - Integer, boolean + kT5_ParamSys_Integer_CPL_AttRequired = 2, +} T5_ParamSys; + +/// \} diff --git a/extension/TiltFiveNDK/lib/win64/TiltFiveNative.dll b/extension/TiltFiveNDK/lib/win64/TiltFiveNative.dll new file mode 100644 index 0000000000000000000000000000000000000000..af5d1143495e40282fdd48649f3a2853f5e26cff GIT binary patch literal 624128 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 ysrUhzp%=@-80(J8V!P}M9lV7e4K6PXxhsT^5I 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�Kwcq0pG5f2XWF$1gE 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 z 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 Bl_3BC literal 0 HcmV?d00001 diff --git a/extension/src/TiltFiveManager.cpp b/extension/src/TiltFiveManager.cpp new file mode 100644 index 0000000..20d80a1 --- /dev/null +++ b/extension/src/TiltFiveManager.cpp @@ -0,0 +1,22 @@ +//© Copyright 2014-2022, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +#include "TiltFiveManager.h" + +#include + +using namespace godot; + +TiltFiveManager::TiltFiveManager() +{ + count = 0; +} + +TiltFiveManager::~TiltFiveManager() +{ +} + +void TiltFiveManager::_bind_methods() +{ + //ClassDB::bind_method(D_METHOD("add", "value"), &TiltFiveManager::add, DEFVAL(1)); + //ClassDB::bind_method(D_METHOD("reset"), &TiltFiveManager::reset); + //ClassDB::bind_method(D_METHOD("get_total"), &TiltFiveManager::get_total); +} \ No newline at end of file diff --git a/extension/src/TiltFiveManager.h b/extension/src/TiltFiveManager.h new file mode 100644 index 0000000..4227699 --- /dev/null +++ b/extension/src/TiltFiveManager.h @@ -0,0 +1,28 @@ +#ifndef TILT_FIVE_CLASS_H +#define TILT_FIVE_CLASS_H + +// We don't need windows.h in this plugin but many others do and it throws up on itself all the time +// So best to include it and make sure CI warns us when we use something Microsoft took for their own goals.... +#ifdef WIN32 +#include +#endif + +#include + +using namespace godot; + +class TiltFiveManager : public Node +{ + GDCLASS(TiltFiveManager, Node); + + int count; + +protected: + static void _bind_methods(); + +public: + TiltFiveManager(); + ~TiltFiveManager(); +}; + +#endif // TILT_FIVE_CLASS_H \ No newline at end of file diff --git a/extension/src/register_types.cpp b/extension/src/register_types.cpp new file mode 100644 index 0000000..2c8bca8 --- /dev/null +++ b/extension/src/register_types.cpp @@ -0,0 +1,39 @@ +#include "register_types.h" +#include "TiltFiveManager.h" +#include +#include +#include +#include + +using namespace godot; + +void initialize_tiltfive_types(ModuleInitializationLevel p_level) +{ + if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } + ClassDB::register_class(); +} + +void uninitialize_tiltfive_types(ModuleInitializationLevel p_level) { + if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } +} + +extern "C" +{ + + // Initialization. + + GDExtensionBool GDE_EXPORT tiltfive_library_init(const GDExtensionInterface *p_interface, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) + { + GDExtensionBinding::InitObject init_obj(p_interface, p_library, r_initialization); + + init_obj.register_initializer(initialize_tiltfive_types); + init_obj.register_terminator(uninitialize_tiltfive_types); + init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE); + + return init_obj.init(); + } +} diff --git a/extension/src/register_types.h b/extension/src/register_types.h new file mode 100644 index 0000000..e3f2e95 --- /dev/null +++ b/extension/src/register_types.h @@ -0,0 +1,7 @@ +#ifndef SUMMATOR_REGISTER_TYPES_H +#define SUMMATOR_REGISTER_TYPES_H + +void initialize_summator_types(); +void uninitialize_summator_types(); + +#endif // SUMMATOR_REGISTER_TYPES_H