using System; using TrackerBridge; namespace GazeWebSocketServer { public class Program { private static GazeServer gazeServer; public static void Main(string[] args) { ConfigurationData.InitializeUnexistingWithDefaults(); ConfigurationData config = ConfigurationData.ParseToObject(); IBridgeTracker tracker; if (args.Length > 0 && args[0] == "-d") { tracker = new FakeTracker(600); tracker.GazeDataAvailable += OnGazeDataAvailable; //TODO: Extend interface usage //tracker.GazeDataProcessor.OutputFrequency = config.OutputFrequency; } else { TobiiEyeTracker tobiiEyeTracker = new TobiiEyeTracker(config.TrackerSerialNumber); tobiiEyeTracker.ConnectionEvent += OnConnectionEstablished; tobiiEyeTracker.ConnectionTimeout += OnConnectionTimeout; tobiiEyeTracker.GazeDataAvailable += OnGazeDataAvailable; tobiiEyeTracker.Connect(); } gazeServer = new GazeServer(config.WebSocketPort, config.WebSocketEndpoint); gazeServer.Start(); Console.ReadLine(); } private static void OnGazeDataAvailable(GazeData data, Object sender) { if (gazeServer != null && gazeServer.isRunning) { gazeServer.Publish(data); } } private static void OnConnectionTimeout(IBridgeTracker sender) { Console.WriteLine("Timeout while searching for trackers."); } private static void OnConnectionEstablished(IBridgeTracker sender) { Console.WriteLine($"Tracker {sender.SerialNumber} connected."); ConfigurationData config = ConfigurationData.ParseToObject(); sender.SetTrackingFrequency(config.TrackerFrequency); } } }