public void TestClientToServer() { WearableProxyServerProtocol serverProtocol = new WearableProxyServerProtocol(); int serverIndex = 0; byte[] serverBuffer = new byte[1024]; // Register callbacks for packet processing serverProtocol.KeepAlive += () => { _lastPacketName = "KeepAlive"; }; serverProtocol.PingQuery += () => { _lastPacketName = "PingQuery"; }; serverProtocol.PingResponse += () => { _lastPacketName = "PingResponse"; }; serverProtocol.SetNewConfig += deviceConfig => { _lastPacketName = "SetConfig"; Assert.AreEqual(SensorUpdateInterval.ThreeHundredTwentyMs, deviceConfig.updateInterval); Assert.AreEqual(false, deviceConfig.rotationSixDof.isEnabled); Assert.AreEqual(true, deviceConfig.gyroscope.isEnabled); Assert.AreEqual(false, deviceConfig.accelerometer.isEnabled); Assert.AreEqual(false, deviceConfig.headNodGesture.isEnabled); Assert.AreEqual(true, deviceConfig.doubleTapGesture.isEnabled); }; serverProtocol.QueryConfigStatus += () => { _lastPacketName = "QueryConfig"; }; serverProtocol.RSSIFilterValueChange += value => { _lastPacketName = "SetRSSI"; Assert.AreEqual(-40, value); }; serverProtocol.InitiateDeviceSearch += () => { _lastPacketName = "StartSearch"; }; serverProtocol.StopDeviceSearch += () => { _lastPacketName = "StopSearch"; }; serverProtocol.ConnectToDevice += uid => { _lastPacketName = "ConnectToDevice"; Assert.AreEqual("00000000-0000-0000-0000-000000000000", uid); }; serverProtocol.DisconnectFromDevice += () => { _lastPacketName = "DisconnectFromDevice"; }; serverProtocol.QueryConnectionStatus += () => { _lastPacketName = "QueryConnection"; }; // Encode WearableProxyProtocolBase.EncodeKeepAlive(serverBuffer, ref serverIndex); WearableProxyProtocolBase.EncodePingQuery(serverBuffer, ref serverIndex); WearableProxyProtocolBase.EncodePingResponse(serverBuffer, ref serverIndex); WearableDeviceConfig config = new WearableDeviceConfig { updateInterval = SensorUpdateInterval.ThreeHundredTwentyMs, gyroscope = { isEnabled = true }, doubleTapGesture = { isEnabled = true } }; WearableProxyClientProtocol.EncodeSetNewConfig(serverBuffer, ref serverIndex, config); WearableProxyClientProtocol.EncodeQueryConfig(serverBuffer, ref serverIndex); WearableProxyClientProtocol.EncodeRSSIFilterControl(serverBuffer, ref serverIndex, -40); WearableProxyClientProtocol.EncodeInitiateDeviceSearch(serverBuffer, ref serverIndex); WearableProxyClientProtocol.EncodeStopDeviceSearch(serverBuffer, ref serverIndex); WearableProxyClientProtocol.EncodeConnectToDevice(serverBuffer, ref serverIndex, "00000000-0000-0000-0000-000000000000"); WearableProxyClientProtocol.EncodeDisconnectFromDevice(serverBuffer, ref serverIndex); WearableProxyClientProtocol.EncodeQueryConnectionStatus(serverBuffer, ref serverIndex); WearableProxyProtocolBase.EncodeKeepAlive(serverBuffer, ref serverIndex); // Decode serverIndex = 0; serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("KeepAlive", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("PingQuery", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("PingResponse", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("SetConfig", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("QueryConfig", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("SetRSSI", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("StartSearch", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("StopSearch", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("ConnectToDevice", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("DisconnectFromDevice", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("QueryConnection", _lastPacketName); serverProtocol.ProcessPacket(serverBuffer, ref serverIndex); Assert.AreEqual("KeepAlive", _lastPacketName); }