aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2020-09-16 13:36:57 +0200
committerSven Gothel <[email protected]>2020-09-16 13:36:57 +0200
commit2ae1ba72a8d0e5dd06d075fd06dae287b44f8bf6 (patch)
tree50a84aa92bee3d719ecdc36e1002d9da785fe598
parenta1310a8481663d2d868b1546651b09976063c5c1 (diff)
ScannerTinyB10, dbt_scanner10: Add '-silent_gatt' options: Don't print detailed GATT info, nor PERFv2.1.21
Testing with multiple devices in parallel, it is useful to be in the most quiet mode - not walking through tons of info dumps.
-rw-r--r--examples/direct_bt_scanner10/dbt_scanner10.cpp54
-rw-r--r--examples/java/ScannerTinyB10.java30
2 files changed, 56 insertions, 28 deletions
diff --git a/examples/direct_bt_scanner10/dbt_scanner10.cpp b/examples/direct_bt_scanner10/dbt_scanner10.cpp
index f89e5e0c..1a0bbf5a 100644
--- a/examples/direct_bt_scanner10/dbt_scanner10.cpp
+++ b/examples/direct_bt_scanner10/dbt_scanner10.cpp
@@ -61,8 +61,9 @@ static bool USE_WHITELIST = false;
static std::vector<EUI48> WHITELIST;
static bool SHOW_UPDATE_EVENTS = false;
+static bool SILENT_GATT = false;
-static std::vector<EUI48> waitForDevice;
+static std::vector<EUI48> waitForDevices;
static void connectDiscoveredDevice(std::shared_ptr<DBTDevice> device);
@@ -151,8 +152,8 @@ class MyAdapterStatusListener : public AdapterStatusListener {
return;
}
if( !isDeviceProcessing( device->getAddress() ) &&
- ( waitForDevice.empty() ||
- ( contains(waitForDevice, device->getAddress()) &&
+ ( waitForDevices.empty() ||
+ ( contains(waitForDevices, device->getAddress()) &&
( 0 < MULTI_MEASUREMENTS || !isDeviceProcessed(device->getAddress()) )
)
)
@@ -182,8 +183,8 @@ class MyAdapterStatusListener : public AdapterStatusListener {
(void)timestamp;
if( !isDeviceProcessing( device->getAddress() ) &&
- ( waitForDevice.empty() ||
- ( contains(waitForDevice, device->getAddress()) &&
+ ( waitForDevices.empty() ||
+ ( contains(waitForDevices, device->getAddress()) &&
( 0 < MULTI_MEASUREMENTS || !isDeviceProcessed(device->getAddress()) )
)
)
@@ -287,7 +288,7 @@ static void processConnectedDevice(std::shared_ptr<DBTDevice> device) {
}
const uint64_t t5 = getCurrentMilliseconds();
- {
+ if( !SILENT_GATT ) {
const uint64_t td01 = t1 - timestamp_t0; // adapter-init -> processing-start
const uint64_t td15 = t5 - t1; // get-gatt-services
const uint64_t tdc5 = t5 - device->getLastDiscoveryTimestamp(); // discovered to gatt-complete
@@ -301,14 +302,14 @@ static void processConnectedDevice(std::shared_ptr<DBTDevice> device) {
td01, td15, tdc5, (tdc5 - td15), td05);
}
std::shared_ptr<GenericAccess> ga = device->getGATTGenericAccess();
- if( nullptr != ga ) {
+ if( nullptr != ga && !SILENT_GATT ) {
fprintf(stderr, " GenericAccess: %s\n\n", ga->toString().c_str());
}
{
std::shared_ptr<GATTHandler> gatt = device->getGATTHandler();
if( nullptr != gatt && gatt->isOpen() ) {
std::shared_ptr<DeviceInformation> di = gatt->getDeviceInformation(primServices);
- if( nullptr != di ) {
+ if( nullptr != di && !SILENT_GATT ) {
fprintf(stderr, " DeviceInformation: %s\n\n", di->toString().c_str());
}
}
@@ -316,24 +317,32 @@ static void processConnectedDevice(std::shared_ptr<DBTDevice> device) {
for(size_t i=0; i<primServices.size(); i++) {
GATTService & primService = *primServices.at(i);
- fprintf(stderr, " [%2.2d] Service %s\n", (int)i, primService.toString().c_str());
- fprintf(stderr, " [%2.2d] Service Characteristics\n", (int)i);
+ if( !SILENT_GATT ) {
+ fprintf(stderr, " [%2.2d] Service %s\n", (int)i, primService.toString().c_str());
+ fprintf(stderr, " [%2.2d] Service Characteristics\n", (int)i);
+ }
std::vector<GATTCharacteristicRef> & serviceCharacteristics = primService.characteristicList;
for(size_t j=0; j<serviceCharacteristics.size(); j++) {
GATTCharacteristic & serviceChar = *serviceCharacteristics.at(j);
- fprintf(stderr, " [%2.2d.%2.2d] Decla: %s\n", (int)i, (int)j, serviceChar.toString().c_str());
+ if( !SILENT_GATT ) {
+ fprintf(stderr, " [%2.2d.%2.2d] Decla: %s\n", (int)i, (int)j, serviceChar.toString().c_str());
+ }
if( serviceChar.hasProperties(GATTCharacteristic::PropertyBitVal::Read) ) {
POctets value(GATTHandler::number(GATTHandler::Defaults::MAX_ATT_MTU), 0);
if( serviceChar.readValue(value) ) {
std::string sval = dfa_utf8_decode(value.get_ptr(), value.getSize());
- fprintf(stderr, " [%2.2d.%2.2d] Value: %s ('%s')\n", (int)i, (int)j, value.toString().c_str(), sval.c_str());
+ if( !SILENT_GATT ) {
+ fprintf(stderr, " [%2.2d.%2.2d] Value: %s ('%s')\n", (int)i, (int)j, value.toString().c_str(), sval.c_str());
+ }
}
}
bool cccdEnableResult[2];
bool cccdRet = serviceChar.addCharacteristicListener( std::shared_ptr<GATTCharacteristicListener>( new MyGATTEventListener(&serviceChar) ),
cccdEnableResult );
- fprintf(stderr, " [%2.2d.%2.2d] addCharacteristicListener Notification(%d), Indication(%d): Result %d\n",
- (int)i, (int)j, cccdEnableResult[0], cccdEnableResult[1], cccdRet);
+ if( !SILENT_GATT ) {
+ fprintf(stderr, " [%2.2d.%2.2d] addCharacteristicListener Notification(%d), Indication(%d): Result %d\n",
+ (int)i, (int)j, cccdEnableResult[0], cccdEnableResult[1], cccdRet);
+ }
}
}
// FIXME sleep 1s for potential callbacks ..
@@ -417,12 +426,12 @@ void test(int dev_id) {
while( !done ) {
if( 0 == MULTI_MEASUREMENTS ||
- ( -1 == MULTI_MEASUREMENTS && !waitForDevice.empty() && allDevicesProcessed(waitForDevice) )
+ ( -1 == MULTI_MEASUREMENTS && !waitForDevices.empty() && allDevicesProcessed(waitForDevices) )
)
{
fprintf(stderr, "****** EOL Test MULTI_MEASUREMENTS left %d, processed %zd/%zd\n",
- MULTI_MEASUREMENTS, devicesProcessed.size(), waitForDevice.size());
- printList("****** WaitForDevice ", waitForDevice);
+ MULTI_MEASUREMENTS, devicesProcessed.size(), waitForDevices.size());
+ printList("****** WaitForDevice ", waitForDevices);
printList("****** DevicesProcessed ", devicesProcessed);
done = true;
} else {
@@ -444,6 +453,8 @@ int main(int argc, char *argv[])
waitForEnter = true;
} else if( !strcmp("-show_update_events", argv[i]) ) {
SHOW_UPDATE_EVENTS = true;
+ } else if( !strcmp("-silent_gatt", argv[i]) ) {
+ SILENT_GATT = true;
} else if( !strcmp("-dev_id", argv[i]) && argc > (i+1) ) {
dev_id = atoi(argv[++i]);
} else if( !strcmp("-btmode", argv[i]) && argc > (i+1) ) {
@@ -453,7 +464,7 @@ int main(int argc, char *argv[])
}
} else if( !strcmp("-mac", argv[i]) && argc > (i+1) ) {
std::string macstr = std::string(argv[++i]);
- waitForDevice.push_back( EUI48(macstr) );
+ waitForDevices.push_back( EUI48(macstr) );
} else if( !strcmp("-wl", argv[i]) && argc > (i+1) ) {
std::string macstr = std::string(argv[++i]);
EUI48 wlmac(macstr);
@@ -472,15 +483,18 @@ int main(int argc, char *argv[])
}
fprintf(stderr, "pid %d\n", getpid());
- fprintf(stderr, "Run with '[-dev_id <adapter-index>] [-btmode <BT-MODE>] [-mac <device_address>] [-disconnect] [-count <number>] [-single] (-wl <device_address>)* [-show_update_events]'\n");
+ fprintf(stderr, "Run with '[-dev_id <adapter-index>] [-btmode <BT-MODE>] (-mac <device_address>)* "
+ "[-disconnect] [-count <number>] [-single] (-wl <device_address>)* [-show_update_events] [-silent_gatt]'\n");
fprintf(stderr, "MULTI_MEASUREMENTS %d\n", MULTI_MEASUREMENTS);
fprintf(stderr, "KEEP_CONNECTED %d\n", KEEP_CONNECTED);
fprintf(stderr, "REMOVE_DEVICE %d\n", REMOVE_DEVICE);
fprintf(stderr, "USE_WHITELIST %d\n", USE_WHITELIST);
+ fprintf(stderr, "SHOW_UPDATE_EVENTS %d\n", SHOW_UPDATE_EVENTS);
+ fprintf(stderr, "SILENT_GATT %d\n", SILENT_GATT);
fprintf(stderr, "dev_id %d\n", dev_id);
fprintf(stderr, "btmode %s\n", getBTModeString(btMode).c_str());
- printList( "waitForDevice: ", waitForDevice);
+ printList( "waitForDevice: ", waitForDevices);
// initialize manager with given default BTMode
DBTManager::get(btMode);
diff --git a/examples/java/ScannerTinyB10.java b/examples/java/ScannerTinyB10.java
index 8d39cd1e..3afb97e4 100644
--- a/examples/java/ScannerTinyB10.java
+++ b/examples/java/ScannerTinyB10.java
@@ -78,6 +78,7 @@ public class ScannerTinyB10 {
final List<String> characteristicList = new ArrayList<String>();
boolean SHOW_UPDATE_EVENTS = false;
+ boolean SILENT_GATT = false;
int dev_id = -1; // use default
@@ -272,7 +273,7 @@ public class ScannerTinyB10 {
throw new RuntimeException("Processing Device: getServices() failed " + device.toString());
}
final long t5 = BluetoothUtils.getCurrentMilliseconds();
- {
+ if( !SILENT_GATT ) {
final long td01 = t1 - timestamp_t0; // adapter-init -> processing-start
final long td15 = t5 - t1; // get-gatt-services
final long tdc5 = t5 - device.getLastDiscoveryTimestamp(); // discovered to gatt-complete
@@ -319,25 +320,33 @@ public class ScannerTinyB10 {
};
final boolean addedCharacteristicListenerRes =
BluetoothGattService.addCharacteristicListenerToAll(device, primServices, myCharacteristicListener);
- println("Added GATTCharacteristicListener: "+addedCharacteristicListenerRes);
+ if( !SILENT_GATT ) {
+ println("Added GATTCharacteristicListener: "+addedCharacteristicListenerRes);
+ }
}
try {
int i=0, j=0;
for(final Iterator<BluetoothGattService> srvIter = primServices.iterator(); srvIter.hasNext(); i++) {
final BluetoothGattService primService = srvIter.next();
- printf(" [%02d] Service %s\n", i, primService.toString());
- printf(" [%02d] Service Characteristics\n", i);
+ if( !SILENT_GATT ) {
+ printf(" [%02d] Service %s\n", i, primService.toString());
+ printf(" [%02d] Service Characteristics\n", i);
+ }
final List<BluetoothGattCharacteristic> serviceCharacteristics = primService.getCharacteristics();
for(final Iterator<BluetoothGattCharacteristic> charIter = serviceCharacteristics.iterator(); charIter.hasNext(); j++) {
final BluetoothGattCharacteristic serviceChar = charIter.next();
- printf(" [%02d.%02d] Decla: %s\n", i, j, serviceChar.toString());
+ if( !SILENT_GATT ) {
+ printf(" [%02d.%02d] Decla: %s\n", i, j, serviceChar.toString());
+ }
final List<String> properties = Arrays.asList(serviceChar.getFlags());
if( properties.contains("read") ) {
final byte[] value = serviceChar.readValue();
final String svalue = BluetoothUtils.decodeUTF8String(value, 0, value.length);
- printf(" [%02d.%02d] Value: %s ('%s')\n",
- i, j, BluetoothUtils.bytesHexString(value, true, true), svalue);
+ if( !SILENT_GATT ) {
+ printf(" [%02d.%02d] Value: %s ('%s')\n",
+ i, j, BluetoothUtils.bytesHexString(value, true, true), svalue);
+ }
}
}
}
@@ -544,6 +553,8 @@ public class ScannerTinyB10 {
waitForEnter = true;
} else if( arg.equals("-show_update_events") ) {
test.SHOW_UPDATE_EVENTS = true;
+ } else if( arg.equals("-silent_gatt") ) {
+ test.SILENT_GATT = 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) ) {
@@ -568,7 +579,7 @@ public class ScannerTinyB10 {
}
}
println("Run with '[-default_dev_id <adapter-index>] [-dev_id <adapter-index>] (-mac <device_address>)* "+
- "[-disconnect] [-count <number>] [-single] (-wl <device_address>)* (-char <uuid>)* [-show_update_events] "+
+ "[-disconnect] [-count <number>] [-single] (-wl <device_address>)* (-char <uuid>)* [-show_update_events] [-silent_gatt]"+
"[-bluetoothManager <BluetoothManager-Implementation-Class-Name>] "+
"[-verbose] [-debug] "+
"[-dbt_verbose [true|false]] "+
@@ -584,6 +595,9 @@ public class ScannerTinyB10 {
println("KEEP_CONNECTED "+test.KEEP_CONNECTED);
println("REMOVE_DEVICE "+test.REMOVE_DEVICE);
println("USE_WHITELIST "+test.USE_WHITELIST);
+ println("SHOW_UPDATE_EVENTS "+test.SHOW_UPDATE_EVENTS);
+ println("SILENT_GATT "+test.SILENT_GATT);
+
println("dev_id "+test.dev_id);
println("waitForDevice: "+Arrays.toString(test.waitForDevices.toArray()));
println("characteristicList: "+Arrays.toString(test.characteristicList.toArray()));