Thanks for the answer @Corvus.
Here's a code snippet, really basic. Note that I also checked without writing to the csv file in the callback method. Instead, I simply increased a counter in the callback method and logged the time at every 120th call.
using System.Collections;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.XR;
using System;
using System.IO;
using ViveSR.anipal.Eye;
using ViveSR.anipal;
using ViveSR;
using Helpers;
public class TestTracker : MonoBehaviour
{
private static EyeMeasureDataWriter _eyeMeasureDataWriter;
private static string _eyeMeasureDataFilename;
/// <summary>
/// Scene start: called once scene is loaded
/// </summary>
void Start()
{
// create the necessary stream writer instances for measure data & meta data
_eyeMeasureDataFilename = DateTime.Now.ToString("yyyyMMdd_HHmm") + _suffixMeasureData + ".csv";
_eyeMeasureDataWriter = new EyeMeasureDataWriter(_eyeMeasureDataFilename);
SRanipal_Eye_v2.WrapperRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye_v2.CallbackBasic)eyeCallback));
}
/// <summary>
/// Cleanup data writer and SRanipal.
/// </summary>
void OnApplicationQuit()
{
_eyeMeasureDataWriter.Close();
_eyeMetaDataWriter.Close();
SRanipal_Eye_v2.WrapperUnRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye_v2.CallbackBasic)eyeCallback));
}
/// <summary>
/// Callback for SRanipal eye tracking data
/// </summary>
/// <param name="eyeData">The SRanipal eye tracking data</param>
private static void eyeCallback(ref EyeData_v2 eyeData)
{
EyeParameter eyeParameter = new EyeParameter();
SRanipal_Eye_API.GetEyeParameter(ref eyeParameter);
// append the new data to the csv file
_eyeMeasureDataWriter.AppendRow(DateTime.Now, TargetDot, TargetEye, eyeData, eyeParameter);
}
}