diff options
Diffstat (limited to 'src/imports/wifi/qwifiinterface.cpp')
-rw-r--r-- | src/imports/wifi/qwifiinterface.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/imports/wifi/qwifiinterface.cpp b/src/imports/wifi/qwifiinterface.cpp new file mode 100644 index 0000000..2922866 --- /dev/null +++ b/src/imports/wifi/qwifiinterface.cpp @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of Qt Enterprise Embedded. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** the contact form at http://qt.digia.com/ +** +****************************************************************************/ +#include "qwifiinterface.h" + +/*! + \qmltype Interface + \inqmlmodule Qt.labs.wifi + \ingroup wifi-qmltypes + \brief The Interface element provides the module API. + + This element cannot be directly created. It can only be accessed via a namespace import. + + \code + import Qt.labs.wifi 0.1 + import Qt.labs.wifi 0.1 as Wifi + + Component.onCompleted: { + if (Wifi.Interface.wifiSupported()) { + var component = Qt.createComponent("WifiMenu.qml") + } else { + print("WiFi functionality not available on this device.") + } + } + \endcode +*/ + +/*! + \qmlmethod bool Interface::wifiSupported() + + Returns true if the device is WiFi capable (provides a WiFi driver), otherwise returns false. +*/ + +bool QWifiInterface::wifiSupported() const +{ +#ifdef Q_OS_ANDROID + const char *fwpath = 0; + // reload wifi firmware + fwpath = (char *)wifi_get_fw_path(WIFI_GET_FW_PATH_STA); + if (!fwpath) { + qWarning() << "QWifiInterface: failed to get firmware path"; + return false; + } + if (wifi_change_fw_path((const char *)fwpath)) { + qWarning() << "QWifiInterface: failed to change firmware path"; + return false; + } +#endif + const bool hasInterface = QDir().exists(QStringLiteral("/sys/class/net/wlan0")); + if (!hasInterface) + qWarning() << "QWifiInterface: could not find wifi interface in /sys/class/net/"; +#ifdef Q_OS_ANDROID + if (hasInterface && wifi_load_driver() == 0 && wifi_start_supplicant(0) == 0) { + return true; + } else { + qWarning() << "QWifiInterface: wifi driver is not available"; + return false; + } +#else + return hasInterface; +#endif +} |