internal AllJoynInterfaceManager(IPlaybackManager playbackManager, IPlaylistManager playlistManager, IDevicePowerManager powerManager)
 {
     this.playbackManager = playbackManager;
     this.playbackManager.VolumeChanged += PlaybackManager_VolumeChanged;
     this.playlistManager = playlistManager;
     this.playlistManager.CurrentTrackChanged += PlaylistManager_CurrentTrackChanged;
     this.powerManager = powerManager;
     this.powerManager.PowerStateChanged += PowerManager_PowerStateChanged;
 }
Exemplo n.º 2
0
 internal AllJoynInterfaceManager(IPlaybackManager playbackManager, IPlaylistManager playlistManager, IDevicePowerManager powerManager)
 {
     this.playbackManager = playbackManager;
     this.playbackManager.VolumeChanged += PlaybackManager_VolumeChanged;
     this.playlistManager = playlistManager;
     this.playlistManager.CurrentTrackChanged += PlaylistManager_CurrentTrackChanged;
     this.powerManager = powerManager;
     this.powerManager.PowerStateChanged += PowerManager_PowerStateChanged;
 }
Exemplo n.º 3
0
        public IAsyncAction Initialize(InternetRadioConfig config, Bot bot)
        {
            _bot = bot;
            bot.RadioChangeRequest += RadioUriChanged;
            bot.CommandRequest     += CommandChanged;

            var radioTask = Task.Run(async() =>
            {
                _config          = config;
                _playbackRetries = 0;

                _radioPowerManager = new RadioPowerManager();
                _radioPowerManager.PowerStateChanged += RadioPowerManager_PowerStateChanged;

                _radioPlaybackManager = new MediaEnginePlaybackManager();
                _radioPlaybackManager.VolumeChanged        += RadioPlaybackManager_VolumeChanged;
                _radioPlaybackManager.PlaybackStateChanged += RadioPlaybackManager_PlaybackStateChanged;
                await _radioPlaybackManager.InitialzeAsync();

                // Manage settings
                var savedVolume = LoadSettings("volume");
                if (savedVolume == null)
                {
                    savedVolume = ".1";
                }
                _radioPlaybackManager.Volume = Convert.ToDouble(savedVolume);

                // Wake up the radio
                _radioPowerManager.PowerState = PowerState.Powered;

                var uriToPlay = LoadSettings("play");
                if (uriToPlay != null)
                {
                    currentUri = uriToPlay;
                }
            });

            return(radioTask.AsAsyncAction());
        }
Exemplo n.º 4
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="serverPort">Port to start server on</param>
        internal HttpInterfaceManager(int serverPort, IPlaybackManager playbackManager, IPlaylistManager playlistManager, IDevicePowerManager powerManager)
        {
            this.playbackManager = playbackManager;
            this.playlistManager = playlistManager;
            this.powerManager = powerManager;

            helper = new WebHelper();
            listener = new StreamSocketListener();
            port = serverPort;
            listener.ConnectionReceived += (s, e) =>
            {
                try
                {
                    // Process incoming request
                    processRequestAsync(e.Socket);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Exception in StreamSocketListener.ConnectionReceived(): " + ex.Message);
                }
            };
        }
Exemplo n.º 5
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="serverPort">Port to start server on</param>
        internal HttpInterfaceManager(int serverPort, IPlaybackManager playbackManager, IPlaylistManager playlistManager, IDevicePowerManager powerManager)
        {
            this.playbackManager = playbackManager;
            this.playlistManager = playlistManager;
            this.powerManager    = powerManager;

            helper   = new WebHelper();
            listener = new StreamSocketListener();
            port     = serverPort;
            listener.ConnectionReceived += (s, e) =>
            {
                try
                {
                    // Process incoming request
                    processRequestAsync(e.Socket);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Exception in StreamSocketListener.ConnectionReceived(): " + ex.Message);
                }
            };
        }
