| // |
| // Copyright (c) 2010-2023 Antmicro |
| // |
| // This file is licensed under the MIT License. |
| // Full license text is available in 'licenses/MIT.txt'. |
| // |
| using Antmicro.Renode.Core; |
| using Antmicro.Renode.Core.Structure.Registers; |
| using Antmicro.Renode.Logging; |
| using Antmicro.Renode.Peripherals.Bus; |
| |
| namespace Antmicro.Renode.Peripherals.Dynamic |
| { |
| public class SubobjectTester : BasicDoubleWordPeripheral, IKnownSize |
| { |
| public SubobjectTester(Machine machine) : base(machine) |
| { |
| subobject = new Subobject(this); |
| |
| Registers.Control.Define(this) |
| .WithValueField(0, 32, writeCallback: (_, __) => HandleWrite()) |
| ; |
| } |
| |
| public long Size => 0x4; |
| |
| private void HandleWrite() |
| { |
| this.Log(LogLevel.Noisy, "Hello from object"); |
| subobject.Write(); |
| } |
| |
| private readonly Subobject subobject; |
| |
| private enum Registers |
| { |
| Control = 0 |
| } |
| |
| private class Subobject |
| { |
| public Subobject(SubobjectTester parent) |
| { |
| this.parent = parent; |
| } |
| |
| public void Write() |
| { |
| parent.Log(LogLevel.Noisy, "Hello from sub-object"); |
| } |
| |
| private readonly SubobjectTester parent; |
| } |
| } |
| } |