private static Antilatency.DeviceNetwork.NodeHandle WaitForCompatibleNode(
        Antilatency.Alt.Tracking.ITrackingCotaskConstructor cotaskConstructor,
        Antilatency.DeviceNetwork.INetwork network)
    {
        uint prevUpdateId = 0;

        while (true)
        {
            uint updateId = network.getUpdateId();
            if (updateId == prevUpdateId)
            {
                Thread.Yield();
                continue;
            }

            Console.WriteLine($"Network ID changed: {prevUpdateId} -> {updateId}");

            var node = cotaskConstructor
                       .findSupportedNodes(network)
                       .FirstOrDefault(
                n => network.nodeGetStatus(n) ==
                Antilatency.DeviceNetwork.NodeStatus.Idle);

            if (node != Antilatency.DeviceNetwork.NodeHandle.Null)
            {
                return(node);
            }

            prevUpdateId = updateId;
        }
    }
Exemple #2
0
            public Antilatency.RadioMetrics.ICotask startTask(Antilatency.DeviceNetwork.INetwork network, Antilatency.DeviceNetwork.NodeHandle node)
            {
                Antilatency.RadioMetrics.ICotask result;
                System.IntPtr resultMarshaler;
                var           networkMarshaler = Antilatency.InterfaceContract.Details.InterfaceMarshaler.ManagedToNative <Antilatency.DeviceNetwork.INetwork>(network);

                HandleExceptionCode(_VMT.startTask(_object, networkMarshaler, node, out resultMarshaler));
                result = (resultMarshaler == System.IntPtr.Zero) ? null : new Antilatency.RadioMetrics.Details.ICotaskWrapper(resultMarshaler);
                return(result);
            }
Exemple #3
0
            public Antilatency.Alt.Tracking.ITrackingCotask startTask(Antilatency.DeviceNetwork.INetwork network, Antilatency.DeviceNetwork.NodeHandle node, Antilatency.Alt.Tracking.IEnvironment environment)
            {
                Antilatency.Alt.Tracking.ITrackingCotask result;
                System.IntPtr resultMarshaler;
                var           networkMarshaler     = Antilatency.InterfaceContract.Details.InterfaceMarshaler.ManagedToNative <Antilatency.DeviceNetwork.INetwork>(network);
                var           environmentMarshaler = Antilatency.InterfaceContract.Details.InterfaceMarshaler.ManagedToNative <Antilatency.Alt.Tracking.IEnvironment>(environment);

                HandleExceptionCode(_VMT.startTask(_object, networkMarshaler, node, environmentMarshaler, out resultMarshaler));
                result = (resultMarshaler == System.IntPtr.Zero) ? null : new Antilatency.Alt.Tracking.Details.ITrackingCotaskWrapper(resultMarshaler);
                return(result);
            }