1 //
2 // Copyright (c) 2010-2023 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 
9 using Antmicro.Renode.Peripherals;
10 
11 namespace Antmicro.Renode.Utilities.RESD
12 {
13     public class RESDSampleCallbackAttribute : Attribute
14     {
RESDSampleCallbackAttribute(SampleType sampleType, uint channel = 0, RESDStreamStatus status = RESDStreamStatus.OK, string domain = null)15         public RESDSampleCallbackAttribute(SampleType sampleType, uint channel = 0, RESDStreamStatus status = RESDStreamStatus.OK, string domain = null)
16         {
17             SampleType = sampleType;
18             ChannelId = channel;
19             Status = status;
20             Domain = domain;
21         }
22 
23         public SampleType SampleType { get; }
24         public uint ChannelId { get; }
25         public RESDStreamStatus Status { get; }
26         public string Domain { get; }
27     }
28 
29     public class OnRESDSample : RESDSampleCallbackAttribute
30     {
OnRESDSample(SampleType sampleType, uint channel = 0, string domain = null)31         public OnRESDSample(SampleType sampleType, uint channel = 0, string domain = null) : base(sampleType, channel, RESDStreamStatus.OK, domain)
32         {
33         }
34     }
35 
36     public class BeforeRESDSample : RESDSampleCallbackAttribute
37     {
BeforeRESDSample(SampleType sampleType, uint channel = 0, string domain = null)38         public BeforeRESDSample(SampleType sampleType, uint channel = 0, string domain = null) : base(sampleType, channel, RESDStreamStatus.BeforeStream, domain)
39         {
40         }
41     }
42 
43     public class AfterRESDSample : RESDSampleCallbackAttribute
44     {
AfterRESDSample(SampleType sampleType, uint channel = 0, string domain = null)45         public AfterRESDSample(SampleType sampleType, uint channel = 0, string domain = null) : base(sampleType, channel, RESDStreamStatus.AfterStream, domain)
46         {
47         }
48     }
49 
50     public interface IUnderstandRESD : IPeripheral {}
51 }
52