aboutsummaryrefslogtreecommitdiff
path: root/bindings/cs/LibSurviveBinding/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/cs/LibSurviveBinding/Program.cs')
-rw-r--r--bindings/cs/LibSurviveBinding/Program.cs62
1 files changed, 62 insertions, 0 deletions
diff --git a/bindings/cs/LibSurviveBinding/Program.cs b/bindings/cs/LibSurviveBinding/Program.cs
new file mode 100644
index 0000000..b6d0d8f
--- /dev/null
+++ b/bindings/cs/LibSurviveBinding/Program.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace LibSurVive
+{
+ class Program
+ {
+ [DllImport("libsurvive", CallingConvention = CallingConvention.StdCall)]
+ static extern IntPtr survive_init_internal(int argc, string[] args);
+
+ public delegate void raw_pose_func(IntPtr so, byte lighthouse, IntPtr pose);
+ public delegate void lighthouse_pose_func(IntPtr ctx, byte lighthouse, IntPtr lighthouse_pose, IntPtr object_pose);
+ public delegate void light_process_func( IntPtr so, int sensor_id, int acode, int timeinsweep,
+ UInt32 timecode, UInt32 length, UInt32 lighthouse);
+
+ [DllImport("libsurvive", CallingConvention = CallingConvention.StdCall)]
+ static extern void survive_install_raw_pose_fn(IntPtr ctx, raw_pose_func fbp);
+ [DllImport("libsurvive", CallingConvention = CallingConvention.StdCall)]
+ static extern void survive_install_lighthouse_pose_fn(IntPtr ctx, lighthouse_pose_func fbp);
+
+ [DllImport("libsurvive", CallingConvention = CallingConvention.StdCall)]
+ static extern void survive_install_light_fn(IntPtr ctx, light_process_func fbp);
+
+ [DllImport("libsurvive", CallingConvention = CallingConvention.StdCall)]
+ static extern int survive_startup(IntPtr ctx);
+ [DllImport("libsurvive", CallingConvention = CallingConvention.StdCall)]
+ static extern void survive_cal_install(IntPtr ctx);
+
+ [DllImport("libsurvive", CallingConvention = CallingConvention.StdCall)]
+ static extern int survive_poll(IntPtr ctx);
+
+ static void Main(string[] args)
+ {
+ IntPtr context = survive_init_internal(args.Length, args);
+
+ survive_install_lighthouse_pose_fn(context, LighthousPos);
+ survive_install_raw_pose_fn(context, PositionUpdate);
+ survive_install_light_fn(context, LightUpdate);
+
+ survive_startup(context);
+ survive_cal_install(context);
+
+ while(survive_poll(context) == 0) {}
+
+ }
+
+ public static void LightUpdate( IntPtr so, int sensor_id, int acode, int timeinsweep,
+ UInt32 timecode, UInt32 length, UInt32 lighthouse) {
+ Console.WriteLine(timeinsweep);
+ }
+
+ public static void PositionUpdate(IntPtr so, byte lighthouse, IntPtr pose)
+ {
+ Console.WriteLine(pose);
+ }
+
+ public static void LighthousPos(IntPtr ctx, byte lighthouse, IntPtr lighthouse_pose, IntPtr object_pose)
+ {
+
+ }
+ }
+}