Exemple #1
0
 private void ShowVolumeLevel()
 {
     this.volLevel = 0;
     if (this.MPStatus.MediaPlayer_Playing || MiniDisplayHelper.IsCaptureCardViewing())
     {
         try
         {
             if (!this.MPStatus.IsMuted)
             {
                 this.volLevel = this.MPStatus.SystemVolumeLevel / 0x2000;
             }
         }
         catch (Exception exception)
         {
             if (this.DoDebug)
             {
                 Log.Info("MD8800.ShowVolumeLevel(): Audio Mixer NOT available! exception: {0}", new object[] { exception });
             }
         }
     }
     if (this.LastVolLevel != this.volLevel)
     {
         if (this.DoDebug)
         {
             Log.Info("MD8800.ShowVolumeLevel(): Sending volume = {0} to VFD.", new object[] { this.volLevel.ToString() });
         }
         this.MD.SetVolume(this.volLevel);
     }
     this.LastVolLevel = this.volLevel;
 }
        //From IDisplay
        public override void Update()
        {
            CheckDisplay();

            MiniDisplayHelper.GetSystemStatus(ref iDisplay.MPStatus);
            //Only try to disable/re-enable our display when our user is idle
            if (iDisplay.MPStatus.UserIsIdle)
            {
                //Check if our display needs to be disabled when MP is idle
                if (Initialized && iDisplay.MPStatus.MP_Is_Idle && iDisplay.iSettings.DisableWhenIdle
                    //Check if our disable when idle delay has passed
                    && IsElapsed((iInitToggleTime > iDisplay.MPStatus.TimeIdleStateChanged ? iInitToggleTime : iDisplay.MPStatus.TimeIdleStateChanged), iDisplay.iSettings.DisableWhenIdleDelayInSeconds))
                {
                    //Blank our display before uninit to workaround switch back to iMON Manager not blanking screen if screen off while running MP (VFD)
                    iDisplay.SetLine(0, "");
                    iDisplay.SetLine(1, "");
                    iDisplay.Update();
                    //
                    DoUninit();
                }
                //Check if it's time to re-enable our display while we are still idle
                else if (!Initialized && iDisplay.MPStatus.MP_Is_Idle && iDisplay.iSettings.ReenableWhenIdleAfter &&
                         IsElapsed(iInitToggleTime, iDisplay.iSettings.ReenableWhenIdleAfterDelayInSeconds))
                {
                    DoInit();
                }
                //Check if our display needs to be disabled when MP is playing
                else if (Initialized && iDisplay.MPStatus.MediaPlayer_Playing && iDisplay.iSettings.DisableWhenPlaying
                         //Check if our disable when playing delay has passed
                         && IsElapsed((iInitToggleTime > iDisplay.MPStatus.TimePlayingStateChanged ? iInitToggleTime : iDisplay.MPStatus.TimePlayingStateChanged), iDisplay.iSettings.DisableWhenPlayingDelayInSeconds))
                {
                    //Blank our display before uninit to workaround switch back to iMON Manager not blanking screen if screen off while running MP (VFD)
                    iDisplay.SetLine(0, "");
                    iDisplay.SetLine(1, "");
                    iDisplay.Update();
                    //
                    DoUninit();
                }
                //Check if it's time to re-enable our display while we are still playing
                else if (!Initialized && iDisplay.MPStatus.MediaPlayer_Playing && iDisplay.iSettings.ReenableWhenPlayingAfter &&
                         IsElapsed(iInitToggleTime, iDisplay.iSettings.ReenableWhenPlayingAfterDelayInSeconds))
                {
                    DoInit();
                }
            }
            //Reinitialize our display if our user is not idle anymore
            else if (!Initialized)
            {
                DoInit();
            }

            if (Initialized)
            {
                //We must already have a display when updating
                iDisplay.Update();
            }
        }
Exemple #3
0
 private void UpdateMPStatus()
 {
     this.MPStatus_old = this.MPStatus;
     MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
     if (this.MPStatus.Equals(this.MPStatus_old))
     {
         this._StatusChanged = false;
     }
     else
     {
         this._StatusChanged = true;
     }
 }
Exemple #4
0
 private void GetEQ()
 {
     lock (DWriteMutex)
     {
         this.EQSettings._EqDataAvailable = MiniDisplayHelper.GetEQ(ref this.EQSettings);
         if (this.EQSettings._EqDataAvailable)
         {
             this._displayThread.Priority = ThreadPriority.AboveNormal;
         }
         else
         {
             this._displayThread.Priority = ThreadPriority.BelowNormal;
         }
     }
 }
Exemple #5
0
 public override void Setup(string _port, int _lines, int _cols, int _delay, int _linesG, int _colsG, int _delayG,
                            bool _backLight, int _backLightLevel, bool _contrast, int _contrastLevel, bool _blankOnExit)
 {
     this.DoDebug = Assembly.GetEntryAssembly().FullName.Contains("Configuration") | Settings.Instance.ExtensiveLogging;
     Log.Info("{0}", new object[] { this.Description });
     Log.Info("MD8800.Setup(): called");
     MiniDisplayHelper.InitDisplayControl(ref this.DisplaySettings);
     this._BlankDisplayOnExit = _blankOnExit;
     this._UseBackLight       = _backLight;
     this._UseBackLightLevel  = _backLightLevel;
     this._UseContrast        = _contrast;
     this._UseContrastLevel   = _contrastLevel;
     this.LoadAdvancedSettings();
     this._Trows = _lines;
     if (this._Trows != 2)
     {
         Log.Info("MD8800.Setup() - Invalid Text Lines value");
         this._Trows = 2;
     }
     this._Tcols = _cols;
     if (this._Tcols != 0x10)
     {
         Log.Info("MD8800.Setup() - Invalid Text Columns value");
         this._Tcols = 0x10;
     }
     this._IsOpen  = false;
     this._UsePort = _port;
     try
     {
         this._IsOpen = this.MD.OpenDisplay(this._UsePort, this._UseBackLight, this._UseBackLightLevel, this._UseContrast,
                                            this._UseContrastLevel);
     }
     catch (Exception exception)
     {
         Log.Info("MD8800.Setup() - CAUGHT EXCEPTION opening display port!: {0}", new object[] { exception });
     }
     if (this._IsOpen)
     {
         this._IsDisabled = false;
         this._IsOpen     = false;
         this.MD.CloseDisplay(this._BlankDisplayOnExit);
     }
     else
     {
         this._IsDisabled = true;
     }
     Log.Info("MD8800.Setup(): completed");
 }