Exemplo n.º 6
0
 public GpioInterfaceManager(IPlaybackManager playbackManager, IPlaylistManager playlistManager, IDevicePowerManager powerManager)
 {
     this.playbackManager = playbackManager;
     this.playlistManager = playlistManager;
     this.powerManager = powerManager;
 }
Exemplo n.º 7
0
        public async Task Initialize()
        {
            this.playbackRetries = 0;

            var telemetryInitializeProperties = new Dictionary<string, string>();
#pragma warning disable CS0618 // No current view for Background task
            this.resourceLoader = new ResourceLoader("Resources");
#pragma warning restore CS0618 // No current view for Background task           

            this.radioPowerManager = new RadioPowerManager();
            this.radioPowerManager.PowerStateChanged += RadioPowerManager_PowerStateChanged;

            this.radioPresetManager = new RadioLocalPresetManager();
            this.radioPresetManager.PlaylistChanged += RadioPresetManager_PlaylistChanged;
            this.radioPresetManager.CurrentTrackChanged += RadioPresetManager_CurrentTrackChanged;

            this.radioPlaybackManager = new MediaEnginePlaybackManager();
            this.radioPlaybackManager.VolumeChanged += RadioPlaybackManager_VolumeChanged;
            this.radioPlaybackManager.PlaybackStateChanged += RadioPlaybackManager_PlaybackStateChanged;
            await this.radioPlaybackManager.InitialzeAsync();

            // Initialize the input managers
            allJoynInterfaceManager = new AllJoynInterfaceManager(this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
            this.allJoynInterfaceManager.Initialize();
            
            await this.tryWriteToDisplay(this.resourceLoader.GetString("AllJoynIdMessage") +"\n" + this.allJoynInterfaceManager.GetBusId(), 0);

            this.gpioInterfaceManager = new GpioInterfaceManager(this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
            if (!this.gpioInterfaceManager.Initialize())
            {
                Debug.WriteLine("RadioManager: Failed to initialize GPIO");
                telemetryInitializeProperties.Add("GpioAvailable", false.ToString());
            }
            else
            {
                telemetryInitializeProperties.Add("GpioAvailable", true.ToString());
            }

            this.appServicesInterfaceManager = new AppServicesInterfaceManager(this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);

            // Manage settings
            this.radioPlaybackManager.Volume = this.loadVolume();
            var previousPlaylist = this.loadPlaylistId();
            if (previousPlaylist.HasValue)
            {
                await this.radioPresetManager.LoadPlayList(previousPlaylist.Value);
                telemetryInitializeProperties.Add("FirstBoot", false.ToString());
            }
            else
            {
                telemetryInitializeProperties.Add("FirstBoot", true.ToString());
            }

            if (this.radioPresetManager.CurrentPlaylist == null)
            {
                var newPlaylistId = await this.radioPresetManager.StartNewPlaylist("DefaultPlaylist", new List<Track>(), true);
                this.savePlaylistId(newPlaylistId);
            }

            var displays = await TextDisplayManager.GetDisplays();
            this.display = displays.FirstOrDefault();
            if (null != this.display)
            {
                telemetryInitializeProperties.Add("DisplayAvailable", true.ToString());
                telemetryInitializeProperties.Add("DisplayHeight", this.display.Height.ToString());
                telemetryInitializeProperties.Add("DisplayWidth", this.display.Width.ToString());
            }
            else
            {
                Debug.WriteLine("RadioManager: No displays available");
                telemetryInitializeProperties.Add("DisplayAvailable", false.ToString());
            }

            // Wake up the radio
            this.radioPowerManager.PowerState = PowerState.Powered;

            StartupTask.WriteTelemetryEvent("App_Initialize", telemetryInitializeProperties);
        }
Exemplo n.º 8
0
        public IAsyncAction Initialize(InternetRadioConfig config)
        {
            return Task.Run(async () =>
            {
                this.config = config;
                this.playbackRetries = 0;

                var telemetryInitializeProperties = new Dictionary<string, string>();
#pragma warning disable CS0618 // No current view for Background task
                this.resourceLoader = new ResourceLoader("Resources");
#pragma warning restore CS0618 // No current view for Background task           

                this.radioPowerManager = new RadioPowerManager();
                this.radioPowerManager.PowerStateChanged += RadioPowerManager_PowerStateChanged;

                this.radioPresetManager = new RadioLocalPresetManager();
                this.radioPresetManager.PlaylistChanged += RadioPresetManager_PlaylistChanged;
                this.radioPresetManager.CurrentTrackChanged += RadioPresetManager_CurrentTrackChanged;

                this.radioPlaybackManager = new MediaEnginePlaybackManager();
                this.radioPlaybackManager.VolumeChanged += RadioPlaybackManager_VolumeChanged;
                this.radioPlaybackManager.PlaybackStateChanged += RadioPlaybackManager_PlaybackStateChanged;
                await this.radioPlaybackManager.InitialzeAsync();

                // Initialize the input managers

                // AllJoyn
                this.allJoynInterfaceManager = new AllJoynInterfaceManager(this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
                this.allJoynInterfaceManager.Initialize();

                // GPIO
                this.gpioInterfaceManager = new GpioInterfaceManager(this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
                if (!this.gpioInterfaceManager.Initialize(this.config.Buttons_Debounce, this.config.Buttons_Pins))
                {
                    Debug.WriteLine("RadioManager: Failed to initialize GPIO");
                    telemetryInitializeProperties.Add("GpioAvailable", false.ToString());
                }
                else
                {
                    telemetryInitializeProperties.Add("GpioAvailable", true.ToString());
                }

                // HTTP
                this.httpInterfaceManager = new HttpInterfaceManager(8001, this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
                this.httpInterfaceManager.StartServer();

                // Manage settings
                this.radioPlaybackManager.Volume = this.loadVolume();
                var previousPlaylist = this.loadPlaylistId();
                if (previousPlaylist.HasValue)
                {
                    await this.radioPresetManager.LoadPlayList(previousPlaylist.Value);
                    telemetryInitializeProperties.Add("FirstBoot", false.ToString());
                }
                else
                {
                    telemetryInitializeProperties.Add("FirstBoot", true.ToString());
                }

                if (this.radioPresetManager.CurrentPlaylist == null)
                {
                    var newPlaylistId = await this.radioPresetManager.StartNewPlaylist("DefaultPlaylist", new List<Track>(), true);
                    this.savePlaylistId(newPlaylistId);
                }

                var displays = await TextDisplayManager.GetDisplays();
                this.display = displays.FirstOrDefault();
                if (null != this.display)
                {
                    telemetryInitializeProperties.Add("DisplayAvailable", true.ToString());
                    telemetryInitializeProperties.Add("DisplayHeight", this.display.Height.ToString());
                    telemetryInitializeProperties.Add("DisplayWidth", this.display.Width.ToString());
                }
                else
                {
                    Debug.WriteLine("RadioManager: No displays available");
                    telemetryInitializeProperties.Add("DisplayAvailable", false.ToString());
                }

                // Wake up the radio
                this.radioPowerManager.PowerState = PowerState.Powered;

                if (this.radioPresetManager.CurrentPlaylist.Tracks.Count <= 0)
                {
                    this.radioPresetManager.CurrentPlaylist.Tracks.Add(this.config.Playlist_BuiltInStation);
                }

                TelemetryManager.WriteTelemetryEvent("App_Initialize", telemetryInitializeProperties);
            }).AsAsyncAction();
        }
Exemplo n.º 9
0
 public GpioInterfaceManager(IPlaybackManager playbackManager, IPlaylistManager playlistManager, IDevicePowerManager powerManager)
 {
     this.playbackManager = playbackManager;
     this.playlistManager = playlistManager;
     this.powerManager    = powerManager;
 }
Exemplo n.º 10
0
        public IAsyncAction Initialize(InternetRadioConfig config)
        {
            return(Task.Run(async() =>
            {
                this.config = config;
                this.playbackRetries = 0;

                var telemetryInitializeProperties = new Dictionary <string, string>();
#pragma warning disable CS0618 // No current view for Background task
                this.resourceLoader = new ResourceLoader("Resources");
#pragma warning restore CS0618 // No current view for Background task

                this.radioPowerManager = new RadioPowerManager();
                this.radioPowerManager.PowerStateChanged += RadioPowerManager_PowerStateChanged;

                this.radioPresetManager = new RadioLocalPresetManager();
                this.radioPresetManager.PlaylistChanged += RadioPresetManager_PlaylistChanged;
                this.radioPresetManager.CurrentTrackChanged += RadioPresetManager_CurrentTrackChanged;

                this.radioPlaybackManager = new MediaEnginePlaybackManager();
                this.radioPlaybackManager.VolumeChanged += RadioPlaybackManager_VolumeChanged;
                this.radioPlaybackManager.PlaybackStateChanged += RadioPlaybackManager_PlaybackStateChanged;
                await this.radioPlaybackManager.InitialzeAsync();

                // Initialize the input managers

                // AllJoyn
                this.allJoynInterfaceManager = new AllJoynInterfaceManager(this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
                this.allJoynInterfaceManager.Initialize();

                // GPIO
                this.gpioInterfaceManager = new GpioInterfaceManager(this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
                if (!this.gpioInterfaceManager.Initialize(this.config.Buttons_Debounce, this.config.Buttons_Pins))
                {
                    Debug.WriteLine("RadioManager: Failed to initialize GPIO");
                    telemetryInitializeProperties.Add("GpioAvailable", false.ToString());
                }
                else
                {
                    telemetryInitializeProperties.Add("GpioAvailable", true.ToString());
                }

                // HTTP
                this.httpInterfaceManager = new HttpInterfaceManager(8001, this.radioPlaybackManager, this.radioPresetManager, this.radioPowerManager);
                this.httpInterfaceManager.StartServer();

                // Manage settings
                this.radioPlaybackManager.Volume = this.loadVolume();
                var previousPlaylist = this.loadPlaylistId();
                if (previousPlaylist.HasValue)
                {
                    await this.radioPresetManager.LoadPlayList(previousPlaylist.Value);
                    telemetryInitializeProperties.Add("FirstBoot", false.ToString());
                }
                else
                {
                    telemetryInitializeProperties.Add("FirstBoot", true.ToString());
                    this.radioPlaybackManager.Volume = .25;
                }

                if (this.radioPresetManager.CurrentPlaylist == null)
                {
                    var newPlaylistId = await this.radioPresetManager.StartNewPlaylist("DefaultPlaylist", new List <Track>(), true);
                    this.savePlaylistId(newPlaylistId);
                }

                var displays = await TextDisplayManager.GetDisplays();
                this.display = displays.FirstOrDefault();
                if (null != this.display)
                {
                    telemetryInitializeProperties.Add("DisplayAvailable", true.ToString());
                    telemetryInitializeProperties.Add("DisplayHeight", this.display.Height.ToString());
                    telemetryInitializeProperties.Add("DisplayWidth", this.display.Width.ToString());
                }
                else
                {
                    Debug.WriteLine("RadioManager: No displays available");
                    telemetryInitializeProperties.Add("DisplayAvailable", false.ToString());
                }

                // Wake up the radio
                this.radioPowerManager.PowerState = PowerState.Powered;

                if (this.radioPresetManager.CurrentPlaylist.Tracks.Count <= 0)
                {
                    this.radioPresetManager.CurrentPlaylist.Tracks.Add(this.config.Playlist_BuiltInStation);
                }

                TelemetryManager.WriteTelemetryEvent("App_Initialize", telemetryInitializeProperties);
            }).AsAsyncAction());
        }