public static string Prettify(BurstCuttingArea?BCAResponse) { if (BCAResponse == null) { return(null); } BurstCuttingArea response = BCAResponse.Value; StringBuilder sb = new StringBuilder(); #if DEBUG if (response.Reserved1 != 0) { sb.AppendFormat("Reserved1 = 0x{0:X2}", response.Reserved1).AppendLine(); } if (response.Reserved2 != 0) { sb.AppendFormat("Reserved2 = 0x{0:X2}", response.Reserved2).AppendLine(); } #endif sb.AppendFormat("Blu-ray Burst Cutting Area in hex follows:"); sb.AppendLine(PrintHex.ByteArrayToHexArrayString(response.BCA, 80)); return(sb.ToString()); }
public static BurstCuttingArea?Decode(byte[] BCAResponse) { if (BCAResponse == null) { return(null); } if (BCAResponse.Length != 68) { DicConsole.DebugWriteLine("BD BCA decoder", "Found incorrect Blu-ray BCA size ({0} bytes)", BCAResponse.Length); return(null); } BurstCuttingArea decoded = new BurstCuttingArea { DataLength = BigEndianBitConverter.ToUInt16(BCAResponse, 0), Reserved1 = BCAResponse[2], Reserved2 = BCAResponse[3], BCA = new byte[64] }; Array.Copy(BCAResponse, 4, decoded.BCA, 0, 64); return(decoded); }