Skinetic SDK
Platform specific requirements
Please note that the next requirements for the SDK are not only essential during the development phase but also crucial for ensuring the smooth operation of any software using the SDK on the client's platform.
Failing to fulfill these requirements may lead to potential issues or limitations in utilizing the SDK's features, impacting the end-user experience.
Therefore, it is highly recommended to thoroughly assess and fulfill these prerequisites both during development and before deployment to ensure seamless execution of the software utilizing the SDK.
Linux
USB Mode with .rules File
To use the USB mode of our SDK on Linux, follow these steps:
Copy .rules File: Place the
70-skinetic-hid.rules
file (provided with the SDK) into the/etc/udev/rules.d/
directory. This is essential to grant the necessary permissions for the USB device to be recognized by the SDK.Apply Rule Changes: To apply the new rules, you can choose one of the following methods:
- Restart the
udev
service by running:sudo service udev restart
- Reboot your machine
- Unplug the USB device and then plug it back in
- Restart the
Connect USB Device: Now, connect Skinetic using USB. It should be detected and accessible by the SDK in USB mode.
Bluetooth Mode and Visibility
When using the Bluetooth mode of our SDK on Linux, please note the following:
Bluetooth Device Visibility: If the Skinetic firmware version of the vest is prior 1.2, the Bluetooth mode can only detect the vest when it is in "visible" mode. Make sure the Bluetooth feature on the vest is set to "visible" (left led is flashing blue) so that the Linux machine can discover and connect to it.
SDK Connection: Once the vest is in visible mode, you can initiate the connection from the SDK side. The SDK will search for visible Bluetooth devices and establish a connection when the vest is detected.
Windows
Microsoft Visual C++ Redistributable
When using our SDK on Windows, ensure that the Microsoft Visual C++ Redistributable is installed. This is required to provide the necessary runtime components for the SDK to function correctly.
Install Redistributable: If not already installed, you can download and install the Microsoft Visual C++ Redistributable from the official Microsoft website.
Redistribute with Your Application: If you plan to distribute your application that uses our SDK, you should include the necessary Microsoft Visual C++ Redistributable package along with your application installer. This ensures that users won't face compatibility issues.
Remember to keep these points in mind to ensure a smooth experience when using our SDK on both Linux and Windows platforms.
OsX
Bluetooth Mode with btScan executable
To use the Bluetooth mode of our SDK on OSX, place the btScan
file (provided with the SDK) into the same directory as the SkineticSDK.dylib
. This is essential to find your Skinetic device.
Bluetooth Mode and Visibility
When using the Bluetooth mode of our SDK on OSX, please note the following:
Bluetooth Device Visibility: If the Skinetic firmware version of the vest is prior 1.2, the Bluetooth mode can only detect the vest when it is in "visible" mode. Make sure the Bluetooth feature on the vest is set to "visible" (left led is flashing blue) so that the Linux machine can discover and connect to it.
SDK Connection: Once the vest is in visible mode, you can initiate the connection from the SDK side. The SDK will search for visible Bluetooth devices and establish a connection when the vest is detected.
Building
Building with g++ on Linux
Suppose you have a C++ source file named main.cpp
in your project, and you want to build it with the SDK's dynamic library:
g++ -std=c++11 -o helloworld helloworld.cpp -I/path/to/skinetic-sdk
Building with Visual C++ on Windows
If you are using Visual Studio, follow these steps to build your project:
Create a new Visual C++ project or open your existing project.
Add
main.cpp
to your project.Set the include directories:
- Right-click on the project in the Solution Explorer and select "Properties."
- Go to Configuration Properties -> C/C++ -> General.
- Add the path to the SDK include directory in "Additional Include Directories."
Set the library directories:
- Go to Configuration Properties -> Linker -> General.
- Add the path to the SDK library directory in "Additional Library Directories."
Add the SDK library to your project:
- Go to Configuration Properties -> Linker -> Input.
- Add the SDK library name (sdk.lib for Release or sdkd.lib for Debug) to "Additional Dependencies."
Build your project using Visual Studio.
Building with CMake
If you prefer using CMake to build your project, you can create a CMakeLists.txt
file with the following content:
cmake_minimum_required(VERSION 3.12)
project(my_app)
# Add your C++ source files to the project
set(SOURCES main.cpp)
# Path to the SDK
set(SDK_PATH /path/to/sdk)
# Include the SDK's header files
include_directories(${SDK_PATH}/include)
# Link against the SDK's dynamic library
add_executable(my_app ${SOURCES})
target_link_libraries(my_app ${SDK_PATH}/lib/SkineticSDK.so)
Note: Replace /path/to/sdk
with the actual path where you extracted the SDK.
Building for Android using Android Studio (Gradle)
Copy the
SkineticSDK.aar
file into your Android project'slibs
directory.Open your Android project in Android Studio.
In the
build.gradle
file (Module-levelbuild.gradle
), add the following line inside the dependencies block:
implementation files('libs/sdk.aar')
Sync your project with Gradle to include the SDK in your Android project.
Now, you can use the SDK's functionality in your Android app.
The SDK should now be integrated into your Android project, and you can access its functionality from your Java/Kotlin code.
These examples should provide you with a starting point for building your projects with the SDK on different platforms. Make sure to adjust the paths and filenames based on your specific project setup and SDK version.
Have a look at SDK API's documentation and examples for further details on using the APIs and to explore the available features and functionalities.
Experimental API
The SDK has separated API that exposes experimental features. We recommend using these experimental features only for testing or experimenting and not to rely on them when deploying your solution. They might as well be fully integrated into the main API or completely removed at some point.
Experimental Features
Audio device handling
This feature allows introspecting available audio devices and open an audio connection to on of them. Then the haptic rendering while output the haptic signals toward the audio devices. This audioConnection() acts as a substitute to the standard connection(), afterward all other features of the API can be used to control the haptic rendering.
This feature is not available through the Android API.
Changelogs
Last Version: [1.4.6] - 2024-05-23
Changed
- Refactor C++ API: Experimental changed in ExperimentalSkineticSDK to avoid conflict
Older versions
[1.4.5] - 2024-05-03
Changed
- Refactor C++ API: Experimental changed in ExperimentalSkineticSDK to avoid conflict
[1.4.4] - 2024-04-18
Added
- Log Callback: Option to set a callback to override the native logger
[1.4.3] - 2024-01-09
Fixed
- C# wrapping namespace residual
- audio preset on osx and linux
[1.4.2] - 2023-12-18
Fixed
- Audio stream segfault on osx
[1.4.1] - 2023-12-15
Added
- Serial number to string converter: Utility function to convert a serial number into a properly formatted string.
[1.4.0] - 2023-11-21
Added
- Experimental Audio Stream: Streaming haptic to standard audio devices
- Wifi: Can detect and connect to Skinetic device over Wifi4
- Python wrapping: Skinetic SDK can now be used in Python
- Documentation: Generation of online API documentation on unitouch.actronika.com
Fixed
- Missing file for osx integration
- Minor fixes
[1.3.5] - 2023-09-18
Added
- Linux arm64/V8 compatibility
[1.3.4] - 2023-09-12
Fixed
- Update Linux USB access rules for HSD mk.II
[1.3.3] - 2023-08-24
Fixed
- Fix HSD mk.II wrong device type
- Missing include file for linux
[1.3.2] - 2023-08-21
Added
- Important Notice: Using Skinetic SDK on Linux and Windows prerequisite
[1.3.1] - 2023-07-31
Added
- HSD mk.II USB: Detection and connection to HSD mk.II devices
[1.3.0] - 2023-06-21
Added
- Pattern and Effect Boost: Each instance has its own boost value using the default Pattern boost, which can be overridden on play.
- Effect Accumulation strategy: A fallback-pattern feature to alleviate haptic confusion.
- Spatial Inversion and Addition: An effect can be triggered with right/left, up/down and front/back inversion or addition.
- HelloWorld Examples
- C# Wrapping
Changed
- Stop Fadeout: Remove any duration limitation to allow longer fadeout.
Fixed
- Boost are now scaled by the volume envelop of the samples
[1.2.0] - 2023-04-14
Added
- Transformation: Shape-based patterns can be transformed on play by passing three additional parameters: height translation, heading rotation and tilting rotation.
- Global Boost: The boost increase the overall intensity of all haptic effects.
Changed
- Play parameters now passed as a structure
- Number of simultaneous playing simultaneous samples increased to 10: compatible with the Skinetic firmware 1.1.3 or higher.
[1.1.1] - 2023-02-17
Fixed
- Fix error in computed weights
- Only queries devices already paired during the scan on Windows
[1.1.0] - 2023-02-15
Added
- Bluetooth communication
- Crop handling: A sample can now be cropped on both sides to keep the meaningful part. The crop information is contained in the .spn.
- Ping: In case of low activity, a ping command is send to check if the communication is still valid.
- Play At: When playing a pattern, an arbitrary start time can be set.
- Changelog
Changed
- Log formatting for standalone version
- Update HIDAPI from 0.12.0 to 0.13.1