From d7a477e6291c0366966ceb7586750735d786b638 Mon Sep 17 00:00:00 2001 From: Mark Nolan Date: Thu, 14 Dec 2023 09:29:34 +0000 Subject: [PATCH 1/3] CON-656 #time 5m support for S3BLE --- .../driverUtilities/BluetoothDeviceDetails.java | 3 ++- .../driverUtilities/HwDriverShimmerDeviceDetails.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/BluetoothDeviceDetails.java b/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/BluetoothDeviceDetails.java index 477eca5f0..a4c762414 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/BluetoothDeviceDetails.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/BluetoothDeviceDetails.java @@ -52,7 +52,8 @@ public String getGuiName() { public void checkDeviceType() { if(!mShimmerMacId.equals(UtilShimmer.MAC_ADDRESS_ZEROS)){ - if(mFriendlyName.contains(HwDriverShimmerDeviceDetails.SH_SEARCH.BT.SHIMMER3)){ + if(mFriendlyName.contains(HwDriverShimmerDeviceDetails.SH_SEARCH.BT.SHIMMER3) + || mFriendlyName.contains(HwDriverShimmerDeviceDetails.SH_SEARCH.BT.SHIMMER3_RN4678_BLE)){ mDeviceTypeDetected = DEVICE_TYPE.SHIMMER3; } else if(mFriendlyName.contains(HwDriverShimmerDeviceDetails.DEVICE_TYPE.SHIMMER3_OUTPUT.getLabel())){ diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/HwDriverShimmerDeviceDetails.java b/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/HwDriverShimmerDeviceDetails.java index 443316231..22bb0a680 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/HwDriverShimmerDeviceDetails.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/HwDriverShimmerDeviceDetails.java @@ -191,6 +191,8 @@ public static final class TOSHIBA_DRIVER { } public static final String SHIMMER3 = "Shimmer3"; + public static final String SHIMMER3_RN4678_BLE = "S3BLE"; + public static final String SHIMMER3_CYW20820_BLE_SUFFIX = "-BLE"; public static final String SHIMMER_ECG_MD = "ShimmerECGmd"; public static final String SHIMMER4 = "Shimmer4"; public static final String RN42 = "RN42"; From cbc9053f82e9d32ce7c83e26c284ccd8121051d9 Mon Sep 17 00:00:00 2001 From: Mas Azalya Date: Fri, 15 Dec 2023 10:52:43 +0800 Subject: [PATCH 2/3] add shimmer3 ble grpc support in consensys --- .../ShimmerBluetoothManager.java | 10 ++++++- .../BasicShimmerBluetoothManagerPc.java | 29 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/ShimmerBluetoothManager/src/main/java/com/shimmerresearch/managers/bluetoothManager/ShimmerBluetoothManager.java b/ShimmerBluetoothManager/src/main/java/com/shimmerresearch/managers/bluetoothManager/ShimmerBluetoothManager.java index b54714464..046720275 100644 --- a/ShimmerBluetoothManager/src/main/java/com/shimmerresearch/managers/bluetoothManager/ShimmerBluetoothManager.java +++ b/ShimmerBluetoothManager/src/main/java/com/shimmerresearch/managers/bluetoothManager/ShimmerBluetoothManager.java @@ -832,7 +832,11 @@ else if(deviceTypeDetected==DEVICE_TYPE.ARDUINO){ if (shimmerDevice!=null && !(shimmerDevice instanceof ShimmerShell)){ printMessage("Connecting to " + shimmerDevice.getClass().getSimpleName() + " with connection handle = " + (connectThroughComPort? comPort:bluetoothAddress)); if(connectThroughComPort){ - connectExistingShimmer(shimmerDevice, comPort, bluetoothAddress); + if (!comPort.contains(COMPORT_PREFIX)) { + connectShimmer3BleGrpc(bluetoothDetails); + }else { + connectExistingShimmer(shimmerDevice, comPort, bluetoothAddress); + } } else{ connectExistingShimmer(shimmerDevice, bluetoothAddress); @@ -982,6 +986,10 @@ protected void connectVerisenseDevice(BluetoothDeviceDetails bdd) { } + protected void connectShimmer3BleGrpc(BluetoothDeviceDetails bdd) { + + } + protected void connectNoninOnyxII(String comPort, String bluetoothAddress) throws ShimmerException { NoninOnyxIIDevice noninDevice = new NoninOnyxIIDevice(comPort, bluetoothAddress); connectThirdPartyDevice(noninDevice, comPort, bluetoothAddress); diff --git a/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java b/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java index 5094ea341..fe2206467 100644 --- a/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java +++ b/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java @@ -24,6 +24,7 @@ import com.shimmerresearch.grpc.GrpcBLERadioByteCommunication; import com.shimmerresearch.grpc.GrpcBLERadioByteTools; import com.shimmerresearch.managers.bluetoothManager.ShimmerBluetoothManager; +import com.shimmerresearch.pcDriver.ShimmerGRPC; import com.shimmerresearch.pcDriver.ShimmerPC; import com.shimmerresearch.pcSerialPort.SerialPortCommJssc; import com.shimmerresearch.verisense.VerisenseDevice; @@ -36,6 +37,7 @@ public class BasicShimmerBluetoothManagerPc extends ShimmerBluetoothManager { String mPathToVeriBLEApp = "bleconsoleapp\\BLEConsoleApp1.exe"; List macIdList = new ArrayList(); List verisenseDeviceList = new ArrayList(); + List shimmer3BleDeviceList = new ArrayList(); public static int mGRPCPort; public BasicShimmerBluetoothManagerPc() { GrpcBLERadioByteTools grpcTool = new GrpcBLERadioByteTools(); @@ -174,6 +176,33 @@ protected void connectVerisenseDevice(BluetoothDeviceDetails bdd) { } } + @Override + protected void connectShimmer3BleGrpc(BluetoothDeviceDetails bdd) { + ShimmerGRPC shimmer; + + if(!macIdList.contains(bdd.mShimmerMacId)) { + + shimmer = new ShimmerGRPC(bdd.mShimmerMacId.replace(":", ""),"localhost",mGRPCPort); + shimmer.setShimmerUserAssignedName(bdd.mFriendlyName); + shimmer.setMacIdFromUart(bdd.mShimmerMacId); + initializeNewShimmerCommon(shimmer); + + shimmer3BleDeviceList.add(shimmer); + macIdList.add(bdd.mShimmerMacId); + } + else { + shimmer = shimmer3BleDeviceList.get(macIdList.indexOf(bdd.mShimmerMacId)); + } + + try { + if(shimmer.getBluetoothRadioState() == BT_STATE.CONNECTED || shimmer.getBluetoothRadioState() == BT_STATE.STREAMING || shimmer.getBluetoothRadioState() == BT_STATE.STREAMING_LOGGED_DATA) { + throw new ShimmerException("Device is already connected"); + } + shimmer.connect("",""); + } catch (ShimmerException e) { + e.printStackTrace(); + } + } @Override public void connectShimmerThroughCommPort(String comPort){ directConnectUnknownShimmer=true; From f5698499f773f17747ea9da6951a85411b8cae86 Mon Sep 17 00:00:00 2001 From: Mas Azalya Date: Tue, 19 Dec 2023 13:58:25 +0800 Subject: [PATCH 3/3] merge in CON-656 updates, fix configure btn etc --- .../com/shimmerresearch/pcDriver/ShimmerGRPC.java | 8 ++++---- .../bluetooth/BasicShimmerBluetoothManagerPc.java | 15 ++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/ShimmerDriverPC/src/main/java/com/shimmerresearch/pcDriver/ShimmerGRPC.java b/ShimmerDriverPC/src/main/java/com/shimmerresearch/pcDriver/ShimmerGRPC.java index 6014de76b..cc9d50c1f 100644 --- a/ShimmerDriverPC/src/main/java/com/shimmerresearch/pcDriver/ShimmerGRPC.java +++ b/ShimmerDriverPC/src/main/java/com/shimmerresearch/pcDriver/ShimmerGRPC.java @@ -53,9 +53,9 @@ public class ShimmerGRPC extends ShimmerBluetooth implements Serializable{ String mMacAddress; - ShimmerBLEByteServerGrpc.ShimmerBLEByteServerBlockingStub blockingStub; - ManagedChannel channel; - ThreadSafeByteFifoBuffer mBuffer; + transient ShimmerBLEByteServerGrpc.ShimmerBLEByteServerBlockingStub blockingStub; + transient ManagedChannel channel; + transient ThreadSafeByteFifoBuffer mBuffer; String mServerHost = "localhost"; int mServerPort = 50052; protected transient ShimmerDeviceCallbackAdapter mDeviceCallbackAdapter = new ShimmerDeviceCallbackAdapter(this); @@ -463,7 +463,7 @@ public ShimmerDevice deepClone() { ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); - return (ShimmerPC) ois.readObject(); + return (ShimmerDevice) ois.readObject(); } catch (IOException e) { e.printStackTrace(); return null; diff --git a/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java b/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java index fe2206467..97a0eb559 100644 --- a/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java +++ b/ShimmerDriverPC/src/main/java/com/shimmerresearch/tools/bluetooth/BasicShimmerBluetoothManagerPc.java @@ -35,7 +35,8 @@ public class BasicShimmerBluetoothManagerPc extends ShimmerBluetoothManager { String mPathToVeriBLEApp = "bleconsoleapp\\BLEConsoleApp1.exe"; - List macIdList = new ArrayList(); + List verisenseMacIdList = new ArrayList(); + List shimmer3BleMacIdList = new ArrayList(); List verisenseDeviceList = new ArrayList(); List shimmer3BleDeviceList = new ArrayList(); public static int mGRPCPort; @@ -148,7 +149,7 @@ protected Shimmer4sdk createNewShimmer4(ShimmerRadioInitializer radioInitializer protected void connectVerisenseDevice(BluetoothDeviceDetails bdd) { VerisenseDevice verisenseDevice; - if(!macIdList.contains(bdd.mShimmerMacId)) { + if(!verisenseMacIdList.contains(bdd.mShimmerMacId)) { //BleRadioByteCommunication radio1 = new BleRadioByteCommunication(bdd, "bleconsoleapp\\BLEConsoleApp1.exe"); GrpcBLERadioByteCommunication radio1 = new GrpcBLERadioByteCommunication(bdd,"localhost",mGRPCPort); @@ -160,10 +161,10 @@ protected void connectVerisenseDevice(BluetoothDeviceDetails bdd) { initializeNewShimmerCommon(verisenseDevice); verisenseDeviceList.add(verisenseDevice); - macIdList.add(bdd.mShimmerMacId); + verisenseMacIdList.add(bdd.mShimmerMacId); } else { - verisenseDevice = verisenseDeviceList.get(macIdList.indexOf(bdd.mShimmerMacId)); + verisenseDevice = verisenseDeviceList.get(verisenseMacIdList.indexOf(bdd.mShimmerMacId)); } try { @@ -180,7 +181,7 @@ protected void connectVerisenseDevice(BluetoothDeviceDetails bdd) { protected void connectShimmer3BleGrpc(BluetoothDeviceDetails bdd) { ShimmerGRPC shimmer; - if(!macIdList.contains(bdd.mShimmerMacId)) { + if(!shimmer3BleMacIdList.contains(bdd.mShimmerMacId)) { shimmer = new ShimmerGRPC(bdd.mShimmerMacId.replace(":", ""),"localhost",mGRPCPort); shimmer.setShimmerUserAssignedName(bdd.mFriendlyName); @@ -188,10 +189,10 @@ protected void connectShimmer3BleGrpc(BluetoothDeviceDetails bdd) { initializeNewShimmerCommon(shimmer); shimmer3BleDeviceList.add(shimmer); - macIdList.add(bdd.mShimmerMacId); + shimmer3BleMacIdList.add(bdd.mShimmerMacId); } else { - shimmer = shimmer3BleDeviceList.get(macIdList.indexOf(bdd.mShimmerMacId)); + shimmer = shimmer3BleDeviceList.get(shimmer3BleMacIdList.indexOf(bdd.mShimmerMacId)); } try {