aboutsummaryrefslogtreecommitdiff
path: root/bindings/cs/libsurvive.net/cfunctions.cs
blob: f9d88f036ca57e230ecf8d3ff601fa5653056af8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;

namespace libsurvive
{
    using SurviveContextPtr = IntPtr;
    using SurviveObjectPtr = IntPtr;
    using SurvivePosePtr = IntPtr;

    [StructLayout(LayoutKind.Sequential)]
    public struct SurvivePose
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]        
        public double[] Pos; // Position in the form xyz
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public double[] Rot; // Quaternion in the form wxyz
    }

    class cfunctions
    {
        
#pragma warning disable IDE1006 // Naming Styles
        [DllImport("libsurvive")]
        public static extern SurviveContextPtr survive_init_internal(int argc, string[] args);
        [DllImport("libsurvive")]
        public static extern SurviveContextPtr survive_close(SurviveContextPtr ctx);
        [DllImport("libsurvive")]
        public static extern int survive_poll(SurviveContextPtr ctx);
        [DllImport("libsurvive")]
        public static extern int survive_startup(SurviveContextPtr ctx);

        [DllImport("libsurvive")]
        public static extern void survive_install_htc_config_fn(SurviveContextPtr ctx, htc_config_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_info_fn(SurviveContextPtr ctx, text_feedback_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_error_fn(SurviveContextPtr ctx, text_feedback_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_imu_fn(SurviveContextPtr ctx, imu_process_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_angle_fn(SurviveContextPtr ctx, angle_process_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_button_fn(SurviveContextPtr ctx, button_process_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_raw_pose_fn(SurviveContextPtr ctx, raw_pose_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_lighthouse_pose_fn(SurviveContextPtr ctx, lighthouse_pose_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_install_light_fn(SurviveContextPtr ctx, light_process_func fbp);
        [DllImport("libsurvive")]
        public static extern void survive_cal_install(SurviveContextPtr ctx);

        [DllImport("libsurvive")]
        public static extern void survive_default_light_process(SurviveObjectPtr so, int sensor_id, int acode, int timeinsweep, UInt32 timecode, UInt32 length, UInt32 lh);
        [DllImport("libsurvive")]
        public static extern void survive_default_imu_process(SurviveObjectPtr so, int mode, double[] accelgyro, UInt32 timecode, int id);
        [DllImport("libsurvive")]
        public static extern void survive_default_angle_process(SurviveObjectPtr so, int sensor_id, int acode, UInt32 timecode, double length, double angle, UInt32 lh);
        [DllImport("libsurvive")]
        public static extern void survive_default_button_process(SurviveObjectPtr so, byte eventType, byte buttonId, byte axis1Id, UInt16 axis1Val, byte axis2Id, UInt16 axis2Val);
        [DllImport("libsurvive")]
        public static extern void survive_default_raw_pose_process(SurviveObjectPtr so, byte lighthouse, ref SurvivePose pose);
        [DllImport("libsurvive")]
        public static extern void survive_default_lighthouse_pose_process(SurviveContextPtr ctx, byte lighthouse, ref SurvivePose lh_pose,
                                                     ref SurvivePose obj_pose);
        [DllImport("libsurvive")]
        public static extern int survive_default_htc_config_process(SurviveObjectPtr so, string ct0conf, int len);

#pragma warning restore IDE1006 // Naming Styles
    }

    public delegate int htc_config_func(SurviveObjectPtr so, string ct0conf, int len);
    public delegate void text_feedback_func(SurviveContextPtr ctx, string fault);
    public delegate void light_process_func(SurviveObjectPtr so, int sensor_id, int acode, int timeinsweep, UInt32 timecode, UInt32 length, UInt32 lighthouse);
    public delegate void imu_process_func(SurviveObjectPtr so, int mask, double[] accelgyro, UInt32 timecode, int id);
    public delegate void angle_process_func(SurviveObjectPtr so, int sensor_id, int acode, UInt32 timecode, double length, double angle, UInt32 lh);
    public delegate void button_process_func(SurviveObjectPtr so, byte eventType, byte buttonId, byte axis1Id, UInt16 axis1Val, byte axis2Id, UInt16 axis2Val);
    public delegate void raw_pose_func(SurviveObjectPtr so, byte lighthouse, ref SurvivePose pose);
    public delegate void lighthouse_pose_func(SurviveContextPtr ctx, byte lighthouse, ref SurvivePose lighthouse_pose,
                                   ref SurvivePose object_pose);

}