diff --git a/BluetoothLEExplorer/BluetoothLEExplorer.sln b/BluetoothLEExplorer/BluetoothLEExplorer.sln new file mode 100644 index 0000000..e012f60 --- /dev/null +++ b/BluetoothLEExplorer/BluetoothLEExplorer.sln @@ -0,0 +1,125 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.16 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GattServicesLibrary", "..\GattServicesLibrary\GattServicesLibrary\GattServicesLibrary.csproj", "{644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GattHelper", "GattHelper\GattHelper.csproj", "{37C63FDD-D995-4CC2-B014-4FB323194001}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SortedObservableCollection", "SortedObservableCollection", "{92EE95F6-40B6-4E5A-97C9-E4234D17C022}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SortedObservableCollection", "..\SortedObservableCollection\SortedObservableCollection\SortedObservableCollection.csproj", "{BE79FC52-6041-4913-B0D4-66C100944904}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BluetoothLEExplorer", "BluetoothLEExplorer\BluetoothLEExplorer.csproj", "{AD1CBE3C-A68A-4E02-8001-E02B815560EE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BluetoothLEExplorerUnitTests", "BluetoothLEExplorerUnitTests\BluetoothLEExplorerUnitTests.csproj", "{6F503DF9-71C9-4340-90BB-D9AA14ADB686}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|ARM.ActiveCfg = Debug|ARM + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|ARM.Build.0 = Debug|ARM + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|x64.ActiveCfg = Debug|x64 + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|x64.Build.0 = Debug|x64 + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|x86.ActiveCfg = Debug|x86 + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Debug|x86.Build.0 = Debug|x86 + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|Any CPU.Build.0 = Release|Any CPU + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|ARM.ActiveCfg = Release|ARM + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|ARM.Build.0 = Release|ARM + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|x64.ActiveCfg = Release|x64 + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|x64.Build.0 = Release|x64 + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|x86.ActiveCfg = Release|x86 + {644F40AD-EABB-4570-B9B7-E3F8DDAA80F3}.Release|x86.Build.0 = Release|x86 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|ARM.ActiveCfg = Debug|ARM + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|ARM.Build.0 = Debug|ARM + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|x64.ActiveCfg = Debug|x64 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|x64.Build.0 = Debug|x64 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|x86.ActiveCfg = Debug|x86 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Debug|x86.Build.0 = Debug|x86 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|Any CPU.Build.0 = Release|Any CPU + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|ARM.ActiveCfg = Release|ARM + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|ARM.Build.0 = Release|ARM + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|x64.ActiveCfg = Release|x64 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|x64.Build.0 = Release|x64 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|x86.ActiveCfg = Release|x86 + {37C63FDD-D995-4CC2-B014-4FB323194001}.Release|x86.Build.0 = Release|x86 + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|ARM.ActiveCfg = Debug|ARM + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|ARM.Build.0 = Debug|ARM + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|x64.ActiveCfg = Debug|x64 + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|x64.Build.0 = Debug|x64 + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|x86.ActiveCfg = Debug|x86 + {BE79FC52-6041-4913-B0D4-66C100944904}.Debug|x86.Build.0 = Debug|x86 + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|Any CPU.Build.0 = Release|Any CPU + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|ARM.ActiveCfg = Release|ARM + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|ARM.Build.0 = Release|ARM + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|x64.ActiveCfg = Release|x64 + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|x64.Build.0 = Release|x64 + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|x86.ActiveCfg = Release|x86 + {BE79FC52-6041-4913-B0D4-66C100944904}.Release|x86.Build.0 = Release|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|Any CPU.ActiveCfg = Debug|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|ARM.ActiveCfg = Debug|ARM + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|ARM.Build.0 = Debug|ARM + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|ARM.Deploy.0 = Debug|ARM + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|x64.ActiveCfg = Debug|x64 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|x64.Build.0 = Debug|x64 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|x64.Deploy.0 = Debug|x64 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|x86.ActiveCfg = Debug|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|x86.Build.0 = Debug|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Debug|x86.Deploy.0 = Debug|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|Any CPU.ActiveCfg = Release|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|ARM.ActiveCfg = Release|ARM + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|ARM.Build.0 = Release|ARM + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|ARM.Deploy.0 = Release|ARM + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|x64.ActiveCfg = Release|x64 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|x64.Build.0 = Release|x64 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|x64.Deploy.0 = Release|x64 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|x86.ActiveCfg = Release|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|x86.Build.0 = Release|x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE}.Release|x86.Deploy.0 = Release|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|Any CPU.ActiveCfg = Debug|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|ARM.ActiveCfg = Debug|ARM + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|ARM.Build.0 = Debug|ARM + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|ARM.Deploy.0 = Debug|ARM + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|x64.ActiveCfg = Debug|x64 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|x64.Build.0 = Debug|x64 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|x64.Deploy.0 = Debug|x64 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|x86.ActiveCfg = Debug|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|x86.Build.0 = Debug|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Debug|x86.Deploy.0 = Debug|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|Any CPU.ActiveCfg = Release|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|ARM.ActiveCfg = Release|ARM + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|ARM.Build.0 = Release|ARM + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|ARM.Deploy.0 = Release|ARM + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|x64.ActiveCfg = Release|x64 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|x64.Build.0 = Release|x64 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|x64.Deploy.0 = Release|x64 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|x86.ActiveCfg = Release|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|x86.Build.0 = Release|x86 + {6F503DF9-71C9-4340-90BB-D9AA14ADB686}.Release|x86.Deploy.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {BE79FC52-6041-4913-B0D4-66C100944904} = {92EE95F6-40B6-4E5A-97C9-E4234D17C022} + EndGlobalSection +EndGlobal diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/App.xaml b/BluetoothLEExplorer/BluetoothLEExplorer/App.xaml new file mode 100644 index 0000000..c70291d --- /dev/null +++ b/BluetoothLEExplorer/BluetoothLEExplorer/App.xaml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/App.xaml.cs b/BluetoothLEExplorer/BluetoothLEExplorer/App.xaml.cs new file mode 100644 index 0000000..be980a0 --- /dev/null +++ b/BluetoothLEExplorer/BluetoothLEExplorer/App.xaml.cs @@ -0,0 +1,153 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +//---------------------------------------------------------------------------------------------- +using System; +using System.Threading.Tasks; +using BluetoothLEExplorer.Services.SettingsServices; +using Template10.Controls; +using Windows.ApplicationModel.Activation; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Data; +using Windows.UI.Popups; +using BluetoothLEExplorer.Models; +using BluetoothLEExplorer.ViewModels; +using System.Diagnostics; + +namespace BluetoothLEExplorer +{ + //// Documentation on APIs used in this page: + //// https://github.com/Windows-XAML/Template10/wiki + + /// + /// The application + /// + [Bindable] + public sealed partial class App : Template10.Common.BootStrapper + { + /// + /// Initializes a new instance of the class. + /// + public App() + { + InitializeComponent(); + this.UnhandledException += App_UnhandledException; + + this.Suspending += App_Suspending; + this.Resuming += App_Resuming; + + SplashFactory = (e) => new Views.Splash(e); + + #region App settings + + var settings = SettingsService.Instance; + RequestedTheme = settings.AppTheme; + CacheMaxDuration = settings.CacheMaxDuration; + ShowShellBackButton = settings.UseShellBackButton; + + #endregion + } + + private void App_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e) + { + try + { + var deferral = e.SuspendingOperation.GetDeferral(); + + foreach(GenericGattServiceViewModel service in GattSampleContext.Context.CreatedServices) + { + string key = "Service_"+ service.Service.ServiceProvider.Service.Uuid.ToString() + "_IsPublishing"; + bool value = service.IsPublishing; + SettingsService.Instance.SettingsDictionary[key] = value; + + if (service.IsPublishing) + { + service.Service.ServiceProvider.StopAdvertising(); + } + } + + deferral.Complete(); + } + catch(Exception ex) + { + Debug.WriteLine("Suspending: " + ex.Message); + } + } + + private void App_Resuming(object sender, object e) + { + string[] keys = new string[SettingsService.Instance.SettingsDictionary.Keys.Count]; + + SettingsService.Instance.SettingsDictionary.Keys.CopyTo(keys, 0); + + for (int i = 0; i < keys.Length; i++) + { + if (keys[i].Contains("Service_")) + { + string serviceUUID = keys[i].Split('_')[1]; + bool IsPublishing = (bool)SettingsService.Instance.SettingsDictionary[keys[i]]; + + if (IsPublishing) + { + foreach (GenericGattServiceViewModel service in GattSampleContext.Context.CreatedServices) + { + if (serviceUUID == service.Service.ServiceProvider.Service.Uuid.ToString()) + { + service.Service.Start(true); + } + } + } + } + } + } + + private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + showDialog(e.Exception.Message + "\n\n" + e.Exception.StackTrace); + } + + private async void showDialog(string content) + { + MessageDialog dialog = new MessageDialog(content, "Fatal Error"); + await dialog.ShowAsync(); + } + + /// + /// Application initialization + /// + /// + /// On initialization task + public override async Task OnInitializeAsync(IActivatedEventArgs args) + { + if (Window.Current.Content as ModalDialog == null) + { + // create a new frame + var nav = NavigationServiceFactory(BackButton.Attach, ExistingContent.Include); + + // create modal root + Window.Current.Content = new ModalDialog + { + DisableBackButtonWhenModal = true, + Content = new Views.Shell(nav), + ModalContent = new Views.Busy(), + }; + } + + await Task.CompletedTask; + } + + /// + /// App initialization for long running tasks + /// + /// + /// + /// On start task + public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args) + { + //// long-running startup tasks go here + + NavigationService.Navigate(typeof(Views.Discover)); + await Task.CompletedTask; + } + } +} diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-100.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-100.png new file mode 100644 index 0000000..7443266 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-100.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-125.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-125.png new file mode 100644 index 0000000..d317d50 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-125.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-150.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-150.png new file mode 100644 index 0000000..ba4579a Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-150.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-200.png new file mode 100644 index 0000000..af324d0 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-400.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-400.png new file mode 100644 index 0000000..e7e3aa0 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeLogo.scale-400.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeSource.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeSource.png new file mode 100644 index 0000000..aaf7f66 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/BadgeSource.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/SplashScreen.scale-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000..12db6f2 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/SplashScreen.scale-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-100.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-100.png new file mode 100644 index 0000000..76ce6dc Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-100.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000..bdbcfac Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-400.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-400.png new file mode 100644 index 0000000..041470b Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square150x150Logo.scale-400.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-100.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-100.png new file mode 100644 index 0000000..1bb82f9 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-100.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-200.png new file mode 100644 index 0000000..53106c0 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-400.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-400.png new file mode 100644 index 0000000..c88e2cd Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square310x310Logo.scale-400.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-100.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-100.png new file mode 100644 index 0000000..7fcbaf3 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-100.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000..fff0812 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-400.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-400.png new file mode 100644 index 0000000..2d162d2 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.scale-400.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000..d1cbfe1 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-100.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-100.png new file mode 100644 index 0000000..a50abf1 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-100.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-200.png new file mode 100644 index 0000000..1edc581 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-400.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-400.png new file mode 100644 index 0000000..0699f3f Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Square71x71Logo.scale-400.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-125.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-125.png new file mode 100644 index 0000000..532539f Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-125.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-150.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-150.png new file mode 100644 index 0000000..7ee7481 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-150.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-200.png new file mode 100644 index 0000000..b5f4017 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-400.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-400.png new file mode 100644 index 0000000..b015855 Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo-400.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo.png new file mode 100644 index 0000000..de9200a Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/StoreLogo.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-100.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-100.png new file mode 100644 index 0000000..9816fdd Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-100.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-200.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000..9b8a82f Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-200.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-400.png b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-400.png new file mode 100644 index 0000000..83e06fc Binary files /dev/null and b/BluetoothLEExplorer/BluetoothLEExplorer/Assets/Wide310x150Logo.scale-400.png differ diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/BluetoothLEExplorer.csproj b/BluetoothLEExplorer/BluetoothLEExplorer/BluetoothLEExplorer.csproj new file mode 100644 index 0000000..cccaac9 --- /dev/null +++ b/BluetoothLEExplorer/BluetoothLEExplorer/BluetoothLEExplorer.csproj @@ -0,0 +1,317 @@ + + + + + Debug + x86 + {AD1CBE3C-A68A-4E02-8001-E02B815560EE} + AppContainerExe + Properties + BluetoothLEExplorer + BluetoothLEExplorer + en-US + UAP + 10.0.15063.0 + 10.0.15063.0 + 14 + true + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + BluetoothExplorer_StoreKey.pfx + True + Always + x86|x64|arm + DCBC2F4C73DE671847F017A13666994B37C0EC04 + win10-arm;win10-arm-aot;win10-x86;win10-x86-aot;win10-x64;win10-x64-aot + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM + false + prompt + true + true + + + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x64 + false + prompt + true + + + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x64 + false + prompt + true + true + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x86 + false + prompt + true + true + + + + App.xaml + + + GattLocalCharacteristicControl.xaml + + + + + + + + + + + + + + + + + + + + + + + + + + + + BloodPressureServicePage.xaml + + + HeartRateServicePage.xaml + + + MicrosoftServicePage.xaml + + + BatteryServicePage.xaml + + + Beacon.xaml + + + Busy.xaml + + + CharacteristicPage.xaml + + + DeviceServicesPage.xaml + + + Discover.xaml + + + SettingsPage.xaml + + + Shell.xaml + + + Splash.xaml + + + VirtualPeripheralPage.xaml + + + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MSBuild:Compile + Designer + + + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + PreserveNewest + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + + + + + + {644f40ad-eabb-4570-b9b7-e3f8ddaa80f3} + GattServicesLibrary + + + {be79fc52-6041-4913-b0d4-66c100944904} + SortedObservableCollection + + + {37c63fdd-d995-4cc2-b014-4fb323194001} + GattHelper + + + + + 5.3.3 + + + 2.0.0 + + + 10.0.2 + + + 3.5.0 + + + 1.1.12 + + + + 14.0 + + + + + + + + \ No newline at end of file diff --git a/BluetoothLEExplorer/BluetoothLEExplorer/CustomControls/GattLocalCharacteristicControl.xaml b/BluetoothLEExplorer/BluetoothLEExplorer/CustomControls/GattLocalCharacteristicControl.xaml new file mode 100644 index 0000000..ca7c9e4 --- /dev/null +++ b/BluetoothLEExplorer/BluetoothLEExplorer/CustomControls/GattLocalCharacteristicControl.xaml @@ -0,0 +1,49 @@ + + + + + Green + Green + Green + + + Red + Red + Red + + + + + + + + + + + + + + + + + + + + + + +