Exemple #1
0
        public static async Task <Device> PowerOnAsync(string liveId, int times = 5, int delay = 1000,
                                                       string addressOrHostname = null)
        {
            using (var messageTransport = new MessageTransport(addressOrHostname))
            {
                var poweronRequestMessage = new PowerOnMessage {
                    LiveId = liveId
                };

                for (var i = 0; i < times; i++)
                {
                    await messageTransport.SendAsync(poweronRequestMessage);

                    await Task.Delay(delay);
                }

                var presenceRequestMessage = new PresenceRequestMessage();

                var response = await TaskExtensions.WithRetries(() =>
                                                                messageTransport.WaitForMessageAsync <PresenceResponseMessage>(pingTimeout,
                                                                                                                               () => messageTransport.SendAsync(presenceRequestMessage).GetAwaiter().GetResult()),
                                                                pingRetries);

                return(new Device(response));
            }
        }
Exemple #2
0
        public static async Task <Device> PingAsync(string addressOrHostname)
        {
            using (var messageTransport = new MessageTransport(addressOrHostname))
            {
                var requestMessage = new PresenceRequestMessage();

                var response = await TaskExtensions.WithRetries(() =>
                                                                messageTransport.WaitForMessageAsync <PresenceResponseMessage>(pingTimeout,
                                                                                                                               () => messageTransport.SendAsync(requestMessage).Wait()),
                                                                pingRetries);

                return(new Device(response));
            }
        }
Exemple #3
0
        public static Task <IEnumerable <Device> > DiscoverAsync()
        {
            return(Task.Run(() =>
            {
                using (var messageTransport = new MessageTransport())
                {
                    var requestMessage = new PresenceRequestMessage();

                    return messageTransport.ReadMessages(discoveryListenTime,
                                                         () => messageTransport.SendAsync(requestMessage).Wait())
                    .OfType <PresenceResponseMessage>()
                    .DistinctBy(m => m.HardwareId)
                    .Select(m => new Device(m)).ToArray().AsEnumerable();
                }
            }));
        }