diff options
author | Sven Gothel <[email protected]> | 2020-07-26 07:44:29 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2020-07-26 07:44:29 +0200 |
commit | aac1c44171b525283d75874ca231e6d3e165350f (patch) | |
tree | 43c4c5575ef701f0337e7b377936b26886bb1140 | |
parent | c89c485b430a0e2eaeb6ba4acaeefbcc29e396c8 (diff) |
ScannerTinyB10: Add shutdown test issued from notify/indicate callback, testing robustness of object lifecyclev2.1.16
-rw-r--r-- | examples/java/ScannerTinyB10.java | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/examples/java/ScannerTinyB10.java b/examples/java/ScannerTinyB10.java index 0a9b3114..6abc944c 100644 --- a/examples/java/ScannerTinyB10.java +++ b/examples/java/ScannerTinyB10.java @@ -50,6 +50,8 @@ import org.tinyb.GATTCharacteristicListener; import org.tinyb.HCIStatusCode; import org.tinyb.HCIWhitelistConnectType; +import direct_bt.tinyb.DBTManager; + public class ScannerTinyB10 { static final String EUI48_ANY_DEVICE = "00:00:00:00:00:00"; @@ -70,6 +72,8 @@ public class ScannerTinyB10 { int dev_id = 0; // default + int shutdownTest = 0; + Collection<String> devicesInProcessing = Collections.synchronizedCollection(new ArrayList<>()); Collection<String> devicesProcessed = Collections.synchronizedCollection(new ArrayList<>()); @@ -177,6 +181,39 @@ public class ScannerTinyB10 { } } + void execute(final Runnable task, final boolean offThread) { + if( offThread ) { + final Thread t = new Thread(task); + t.setDaemon(true); + t.start(); + } else { + task.run(); + } + } + void shutdownTest() { + switch( shutdownTest ) { + case 1: + shutdownTest01(); + break; + case 2: + shutdownTest02(); + break; + default: + // nop + } + } + void shutdownTest01() { + execute( () -> { + final DBTManager mngr = (DBTManager) DBTManager.getBluetoothManager(); + mngr.shutdown(); + }, true); + } + void shutdownTest02() { + execute( () -> { + System.exit(1); + }, true); + } + private void processConnectedDevice(final BluetoothDevice device) { System.err.println("****** Processing Device: Start " + device.toString()); device.getAdapter().stopDiscovery(); // make sure for pending connections on failed connect*(..) command @@ -228,6 +265,8 @@ public class ScannerTinyB10 { final byte[] value, final long timestamp) { System.err.println("****** GATT notificationReceived: "+charDecl+ ", value "+BluetoothUtils.bytesHexString(value, true, true)); + shutdownTest(); + } @Override @@ -235,6 +274,7 @@ public class ScannerTinyB10 { final byte[] value, final long timestamp, final boolean confirmationSent) { System.err.println("****** GATT indicationReceived: "+charDecl+ ", value "+BluetoothUtils.bytesHexString(value, true, true)); + shutdownTest(); } }; final boolean addedCharacteristicListenerRes = @@ -435,6 +475,8 @@ public class ScannerTinyB10 { test.SHOW_UPDATE_EVENTS = true; } else if( arg.equals("-dev_id") && args.length > (i+1) ) { test.dev_id = Integer.valueOf(args[++i]).intValue(); + } else if( arg.equals("-shutdown") && args.length > (i+1) ) { + test.shutdownTest = Integer.valueOf(args[++i]).intValue(); } else if( arg.equals("-mac") && args.length > (i+1) ) { test.waitForDevices.add(args[++i]); } else if( arg.equals("-wl") && args.length > (i+1) ) { @@ -454,7 +496,7 @@ public class ScannerTinyB10 { test.MULTI_MEASUREMENTS = -1; } } - System.err.println("Run with '[-dev_id <adapter-index>] (-mac <device_address>)* [-disconnect] [-count <number>] [-single] (-wl <device_address>)* (-char <uuid>)* [-show_update_events] [-bluetoothManager <BluetoothManager-Implementation-Class-Name>] [-verbose] [-debug]'"); + System.err.println("Run with '[-dev_id <adapter-index>] (-mac <device_address>)* [-disconnect] [-count <number>] [-single] (-wl <device_address>)* (-char <uuid>)* [-show_update_events] [-bluetoothManager <BluetoothManager-Implementation-Class-Name>] [-verbose] [-debug] [-shutdown <int>]'"); } System.err.println("BluetoothManager "+bluetoothManagerClazzName); |