1 //
2 // Copyright (c) 2010-2019 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 
8 using Antmicro.Renode.Utilities.Packets;
9 
10 namespace Antmicro.Renode.Extensions.Utilities.USBIP
11 {
12     public struct URBHeader
13     {
14         [PacketField]
15         public URBCommand Command;
16         [PacketField]
17         public uint SequenceNumber;
18         [PacketField]
19         public ushort BusId; // in the documentation those two fields are called 'DeviceId'
20         [PacketField]
21         public ushort DeviceId;
22         [PacketField]
23         public URBDirection Direction;
24         [PacketField]
25         public uint EndpointNumber;
26         [PacketField]
27         public uint FlagsOrStatus;
28 
ToStringAntmicro.Renode.Extensions.Utilities.USBIP.URBHeader29         public override string ToString()
30         {
31             return $"Command = {Command}, SequenceNumber = 0x{SequenceNumber:X}, BusId = 0x{BusId:X}, DeviceId = 0x{DeviceId:X}, Direction = {Direction}, EndpointNumber = 0x{EndpointNumber:X}, FlagsOrStatus = 0x{FlagsOrStatus:X}";
32         }
33     }
34 
35     public enum URBDirection : uint
36     {
37         Out = 0x0,
38         In = 0x1
39     }
40 
41     public enum URBCommand: uint
42     {
43         URBRequest = 0x1,
44         Unlink = 0x2,
45         URBReply = 0x3,
46         UnlinkReply = 0x4,
47     }
48 }
49