예제 #1
0
        private bool FindEscape(GXDebugStream stream, GXDebugStream.ESCAPE escape, IList <GXDebugError> errors)
        {
            int  byteValue;
            int  escapeCount = 0;
            long errLoc      = stream.Position;

            while ((byteValue = stream.ReadRaw()) != -1)
            {
                if (byteValue == 0xFF)
                {
                    escapeCount++;
                    if (escapeCount == 3)
                    {
                        byteValue = stream.ReadRaw();
                        if (byteValue != -1 && (byte)byteValue == escape.ToByte())
                        {
                            return(true);
                        }
                        else
                        {
                            if (errLoc != -1)
                            {
                                errors.Add(new GXDebugError(errLoc, $"Cannot find escape sequence. Looking for { escape.ToByte() }, got { byteValue }"));
                                errLoc = -1;
                            }
                            escapeCount = 0;
                        }
                    }
                }
                else
                {
                    escapeCount = 0;
                }
            }
            if (stream.Position != errLoc && errLoc != -1)
            {
                errors.Add(new GXDebugError(errLoc, "Cannot find escape sequence"));
            }
            return(false);
        }
예제 #2
0
 public static byte ToByte(this GXDebugStream.ESCAPE escape)
 {
     return((byte)escape);
 }