From 95eecbe0a55a8f21c062e115cb071be9e5ac2bfa Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Tue, 21 Dec 2021 16:54:07 +0800 Subject: [PATCH 01/14] relocate AdvanceLog to fix null exception --- ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs b/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs index c90de269..0863b336 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs @@ -198,6 +198,9 @@ public async Task Disconnect() { var timeout = 5000; //might need a longer period for windows var task = adapter.DisconnectDeviceAsync(ConnectedASM); + + AdvanceLog(nameof(RadioPluginBLE), "Disconnect Device", ConnectedASM.GetHashCode(), Asm_uuid.ToString()); + if (await Task.WhenAny(task, Task.Delay(timeout)) == task) { // task completed within timeout @@ -207,10 +210,9 @@ public async Task Disconnect() { state = ConnectivityState.Limited; } - //state = GetConnectivityStateFromDevice(ConnectedASM); - AdvanceLog(nameof(RadioPluginBLE), "Disconnect Device", ConnectedASM.GetHashCode(), Asm_uuid.ToString()); - AdvanceLog(nameof(RadioPluginBLE), "ASM Connection Status", ConnectedASM.State.ToString(), Asm_uuid.ToString()); + AdvanceLog(nameof(RadioPluginBLE), "ASM Connection Status", state.ToString(), Asm_uuid.ToString()); + //state = GetConnectivityStateFromDevice(ConnectedASM); } //StateChange(ShimmerDeviceBluetoothState.Disconnected); AdvanceLog(nameof(RadioPluginBLE), "Disconnect", "Success", Asm_uuid.ToString()); From 769a96fb5077d5ecf9a89a5408de2f51c155ca92 Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Thu, 23 Dec 2021 11:01:42 +0800 Subject: [PATCH 02/14] add ios ble manager --- .../Communications/VerisenseBLEManager.cs | 109 ++++++++++++++++++ .../Communications/VerisenseBLEPairing.cs | 20 ++++ .../ShimmerBLEAPI.iOS/Libs/Plugin.BLE .dll | Bin 0 -> 51200 bytes .../Libs/Plugin.BLE.Abstractions .dll | Bin 0 -> 91136 bytes .../ShimmerBLEAPI.iOS.csproj | 29 +++++ ShimmerBLE/ShimmerBLEAPI.sln | 90 ++++++++++++++- 6 files changed, 246 insertions(+), 2 deletions(-) create mode 100644 ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs create mode 100644 ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEPairing.cs create mode 100644 ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE .dll create mode 100644 ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.Abstractions .dll create mode 100644 ShimmerBLE/ShimmerBLEAPI.iOS/ShimmerBLEAPI.iOS.csproj diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs new file mode 100644 index 00000000..7226bb63 --- /dev/null +++ b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs @@ -0,0 +1,109 @@ +using Plugin.BLE; +using Plugin.BLE.Abstractions.Contracts; +using shimmer.Communications; +using ShimmerBLEAPI.Communications; +using ShimmerBLEAPI.iOS.Communications; +using ShimmerBLEAPI.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; + +[assembly: Dependency(typeof(VerisenseBLEManager))] +namespace ShimmerBLEAPI.iOS.Communications +{ + public class VerisenseBLEManager : IVerisenseBLEManager + { + public event EventHandler BLEManagerEvent; + static List ListOfScannedKnownDevices { get; set; } + static List deviceList { get; set; } + public static TaskCompletionSource RequestTCS { get; set; } + static IAdapter Adapter { get { return CrossBluetoothLE.Current.Adapter; } } + + public EventHandler GetBLEManagerEvent() + { + return BLEManagerEvent; + } + private void BLEManager_BLEEvent(object sender, BLEManagerEvent e) + { + if (e.CurrentEvent == shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.ScanCompleted) + { + Console.WriteLine("Scan is completed."); + } + else if (e.CurrentEvent == shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.DevicePaired) + { + Console.WriteLine(((VerisenseBLEScannedDevice)e.objMsg).Uuid.ToString() + " is paired."); + } + } + public List GetListOfScannedDevices() + { + return ListOfScannedKnownDevices; + } + + public async Task StartScanForDevices() + { + BLEManagerEvent += BLEManager_BLEEvent; + + RequestTCS = new TaskCompletionSource(); + ListOfScannedKnownDevices = new List(); + Adapter.ScanMode = ScanMode.LowLatency; + Adapter.DeviceAdvertised += Adapter_DeviceAdvertised; + + //Adapter.DeviceDiscovered += (s, a) => deviceList.Add(a.Device); + await Adapter.StartScanningForDevicesAsync(); + Adapter.DeviceAdvertised -= Adapter_DeviceAdvertised; + + if (BLEManagerEvent != null) + BLEManagerEvent.Invoke(null, new BLEManagerEvent { CurrentEvent = shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.ScanCompleted }); + return RequestTCS.TrySetResult(true); + } + + private static void Adapter_DeviceAdvertised(object sender, Plugin.BLE.Abstractions.EventArgs.DeviceEventArgs e) + { + string uuid = e.Device.Id.ToString(); + var entry = ListOfScannedKnownDevices.FirstOrDefault(x => x.ID.Equals(uuid)); + + if (entry != null) + { + return; + } + + if (e.Device.Name != null) + { + ListOfScannedKnownDevices.Add(new VerisenseBLEScannedDevice + { + Name = e.Device.Name, + ID = uuid, + RSSI = e.Device.Rssi, + Uuid = e.Device.Id, + IsConnectable = e.Device.Name.Contains("Verisense") ? true : false, + //IsPaired = GetBondingStatus(uuid), + IsPaired = false, + DeviceInfo = e.Device + }); ; + } + + } + + public static bool GetBondingStatus(string id) + { + var devices = Adapter.GetSystemConnectedOrPairedDevices(); + + var isBonded = devices.FirstOrDefault(x => x.Id.Equals(Guid.Parse(id))) != null; + + return isBonded; + } + public Task PairVerisenseDevice(object Device, IBLEPairingKeyGenerator generator) + { + throw new NotImplementedException(); + } + + public void StopScanForDevices() + { + throw new NotImplementedException(); + } + + } +} diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEPairing.cs b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEPairing.cs new file mode 100644 index 00000000..9db96985 --- /dev/null +++ b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEPairing.cs @@ -0,0 +1,20 @@ +using shimmer.Models; +using ShimmerBLEAPI.Communications; +using ShimmerBLEAPI.iOS.Communications; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Xamarin.Forms; + +[assembly: Dependency(typeof(VerisenseBLEPairing))] +namespace ShimmerBLEAPI.iOS.Communications +{ + public class VerisenseBLEPairing : IVerisenseBLEPairing + { + public Task BondASMAutomatically(string deviceID) + { + throw new NotImplementedException(); + } + } +} diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE .dll b/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE .dll new file mode 100644 index 0000000000000000000000000000000000000000..166237eb13cdf2340fd84549b006faa884268b07 GIT binary patch literal 51200 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 literal 0 HcmV?d00001 diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.Abstractions .dll b/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.Abstractions .dll new file mode 100644 index 0000000000000000000000000000000000000000..d95013ba91d277f32ebf2aa6158b5f2e6502cf1d GIT binary patch literal 91136 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 + + + netstandard2.0 + + + + + + + + + + + + + + + + + + Libs\Plugin.BLE .dll + + + Libs\Plugin.BLE.Abstractions .dll + + + + diff --git a/ShimmerBLE/ShimmerBLEAPI.sln b/ShimmerBLE/ShimmerBLEAPI.sln index 64b5a3bb..a8b1ae4e 100644 --- a/ShimmerBLE/ShimmerBLEAPI.sln +++ b/ShimmerBLE/ShimmerBLEAPI.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31829.152 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32014.148 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShimmerBLEAPI.UWP", "ShimmerBLEAPI.UWP\ShimmerBLEAPI.UWP.csproj", "{76908925-02BB-433B-A9E5-BB07EDFCB9C9}" EndProject @@ -26,6 +26,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shimmer32FeetBLEAPIConsoleA EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShimmerAPI", "..\ShimmerAPI\ShimmerAPI\ShimmerAPI.csproj", "{2230CC85-32B9-441C-A3C2-0DB4CC1D8CE9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShimmerBLEAPI.iOS", "ShimmerBLEAPI.iOS\ShimmerBLEAPI.iOS.csproj", "{7384146A-CBDD-4E65-A20F-CB9597378B26}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Ad-Hoc|Any CPU = Ad-Hoc|Any CPU @@ -1060,6 +1062,90 @@ Global {2230CC85-32B9-441C-A3C2-0DB4CC1D8CE9}.ShimmerAPIBasic|x64.Build.0 = Debug|Any CPU {2230CC85-32B9-441C-A3C2-0DB4CC1D8CE9}.ShimmerAPIBasic|x86.ActiveCfg = Debug|Any CPU {2230CC85-32B9-441C-A3C2-0DB4CC1D8CE9}.ShimmerAPIBasic|x86.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|ARM.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|ARM64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|ARM64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|iPhone.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|x64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|x64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|x86.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.AppStore|x86.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|ARM.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|ARM.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|ARM64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|iPhone.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|x64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|x64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|x86.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Debug|x86.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|Any CPU.Build.0 = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|ARM.ActiveCfg = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|ARM.Build.0 = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|ARM64.ActiveCfg = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|ARM64.Build.0 = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|iPhone.ActiveCfg = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|iPhone.Build.0 = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|x64.ActiveCfg = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|x64.Build.0 = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|x86.ActiveCfg = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.Release|x86.Build.0 = Release|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|Any CPU.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|Any CPU.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|ARM.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|ARM.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|ARM64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|ARM64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|iPhone.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|iPhone.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|iPhoneSimulator.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|x64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|x64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|x86.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPI|x86.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|Any CPU.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|Any CPU.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|ARM.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|ARM.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|ARM64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|ARM64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|iPhone.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|iPhone.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|iPhoneSimulator.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|x64.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|x64.Build.0 = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|x86.ActiveCfg = Debug|Any CPU + {7384146A-CBDD-4E65-A20F-CB9597378B26}.ShimmerAPIBasic|x86.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From ac3e95a06b8ea9c6e19d8a9b720a6de1578f9a7f Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Thu, 23 Dec 2021 16:27:57 +0800 Subject: [PATCH 03/14] more commit for ios ble api --- .../Resources/Resource.designer.cs | 2 +- ...tions .dll => Plugin.BLE.Abstractions.dll} | Bin 91136 -> 91136 bytes .../Libs/{Plugin.BLE .dll => Plugin.BLE.dll} | Bin 51200 -> 51200 bytes .../ShimmerBLEAPI.iOS.csproj | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) rename ShimmerBLE/ShimmerBLEAPI.iOS/Libs/{Plugin.BLE.Abstractions .dll => Plugin.BLE.Abstractions.dll} (99%) rename ShimmerBLE/ShimmerBLEAPI.iOS/Libs/{Plugin.BLE .dll => Plugin.BLE.dll} (98%) diff --git a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/Resources/Resource.designer.cs b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/Resources/Resource.designer.cs index a2f22518..68c5dda3 100644 --- a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/Resources/Resource.designer.cs +++ b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/Resources/Resource.designer.cs @@ -14,7 +14,7 @@ namespace MultiShimmerExample.Droid { - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.1.0.11")] public partial class Resource { diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.Abstractions .dll b/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.Abstractions.dll similarity index 99% rename from ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.Abstractions .dll rename to ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.Abstractions.dll index d95013ba91d277f32ebf2aa6158b5f2e6502cf1d..ccfdd965ab7c1656bb2da852f2f8aea146ca03d3 100644 GIT binary patch delta 242 zcmZoT!P;B|4Vw7i{SINjQZ~EORMrHZ? zUssza?O*D+q-yn(+bmJX7=fystztrpQ;UjYJOZXGMKdZ1#0O_&=H{jr#RTV<7A2>~ zOul$re0p*;qpdDf`@$zs?I6oKs{6mIiEnu$u{7oDTcAxaz&`zKG@~@*&*?9t88x@_ b$1r|p+|C!r_=}lI#%jA@661Tui3aQdz+_xT delta 250 zcmZoT!P;Ok+GgpVsayp{L;+Gw4ITOQQuzR{;Ks1 z|5nfTYgwXbJJ}%O?sf-9#vDoBFD6kx85n&7m>3us=1$)k#VF4@vyzcv=JdN!jLJ&0 z-!~~IUyku=Gh}$gzwX!uMxZKZtC-N@)S}{;^3=@o)amlkj7sb=!TF^{$*I#DqZuWp zXGAmF8bNhx9fRrw+EXdE{%Zs08j<%)%g?WW0ki}Ln5uwmg^7w{j9;d|i)Peh`>)EN bz#y<)Fp2R!<3t1Y?R;^JznGastl%O5;4fBd diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE .dll b/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.dll similarity index 98% rename from ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE .dll rename to ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.dll index 166237eb13cdf2340fd84549b006faa884268b07..34485f362e51f302c82805d40e5167de23c91490 100644 GIT binary patch delta 141 zcmZpez}zr_c|r&Cdxaw#yXUSFsJ!v}=+~2R9_^i+>-VhbuiR|0T0w-xbFb#5$uav) z7bIRuExXy^Z7X? zN;>wr&ZoA^IBs{_UHx~#bQeYj1_o!Vn9$X)O diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/ShimmerBLEAPI.iOS.csproj b/ShimmerBLE/ShimmerBLEAPI.iOS/ShimmerBLEAPI.iOS.csproj index 57dfd69d..ce041ff9 100644 --- a/ShimmerBLE/ShimmerBLEAPI.iOS/ShimmerBLEAPI.iOS.csproj +++ b/ShimmerBLE/ShimmerBLEAPI.iOS/ShimmerBLEAPI.iOS.csproj @@ -19,10 +19,10 @@ - Libs\Plugin.BLE .dll + Libs\Plugin.BLE.dll - Libs\Plugin.BLE.Abstractions .dll + Libs\Plugin.BLE.Abstractions.dll From 2b21873b053d35e7cecb0f703021907ed4063ea8 Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Thu, 23 Dec 2021 16:49:59 +0800 Subject: [PATCH 04/14] plugin update --- .../ShimmerBLEAPI.iOS/Libs/Plugin.BLE.dll | Bin 51200 -> 51200 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.dll b/ShimmerBLE/ShimmerBLEAPI.iOS/Libs/Plugin.BLE.dll index 34485f362e51f302c82805d40e5167de23c91490..ddb1851483b81e2a700a107cd388f016aaf7f675 100644 GIT binary patch delta 37 vcmV+=0NVe6kOP2_1CWRU!Zopqo~jTQQv&^K0eDWN!Y;q`p_EdyIIGAUDa{bA delta 37 vcmV+=0NVe6kOP2_1CWRU?;x>?o~jUe*!#ux$zDi@i3zW~tdDuKIIGAUS}PL@ From bfc040134b606054ac97012eccccceacf6de7665 Mon Sep 17 00:00:00 2001 From: Jong Chern Date: Mon, 3 Jan 2022 13:06:16 +0800 Subject: [PATCH 05/14] minor changes --- .../Communications/VerisenseBLEManager.cs | 5 +-- .../Communications/VerisenseBLEManager.cs | 31 ++++++++++++------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/ShimmerBLE/ShimmerBLEAPI.Android/Communications/VerisenseBLEManager.cs b/ShimmerBLE/ShimmerBLEAPI.Android/Communications/VerisenseBLEManager.cs index 38f21610..7d09aeda 100644 --- a/ShimmerBLE/ShimmerBLEAPI.Android/Communications/VerisenseBLEManager.cs +++ b/ShimmerBLE/ShimmerBLEAPI.Android/Communications/VerisenseBLEManager.cs @@ -71,7 +71,7 @@ public async Task StartScanForDevices() { BLEManagerEvent += BLEManager_BLEEvent; - RequestTCS = new TaskCompletionSource(); + //RequestTCS = new TaskCompletionSource(); ListOfScannedKnownDevices = new List(); adapter.ScanMode = Plugin.BLE.Abstractions.Contracts.ScanMode.LowLatency; @@ -81,7 +81,8 @@ public async Task StartScanForDevices() adapter.DeviceAdvertised -= Adapter_DeviceAdvertised; if (BLEManagerEvent != null) BLEManagerEvent.Invoke(null, new BLEManagerEvent { CurrentEvent = shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.ScanCompleted }); - return RequestTCS.TrySetResult(true); + //return RequestTCS.TrySetResult(true); //commented out as currently this does nothing + return true; } catch (Exception ex) diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs index 7226bb63..56dff6d4 100644 --- a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs +++ b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs @@ -44,20 +44,27 @@ public List GetListOfScannedDevices() public async Task StartScanForDevices() { - BLEManagerEvent += BLEManager_BLEEvent; + try + { + BLEManagerEvent += BLEManager_BLEEvent; - RequestTCS = new TaskCompletionSource(); - ListOfScannedKnownDevices = new List(); - Adapter.ScanMode = ScanMode.LowLatency; - Adapter.DeviceAdvertised += Adapter_DeviceAdvertised; + //RequestTCS = new TaskCompletionSource(); + ListOfScannedKnownDevices = new List(); + Adapter.ScanMode = ScanMode.LowLatency; + Adapter.DeviceAdvertised += Adapter_DeviceAdvertised; - //Adapter.DeviceDiscovered += (s, a) => deviceList.Add(a.Device); - await Adapter.StartScanningForDevicesAsync(); - Adapter.DeviceAdvertised -= Adapter_DeviceAdvertised; + //Adapter.DeviceDiscovered += (s, a) => deviceList.Add(a.Device); + await Adapter.StartScanningForDevicesAsync(); + Adapter.DeviceAdvertised -= Adapter_DeviceAdvertised; - if (BLEManagerEvent != null) - BLEManagerEvent.Invoke(null, new BLEManagerEvent { CurrentEvent = shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.ScanCompleted }); - return RequestTCS.TrySetResult(true); + if (BLEManagerEvent != null) + BLEManagerEvent.Invoke(null, new BLEManagerEvent { CurrentEvent = shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.ScanCompleted }); + //return RequestTCS.TrySetResult(true); //commented out as currently this does nothing + return true; + } catch (Exception e) + { + return false; + } } private static void Adapter_DeviceAdvertised(object sender, Plugin.BLE.Abstractions.EventArgs.DeviceEventArgs e) @@ -79,7 +86,7 @@ private static void Adapter_DeviceAdvertised(object sender, Plugin.BLE.Abstracti RSSI = e.Device.Rssi, Uuid = e.Device.Id, IsConnectable = e.Device.Name.Contains("Verisense") ? true : false, - //IsPaired = GetBondingStatus(uuid), + //IsPaired = GetBondingStatus(uuid), //unable to get bonding status in ios IsPaired = false, DeviceInfo = e.Device }); ; From a8a9afb0de2a084dd90f5ba566f8f8e589672d6d Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Tue, 4 Jan 2022 12:50:25 +0800 Subject: [PATCH 06/14] handle sensor not or just paired --- .../Communications/IVerisenseBLE.cs | 3 ++- .../Devices/VerisenseBLEDevice.cs | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs b/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs index ea30af59..f081e698 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs @@ -43,6 +43,7 @@ public enum ShimmerDeviceBluetoothState Connected, Streaming, StreamingLoggedData, - Limited + Limited, + NotPairedAndDisconnected } } diff --git a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs index 06046f65..f078a63b 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs @@ -34,6 +34,7 @@ public class VerisenseBLEDevice : VerisenseDevice, IDisposable, IVerisenseBLE int TimerCount; int TaskCount; int MaximumNumberOfBytesPerBinFile = 100000000; // 100MB limit + int iOSConnectCount; public int GallCallBackErrorCount = 0; protected const string LogObject = "VerisenseBLEDevice"; @@ -1671,6 +1672,29 @@ public async Task Connect(bool initialize, DeviceByteArraySettings configu } else { + if (Device.RuntimePlatform == Device.iOS) + { + //test sensor connection state for pairing cancelled/failed or sensor just paired + var sresult = await ExecuteRequest(RequestType.ReadStatus); + if (sresult == null) + { + if (iOSConnectCount > 0) + { + iOSConnectCount = 0; + await Disconnect(); + StateChange(ShimmerDeviceBluetoothState.NotPairedAndDisconnected); + return false; + } + else + { + await Disconnect(); + iOSConnectCount++; + await Connect(true); + return true; + } + + } + } if (initialize) { var sresult = await ExecuteRequest(RequestType.ReadStatus); From 9b1ef8edd7b5e4421aa95330230ac279e94bc4d7 Mon Sep 17 00:00:00 2001 From: Jong Chern Date: Wed, 5 Jan 2022 13:54:55 +0800 Subject: [PATCH 07/14] ios pairing --- .../MultiVerisenseExample/MainPage.xaml.cs | 17 +++++- .../Communications/RadioPluginBLE.cs | 2 +- .../Devices/VerisenseBLEDevice.cs | 22 ++++---- .../Devices/VerisenseBLEDeviceIOS.cs | 55 +++++++++++++++++++ 4 files changed, 83 insertions(+), 13 deletions(-) create mode 100644 ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs diff --git a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs index 676df289..4e8a6168 100644 --- a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs +++ b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs @@ -65,7 +65,7 @@ public DeviceInfo(string uuid) //"00000000-0000-0000-0000-c96117537402", //"def7b570-bb64-5167-aa2c-76f634454258", "7b3eba6c-026c-0861-bb0d-45d23d4dad64", - "00000000-0000-0000-0000-daa619f04ad7", + //"00000000-0000-0000-0000-daa619f04ad7", //"00000000-0000-0000-0000-d02b463da2bb", //"00000000-0000-0000-0000-e7ec37a0d234", //"04514419-5ab1-6eee-a83d-334220dade3d", @@ -103,6 +103,21 @@ public async void ConnectDevices() { Devices.Add(uuid, device); } + + if (Device.RuntimePlatform == Device.iOS) + { + device = new VerisenseBLEDeviceIOS(uuid, ""); + var pairingResult = await ((VerisenseBLEDeviceIOS)device).PairDeviceAsync(); + if (pairingResult) + { + + } + else + { + return; + } + } + device.ShimmerBLEEvent += ShimmerDevice_BLEEvent; bool result = await device.Connect(true); if (result) diff --git a/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs b/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs index 0863b336..d4e0847e 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Communications/RadioPluginBLE.cs @@ -196,7 +196,7 @@ public async Task Disconnect() if (ConnectedASM != null) { - var timeout = 5000; //might need a longer period for windows + var timeout = 10000; //might need a longer period for windows var task = adapter.DisconnectDeviceAsync(ConnectedASM); AdvanceLog(nameof(RadioPluginBLE), "Disconnect Device", ConnectedASM.GetHashCode(), Asm_uuid.ToString()); diff --git a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs index 06046f65..f1354d8f 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs @@ -80,17 +80,17 @@ public enum LastDataTransferReplySentFromBS #region Read Request props - byte[] ReadStatusRequest = new byte[] { 0x11, 0x00, 0x00 }; - byte[] ReadDataRequest = new byte[] { 0x12, 0x00, 0x00 }; - byte[] StreamDataRequest = new byte[] { 0x2A, 0x01, 0x00, 0x01 }; - byte[] StopStreamRequest = new byte[] { 0x2A, 0x01, 0x00, 0x02 }; - byte[] ReadProdConfigRequest = new byte[] { 0x13, 0x00, 0x00 }; - byte[] ReadOpConfigRequest = new byte[] { 0x14, 0x00, 0x00 }; - byte[] ReadTimeRequest = new byte[] { 0x15, 0x00, 0x00 }; - byte[] ReadPendingEventsRequest = new byte[] { 0x17, 0x00, 0x00 }; - byte[] DFUCommand = new byte[] { 0x26, 0x00, 0x00 }; - byte[] DisconnectRequest = new byte[] { 0x2B, 0x00, 0x00 }; - byte[] EraseSensorData = new byte[] { 0x29, 0x01, 0x00, 0x0A }; + protected byte[] ReadStatusRequest = new byte[] { 0x11, 0x00, 0x00 }; + protected byte[] ReadDataRequest = new byte[] { 0x12, 0x00, 0x00 }; + protected byte[] StreamDataRequest = new byte[] { 0x2A, 0x01, 0x00, 0x01 }; + protected byte[] StopStreamRequest = new byte[] { 0x2A, 0x01, 0x00, 0x02 }; + protected byte[] ReadProdConfigRequest = new byte[] { 0x13, 0x00, 0x00 }; + protected byte[] ReadOpConfigRequest = new byte[] { 0x14, 0x00, 0x00 }; + protected byte[] ReadTimeRequest = new byte[] { 0x15, 0x00, 0x00 }; + protected byte[] ReadPendingEventsRequest = new byte[] { 0x17, 0x00, 0x00 }; + protected byte[] DFUCommand = new byte[] { 0x26, 0x00, 0x00 }; + protected byte[] DisconnectRequest = new byte[] { 0x2B, 0x00, 0x00 }; + protected byte[] EraseSensorData = new byte[] { 0x29, 0x01, 0x00, 0x0A }; #endregion diff --git a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs new file mode 100644 index 00000000..99fecdfa --- /dev/null +++ b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs @@ -0,0 +1,55 @@ +using shimmer.Communications; +using shimmer.Models; +using ShimmerBLEAPI.Devices; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace ShimmerBLEAPI.Devices +{ + public class VerisenseBLEDeviceIOS : VerisenseBLEDevice + { + public VerisenseBLEDeviceIOS(string id, string name) : base(id, name) + { + } + + public async Task PairDeviceAsync() + { + var result = await Connect(false); + + /* + InitializeRadio(); + BLERadio.Asm_uuid = Asm_uuid; + BLERadio.CommunicationEvent += UartRX_ValueUpdated_ForPairing; + var result = await BLERadio.Connect(); + await BLERadio.WriteBytes(ReadProdConfigRequest); + */ + + for (int i = 0; i < 10; i++) + { + ProdConfigPayload prodConfig = (ProdConfigPayload)await ExecuteRequest(RequestType.ReadProductionConfig); + if (prodConfig != null) + { + await Disconnect(); + return true; + } else + { + Debug.WriteLine("Failed Char at pairing " + i); + } + Thread.Sleep(100); + } + await Disconnect(); + return false; + } + protected void UartRX_ValueUpdated_ForPairing(object sender, ByteLevelCommunicationEvent comEvent) + { + if (comEvent.Event == ByteLevelCommunicationEvent.CommEvent.NewBytes) + { + + } + } + } +} From 06c087b6e9253944f9a6502fbc285d522465705a Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Wed, 5 Jan 2022 14:47:52 +0800 Subject: [PATCH 08/14] update plugin dlls --- .../Libs/Plugin.BLE.Abstractions.dll | Bin 95232 -> 91136 bytes .../Libs/Plugin.BLE.dll | Bin 52736 -> 51200 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.iOS/Libs/Plugin.BLE.Abstractions.dll b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.iOS/Libs/Plugin.BLE.Abstractions.dll index 53fe299bb18f616633cfbaecc24cdf4c810a3d8e..ccfdd965ab7c1656bb2da852f2f8aea146ca03d3 100644 GIT binary patch literal 91136 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 literal 95232 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 O$#DLE_y12);Qs=mV0euH diff --git a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.iOS/Libs/Plugin.BLE.dll b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.iOS/Libs/Plugin.BLE.dll index 2172416c68f536d42e4d3e328d3263938b7ca909..ddb1851483b81e2a700a107cd388f016aaf7f675 100644 GIT binary patch literal 51200 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 Date: Wed, 5 Jan 2022 14:53:29 +0800 Subject: [PATCH 09/14] minor --- .../ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs index 99fecdfa..4c9e881b 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs @@ -37,19 +37,12 @@ public async Task PairDeviceAsync() return true; } else { - Debug.WriteLine("Failed Char at pairing " + i); + Debug.WriteLine("Pairing Failed: " + i); } Thread.Sleep(100); } await Disconnect(); return false; } - protected void UartRX_ValueUpdated_ForPairing(object sender, ByteLevelCommunicationEvent comEvent) - { - if (comEvent.Event == ByteLevelCommunicationEvent.CommEvent.NewBytes) - { - - } - } } } From 97c4ab304c2fd7a6e05f13ee3c73cd0dff6b56d2 Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Thu, 6 Jan 2022 15:30:58 +0800 Subject: [PATCH 10/14] more updates --- .../Communications/VerisenseBLEManager.cs | 13 +++++++--- .../Devices/VerisenseBLEDevice.cs | 25 +------------------ .../Devices/VerisenseBLEDeviceIOS.cs | 2 +- 3 files changed, 12 insertions(+), 28 deletions(-) diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs index 56dff6d4..f6fba69f 100644 --- a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs +++ b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs @@ -2,6 +2,7 @@ using Plugin.BLE.Abstractions.Contracts; using shimmer.Communications; using ShimmerBLEAPI.Communications; +using ShimmerBLEAPI.Devices; using ShimmerBLEAPI.iOS.Communications; using ShimmerBLEAPI.Models; using System; @@ -34,7 +35,7 @@ private void BLEManager_BLEEvent(object sender, BLEManagerEvent e) } else if (e.CurrentEvent == shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.DevicePaired) { - Console.WriteLine(((VerisenseBLEScannedDevice)e.objMsg).Uuid.ToString() + " is paired."); + Console.WriteLine(((VerisenseBLEDeviceIOS)e.objMsg).Asm_uuid.ToString() + " is paired."); } } public List GetListOfScannedDevices() @@ -102,9 +103,15 @@ public static bool GetBondingStatus(string id) return isBonded; } - public Task PairVerisenseDevice(object Device, IBLEPairingKeyGenerator generator) + public async Task PairVerisenseDevice(object Device, IBLEPairingKeyGenerator generator) { - throw new NotImplementedException(); + var pairingResult = await ((VerisenseBLEDeviceIOS)Device).PairDeviceAsync(); + if (pairingResult) + { + if (BLEManagerEvent != null) + BLEManagerEvent.Invoke(null, new BLEManagerEvent { CurrentEvent = shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.DevicePaired, objMsg = (VerisenseBLEDeviceIOS)Device, message = "Device Is Successfully Paired" }); + } + return pairingResult; } public void StopScanForDevices() diff --git a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs index 3b43d73e..0781cdbf 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs @@ -1672,29 +1672,6 @@ public async Task Connect(bool initialize, DeviceByteArraySettings configu } else { - if (Device.RuntimePlatform == Device.iOS) - { - //test sensor connection state for pairing cancelled/failed or sensor just paired - var sresult = await ExecuteRequest(RequestType.ReadStatus); - if (sresult == null) - { - if (iOSConnectCount > 0) - { - iOSConnectCount = 0; - await Disconnect(); - StateChange(ShimmerDeviceBluetoothState.NotPairedAndDisconnected); - return false; - } - else - { - await Disconnect(); - iOSConnectCount++; - await Connect(true); - return true; - } - - } - } if (initialize) { var sresult = await ExecuteRequest(RequestType.ReadStatus); @@ -1710,7 +1687,7 @@ public async Task Connect(bool initialize, DeviceByteArraySettings configu } opConfig = UpdateDefaultDeviceConfigBytes(deviceOpConfig, configuration.GetOperationalConfigurationBytes()); } - + var wopcresult = await ExecuteRequest(RequestType.WriteOperationalConfig, opConfig); if (wopcresult == null) { diff --git a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs index 4c9e881b..66c56587 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDeviceIOS.cs @@ -19,7 +19,7 @@ public VerisenseBLEDeviceIOS(string id, string name) : base(id, name) public async Task PairDeviceAsync() { var result = await Connect(false); - + /* InitializeRadio(); BLERadio.Asm_uuid = Asm_uuid; From 507afafc3c7132318604a9a08acb200489b90f8b Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Thu, 6 Jan 2022 15:40:46 +0800 Subject: [PATCH 11/14] remove unused update --- ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs b/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs index f081e698..ea30af59 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Communications/IVerisenseBLE.cs @@ -43,7 +43,6 @@ public enum ShimmerDeviceBluetoothState Connected, Streaming, StreamingLoggedData, - Limited, - NotPairedAndDisconnected + Limited } } From 1e32a9bb0e81ed0e457e28687790d1bb8330e397 Mon Sep 17 00:00:00 2001 From: Jong Chern Date: Thu, 13 Jan 2022 12:09:06 +0800 Subject: [PATCH 12/14] remove unused variable --- ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs index 0781cdbf..43e6c6cd 100644 --- a/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs +++ b/ShimmerBLE/ShimmerBLEAPI/Devices/VerisenseBLEDevice.cs @@ -34,7 +34,6 @@ public class VerisenseBLEDevice : VerisenseDevice, IDisposable, IVerisenseBLE int TimerCount; int TaskCount; int MaximumNumberOfBytesPerBinFile = 100000000; // 100MB limit - int iOSConnectCount; public int GallCallBackErrorCount = 0; protected const string LogObject = "VerisenseBLEDevice"; From 6dbbf4a1770c239ef762372102de886c9e3c23d7 Mon Sep 17 00:00:00 2001 From: Jong Chern Date: Thu, 13 Jan 2022 13:45:26 +0800 Subject: [PATCH 13/14] minor update --- .../MultiVerisenseExample/MainPage.xaml.cs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs index 4e8a6168..394a9593 100644 --- a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs +++ b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample/MainPage.xaml.cs @@ -104,20 +104,6 @@ public async void ConnectDevices() Devices.Add(uuid, device); } - if (Device.RuntimePlatform == Device.iOS) - { - device = new VerisenseBLEDeviceIOS(uuid, ""); - var pairingResult = await ((VerisenseBLEDeviceIOS)device).PairDeviceAsync(); - if (pairingResult) - { - - } - else - { - return; - } - } - device.ShimmerBLEEvent += ShimmerDevice_BLEEvent; bool result = await device.Connect(true); if (result) From 54fc69445e6e8bdf5152e79817410c1cb173def4 Mon Sep 17 00:00:00 2001 From: Mas Azalya Yusof Date: Thu, 13 Jan 2022 16:49:29 +0800 Subject: [PATCH 14/14] revert changes --- .../Communications/VerisenseBLEManager.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs index f6fba69f..24d6a559 100644 --- a/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs +++ b/ShimmerBLE/ShimmerBLEAPI.iOS/Communications/VerisenseBLEManager.cs @@ -35,7 +35,7 @@ private void BLEManager_BLEEvent(object sender, BLEManagerEvent e) } else if (e.CurrentEvent == shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.DevicePaired) { - Console.WriteLine(((VerisenseBLEDeviceIOS)e.objMsg).Asm_uuid.ToString() + " is paired."); + Console.WriteLine(((VerisenseBLEScannedDevice)e.objMsg).Uuid.ToString() + " is paired."); } } public List GetListOfScannedDevices() @@ -105,11 +105,12 @@ public static bool GetBondingStatus(string id) } public async Task PairVerisenseDevice(object Device, IBLEPairingKeyGenerator generator) { - var pairingResult = await ((VerisenseBLEDeviceIOS)Device).PairDeviceAsync(); + VerisenseBLEDeviceIOS verisenseBLEDevice = new VerisenseBLEDeviceIOS(((VerisenseBLEScannedDevice)Device).Uuid.ToString(), ""); + var pairingResult = await verisenseBLEDevice.PairDeviceAsync(); if (pairingResult) { if (BLEManagerEvent != null) - BLEManagerEvent.Invoke(null, new BLEManagerEvent { CurrentEvent = shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.DevicePaired, objMsg = (VerisenseBLEDeviceIOS)Device, message = "Device Is Successfully Paired" }); + BLEManagerEvent.Invoke(null, new BLEManagerEvent { CurrentEvent = shimmer.Communications.BLEManagerEvent.BLEAdapterEvent.DevicePaired, objMsg = (VerisenseBLEScannedDevice)Device, message = "Device Is Successfully Paired" }); } return pairingResult; }