using System; using System.Collections.Generic; using System.Text; namespace DirectUSB.VirtualPackets { public class VariableDeleteRequestPacket : VirtualPacket { #region Constructors / Teardown public VariableDeleteRequestPacket(string variableName, List specifiedAttributes) : base(0x0010) { int specifiedAttributesSize = 0; foreach (var attrib in specifiedAttributes) specifiedAttributesSize += attrib.Data.Length; int totalSize = 2 + variableName.Length + 2 + (specifiedAttributes.Count * 4) + (specifiedAttributesSize) + 5; var data = new byte[totalSize]; int index = 2; data[0] = (byte)((variableName.Length >> 8) & 0xFF); data[1] = (byte)(variableName.Length & 0xFF); for (int i = 0; i < variableName.Length; i++) data[index + i] = (byte)variableName[i]; index += variableName.Length; data[index + 0] = (byte)(specifiedAttributes.Count >> 8); data[index + 1] = (byte)(specifiedAttributes.Count & 0xFF); index += 2; for (int i = 0; i < specifiedAttributes.Count; i++) { data[index + 0] = (byte)((short)specifiedAttributes[i].Type >> 8); data[index + 1] = (byte)((short)specifiedAttributes[i].Type & 0xFF); data[index + 2] = (byte)((short)specifiedAttributes[i].Data.Length >> 8); data[index + 3] = (byte)((short)specifiedAttributes[i].Data.Length & 0xFF); for (int j = 0; j < specifiedAttributes[i].Data.Length; j++) data[index + 4 + j] = specifiedAttributes[i].Data[j]; index += 4 + specifiedAttributes[i].Data.Length; } data[index + 0] = 0x01; data[index + 1] = 0x00; data[index + 2] = 0x00; data[index + 3] = 0x00; data[index + 4] = 0x00; Data = data; } #endregion } }