QWlanManager
|
QWlanManager is a Qt library allowing to manage WLAN interfaces and network easily without worrying about OS dependencies.
main
branch. 1.0.x
: branch dev/1.0
1.1.x
: branch dev/1.1
Table of contents :
This cross-platform library allow to control interfaces operations (perform a scan, connect to a network, etc...) and manage all related events through the class qwm::Manager
. Main features of the library are:
shared_ptr
) reducing number of copies (passing by value is cheap)qwm::Permissions
will help to manage those.What the library doesn't support (yet!):
One OS can have multiple backend or differ according to the OS version used, this table will reflect those differences:
OS | Backend engine | Permissions backend | Status | Comments |
---|---|---|---|---|
Windows 7/8 | WlanAPI IpHlpAPI | 🚫 | ✅ | Custom CMake options `QWLANMANAGER_WINDOWS_COMPAT_PREWIN10` required Qt5.15 will be needed for those platforms (Qt6 isn't compatible with those) |
Windows 10/11 | WlanAPI IpHlpAPI | WinRT (via AppCapabilityAccess) | ✅ | Package cppwinrt required for permissions backend |
Windows 11 | WinRT (via WifiAdapter) | WinRT (via AppCapabilityAccess) | 🕚 | Package cppwinrt required for wifi and permissions backend |
MacOS | CoreWlan | CoreLocation | ✅ | Please refer to section specific behaviour - MacOS |
Linux | NetworkManager | ❓ | 🕚 | / |
Under MacOS, location permissions key NSLocationUsageDescription
must be declared inside your Info.plist
application file in order to perform a network scan:
This library requires at least C++ 17 standard
Below, list of required dependencies:
Dependencies | VCPKG package | Comments |
---|---|---|
Qt | / | Compatible with Qt6.xCompatible with Qt5.15.x |
Native APIs | / | Please refer to section supported platform for more details |
This library can be use as an embedded library in a subdirectory of your project (like a git submodule for example) :
This library provide some CMake build options:
QWLANMANAGER_WINDOWS_COMPAT_PREWIN10
(default: OFF
): Use this option to enable compatibility with Windows version earlier than Windows 10. Enabling this option will disable some features in order to keep compatibility, so better to disable it for Windows 10 and newer. Internally, this is due to the missing support of C++/WinRT library, impacted features will be :qwm:Permissions
: no support for permissions control, each permissions method will use a mock version, allowing users of the library to not have to make distinction code, permissions will simply return an unknown status.
Please refer to qwm::Manager
class documentation for more details.
This library use the PImpl Idiom in order to preserve ABI compatibility (Qt wiki also have a great tutorial on the PImpl idiom).
So only major release (this project use the semantic versioning) should break the ABI.
In order to easily check at compilation time library version (to manage compatibility between multiple versions for example), macro QWLANMAN_VERSION_ENCODE
(defined inside qwlanman_global.h file) can be used:
Since library header used during final application build could differ from the actual library version, it is recommended to use the method:
All classes/methods has been documented with Doxygen utility and automatically generated at online website documentation.
docs/fragments/Doxyfile-public-api.in
docs/fragments/Doxyfile-internal.in
To generate documentation locally, we can use:
This library is licensed under [MIT license][repo-license].