Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 private static void SubScribeToHomeObjectEvents()
 {
     using (homeObjectSubscriptionLock.Lock())
     {
         if (_asyncEventSubscription == null)
         {
             _asyncEventSubscription = HomeObject
                                       .SubscribeAsync("SendAsyncEventsToAlexa", "NoController", EnableAsyncPropertyChanged).GetAwaiter().GetResult();
         }
     }
 }
Пример #4
0
        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);
        }