/// <summary> /// Disables the interface. /// </summary> /// <returns>The interface.</returns> /// <param name="domain">Domain.</param> public MigInterface DisableInterface(string domain) { MigInterface migInterface = GetInterface(domain); if (migInterface != null) { Log.Debug("Disabling Interface {0}", domain); configuration.GetInterface(domain).IsEnabled = false; migInterface.IsEnabled = false; migInterface.Disconnect(); } else { Log.Debug("Interface not found {0}", domain); } return(migInterface); }
private void modules_RefreshInterface(MigInterface iface) { if (migService.Configuration.GetInterface(iface.GetDomain()).IsEnabled) { var interfaceModules = iface.GetModules(); if (interfaceModules.Count > 0) { // delete removed modules var deleted = systemModules.FindAll(m => m.Domain == iface.GetDomain() && (interfaceModules.Find(m1 => m1.Address == m.Address && m1.Domain == m.Domain) == null)); foreach (var mod in deleted) { // only "real" modules defined by mig interfaces are considered var virtualParam = Utility.ModuleParameterGet(mod, Properties.VirtualModuleParentId); if (virtualParam == null || virtualParam.DecimalValue == 0) { Module garbaged = modulesGarbage.Find(m => m.Domain == mod.Domain && m.Address == mod.Address); if (garbaged != null) modulesGarbage.Remove(garbaged); modulesGarbage.Add(mod); systemModules.Remove(mod); } } // foreach (var migModule in interfaceModules) { Module module = systemModules.Find(o => o.Domain == migModule.Domain && o.Address == migModule.Address); if (module == null) { // try restoring from garbage module = modulesGarbage.Find(o => o.Domain == migModule.Domain && o.Address == migModule.Address); if (module != null) { systemModules.Add(module); } else { module = new Module(); module.Domain = migModule.Domain; module.Address = migModule.Address; systemModules.Add(module); } } if (String.IsNullOrEmpty(module.Description)) { module.Description = migModule.Description; } if (module.DeviceType == ModuleTypes.Generic) { module.DeviceType = migModule.ModuleType; } } } } else { var deleted = systemModules.FindAll(m => m.Domain == iface.GetDomain()); foreach (var mod in deleted) { var virtualParam = Utility.ModuleParameterGet(mod, Properties.VirtualModuleParentId); if (virtualParam == null || virtualParam.DecimalValue == 0) { Module garbaged = modulesGarbage.Find(m => m.Domain == mod.Domain && m.Address == mod.Address); if (garbaged != null) modulesGarbage.Remove(garbaged); modulesGarbage.Add(mod); systemModules.Remove(mod); } } } }