1 //
2 // Copyright (c) 2010-2021 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 
8 using Antmicro.Renode.Peripherals.SPI;
9 using Antmicro.Renode.Logging;
10 
11 namespace Antmicro.Renode.Peripherals.Sensors
12 {
13     public class GenericSPISensor : ISPIPeripheral
14     {
GenericSPISensor()15         public GenericSPISensor()
16         {
17             samplesFifo = new SensorSamplesFifo<ScalarSample>();
18         }
19 
Reset()20         public void Reset()
21         {
22             // intentionally do nothing
23         }
24 
FinishTransmission()25         public void FinishTransmission()
26         {
27             // intentionally do nothing
28         }
29 
Transmit(byte b)30         public byte Transmit(byte b)
31         {
32             samplesFifo.TryDequeueNewSample();
33             var result = (byte)samplesFifo.Sample.Value;
34 
35             this.Log(LogLevel.Info, "Received byte 0x{0:X}, returning 0x{1:X}", b, result);
36             return result;
37         }
38 
FeedSample(byte sample)39         public void FeedSample(byte sample)
40         {
41             samplesFifo.FeedSample(new ScalarSample(sample));
42         }
43 
FeedSamplesFromFile(string path)44         public void FeedSamplesFromFile(string path)
45         {
46             samplesFifo.FeedSamplesFromFile(path);
47         }
48 
49         private readonly SensorSamplesFifo<ScalarSample> samplesFifo;
50     }
51 }
52 
53