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; } } } } }
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) { }
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); }
private static uint _rampTime = 10; //1 Second Ramp public LoadState(ushort level, LightingLoad load) { this._savedLevel = level; this._load = load; }