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