예제 #1
0
        public void TestAudioControl()
        {
            AudioControl packet = NanoPacketFactory
                                  .ParsePacket(ResourcesProvider.GetBytes("tcp_audio_control.bin", ResourceType.Nano), _context)
                                  as AudioControl;

            Assert.NotNull(packet);
            Assert.NotNull(packet.Header);

            Assert.Equal <NanoChannel>(NanoChannel.Audio, packet.Channel);
            Assert.Equal <NanoPayloadType>(NanoPayloadType.Streamer, packet.Header.PayloadType);

            Assert.Equal <AudioPayloadType>(AudioPayloadType.Control,
                                            (AudioPayloadType)packet.StreamerHeader.PacketType);
            Assert.Equal <StreamerFlags>(StreamerFlags.GotSeqAndPrev | StreamerFlags.Unknown1,
                                         packet.StreamerHeader.Flags);
            Assert.Equal <uint>(2, packet.StreamerHeader.SequenceNumber);
            Assert.Equal <uint>(1, packet.StreamerHeader.PreviousSequenceNumber);

            Assert.Equal <AudioControlFlags>(AudioControlFlags.StartStream, packet.Flags);
        }
        public void TestConnectRequest()
        {
            var message = new Msgn.Connection.ConnectRequestMessage()
            {
                Authorization = "dummy_token",
                UserHash      = "deadbeefdeadbeefde",
                DeviceId      = System.Guid.Parse("545d30de-b475-1b43-adb2-eb6b9e546014"),
                Crypto        = _crypto,
                InitVector    = new byte[]
                {
                    0x29, 0x79, 0xd2, 0x5e, 0xa0, 0x3d, 0x97, 0xf5,
                    0x8f, 0x46, 0x93, 0x0a, 0x28, 0x8b, 0xf5, 0xd2
                },
                SequenceNumber = 0,
                SequenceBegin  = 0,
                SequenceEnd    = 2
            };

            var packet = AssembleMessage(message);

            Assert.Equal <byte[]>(ResourcesProvider.GetBytes("connect_request.bin", ResourceType.SmartGlass), packet);
        }
예제 #3
0
        public void TestInputClientHandshake()
        {
            InputClientHandshake packet = NanoPacketFactory
                                          .ParsePacket(ResourcesProvider.GetBytes("tcp_input_client_handshake.bin", ResourceType.Nano), _context)
                                          as InputClientHandshake;

            Assert.NotNull(packet);
            Assert.NotNull(packet.Header);

            Assert.Equal <NanoChannel>(NanoChannel.Input, packet.Channel);
            Assert.Equal <NanoPayloadType>(NanoPayloadType.Streamer, packet.Header.PayloadType);

            Assert.Equal <InputPayloadType>(InputPayloadType.ClientHandshake,
                                            (InputPayloadType)packet.StreamerHeader.PacketType);
            Assert.Equal <StreamerFlags>(StreamerFlags.GotSeqAndPrev | StreamerFlags.Unknown1,
                                         packet.StreamerHeader.Flags);
            Assert.Equal <uint>(1, packet.StreamerHeader.SequenceNumber);
            Assert.Equal <uint>(0, packet.StreamerHeader.PreviousSequenceNumber);

            Assert.Equal <uint>(10, packet.MaxTouches);
            Assert.Equal <ulong>(1498690645999, packet.ReferenceTimestamp);
        }
        public void TestSystemTextInputMessage()
        {
            var message = new Msgs.Messages.SystemTextInputMessage()
            {
                BaseVersion         = 1,
                Delta               = new TextDelta[0],
                Flags               = 0,
                SelectionStart      = -1,
                SelectionLength     = -1,
                SubmittedVersion    = 2,
                TextChunk           = "h",
                TextChunkByteStart  = 0,
                TextSessionId       = 8,
                TotalTextBytelength = 1
            };

            message.Header.ChannelId          = 0x9A;
            message.Header.RequestAcknowledge = true;

            var packet = AssembleSessionMessage(message, 0x97, 32);

            Assert.Equal <byte[]>(ResourcesProvider.GetBytes("system_text_input.bin", ResourceType.SmartGlass), packet);
        }
예제 #5
0
        public void TestStreamerControlChangeVideoQuality()
        {
            ChangeVideoQuality packet = NanoPacketFactory
                                        .ParsePacket(ResourcesProvider.GetBytes("tcp_control_msg_with_header_change_video_quality.bin", ResourceType.Nano), _context)
                                        as ChangeVideoQuality;

            Assert.NotNull(packet);
            Assert.NotNull(packet.Header);

            Assert.Equal <NanoChannel>(NanoChannel.Control, packet.Channel);
            Assert.Equal <NanoPayloadType>(NanoPayloadType.Streamer, packet.Header.PayloadType);

            Assert.Equal <uint>(0, packet.StreamerHeader.PacketType);
            Assert.Equal <StreamerFlags>(StreamerFlags.GotSeqAndPrev | StreamerFlags.Unknown1,
                                         packet.StreamerHeader.Flags);
            Assert.Equal <uint>(1, packet.StreamerHeader.SequenceNumber);
            Assert.Equal <uint>(0, packet.StreamerHeader.PreviousSequenceNumber);

            Assert.Equal <uint>(0, packet.ControlHeader.PreviousSequence);
            Assert.Equal <ushort>(1, packet.ControlHeader.Unknown1);
            Assert.Equal <ushort>(1406, packet.ControlHeader.Unknown2);
            Assert.Equal <ControlOpCode>(ControlOpCode.ChangeVideoQuality, packet.ControlHeader.OpCode);
        }
