aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2022-05-22 03:54:46 +0200
committerSven Gothel <[email protected]>2022-05-22 03:54:46 +0200
commit82ccb78a8543bf712be591f93fd728ed65b440b4 (patch)
treededd39b2204c880bfe3a9f503d3aaf261b4911dc
parent27446a9fe2cbb514209347a3ba77af467b01b92a (diff)
Adding C++ module/groups to separate the C++ API levels for the user; Adding reference to perihperal-server mode to overview.v2.7.1
-rw-r--r--README.md19
-rw-r--r--api/direct_bt/ATTPDUTypes.hpp65
-rw-r--r--api/direct_bt/BTAdapter.hpp9
-rw-r--r--api/direct_bt/BTAddress.hpp15
-rw-r--r--api/direct_bt/BTDevice.hpp8
-rw-r--r--api/direct_bt/BTDeviceRegistry.hpp13
-rw-r--r--api/direct_bt/BTGattChar.hpp16
-rw-r--r--api/direct_bt/BTGattCmd.hpp8
-rw-r--r--api/direct_bt/BTGattDesc.hpp12
-rw-r--r--api/direct_bt/BTGattHandler.hpp7
-rw-r--r--api/direct_bt/BTGattService.hpp12
-rw-r--r--api/direct_bt/BTIoctl.hpp7
-rw-r--r--api/direct_bt/BTManager.hpp19
-rw-r--r--api/direct_bt/BTSecurityRegistry.hpp14
-rw-r--r--api/direct_bt/BTTypes0.hpp7
-rw-r--r--api/direct_bt/BTTypes1.hpp7
-rw-r--r--api/direct_bt/DBGattServer.hpp32
-rw-r--r--api/direct_bt/DBTConst.hpp7
-rw-r--r--api/direct_bt/GattNumbers.hpp26
-rw-r--r--api/direct_bt/HCIComm.hpp7
-rw-r--r--api/direct_bt/HCIHandler.hpp15
-rw-r--r--api/direct_bt/HCIIoctl.hpp8
-rw-r--r--api/direct_bt/HCITypes.hpp21
-rw-r--r--api/direct_bt/L2CAPComm.hpp7
-rw-r--r--api/direct_bt/L2CAPIoctl.hpp7
-rw-r--r--api/direct_bt/MgmtTypes.hpp7
-rw-r--r--api/direct_bt/SMPHandler.hpp7
-rw-r--r--api/direct_bt/SMPKeyBin.hpp9
-rw-r--r--api/direct_bt/SMPTypes.hpp7
-rw-r--r--api/direct_bt/version.h7
-rw-r--r--java/org/direct_bt/AdapterSettings.java55
-rw-r--r--java/org/direct_bt/BTAdapter.java1
-rw-r--r--java/org/direct_bt/BTDevice.java1
-rw-r--r--java/org/direct_bt/BTGattChar.java7
-rw-r--r--java/org/direct_bt/BTGattDesc.java5
-rw-r--r--java/org/direct_bt/BTGattService.java5
-rw-r--r--java/org/direct_bt/BTManager.java6
-rw-r--r--java/org/direct_bt/DBGattChar.java7
-rw-r--r--java/org/direct_bt/DBGattDesc.java5
-rw-r--r--java/org/direct_bt/DBGattServer.java8
-rw-r--r--java/org/direct_bt/DBGattService.java5
-rw-r--r--src/direct_bt/SMPKeyBin.cpp2
42 files changed, 435 insertions, 77 deletions
diff --git a/README.md b/README.md
index ab3f8628..21baff43 100644
--- a/README.md
+++ b/README.md
@@ -24,16 +24,14 @@ Below you can find a few notes about [*Direct-BT* Origins](#direct_bt_origins).
## Details
You will find a [detailed overview of *Direct-BT*](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/namespacedirect__bt.html#details) (C++)
-and the [same in the Java API](https://jausoft.com/projects/direct_bt/build/documentation/java/html/namespaceorg_1_1direct__bt.html#details).
+and the [same in the Java API](https://jausoft.com/projects/direct_bt/build/documentation/java/html/namespaceorg_1_1direct__bt.html#details).<br/>
+See details on the [C++ and Java API](#direct_bt_apidoc) including its different C++ API level modules.
[AdapterStatusListener](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/classdirect__bt_1_1AdapterStatusListener.html)
allows listening to adapter changes and device discovery and
[BTGattCharListener](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/classdirect__bt_1_1BTGattCharListener.html)
to GATT indications and notifications.
-*Direct-BT* may be utilized via its [C++ API](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/index.html)
-or via its [Java API](https://jausoft.com/projects/direct_bt/build/documentation/java/html/index.html).
-
*Direct-BT* is exposed via the following native libraries
- *libdirect_bt.so* for the core C++ implementation.
- *libjavadirect_bt.so* for the Java binding.
@@ -198,15 +196,18 @@ See *Examples* below ...
### API
Exposed API closely follows and references the [Bluetooth Specification](https://www.bluetooth.com/specifications/bluetooth-core-specification/).
+<a name="direct_bt_apidoc"></a>
+
#### API Documentation
Up to date API documentation can be found:
-* [API Overview](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/namespacedirect__bt.html#details) (C++)
-and the [same in the Java API](https://jausoft.com/projects/direct_bt/build/documentation/java/html/namespaceorg_1_1direct__bt.html#details).
-
-* [C++ API Doc](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/index.html).
+* [C++ API Doc](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/namespacedirect__bt.html#details):
+ * [General User Level API](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/group__DBTUserAPI.html)
+ * [Central-Client User Level API](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/group__DBTUserClientAPI.html)
+ * [Peripheral-Server User Level API](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/group__DBTUserServerAPI.html)
+ * [System Level API](https://jausoft.com/projects/direct_bt/build/documentation/cpp/html/group__DBTSystemAPI.html)
-* [Java API Doc](https://jausoft.com/projects/direct_bt/build/documentation/java/html/index.html).
+* [Java API Doc](https://jausoft.com/projects/direct_bt/build/documentation/java/html/namespaceorg_1_1direct__bt.html#details)
* [jaulib Standalone C++ API Doc](https://jausoft.com/projects/jaulib/build/documentation/cpp/html/index.html).
diff --git a/api/direct_bt/ATTPDUTypes.hpp b/api/direct_bt/ATTPDUTypes.hpp
index 64bcc680..12650f8d 100644
--- a/api/direct_bt/ATTPDUTypes.hpp
+++ b/api/direct_bt/ATTPDUTypes.hpp
@@ -63,10 +63,16 @@
* - Using *BlueZ Kernel Manager Control Channel* via MgmtMsg communication.
* - *HCI Handling* via HCIHandler using HCIPacket implementing connect/disconnect w/ tracking, device discovery, etc
* - *ATT PDU* AttPDUMsg via L2CAP for low level packet communication
- * - *GATT Support* via BTGattHandler using AttPDUMsg over L2CAPComm, providing
- * - BTGattService
- * - BTGattChar
- * - BTGattDesc
+ * - *GATT Support* via BTGattHandler using AttPDUMsg over L2CAPComm, ...
+ * - Central-Client Functionality, i.e. ::GATTRole::Client or BTAdapter in ::BTRole::Master:
+ * - BTGattService
+ * - BTGattChar
+ * - BTGattDesc
+ * - Peripheral-Server Functionality, i.e. ::GATTRole::Server or BTAdapter in ::BTRole::Slave:
+ * - DBGattServer
+ * - DBGattService
+ * - DBGattChar
+ * - DBGattDesc
* - *SMP PDU* SMPPDUMsg via L2CAP for Security Manager Protocol (SMP) communication
* - *SMP Support* via SMPHandler using SMPPDUMsg over L2CAPComm, providing (Not yet supported by Linux/BlueZ)
* - LE Secure Connections
@@ -87,7 +93,8 @@
*
* ## Direct-BT User Hierarchy
*
- * From a user perspective the following hierarchy is provided
+ * From a user central-client perspective the following hierarchy is provided,
+ * i.e. ::GATTRole::Client or BTAdapter in ::BTRole::Master:
* - BTManager has zero or more
* - BTAdapter has zero or more
* - BTDevice has zero or more
@@ -95,6 +102,15 @@
* - BTGattChar has zero or more
* - BTGattDesc
*
+ * From a user peripheral-server perspective the following hierarchy is provided,
+ * i.e. ::GATTRole::Server or BTAdapter in ::BTRole::Slave:
+ * - BTManager has zero or more
+ * - BTAdapter has zero or one
+ * - DBGattServer has zero or more
+ * - DBGattService has zero or more
+ * - DBGattChar has zero or more
+ * - DBGattDesc
+ *
* - - - - - - - - - - - - - - -
*
* ## Direct-BT Object Lifecycle
@@ -108,23 +124,32 @@
* - BTGattChar ownership by BTGattService, with weak BTGattService back-reference
* - BTGattDesc ownership by BTGattChar, with weak BTGattChar back-reference
*
+ * User application instantiates for peripheral-server functionality:
+ * - DBGattServer ownership by user
+ * - DBGattService ownership by user
+ * - DBGattChar ownership by user
+ * - DBGattDesc
+ *
* - - - - - - - - - - - - - - -
*
* ## Direct-BT Mapped Names C++ vs Java
*
* Mapped names from C++ implementation to Java implementation and to Java interface:
*
- * C++ <br> `direct_bt` | Java Implementation <br> `jau.direct_bt` | Java Interface <br> `org.direct_bt` |
- * :----------------| :---------------------| :--------------------|
- * BTManager | DBTManager | BTManager |
- * BTAdapter | DBTAdapter | BTAdapter |
- * BTDevice | DBTDevice | BTDevice |
- * BTGattService | DBTGattService | BTGattService |
- * BTGattChar | DBTGattChar | BTGattChar |
- * BTGattDesc | DBTGattDesc | BTGattDesc |
- * AdapterStatusListener | | AdapterStatusListener |
- * BTGattCharListener | | BTGattCharListener |
- * ChangedAdapterSetFunc() | | BTManager::ChangedAdapterSetListener |
+ * C++ <br> `direct_bt` | Java Implementation <br> `jau.direct_bt` | Java Interface <br> `org.direct_bt` |
+ * :-----------------------| :-----------------| :------------------------------------|
+ * BTManager | DBTManager | BTManager |
+ * BTAdapter | DBTAdapter | BTAdapter |
+ * BTDevice | DBTDevice | BTDevice |
+ * BTGattService | DBTGattService | BTGattService |
+ * BTGattChar | DBTGattChar | BTGattChar |
+ * BTGattDesc | DBTGattDesc | BTGattDesc |
+ * DBGattService | | DBGattService |
+ * DBGattChar | | DBGattChar |
+ * DBGattDesc | | DBGattDesc |
+ * AdapterStatusListener | | AdapterStatusListener |
+ * BTGattCharListener | | BTGattCharListener |
+ * ChangedAdapterSetFunc() | | BTManager::ChangedAdapterSetListener |
*
* - - - - - - - - - - - - - - -
*
@@ -170,6 +195,12 @@
*/
namespace direct_bt {
+ /** @defgroup DBTSystemAPI Direct-BT System Level API
+ * System level Direct-BT API types and functionality, [see Direct-BT Overview](namespacedirect__bt.html#details).
+ *
+ * @{
+ */
+
class AttException : public jau::RuntimeException {
protected:
AttException(std::string const type, std::string const m, const char* file, int line) noexcept
@@ -2056,6 +2087,8 @@ namespace direct_bt {
};
+ /**@}*/
+
} // namespace direct_bt
/** \example dbt_scanner10.cpp
diff --git a/api/direct_bt/BTAdapter.hpp b/api/direct_bt/BTAdapter.hpp
index 7a6fe835..84852b8f 100644
--- a/api/direct_bt/BTAdapter.hpp
+++ b/api/direct_bt/BTAdapter.hpp
@@ -49,6 +49,12 @@
namespace direct_bt {
+ /** @defgroup DBTUserAPI Direct-BT General User Level API
+ * General User level Direct-BT API types and functionality, [see Direct-BT Overview](namespacedirect__bt.html#details).
+ *
+ * @{
+ */
+
class BTAdapter; // forward
class BTManager; // forward
typedef std::shared_ptr<BTManager> BTManagerRef;
@@ -311,6 +317,7 @@ namespace direct_bt {
* @see @ref BTDeviceRoles
* @see @ref BTGattHandlerRoles
* @see [Bluetooth Specification](https://www.bluetooth.com/specifications/bluetooth-core-specification/)
+ * @see [Direct-BT Overview](namespacedirect__bt.html#details)
*/
class BTAdapter : public BTObject
{
@@ -1321,6 +1328,8 @@ namespace direct_bt {
typedef std::shared_ptr<BTAdapter> BTAdapterRef;
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_ADAPTER_HPP_ */
diff --git a/api/direct_bt/BTAddress.hpp b/api/direct_bt/BTAddress.hpp
index a99a7f88..6fa7b0b2 100644
--- a/api/direct_bt/BTAddress.hpp
+++ b/api/direct_bt/BTAddress.hpp
@@ -40,6 +40,11 @@ using jau::EUI48Sub;
namespace direct_bt {
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
/**
* BT Core Spec v5.2: Vol 3, Part C Generic Access Profile (GAP): 15.1.1.1 Public Bluetooth address
* <pre>
@@ -320,16 +325,26 @@ namespace direct_bt {
inline std::string to_string(const BDAddressAndType& a) noexcept { return a.toString(); }
+ /**@}*/
+
} // namespace direct_bt
// injecting specialization of std::hash to namespace std of our types above
namespace std
{
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
template<> struct hash<direct_bt::BDAddressAndType> {
std::size_t operator()(direct_bt::BDAddressAndType const& a) const noexcept {
return a.hash_code();
}
};
+
+ /**@}*/
+
}
#endif /* BT_ADDRESS_HPP_ */
diff --git a/api/direct_bt/BTDevice.hpp b/api/direct_bt/BTDevice.hpp
index 56333965..eeb421fc 100644
--- a/api/direct_bt/BTDevice.hpp
+++ b/api/direct_bt/BTDevice.hpp
@@ -51,6 +51,11 @@ namespace direct_bt {
// *************************************************
// *************************************************
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
class BTAdapter; // forward
class AdapterStatusListener; // forward
typedef std::shared_ptr<AdapterStatusListener> AdapterStatusListenerRef; // forward
@@ -70,6 +75,7 @@ namespace direct_bt {
* @see [BTAdapter roles](@ref BTAdapterRoles).
* @see [BTGattHandler roles](@ref BTGattHandlerRoles).
* @see [Bluetooth Specification](https://www.bluetooth.com/specifications/bluetooth-core-specification/)
+ * @see [Direct-BT Overview](namespacedirect__bt.html#details)
*/
class BTDevice : public BTObject
{
@@ -1212,6 +1218,8 @@ namespace direct_bt {
typedef std::shared_ptr<BTDevice> BTDeviceRef;
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_DEVICE_HPP_ */
diff --git a/api/direct_bt/BTDeviceRegistry.hpp b/api/direct_bt/BTDeviceRegistry.hpp
index 173ba8e7..34bc07f4 100644
--- a/api/direct_bt/BTDeviceRegistry.hpp
+++ b/api/direct_bt/BTDeviceRegistry.hpp
@@ -33,6 +33,11 @@
namespace direct_bt {
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
/**
* Application toolkit providing BT device registration of processed and awaited devices.
* The latter on a pattern matching basis, i.e. EUI48Sub or name-sub.
@@ -218,16 +223,24 @@ namespace direct_bt {
}
}
+ /**@}*/
+
} // namespace direct_bt
// injecting specialization of std::hash to namespace std of our types above
namespace std
{
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
template<> struct hash<direct_bt::BTDeviceRegistry::DeviceID> {
std::size_t operator()(direct_bt::BTDeviceRegistry::DeviceID const& a) const noexcept {
return a.hash_code();
}
};
+
+ /**@}*/
}
#endif /* DBT_DEV_ACCOUNTING_HPP_ */
diff --git a/api/direct_bt/BTGattChar.hpp b/api/direct_bt/BTGattChar.hpp
index 43727dfb..f157889c 100644
--- a/api/direct_bt/BTGattChar.hpp
+++ b/api/direct_bt/BTGattChar.hpp
@@ -68,12 +68,22 @@ namespace direct_bt {
class BTGattCharListener; // forward
typedef std::shared_ptr<BTGattCharListener> BTGattCharListenerRef;
+ /** @defgroup DBTUserClientAPI Direct-BT Central-Client User Level API
+ * User level Direct-BT API types and functionality addressing the central-client ::GATTRole::Client perspective,
+ * [see Direct-BT Overview](namespacedirect__bt.html#details).
+ *
+ * @{
+ */
+
/**
* Representing a Gatt Characteristic object from the ::GATTRole::Client perspective.
*
- * BT Core Spec v5.2: Vol 3, Part G GATT: 3.3 Characteristic Definition
+ * A list of shared BTGattChar instances is available from BTGattService
+ * via BTGattService::characteristicList.
*
- * handle -> CDAV value
+ * See [Direct-BT Overview](namespacedirect__bt.html#details).
+ *
+ * BT Core Spec v5.2: Vol 3, Part G GATT: 3.3 Characteristic Definition
*
* BT Core Spec v5.2: Vol 3, Part G GATT: 4.6.1 Discover All Characteristics of a Service
*
@@ -493,6 +503,8 @@ namespace direct_bt {
};
typedef std::shared_ptr<BTGattCharListener> BTGattCharListenerRef;
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_GATT_CHARACTERISTIC_HPP_ */
diff --git a/api/direct_bt/BTGattCmd.hpp b/api/direct_bt/BTGattCmd.hpp
index 275968df..cd96963c 100644
--- a/api/direct_bt/BTGattCmd.hpp
+++ b/api/direct_bt/BTGattCmd.hpp
@@ -40,6 +40,11 @@
namespace direct_bt {
+ /** \addtogroup DBTUserClientAPI
+ *
+ * @{
+ */
+
/**
* Class maps a GATT command and optionally its asynchronous response
* to a synchronous atomic operation.
@@ -282,6 +287,9 @@ namespace direct_bt {
std::string toString() const noexcept;
};
+
+ /**@}*/
+
}
#endif // BT_GATT_CMD_HPP_
diff --git a/api/direct_bt/BTGattDesc.hpp b/api/direct_bt/BTGattDesc.hpp
index c1695445..17234479 100644
--- a/api/direct_bt/BTGattDesc.hpp
+++ b/api/direct_bt/BTGattDesc.hpp
@@ -56,9 +56,19 @@ namespace direct_bt {
class BTGattChar; // forward
typedef std::shared_ptr<BTGattChar> BTGattCharRef;
+ /** \addtogroup DBTUserClientAPI
+ *
+ * @{
+ */
+
/**
* Representing a Gatt Characteristic Descriptor object from the ::GATTRole::Client perspective.
*
+ * A list of shared BTGattDesc instances is available from BTGattChar
+ * via BTGattChar::descriptorList.
+ *
+ * See [Direct-BT Overview](namespacedirect__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.3.3 Characteristic Descriptor
*/
class BTGattDesc : public BTObject {
@@ -185,6 +195,8 @@ namespace direct_bt {
inline bool operator!=(const BTGattDesc& lhs, const BTGattDesc& rhs) noexcept
{ return !(lhs == rhs); }
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_GATT_DESCRIPTOR_HPP_ */
diff --git a/api/direct_bt/BTGattHandler.hpp b/api/direct_bt/BTGattHandler.hpp
index 5f20d56c..751c6617 100644
--- a/api/direct_bt/BTGattHandler.hpp
+++ b/api/direct_bt/BTGattHandler.hpp
@@ -61,6 +61,11 @@ namespace direct_bt {
class BTDevice; // forward
typedef std::shared_ptr<BTDevice> BTDeviceRef;
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
/**
* GATT Singleton runtime environment properties
* <p>
@@ -1024,6 +1029,8 @@ namespace direct_bt {
};
typedef std::shared_ptr<BTGattHandler> BTGattHandlerRef;
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_GATT_HANDLER_HPP_ */
diff --git a/api/direct_bt/BTGattService.hpp b/api/direct_bt/BTGattService.hpp
index f4e6006b..f38b0328 100644
--- a/api/direct_bt/BTGattService.hpp
+++ b/api/direct_bt/BTGattService.hpp
@@ -62,9 +62,19 @@ namespace direct_bt {
class BTDevice; // forward
typedef std::shared_ptr<BTDevice> BTDeviceRef;
+ /** \addtogroup DBTUserClientAPI
+ *
+ * @{
+ */
+
/**
* Representing a Gatt Service object from the ::GATTRole::Client perspective.
*
+ * A list of shared BTGattService instances can be retrieved from BTDevice
+ * after successful connection and optional pairing via BTDevice::getGattServices().
+ *
+ * See [Direct-BT Overview](namespacedirect__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.1 Service Definition
*
* Includes a complete [Primary] Service Declaration
@@ -148,6 +158,8 @@ namespace direct_bt {
inline bool operator!=(const BTGattService& lhs, const BTGattService& rhs) noexcept
{ return !(lhs == rhs); }
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_GATT_SERVICE_HPP_ */
diff --git a/api/direct_bt/BTIoctl.hpp b/api/direct_bt/BTIoctl.hpp
index 27f9e196..80cce891 100644
--- a/api/direct_bt/BTIoctl.hpp
+++ b/api/direct_bt/BTIoctl.hpp
@@ -87,6 +87,11 @@ extern "C" {
#include <netinet/in.h> // Already exported named by OS
} /* extern "C" */
+/** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
/**
* Information from include/net/bluetooth/bluetooth.h
*/
@@ -196,4 +201,6 @@ enum {
BT_CLOSED
};
+/**@}*/
+
#endif /* BT_IOCTL_HPP_ */
diff --git a/api/direct_bt/BTManager.hpp b/api/direct_bt/BTManager.hpp
index 73cab26d..a58e6c41 100644
--- a/api/direct_bt/BTManager.hpp
+++ b/api/direct_bt/BTManager.hpp
@@ -50,6 +50,11 @@
namespace direct_bt {
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
class BTManager; // forward
/**
@@ -156,6 +161,7 @@ namespace direct_bt {
* @see ChangedAdapterSetCallback
* @see BTManager::addChangedAdapterSetCallback()
* @see BTManager::removeChangedAdapterSetCallback()
+ * @see [Direct-BT Overview](namespacedirect__bt.html#details)
*/
typedef bool (*ChangedAdapterSetFunc)(bool added, std::shared_ptr<BTAdapter>& adapter);
@@ -182,18 +188,19 @@ namespace direct_bt {
* @see ChangedAdapterSetFunc
* @see BTManager::addChangedAdapterSetCallback()
* @see BTManager::removeChangedAdapterSetCallback()
+ * @see [Direct-BT Overview](namespacedirect__bt.html#details)
*/
typedef jau::FunctionDef<bool, bool, std::shared_ptr<BTAdapter>&> ChangedAdapterSetCallback;
typedef jau::cow_darray<ChangedAdapterSetCallback> ChangedAdapterSetCallbackList;
/**
- * A thread safe singleton handler of the Linux Kernel's BlueZ manager control channel.
- * <p>
+ * A thread safe singleton handler of the BTAdapter manager, e.g. Linux Kernel's BlueZ manager control channel.
+ *
* Implementation utilizes a lock free ringbuffer receiving data within its separate thread.
- * </p>
- * <p>
+ *
* Controlling Environment variables, see {@link MgmtEnv}.
- * </p>
+ *
+ * @see [Direct-BT Overview](namespacedirect__bt.html#details)
*/
class BTManager : public jau::JavaUplink {
public:
@@ -574,6 +581,8 @@ namespace direct_bt {
};
typedef std::shared_ptr<BTManager> BTManagerRef;
+ /**@}*/
+
} // namespace direct_bt
#endif /* DBT_MANAGER_HPP_ */
diff --git a/api/direct_bt/BTSecurityRegistry.hpp b/api/direct_bt/BTSecurityRegistry.hpp
index a6c89765..0069b4fa 100644
--- a/api/direct_bt/BTSecurityRegistry.hpp
+++ b/api/direct_bt/BTSecurityRegistry.hpp
@@ -33,12 +33,22 @@
namespace direct_bt {
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
/**
* Application toolkit providing BT security setup and its device association
* on a pattern matching basis, i.e. EUI48Sub or name-sub.
*/
namespace BTSecurityRegistry {
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
struct Entry {
static constexpr int NO_PASSKEY = -1;
@@ -229,8 +239,12 @@ namespace direct_bt {
std::string allToString() noexcept;
+ /**@}*/
+
} // namespace BTSecurityRegistry
+ /**@}*/
+
} // namespace direct_bt
#endif /* DBT_SEC_SETTINGS_HPP_ */
diff --git a/api/direct_bt/BTTypes0.hpp b/api/direct_bt/BTTypes0.hpp
index a19ad2d4..4df7ba65 100644
--- a/api/direct_bt/BTTypes0.hpp
+++ b/api/direct_bt/BTTypes0.hpp
@@ -44,6 +44,11 @@
namespace direct_bt {
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
class BTException : public jau::RuntimeException {
public:
BTException(std::string const m, const char* file, int line) noexcept
@@ -1158,6 +1163,8 @@ namespace direct_bt {
// *************************************************
// *************************************************
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_TYPES0_HPP_ */
diff --git a/api/direct_bt/BTTypes1.hpp b/api/direct_bt/BTTypes1.hpp
index 62db76ef..dd005682 100644
--- a/api/direct_bt/BTTypes1.hpp
+++ b/api/direct_bt/BTTypes1.hpp
@@ -41,6 +41,11 @@ namespace direct_bt {
class BTAdapter; // forward
class BTDevice; // forward
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
class BTObject : public jau::JavaUplink
{
protected:
@@ -292,6 +297,8 @@ namespace direct_bt {
};
inline std::string to_string(const AdapterInfo& a) noexcept { return a.toString(); }
+ /**@}*/
+
} // namespace direct_bt
#endif /* BT_TYPES1_HPP_ */
diff --git a/api/direct_bt/DBGattServer.hpp b/api/direct_bt/DBGattServer.hpp
index 32a3e347..d20f1ccd 100644
--- a/api/direct_bt/DBGattServer.hpp
+++ b/api/direct_bt/DBGattServer.hpp
@@ -69,11 +69,23 @@ namespace direct_bt {
class BTDevice; // forward
typedef std::shared_ptr<BTDevice> BTDeviceRef;
+ /** @defgroup DBTUserServerAPI Direct-BT Peripheral-Server User Level API
+ * User level Direct-BT API types and functionality addressing the peripheral-server ::GATTRole::Server perspective,
+ * , [see Direct-BT Overview](namespacedirect__bt.html#details).
+ *
+ * @{
+ */
+
class DBGattService; // fwd
/**
* Representing a Gatt Characteristic Descriptor object from the ::GATTRole::Server perspective.
*
+ * A list of shared DBGattDesc instances are passed at DBGattChar construction
+ * and are retrievable via DBGattChar::getDescriptors().
+ *
+ * See [Direct-BT Overview](namespacedirect__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.3.3 Characteristic Descriptor
*
* @since 2.4.0
@@ -230,6 +242,11 @@ namespace direct_bt {
/**
* Representing a Gatt Characteristic object from the ::GATTRole::Server perspective.
*
+ * A list of shared DBGattChar instances are passed at DBGattService construction
+ * and are retrievable via DBGattService::getCharacteristics().
+ *
+ * See [Direct-BT Overview](namespacedirect__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.3 Characteristic Definition
*
* handle -> CDAV value
@@ -484,6 +501,11 @@ namespace direct_bt {
/**
* Representing a Gatt Service object from the ::GATTRole::Server perspective.
*
+ * A list of shared DBGattService instances are passed at DBGattServer construction
+ * and are retrievable via DBGattServer::getServices().
+ *
+ * See [Direct-BT Overview](namespacedirect__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.1 Service Definition
*
* Includes a complete [Primary] Service Declaration
@@ -620,8 +642,12 @@ namespace direct_bt {
* Representing a complete list of Gatt Service objects from the ::GATTRole::Server perspective,
* i.e. the Gatt Server database.
*
- * One instance shall be attached to BTAdapter and hence BTGattHandler
- * when operating in Gatt Server mode, i.e. ::GATTRole::Server.
+ * One instance shall be attached to BTAdapter when advertising via BTAdapter::startAdvertising(),
+ * changing its operating mode to Gatt Server mode, i.e. ::GATTRole::Server.
+ *
+ * The instance can also be retrieved via BTAdapter::getGATTServerData().
+ *
+ * See [Direct-BT Overview](namespacedirect__bt.html#details).
*
* This class is not thread safe and only intended to be prepared
* by the user at startup and processed by the Gatt Server facility.
@@ -968,6 +994,8 @@ namespace direct_bt {
std::string to_string(const DBGattServer::Mode m) noexcept;
+ /**@}*/
+
} // namespace direct_bt
#endif /* DB_GATT_SERVER_HPP_ */
diff --git a/api/direct_bt/DBTConst.hpp b/api/direct_bt/DBTConst.hpp
index 0dbbe5f8..81454347 100644
--- a/api/direct_bt/DBTConst.hpp
+++ b/api/direct_bt/DBTConst.hpp
@@ -35,6 +35,11 @@ namespace direct_bt {
using namespace jau::fractions_i64_literals;
using namespace jau::int_literals;
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
#ifdef __linux__
/**
@@ -82,6 +87,8 @@ namespace direct_bt {
*/
inline constexpr const jau::nsize_t MAX_BACKGROUND_DISCOVERY_RETRY = 3;
+ /**@}*/
+
} // namespace direct_bt
#endif /* DBT_CONST_HPP_ */
diff --git a/api/direct_bt/GattNumbers.hpp b/api/direct_bt/GattNumbers.hpp
index 48f8e4a0..8bb073ef 100644
--- a/api/direct_bt/GattNumbers.hpp
+++ b/api/direct_bt/GattNumbers.hpp
@@ -49,6 +49,11 @@
*/
namespace direct_bt {
+/** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
/**
* Following UUID16 GATT profile attribute types are listed under:
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.4 Summary of GATT Profile Attribute Types
@@ -414,26 +419,7 @@ class GattTemperatureMeasurement {
std::string toString() const noexcept;
};
-
-/* Application error */
-
-#define ATT_ECODE_IO 0x80
-#define ATT_ECODE_TIMEOUT 0x81
-#define ATT_ECODE_ABORTED 0x82
-
-#define ATT_MAX_VALUE_LEN 512
-#define ATT_DEFAULT_L2CAP_MTU 48
-#define ATT_DEFAULT_LE_MTU 23
-
-/* Flags for Execute Write Request Operation */
-
-#define ATT_CANCEL_ALL_PREP_WRITES 0x00
-#define ATT_WRITE_ALL_PREP_WRITES 0x01
-
-/* Find Information Response Formats */
-
-#define ATT_FIND_INFO_RESP_FMT_16BIT 0x01
-#define ATT_FIND_INFO_RESP_FMT_128BIT 0x02
+/**@}*/
} // namespace direct_bt
diff --git a/api/direct_bt/HCIComm.hpp b/api/direct_bt/HCIComm.hpp
index 25138f24..b226c73f 100644
--- a/api/direct_bt/HCIComm.hpp
+++ b/api/direct_bt/HCIComm.hpp
@@ -46,6 +46,11 @@
*/
namespace direct_bt {
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
/**
* Read/Write HCI communication channel.
*/
@@ -169,6 +174,8 @@ namespace direct_bt {
}
};
+ /**@}*/
+
} // namespace direct_bt
#endif /* HCI_COMM_HPP_ */
diff --git a/api/direct_bt/HCIHandler.hpp b/api/direct_bt/HCIHandler.hpp
index c6a39ff1..637215d8 100644
--- a/api/direct_bt/HCIHandler.hpp
+++ b/api/direct_bt/HCIHandler.hpp
@@ -56,6 +56,11 @@
*/
namespace direct_bt {
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
class HCIHandler; // forward
/**
@@ -894,6 +899,8 @@ namespace direct_bt {
void sendMgmtEvent(const MgmtEvent& event) noexcept;
};
+ /**@}*/
+
} // namespace direct_bt
#if 0
@@ -901,11 +908,19 @@ namespace direct_bt {
// Would need to make direct_bt::HCIHandler::HCIConnection accessible
namespace std
{
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
template<> struct hash<direct_bt::HCIHandler::HCIConnection> {
std::size_t operator()(direct_bt::HCIHandler::HCIConnection const& a) const noexcept {
return a.hash_code();
}
};
+
+ /**@}*/
+
}
#endif
diff --git a/api/direct_bt/HCIIoctl.hpp b/api/direct_bt/HCIIoctl.hpp
index 1b4044f0..e3d285a7 100644
--- a/api/direct_bt/HCIIoctl.hpp
+++ b/api/direct_bt/HCIIoctl.hpp
@@ -85,6 +85,12 @@ extern "C" {
#include <sys/socket.h>
} /* extern "C" */
+
+/** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
/**
* Missing information ???
*/
@@ -2490,5 +2496,7 @@ struct hci_inquiry_req {
};
#define IREQ_CACHE_FLUSH 0x0001
+/**@}*/
+
#endif /* HCI_IOCTL_HPP_ */
diff --git a/api/direct_bt/HCITypes.hpp b/api/direct_bt/HCITypes.hpp
index 3929b00a..b7f8779f 100644
--- a/api/direct_bt/HCITypes.hpp
+++ b/api/direct_bt/HCITypes.hpp
@@ -52,6 +52,11 @@
*/
namespace direct_bt {
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
class HCIException : public jau::RuntimeException {
protected:
HCIException(std::string const type, std::string const m, const char* file, int line) noexcept
@@ -246,6 +251,13 @@ namespace direct_bt {
return std::error_code( number(e), HCIStatusCodeCategory::get() );
}
+ /**@}*/
+
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
enum class HCIConstSizeT : jau::nsize_t {
/** HCIPacketType::COMMAND header size including HCIPacketType */
COMMAND_HDR_SIZE = 1+3,
@@ -1468,12 +1480,21 @@ namespace direct_bt {
std::string toString() noexcept;
};
+ /**@}*/
+
} // namespace direct_bt
namespace std
{
+ /** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
template <>
struct is_error_code_enum<direct_bt::HCIStatusCode> : true_type {};
+
+ /**@}*/
}
#endif /* HCI_TYPES_HPP_ */
diff --git a/api/direct_bt/L2CAPComm.hpp b/api/direct_bt/L2CAPComm.hpp
index 694eab2b..f47f32cd 100644
--- a/api/direct_bt/L2CAPComm.hpp
+++ b/api/direct_bt/L2CAPComm.hpp
@@ -51,6 +51,11 @@ namespace direct_bt {
class BTDevice; // forward
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
/**
* L2CAP Singleton runtime environment properties
* <p>
@@ -322,6 +327,8 @@ namespace direct_bt {
std::string toString() const noexcept override;
};
+ /**@}*/
+
} // namespace direct_bt
#endif /* L2CAP_COMM_HPP_ */
diff --git a/api/direct_bt/L2CAPIoctl.hpp b/api/direct_bt/L2CAPIoctl.hpp
index 442dd5b7..a4dfa5d9 100644
--- a/api/direct_bt/L2CAPIoctl.hpp
+++ b/api/direct_bt/L2CAPIoctl.hpp
@@ -93,6 +93,11 @@ extern "C" {
#include <sys/socket.h>
} /* extern "C" */
+/** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
/**
* Information from include/net/bluetooth/l2cap.h
* Mixed with own comments.
@@ -546,4 +551,6 @@ struct l2cap_le_credits {
__le16 credits;
} __packed;
+/**@}*/
+
#endif /* L2CAP_IOCTL_HPP_ */
diff --git a/api/direct_bt/MgmtTypes.hpp b/api/direct_bt/MgmtTypes.hpp
index 2c1a4d9b..35870c10 100644
--- a/api/direct_bt/MgmtTypes.hpp
+++ b/api/direct_bt/MgmtTypes.hpp
@@ -47,6 +47,11 @@
namespace direct_bt {
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
class MgmtException : public jau::RuntimeException {
protected:
MgmtException(std::string const type, std::string const m, const char* file, int line) noexcept
@@ -2812,6 +2817,8 @@ namespace direct_bt {
typedef jau::cow_darray<MgmtAdapterEventCallback> MgmtAdapterEventCallbackList;
+ /**@}*/
+
} // namespace direct_bt
#endif /* MGMT_TYPES_HPP_ */
diff --git a/api/direct_bt/SMPHandler.hpp b/api/direct_bt/SMPHandler.hpp
index 8f5c6cf9..610fd7c8 100644
--- a/api/direct_bt/SMPHandler.hpp
+++ b/api/direct_bt/SMPHandler.hpp
@@ -78,6 +78,11 @@
*/
namespace direct_bt {
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
/**
* SMP Singleton runtime environment properties
* <p>
@@ -242,6 +247,8 @@ namespace direct_bt {
int removeSMPSecurityReqCallback(const SMPSecurityReqCallback & l);
};
+ /**@}*/
+
} // namespace direct_bt
#endif /* SMP_HANDLER_HPP_ */
diff --git a/api/direct_bt/SMPKeyBin.hpp b/api/direct_bt/SMPKeyBin.hpp
index 27f4b51f..ed679396 100644
--- a/api/direct_bt/SMPKeyBin.hpp
+++ b/api/direct_bt/SMPKeyBin.hpp
@@ -29,8 +29,6 @@
#include <string>
#include <memory>
#include <cstdint>
-#include <fstream>
-#include <iostream>
#include "SMPTypes.hpp"
#include "HCITypes.hpp"
@@ -40,6 +38,11 @@ namespace direct_bt {
class BTDevice; // forward
class BTAdapter; // forward
+/** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
/**
* Storage for SMP keys including required connection parameter per local adapter and remote device.
*
@@ -394,6 +397,8 @@ class SMPKeyBin {
bool read(const std::string& fname);
};
+/**@}*/
+
} // namespace direct_bt
#endif /* SMPKEYBIN_HPP_ */
diff --git a/api/direct_bt/SMPTypes.hpp b/api/direct_bt/SMPTypes.hpp
index 76b7c9cc..bb0a3a54 100644
--- a/api/direct_bt/SMPTypes.hpp
+++ b/api/direct_bt/SMPTypes.hpp
@@ -49,6 +49,11 @@
*/
namespace direct_bt {
+ /** \addtogroup DBTSystemAPI
+ *
+ * @{
+ */
+
class SMPException : public jau::RuntimeException {
protected:
SMPException(std::string const type, std::string const m, const char* file, int line) noexcept
@@ -2006,6 +2011,8 @@ namespace direct_bt {
}
};
+ /**@}*/
+
} // namespace direct_bt
#endif /* SMP_TYPES_HPP_ */
diff --git a/api/direct_bt/version.h b/api/direct_bt/version.h
index 9989cf7d..61e7049c 100644
--- a/api/direct_bt/version.h
+++ b/api/direct_bt/version.h
@@ -26,8 +26,15 @@
#ifndef DIRECT_BT_VERSION_H_
#define DIRECT_BT_VERSION_H_
+/** \addtogroup DBTUserAPI
+ *
+ * @{
+ */
+
extern const char* DIRECT_BT_VERSION;
extern const char* DIRECT_BT_VERSION_SHORT;
extern const char* DIRECT_BT_VERSION_API;
+/**@}*/
+
#endif /* DIRECT_BT_VERSION_H_ */
diff --git a/java/org/direct_bt/AdapterSettings.java b/java/org/direct_bt/AdapterSettings.java
index a14e0b0b..47deb10f 100644
--- a/java/org/direct_bt/AdapterSettings.java
+++ b/java/org/direct_bt/AdapterSettings.java
@@ -20,10 +20,16 @@
* - Using *BlueZ Kernel Manager Control Channel* via MgmtMsg communication.
* - *HCI Handling* via HCIHandler using HCIPacket implementing connect/disconnect w/ tracking, device discovery, etc
* - *ATT PDU* AttPDUMsg via L2CAP for low level packet communication
- * - *GATT Support* via BTGattHandler using AttPDUMsg over L2CAPComm, providing
- * - BTGattService
- * - BTGattChar
- * - BTGattDesc
+ * - *GATT Support* via BTGattHandler using AttPDUMsg over L2CAPComm, ...
+ * - Central-Client Functionality, i.e. GATT client role or BTAdapter in {@link BTRole#Master}:
+ * - BTGattService
+ * - BTGattChar
+ * - BTGattDesc
+ * - Peripheral-Server Functionality, i.e. GATT server role or BTAdapter in {@link BTRole#Slave}:
+ * - DBGattServer
+ * - DBGattService
+ * - DBGattChar
+ * - DBGattDesc
* - *SMP PDU* SMPPDUMsg via L2CAP for Security Manager Protocol (SMP) communication
* - *SMP Support* via SMPHandler using SMPPDUMsg over L2CAPComm, providing (Not yet supported by Linux/BlueZ)
* - LE Secure Connections
@@ -44,7 +50,8 @@
*
* ## Direct-BT User Hierarchy
*
- * From a user perspective the following hierarchy is provided
+ * From a user central-client perspective the following hierarchy is provided,
+ * i.e. GATT client role or BTAdapter in {@link BTRole#Master}:
* - BTManager has zero or more
* - BTAdapter has zero or more
* - BTDevice has zero or more
@@ -52,6 +59,15 @@
* - BTGattChar has zero or more
* - BTGattDesc
*
+ * From a user peripheral-server perspective the following hierarchy is provided,
+ * i.e. GATT server role or BTAdapter in {@link BTRole#Slave}:
+ * - BTManager has zero or more
+ * - BTAdapter has zero or one
+ * - DBGattServer has zero or more
+ * - DBGattService has zero or more
+ * - DBGattChar has zero or more
+ * - DBGattDesc
+ *
* - - - - - - - - - - - - - - -
*
* ## Direct-BT Object Lifecycle
@@ -65,6 +81,12 @@
* - BTGattChar ownership by BTGattService, with weak BTGattService back-reference
* - BTGattDesc ownership by BTGattChar, with weak BTGattChar back-reference
*
+ * User application instantiates for peripheral-server functionality:
+ * - DBGattServer ownership by user
+ * - DBGattService ownership by user
+ * - DBGattChar ownership by user
+ * - DBGattDesc
+ *
* - - - - - - - - - - - - - - -
*
* ## Direct-BT Mapped Names C++ vs Java
@@ -72,16 +94,19 @@
* Mapped names from C++ implementation to Java implementation and to Java interface:
*
* C++ <br> `direct_bt` | Java Implementation <br> `jau.direct_bt` | Java Interface <br> `org.direct_bt` |
- * :----------------| :---------------------| :--------------------|
- * BTManager | DBTManager | BTManager |
- * BTAdapter | DBTAdapter | BTAdapter |
- * BTDevice | DBTDevice | BTDevice |
- * BTGattService | DBTGattService | BTGattService |
- * BTGattChar | DBTGattChar | BTGattChar |
- * BTGattDesc | DBTGattDesc | BTGattDesc |
- * AdapterStatusListener | | AdapterStatusListener |
- * BTGattCharListener | | BTGattCharListener |
- * ChangedAdapterSetFunc() | | BTManager::ChangedAdapterSetListener |
+ * :-----------------------| :-----------------| :------------------------------------|
+ * BTManager | DBTManager | BTManager |
+ * BTAdapter | DBTAdapter | BTAdapter |
+ * BTDevice | DBTDevice | BTDevice |
+ * BTGattService | DBTGattService | BTGattService |
+ * BTGattChar | DBTGattChar | BTGattChar |
+ * BTGattDesc | DBTGattDesc | BTGattDesc |
+ * DBGattService | | DBGattService |
+ * DBGattChar | | DBGattChar |
+ * DBGattDesc | | DBGattDesc |
+ * AdapterStatusListener | | AdapterStatusListener |
+ * BTGattCharListener | | BTGattCharListener |
+ * ChangedAdapterSetFunc() | | BTManager::ChangedAdapterSetListener |
*
* - - - - - - - - - - - - - - -
*
diff --git a/java/org/direct_bt/BTAdapter.java b/java/org/direct_bt/BTAdapter.java
index 1a0c9732..ee5f3efa 100644
--- a/java/org/direct_bt/BTAdapter.java
+++ b/java/org/direct_bt/BTAdapter.java
@@ -42,6 +42,7 @@ import java.util.List;
* @see BTDevice
* @see [BTDevice roles](@ref BTDeviceRoles).
* @see [Bluetooth Specification](https://www.bluetooth.com/specifications/bluetooth-core-specification/)
+ * @see [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details)
*/
public interface BTAdapter extends BTObject
{
diff --git a/java/org/direct_bt/BTDevice.java b/java/org/direct_bt/BTDevice.java
index 57187d6b..253bdd3b 100644
--- a/java/org/direct_bt/BTDevice.java
+++ b/java/org/direct_bt/BTDevice.java
@@ -42,6 +42,7 @@ import java.util.Map;
* @see BTAdapter
* @see [BTAdapter roles](@ref BTAdapterRoles).
* @see [Bluetooth Specification](https://www.bluetooth.com/specifications/bluetooth-core-specification/)
+ * @see [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details)
*/
public interface BTDevice extends BTObject
{
diff --git a/java/org/direct_bt/BTGattChar.java b/java/org/direct_bt/BTGattChar.java
index bb185da7..11063873 100644
--- a/java/org/direct_bt/BTGattChar.java
+++ b/java/org/direct_bt/BTGattChar.java
@@ -30,9 +30,12 @@ import java.util.List;
/**
* Representing a Gatt Characteristic object from the GATT client perspective.
*
- * BT Core Spec v5.2: Vol 3, Part G GATT: 3.3 Characteristic Definition
+ * A list of shared BTGattChar instances is available from BTGattService
+ * via BTGattService::getChars().
+ *
+ * See [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details).
*
- * handle -> CDAV value
+ * BT Core Spec v5.2: Vol 3, Part G GATT: 3.3 Characteristic Definition
*
* BT Core Spec v5.2: Vol 3, Part G GATT: 4.6.1 Discover All Characteristics of a Service
*
diff --git a/java/org/direct_bt/BTGattDesc.java b/java/org/direct_bt/BTGattDesc.java
index aaba037b..618be333 100644
--- a/java/org/direct_bt/BTGattDesc.java
+++ b/java/org/direct_bt/BTGattDesc.java
@@ -28,6 +28,11 @@ package org.direct_bt;
/**
* Representing a Gatt Characteristic Descriptor object from the GATT client perspective.
*
+ * A list of shared BTGattDesc instances is available from BTGattChar
+ * via BTGattChar::getDescriptors().
+ *
+ * See [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.3.3 Characteristic Descriptor
*
* See {@link DBGattDesc.UUID16} for selected standard GATT descriptor numbers in UUID16 format
diff --git a/java/org/direct_bt/BTGattService.java b/java/org/direct_bt/BTGattService.java
index 592ca9fc..6bc48fd0 100644
--- a/java/org/direct_bt/BTGattService.java
+++ b/java/org/direct_bt/BTGattService.java
@@ -31,6 +31,11 @@ import java.util.List;
/**
* Representing a Gatt Service object from the GATT client perspective.
*
+ * A list of shared BTGattService instances can be retrieved from BTDevice
+ * after successful connection and optional pairing via BTDevice::getGattServices().
+ *
+ * See [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.1 Service Definition
*
* Includes a complete [Primary] Service Declaration
diff --git a/java/org/direct_bt/BTManager.java b/java/org/direct_bt/BTManager.java
index c3de67bc..e30f7764 100644
--- a/java/org/direct_bt/BTManager.java
+++ b/java/org/direct_bt/BTManager.java
@@ -27,6 +27,11 @@ package org.direct_bt;
import java.util.List;
+/**
+ * A thread safe singleton handler of the BTAdapter manager, e.g. Linux Kernel's BlueZ manager control channel.
+ *
+ * @see [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details)
+ */
public interface BTManager
{
/**
@@ -43,6 +48,7 @@ public interface BTManager
* @since 2.0.0
* @see BTManager#addChangedAdapterSetListener(ChangedAdapterSetListener)
* @see BTManager#removeChangedAdapterSetListener(ChangedAdapterSetListener)
+ * @see [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details)
*/
public static interface ChangedAdapterSetListener {
/**
diff --git a/java/org/direct_bt/DBGattChar.java b/java/org/direct_bt/DBGattChar.java
index 0872ba5e..7638d011 100644
--- a/java/org/direct_bt/DBGattChar.java
+++ b/java/org/direct_bt/DBGattChar.java
@@ -30,9 +30,12 @@ import java.util.List;
/**
* Representing a Gatt Characteristic object from the GATT server perspective.
*
- * BT Core Spec v5.2: Vol 3, Part G GATT: 3.3 Characteristic Definition
+ * A list of shared DBGattChar instances are passed at DBGattService construction
+ * and are retrievable via DBGattService::getChars().
+ *
+ * See [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details).
*
- * handle -> CDAV value
+ * BT Core Spec v5.2: Vol 3, Part G GATT: 3.3 Characteristic Definition
*
* BT Core Spec v5.2: Vol 3, Part G GATT: 4.6.1 Discover All Characteristics of a Service
*
diff --git a/java/org/direct_bt/DBGattDesc.java b/java/org/direct_bt/DBGattDesc.java
index 4a7495ab..81303da6 100644
--- a/java/org/direct_bt/DBGattDesc.java
+++ b/java/org/direct_bt/DBGattDesc.java
@@ -28,6 +28,11 @@ package org.direct_bt;
/**
* Representing a Gatt Characteristic Descriptor object from the GATT server perspective.
*
+ * A list of shared DBGattChar instances are passed at DBGattChar construction
+ * and are retrievable via DBGattChar::getDescriptors().
+ *
+ * See [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.3.3 Characteristic Descriptor
*
* @since 2.4.0
diff --git a/java/org/direct_bt/DBGattServer.java b/java/org/direct_bt/DBGattServer.java
index e4001198..59fcb8da 100644
--- a/java/org/direct_bt/DBGattServer.java
+++ b/java/org/direct_bt/DBGattServer.java
@@ -32,8 +32,12 @@ import java.util.List;
* Representing a complete list of Gatt Service objects from the GATT server perspective,
* i.e. the Gatt Server database.
*
- * One instance shall be attached to BTAdapter
- * when operating in Gatt Server mode.
+ * One instance shall be attached to BTAdapter when advertising via BTAdapter::startAdvertising(),
+ * changing its operating mode to Gatt Server mode.
+ *
+ * The instance can also be retrieved via BTAdapter::getGATTServerData().
+ *
+ * See [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details).
*
* @since 2.4.0
*/
diff --git a/java/org/direct_bt/DBGattService.java b/java/org/direct_bt/DBGattService.java
index bb8aed32..d7054485 100644
--- a/java/org/direct_bt/DBGattService.java
+++ b/java/org/direct_bt/DBGattService.java
@@ -30,6 +30,11 @@ import java.util.List;
/**
* Representing a Gatt Service object from the ::GATTRole::Server perspective.
*
+ * A list of shared DBGattService instances are passed at DBGattServer construction
+ * and are retrievable via DBGattServer::getServices().
+ *
+ * See [Direct-BT Overview](namespaceorg_1_1direct__bt.html#details).
+ *
* BT Core Spec v5.2: Vol 3, Part G GATT: 3.1 Service Definition
*
* Includes a complete [Primary] Service Declaration
diff --git a/src/direct_bt/SMPKeyBin.cpp b/src/direct_bt/SMPKeyBin.cpp
index 0c98937f..e3274307 100644
--- a/src/direct_bt/SMPKeyBin.cpp
+++ b/src/direct_bt/SMPKeyBin.cpp
@@ -27,6 +27,8 @@
#include <memory>
#include <cstdint>
#include <cstdio>
+#include <fstream>
+#include <iostream>
#include <jau/file_util.hpp>