private async Task <Core.Audio.AudioRequest> GetTTTASAudioRequest(Core.Database.User _, string message)
        {
            Core.Audio.AudioRequest soundEffectRequest = null;
            Core.Audio.AudioRequest tttasRequest       = null;

            if (!string.IsNullOrEmpty(tttasConfig.SoundEffect) && soundEffectSystem.HasSoundEffects())
            {
                Core.Audio.SoundEffect tttasSoundEffect = soundEffectSystem.GetSoundEffectByName(tttasConfig.SoundEffect);
                if (tttasSoundEffect is null)
                {
                    communication.SendWarningMessage($"Expected {tttasConfig.FeatureNameBrief} SoundEffect \"{tttasConfig.SoundEffect}\" not found.  Defaulting to first sound effect.");
                    tttasSoundEffect = soundEffectSystem.GetSoundEffectByName(soundEffectSystem.GetSoundEffects()[0]);
                }

                soundEffectRequest = new Core.Audio.SoundEffectRequest(tttasSoundEffect);
            }

            if (!string.IsNullOrWhiteSpace(message))
            {
                tttasRequest = await tttasRenderer.TTTASRequest(
                    tttasText : message);
            }

            return(Core.Notifications.FullActivityProvider.JoinRequests(300, soundEffectRequest, tttasRequest));
        }
        public bool Attach(string port)
        {
            if (currentSerialPortReader is not null)
            {
                currentSerialPortReader.Dispose();
                currentSerialPortReader = null;
                lastState = null;
            }

            try
            {
                currentSerialPortReader = new Readers.SerialControllerReader <Readers.SNESControllerState>(port, Readers.SNESControllerState.Parse);
                currentSerialPortReader.ControllerStateChanged += ControllerStateChanged;
                currentSerialPortReader.ControllerDisconnected += ControllerDisconnected;
            }
            catch (Exception ex)
            {
                communication.SendWarningMessage($"Exception trying to bind ControllerManager to port {port}: {ex}");
                currentSerialPortReader = null;
            }

            return(currentSerialPortReader is not null);
        }