/// <summary>
        /// Register all events and add subscribers
        /// Needs to be called from state machine, because the state machine instance is required
        /// </summary>
        /// <param name="telephoneStateMachine"></param>
        /// <param name="telephoneActivities"></param>
        internal void DoEventMappings(TelephoneStateMachine telephoneStateMachine, TelephoneActivities telephoneActivities)
        {
            // Register all events
            #region Register events
            // Events implemented for use case
            this.TelephoneEventManager.RegisterEvent("TelephoneUiEvent", telephoneActivities);
            this.TelephoneEventManager.RegisterEvent("TelephoneDeviceEvent", telephoneActivities);

            // Framework/Infrastructure event
            this.TelephoneEventManager.RegisterEvent("StateMachineEvent", telephoneStateMachine);
            this.TelephoneEventManager.RegisterEvent("UINotification", this.TelephoneViewManager);
            this.TelephoneEventManager.RegisterEvent("DeviceManagerNotification", this.TelephoneDeviceManager);
            this.TelephoneEventManager.RegisterEvent("EventManagerEvent", this.TelephoneEventManager);
            this.TelephoneEventManager.RegisterEvent("ViewManagerEvent", this.TelephoneViewManager);
            this.TelephoneEventManager.RegisterEvent("DeviceManagerEvent", this.TelephoneDeviceManager);


            #endregion

            #region event mappings

            // logging
            this.TelephoneEventManager.SubscribeEvent("StateMachineEvent", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("UINotification", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("DeviceManagerNotification", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("EventManagerEvent", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("ViewManagerEvent", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("DeviceManagerEvent", "LogEventHandler", this.TelephoneLogManager);

            // Notifications/Triggers
            this.TelephoneEventManager.SubscribeEvent("UINotification", "InternalNotificationHandler", telephoneStateMachine);
            this.TelephoneEventManager.SubscribeEvent("DeviceManagerNotification", "InternalNotificationHandler", telephoneStateMachine);

            // System event listeners in managers
            this.TelephoneEventManager.SubscribeEvent("TelephoneUiEvent", "ViewCommandHandler", this.TelephoneViewManager);
            this.TelephoneEventManager.SubscribeEvent("TelephoneDeviceEvent", "DeviceCommandHandler", this.TelephoneDeviceManager);
            this.TelephoneEventManager.SubscribeEvent("StateMachineEvent", "SystemEventHandler", this.TelephoneViewManager);
            this.TelephoneEventManager.SubscribeEvent("StateMachineEvent", "SystemEventHandler", this.TelephoneDeviceManager);
            //Sends UI button clickes to device manager
            this.TelephoneEventManager.SubscribeEvent("ViewManagerEvent", "DeviceCommandHandler", this.TelephoneDeviceManager);


            #endregion
        }
        private void Telephone_Load(object sender, EventArgs e)
        {
            // Application Services
            // Initialized view states and view manager
            this.viewStateConfiguration = new TelephoneViewStateConfiguration();
            this.viewMan = ViewManager.Instance;
            this.viewMan.LoadViewStateConfiguration(this.viewStateConfiguration, this);

            // Load devices controlled by state machine into device manager
            this.devManConfiguation = new TelephoneDeviceConfiguration();
            this.devMan             = DeviceManager.Instance;
            this.devMan.LoadDeviceConfiguration(this.devManConfiguation);

            // State Machine
            // Initialize state machine and start state machine
            this.telephoneStateMachine = new TelephoneStateMachine.TelephoneStateMachine(new TelephoneStateMachineConfiguration());
            this.telephoneStateMachine.InitStateMachine();
            this.telephoneStateMachine.Start();
        }
        private void Telephone_Load(object sender, EventArgs e)
        {
            // Application Services
            // Initialized view states and view manager
            this.viewStateConfiguration = new TelephoneViewStateConfiguration();
            this.viewMan = ViewManager.Instance;
            this.viewMan.LoadViewStateConfiguration(this.viewStateConfiguration, this);

            // Load devices controlled by state machine into device manager
            this.devManConfiguation = new TelephoneDeviceConfiguration();
            this.devMan = DeviceManager.Instance;
            this.devMan.LoadDeviceConfiguration(this.devManConfiguation);

            // State Machine
            // Initialize state machine and start state machine
            this.telephoneStateMachine = new TelephoneStateMachine.TelephoneStateMachine(new TelephoneStateMachineConfiguration());
            this.telephoneStateMachine.InitStateMachine();
            this.telephoneStateMachine.Start();
        }
        /// <summary>
        /// Register all events and add subscribers
        /// Needs to be called from state machine, because the state machine instance is required
        /// </summary>
        /// <param name="telephoneStateMachine"></param>
        /// <param name="telephoneActivities"></param>
        internal void DoEventMappings(TelephoneStateMachine telephoneStateMachine, TelephoneActivities telephoneActivities)
        {
            // Register all events
            #region Register events
            // Events implemented for use case
            this.TelephoneEventManager.RegisterEvent("TelephoneUiEvent", telephoneActivities);
            this.TelephoneEventManager.RegisterEvent("TelephoneDeviceEvent", telephoneActivities);

            // Framework/Infrastructure event
            this.TelephoneEventManager.RegisterEvent("StateMachineEvent", telephoneStateMachine);
            this.TelephoneEventManager.RegisterEvent("UINotification", this.TelephoneViewManager);
            this.TelephoneEventManager.RegisterEvent("DeviceManagerNotification", this.TelephoneDeviceManager);
            this.TelephoneEventManager.RegisterEvent("EventManagerEvent", this.TelephoneEventManager);
            this.TelephoneEventManager.RegisterEvent("ViewManagerEvent", this.TelephoneViewManager);
            this.TelephoneEventManager.RegisterEvent("DeviceManagerEvent", this.TelephoneDeviceManager);


            #endregion

            #region event mappings

            // logging
            this.TelephoneEventManager.SubscribeEvent("StateMachineEvent", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("UINotification", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("DeviceManagerNotification", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("EventManagerEvent", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("ViewManagerEvent", "LogEventHandler", this.TelephoneLogManager);
            this.TelephoneEventManager.SubscribeEvent("DeviceManagerEvent", "LogEventHandler", this.TelephoneLogManager);

            // Notifications/Triggers
            this.TelephoneEventManager.SubscribeEvent("UINotification", "InternalNotificationHandler", telephoneStateMachine);
            this.TelephoneEventManager.SubscribeEvent("DeviceManagerNotification", "InternalNotificationHandler", telephoneStateMachine);

            // System event listeners in managers
            this.TelephoneEventManager.SubscribeEvent("TelephoneUiEvent", "ViewCommandHandler", this.TelephoneViewManager);
            this.TelephoneEventManager.SubscribeEvent("TelephoneDeviceEvent", "DeviceCommandHandler", this.TelephoneDeviceManager);
            this.TelephoneEventManager.SubscribeEvent("StateMachineEvent", "SystemEventHandler", this.TelephoneViewManager);
            this.TelephoneEventManager.SubscribeEvent("StateMachineEvent", "SystemEventHandler", this.TelephoneDeviceManager);
            //Sends UI button clickes to device manager
            this.TelephoneEventManager.SubscribeEvent("ViewManagerEvent", "DeviceCommandHandler", this.TelephoneDeviceManager);
            
            
            #endregion
        }