aboutsummaryrefslogtreecommitdiffstats
path: root/examples/direct_bt_scanner01
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2020-08-22 18:32:18 +0200
committerSven Gothel <[email protected]>2020-08-22 18:32:18 +0200
commit1f39f6c21c84e466d2563d4ead1470c3c5b5143b (patch)
tree7166631a4f0081a6370d06488daad82130d88bb5 /examples/direct_bt_scanner01
parent536975dd325723593e38efecde061d8c7c95c707 (diff)
DBTAdapter: Have non-enabled adapter to be valid, use lazy HCI initialization; DBTManager: Validate enabled for non-user default adapter.
DBTAdapter: Have non-enabled adapter to be valid, use lazy HCI initialization In a multi adapter setting, it is possible to have one adapter not being enabled, i.e. blocked from operations (e.g. rfkill). HCI communication is not possible in such cases and 'openHCI()' will fail. We still need to treat such adapter as valid, as they are, and distinguish the states: 'valid' and 'enabled'. This allows 'delivery' of all adapters to a manager and allows querying whether they are enabled. Therefor, the native DBTAdapter will not issue an aggregated 'openHCI()' at construction and initial validation, but treat the HCI instance as a singleton to be lazily created via 'getHCI()' if not yet existing. Here the required listener are also attached to the instance. In the future, this shall also allow dynamically adding/removing and enabling/disabling adapters. Hence before using a chosen adapter, one should query its enabled state via 'isEnabled()', which will also potentially initializing HCI. +++ DBTManager: Validate enabled for non-user default adapter. On the Java side, we can chose a default adapter via the property 'org.tinyb.default_adapter'. If so chosen, it shall be the default adapter, regardless of its 'enabled' state. Otherwise, the default adapter shall be the first enabled adapter in the list.
Diffstat (limited to 'examples/direct_bt_scanner01')
-rw-r--r--examples/direct_bt_scanner01/dbt_scanner01.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/examples/direct_bt_scanner01/dbt_scanner01.cpp b/examples/direct_bt_scanner01/dbt_scanner01.cpp
index 5f57f3ee..ee1f0c39 100644
--- a/examples/direct_bt_scanner01/dbt_scanner01.cpp
+++ b/examples/direct_bt_scanner01/dbt_scanner01.cpp
@@ -181,6 +181,11 @@ int main(int argc, char *argv[])
fprintf(stderr, "Adapter invalid.\n");
exit(1);
}
+ if( !adapter.isEnabled() ) {
+ fprintf(stderr, "Adapter not enabled: device %s, address %s: %s\n",
+ adapter.getName().c_str(), adapter.getAddressString().c_str(), adapter.toString().c_str());
+ exit(1);
+ }
fprintf(stderr, "Using adapter: device %s, address %s: %s\n",
adapter.getName().c_str(), adapter.getAddressString().c_str(), adapter.toString().c_str());