Calculate() public static method

public static Calculate ( byte data ) : uint
data byte
return uint
Esempio n. 1
0
        private static byte[] ToBinary(GDBCommand packet)
        {
            var binPacket = new StringBuilder();

            binPacket.Append(Prefix);
            binPacket.Append(packet.Pack);
            binPacket.Append(Suffix);
            binPacket.Append(Checksum.Calculate(TextEncoding.GetBytes(packet.Pack)).ToString("x2"));

            return(TextEncoding.GetBytes(binPacket.ToString()));
        }
        public static byte[] ToBinary(CommandPacket packet)
        {
            string dataText = packet.Pack;

            byte[] dataBin = TextEncoding.GetBytes(dataText);

            StringBuilder binPacket = new StringBuilder();

            binPacket.Append(PacketBinConverter.Prefix);
            binPacket.Append(dataText);
            binPacket.Append(PacketBinConverter.Suffix);
            binPacket.Append(Checksum.Calculate(dataBin).ToString("x2"));

            return(TextEncoding.GetBytes(binPacket.ToString()));
        }
Esempio n. 3
0
        private void IncomingPatcket()
        {
            int len = receivedData.Count;

            if (len == 0)
            {
                return;
            }

            if (len == 1 && receivedData[0] == '+')
            {
                receivedData.Clear();
                return;
            }

            if (len == 1 && receivedData[0] == '-')
            {
                // todo: re-transmit
                receivedData.Clear();
                return;
            }

            if (len >= 4 && receivedData[0] == '$' && receivedData[len - 3] == '#')
            {
                //Debug.WriteLine($"RECEIVED: {Encoding.UTF8.GetString(receivedData.ToArray())}");
                LogEvent?.Invoke($"RECEIVED: {Encoding.UTF8.GetString(receivedData.ToArray())}");

                if (currentCommand == null)
                {
                    receivedData.Clear();
                    return;
                }

                var data = Rle.Decode(receivedData, 1, receivedData.Count - 3).ToArray();

                bool ok = false;

                if (data != null)
                {
                    // Compare checksum
                    byte receivedChecksum   = HexToDecimal(receivedData[len - 2], receivedData[len - 1]);
                    uint calculatedChecksum = Checksum.Calculate(data);

                    if (receivedChecksum == calculatedChecksum)
                    {
                        ok = true;
                    }
                }

                currentCommand.IsResponseOk = ok;
                currentCommand.ResponseData = data;

                if (ok)
                {
                    currentCommand.Decode();
                }

                var cmd = currentCommand;
                currentCommand = null;
                receivedData.Clear();

                if (cmd.Callback != null)
                {
                    ThreadPool.QueueUserWorkItem(state => { cmd.Callback.Invoke(cmd); });
                }

                return;
            }

            return;
        }