Skip to content

File ManusSDKExtended.h

File List > api > cppSDK > SDKBase > ManusSDKExtended.h

Go to the documentation of this file

#ifndef __MANUS_SDK_EXTENDED_H__
#define __MANUS_SDK_EXTENDED_H__

#ifdef __cplusplus
extern "C"
{
#endif

#include "ManusSDKTypes.h"
#include "ManusSDKExtendedTypes.h"

#include <stdint.h>

#ifdef MANUS_SDK_STATIC
#define CORESDK_API
#else
#ifdef _WIN32
    // MANUS_SDK_EXPORTS defines if the functions are exported to or
    // imported from a DLL.
#ifdef MANUS_SDK_EXPORTS
#define CORESDK_API __declspec(dllexport)
#else
#define CORESDK_API __declspec(dllimport)
#endif
#elif defined(__linux__)
#define CORESDK_API __attribute__((visibility("default")))
#else
#error Unrecognized platform.
#endif
#endif

    CORESDK_API SDKReturnCode CoreSdk_UpdateCore(bool p_CheckOnly, UpdateCoreResponse* p_UpdateResponse);

    //Extended Gloves/Dongles
    CORESDK_API SDKReturnCode CoreSdk_SetDonglePolygon(DonglePolygonArgs p_Args, SetPolygonDongleResponse* p_SetPolygonDongleResponse);
    CORESDK_API SDKReturnCode CoreSdk_CalibrationSetMin(CalibrationArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_CalibrationSetMax(CalibrationArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_CalibrationStore(CalibrationArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_CalibrationBegin(CalibrationArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_CalibrationEnd(CalibrationArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_CalibrationDataGet(CalibrationArgs p_Args, CalibrationData* p_CalibrationDataResponse);
    CORESDK_API SDKReturnCode CoreSdk_CalibrationDataSet(CalibrationArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_UpdateDongleFirmware(DongleUpdateArgs p_Args, DongleUpdateResponse* p_DongleUpdateResponse);

    CORESDK_API SDKReturnCode CoreSdk_StartQuantumCalibration(StartQuantumCalibrationArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_StartQuantumCalibrationStep(StartQuantumCalibrationStepArgs p_Args, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_StopQuantumCalibration(uint32_t p_GloveID, bool* p_CommandResponse);

    //Tracking
    CORESDK_API SDKReturnCode CoreSdk_IsUserUsingHMD(bool* p_IsUsingHMD, uint32_t p_UserId);
    CORESDK_API SDKReturnCode CoreSdk_RefreshTrackingSystems();
    CORESDK_API SDKReturnCode CoreSdk_AutoGroupTrackers();
    CORESDK_API SDKReturnCode CoreSdk_AutoAssignTrackers(uint32_t p_UserId);
    CORESDK_API SDKReturnCode CoreSdk_ResetTrackerAssignment(uint32_t p_UserId);

    CORESDK_API SDKReturnCode CoreSdk_AssignTrackerToUser(TrackerId p_TrackerId, uint32_t p_UserId);
    CORESDK_API SDKReturnCode CoreSdk_AssignRoleToTracker(TrackerId p_TrackerId, TrackerType p_TrackerType);
    CORESDK_API SDKReturnCode CoreSdk_ChangeUserForRole(TrackerType p_Role, uint32_t p_CurrentUser, uint32_t p_TargetUser);
    CORESDK_API SDKReturnCode CoreSdk_GetTrackingSystems(TrackingSystemInfo* p_Current, TrackingSystemInfo* p_Systems);
    CORESDK_API SDKReturnCode CoreSdk_KeepLastPosition(bool p_UseLastPosition);
    CORESDK_API SDKReturnCode CoreSdk_UseTimeout(bool p_UseTimeOut);
    CORESDK_API SDKReturnCode CoreSdk_SetTimeout(float p_TimeOut);
    CORESDK_API SDKReturnCode CoreSdk_GetTrackerServiceSettings(bool* p_UseTimeout, float* p_Timeout, bool* p_KeepLastPosition);

    CORESDK_API SDKReturnCode CoreSdk_GetTrackerSystemsSettings(TrackerSystem* p_TrackerSystems, uint32_t* p_TrackerSystemCount);
    CORESDK_API SDKReturnCode CoreSdk_SetTrackerSystemsSettings(TrackerSystem* p_TrackerSystems);
    /* // todo , we don't need the following 2 ?
    //rpc   UpdateTrackers( TrackerData )                           returns ( Void ) {}
    //rpc GetConnectedTrackerList( google.protobuf.Int32Value ) returns ( TrackerList ) {}
    */

    CORESDK_API SDKReturnCode CoreSdk_CalibrateHapticsModule(uint32_t p_DongleId, Side p_HandType);
    /* p2 haptics only.
    CORESDK_API SDKReturnCode CoreSdk_SetHapticsSequence();
    CORESDK_API SDKReturnCode CoreSdk_PlayHapticsSequence();
    CORESDK_API SDKReturnCode CoreSdk_DeleteHapticsSequence();
    */

    //Mesh
    CORESDK_API SDKReturnCode CoreSdk_GetMeshSetupInfo(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, MeshSetupInfo* p_MeshSetupInfo);
    CORESDK_API SDKReturnCode CoreSdk_GetVertexData(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, uint32_t p_VertexIndex, Vertex* p_Vertex);
    CORESDK_API SDKReturnCode CoreSdk_GetTriangleData(uint32_t p_SkeletonSetupIndex, uint32_t p_MeshSetupIndex, uint32_t p_TriangleIndex, Triangle* p_Triangle);

    //Polygon Calibration
    CORESDK_API SDKReturnCode CoreSdk_StartSequence(StartSequenceArg p_Args, SequenceData* p_SequenceData);
    CORESDK_API SDKReturnCode CoreSdk_StopSequence(uint32_t p_Id, CompleteType* p_Message);
    CORESDK_API SDKReturnCode CoreSdk_StartNextStep(uint32_t p_Id, CompleteType* p_Message);
    CORESDK_API SDKReturnCode CoreSdk_UndoStep(uint32_t p_Id, CompleteType* p_Message);
    CORESDK_API SDKReturnCode CoreSdk_GetSequenceState(uint32_t p_Id, SequenceStateValue* p_SequenceStateValue);
    CORESDK_API SDKReturnCode CoreSdk_GetStepData(uint32_t p_Id, StepData* p_StepData);
    CORESDK_API SDKReturnCode CoreSdk_ApplyProfile(uint32_t p_Id, CompleteType* p_Message);

    CORESDK_API SDKReturnCode CoreSdk_AssignProfileToUser(UserProfileArgs p_UserProfileArgs, CompleteType* p_Message);
    CORESDK_API SDKReturnCode CoreSdk_GetCalibrationProfile(uint32_t p_UserId, CalibrationProfile* p_CalibrationProfile);

    //Bandscan
    CORESDK_API SDKReturnCode CoreSdk_GetBandScan(BandScanArgs p_BandScanArgs, int32_t* p_BandScanType, unsigned char* p_BandScanData);
    CORESDK_API SDKReturnCode CoreSdk_SetChannel(uint32_t p_Channel, uint32_t p_DongleId, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_SetPersistentDongleChannels(bool p_SetPersistent);
    CORESDK_API SDKReturnCode CoreSdk_AreDongleChannelsPersistent(bool* p_IsPersistent);

    //Virtual Dongles
    CORESDK_API SDKReturnCode CoreSdk_SetEnableVirtualDongles(bool p_Enable);
    CORESDK_API SDKReturnCode CoreSdk_AreVirtualDonglesEnabled(bool* p_IsEnabled);

    //Extended Settings IMU
    CORESDK_API SDKReturnCode CoreSdk_SetSettingIgnoreThumbIMU(bool p_IgnoreThumbIMU);
    CORESDK_API SDKReturnCode CoreSdk_GetSettingIgnoreThumbIMU(bool* p_IgnoreThumbIMU);
    CORESDK_API SDKReturnCode CoreSdk_SetSettingIgnoreNonThumbFingerIMU(bool p_IgnoreNonThumbFingerIMU);
    CORESDK_API SDKReturnCode CoreSdk_GetSettingIgnoreNonThumbFingerIMU(bool* p_IgnoreNonThumbFingerIMU);

    // Telemetry
    CORESDK_API SDKReturnCode CoreSdk_ReportFeatureUsage(FeatureUsed p_Feature, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_ReportExportFeatureUsage(ExportFeatureReport p_Report, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_ReportExportCSVFeatureUsage(ExportCSVFeatureReport p_Report, bool* p_CommandResponse);
    CORESDK_API SDKReturnCode CoreSdk_ReportOpenXRFeatureUsage(OpenXRFeatureReport p_Report, bool* p_CommandResponse);

    // callbacks
    CORESDK_API SDKReturnCode CoreSdk_RegisterCallbackForExtraDataStream(const ExtraDataStreamCallback_t p_ExtraDataStreamCallback);

    CORESDK_API SDKReturnCode CoreSdk_RegisterCallbackForDebuggingStream(const DebuggingStreamCallback_t p_DebuggingStreamCallback);

    CORESDK_API SDKReturnCode CoreSdk_RegisterCallbackForStatisticsStream(const StatisticsStreamCallback_t p_StatisticsStreamCallback);

    /******************************************************************************
    * debugging
    *****************************************************************************/
    CORESDK_API SDKReturnCode CoreSdk_GetDebuggingData(uint32_t p_StartIndex, DebuggingData* p_DebuggingData);

    CORESDK_API SDKReturnCode CoreSdk_GetExtraDeviceData(uint32_t p_ExtraDeviceDataIndex, ExtraDeviceData* p_Data);

    /******************************************************************************
    * Playback Recording
    *****************************************************************************/
    CORESDK_API SDKReturnCode CoreSdk_StartRecording(bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_StopRecording(bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_UnloadRecording(bool* p_Success);

    CORESDK_API SDKReturnCode CoreSdk_StartPlayback(bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_EnablePlayback(bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_StopPlayback(bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_SeekFrame(SeekFrameInfo p_SeekFrameInfo, ManusTimestamp* p_Timestamp);
    CORESDK_API SDKReturnCode CoreSdk_StartPlaybackFromSpecificTime(uint32_t p_PlaybackStartingTime, bool* p_Success);

    CORESDK_API SDKReturnCode CoreSdk_GetCurrentRecordingProperties(PlaybackRecordingProperties* p_RecordingProperties);

    CORESDK_API SDKReturnCode CoreSdk_SaveRecordingToFile(char* p_PathName, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_LoadRecordingFromFile(char* p_PathName, bool* p_Success);

    CORESDK_API SDKReturnCode CoreSdk_ZipRecordingDataAndGetSize(uint32_t* p_RecordingLengthInBytes);
    CORESDK_API SDKReturnCode CoreSdk_GetRecordingData(unsigned char* p_RecordingData, uint32_t p_RecordingSize);
    CORESDK_API SDKReturnCode CoreSdk_LoadRecordingFromClientFile(unsigned char* p_RecordingData, uint32_t p_RecordingLengthInBytes, bool* p_Success);

    /******************************************************************************
    * Timecode
    *****************************************************************************/
    CORESDK_API SDKReturnCode CoreSdk_UseTimecodeTimestamps(bool p_Enabled);
    CORESDK_API SDKReturnCode CoreSdk_IsUsingTimecodeTimestamps(bool* p_Enabled);

    CORESDK_API SDKReturnCode CoreSdk_StartTimecode(StartTimecodeArgs p_Args, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_StopTimecode(bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_RefreshTimecodeInterfaces(bool p_Reconnect, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_IsTimecodeRunning(bool* p_Running);
    CORESDK_API SDKReturnCode CoreSdk_SetTimecodeAutoStart(bool p_Enabled, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_GetTimecodeAutoStart(bool* p_Enabled);
    CORESDK_API SDKReturnCode CoreSdk_SetTimecodeDeviceKeepAlive(bool p_Enabled, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_GetTimecodeDeviceKeepAlive(bool* p_Enabled);
    CORESDK_API SDKReturnCode CoreSdk_SetTimecodeGenlock(bool p_Enabled, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_GetTimecodeGenlock(bool* p_Enabled);
    CORESDK_API SDKReturnCode CoreSdk_SetTimecodeNonRealTime(bool p_Enabled, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_GetTimecodeNonRealTime(bool* p_Enabled);
    CORESDK_API SDKReturnCode CoreSdk_SetLtcChannel(int32_t p_Channel, bool* p_Success);
    CORESDK_API SDKReturnCode CoreSdk_GetLtcChannel(int32_t* p_Channel);

    /******************************************************************************/
    // statistics
    /******************************************************************************/
    CORESDK_API SDKReturnCode CoreSdk_GetStatistics(StatisticsStream* p_Data);

    /******************************************************************************/
    // estimation data
    /******************************************************************************/
    [[deprecated("Setting was removed, RawSkeletonStream is always enabled")]]
    CORESDK_API SDKReturnCode CoreSdk_SetSettingsRawSkeletonStream(bool p_StreamActive);
    [[deprecated("Setting was removed, RawSkeletonStream is always enabled")]]
    CORESDK_API SDKReturnCode CoreSdk_GetSettingsRawSkeletonStream(bool& p_StreamActive);

    /******************************************************************************/
    // multicore NetDevices
    /******************************************************************************/
    CORESDK_API SDKReturnCode CoreSdk_NetDeviceGetNumberOfAvailableHosts(uint32_t& p_NumberOfAvailableHosts);
    CORESDK_API SDKReturnCode CoreSdk_NetDeviceGetAvailableHosts(ManusHost* p_Hosts, const uint32_t p_NumberOfAvailableHosts);
    CORESDK_API SDKReturnCode CoreSdk_NetDeviceConnect(ManusHost p_Host);
    CORESDK_API SDKReturnCode CoreSdk_NetDeviceDisconnect(ManusHost p_Host);
    CORESDK_API SDKReturnCode CoreSdk_SetNetDeviceMode(bool p_Client);
    CORESDK_API SDKReturnCode CoreSdk_GetNetDeviceMode(bool& p_Client);
    CORESDK_API SDKReturnCode CoreSdk_SetNetDeviceAutoconnectPolicy(bool p_Autoconnect);
    CORESDK_API SDKReturnCode CoreSdk_GetNetDeviceAutoconnectPolicy(bool& p_Autoconnect);


    // Inter Core Connector //
    CORESDK_API SDKReturnCode InterCore_Initialize();
    CORESDK_API SDKReturnCode InterCore_Start();
    CORESDK_API SDKReturnCode InterCore_ShutDown();

    //This is the callback that is invoked when new data comes in. 
    CORESDK_API SDKReturnCode InterCore_RegisterCallbackForInterCoreStream(InterCoreStreamCallback_t p_InterCoreStreamCallback);
    //These functions can be called DURING the callback, they are invalid at any other time.
    CORESDK_API SDKReturnCode InterCore_GetInterCoreStreamGloveData(Glove* p_Gloves, uint32_t p_GloveCount);

    CORESDK_API SDKReturnCode InterCore_GetNetDeviceLandscapeData(NetDevicesLandscape* p_NetDevicesLandscape);

    CORESDK_API SDKReturnCode InterCore_GetNumberOfAvailableNetDevices(uint32_t& p_NumberOfAvailablePeers);
    CORESDK_API SDKReturnCode InterCore_GetAvailableNetDevices(InterCorePeerInfo* p_Peers, const uint32_t p_NumberOfAvailablePeers);
    CORESDK_API SDKReturnCode InterCore_ConnectToNetDevice(InterCorePeerInfo p_Peer);
    CORESDK_API SDKReturnCode InterCore_DisconnectFromNetDevice(InterCorePeerInfo p_Peer);
    CORESDK_API SDKReturnCode InterCore_SetIsNetDevice(bool p_IsNetDevice);
    CORESDK_API SDKReturnCode InterCore_GetIsNetDevice(bool& p_IsNetDevice);
    CORESDK_API SDKReturnCode InterCore_SetAutoFindNetDevices(bool p_AutoFind);
    CORESDK_API SDKReturnCode InterCore_GetAutoFindNetDevices(bool& p_AutoFind);
    CORESDK_API SDKReturnCode InterCore_SetAutoConnectNetDevices(bool p_AutoConnect);
    CORESDK_API SDKReturnCode InterCore_GetAutoConnectNetDevices(bool& p_AutoConnect);

    CORESDK_API SDKReturnCode InterCore_StartRecording(const ManusTimestamp p_Timestamp, bool& p_Result);
    CORESDK_API SDKReturnCode InterCore_StopRecording(bool& p_Result);

    CORESDK_API SDKReturnCode InterCore_GetNextRecordedFrame(const uint32_t p_NetDeviceID, InterCoreStreamInfo& p_StreamInfo, bool& p_LastFrame);
    CORESDK_API SDKReturnCode InterCore_GetNextRecordedFrameGloveData(Glove* p_Gloves, uint32_t p_GloveCount);

    CORESDK_API SDKReturnCode InterCore_PairGlove(const uint32_t p_NetDeviceID, const uint32_t p_GloveID, bool& p_Success);
    CORESDK_API SDKReturnCode InterCore_PairGloveToDongle(const uint32_t p_NetDeviceID, const uint32_t p_GloveID, const uint32_t p_DongleID, bool& p_Success);
    CORESDK_API SDKReturnCode InterCore_UnpairGlove(const uint32_t p_NetDeviceID, const uint32_t p_GloveID, bool& p_Success);

    CORESDK_API SDKReturnCode InterCore_SendHaptics(const uint32_t p_NetDeviceID, const uint32_t p_GloveID, const float* p_Powers);

    CORESDK_API SDKReturnCode InterCore_GloveCalibrationStart(const uint32_t p_NetDeviceID, const GloveCalibrationArgs p_CalibrationArgs, bool& p_Result);
    CORESDK_API SDKReturnCode InterCore_GloveCalibrationStop(const uint32_t p_NetDeviceID, const GloveCalibrationArgs p_CalibrationArgs, bool& p_Result);
    CORESDK_API SDKReturnCode InterCore_GloveCalibrationFinish(const uint32_t p_NetDeviceID, const GloveCalibrationArgs p_CalibrationArgs, bool& p_Result);
    CORESDK_API SDKReturnCode InterCore_GloveCalibrationGetNumberOfSteps(const uint32_t p_NetDeviceID, const GloveCalibrationArgs p_CalibrationArgs, uint32_t& p_NumberOfSteps);
    CORESDK_API SDKReturnCode InterCore_GloveCalibrationGetStepData(const uint32_t p_NetDeviceID, const GloveCalibrationStepArgs p_CalibrationArgs, GloveCalibrationStepData& p_Data);
    CORESDK_API SDKReturnCode InterCore_GloveCalibrationStartStep(const uint32_t p_NetDeviceID, const GloveCalibrationStepArgs p_CalibrationArgs, bool& p_Result);

    CORESDK_API SDKReturnCode InterCore_GetLicenceFeatures(LicenseInfo& p_License);

    // Calibration // 
    CORESDK_API SDKReturnCode Calibration_Initialize();
    CORESDK_API SDKReturnCode Calibration_Start();
    CORESDK_API SDKReturnCode Calibration_ShutDown();

    //This is the callback that is invoked when a new glove profile for a user comes in. 
    CORESDK_API SDKReturnCode Calibration_RegisterCallbackForUserGloveProfile(UserGloveProfileCallback_t p_UserGloveProfileCallback);

    CORESDK_API SDKReturnCode Calibration_AddGloveData(Glove* p_GloveData);
    CORESDK_API SDKReturnCode Calibration_AddDeviceLandscape(DeviceLandscape* p_DeviceLandscape);
    CORESDK_API SDKReturnCode Calibration_AddUserLandscape(UserLandscape* p_UserLandscape);

    CORESDK_API SDKReturnCode Calibration_GloveCalibrationStart(GloveCalibrationArgs p_CalibrationArgs, bool& p_Result);
    CORESDK_API SDKReturnCode Calibration_GloveCalibrationStop(GloveCalibrationArgs p_CalibrationArgs, bool& p_Result);
    CORESDK_API SDKReturnCode Calibration_GloveCalibrationFinish(GloveCalibrationArgs p_CalibrationArgs, bool& p_Result);

    CORESDK_API SDKReturnCode Calibration_GloveCalibrationGetNumberOfSteps(GloveCalibrationArgs p_CalibrationArgs, uint32_t& p_NumberOfSteps);
    CORESDK_API SDKReturnCode Calibration_GloveCalibrationGetStepData(GloveCalibrationStepArgs p_CalibrationStepArgs, GloveCalibrationStepData& p_Data);
    CORESDK_API SDKReturnCode Calibration_GloveCalibrationStartStep(GloveCalibrationStepArgs p_CalibrationStepArgs, bool& p_Result);

    CORESDK_API SDKReturnCode Calibration_GetGloveCalibrationSize(uint32_t p_GloveId, uint32_t* p_Size);
    CORESDK_API SDKReturnCode Calibration_GetGloveCalibrationSizeForUser(uint32_t p_UserId, Side p_Side, GloveProfileType p_ProfileType, uint32_t* p_Size);
    CORESDK_API SDKReturnCode Calibration_GetGloveCalibrationBytes(unsigned char* p_CalibrationBytes, uint32_t p_BytesLength);
    CORESDK_API SDKReturnCode Calibration_SetGloveCalibration(uint32_t p_GloveId, unsigned char* p_CalibrationBytes, uint32_t p_BytesLength, SetGloveCalibrationReturnCode& p_Response);
    CORESDK_API SDKReturnCode Calibration_SetGloveCalibrationForUser(uint32_t p_UserId, unsigned char* p_CalibrationBytes, uint32_t p_BytesLength, SetGloveCalibrationReturnCode& p_Response);

    CORESDK_API SDKReturnCode Calibration_GetGloveCalibrationFromBytes(unsigned char* p_CalibrationBytes, uint32_t p_BytesLength, SetGloveCalibrationReturnCode& p_Response, GloveProfile* p_GloveProfile);
    CORESDK_API SDKReturnCode Calibration_GloveCalibrationToBytesAndGetSize(const GloveProfile* p_GloveProfilePtr, uint32_t* p_Size);

#ifdef __cplusplus
} // extern "C"
#endif

#endif // #ifndef HPP_SDK