linuxtrack_sys/
lib.rs

1
2pub const STATUS_LINUXTRACK_OK: Status = 0;
3pub const STATUS_INITIALIZING: Status = 1;
4pub const STATUS_RUNNING: Status = 2;
5pub const STATUS_PAUSED: Status = 3;
6pub const STATUS_STOPPED: Status = 4;
7pub const STATUS_ERR_NOT_INITIALIZED: Status = -1;
8pub const STATUS_ERR_SYMBOL_LOOKUP: Status = -2;
9pub const STATUS_ERR_NO_CONFIG: Status = -3;
10pub const STATUS_ERR_NOT_FOUND: Status = -4;
11pub const STATUS_ERR_PROCESSING_FRAME: Status = -5;
12pub type Status = ::std::os::raw::c_int;
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct Pose {
17    pub pitch: f32,
18    pub yaw: f32,
19    pub roll: f32,
20    pub tx: f32,
21    pub ty: f32,
22    pub tz: f32,
23    pub counter: u32,
24    pub resolution_x: u32,
25    pub resolution_y: u32,
26    pub raw_pitch: f32,
27    pub raw_yaw: f32,
28    pub raw_roll: f32,
29    pub raw_tx: f32,
30    pub raw_ty: f32,
31    pub raw_tz: f32,
32    pub status: u8,
33}
34
35extern "C" {
36    pub fn linuxtrack_init(cust_section: *const ::std::os::raw::c_char) -> Status;
37    pub fn linuxtrack_shutdown() -> Status;
38    pub fn linuxtrack_suspend() -> Status;
39    pub fn linuxtrack_wakeup() -> Status;
40    pub fn linuxtrack_recenter() -> Status;
41    pub fn linuxtrack_explain(err: Status) -> *const ::std::os::raw::c_char;
42    pub fn linuxtrack_get_tracking_state() -> Status;
43    pub fn linuxtrack_get_pose(heading: *mut f32,
44                               pitch: *mut f32,
45                               roll: *mut f32,
46                               tx: *mut f32,
47                               ty: *mut f32,
48                               tz: *mut f32,
49                               counter: *mut u32)
50                               -> ::std::os::raw::c_int;
51    pub fn linuxtrack_get_pose_full(pose: *mut Pose,
52                                    blobs: *mut f32,
53                                    num_blobs: ::std::os::raw::c_int,
54                                    blobs_read: *mut ::std::os::raw::c_int)
55                                    -> ::std::os::raw::c_int;
56    pub fn linuxtrack_get_abs_pose(heading: *mut f32,
57                                   pitch: *mut f32,
58                                   roll: *mut f32,
59                                   tx: *mut f32,
60                                   ty: *mut f32,
61                                   tz: *mut f32,
62                                   counter: *mut u32)
63                                   -> ::std::os::raw::c_int;
64    pub fn linuxtrack_request_frames() -> Status;
65    pub fn linuxtrack_get_frame(req_width: *mut ::std::os::raw::c_int,
66                                req_height: *mut ::std::os::raw::c_int,
67                                buf_size: usize,
68                                buffer: *mut u8)
69                                -> ::std::os::raw::c_int;
70    pub fn linuxtrack_notification_on() -> Status;
71    pub fn linuxtrack_get_notify_pipe() -> ::std::os::raw::c_int;
72
73    /// timeout is in milliseconds. Result of 0 is timeout, 1 is success, -1 is problem
74    pub fn linuxtrack_wait(timeout: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
75}