Esempio n. 1
0
        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();
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 private static BoardType FromIBoardType(IBoardType boardType) => boardType switch
 {