public Dictionary <string, IPremiseSubscription> SubscribeToSupportedProperties(IPremiseObject endpoint, DiscoveryEndpoint discoveryEndpoint, Action <dynamic> callback) { Dictionary <string, IPremiseSubscription> subscriptions = new Dictionary <string, IPremiseSubscription>(); foreach (Capability capability in discoveryEndpoint.capabilities) { IPremiseSubscription subscription = null; if (capability.HasProperties() == false) { continue; } if (capability.properties.proactivelyReported) { switch (capability.@interface) { case "Alexa.EndpointHealth": subscription = endpoint.SubscribeAsync("IsReachable", GetType().AssemblyQualifiedName, callback).GetAwaiter().GetResult(); break; } } if (subscription != null) { subscriptions.Add(discoveryEndpoint.endpointId + "." + capability.@interface, subscription); } } return(subscriptions); }
public Dictionary <string, IPremiseSubscription> SubscribeToSupportedProperties(IPremiseObject endpoint, DiscoveryEndpoint discoveryEndpoint, Action <dynamic> callback) { Dictionary <string, IPremiseSubscription> subscriptions = new Dictionary <string, IPremiseSubscription>(); foreach (Capability capability in discoveryEndpoint.capabilities) { if (capability.HasProperties() == false) { continue; } if (!capability.properties.proactivelyReported) { continue; } IAlexaController controller = null; switch (capability.@interface) { case "Alexa.ChannelController": controller = new AlexaChannelController(); break; case "Alexa.InputController": controller = new AlexaInputController(); break; case "Alexa.PlaybackController": controller = new AlexaPlaybackController(); break; case "Alexa.Speaker": controller = new AlexaSpeaker(); break; } if (controller == null) { continue; } foreach (string premiseProperty in controller.GetPremiseProperties()) { string index = discoveryEndpoint.endpointId + $".{premiseProperty}." + capability.@interface; if (subscriptions.ContainsKey(index)) { continue; } IPremiseSubscription subscription = endpoint.SubscribeAsync(premiseProperty, GetType().AssemblyQualifiedName, callback).GetAwaiter().GetResult(); if (subscription != null) { subscriptions.Add(index, subscription); } } } return(subscriptions); }
private static void SubScribeToHomeObjectEvents() { using (homeObjectSubscriptionLock.Lock()) { if (_asyncEventSubscription == null) { _asyncEventSubscription = HomeObject .SubscribeAsync("SendAsyncEventsToAlexa", "NoController", EnableAsyncPropertyChanged).GetAwaiter().GetResult(); } } }
public Dictionary <string, IPremiseSubscription> SubscribeToSupportedProperties(IPremiseObject endpoint, DiscoveryEndpoint discoveryEndpoint, Action <dynamic> callback) { Dictionary <string, IPremiseSubscription> subscriptions = new Dictionary <string, IPremiseSubscription>(); foreach (Capability capability in discoveryEndpoint.capabilities) { IPremiseSubscription subscription = null; if (!capability.HasProperties()) // scenes are a special cased { switch (capability.@interface) { case "Alexa.SceneController": subscription = endpoint.SubscribeAsync("PowerState", GetType().AssemblyQualifiedName, callback).GetAwaiter().GetResult(); break; } } if (subscription != null) { subscriptions.Add(discoveryEndpoint.endpointId + "." + capability.@interface, subscription); } } return(subscriptions); }