#pragma once

#ifndef NOKOVLABVIEW_H
#define NOKOVLABVIEW_H

#include "SeekerSDKTypes.h"
#include "StructDefine.h"

extern "C" _declspec(dllexport) int CreateClient(char* szServerIP);
extern "C" _declspec(dllexport) int GetSeekerSDKVersion(char* cVersion);
extern "C" _declspec(dllexport) int GetDataDescription();
extern "C" _declspec(dllexport) int GetDescriptionsNum(DataDescriptors type);
extern "C" _declspec(dllexport) int GetMarkerSetDescriptions(int serial, int* nMarkers, char* sMarkersetName);
extern "C" _declspec(dllexport) int GetMarkerSetMarkerNameDescriptions(int serial, int id, char* sMarkerName);
extern "C" _declspec(dllexport) int GetRigidBodyDescriptions(int serial, char* sRigBodyName, sLabViewRigBodyDescription * rigbodydesc);
extern "C" _declspec(dllexport) int GetSkeletonDescriptions(int serial, char* sSkeletonName, int* nSkeletonID, int* nRigidBodies);
extern "C" _declspec(dllexport) int GetSkeletonRigDescriptions(int serial, int id, char* rigName, sLabViewRigBodyDescription * rigbodydesc);
extern "C" _declspec(dllexport)	int FreeDataDescription();
extern "C" _declspec(dllexport) void* GetFrameOfMocapData();
extern "C" _declspec(dllexport) int GetFrameMocapDataOfCount(void* data, sLabViewMocapDataCount * count);
extern "C" _declspec(dllexport) bool DecodeTimecode(unsigned int inTimecode, unsigned int inTimecodeSubframe, int* hour, int* minute, int* second, int* frame, int* subframe);
extern "C" _declspec(dllexport) bool TimecodeStringify(unsigned int inTimecode, unsigned int inTimecodeSubframe, char* Buffer, int BufferSize);
extern "C" _declspec(dllexport) MarkerData * GetFrameMocapOfMarkerSetData(void* data, int serial, char* MarkerSetName, int* nMarkers);
extern "C" _declspec(dllexport) int GetDataOfMarkers(MarkerData * data, int serial, int total, sLabViewMarkerPointData * point);
extern "C" _declspec(dllexport) sRigidBodyData * GetFrameMocapOfRigidBodies(void* data, int serial);
extern "C" _declspec(dllexport) int GetDataOfRigidBody(sRigidBodyData * data, sLabViewRigBodyData * rigbodydata);
extern "C" _declspec(dllexport) int GetDataOfSkeletonRigData(sRigidBodyData * rigdata, int serial, sLabViewRigBodyData * rigbodydata);
extern "C" _declspec(dllexport) int GetMarkersOfRigidBody(sRigidBodyData * data, int serial, int total, sLabViewMarkerPointData * point);
extern "C" _declspec(dllexport) int GetMarkersIDOfRigidBody(sRigidBodyData * data, int serial, int total);
extern "C" _declspec(dllexport) int GetMarkerSizesOfRigidBody(sRigidBodyData * data, int serial, int total);
extern "C" _declspec(dllexport) int GetDataOfMarkerID(int* MarkerIDs, int serial, int total);
extern "C" _declspec(dllexport) int GetDataOfMarkerSizes(float* MarkerSizes, int serial, int total);
extern "C" _declspec(dllexport) int GetMarkersDataOfRigidBody(sRigidBodyData * data, int serial, int total, int* id, int* size, sLabViewMarkerPointData * point);
extern "C" _declspec(dllexport) sRigidBodyData * GetFrameMocapOfSkeleton(void* data, int serial, int* skeletonID, int* nRigidBodies);
extern "C" _declspec(dllexport) int GetFrameMocapOfMarker(void* framedata, int serial, sLabViewMarker * outdata);
extern "C" _declspec(dllexport) int GetFrameMocapOfOtherMarker(void* framedata, int serial, sLabViewMarkerPointData * otherMarker);
extern "C" _declspec(dllexport) int GetFrameMocapOfAnalogdata(void* framedata, float Analogdata[32]);
extern "C" _declspec(dllexport) int FreeFrameOfMocapData(void* framedata);

#endif // !NOKOVLABVIEW_H