Exemple #6
0
 public override void Update()
 {
     //Check if we need to show EQ this is also taking into account our various settings.
     iSettings.iEq._EqDataAvailable = MiniDisplayHelper.GetEQ(ref iSettings.iEq);
     if (iSettings.iEq._EqDataAvailable)
     {
         //SetAndRollEqData();
         UpdateEq();
     }
     else if (NeedTextUpdate)
     {
         //Not show EQ then display our lines
         SoundGraphDisplay.IDW_SetVfdText(TextTopLine, TextBottomLine);
         NeedTextUpdate = false;
     }
 }
Exemple #7
0
        public override bool OnMessage(GUIMessage message)
        {
            switch (message.Message)
            {
            case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
            {
                base.OnMessage(message);
                _btnMiniDisplay.Visible = MiniDisplayHelper.IsSetupAvailable();
                _btnTV.Visible          = Util.Utils.UsingTvServer;
                return(true);
            }

            case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT: {}
            break;
            }
            return(base.OnMessage(message));
        }
Exemple #8
0
        public override void Update()
        {
            //Check if we need to show EQ this is also taking into account our various settings.
            iSettings.iEq._EqDataAvailable = MiniDisplayHelper.GetEQ(ref iSettings.iEq);
            if (iSettings.iEq._EqDataAvailable)
            {
                //SetAndRollEqData();
                UpdateEq();
            }
            else if (NeedTextUpdate)
            {
                //Not showing EQ then display our lines
                //Only show the second line for now

                bool isPlaying = g_Player.Player != null && g_Player.Player.Playing;

                if (isPlaying && iSettings.PreferFirstLinePlayback)
                {
                    SoundGraphDisplay.IDW_SetLcdText(TextTopLine);
                }
                else if (!isPlaying && iSettings.PreferFirstLineGeneral)
                {
                    SoundGraphDisplay.IDW_SetLcdText(TextTopLine);
                }
                else
                {
                    SoundGraphDisplay.IDW_SetLcdText(TextBottomLine);
                }

                NeedTextUpdate = false;
            }

            //Update our icons here, only very N seconds
            if (SoundGraphDisplay.IsElapsed(LastIconUpdateTime, 2))
            {
                SetMediaTypeIcons();
                SetCodecs();
                SetMediaProgress();
                SetSpeakerConfig();
                SetAspectRatio();
                SetEtcIcons();
                LastIconUpdateTime = DateTime.Now;
            }
        }
Exemple #9
0
        private void XPL_SendMediaInfo(string msgType)
        {
            object obj2       = string.Empty;
            string strMessage = string.Concat(new object[] { obj2, "duration=", this.MPStatus.Media_Duration.ToString(), '\n' });
            string str2       =
                MiniDisplayHelper.PluginIconsToAudioFormat(this.MPStatus.CurrentIconMask).Replace("ICON_", "").Trim().Replace(
                    " ", ", ");
            string str3 =
                MiniDisplayHelper.PluginIconsToVideoFormat(this.MPStatus.CurrentIconMask).Replace("ICON_", "").Trim().Replace(
                    " ", ", ");

            if (!str2.Equals(string.Empty) && !str3.Equals(string.Empty))
            {
                object obj3 = strMessage;
                strMessage = string.Concat(new object[] { obj3, "format=", str2, ", ", str3, '\n' });
            }
            else
            {
                object obj4 = strMessage;
                strMessage = string.Concat(new object[] { obj4, "format=", !str2.Equals(string.Empty) ? str2 : str3, '\n' });
            }
            this.Listener.SendMessage(msgType, "*", "media.mpmedia", strMessage);
            strMessage = string.Empty;
        }
Exemple #10
0
        private void Run()
        {
            Log.Info("MCEDisplay: plugin thread starting...");
Label_0010:
            try
            {
                Thread.Sleep(50);
                this.mediaSession.Process();
                if (this.playSwitched)
                {
                    Thread.Sleep(100);
                    MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
                    if (this.mediaSession != null)
                    {
                        this.mediaSession.Dispose();
                    }
                    if (this.MPStatus.Media_IsMusic)
                    {
                        this.mediaSession = new MusicSession();
                    }
                    else if (this.MPStatus.Media_IsVideo)
                    {
                        this.mediaSession = new VideoSession();
                    }
                    else if (this.MPStatus.Media_IsRadio)
                    {
                        this.mediaSession = new RadioSession();
                    }
                    else if (this.MPStatus.Media_IsTVRecording)
                    {
                        this.mediaSession = new RecordedTVSession();
                    }
                    else if (this.MPStatus.Media_IsTV)
                    {
                        this.mediaSession = new TVSession();
                    }
                    else
                    {
                        this.mediaSession = new HomeSession();
                    }
                    this.playSwitched = false;
                }
                if (this.mediaSession != null)
                {
                    this.mediaSession.Process();
                }
            }
            catch (Exception exception)
            {
                if (exception.Message.Contains("Thread was being aborted"))
                {
                    if (this.mediaSession != null)
                    {
                        this.mediaSession.Dispose();
                    }
                    Log.Info("MCEDisplay: caught thread stop request... plugin thread stopping...");
                    return;
                }
                Log.Info("MCEDisplay: Caught the following exception: {0}\n{1}",
                         new object[] { exception.Message, exception.StackTrace });
            }
            lock (ThreadMutex)
            {
                if (!stopRequested)
                {
                    goto Label_0010;
                }
                Log.Debug("MCEDisplay.Run(): MCEDisplay Thread terminating");
                if (this.mediaSession != null)
                {
                    this.mediaSession.Dispose();
                    this.mediaSession = null;
                }
                stopRequested = false;
            }
        }
