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