protected void InitializeComponents()
        {
            this.TV = new SerialControl.PioneerTv(TelevisionPort);
            this.PrePro = new SerialControl.EmotivaPrePro(PreProPort);
            this.Oppo = new SerialControl.OppoBdp83(OppoPort);
            this.Ir = new IrControl.UsbUirt();

            this.Oppo.OnDiscTypeUpdate += OppoOnDiscTypeUpdate;
            this.Oppo.OnAudioTypeUpdate += OppoOnAudioUpdate;
            this.Oppo.OnPowerUpdate += OppoOnPowerUpdate;

            this.Ir.OnDvrOk += WatchDvr;
            this.Ir.OnDvrChannelDown += WatchDvr;
            this.Ir.OnDvrChannelUp += WatchDvr;
            this.Ir.OnDvrAv += DvrOnAv;
            this.Ir.OnOppoOk += OppoOnOk;
        }
        protected void InitializeComponents()
        {
            this.TV     = new SerialControl.PioneerTv(TelevisionPort);
            this.PrePro = new SerialControl.EmotivaPrePro(PreProPort);
            this.Oppo   = new SerialControl.OppoBdp83(OppoPort);
            this.Ir     = new IrControl.UsbUirt();

            this.Oppo.OnDiscTypeUpdate  += OppoOnDiscTypeUpdate;
            this.Oppo.OnAudioTypeUpdate += OppoOnAudioUpdate;
            this.Oppo.OnPowerUpdate     += OppoOnPowerUpdate;

            this.Ir.OnDvrOk          += WatchDvr;
            this.Ir.OnDvrChannelDown += WatchDvr;
            this.Ir.OnDvrChannelUp   += WatchDvr;
            this.Ir.OnDvrAv          += DvrOnAv;
            this.Ir.OnOppoOk         += OppoOnOk;
        }
        protected void OppoOnDiscTypeUpdate(OppoBdp83.DiscType type)
        {
            if((type & OppoBdp83.DiscType.Video) > 0) {
                this.WatchVideoOnOppo();
            } else {
                // we assume it is an audio disc
                switch(type) {
                    case OppoBdp83.DiscType.DVDAudio:
                    case OppoBdp83.DiscType.SuperAudioCD:
                        this.ListenAudioOnOppo(true);
                        break;

                    default:
                        this.ListenAudioOnOppo(false);
                        break;
                }
            }
        }
        /// When the Oppo changes audio tracks, ensure we are on the most appropriate input
        /// The stereo DACs are higher quality (theoretically), so we use them if we have
        /// 2 channels or less
        protected void OppoOnAudioUpdate(OppoBdp83.AudioType audioType, Int32 currentTrack, Int32 availableTracks, String language, OppoBdp83.ChannelsDescription channels)
        {
            switch(channels) {
                case OppoBdp83.ChannelsDescription.Mono:
                case OppoBdp83.ChannelsDescription.Stereo:
                    this.PrePro.InputCD();
                    break;

                default:
                    this.PrePro.Input8Channel();
                    break;
            }
        }