Exemple #11
0
 public override void SetLine(int line, string message, ContentAlignment aAlignment)
 {
     if (this._IsDisabled)
     {
         if (this.DoDebug)
         {
             Log.Info("MD8800.SetLine(): Unable to display text - driver disabled");
         }
     }
     else
     {
         this.UpdateAdvancedSettings();
         if (this.DoDebug)
         {
             Log.Info("MD8800.SetLine() Called");
         }
         if (this._IsDisplayOff)
         {
             if (this.DoDebug)
             {
                 Log.Info("MD8800.SetLine(): Suppressing display update!");
             }
         }
         else
         {
             if (this.DoDebug)
             {
                 Log.Info("MD8800.SetLine(): Line {0} - Message = \"{1}\"", new object[] { line, message });
             }
             this.MD.SetLine(line, message);
             if (this.DoDebug)
             {
                 Log.Info("MD8800.SetLine(): message sent to display");
             }
         }
         if (line == (this._Trows - 1))
         {
             MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
         }
         if ((line == (this._Trows - 1)) && this.MPStatus.MP_Is_Idle)
         {
             if (this.DoDebug)
             {
                 Log.Info("MD8800.SetLine(): _BlankDisplayWhenIdle = {0}, _BlankIdleTimeout = {1}",
                          new object[] { this.DisplaySettings.BlankDisplayWhenIdle, this.DisplaySettings._BlankIdleTimeout });
             }
             if (this.DisplaySettings.BlankDisplayWhenIdle)
             {
                 if (!this._mpIsIdle)
                 {
                     if (this.DoDebug)
                     {
                         Log.Info("MD8800.SetLine(): MP going IDLE");
                     }
                     this.DisplaySettings._BlankIdleTime = DateTime.Now.Ticks;
                 }
                 if (!this._IsDisplayOff &&
                     ((DateTime.Now.Ticks - this.DisplaySettings._BlankIdleTime) > this.DisplaySettings._BlankIdleTimeout))
                 {
                     if (this.DoDebug)
                     {
                         Log.Info("MD8800.SetLine(): Blanking display due to IDLE state");
                     }
                     this.DisplayOff();
                 }
             }
             this._mpIsIdle = true;
         }
         else
         {
             if (this.DisplaySettings.BlankDisplayWhenIdle & this._mpIsIdle)
             {
                 if (this.DoDebug)
                 {
                     Log.Info("MD8800.SetLine(): MP no longer IDLE - restoring display");
                 }
                 this.DisplayOn();
             }
             this._mpIsIdle = false;
         }
     }
 }
