1 // 2 // Copyright (c) 2010-2022 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 9 using System; 10 using Antmicro.Renode.Core; 11 using Antmicro.Renode.Utilities; 12 13 using Antmicro.Migrant; 14 namespace Antmicro.Renode.Backends.Terminals 15 { 16 public static class ServerSocketTerminalExtensions 17 { CreateServerSocketTerminal(this Emulation emulation, int port, string name, bool emitConfig = true, bool flushOnConnect = false)18 public static void CreateServerSocketTerminal(this Emulation emulation, int port, string name, bool emitConfig = true, bool flushOnConnect = false) 19 { 20 emulation.ExternalsManager.AddExternal(new ServerSocketTerminal(port, emitConfig, flushOnConnect), name); 21 } 22 } 23 24 [Transient] 25 public class ServerSocketTerminal : BackendTerminal, IDisposable 26 { ServerSocketTerminal(int port, bool emitConfigBytes = true, bool flushOnConnect = false)27 public ServerSocketTerminal(int port, bool emitConfigBytes = true, bool flushOnConnect = false) 28 { 29 server = new SocketServerProvider(emitConfigBytes, flushOnConnect, serverName: "Terminal"); 30 server.DataReceived += b => CallCharReceived((byte)b); 31 32 server.Start(port); 33 } 34 WriteChar(byte value)35 public override void WriteChar(byte value) 36 { 37 server.SendByte(value); 38 } 39 Dispose()40 public void Dispose() 41 { 42 server.Stop(); 43 } 44 45 private readonly SocketServerProvider server; 46 } 47 } 48 49