Program.cs 1.94 KB
Newer Older
1
using System;
2
using TrackerBridge;
3 4 5 6 7

namespace GazeWebSocketServer
{
    public class Program
    {
8
        private static GazeServer gazeServer;
9

10 11
        public static void Main(string[] args)
        {
12 13 14
            ConfigurationData.InitializeUnexistingWithDefaults();
            ConfigurationData config = ConfigurationData.ParseToObject();

15
            IBridgeTracker tracker;
16
            if (args.Length > 0 && args[0] == "-d")
17
            {
18 19 20
                tracker = new FakeTracker(600);
                tracker.GazeDataAvailable += OnGazeDataAvailable; //TODO: Extend interface usage
                //tracker.GazeDataProcessor.OutputFrequency = config.OutputFrequency;
21 22 23 24 25 26 27 28 29
            }
            else
            {
                TobiiEyeTracker tobiiEyeTracker = new TobiiEyeTracker(config.TrackerSerialNumber);
                tobiiEyeTracker.ConnectionEvent += OnConnectionEstablished;
                tobiiEyeTracker.ConnectionTimeout += OnConnectionTimeout;
                tobiiEyeTracker.GazeDataAvailable += OnGazeDataAvailable;
                tobiiEyeTracker.Connect();
            }
30 31 32 33 34 35

            gazeServer = new GazeServer(config.WebSocketPort, config.WebSocketEndpoint);
            gazeServer.Start();
            Console.ReadLine();
        }

36
        
37

38
        private static void OnGazeDataAvailable(GazeData data, Object sender)
39
        {
40 41 42 43
            if (gazeServer != null && gazeServer.isRunning)
            {
                gazeServer.Publish(data);
            }
44 45
        }

46
        private static void OnConnectionTimeout(IBridgeTracker sender)
47 48 49 50
        {
            Console.WriteLine("Timeout while searching for trackers.");
        }

51
        private static void OnConnectionEstablished(IBridgeTracker sender)
52
        {
53
            Console.WriteLine($"Tracker {sender.SerialNumber} connected.");
54 55
            ConfigurationData config = ConfigurationData.ParseToObject();
            sender.SetTrackingFrequency(config.TrackerFrequency);
56 57 58
        }
    }
}