Commit b9399058 authored by David Kline's avatar David Kline
Browse files

add functionality to universal windows test app for HoloLens

parent e8eff8be
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -113,10 +113,6 @@ namespace TestApp
            set;
        }

        // TODO: consider adding support for the fully qualified device name 
        // public string QualifiedName
        // { get; set; }

        /// <summary>
        /// Gets the raw device certificate.
        /// </summary>
+9 −4
Original line number Diff line number Diff line
@@ -27,8 +27,13 @@ namespace TestApp
                address = "localhost:10080";
            }

            this.Connection = new Uri(string.Format("{0}://{1}", this.GetUriScheme(address), address));
            this.Credentials = new NetworkCredential(userName, password);
            this.Connection = new Uri(
                string.Format("{0}://{1}", 
                this.GetUriScheme(address), 
                address));
            this.Credentials = new NetworkCredential(
                userName, 
                password);
        }

        public Uri Connection
+21 −4
Original line number Diff line number Diff line
@@ -5,8 +5,7 @@
    xmlns:local="using:TestAppHL.UniversalWindows"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" Width="640" Height="480
    ">
    mc:Ignorable="d" Width="1024" Height="768">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBlock x:Name="addressLabel" HorizontalAlignment="Left" Margin="15,18,0,0" TextWrapping="Wrap" Text="Device Address" VerticalAlignment="Top"/>
@@ -20,7 +19,25 @@
        <TextBlock x:Name="ssidKeyLabel" HorizontalAlignment="Left" Margin="310,55,0,0" TextWrapping="Wrap" Text="Network key" VerticalAlignment="Top"/>
        <TextBox x:Name="networkKey" HorizontalAlignment="Left" Margin="423,49,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="147"/>
        <CheckBox x:Name="updateDeviceConnection" Content="Use discovered device address" HorizontalAlignment="Left" Margin="310,81,0,0" VerticalAlignment="Top" IsChecked="True"/>
        <Button x:Name="runTests" Content="Run" HorizontalAlignment="Left" Margin="10,123,0,0" VerticalAlignment="Top" Width="620" Click="runTests_Click"/>
        <TextBlock x:Name="testOutput" Margin="10,166,10,10" TextWrapping="Wrap" Text=""/>
        <Button x:Name="connectToDevice" Content="Connect" HorizontalAlignment="Left" Margin="10,123,0,0" VerticalAlignment="Top" Width="560" Click="connectToDevice_Click"/>
        <CheckBox x:Name="clearOutput" Content="Clear output for each test" HorizontalAlignment="Left" Margin="592,13,0,0" VerticalAlignment="Top"/>
        <TextBlock x:Name="testOutput" Margin="592,49,10,10" TextWrapping="Wrap" Text=""/>
        <Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="1" Margin="16,168,0,0" VerticalAlignment="Top" Width="549" RenderTransformOrigin="0.5,0.5">
            <Border.RenderTransform>
                <CompositeTransform ScaleY="-1"/>
            </Border.RenderTransform>
        </Border>
        <Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Margin="580,15,0,18" Width="2" RenderTransformOrigin="0.5,0.5">
            <Border.RenderTransform>
                <CompositeTransform ScaleX="-1"/>
            </Border.RenderTransform>
        </Border>

        <Button x:Name="getName" Content="Get Device Name" HorizontalAlignment="Left" Margin="15,194,0,0" VerticalAlignment="Top" Width="144" Click="getDeviceName_Click" IsEnabled="False"/>
        <Button x:Name="getBatteryLevel" Content="Get Battery Level" HorizontalAlignment="Left" Margin="15,231,0,0" VerticalAlignment="Top" Width="144" Click="getBatteryLevel_Click" IsEnabled="False"/>
        <Button x:Name="getPowerState" Content="Get Power State" HorizontalAlignment="Left" Margin="15,268,0,0" VerticalAlignment="Top" Width="144" Click="getPowerState_Click" IsEnabled="False"/>
        <Button x:Name="getIpd" Content="Get IPD" HorizontalAlignment="Left" Margin="202,194,0,0" VerticalAlignment="Top" Width="144" Click="getIpd_Click" IsEnabled="False"/>
        <Button x:Name="setIpd" Content="Set IPD" HorizontalAlignment="Left" Margin="423,194,0,0" VerticalAlignment="Top" Width="144" Click="setIpd_Click" IsEnabled="False"/>
        <TextBox x:Name="ipdValue" HorizontalAlignment="Left" Margin="351,194,0,0" TextWrapping="NoWrap" Text="0" VerticalAlignment="Top" Width="67" TextAlignment="Right" IsEnabled="False"/>
    </Grid>
