public static TrackResourcesInformation?Decode001b(byte[] response) { if (response.Length != 12) { return(null); } if ((response[2] & 0xE0) != 0x20) { return(null); } TrackResourcesInformation decoded = new TrackResourcesInformation { DataLength = (ushort)((response[0] << 8) + response[1]) }; if (decoded.DataLength + 2 != response.Length) { return(null); } decoded.DataType = (byte)((response[2] & 0xE0) >> 5); decoded.MaxTracks = (ushort)((response[4] << 8) + response[5]); decoded.AssignedTracks = (ushort)((response[6] << 8) + response[7]); decoded.MaxAppendableTracks = (ushort)((response[8] << 8) + response[9]); decoded.AppendableTracks = (ushort)((response[10] << 8) + response[11]); return(decoded); }
public static string Prettify001b(TrackResourcesInformation?information) { if (!information.HasValue) { return(null); } TrackResourcesInformation decoded = information.Value; if (decoded.DataType != 1) { return(null); } StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0} maximum possible tracks on the disc", decoded.MaxTracks).AppendLine(); sb.AppendFormat("{0} assigned tracks on the disc", decoded.AssignedTracks).AppendLine(); sb.AppendFormat("{0} maximum possible appendable tracks on the disc", decoded.AppendableTracks) .AppendLine(); sb.AppendFormat("{0} current appendable tracks on the disc", decoded.MaxAppendableTracks).AppendLine(); return(sb.ToString()); }