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