1 // 2 // Copyright (c) 2010-2024 Antmicro 3 // Copyright (c) 2011-2015 Realtime Embedded 4 // 5 // This file is licensed under the MIT License. 6 // Full license text is available in 'licenses/MIT.txt'. 7 // 8 using System; 9 using Antmicro.Renode.Peripherals.Bus; 10 using Antmicro.Renode.Logging; 11 using Antmicro.Renode.Core; 12 using Antmicro.Renode.Utilities; 13 14 namespace Antmicro.Renode.Peripherals.Bus.Wrappers 15 { 16 public sealed class WriteLoggingWrapper<T> : WriteHookWrapper<T> 17 { WriteLoggingWrapper(IBusPeripheral peripheral, Action<long, T> originalMethod)18 public WriteLoggingWrapper(IBusPeripheral peripheral, Action<long, T> originalMethod) : base(peripheral, originalMethod, null, null) 19 { 20 mapper = new RegisterMapper(peripheral.GetType()); 21 machine = peripheral.GetMachine(); 22 } 23 Write(long offset, T value)24 public override void Write(long offset, T value) 25 { 26 Peripheral.Log(LogLevel.Info, machine.SystemBus.DecorateWithCPUNameAndPC($"Write{Name} to 0x{offset:X}{(mapper.ToString(offset, " ({0})"))}, value 0x{value:X}.")); 27 OriginalMethod(offset, value); 28 } 29 30 private readonly IMachine machine; 31 private readonly RegisterMapper mapper; 32 } 33 } 34