Exemple #12
0
        private void Display_Update()
        {
            uint iconBitmap = 0;

            if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction)
            {
                GUIWindowManager.OnNewAction += new OnActionHandler(this.OnExternalAction);
            }
            while (true)
            {
                lock (this.ThreadMutex)
                {
                    if (this.DoDebug)
                    {
                        Log.Info("MD8800.Display_Update(): Checking for Thread termination request");
                    }
                    if (_stopUpdateEqThread)
                    {
                        if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction)
                        {
                            GUIWindowManager.OnNewAction -= new OnActionHandler(this.OnExternalAction);
                        }
                        if (this.DoDebug)
                        {
                            Log.Info("MD8800.Display_Update(): EQ_Update Thread terminating");
                        }
                        _stopUpdateEqThread = false;
                        return;
                    }
                    MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
                    iconBitmap = MD8800_Display.ConvertPluginIconsToDisplayIcons(this.MPStatus.CurrentIconMask);
                    if ((!this.MPStatus.MediaPlayer_Active & this.DisplaySettings.BlankDisplayWithVideo) &
                        (this.DisplaySettings.BlankDisplayWhenIdle & !this._mpIsIdle))
                    {
                        this.DisplayOn();
                    }
                    uint num2 = iconBitmap;
                    if (this.DoDebug)
                    {
                        Log.Info("iMONLCDg.UpdateIcons(): Checking TV Card status: IsAnyCardRecording = {0}, IsViewing = {1}",
                                 new object[]
                        {
                            MiniDisplayHelper.MPStatus.Media_IsRecording.ToString(),
                            MiniDisplayHelper.MPStatus.Media_IsTV.ToString()
                        });
                    }
                    if (MiniDisplayHelper.MPStatus.Media_IsRecording)
                    {
                        iconBitmap |= 0x100;
                        if (this.DoDebug)
                        {
                            Log.Info("iMONLCDg.UpdateIcons(): Setting RECORDING icon");
                        }
                    }
                    else if (MiniDisplayHelper.MPStatus.Media_IsTV)
                    {
                        iconBitmap |= 0x20;
                        if (this.DoDebug)
                        {
                            Log.Info("iMONLCDg.UpdateIcons(): Setting TV icon");
                        }
                    }
                    if (this.DoDebug)
                    {
                        Log.Info(
                            "iMONLCDg.UpdateIcons(): Checking g_player status: IsTV = {0}, IsTVRecording = {1}, Playing = {2}, Paused = {3}, IsTimeshifting = {4}",
                            new object[]
                        {
                            this.MPStatus.Media_IsTV.ToString(), this.MPStatus.Media_IsTVRecording.ToString(),
                            this.MPStatus.MediaPlayer_Playing.ToString(), this.MPStatus.MediaPlayer_Paused.ToString(),
                            this.MPStatus.Media_IsTimeshifting.ToString()
                        });
                    }
                    if (!this.MPStatus.MediaPlayer_Active)
                    {
                        this.RestoreDisplayFromVideoOrIdle();
                        lock (this.DWriteMutex)
                        {
                            this._DisplayThread.Priority = ThreadPriority.BelowNormal;
                        }
                        if (this._mpIsIdle)
                        {
                            iconBitmap |= 0x400;
                            if (this.DoDebug)
                            {
                                Log.Info("iMONLCDg.UpdateIcons(): Setting STOP icon");
                            }
                        }
                    }
                    else if (this.MPStatus.MediaPlayer_Playing)
                    {
                        if ((this.MPStatus.Media_IsVideo | this.MPStatus.Media_IsTV) && this.DisplaySettings.BlankDisplayWithVideo)
                        {
                            this.DisplayOff();
                        }
                    }
                    else
                    {
                        if (this.MPStatus.Media_IsVideo | this.MPStatus.Media_IsTV)
                        {
                            this.RestoreDisplayFromVideoOrIdle();
                        }
                        lock (this.DWriteMutex)
                        {
                            this._DisplayThread.Priority = ThreadPriority.BelowNormal;
                        }
                        if (this.DoDebug)
                        {
                            Log.Info("iMONLCDg.UpdateIcons(): Setting PAUSED icon");
                        }
                    }
                    if (!this.MPStatus.MediaPlayer_Playing & !MiniDisplayHelper.MPStatus.Media_IsTV)
                    {
                        iconBitmap |= 0x400;
                    }
                    if (iconBitmap != num2)
                    {
                        lock (this.DWriteMutex)
                        {
                            this.MD.SetIcons(iconBitmap);
                        }
                    }
                    lock (this.DWriteMutex)
                    {
                        this.ShowVolumeLevel();
                    }
                }
                Thread.Sleep(250);
            }
        }
