1 // 2 // Copyright (c) 2010-2024 Antmicro 3 // 4 // This file is licensed under the MIT License. 5 // Full license text is available in 'licenses/MIT.txt'. 6 // 7 using System; 8 using Antmicro.Renode.Core; 9 using Antmicro.Renode.Time; 10 11 namespace Antmicro.Renode.Peripherals.SENT 12 { 13 public abstract class SENTPeripheralBase : ISENTPeripheral 14 { SENTPeripheralBase(IMachine machine, TimeInterval tickPeriod)15 public SENTPeripheralBase(IMachine machine, TimeInterval tickPeriod) 16 { 17 transmitter = new Transmitter(machine, tickPeriod); 18 transmitter.Edge += edge => SENTEdgeChanged?.Invoke(edge); 19 transmitter.ProvideFastMessage += ProvideFastMessage; 20 transmitter.ProvideSlowMessage += ProvideSlowMessage; 21 } 22 ProvideFastMessage()23 public abstract FastMessage ProvideFastMessage(); ProvideSlowMessage()24 public abstract SlowMessage ProvideSlowMessage(); 25 Reset()26 public virtual void Reset() 27 { 28 TransmissionEnabled = false; 29 } 30 31 public event Action<SENTEdge> SENTEdgeChanged; 32 33 public bool TransmissionEnabled 34 { 35 get => transmitter.Transmitting; 36 set => transmitter.Transmitting = value; 37 } 38 39 protected readonly Transmitter transmitter; 40 } 41 } 42