void UnsubscribeToEventByType(LightingLoad theLoad, Type eventType)
        {
            List <SubscribedEvent> list;

            if (loadEvents.TryGetValue(theLoad, out list))
            {
                //list = new List<SubscribedEvent>();
                //  mydict.Add(theLoad, list);


                // list.Remove(loadEvent);

                var map = MessageHub.Instance;
                foreach (SubscribedEvent subEvent in list.Where(x => x.eventType == eventType))
                {
                    map.Unsubscribe(subEvent.token);
                }

                var countRemoved = list.RemoveAll(x => x.eventType == eventType);


                if (list.Count > 0)
                {
                    loadEvents[theLoad] = list;
                }
                else
                {
                    loadEvents.Remove(theLoad);
                }
            }
        }
 public void AddLoadsFromCrestronDevice(int LoadID, Switch _switch)
 {
     foreach (LightLoad load in _switch.SwitchedLoads)
     {
         LightingLoad newLoad = new LightingLoad(LoadID, load, _switch.Description);
         this._loads.Add(newLoad);
     }
 }
 public void AddLoadsFromCrestronDevice(int LoadID, Dimmer _dimmer)
 {
     foreach (LightLoad load in _dimmer.DimmingLoads)
     {
         LightingLoad newLoad = new LightingLoad(LoadID, load, _dimmer.Description);
         this._loads.Add(newLoad);
     }
 }
        void UnsubscribeToEvents(LightingLoad theLoad)
        {
            List <SubscribedEvent> list;

            if (loadEvents.TryGetValue(theLoad, out list))
            {
                if (list != null)
                {
                    for (int i = list.Count - 1; i >= 0; i--)
                    {
                        var type = list[i].eventType;
                        UnsubscribeToEventByType(theLoad, type);

                        //Reset if we remove more than 1
                        if (i > list.Count)
                        {
                            i = list.Count;
                        }
                    }
                }
            }
        }
예제 #5
0
 public LoadLowerEvent(LightingLoad load)
     : base(load)
 {
 }
 public LoadRaiseEvent(LightingLoad load)
     : base(load)
 {
 }
 public void AddLoad(LightingLoad _load)
 {
     this._loads.Add(_load);
 }
        public void AddLoadsFromCrestronLoad(int LoadID, string name, LightLoad load)
        {
            LightingLoad newLoad = new LightingLoad(LoadID, load, name);

            this._loads.Add(newLoad);
        }
 public LoadOnEvent(LightingLoad load)
     : base(load)
 {
 }
예제 #10
0
 public LoadEvent(LightingLoad load)
 {
     _load = load;
 }
 public LoadRampToLevelEvent(LightingLoad load)
     : base(load)
 {
 }
        //public bool IsOn;


        public LoadIsOffEvent(LightingLoad load)
            : base(load)
        {
        }
        public SubscribedEvent SubscribeToEvent(LightingLoad theLoad, Type eventType)
        {
            var map = MessageHub.Instance;

            SubscribedEvent sEvent = new SubscribedEvent();

            List <SubscribedEvent> sEvents;

            if (!loadEvents.TryGetValue(theLoad, out sEvents))
            {
                sEvents = new List <SubscribedEvent>();
                loadEvents.Add(theLoad, sEvents);
            }

            if (!sEvents.Any(x => x.eventType == eventType))
            {
                if (eventType == typeof(LoadLevelEvent))
                {
                    Action <LoadLevelEvent> loadEvent = null;
                    loadEvent = new Action <LoadLevelEvent>(x => this.ProcessLoadLevelEvent(x));
                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadLevelEvent);
                }
                else if (eventType == typeof(LoadIsOnEvent))
                {
                    Action <LoadIsOnEvent> loadEvent = null;
                    loadEvent = new Action <LoadIsOnEvent>(x => this.ProcessLoadIsOnEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadIsOnEvent);
                }
                else if (eventType == typeof(LoadIsOffEvent))
                {
                    Action <LoadIsOffEvent> loadEvent = null;
                    loadEvent = new Action <LoadIsOffEvent>(x => this.ProcessLoadIsOffEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadIsOffEvent);
                }
                else if (eventType == typeof(LoadOnEvent))
                {
                    Action <LoadOnEvent> loadEvent = null;
                    loadEvent = new Action <LoadOnEvent>(x => this.ProcessLoadOnEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadOnEvent);
                }
                else if (eventType == typeof(LoadOffEvent))
                {
                    Action <LoadOffEvent> loadEvent = null;
                    loadEvent = new Action <LoadOffEvent>(x => this.ProcessLoadOffEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadOffEvent);
                }
                else if (eventType == typeof(LoadRaiseEvent))
                {
                    Action <LoadRaiseEvent> loadEvent = null;
                    loadEvent = new Action <LoadRaiseEvent>(x => this.ProcessLoadRaiseEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadRaiseEvent);
                }
                else if (eventType == typeof(LoadLowerEvent))
                {
                    Action <LoadLowerEvent> loadEvent = null;
                    loadEvent = new Action <LoadLowerEvent>(x => this.ProcessLoadLowerEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadLowerEvent);
                }
                else if (eventType == typeof(LoadRampToLevelEvent))
                {
                    Action <LoadRampToLevelEvent> levelSetEvent = null;
                    levelSetEvent = new Action <LoadRampToLevelEvent>(x => this.ProcessLoadRampToLevelEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(levelSetEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadRampToLevelEvent);
                }
                else
                {
                    throw new Exception("Event Type not found");
                }

                sEvents.Add(sEvent);
            }
            else
            {
                CrestronConsole.PrintLine("EventType: " + eventType + " already subscribed for LoadID: " + theLoad.LoadID);
            }

            return(sEvent);
        }
예제 #14
0
        private static uint _rampTime = 10; //1 Second Ramp

        public LoadState(ushort level, LightingLoad load)
        {
            this._savedLevel = level;
            this._load       = load;
        }