private bool UsesInterface(IBoardType boardType, IDriverFactory factory) { foreach (var t in boardType.ProvidesInterfaceTypes) { if (factory.UsesInterfaces.Contains(t)) { return(true); } } return(false); }
public MainBoard(IBoardType bt1, IBoardType bt2, IBoardType bt3) { this.bt1 = bt1; this.bt2 = bt2; this.bt3 = bt3; }
/// <summary> /// Public constructor to initialize item service instance /// </summary> public BoardTypeController() { _BoardType = new BoardTypeService(); }
public Task Load(IDriverFactory factory, IBoardType boardType) { try { var manifest = Common.Update.Plugin.GetEmbeddedPluginManifest(_logger, factory.GetType().Assembly); if (manifest == null) { throw new NoManifestFoundException(); } _store.Add(manifest.Automatica.PluginGuid, manifest); _driverFactoryStore.Add(factory.DriverGuid, factory); _logger.LogDebug($"Init driver {factory.DriverName} {factory.DriverVersion}..."); var driverDbVersion = _dbContext.VersionInformations.SingleOrDefault(a => a.DriverGuid == factory.DriverGuid); var initNodeTemplates = false; if (driverDbVersion == null) { driverDbVersion = new VersionInformation { Name = factory.DriverName, Version = factory.DriverVersion.ToString(), DriverGuid = factory.DriverGuid }; initNodeTemplates = true; _dbContext.VersionInformations.Add(driverDbVersion); } else if (factory.DriverVersion > driverDbVersion.VersionData) { initNodeTemplates = true; driverDbVersion.Name = factory.DriverName; driverDbVersion.Version = factory.DriverVersion.ToString(); } if (!UsesInterface(boardType, factory)) { _logger.LogInformation( $"Ignore {factory.DriverName} because we do not support any of the given interfaces"); return(Task.CompletedTask); } _localizationProvider.LoadFromAssembly(factory.GetType().Assembly); if (initNodeTemplates || factory.InDevelopmentMode) { _logger.LogDebug($"InitNodeTemplates for {factory.DriverName}..."); using (var db = new AutomaticaContext(_config)) { factory.InitNodeTemplates(new NodeTemplateFactory(db, _config)); db.SaveChanges(); } _logger.LogDebug($"InitNodeTemplates for {factory.DriverName}...done"); } else { factory.InitNodeTemplates(new DoNothingNodeTemplateFactory()); } _logger.LogDebug($"Init driver {factory.DriverName} {factory.DriverVersion}...done"); _dbContext.SaveChanges(); } catch (NoManifestFoundException) { // ignore } catch (Exception e) { _logger.LogError($"Could not load driver {factory.DriverName} {e}", e); } return(Task.CompletedTask); }
private static BoardType FromIBoardType(IBoardType boardType) => boardType switch {