Exemple #13
0
        /// <summary>
        ///
        /// </summary>
        protected void UpdateEq()
        {
            if (!(iSettings.iEq.UseEqDisplay & iSettings.iEq._EqDataAvailable))
            {
                return;
            }
            if (iSettings.iEq.RestrictEQ &
                ((DateTime.Now.Ticks - iSettings.iEq._LastEQupdate.Ticks) < iSettings.iEq._EqUpdateDelay))
            {
                return;
            }
            //if (DoDebug)
            {
                //SoundGraphDisplay.LogInfo("\niMONLCDg.DisplayEQ(): Retrieved {0} samples of Equalizer data.", EQSettings.EqFftData.Length / 2);
            }

            if (IsLcd())
            {
                //Force stereo mode for LCD
                iSettings.iEq.UseStereoEq = true;
            }

            if ((iSettings.iEq.UseStereoEq || iSettings.iEq.UseVUmeter) || iSettings.iEq.UseVUmeter2)
            {
                if (iSettings.iEq.UseStereoEq)
                {
                    //Stereo mode
                    iSettings.iEq.Render_MaxValue = 100;
                    iSettings.iEq.Render_BANDS    = 8;
                    iSettings.iEq.EqArray[0]      = 0x63;

                    /*
                     * if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2))
                     * {
                     *  EQSettings.Render_MaxValue = (EQSettings._useEqMode == 2) ? 8 : 0x10;
                     *  EQSettings.EqArray[0] = (byte)EQSettings._useEqMode;
                     * }
                     * else if (_DisplayType == DisplayType.ThreeRsystems)
                     * {
                     *  EQSettings.Render_MaxValue = 6;
                     *  EQSettings.EqArray[0] = 0;
                     * }
                     */
                    MiniDisplayHelper.ProcessEqData(ref iSettings.iEq);
                    for (int i = 0; i < iSettings.iEq.Render_BANDS; i++)
                    {
                        switch (iSettings.iEq.EqArray[0])
                        {
                        case 2:
                        {
                            var num2 = (byte)(iSettings.iEq.EqArray[1 + i] & 15);
                            iSettings.iEq.EqArray[1 + i] = (byte)((num2 << 4) | num2);
                            var num3 = (byte)(iSettings.iEq.EqArray[9 + i] & 15);
                            iSettings.iEq.EqArray[9 + i] = (byte)((num3 << 4) | num3);
                            break;
                        }
                        }
                    }
                    for (int j = 15; j > 7; j--)
                    {
                        iSettings.iEq.EqArray[j + 1] = iSettings.iEq.EqArray[j];
                    }
                    iSettings.iEq.EqArray[8] = 0;
                    iSettings.iEq.EqArray[9] = 0;
                }
                else
                {
                    //UV Meter or UV Meter: unused
                    iSettings.iEq.Render_MaxValue = 80;
                    iSettings.iEq.Render_BANDS    = 1;

                    if (iSettings.iEq._useVUindicators)
                    {
                        iSettings.iEq.Render_MaxValue = 0x4b;
                    }
                    MiniDisplayHelper.ProcessEqData(ref iSettings.iEq);
                }
            }
            else
            {
                iSettings.iEq.Render_MaxValue = 100;
                iSettings.iEq.Render_BANDS    = 0x10;
                iSettings.iEq.EqArray[0]      = 0x63;

                //if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2))
                if (IsLcd())
                {
                    iSettings.iEq.Render_MaxValue = (iSettings.iEq._useEqMode == 2) ? 8 : 0x10;
                    iSettings.iEq.EqArray[0]      = (byte)iSettings.iEq._useEqMode;
                }

                /*
                 * else if (_DisplayType == DisplayType.ThreeRsystems)
                 * {
                 *  EQSettings.Render_MaxValue = 6;
                 *  EQSettings.EqArray[0] = 0;
                 * }*/
                MiniDisplayHelper.ProcessEqData(ref iSettings.iEq);
                for (int k = 0; k < iSettings.iEq.Render_BANDS; k++)
                {
                    switch (iSettings.iEq.EqArray[0])
                    {
                    case 2:
                    {
                        var num6 = (byte)(iSettings.iEq.EqArray[1 + k] & 15);
                        iSettings.iEq.EqArray[1 + k] = (byte)((num6 << 4) | num6);
                        break;
                    }
                    }
                }
            }

            //if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2))
            if (IsLcd())
            {
                if (!iSettings.iEq.UseVUmeter && !iSettings.iEq.UseVUmeter2)
                {
                    //SetEQ(EQSettings.EqArray);
                    //We take the last 16 entries cause the first one is static

                    for (int i = 1; i < 17; i++)
                    {
                        iEqDataLeft.BandData[i - 1]  = iSettings.iEq.EqArray[i];
                        iEqDataRight.BandData[i - 1] = iSettings.iEq.EqArray[i];
                    }

                    //Array.Copy(iSettings.iEq.EqArray, 1, iEqDataLeft.BandData, 0, 0x10);
                    //Array.Copy(iSettings.iEq.EqArray, 1, iEqDataRight.BandData, 0, 0x10);
                    SoundGraphDisplay.IDW_SetLcdEqData(iEqDataLeft, iEqDataRight);
                }
                else
                {
                    //DrawVU(EQSettings.EqArray);
                }
            }

            /*
             * else if (_DisplayType == DisplayType.ThreeRsystems)
             * {
             *  for (int m = 0; m < 8; m++)
             *  {
             *      EQSettings.EqArray[1 + m] =
             *        (byte)((EQSettings.EqArray[1 + m] << 4) + EQSettings.EqArray[9 + m]);
             *  }
             *  ulong data = 0x0901000000000000L;
             *  ulong num9 = 0x0000000000000002L;
             *  data = data + EQSettings.EqArray[1] << 40;
             *  data = data + EQSettings.EqArray[2] << 0x20;
             *  data = data + EQSettings.EqArray[3] << 0x18;
             *  data = data + EQSettings.EqArray[4] << 0x10;
             *  data = data + EQSettings.EqArray[5] << 8;
             *  num9 = num9 + EQSettings.EqArray[6] << 40;
             *  num9 = num9 + EQSettings.EqArray[7] << 0x20;
             *  num9 = num9 + EQSettings.EqArray[8] << 0x18;
             *  SendData(0x0200020000000000L);
             *  SendData(0x0000000000000002L);
             *  SendData(0x0d0f202020202000L);
             *  SendData(0x2020202020202002L);
             *  SendData(data);
             *  SendData(num9);
             * }
             */
            else if (IsVfd())
            {
                if (!iSettings.iEq.UseVUmeter && !iSettings.iEq.UseVUmeter2)
                {
                    //var destinationArray = new int[0x10];
                    //We take the last 16 entries cause the first one is static
                    //Array.Copy(iSettings.iEq.EqArray, 1, iEqData.BandData, 0, 0x10);

                    for (int i = 1; i < 17; i++)
                    {
                        iEqData.BandData[i - 1] = iSettings.iEq.EqArray[i];
                    }

                    SoundGraphDisplay.IDW_SetVfdEqData(iEqData);
                    goto Label_0613;
                }
                //DrawVU(EQSettings.EqArray);
            }
Label_0613:
            iSettings.iEq._LastEQupdate = DateTime.Now;
            if ((DateTime.Now.Ticks - iSettings.iEq._EQ_FPS_time.Ticks) < 0x989680L)
            {
                iSettings.iEq._EQ_Framecount++;
            }
            else
            {
                iSettings.iEq._Max_EQ_FPS    = Math.Max(iSettings.iEq._Max_EQ_FPS, iSettings.iEq._EQ_Framecount);
                iSettings.iEq._EQ_Framecount = 0;
                iSettings.iEq._EQ_FPS_time   = DateTime.Now;
            }
        }