</Page>
+189 −49
Original line number Diff line number Diff line
@@ -15,24 +15,34 @@ namespace TestAppHL.UniversalWindows
    /// </summary>
    public sealed partial class MainPage : Page
    {
        private DevicePortal portal;

        public MainPage()
        {
            this.InitializeComponent();
        }

        private async void RunTests()
        {
            this.testOutput.Text = string.Empty;

            DevicePortal portal = new DevicePortal(
            portal = new DevicePortal(
                new DevicePortalConnection(
                    this.address.Text,
                    this.username.Text,
                    this.password.Text));
            //portal.ConnectionStatus += DevicePortal_ConnectionStatus;
            //portal.AppInstallStatus += DevicePortal_AppInstallStatus;
        }

        private async void ConnectToDevice()
        {
            bool clearOutput = this.clearOutput.IsChecked.HasValue ? this.clearOutput.IsChecked.Value : false;
            if (clearOutput)
            { 
                this.testOutput.Text = string.Empty;
            }

            StringBuilder sb = new StringBuilder();
            sb.Append(this.testOutput.Text);

            try
            {
                sb.AppendLine("Connecting...");
                this.testOutput.Text = sb.ToString();
                string ssid = !string.IsNullOrWhiteSpace(this.ssid.Text) ? this.ssid.Text : null;
@@ -55,55 +65,185 @@ namespace TestAppHL.UniversalWindows
                    portal.Platform.ToString()));
                this.testOutput.Text = sb.ToString();

                this.getName.IsEnabled = true;
                this.getBatteryLevel.IsEnabled = true;
                this.getPowerState.IsEnabled = true;
                this.getIpd.IsEnabled = true;
                this.setIpd.IsEnabled = true;
                this.ipdValue.IsEnabled = true;
            }
            catch(Exception ex)
            {
                sb.AppendLine("Failed device connection.");
                sb.AppendLine(ex.GetType().ToString() + " - " + ex.Message);
                this.testOutput.Text = sb.ToString();
            }

            this.connectToDevice.IsEnabled = true;
        }

        private void DevicePortal_AppInstallStatus(
            object sender,
            ApplicationInstallStatusEventArgs args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(testOutput.Text);
            sb.AppendLine(args.Message);
            this.testOutput.Text = sb.ToString();
        }

        private void DevicePortal_ConnectionStatus(
            object sender, 
            DeviceConnectionStatusEventArgs args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(testOutput.Text);
            sb.AppendLine(args.Message);
            this.testOutput.Text = sb.ToString();
        }

        private void connectToDevice_Click(object sender, RoutedEventArgs e)
        {
            this.getName.IsEnabled = false;
            this.getBatteryLevel.IsEnabled = false;
            this.getPowerState.IsEnabled = false;
            this.getIpd.IsEnabled = false;
            this.setIpd.IsEnabled = false;
            this.ipdValue.IsEnabled = false;

            this.connectToDevice.IsEnabled = false;

            this.ConnectToDevice();
        }

        private async void getDeviceName_Click(object sender, RoutedEventArgs e)
        {
            bool clearOutput = this.clearOutput.IsChecked.HasValue ? this.clearOutput.IsChecked.Value : false;
            if (clearOutput)
            { 
                this.testOutput.Text = string.Empty;
            }

            StringBuilder sb = new StringBuilder();
            sb.Append(this.testOutput.Text);

            try
            {
                string deviceName = await portal.GetDeviceName();
                sb.Append("Device name: ");
                sb.AppendLine(deviceName);
            this.testOutput.Text = sb.ToString();
            }
            catch(Exception ex)
            {
                sb.AppendLine("Failed to get IPD.");
                sb.AppendLine(ex.GetType().ToString() + " - " + ex.Message);
            }

            //await portal.SetInterPupilaryDistance(67.5f);
            float ipd = await portal.GetInterPupilaryDistance();
            sb.Append("IPD: ");
            sb.AppendLine(ipd.ToString());
            this.testOutput.Text = sb.ToString();
        }

        private async void getBatteryLevel_Click(object sender, RoutedEventArgs e)
        {
            bool clearOutput = this.clearOutput.IsChecked.HasValue ? this.clearOutput.IsChecked.Value : false;
            if (clearOutput)
            { 
                this.testOutput.Text = string.Empty;
            }

            StringBuilder sb = new StringBuilder();
            sb.Append(this.testOutput.Text);

            try
            {
                BatteryState batteryState = await portal.GetBatteryState();
                sb.Append("Battery level: ");
                sb.AppendLine(batteryState.Level.ToString());
            }
            catch(Exception ex)
            {
                sb.AppendLine("Failed to get IPD.");
                sb.AppendLine(ex.GetType().ToString() + " - " + ex.Message);
            }

            this.testOutput.Text = sb.ToString();
        }

        private async void getPowerState_Click(object sender, RoutedEventArgs e)
        {
            bool clearOutput = this.clearOutput.IsChecked.HasValue ? this.clearOutput.IsChecked.Value : false;
            if (clearOutput)
            { 
                this.testOutput.Text = string.Empty;
            }

            StringBuilder sb = new StringBuilder();
            sb.Append(this.testOutput.Text);

            try
            {
                PowerState powerState = await portal.GetPowerState();
                sb.Append("In low power state: ");
                sb.AppendLine(powerState.InLowPowerState.ToString());
            this.testOutput.Text = sb.ToString();
            }
            catch(Exception ex)
            {
                sb.AppendLine("Failed to get IPD.");
                sb.AppendLine(ex.GetType().ToString() + " - " + ex.Message);
            }

            this.runTests.IsEnabled = true;
            this.testOutput.Text = sb.ToString();
        }

        private void DevicePortal_AppInstallStatus(
            object sender,
            ApplicationInstallStatusEventArgs args)
        private async void getIpd_Click(object sender, RoutedEventArgs e)
        {
            bool clearOutput = this.clearOutput.IsChecked.HasValue ? this.clearOutput.IsChecked.Value : false;
            if (clearOutput)
            { 
                this.testOutput.Text = string.Empty;
            }

            StringBuilder sb = new StringBuilder();
            sb.Append(testOutput.Text);
            sb.AppendLine(args.Message);
            sb.Append(this.testOutput.Text);

            try
            {
                float ipd = await portal.GetInterPupilaryDistance();
                sb.Append("IPD: ");
                sb.AppendLine(ipd.ToString());
            }
            catch(Exception ex)
            {
                sb.AppendLine("Failed to get IPD.");
                sb.AppendLine(ex.GetType().ToString() + " - " + ex.Message);
            }

            this.testOutput.Text = sb.ToString();
        }

        private void DevicePortal_ConnectionStatus(
            object sender, 
            DeviceConnectionStatusEventArgs args)
        private async void setIpd_Click(object sender, RoutedEventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(testOutput.Text);
            sb.AppendLine(args.Message);
            this.testOutput.Text = sb.ToString();
            bool clearOutput = this.clearOutput.IsChecked.HasValue ? this.clearOutput.IsChecked.Value : false;
            if (clearOutput)
            { 
                this.testOutput.Text = string.Empty;
            }

        private void runTests_Click(object sender, RoutedEventArgs e)
            StringBuilder sb = new StringBuilder();
            sb.Append(this.testOutput.Text);

            try
            {
            this.runTests.IsEnabled = false;
                float ipd = float.Parse(this.ipdValue.Text);
                sb.AppendLine("Setting IPD to : " + ipd.ToString());
                await portal.SetInterPupilaryDistance(ipd);
            }
            catch(Exception ex)
            {
                sb.AppendLine("Failed to set IPD.");
                sb.AppendLine(ex.GetType().ToString() + " - " + ex.Message);
            }

            this.RunTests();
            this.testOutput.Text = sb.ToString();
        }
    }
}
+4 −7
Original line number Diff line number Diff line
@@ -113,10 +113,6 @@ namespace TestApp
            set;
        }

        // TODO: consider adding support for the fully qualified device name 
        // public string QualifiedName
        // { get; set; }

        /// <summary>
        /// Gets the raw device certificate.
        /// </summary>
@@ -203,9 +199,10 @@ namespace TestApp
            string address,
            bool requiresHttps = true)
        {
            return (address.Contains("127.0.0.1") || 
                    address.Contains("localhost") || 
                    !requiresHttps) ? "http" : "https";
            return "http";
            //return (address.Contains("127.0.0.1") || 
            //        address.Contains("localhost") || 
            //        !requiresHttps) ? "http" : "https";
        }
    }
}
Loading