1 // 2 // Copyright (c) 2010-2022 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.IO; 8 using Antmicro.Renode.Exceptions; 9 using Antmicro.Renode.Hooks; 10 using Antmicro.Renode.Peripherals.Wireless; 11 using Antmicro.Renode.Utilities; 12 13 namespace Antmicro.Renode.Extensions.Hooks 14 { 15 public static class PacketInterceptionExtensions 16 { SetPacketHookFromScript(this WirelessMedium medium, IRadio radio, string script)17 public static void SetPacketHookFromScript(this WirelessMedium medium, IRadio radio, string script) 18 { 19 if(string.IsNullOrEmpty(script)) 20 { 21 throw new RecoverableException("Cannot initialize packet interception hook because no script was provided"); 22 } 23 var runner = new PacketInterceptionPythonEngine(radio, script: script); 24 medium.AttachHookToRadio(radio, runner.Hook); 25 } 26 SetPacketHookFromFile(this WirelessMedium medium, IRadio radio, ReadFilePath filename)27 public static void SetPacketHookFromFile(this WirelessMedium medium, IRadio radio, ReadFilePath filename) 28 { 29 var runner = new PacketInterceptionPythonEngine(radio, filename: filename); 30 medium.AttachHookToRadio(radio, runner.Hook); 31 } 32 } 33 } 34