コード例 #1
0
ファイル: DigitalSignal.cs プロジェクト: obiwanjacobi/Zim80
 private void ThrowIfNotOurs(DigitalSignalProvider provider)
 {
     if (!_providers.Contains(provider))
     {
         throw new ArgumentException("Specified Provider is not connected to this DigitalSignal.", nameof(provider));
     }
 }
コード例 #2
0
ファイル: DigitalSignal.cs プロジェクト: obiwanjacobi/Zim80
 private bool AreMultipleProvidersActive(DigitalSignalProvider changeProvider)
 {
     return(_providers
            .Where(p => p.Level != DigitalLevel.Floating)
            .Except(new[] { changeProvider })
            .Any());
 }
コード例 #3
0
ファイル: DigitalSignal.cs プロジェクト: obiwanjacobi/Zim80
 private void ThrowIfMultipleProvidersActive(DigitalSignalProvider changeProvider)
 {
     if (AreMultipleProvidersActive(changeProvider))
     {
         throw new DigitalSignalConflictException("Multiple DigitalSignalProviders are active on: " + Name);
     }
 }
コード例 #4
0
ファイル: DigitalSignal.cs プロジェクト: obiwanjacobi/Zim80
        internal void Attach(DigitalSignalProvider provider)
        {
            if (_providers.Contains(provider))
            {
                throw new ArgumentException(
                          "Specified Provider is already connected.", nameof(provider));
            }

            _providers.Add(provider);
        }
コード例 #5
0
ファイル: DigitalSignal.cs プロジェクト: obiwanjacobi/Zim80
        internal void OnNewProviderValue(DigitalSignalProvider provider)
        {
            ThrowIfNotOurs(provider);
            ThrowIfMultipleProvidersActive(provider);

            if (Level != provider.Level)
            {
                _level = provider.Level;
                NotifyOnChanged(provider);
            }
        }
コード例 #6
0
        internal void OnNewProviderValue(DigitalSignalProvider provider)
        {
            if (!_providers.Contains(provider))
            {
                throw new ArgumentException("Specified Provider is not connected to this DigitalSignal.", nameof(provider));
            }

            ThrowIfMultipleProvidersActive(provider);
            if (Level != provider.Level)
            {
                _level = provider.Level;
                NotifyOnChanged(provider);
            }
        }
コード例 #7
0
ファイル: DigitalSignal.cs プロジェクト: obiwanjacobi/Zim80
 private void NotifyOnChanged(DigitalSignalProvider provider)
 {
     OnChanged?.Invoke(this, new DigitalLevelChangedEventArgs(provider, Level));
 }
コード例 #8
0
 public DigitalLevelChangedEventArgs(DigitalSignalProvider provider, DigitalLevel level)
 {
     Provider = provider;
     Level    = level;
 }