Exemple #14
0
            public override void Process()
            {
                MediaStatusPropertyTag[] tags = new MediaStatusPropertyTag[0];
                object[] vals     = new object[0];
                string   property = GUIPropertyManager.GetProperty("#currentplaytime");
                int      num      = base.Duration2Int(property);

                MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
                int num2 = -1;

                if (this.MPStatus.MediaPlayer_Paused)
                {
                    num2 = 1;
                }
                else if (this.MPStatus.Media_Speed == 1)
                {
                    num2 = 2;
                }
                else if (this.MPStatus.Media_Speed > 1)
                {
                    num2 = 3;
                }
                else if (this.MPStatus.Media_Speed < 0)
                {
                    num2 = 4;
                }
                else if (((this.MPStatus.Media_Speed == 0) ||
                          (!this.MPStatus.MediaPlayer_Paused & !this.MPStatus.MediaPlayer_Playing)) ||
                         !this.MPStatus.MediaPlayer_Active)
                {
                    num2 = 5;
                }
                if (num2 != this.LastPlayState)
                {
                    switch (num2)
                    {
                    case 1:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Pause };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to PAUSED");
                        base.SetStatus(tags, vals);
                        break;

                    case 2:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Play };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to PLAY");
                        base.SetStatus(tags, vals);
                        break;

                    case 3:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.FF1 };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to FASTFORWARD");
                        base.SetStatus(tags, vals);
                        break;

                    case 4:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Rewind1 };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to REWIND");
                        base.SetStatus(tags, vals);
                        break;

                    default:
                        if (num2 == 4)
                        {
                            tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Stop, MediaStatusPropertyTag.MediaControl };
                            vals = new object[] { true, false };
                            Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to STOP");
                            base.SetStatus(tags, vals);
                        }
                        break;
                    }
                    this.LastPlayState = num2;
                }
                if (property != this.LastPlayTime)
                {
                    tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.TrackTime };
                    vals = new object[] { num };
                    base.SetStatus(tags, vals);
                    this.LastPlayTime = property;
                    Log.Info("MCEDisplay.MusicSession.Process(): Updating TrackTime to {0} ", new object[] { num });
                }
            }
Exemple #15
0
            public override void Process()
            {
                MediaStatusPropertyTag tag;

                MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
                switch (GUIWindowManager.ActiveWindow)
                {
                case 0:
                    tag = MediaStatusPropertyTag.FS_Home;
                    break;

                case 1:
                case 0x1e14:
                case 0x1e15:
                case 600:
                case 0x259:
                case 0x25a:
                case 0x25b:
                case 0x25c:
                case 0x25d:
                case 0x25e:
                    tag = MediaStatusPropertyTag.FS_TV;
                    break;

                case 2:
                case 0x7d7:
                    tag = MediaStatusPropertyTag.FS_Photos;
                    break;

                case 5:
                case 500:
                case 0x1f5:
                case 0x1f6:
                case 0x1f7:
                case 0x1f8:
                case 0x1f9:
                case 0x1fa:
                case 0x1fb:
                case 0x7d1:
                case 0x7d4:
                    tag = MediaStatusPropertyTag.FS_Music;
                    break;

                case 6:
                case 0x15:
                case 0x16:
                case 0x17:
                case 0x19:
                case 0x1c:
                case 0xbb8:
                case 0x7d3:
                    tag = MediaStatusPropertyTag.FS_Videos;
                    break;

                case 30:
                    tag = MediaStatusPropertyTag.FS_Radio;
                    break;

                case 0x7d5:
                    if (this.MPStatus.Media_IsTV || this.MPStatus.Media_IsTVRecording)
                    {
                        tag = MediaStatusPropertyTag.FS_RecordedShows;
                    }
                    else
                    {
                        tag = MediaStatusPropertyTag.FS_Extensibility;
                    }
                    break;

                default:
                    tag = MediaStatusPropertyTag.FS_Extensibility;
                    break;
                }
                if (tag != this.oldMenu)
                {
                    Log.Info("MCEDisplay.HomeSession: Updating home status to {0} (window = {1})",
                             new object[] { tag.ToString(), GUIWindowManager.ActiveWindow.ToString() });
                    MediaStatusPropertyTag[] tags = new MediaStatusPropertyTag[] { this.oldMenu, tag };
                    object[] vals = new object[] { false, true };
                    base.SetStatus(tags, vals);
                    this.oldMenu = tag;
                }
            }
