Index: sources/device/DeviceController.cpp =================================================================== diff -u -rbabe585dd9603621275742b07135c0fd4181802f -rdeaef8b5bdfe9be7293e63fb6ac256a9ce3cd3f4 --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision babe585dd9603621275742b07135c0fd4181802f) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision deaef8b5bdfe9be7293e63fb6ac256a9ce3cd3f4) @@ -21,6 +21,7 @@ // Qt #include #include +#include #include // Project @@ -243,9 +244,40 @@ settingsPartitionSpaceCheck(); #endif findPendingLogs(); + checkWiFi(); } /*! + * \brief DeviceController::checkWiFi + * \details Periodically check for WiFi network + */ +void DeviceController::checkWiFi() +{ + QString mInfo; + QNetworkInterface dev; + QList addresses; + + mInfo = tr("WiFi Connection Error"); + if ( ! _wifiAvailable ) { goto lOut; } + + mInfo = tr("No WiFi"); + dev = QNetworkInterface::interfaceFromName(_interface); + if ( ! dev.isValid() ) { goto lOut; } + + addresses = dev.addressEntries(); + mInfo = tr("WiFi Not Connected"); + if ( addresses.isEmpty() ) { goto lOut; } + + if ( ! ( dev.flags().testFlag(QNetworkInterface::IsUp) && + dev.flags().testFlag(QNetworkInterface::IsRunning) ) ) { goto lOut; } + + mInfo = addresses.first().ip().toString(); + +lOut: + emit didWiFiIP(mInfo); +} + +/*! * \brief DeviceController::usbCheck * \details Runs usbSeek to mount or umount or remove it * regarding the state it's in. @@ -589,6 +621,7 @@ } _hasThread = true; checkConfugurationMountReady(); + checkWifiConnectionReady(); } /*! @@ -801,7 +834,6 @@ return; } - ////////////////////////////////////////////////////////////////////////////////////////////////// DeviceUSBMounting void DeviceController::onAttributeRequest(const DeviceUSBMountRequestData &vData) { @@ -1032,7 +1064,7 @@ */ void DeviceController::wifiInfoRequest() { - // ----- check that script exists. + // ----- check that script exists. QString script; if ( checkError( DeviceError::checkScript(script, Scripts_Wifi_Info), _deviceWifiInfoResponse, script) ) return; @@ -1071,12 +1103,22 @@ } } else { + _wifiAvailable = true; processWifiInfoComplete(model, vExitCode, vStatus); emit didAttributeResponse(model.data()); model._data.clear(); } } +/*! + * \brief DeviceController::checkWifiConnectionReady + * \details This function will run the wifi_info.sh at start up when the + * device controller thread is ready + */ +void DeviceController::checkWifiConnectionReady() +{ + wifiInfoRequest(); +} ////////////////////////////////////////////////////////////////////////////////////////////////// DeviceWifiConnect void DeviceController::onAttributeRequest(const DeviceWifiConnectRequestData &vData)