private async void RealTimeInkPage_Loaded(object sender, RoutedEventArgs e)
        {
            IDigitalInkDevice device = AppObjects.Instance.Device;

            if (device == null)
            {
                textBlockPrompt.Text = "Device not connected";
                return;
            }

            device.Disconnected              += OnDeviceDisconnected;
            device.DeviceStatusChanged       += OnDeviceStatusChanged;
            device.PairingModeEnabledCallback = OnPairingModeEnabledAsync;

            IRealTimeInkService service = device.GetService(InkDeviceService.RealTimeInk) as IRealTimeInkService;

            service.NewPage            += OnNewPage;
            service.HoverPointReceived += OnHoverPointReceived;
            //service.StrokeStarted += Service_StrokeStarted;
            //service.StrokeEnded += Service_StrokeEnded;
            //service.StrokeUpdated += Service_StrokeUpdated;

            if (service == null)
            {
                textBlockPrompt.Text = "The Real-time Ink service is not supported on this device";
                return;
            }

            textBlockPrompt.Text = AppObjects.GetStringForDeviceStatus(device.DeviceStatus);

            try
            {
                uint width = (uint)await device.GetPropertyAsync("Width", m_cts.Token);

                uint height = (uint)await device.GetPropertyAsync("Height", m_cts.Token);

                uint ptSize = (uint)await device.GetPropertyAsync("PointSize", m_cts.Token);

                service.Transform = AppObjects.CalculateTransform(width, height, ptSize);

                float scaleFactor = ptSize * AppObjects.micrometerToDip;

                InkCanvasDocument document = new InkCanvasDocument();
                document.Size = new Windows.Foundation.Size(height * scaleFactor, width * scaleFactor);
                document.InkCanvasLayers.Add(new InkCanvasLayer());

                inkCanvas.InkCanvasDocument  = document;
                inkCanvas.GesturesManager    = new GesturesManager();
                inkCanvas.StrokeDataProvider = service;

                if (!service.IsStarted)
                {
                    await service.StartAsync(false, m_cts.Token);
                }
            }
            catch (Exception)
            {
            }
        }
        private async Task DisplayDevicePropertiesAsync()
        {
            //buttonScan.IsEnabled = false;
            buttonScan.IsEnabled = true;
            IDigitalInkDevice device = AppObjects.Instance.Device;

            try
            {
                m_propertiesCollection[0].PropertyValue = (string)await device.GetPropertyAsync(SmartPadProperties.DeviceName, m_cts.Token);

                m_propertiesCollection[1].PropertyValue = (string)await device.GetPropertyAsync(SmartPadProperties.SerialNumber, m_cts.Token);

                m_propertiesCollection[2].PropertyValue = ((uint)await device.GetPropertyAsync(SmartPadProperties.Width, m_cts.Token)).ToString();
                m_propertiesCollection[3].PropertyValue = ((uint)await device.GetPropertyAsync(SmartPadProperties.Height, m_cts.Token)).ToString();
                m_propertiesCollection[4].PropertyValue = ((uint)await device.GetPropertyAsync(SmartPadProperties.PointSize, m_cts.Token)).ToString();
                m_propertiesCollection[5].PropertyValue = ((uint)await device.GetPropertyAsync(SmartPadProperties.SamplingRate, m_cts.Token)).ToString();
                m_propertiesCollection[6].PropertyValue = ((int)await device.GetPropertyAsync(SmartPadProperties.BatteryLevel, m_cts.Token)).ToString() + "%";
            }
            catch (Exception ex)
            {
                textBlockStatus.Text = $"Exception: {ex.Message}";

                buttonRealTime.IsEnabled = false;
                buttonScan.IsEnabled     = true;
            }
        }
        private async void RealTimeInkPage_Loaded(object sender, RoutedEventArgs e)
        {
            IDigitalInkDevice device = AppObjects.Instance.Device;

            device.Disconnected += OnDeviceDisconnected;

            NavigationService.Navigating += NavigationService_Navigating;
            NavigationService.Navigated  += NavigationService_Navigated;

            IRealTimeInkService service = device.GetService(InkDeviceService.RealTimeInk) as IRealTimeInkService;

            service.NewPage     += OnNewPage; //Clear page on new page or layer
            service.NewLayer    += OnNewPage;
            m_Canvas.DataContext = this;
            try
            {
                uint width = (uint)await device.GetPropertyAsync("Width", m_cts.Token);

                uint height = (uint)await device.GetPropertyAsync("Height", m_cts.Token);

                uint ptSize = (uint)await device.GetPropertyAsync("PointSize", m_cts.Token);


                m_deviceSize.Width  = width;
                m_deviceSize.Height = height;

                SetCanvasScaling();

                service.StrokeStarted      += Service_StrokeStarted;
                service.StrokeUpdated      += Service_StrokeUpdated;
                service.StrokeEnded        += Service_StrokeEnded;
                service.HoverPointReceived += Service_HoverPointReceived;;

                if (!service.IsStarted)
                {
                    await service.StartAsync(true, m_cts.Token);
                }
            }
            catch (Exception)
            {
            }
        }
        private async void FileTransferPage_Loaded(object sender, RoutedEventArgs e)
        {
            IDigitalInkDevice device = AppObjects.Instance.Device;

            device.Disconnected              += OnDeviceDisconnected;
            device.DeviceStatusChanged       += OnDeviceStatusChanged;
            device.PairingModeEnabledCallback = OnPairingModeEnabledAsync;

            IFileTransferService service = device.GetService(InkDeviceService.FileTransfer) as IFileTransferService;

            if (service == null)
            {
                textBlockPrompt.Text = "The File Transfer service is not supported on this device";
                return;
            }

            try
            {
                textBlockPrompt.Text = s_fileTransferPromptMessage;

                uint width = (uint)await device.GetPropertyAsync("Width", m_cts.Token);

                uint height = (uint)await device.GetPropertyAsync("Height", m_cts.Token);

                uint ptSize = (uint)await device.GetPropertyAsync("PointSize", m_cts.Token);

                service.Transform = AppObjects.CalculateTransform(width, height, ptSize);

                if (!service.IsStarted)
                {
                    await service.StartAsync(StrokesReceivedAsync, false, m_cts.Token);
                }
            }
            catch (Exception)
            {
            }
        }