Exemplo n.º 1
0
 private void ResetConn()
 {
     if (connEstablished)
     {
         Logger.Log("Invalidating Connection");
         connEstablished = false;
         OnConnStateChanged?.Invoke(false);
     }
 }
Exemplo n.º 2
0
        private void HandlePacket(BinaryReader r)
        {
            var id = (PacketId)r.ReadByte();

            if (!connEstablished && id != PacketId.KeepAlive)
            {
                return;
            }

            switch (id)
            {
            case PacketId.KeepAlive:
                int value = r.ReadInt32() ^ -1;
                if (value != keepAlive)
                {
                    if (connEstablished)
                    {
                        Logger.Log($"Keep Alive Mismatch. {value:X8} {keepAlive:X8}");
                        ResetConn();
                    }
                    return;
                }

                if (!connEstablished)
                {
                    connEstablished = true;
                    Logger.Log("Connection Established.");
                    OnConnStateChanged?.Invoke(true);
                }

                keepAliveResponded = true;
                SendLatencyResp();
                break;

            case PacketId.CommsReset:
                ResetConn();
                break;

            case PacketId.Latency:
                Latency = r.ReadUInt16();
                OnLatencyChanged?.Invoke();
                break;

            case PacketId.SetServos:
                SnekTime = r.ReadInt32() / 1000d;
                ServoReading?.Invoke((sbyte)r.ReadByte(), (sbyte)r.ReadByte(), (sbyte)r.ReadByte(), (sbyte)r.ReadByte());
                break;

            case PacketId.SetServos2:
                SnekTime = r.ReadInt32() / 1000d;
                ServoReading?.Invoke(r.ReadInt16(), r.ReadInt16(), r.ReadInt16(), r.ReadInt16());
                break;

            case PacketId.StrainReadings:
                SnekTime = r.ReadInt32() / 1000d;
                TensionReading?.Invoke(r.ReadInt32() / 1000d, r.ReadInt32() / 1000d, r.ReadInt32() / 1000d, r.ReadInt32() / 1000d);
                break;

            default:
                if (connEstablished)
                {
                    Logger.Log($"Unknown Packet Id ({id})");
                }
                break;
            }
        }