/// <summary>
        /// initialize settings for the miracast receiver
        /// </summary>
        /// <param name="receiver">the receiver to get settings for</param>
        /// <returns>initialized settings</returns>
        MiracastReceiverSettings GetReceiverSettings(MiracastReceiver receiver)
        {
            MiracastReceiverSettings s = receiver.GetDefaultSettings();

            s.AuthorizationMethod = RequirePinAuth ? MiracastReceiverAuthorizationMethod.PinDisplayRequired : MiracastReceiverAuthorizationMethod.None;
            s.FriendlyName        = DisplayName;
            return(s);
        }
        /// <summary>
        /// end the current session and dispose the receiver
        /// </summary>
        public void Dispose()
        {
            //end session
            EndCurrentSession(false);

            //disable receiver
            castReceiver = null;
        }
        /// <summary>
        /// init the miracast receiver.
        /// call this before calling StartSession()
        /// </summary>
        public void InitReceiver()
        {
            //create dispatcher
            mainThreadDispatcher = Dispatcher.FromThread(Thread.CurrentThread);

            //init receiver
            Log("start initializing receiver");
            castReceiver = new MiracastReceiver();
            castReceiver.StatusChanged += OnReceiverStatusChanged;

            //apply settings
            castReceiver.DisconnectAllAndApplySettings(GetReceiverSettings(castReceiver));
        }
 /// <summary>
 /// The status of the cast receiver changed
 /// </summary>
 void OnReceiverStatusChanged(MiracastReceiver sender, object args)
 {
     Log($"receiver listening status changed to {sender.GetStatus().ListeningStatus}");
 }