Example #1
0
        static void DebugBytes(string name, byte[] bytes, List <Type> dataLookup)
        {
            var hex       = System.BitConverter.ToString(bytes).Replace("-", "");
            var ascii     = System.Text.Encoding.ASCII.GetString(bytes);
            var outputTxt = "";

            outputTxt += $"{debugCount} RECV {name}\n";
            debugCount++;

            if (dataLookup == null)
            {
                outputTxt += $"\tNo data lookup\n";
                outputTxt += $"\tHex: {hex}\n";
                outputTxt += $"\tAscii: {ascii}\n";
            }
            else
            {
                debugBitStreamReader.Encapsulate(bytes);
                int index = 0;
                debugBitStreamReader.Serialize(ref index);
                if (index < 0 || index >= dataLookup.Count)
                {
                    outputTxt += $"\tReceived invalid event index: {index} out of {dataLookup.Count}\n";
                    outputTxt += $"\tHex: {hex}\n";
                    outputTxt += $"\tAscii: {ascii}\n";
                }
                else
                {
                    try
                    {
                        IBitSerializable data = (IBitSerializable)Activator.CreateInstance(dataLookup[index]);
                        data.Serialize(debugBitStreamReader);
                        outputTxt += $"\t{dataLookup[index]}\n";
                        outputTxt += DeepPrint(data, 2, printableProps) + "\n";
                    }
                    catch (Exception e)
                    {
                        outputTxt += $"\tFailed to read data because: {e}";
                    }
                }
            }

            Console.WriteLine(outputTxt);
        }