public void Setup(string port, int lines, int cols, int delay, int linesG, int colsG, int timeG, bool backLight, int backlightLevel, bool contrast, int contrastLevel, bool blankOnExit) { Log.Info("(IDisplay) iMONLCDg.Setup(): called"); MiniDisplayHelper.InitEQ(ref EQSettings); MiniDisplayHelper.InitDisplayControl(ref DisplaySettings); MiniDisplayHelper.InitDisplayOptions(ref DisplayOptions); _BlankDisplayOnExit = blankOnExit; _Backlight = false; _BacklightLevel = (ulong)backlightLevel; _Contrast = true; _ContrastLevel = ((ulong)contrastLevel) >> 2; InitializeDriver(); if (_DelayStartup) { Log.Info("iMONLCDg.Setup(): Delaying device initialization by 10 seconds"); Thread.Sleep(0x2710); } Check_iMON_Manager_Status(); if (_IMON == null) { _IMON = new iMONDisplay(); } int fWVersion = -1; int rEGVersion = -1; switch (_ForceDisplay) { case "LCD": _DisplayType = DisplayType.LCD; _VfdType = 0x18; _VfdReserved = 0x8888; Log.Info("(IDisplay) iMONLCDg.Setup(): Advanced options forces display type to LCD"); break; case "LCD2": _DisplayType = DisplayType.LCD2; _VfdType = 0x1b; _VfdReserved = 0x8888; Log.Info("(IDisplay) iMONLCDg.Setup(): Advanced options forces display type to LCD2"); break; case "VFD": _DisplayType = DisplayType.VFD; _VfdType = 0x10; _VfdType = 0x1a; _VfdReserved = 0; Log.Info("(IDisplay) iMONLCDg.Setup(): Advanced options forces display type to VFD"); break; case "LCD3R": _DisplayType = DisplayType.ThreeRsystems; _VfdType = 9; _VfdReserved = 0; Log.Info("(IDisplay) iMONLCDg.Setup(): Advanced options forces display type to LCD3R"); break; default: Log.Info("(IDisplay) iMONLCDg.Setup(): Autodetecting iMON Display device"); try { Log.Info("(IDisplay) iMONLCDg.Setup(): attempting hardware information test"); if (_IMON.RC_Available()) { Log.Info("(IDisplay) iMONLCDg.Setup(): hardware information test - Opening SG_RC.dll"); if (_IMON.iMONRC_Init(0x77, 0x83, 0x8888)) { long num4 = _IMON.iMONRC_CheckDriverVersion(); int num5 = _IMON.iMONRC_GetFirmwareVer(); int num6 = _IMON.iMONRC_GetHWType(); int num7 = _IMON.iMONRC_GetLastRFMode(); Log.Info( "(IDisplay) iMONLCDg.Setup(): RC TEST returned DRVR: 0x{0}, FW: 0x{1} (HW: 0x{2}), RC_HW: 0x{3}, RF: 0x{4}", num4.ToString("x0000000000000000"), num5.ToString("x00000000"), GetVFDTypeFromFirmware(num5).ToString("x00000000"), num6.ToString("x00000000"), num7.ToString("x00000000")); if (num5 > 0) { fWVersion = num5; } Log.Info("(IDisplay) iMONLCDg.Setup(): Closing SG_RC.dll"); _IMON.iMONRC_Uninit(); } else { long num8 = _IMON.iMONRC_CheckDriverVersion(); int num9 = _IMON.iMONRC_GetFirmwareVer(); int num10 = _IMON.iMONRC_GetHWType(); int num11 = _IMON.iMONRC_GetLastRFMode(); Log.Info("iMONLCDg.Setup(): RC TEST returned DRVR: 0x{0}, FW: 0x{1} (HW: {2}), RC_HW: 0x{3}, RF: 0x{4}", num8.ToString("x0000000000000000"), num9.ToString("x00000000"), GetVFDTypeFromFirmware(num9).ToString("x00000000"), num10.ToString("x00000000"), num11.ToString("x00000000")); if (num9 > 0) { Log.Info("iMONLCDg.Setup(): Found valid display information"); fWVersion = num9; } Log.Info("iMONLCDg.Setup(): Closing SG_RC.dll"); } } else { Log.Info("iMONLCDg.Setup(): Hardware AutoDetect not available"); } } catch (Exception exception) { Log.Info("iMONLCDg.Setup(): RC TEST FAILED... SG_RC.dll not found. Exception: {0}", exception); } try { int num3; for (int i = 0; i < _BrandTableLength; i++) { string curBrand = _BrandTable[i, 0]; string curApp = _BrandTable[i, 1]; Log.Info("iMONLCDg.Setup(): checking registry for " + curBrand + " entries"); RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software" + curBrand + "\\" + curApp, false); if (key != null) { num3 = (int)key.GetValue("LastVFD", 0); if (num3 > 0) { Log.Info("iMONLCDg.Setup(): " + curBrand + " registry entries found - HW: {0}", num3.ToString("x00")); rEGVersion = num3; } else { Log.Info("iMONLCDg.Setup(): " + curBrand + " \"LastVFD\" key not found"); } } else { Log.Info("iMONLCDg.Setup(): " + curBrand + " registry entries NOT found"); } Registry.CurrentUser.Close(); if (rEGVersion >= 0) { break; } } } catch (Exception exception2) { Log.Info("iMONLCDg.Setup(): registry test caught exception {0}", exception2); } if (fWVersion > -1) { if (GetDisplayInfoFromFirmware(fWVersion)) { Log.Info("iMONLCDg.Setup(): Hardware tests determined - iMON Type: {0}, Display Type: {1} Rsrvd: {2}", _VfdType.ToString("x00"), DisplayType.TypeName(_DisplayType), _VfdReserved.ToString("x00")); } else { Log.Info("iMONLCDg.Setup(): Hardware tests determined UNSUPPORTED display type!"); _DisplayType = DisplayType.Unsupported; } } else if (rEGVersion > -1) { if (GetDisplayInfoFromRegistry(rEGVersion)) { Log.Info("iMONLCDg.Setup(): Registry tests determined - iMON Type: {0}, Display Type: {1} Rsrvd: {2}", _VfdType.ToString("x00"), DisplayType.TypeName(_DisplayType), _VfdReserved.ToString("x00")); } else { Log.Info("iMONLCDg.Setup(): Registry tests determined UNSUPPORTED display type!"); _DisplayType = DisplayType.Unsupported; _isDisabled = true; } } else { Log.Info("(IDisplay) iMONLCDg.Setup(): Display Type could not be determined"); _DisplayType = DisplayType.Unsupported; _isDisabled = true; } if (_DisplayType == DisplayType.Unsupported) { _isDisabled = true; Log.Info("(IDisplay) iMONLCDg.Setup(): Display Type is NOT SUPPORTED - Plugin disabled"); } break; } if (!_isDisabled) { try { Log.Info("(IDisplay) iMONLCDg.Setup(): Testing iMON Display device"); if (_IMON.iMONVFD_IsInited()) { Log.Info("(IDisplay) iMONLCDg.Setup(): iMON Display found"); _IMON.iMONVFD_Uninit(); } Log.Info("(IDisplay) iMONLCDg.Setup(): opening display type {0}", DisplayType.TypeName(_DisplayType)); if (!_IMON.iMONVFD_Init(_VfdType, _VfdReserved)) { Log.Info("(IDisplay) iMONLCDg.Setup(): Open failed - No iMON device found"); _isDisabled = true; _errorMessage = "iMONLCDg could not find an iMON LCD display"; } else { Log.Info("(IDisplay) iMONLCDg.Setup(): iMON Display device found"); _IMON.iMONVFD_Uninit(); } } catch (Exception exception3) { _isDisabled = true; _errorMessage = exception3.Message; Log.Info("(IDisplay) iMONLCDg.Setup(): caught an exception."); } } string property = GUIPropertyManager.GetProperty("#currentmodule"); Log.Info("(IDisplay) iMONLCDg.Setup(): current module = {0}", property); if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2)) { _grows = linesG; if (_grows > 0x10) { _grows = 0x10; Log.Info( "(IDisplay) iMONLCDg.Setup(): DISPLAY CONFIGURATION (GRAPHICS MODE) ERROR - Rows must be less then or equal to 16"); } _gcols = colsG; if (_gcols > 0x60) { _gcols = 0x60; Log.Info( "(IDisplay) iMONLCDg.Setup(): DISPLAY CONFIGURATION (GRAPHICS MODE) ERROR - Columns must be less then or equal to 96"); } } else if (_DisplayType == DisplayType.VFD) { _trows = lines; if (_trows > 2) { _trows = 2; Log.Info( "(IDisplay) iMONLCDg.Setup(): DISPLAY CONFIGURATION (TEXT MODE) ERROR - Rows must be less then or equal to 2"); } else { Log.Info("(IDisplay) iMONLCDg.Setup(): _trows (Text Mode Rows) set to {0}", _trows); } Log.Info("(IDisplay) iMONLCDg.Setup(): _tcols (Text Mode Columns) set to {0}", _tcols); DisplayOptions.DiskMediaStatus = false; DisplayOptions.VolumeDisplay = false; DisplayOptions.ProgressDisplay = false; DisplayOptions.UseCustomFont = false; DisplayOptions.UseLargeIcons = false; DisplayOptions.UseCustomIcons = false; DisplayOptions.UseInvertedIcons = false; } else if (_DisplayType == DisplayType.ThreeRsystems) { _trows = lines; if (_trows > 1) { _trows = 1; Log.Info("(IDisplay) iMONLCDg.Setup(): DISPLAY CONFIGURATION (3Rsystems MODE) ERROR - Rows must be 1"); } _gcols = 12; Log.Info( "(IDisplay) iMONLCDg.Setup(): DISPLAY CONFIGURATION (3Rsystems MODE) ERROR - Columns must be less then or equal to 12"); DisplayOptions.DiskMediaStatus = false; DisplayOptions.VolumeDisplay = false; DisplayOptions.ProgressDisplay = false; DisplayOptions.UseCustomFont = false; DisplayOptions.UseLargeIcons = false; DisplayOptions.UseCustomIcons = false; DisplayOptions.UseInvertedIcons = false; } _delay = delay; _delayG = timeG; _delay = Math.Max(_delay, _delayG); if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2)) { _delay = Math.Min(2, _delay); } Log.Info("(IDisplay) iMONLCDg.Setup(): Completed"); }
private void InitializeDriver() { DoDebug = Assembly.GetEntryAssembly().FullName.Contains("Configuration") | Settings.Instance.ExtensiveLogging; _IsConfiguring = Assembly.GetEntryAssembly().FullName.Contains("Configuration"); Log.Info("iMONLCDg.InitializeDriver(): started."); Log.Info("iMONLCDg.InitializeDriver(): iMONLCDg Driver - {0}", Description); Log.Info("iMONLCDg.InitializeDriver(): Called by \"{0}\".", Assembly.GetEntryAssembly().FullName); var info = new FileInfo(Assembly.GetExecutingAssembly().Location); if (DoDebug) { Log.Info("iMONLCDg.InitializeDriver(): Assembly creation time: {0} ( {1} UTC )", info.LastWriteTime, info.LastWriteTimeUtc.ToUniversalTime()); } LoadAdvancedSettings(); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Idle Message: {0}", Settings.Instance.IdleMessage); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Delay driver startup: {0}", _DelayStartup.ToString()); Log.Info( "iMONLCDg.InitializeDriver(): Advanced options - Ensure Antec/iMON Manager is running before driver startup: {0}", _EnsureManagerStartup.ToString()); Log.Info( "iMONLCDg.InitializeDriver(): Advanced options - Force Antec/iMON Manager Restart after driver startup: {0}", _ForceManagerRestart.ToString()); Log.Info( "iMONLCDg.InitializeDriver(): Advanced options - Force Antec/iMON Manager Reload during driver startup: {0}", _ForceManagerReload.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Restart Antec/iMON Manager FrontView on exit: {0}", _RestartFrontviewOnExit.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Leave Antec/iMON Manager FrontView active: {0}", _LeaveFrontviewActive.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Force Manager to use KeyBoard mode for iMON PAD: {0}", _ForceKeyBoardMode.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Force Display Type: {0}", _ForceDisplay); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Blank display on MediaPortal exit: {0}", _BlankDisplayOnExit); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Control Brightness: {0}", _Backlight); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Control Contrast: {0}", _Contrast); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Force Graphic Text: {0}", Settings.Instance.ForceGraphicText); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Use Disk Icon: {0}", DisplayOptions.DiskIcon.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Volume Bar: {10", DisplayOptions.VolumeDisplay.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Progress Bar: {0}", DisplayOptions.ProgressDisplay.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Use Disk Icon For Media Status: {0}", DisplayOptions.DiskMediaStatus.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Use Disk Icon For CD/DVD device status: {0}", DisplayOptions.DiskMonitor.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Custom Font: {0}", DisplayOptions.UseCustomFont.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Large Icons: {0}", DisplayOptions.UseLargeIcons.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Custom Large Icons: {0}", DisplayOptions.UseCustomIcons.ToString()); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Equalizer Display: {0}", EQSettings.UseEqDisplay); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - EQMode: {0}", EQSettings._useEqMode); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Normal Equalizer Display: {0}", EQSettings.UseNormalEq); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Stereo Equalizer Display: {0}", EQSettings.UseStereoEq); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - VU Meter Display: {0}", EQSettings.UseVUmeter); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - VU Meter Style 2 Display: {0}", EQSettings.UseVUmeter2); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Use VU Channel indicators: {0}", EQSettings._useVUindicators); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Restrict EQ Update Rate: {0}", EQSettings.RestrictEQ); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Restricted EQ Update Rate: {0} updates per second", EQSettings._EQ_Restrict_FPS); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Delay EQ Startup: {0}", EQSettings.DelayEQ); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Delay EQ Startup Time: {0} seconds", EQSettings._DelayEQTime); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Smooth EQ Amplitude Decay: {0}", EQSettings.SmoothEQ); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Show Track Info with EQ display: {0}", EQSettings.EQTitleDisplay); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Show Track Info Interval: {0} seconds", EQSettings._EQTitleDisplayTime); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Show Track Info duration: {0} seconds", EQSettings._EQTitleShowTime); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Blank display with video: {0}", DisplaySettings.BlankDisplayWithVideo); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Enable Display on Action: {0}", DisplaySettings.EnableDisplayAction); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Enable display for: {0} seconds", DisplaySettings.DisplayActionTime); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Monitor PowerState Events: {0}", _MonitorPower); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Blank display when idle: {0}", DisplaySettings.BlankDisplayWhenIdle); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - blank display after: {0} seconds", DisplaySettings._BlankIdleTimeout / 0xf4240L); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Shutdown Message - Line 1: {0}", DisplaySettings._Shutdown1); Log.Info("iMONLCDg.InitializeDriver(): Advanced options - Shutdown Message - Line 2: {0}", DisplaySettings._Shutdown2); Log.Info("iMONLCDg.InitializeDriver(): Setting - Audio using ASIO: {0}", EQSettings._AudioUseASIO); Log.Info("iMONLCDg.InitializeDriver(): Setting - Audio using Mixer: {0}", EQSettings._AudioIsMixing); if (!DisplayOptions.DiskMonitor & !DisplayOptions.DiskMediaStatus) { DisplayOptions.DiskIcon = false; } if (_ForceDisplay == "LCD") { _DisplayType = DisplayType.LCD; Log.Info("iMONLCDg.InitializeDriver(): Advanced options forces display type to LCD"); } else if (_ForceDisplay == "LCD2") { _DisplayType = DisplayType.LCD2; Log.Info("iMONLCDg.InitializeDriver(): Advanced options forces display type to LCD2"); } else if (_ForceDisplay == "VFD") { _DisplayType = DisplayType.VFD; Log.Info("iMONLCDg.InitializeDriver(): Advanced options forces display type to VFD"); } else if (_ForceDisplay == "LCD3R") { _DisplayType = DisplayType.VFD; Log.Info("iMONLCDg.InitializeDriver(): Advanced options forces display type to LCD3R"); } Log.Info("iMONLCDg.InitializeDriver(): Extensive logging: {0}", DoDebug); Log.Info("iMONLCDg.InitializeDriver(): Use V3 DLL for VFD: {0}", _VFD_UseV3DLL); Log.Info("iMONLCDg.InitializeDriver(): Display Type: {0}", DisplayType.TypeName(_DisplayType)); if (((imonVFD_DLLFile = FindImonVFDdll()) == string.Empty) & !_VFD_UseV3DLL) { Log.Info("iMONLCDg.InitializeDriver(): Failed - installed sg_vfd.dll not found - driver disabled"); _isDisabled = true; } else { _IMON = new iMONDisplay(); if (!_IMON.Initialize(imonVFD_DLLFile)) { Log.Info("iMONLCDg.InitializeDriver(): DLL linking Failed - driver disabled"); _isDisabled = true; } else { _isDisabled = false; Log.Info("iMONLCDg.InitializeDriver(): completed."); } } }