PST SDK  6.0.0.0-272350a
pstsdk_c.h
Go to the documentation of this file.
1 // Copyright PS-Tech B.V. All Rights Reserved.
2 #pragma once
3 
4 #if (defined(_WIN32) || defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__))
5 # ifdef pstsdk_c_EXPORTS
6 # define PST_C_EXPORT __declspec(dllexport)
7 # else
8 # define PST_C_EXPORT __declspec(dllimport)
9 # endif
10 #else
11 # define PST_C_EXPORT
12 #endif
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #else
17 #include <stdbool.h>
18 #include <stddef.h>
19 #endif
20 
43 typedef enum EPstErrorStatus
44 {
60 
68 typedef enum EPstStatusMessage
69 {
83 
94 typedef enum EPstTrackerMode
95 {
104 
116 typedef struct PstImage
117 {
118  size_t width;
119  size_t height;
121  unsigned char** images;
122 } PstImage;
123 
131 typedef struct PstTarget
132 {
133  char name[128];
134  char uuid[37];
135  int id;
136 } PstTarget;
137 
150 typedef struct PstTargetStatus
151 {
153  bool status;
155 
166 typedef struct PstPoint
167 {
168  int id;
169  float position[3];
170 } PstPoint;
171 
183 typedef struct PstTargetPose
184 {
186  float pose_matrix[16];
189 } PstTargetPose;
190 
199 typedef struct PstTargetMarker
200 {
201  float coordinates[3];
203 
212 typedef struct PstTargetMarkers
213 {
217 
231 typedef struct PstTrackerData
232 {
233  double timestamp;
234  int seqnumber;
240 
247 typedef struct PstTracker
248 {
249  void* tracker;
250 } PstTracker;
251 
260 typedef struct PstCameraURLs
261 {
262  char** url_data;
263  size_t number_of_urls;
264 } PstCameraURLs;
265 
281 
298 
315 PST_C_EXPORT EPstErrorStatus pst_tracker_init1(PstTracker* ctracker, const char path[]);
316 
334 PST_C_EXPORT EPstErrorStatus pst_tracker_init2(PstTracker* ctracker, const char path[], const char config_file[]);
335 
354 PST_C_EXPORT EPstErrorStatus pst_tracker_init3(PstTracker* ctracker, const char path[], const char config_file[], const char db_file[]);
355 
375 PST_C_EXPORT EPstErrorStatus pst_tracker_init4(PstTracker* ctracker, const char path[], const char config_file[], const char db_file[], const char grabber_name[]);
376 
381 
396 
410 
429 
444 PST_C_EXPORT EPstErrorStatus pst_tracker_alloc_and_get_version_info(const PstTracker* ctracker, char** version_string);
445 
461 
482 
500 
518 
543 PST_C_EXPORT EPstErrorStatus pst_tracker_add_tracker_callbacks(PstTracker* ctracker, void (*on_tracker_data)(const PstTrackerData* , EPstErrorStatus), void (*on_tracker_mode)(EPstTrackerMode));
544 
559 
574 
589 PST_C_EXPORT EPstErrorStatus pst_tracker_remove_tracker_callbacks(PstTracker* ctracker, void (*on_tracker_data)(const PstTrackerData* , EPstErrorStatus), void (*on_tracker_mode)(EPstTrackerMode));
590 
603 
617 
632 
647 
662 
682 PST_C_EXPORT EPstErrorStatus pst_tracker_alloc_and_get_supported_framerates(const PstTracker* ctracker, float** framerates, size_t* number_of_framerates);
683 
699 
712 PST_C_EXPORT EPstErrorStatus pst_tracker_get_exposure(const PstTracker* ctracker, double* exposure);
713 
733 PST_C_EXPORT EPstErrorStatus pst_tracker_get_exposure_range(const PstTracker* ctracker, double* min, double* max);
734 
756 
770 
786 
802 
822 
836 
857 
871 
898 
916 PST_C_EXPORT EPstErrorStatus pst_tracker_alloc_and_get_target_list(const PstTracker* ctracker, PstTargetStatus** statuses, size_t* number_of_statuses);
917 
931 PST_C_EXPORT EPstErrorStatus pst_tracker_get_target_info(const PstTracker* ctracker, const char* name, PstTarget* target);
932 
948 PST_C_EXPORT EPstErrorStatus pst_tracker_set_target_status(PstTracker* ctracker, const char* name, bool set_active);
949 
965 PST_C_EXPORT EPstErrorStatus pst_tracker_get_target_status(const PstTracker* ctracker, const char* name, bool* status);
966 
989 PST_C_EXPORT EPstErrorStatus pst_tracker_get_target_markers(const PstTracker* ctracker, const char* name, PstTargetMarkers* marker_list);
990 
1004 PST_C_EXPORT EPstErrorStatus pst_tracker_set_target_id(PstTracker* ctracker, const char* name, int id);
1005 
1025 PST_C_EXPORT EPstErrorStatus pst_tracker_set_reference(PstTracker* ctracker, const float creference[16], bool relative);
1026 
1042 
1059 PST_C_EXPORT EPstErrorStatus pst_tracker_get_reference(const PstTracker* ctracker, float creference[16]);
1060 
1086 
1095 
1116 PST_C_EXPORT EPstErrorStatus pst_sdk_enable_rest_server(const char* server_address, const char* server_port, int event_stream_retry_timeout);
1117 
1127 
1141 PST_C_EXPORT EPstErrorStatus pst_tracker_remove_target_model(PstTracker* ctracker, const char* model_name);
1142 
1149 
1156 
1168 
1173 
1184 PST_C_EXPORT void pst_image_init(PstImage* image);
1185 
1190 
1200 
1210 
1218 PST_C_EXPORT const char* pst_sdk_get_version();
1219 
1228 
1241 
1256 PST_C_EXPORT void pst_free(void* data);
1257 
1271 PST_C_EXPORT EPstErrorStatus pst_tracker_import_json_model(const PstTracker* ctracker, const char* json_model);
1272 
1287 PST_C_EXPORT EPstErrorStatus pst_tracker_export_json_model(const PstTracker* ctracker, const char* model_name, char** model_string);
1288 
1290 #ifdef __cplusplus
1291 }
1292 #endif
EPstErrorStatus pst_tracker_get_pst_image(const PstTracker *ctracker, PstImage *image)
Retrieve images from the connected PST Tracker.
int seqnumber
Definition: pstsdk_c.h:234
Estimated 3D marker location.
Definition: pstsdk_c.h:166
EPstErrorStatus pst_tracker_set_framerate(PstTracker *ctracker, double fps)
Set tracker frame rate.
EPstErrorStatus pst_tracker_start(PstTracker *ctracker)
Start tracking.
void pst_target_markers_init(PstTargetMarkers *marker_list)
EPstErrorStatus pst_tracker_remove_tracker_data_callback(PstTracker *ctracker, void(*on_tracker_data)(const PstTrackerData *, EPstErrorStatus))
Remove a callback function for tracker data.
EPstStatusMessage
Tracker status messages enum class.
Definition: pstsdk_c.h:68
EPstErrorStatus pst_tracker_init1(PstTracker *ctracker, const char path[])
This function initializes the tracker object.
Definition: pstsdk_c.h:53
EPstErrorStatus pst_tracker_remove_tracker_callbacks(PstTracker *ctracker, void(*on_tracker_data)(const PstTrackerData *, EPstErrorStatus), void(*on_tracker_mode)(EPstTrackerMode))
Remove callback functions for tracker data and mode changes.
size_t number_of_images
Definition: pstsdk_c.h:120
EPstErrorStatus pst_tracker_remove_tracker_mode_callback(PstTracker *ctracker, void(*on_tracker_mode)(EPstTrackerMode))
Remove a callback function for mode changes.
EPstErrorStatus pst_tracker_get_exposure_range(const PstTracker *ctracker, double *min, double *max)
Get the allowed exposure range.
unsigned char ** images
Definition: pstsdk_c.h:121
EPstErrorStatus pst_tracker_init4(PstTracker *ctracker, const char path[], const char config_file[], const char db_file[], const char grabber_name[])
This function initializes the tracker object.
void pst_sdk_disable_shared_memory()
Disable shared memory communication layer.
EPstErrorStatus pst_tracker_load_calibration_from_local_path(const PstTracker *ctracker, const char path[])
Load calibration information from a given path.
void pst_camera_urls_destroy(PstCameraURLs *urls)
EPstErrorStatus pst_tracker_set_reference(PstTracker *ctracker, const float creference[16], bool relative)
Set the reference system in which tracking results are reported.
Definition: pstsdk_c.h:57
bool status
Definition: pstsdk_c.h:153
EPstErrorStatus pst_tracker_disable_tremor_filter(PstTracker *ctracker)
Disable the tremor filter.
EPstErrorStatus pst_tracker_export_json_model(const PstTracker *ctracker, const char *model_name, char **model_string)
Export a tracking target model as a JSON-formatted string.
Definition: pstsdk_c.h:49
EPstErrorStatus pst_tracker_init(PstTracker *ctracker)
This function initializes the tracker object.
EPstErrorStatus pst_tracker_get_single_measurement(const PstTracker *ctracker, PstTrackerData *cdata)
Retrieve the latest PstTrackerData available from the connected PstTracker.
void pst_tracker_destroy(PstTracker *ctracker)
EPstErrorStatus pst_tracker_disable_filtering(PstTracker *ctracker)
Disable filtering of the tracking results.
PstPoint * matched_points
Definition: pstsdk_c.h:188
EPstErrorStatus pst_tracker_get_exposure(const PstTracker *ctracker, double *exposure)
Get the current exposure time.
EPstErrorStatus pst_tracker_get_target_status(const PstTracker *ctracker, const char *name, bool *status)
Get status of a single tracking Target.
Definition: pstsdk_c.h:96
EPstTrackerMode
Tracker mode enum class.
Definition: pstsdk_c.h:94
size_t number_of_points
Definition: pstsdk_c.h:236
Collection struct for PstTargetMarker.
Definition: pstsdk_c.h:212
Definition: pstsdk_c.h:73
void * tracker
Definition: pstsdk_c.h:249
EPstErrorStatus pst_tracker_remove_target_model(PstTracker *ctracker, const char *model_name)
Remove a tracking target model from the target model database.
EPstErrorStatus pst_tracker_get_target_info(const PstTracker *ctracker, const char *name, PstTarget *target)
Get basic tracking target information.
Definition: pstsdk_c.h:100
Definition: pstsdk_c.h:72
Estimated tracking target pose.
Definition: pstsdk_c.h:183
Definition: pstsdk_c.h:75
Definition: pstsdk_c.h:71
void pst_camera_urls_init(PstCameraURLs *urls)
Main PST SDK struct for tracker communication.
Definition: pstsdk_c.h:247
EPstErrorStatus pst_tracker_add_tracker_mode_callback(PstTracker *ctracker, void(*on_tracker_mode)(EPstTrackerMode))
Add a callback function for mode changes.
Definition: pstsdk_c.h:74
EPstErrorStatus pst_sdk_enable_shared_memory()
Enable shared memory communication layer.
size_t number_of_urls
Definition: pstsdk_c.h:263
PstTargetMarker * markers
Definition: pstsdk_c.h:214
EPstStatusMessage pst_tracker_system_check(const PstTracker *ctracker)
Check if the tracker is running correctly.
Definition: pstsdk_c.h:46
Definition: pstsdk_c.h:50
EPstErrorStatus pst_tracker_set_target_id(PstTracker *ctracker, const char *name, int id)
Set the id of the tracking target.
Definition: pstsdk_c.h:99
EPstErrorStatus pst_tracker_get_connected_camera_urls(const PstTracker *ctracker, bool silent, PstCameraURLs *urls)
Get URLs of the calibration information for the connected PST Tracker.
PstTarget target
Definition: pstsdk_c.h:152
Tracking information retrieved from tracker.
Definition: pstsdk_c.h:231
void pst_sdk_disable_rest_server()
Disable the REST server communication layer.
Definition: pstsdk_c.h:55
void pst_image_init(PstImage *image)
EPstErrorStatus pst_tracker_alloc_and_get_target_list(const PstTracker *ctracker, PstTargetStatus **statuses, size_t *number_of_statuses)
Get TargetStatuses object containing all tracking targets and their status.
Definition: pstsdk_c.h:45
void pst_image_destroy(PstImage *image)
Definition: pstsdk_c.h:77
Definition: pstsdk_c.h:101
size_t number_of_markers
Definition: pstsdk_c.h:215
void pst_sdk_shutdown()
Shutdown the tracking system, stopping tracking.
EPstErrorStatus pst_tracker_get_uncalibrated_camera_urls(const PstTracker *ctracker, bool silent, PstCameraURLs *urls)
Check if cameras of the connected PST Tracker are calibrated.
EPstErrorStatus pst_tracker_enable_image_transfer(PstTracker *ctracker)
Enable image transfer from the PST Tracker.
EPstErrorStatus pst_sdk_enable_rest_server(const char *server_address, const char *server_port, int event_stream_retry_timeout)
Enable a REST Server using the HTTP protocol on a local area network.
size_t height
Definition: pstsdk_c.h:119
double timestamp
Definition: pstsdk_c.h:233
size_t number_of_targets
Definition: pstsdk_c.h:235
Definition: pstsdk_c.h:102
EPstErrorStatus pst_tracker_alloc_and_get_config_path(const PstTracker *ctracker, char **config_path)
Get the path to the current configuration directory.
Definition: pstsdk_c.h:48
EPstErrorStatus pst_tracker_pause(PstTracker *ctracker)
Pause tracking.
void pst_sdk_enable_logging()
Write plug-in status information to the standard C output stream stderr.
EPstErrorStatus pst_tracker_disable_image_transfer(PstTracker *ctracker)
Disable image transfer from the PST Tracker.
void pst_trackerdata_init(PstTrackerData *cdata)
PstPoint * datapoints
Definition: pstsdk_c.h:238
Definition: pstsdk_c.h:51
Struct to request urls for calibration information.
Definition: pstsdk_c.h:260
EPstErrorStatus pst_tracker_get_target_markers(const PstTracker *ctracker, const char *name, PstTargetMarkers *marker_list)
Get 3D marker positions of stored tracking target.
EPstErrorStatus pst_tracker_enable_tremor_filter(PstTracker *ctracker)
Enable the tremor filter.
3D marker positions of a single marker of a tracking Target.
Definition: pstsdk_c.h:199
void pst_target_markers_destroy(PstTargetMarkers *marker_list)
Tracking target status.
Definition: pstsdk_c.h:150
EPstErrorStatus pst_tracker_set_exposure(PstTracker *ctracker, double time)
Set the exposure time.
Definition: pstsdk_c.h:98
char ** url_data
Definition: pstsdk_c.h:262
EPstErrorStatus pst_alloc_and_get_last_error_message(char **cstring)
This function returns the last error message that was recorded by the system.
EPstErrorStatus
Tracker error messages enum class.
Definition: pstsdk_c.h:43
EPstErrorStatus pst_tracker_alloc_and_get_version_info(const PstTracker *ctracker, char **version_string)
Get version information of the SDK.
EPstErrorStatus pst_tracker_alloc_and_get_supported_framerates(const PstTracker *ctracker, float **framerates, size_t *number_of_framerates)
Get an array of available frame rates.
PstTarget target
Definition: pstsdk_c.h:185
#define PST_C_EXPORT
Definition: pstsdk_c.h:11
EPstErrorStatus pst_tracker_init2(PstTracker *ctracker, const char path[], const char config_file[])
This function initializes the tracker object.
EPstErrorStatus pst_tracker_init3(PstTracker *ctracker, const char path[], const char config_file[], const char db_file[])
This function initializes the tracker object.
EPstErrorStatus pst_tracker_enable_filtering(PstTracker *ctracker)
Enable filtering of the tracking results.
EPstErrorStatus pst_tracker_set_default_reference(PstTracker *ctracker)
Reset the reference system to the default reference system.
int id
Definition: pstsdk_c.h:168
EPstErrorStatus pst_tracker_import_json_model(const PstTracker *ctracker, const char *json_model)
Import a tracking target model into the target model database.
void pst_trackerdata_destroy(PstTrackerData *cdata)
size_t number_of_matched_points
Definition: pstsdk_c.h:187
EPstErrorStatus pst_tracker_add_tracker_callbacks(PstTracker *ctracker, void(*on_tracker_data)(const PstTrackerData *, EPstErrorStatus), void(*on_tracker_mode)(EPstTrackerMode))
Add callback functions for tracker data and mode changes.
Definition: pstsdk_c.h:97
const char * pst_sdk_get_version()
Retrieve the SDK version string.
Tracking target information.
Definition: pstsdk_c.h:131
EPstErrorStatus pst_tracker_set_target_status(PstTracker *ctracker, const char *name, bool set_active)
Set status of a single tracking Target.
size_t width
Definition: pstsdk_c.h:118
int id
Definition: pstsdk_c.h:135
EPstErrorStatus pst_tracker_get_framerate(const PstTracker *ctracker, double *fps)
Get current frame rate.
Images retrieved from the tracker.
Definition: pstsdk_c.h:116
EPstErrorStatus pst_tracker_set_orientation_filter(PstTracker *ctracker, double value)
Set the strength of the orientation filter.
Definition: pstsdk_c.h:56
EPstErrorStatus pst_tracker_get_reference(const PstTracker *ctracker, float creference[16])
Gets the transformation matrix for the current reference system.
void pst_free(void *data)
Free data allocated by the PST SDK.
EPstErrorStatus pst_tracker_set_position_filter(PstTracker *ctracker, double value)
Set the strength of the position filter.
Definition: pstsdk_c.h:70
EPstErrorStatus pst_tracker_add_tracker_data_callback(PstTracker *ctracker, void(*on_tracker_data)(const PstTrackerData *, EPstErrorStatus))
Add a callback function for tracker data.
PstTargetPose * targetlist
Definition: pstsdk_c.h:237
Definition: pstsdk_c.h:81