Example #1
0
        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();
        }
Example #2
0
        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);
        }
Example #3
0
 public EcMaster(EcSettings settings)
     : this(settings, NullLogger.Instance)
 {
     //
 }
Example #4
0
 public EcMaster(EcSettings settings, IExtensionFactory extensionFactory) : this(settings, extensionFactory, NullLogger.Instance)
 {
     //
 }