Exemple #16
0
        private void InitializeDriver()
        {
            this.DoDebug = Assembly.GetEntryAssembly().FullName.Contains("Configuration") | Settings.Instance.ExtensiveLogging;
            Log.Info("DebugForm.InitializeDriver(): started.");
            Log.Info("DebugForm.InitializeDriver(): DebugForm Driver - {0}", new object[] { this.Description });
            Log.Info("DebugForm.InitializeDriver(): Called by \"{0}\".", new object[] { Assembly.GetEntryAssembly().FullName });
            FileInfo info = new FileInfo(Assembly.GetExecutingAssembly().Location);

            if (this.DoDebug)
            {
                Log.Info("DebugForm.InitializeDriver(): Assembly creation time: {0} ( {1} UTC )",
                         new object[] { info.LastWriteTime, info.LastWriteTimeUtc.ToUniversalTime() });
            }
            MiniDisplayHelper.InitEQ(ref this.EQSettings);
            MiniDisplayHelper.InitDisplayControl(ref this.DisplaySettings);
            this.LoadAdvancedSettings();
            Log.Info("DebugForm.InitializeDriver(): Advanced options - Force Graphic Text: {0}",
                     new object[] { Settings.Instance.ForceGraphicText });
            Log.Info("DebugForm.InitializeDriver(): Advanced options - Equalizer Display: {0}",
                     new object[] { this.EQSettings.UseEqDisplay });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   Normal Equalizer Display: {0}",
                     new object[] { this.EQSettings.UseNormalEq });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   Stereo Equalizer Display: {0}",
                     new object[] { this.EQSettings.UseStereoEq });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   VU Meter Display: {0}",
                     new object[] { this.EQSettings.UseVUmeter });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   VU Meter Style 2 Display: {0}",
                     new object[] { this.EQSettings.UseVUmeter2 });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -     Use VU Channel indicators: {0}",
                     new object[] { this.EQSettings._useVUindicators });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   Restrict EQ Update Rate: {0}",
                     new object[] { this.EQSettings.RestrictEQ });
            Log.Info(
                "DebugForm.InitializeDriver(): Advanced options -     Restricted EQ Update Rate: {0} updates per second",
                new object[] { this.EQSettings._EQ_Restrict_FPS });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   Delay EQ Startup: {0}",
                     new object[] { this.EQSettings.DelayEQ });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -     Delay EQ Startup Time: {0} seconds",
                     new object[] { this.EQSettings._DelayEQTime });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   Smooth EQ Amplitude Decay: {0}",
                     new object[] { this.EQSettings.SmoothEQ });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   Show Track Info with EQ display: {0}",
                     new object[] { this.EQSettings.EQTitleDisplay });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -     Show Track Info Interval: {0} seconds",
                     new object[] { this.EQSettings._EQTitleDisplayTime });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -     Show Track Info duration: {0} seconds",
                     new object[] { this.EQSettings._EQTitleShowTime });
            Log.Info("DebugForm.InitializeDriver(): Advanced options - Blank display with video: {0}",
                     new object[] { this.DisplaySettings.BlankDisplayWithVideo });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -   Enable Display on Action: {0}",
                     new object[] { this.DisplaySettings.EnableDisplayAction });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -     Enable display for: {0} seconds",
                     new object[] { this.DisplaySettings.DisplayActionTime });
            Log.Info("DebugForm.InitializeDriver(): Advanced options - Blank display when idle: {0}",
                     new object[] { this.DisplaySettings.BlankDisplayWhenIdle });
            Log.Info("DebugForm.InitializeDriver(): Advanced options -     blank display after: {0} seconds",
                     new object[] { this.DisplaySettings._BlankIdleTimeout / 0xf4240L });
            Log.Info("DebugForm.InitializeDriver(): Advanced options - Shutdown Message - Line 1: {0}",
                     new object[] { this.DisplaySettings._Shutdown1 });
            Log.Info("DebugForm.InitializeDriver(): Advanced options - Shutdown Message - Line 2: {0}",
                     new object[] { this.DisplaySettings._Shutdown2 });
            Log.Info("DebugForm.InitializeDriver(): Setting - Audio using ASIO: {0}",
                     new object[] { this.EQSettings._AudioUseASIO });
            Log.Info("DebugForm.InitializeDriver(): Setting - Audio using Mixer: {0}",
                     new object[] { this.EQSettings._AudioIsMixing });
            Log.Info("DebugForm.InitializeDriver(): Extensive logging: {0}", new object[] { this.DoDebug });
            Log.Info("DebugForm.InitializeDriver(): completed.");
        }
Exemple #17
0
 private void DisplayUpdate()
 {
     if (this.DoDebug)
     {
         Log.Info("DebugForm.DisplayUpdate() Starting Display Update Thread");
     }
     if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction)
     {
         GUIWindowManager.OnNewAction += new OnActionHandler(this.OnExternalAction);
     }
     while (true)
     {
         lock (ThreadMutex)
         {
             if (_stopDisplayUpdateThread)
             {
                 if (this.DoDebug)
                 {
                     Log.Info("DebugForm.DisplayUpdate() Display Update Thread terminating");
                 }
                 if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction)
                 {
                     GUIWindowManager.OnNewAction -= new OnActionHandler(this.OnExternalAction);
                 }
                 return;
             }
         }
         MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
         this.Check_Idle_State();
         if (((!this.MPStatus.MediaPlayer_Active | !this.MPStatus.MediaPlayer_Playing) &
              this.DisplaySettings.BlankDisplayWithVideo) & (this.DisplaySettings.BlankDisplayWhenIdle & !this._mpIsIdle))
         {
             this.DisplayOn();
         }
         if (this.MPStatus.MediaPlayer_Playing)
         {
             if (this.EQSettings.UseEqDisplay)
             {
                 this.GetEQ();
                 this.DisplayEQ();
             }
             if (this.DisplaySettings.BlankDisplayWithVideo &
                 (((this.MPStatus.Media_IsDVD || this.MPStatus.Media_IsVideo) || this.MPStatus.Media_IsTV) ||
                  this.MPStatus.Media_IsTVRecording))
             {
                 if (this.DoDebug)
                 {
                     Log.Info("DebugForm.Display_Update(): Turning off display while playing video");
                 }
                 this.DisplayOff();
             }
         }
         else
         {
             this.RestoreDisplayFromVideoOrIdle();
             lock (DWriteMutex)
             {
                 this.EQSettings._EqDataAvailable = false;
                 this._displayThread.Priority     = ThreadPriority.BelowNormal;
             }
         }
         if (!this.EQSettings._EqDataAvailable || this.MPStatus.MediaPlayer_Paused)
         {
             if (this.DoDebug)
             {
                 Log.Info("DebugForm.DisplayUpdate() Sleeping...");
             }
             Thread.Sleep(250);
             if (this.DoDebug)
             {
                 Log.Info("DebugForm.DisplayUpdate() Waking...");
             }
         }
     }
 }
