public static USBCommandData Create(byte command, IUSBData packet)
            {
                var p = new USBCommandData
                {
                    Command = command,
                    Data    = new byte[25]
                };
                var d = StructToBytes(packet);

                Array.Copy(d, p.Data, Math.Min(d.Length, 25));
                return(p);
            }
            public static USBPacket Create(byte type, ushort sequence, IUSBData packet)
            {
                var p = new USBPacket
                {
                    Header =
                    {
                        Sequence = sequence,
                        Type     = type
                    },
                    Data = new byte[28]
                           //Reserved = new byte[8],
                };
                var d = StructToBytes(packet);

                Array.Copy(d, p.Data, Math.Min(d.Length, 28)); // 20 data + 8 reserved
                return(p);
            }