예제 #6
0
        public DeviceTests()
        {
            byte[] cert     = ResourcesProvider.GetBytes("selfsigned_cert.bin", ResourceType.Misc);
            byte[] msgBytes = ResourcesProvider.GetBytes("presence_response.bin", ResourceType.SmartGlass);
            var    x509     = CryptoExtensions.DeserializeCertificateAsn(cert);

            _presenceResponse = new PresenceResponseMessage();
            using (EndianReader er = new EndianReader(msgBytes))
            {
                _presenceResponse.Deserialize(er);
            }
            _presenceResponse.Origin = new IPEndPoint(IPAddress.Parse("192.168.1.2"), 5234);

            _deviceManual = new Device(
                DeviceType.XboxOne,
                IPAddress.Parse("192.168.1.3"),
                "XboxOne",
                "FD0123456789",
                new Guid("de305d54-75b4-431b-adb2-eb6b9e546014")
                );

            _deviceFromResponse = new Device(_presenceResponse);
        }
        public void TestSystemTouchMessage()
        {
            var message = new Msgs.Messages.SystemTouchMessage()
            {
                Timestamp   = 182459592,
                Touchpoints = new TouchPoint[]
                {
                    new TouchPoint()
                    {
                        Action = TouchAction.Down,
                        Id     = 1,
                        PointX = 244,
                        PointY = 255
                    }
                }
            };

            message.Header.ChannelId          = 0x98;
            message.Header.RequestAcknowledge = true;

            var packet = AssembleSessionMessage(message, 26, 32);

            Assert.Equal <byte[]>(ResourcesProvider.GetBytes("system_touch.bin", ResourceType.SmartGlass), packet);
        }
        public void TestGamepadMessage()
        {
            var message = new Msgs.Messages.GamepadMessage()
            {
                State = new GamepadState()
                {
                    Timestamp        = 0,
                    Buttons          = GamepadButtons.B,
                    LeftTrigger      = 0.0f,
                    RightTrigger     = 0.0f,
                    LeftThumbstickX  = 0.0f,
                    RightThumbstickX = 0.0f,
                    LeftThumbstickY  = 0.0f,
                    RightThumbstickY = 0.0f
                }
            };

            message.Header.ChannelId          = 180;
            message.Header.RequestAcknowledge = false;

            var packet = AssembleSessionMessage(message, 79, 41);

            Assert.Equal <byte[]>(ResourcesProvider.GetBytes("gamepad.bin", ResourceType.SmartGlass), packet);
        }
예제 #9
0
        public void TestVideoData()
        {
            VideoData packet = NanoPacketFactory
                               .ParsePacket(ResourcesProvider.GetBytes("udp_video_data.bin", ResourceType.Nano), _context)
                               as VideoData;

            Assert.NotNull(packet);
            Assert.NotNull(packet.Header);

            Assert.Equal <NanoChannel>(NanoChannel.Video, packet.Channel);
            Assert.Equal <NanoPayloadType>(NanoPayloadType.Streamer, packet.Header.PayloadType);

            Assert.Equal <VideoPayloadType>(VideoPayloadType.Data,
                                            (VideoPayloadType)packet.StreamerHeader.PacketType);
            Assert.Equal <StreamerFlags>((StreamerFlags)0, packet.StreamerHeader.Flags);

            Assert.Equal <uint>(4, packet.Flags);
            Assert.Equal <uint>(3715731054, packet.FrameId);
            Assert.Equal <ulong>(3365613642, packet.Timestamp);
            Assert.Equal <uint>(5594, packet.TotalSize);
            Assert.Equal <uint>(5, packet.PacketCount);
            Assert.Equal <uint>(0, packet.Offset);
            Assert.Equal <int>(1119, packet.Data.Length);
        }
예제 #10
0
        public void TestAudioClientHandshake()
        {
            AudioClientHandshake packet = NanoPacketFactory
                                          .ParsePacket(ResourcesProvider.GetBytes("tcp_audio_client_handshake.bin", ResourceType.Nano), _context)
                                          as AudioClientHandshake;

            Assert.NotNull(packet);
            Assert.NotNull(packet.Header);

            Assert.Equal <NanoChannel>(NanoChannel.Audio, packet.Channel);
            Assert.Equal <NanoPayloadType>(NanoPayloadType.Streamer, packet.Header.PayloadType);

            Assert.Equal <AudioPayloadType>(AudioPayloadType.ClientHandshake,
                                            (AudioPayloadType)packet.StreamerHeader.PacketType);
            Assert.Equal <StreamerFlags>(StreamerFlags.GotSeqAndPrev | StreamerFlags.Unknown1,
                                         packet.StreamerHeader.Flags);
            Assert.Equal <uint>(1, packet.StreamerHeader.SequenceNumber);
            Assert.Equal <uint>(0, packet.StreamerHeader.PreviousSequenceNumber);

            Assert.Equal <uint>(693041842, packet.InitialFrameID);
            Assert.Equal <uint>(2, packet.RequestedFormat.Channels);
            Assert.Equal <uint>(48000, packet.RequestedFormat.SampleRate);
            Assert.Equal <AudioCodec>(AudioCodec.AAC, packet.RequestedFormat.Codec);
        }