Exemple #18
0
 private void DisplayEQ()
 {
     if (this.EQSettings._EqDataAvailable)
     {
         lock (DWriteMutex)
         {
             object     obj3;
             RectangleF bounds = this.graphicDisplay.Bounds;
             if (this.DoDebug)
             {
                 Log.Info("DebugForm.DisplayEQ(): called");
             }
             this.EQSettings.Render_MaxValue = (this.EQSettings.UseNormalEq | this.EQSettings.UseStereoEq)
                                       ? ((int)bounds.Height)
                                       : ((int)bounds.Width);
             this.EQSettings.Render_BANDS = this.EQSettings.UseNormalEq ? 0x10 : (this.EQSettings.UseStereoEq ? 8 : 1);
             MiniDisplayHelper.ProcessEqData(ref this.EQSettings);
             Monitor.Enter(obj3 = DWriteMutex);
             try
             {
                 this.tGraphics.FillRectangle(Brushes.White, bounds);
                 for (int i = 0; i < this.EQSettings.Render_BANDS; i++)
                 {
                     RectangleF ef2;
                     if (this.DoDebug)
                     {
                         Log.Info("DebugForm.DisplayEQ(): Rendering {0} band {1} = {2}",
                                  new object[]
                         {
                             this.EQSettings.UseNormalEq
                        ? "Normal EQ"
                        : (this.EQSettings.UseStereoEq
                             ? "Stereo EQ"
                             : (this.EQSettings.UseVUmeter ? "VU Meter" : "VU Meter 2")), i,
                             this.EQSettings.UseNormalEq
                        ? this.EQSettings.EqArray[1 + i].ToString()
                        : (this.EQSettings.UseStereoEq
                             ? (this.EQSettings.EqArray[1 + i].ToString() + " : " +
                                this.EQSettings.EqArray[9 + i].ToString())
                             : (this.EQSettings.EqArray[1 + i].ToString() + " : " +
                                this.EQSettings.EqArray[2 + i].ToString()))
                         });
                     }
                     if (this.EQSettings.UseNormalEq)
                     {
                         ef2 = new RectangleF((bounds.X + (i * (((int)bounds.Width) / this.EQSettings.Render_BANDS))) + 1f,
                                              bounds.Y + (((int)bounds.Height) - this.EQSettings.EqArray[1 + i]),
                                              (float)((((int)bounds.Width) / this.EQSettings.Render_BANDS) - 2),
                                              (float)this.EQSettings.EqArray[1 + i]);
                         this.tGraphics.FillRectangle(Brushes.Black, ef2);
                     }
                     else
                     {
                         int        num2;
                         RectangleF ef3;
                         if (this.EQSettings.UseStereoEq)
                         {
                             int num4 = (((int)bounds.Width) / 2) / this.EQSettings.Render_BANDS;
                             num2 = i * num4;
                             int num3 = (i + this.EQSettings.Render_BANDS) * num4;
                             ef2 = new RectangleF((bounds.X + num2) + 1f,
                                                  bounds.Y + (((int)bounds.Height) - this.EQSettings.EqArray[1 + i]),
                                                  (float)(num4 - 2), (float)this.EQSettings.EqArray[1 + i]);
                             ef3 = new RectangleF((bounds.X + num3) + 1f,
                                                  bounds.Y + (((int)bounds.Height) - this.EQSettings.EqArray[9 + i]),
                                                  (float)(num4 - 2), (float)this.EQSettings.EqArray[9 + i]);
                             this.tGraphics.FillRectangle(Brushes.Black, ef2);
                             this.tGraphics.FillRectangle(Brushes.Black, ef3);
                         }
                         else if (this.EQSettings.UseVUmeter | this.EQSettings.UseVUmeter2)
                         {
                             ef2 = new RectangleF(bounds.X + 1f, bounds.Y + 1f, (float)this.EQSettings.EqArray[1 + i],
                                                  (float)(((int)(bounds.Height / 2f)) - 2));
                             num2 = this.EQSettings.UseVUmeter ? 0 : (((int)bounds.Width) - this.EQSettings.EqArray[2 + i]);
                             ef3  = new RectangleF((bounds.X + num2) + 1f, (bounds.Y + (bounds.Height / 2f)) + 1f,
                                                   (float)this.EQSettings.EqArray[2 + i], (float)(((int)(bounds.Height / 2f)) - 2));
                             this.tGraphics.FillRectangle(Brushes.Black, ef2);
                             this.tGraphics.FillRectangle(Brushes.Black, ef3);
                         }
                     }
                 }
                 this.graphicDisplay.Image = this.tBitmap;
             }
             catch (Exception exception)
             {
                 Log.Info("DebugForm.DisplayEQ(): CAUGHT EXCEPTION {0}", new object[] { exception });
                 if (exception.Message.Contains("ThreadAbortException"))
                 {
                 }
             }
             finally
             {
                 Monitor.Exit(obj3);
             }
         }
     }
 }
Exemple #19
0
 public Settings()
 {
     //Init EqData
     MiniDisplayHelper.InitEQ(ref iEq);
 }
Exemple #20
0
            public override void Process()
            {
                MediaStatusPropertyTag[] tags = null;
                object[] vals = null;
                base.SetStatus(tags, vals);
                MiniDisplayHelper.GetSystemStatus(ref this.MPStatus);
                int num = -1;

                if (this.MPStatus.MediaPlayer_Paused)
                {
                    num = 1;
                }
                else if (this.MPStatus.Media_Speed == 1)
                {
                    num = 2;
                }
                else if (this.MPStatus.Media_Speed > 1)
                {
                    num = 3;
                }
                else if (this.MPStatus.Media_Speed < 0)
                {
                    num = 4;
                }
                else if (!this.MPStatus.MediaPlayer_Paused & !this.MPStatus.MediaPlayer_Playing)
                {
                    num = 4;
                }
                if (num != this.LastPlayState)
                {
                    switch (num)
                    {
                    case 1:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Pause };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to PAUSED");
                        base.SetStatus(tags, vals);
                        break;

                    case 2:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Play };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to PLAY");
                        base.SetStatus(tags, vals);
                        break;

                    case 3:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.FF1 };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to FASTFORWARD");
                        base.SetStatus(tags, vals);
                        break;

                    case 4:
                        tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Rewind1 };
                        vals = new object[] { true };
                        Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to REWIND");
                        base.SetStatus(tags, vals);
                        break;
                    }
                    this.LastPlayState = num;
                }
                tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.TrackTime };
                vals = new object[] { base.GetDuration2Int("#currentplaytime") };
                base.SetStatus(tags, vals);
            }