public EcMaster(EcSettings settings, ILogger logger) { _settings = settings.ShallowCopy(); _logger = logger; this.Context = EcHL.CreateContext(); // DC _dcRingBuffer = new long[_dcRingBufferSize]; _dcEpoch = new DateTime(2000, 1, 1); _dcDriftCompensationRate = Convert.ToInt32(_settings.DriftCompensationRate / _settings.CycleFrequency); // 850 ppm max clock drift // data _ioMapPtr = Marshal.AllocHGlobal(_settings.IoMapLength); unsafe { new Span <byte>(_ioMapPtr.ToPointer(), _settings.IoMapLength).Clear(); } // diagnostics _isReconfiguring = false; _lock = new object(); _cts = new CancellationTokenSource(); }
public static SlaveInfo RescanDevices(EcSettings settings, SlaveInfo referenceRootSlave) { var referenceSlaves = default(IEnumerable <SlaveInfo>); if (referenceRootSlave != null) { referenceSlaves = referenceRootSlave.Descendants().ToList(); } var newRootSlave = EcUtilities.ScanDevices(settings.InterfaceName, referenceRootSlave); newRootSlave.Descendants().ToList().ForEach(slave => { var referenceSlave = slave.Csa == slave.OldCsa ? referenceSlaves?.FirstOrDefault(x => x.Csa == slave.Csa) : null; if (referenceSlave != null) { slave.Extensions = referenceSlave.Extensions; } EcUtilities.CreateDynamicData(settings.EsiDirectoryPath, slave); }); return(newRootSlave); }
public EcMaster(EcSettings settings) : this(settings, NullLogger.Instance) { // }
public EcMaster(EcSettings settings, IExtensionFactory extensionFactory) : this(settings, extensionFactory, NullLogger.Instance) { // }