Enpose API — C
Enpose 6-DoF tracking API
Loading...
Searching...
No Matches
enpose_api.h
1
19#pragma once
20
21#include <stddef.h>
22#include <stdint.h>
23#include <stdbool.h>
24
30#ifdef __cplusplus
31extern "C" {
32#endif
33
41
43typedef struct EnposeDeviceInfo {
44 char ip[46];
45 uint32_t serial;
48
55typedef struct EnposeMarkerPose {
56 uint64_t timestamp;
57 uint16_t marker_id;
58 double x;
59 double y;
60 double z;
61 double rotation[9];
64 uint8_t sensors;
66
69
78EnposeStatus enpose_discover(EnposeDeviceInfo **out_devices, size_t *out_count);
79
82
92EnposePoseStream *enpose_pose_stream_connect(const char *ip, bool create_thread);
93
105 bool block,
106 EnposeMarkerPose **out_poses,
107 size_t *out_count);
108
111
114
115#ifdef __cplusplus
116} /* extern "C" */
117#endif
/* enpose_c_api */
EnposeStatus enpose_discover(EnposeDeviceInfo **out_devices, size_t *out_count)
Discover Enpose devices on the local network.
void enpose_pose_stream_free(EnposePoseStream *stream)
Disconnect and free a pose stream handle.
EnposePoseStream * enpose_pose_stream_connect(const char *ip, bool create_thread)
Connect a pose stream to the device at ip (an IPv4 string).
void enpose_marker_pose_array_free(EnposeMarkerPose *poses, size_t count)
Release an array returned by enpose_pose_stream_receive().
EnposeStatus enpose_pose_stream_receive(EnposePoseStream *stream, bool block, EnposeMarkerPose **out_poses, size_t *out_count)
Return the poses received from the stream.
EnposeStatus
Result code returned by the fallible functions.
Definition enpose_api.h:35
struct EnposePoseStream EnposePoseStream
Opaque handle to a live pose stream.
Definition enpose_api.h:68
void enpose_device_info_array_free(EnposeDeviceInfo *devices, size_t count)
Release an array returned by enpose_discover().
@ ENPOSE_ERR_PANIC
Internal error; the call was aborted cleanly.
Definition enpose_api.h:39
@ ENPOSE_OK
The call succeeded.
Definition enpose_api.h:36
@ ENPOSE_ERR_IO
An I/O error occurred (e.g.
Definition enpose_api.h:38
@ ENPOSE_ERR_INVALID_ARG
A required argument was null/invalid.
Definition enpose_api.h:37
C view of one discovered device.
Definition enpose_api.h:43
char ip[46]
Null-terminated IPv4 address string.
Definition enpose_api.h:44
uint32_t serial
Factory serial number.
Definition enpose_api.h:45
bool compatible
True if the device's protocol version matches.
Definition enpose_api.h:46
Pose of one tracked marker in world coordinates.
Definition enpose_api.h:55
double rotation[9]
Row-major 3x3 rotation, model frame to world.
Definition enpose_api.h:61
uint64_t timestamp
Microseconds since the device started.
Definition enpose_api.h:56
uint16_t marker_id
Marker identifier.
Definition enpose_api.h:57
double z
Definition enpose_api.h:60
uint8_t sensors
Number of sensors that contributed.
Definition enpose_api.h:64
double x
World position in meters (first model emitter).
Definition enpose_api.h:58
double position_rmse
RMS position error, in meters (units of x/y/z).
Definition enpose_api.h:62
double rotation_rmse
RMS rotation error (radians, axis-angle magnitude).
Definition enpose_api.h:63
double y
Definition enpose_api.h:59