You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
7.8 KiB
C#
205 lines
7.8 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
// ReSharper disable MemberCanBePrivate.Global
|
|
// ReSharper disable FieldCanBeMadeReadOnly.Global
|
|
|
|
namespace Tobii.StreamEngine.Simcontrol
|
|
{
|
|
|
|
public enum simcontrol_error_t
|
|
{
|
|
NoError,
|
|
Internal,
|
|
NotAvailable,
|
|
InvalidParameter,
|
|
AllocationFailed,
|
|
ConnectionFailed,
|
|
NotSupported,
|
|
BufferTooSmall,
|
|
OperationFailed,
|
|
FirmwareNoResponse,
|
|
BadState,
|
|
TooManySubscribers,
|
|
UnexpectedTransactionId,
|
|
UnexpectedMessageType,
|
|
Protocol,
|
|
Unknown,
|
|
AlreadySubscribed,
|
|
NotSubscribed,
|
|
InsufficientLicense,
|
|
TimedOut,
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct point2d
|
|
{
|
|
public float x;
|
|
public float y;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct point3d
|
|
{
|
|
public float x;
|
|
public float y;
|
|
public float z;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct simcontrol_point2d_t
|
|
{
|
|
public point2d left_eye_xy;
|
|
public point2d right_eye_xy;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct simcontrol_point3d_t
|
|
{
|
|
public point3d left_eye_xyz;
|
|
public point3d right_eye_xyz;
|
|
}
|
|
|
|
public enum simcontrol_presence_t
|
|
{
|
|
Unknow,
|
|
NotPresent,
|
|
Present,
|
|
}
|
|
|
|
public enum simcontrol_validity_t
|
|
{
|
|
Invalid,
|
|
Valid,
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct simcontrol_eye_validity_t
|
|
{
|
|
public simcontrol_validity_t left;
|
|
public simcontrol_validity_t right;
|
|
}
|
|
|
|
public enum simcontrol_notification_type_t
|
|
{
|
|
SIMCONTROL_NOTIFICATION_TYPE_CALIBRATION_STATE_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_EXCLUSIVE_MODE_STATE_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_TRACK_BOX_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_DISPLAY_AREA_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_FRAMERATE_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_POWER_SAVE_STATE_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_DEVICE_PAUSED_STATE_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_CALIBRATION_ENABLED_EYE_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_CALIBRATION_ID_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_COMBINED_GAZE_EYE_SELECTION_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_FAULTS_CHANGED,
|
|
SIMCONTROL_NOTIFICATION_TYPE_WARNINGS_CHANGED,
|
|
}
|
|
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct simcontrol_display_area_t
|
|
{
|
|
public point3d top_left_mm_xyz;
|
|
public point3d top_right_mm_xyz;
|
|
public point3d bottom_left_mm_xyz;
|
|
}
|
|
|
|
public enum simcontrol_enabled_eye_t
|
|
{
|
|
SIMCONTROL_ENABLED_EYE_LEFT,
|
|
SIMCONTROL_ENABLED_EYE_RIGHT,
|
|
SIMCONTROL_ENABLED_EYE_BOTH,
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct simcontrol_notification_data_t
|
|
{
|
|
public float float_;
|
|
public string string_;
|
|
public bool state;
|
|
public uint uint_;
|
|
public simcontrol_display_area_t display_area;
|
|
public simcontrol_enabled_eye_t enabled_eye;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct simcontrol_notification_t
|
|
{
|
|
public simcontrol_notification_type_t notification_type;
|
|
public simcontrol_notification_data_t data;
|
|
}
|
|
|
|
public static class Interop
|
|
{
|
|
private const string SimcontrolDll = "simcontrol";
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_context_create_with_license(out IntPtr context, string url, string license_file_path);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_context_destroy(IntPtr context);
|
|
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_gaze_point(IntPtr context, ref simcontrol_point2d_t gaze_point);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_gaze_origin(IntPtr context, ref simcontrol_point3d_t gaze_origin);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_gaze_origin_mm(IntPtr context, ref simcontrol_point3d_t gaze_origin_mm);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_center_of_eye_mm(IntPtr context, ref simcontrol_point3d_t center_of_eye);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_gaze_point_cloud_radius(IntPtr context, float radius);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_eye_tracked(IntPtr context, simcontrol_eye_validity_t eye_tracked);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_eye_detected(IntPtr context, simcontrol_eye_validity_t eye_detected);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_presence_state(IntPtr context, simcontrol_presence_t presence_state);
|
|
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_tracking_activate(IntPtr context);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_tracking_deactivate(IntPtr context);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_presence_activate(IntPtr context);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_presence_deactivate(IntPtr context);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_gaze_point_cloud_activate(IntPtr context);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_gaze_point_cloud_deactivate(IntPtr context);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_gaze_direction(IntPtr context, ref simcontrol_point3d_t gaze_direction);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_eyeopenness_validity(IntPtr context, simcontrol_eye_validity_t eyeopenness_validity);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_eyeopenness(IntPtr context, float eyeopenness);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_pupildiameter_validity(IntPtr context, simcontrol_eye_validity_t pupildiameter_validity);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_set_pupildiameter(IntPtr context, float pupildiameter);
|
|
|
|
[DllImport(SimcontrolDll, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern simcontrol_error_t simcontrol_trigger_notification(IntPtr context, ref simcontrol_notification_t notification);
|
|
}
|
|
} |