1 // 2 // Copyright (c) 2010-2018 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.Text; 8 9 namespace Antmicro.Renode.Utilities.GDB 10 { 11 public class Packet 12 { TryCreate(PacketData data, byte checksum, out Packet p)13 public static bool TryCreate(PacketData data, byte checksum, out Packet p) 14 { 15 p = new Packet(data); 16 return p.CalculateChecksum() == checksum; 17 } 18 Packet(PacketData data)19 public Packet(PacketData data) 20 { 21 Data = data; 22 } 23 GetCompletePacket()24 public byte[] GetCompletePacket() 25 { 26 return Encoding.ASCII.GetBytes(string.Format("${0}#{1:x2}", Data.DataAsString, CalculateChecksum())); 27 } 28 CalculateChecksum()29 public byte CalculateChecksum() 30 { 31 uint result = 0; 32 foreach(var b in Data.RawDataAsBinary) 33 { 34 result += b; 35 } 36 return (byte)(result % 256); 37 } 38 39 public PacketData Data { get; private set; } 40 } 41 } 42 43