Example #1
0
    protected static void ReceiveDeviceMessage(string encodedMessage)
    {
        // Decode the string into an object
        SpheroDeviceMessage message = SpheroDeviceMessageDecoder.messageFromEncodedString(encodedMessage);

        // Pass it on to event handlers
        if (message is SpheroDeviceAsyncMessage)
        {
            sharedInstance.OnAsyncMessageReceived(new MessengerEventArgs(message));
        }
        else if (message is SpheroDeviceNotification)
        {
            sharedInstance.OnNotificationMessageReceived(new MessengerEventArgs(message));
        }
    }
        public void TestDecode()
        {
            string encodedString = File.ReadAllText("/Users/brian/Documents/code/development/unity-plugin/ExampleProject/SensorStreaming/Assets/Plugins/SpheroTests/DataStreamingExample.json");

            // Test that a message is created.
            SpheroDeviceMessage message =
                SpheroDeviceMessageDecoder.messageFromEncodedString(encodedString);

            Assert.NotNull(message);
            Assert.True(message is SpheroDeviceSensorsAsyncData);
            Assert.Equal(123456, message.TimeStamp);

            // Specific test for SpheroDeviceSensorsAsyncData
            SpheroDeviceSensorsAsyncData sensorsAsyncData =
                (SpheroDeviceSensorsAsyncData)message;

            Assert.Equal(2, sensorsAsyncData.FrameCount);
            Assert.Equal(0xF0000000E067E060, sensorsAsyncData.Mask);
            Assert.NotNull(sensorsAsyncData.Frames);
            Assert.True(sensorsAsyncData.Frames.Length > 1);

            // Check values for a DeviceSensorsData object
            SpheroDeviceSensorsData sensorsData = sensorsAsyncData.Frames[0];

            // Accelerometer
            Assert.Equal(1.23f, sensorsData.AccelerometerData.Normalized.X);
            Assert.Equal(1.23f, sensorsData.AccelerometerData.Normalized.Y);
            Assert.Equal(1.23f, sensorsData.AccelerometerData.Normalized.Z);
            Assert.Equal(4096, sensorsData.AccelerometerData.Raw.x);
            Assert.Equal(4096, sensorsData.AccelerometerData.Raw.y);
            Assert.Equal(4096, sensorsData.AccelerometerData.Raw.z);

            // Attitude
            Assert.Equal(45.0f, sensorsData.AttitudeData.Pitch);
            Assert.Equal(180.0f, sensorsData.AttitudeData.Roll);
            Assert.Equal(270.0f, sensorsData.AttitudeData.Yaw);

            // Quaternion
            Assert.Equal(0.3f, sensorsData.QuaternionData.Q0);
            Assert.Equal(0.7f, sensorsData.QuaternionData.Q1);
            Assert.Equal(0.3f, sensorsData.QuaternionData.Q2);
            Assert.Equal(1.0f, sensorsData.QuaternionData.Q3);

            // back EMF
            Assert.Equal(200, sensorsData.BackEMFData.Filtered.right);
            Assert.Equal(200, sensorsData.BackEMFData.Filtered.left);
            Assert.Equal(200, sensorsData.BackEMFData.Raw.right);
            Assert.Equal(200, sensorsData.BackEMFData.Raw.left);

            // locator
            Assert.Equal(190.2f, sensorsData.LocatorData.Position.x);
            Assert.Equal(85.6f, sensorsData.LocatorData.Position.y);
            Assert.True(Math.Abs(208.5746868630036f - sensorsData.LocatorData.Position.Magnitude()) < 0.001);
            Assert.Equal(9.99f, sensorsData.LocatorData.Velocity.x);
            Assert.Equal(86.4f, sensorsData.LocatorData.Velocity.y);

            // gyro
            Assert.Equal(300, sensorsData.GyroData.RotationRate.x);
            Assert.Equal(300, sensorsData.GyroData.RotationRate.y);
            Assert.Equal(300, sensorsData.GyroData.RotationRate.z);
            Assert.Equal(300, sensorsData.GyroData.RotationRateRaw.x);
            Assert.Equal(300, sensorsData.GyroData.RotationRateRaw.y);
            Assert.Equal(300, sensorsData.GyroData.RotationRateRaw.z);
        }
		public MessengerEventArgs( SpheroDeviceMessage message )
		{
			this.message = message;
		}
Example #4
0
 public MessengerEventArgs(SpheroDeviceMessage message)
 {
     this.message = message;
 }