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 Antmicro.Renode.Core; 8 using Antmicro.Renode.Core.Structure.Registers; 9 using Antmicro.Renode.Logging; 10 using Antmicro.Renode.Peripherals.Bus; 11 12 namespace Antmicro.Renode.Peripherals.Dynamic 13 { 14 public class SubobjectTester : BasicDoubleWordPeripheral, IKnownSize 15 { SubobjectTester(Machine machine)16 public SubobjectTester(Machine machine) : base(machine) 17 { 18 subobject = new Subobject(this); 19 20 Registers.Control.Define(this) 21 .WithValueField(0, 32, writeCallback: (_, __) => HandleWrite()) 22 ; 23 } 24 25 public long Size => 0x4; 26 HandleWrite()27 private void HandleWrite() 28 { 29 this.Log(LogLevel.Noisy, "Hello from object"); 30 subobject.Write(); 31 } 32 33 private readonly Subobject subobject; 34 35 private enum Registers 36 { 37 Control = 0 38 } 39 40 private class Subobject 41 { Subobject(SubobjectTester parent)42 public Subobject(SubobjectTester parent) 43 { 44 this.parent = parent; 45 } 46 Write()47 public void Write() 48 { 49 parent.Log(LogLevel.Noisy, "Hello from sub-object"); 50 } 51 52 private readonly SubobjectTester parent; 53 } 54 } 55 } 56