summaryrefslogtreecommitdiffstats
path: root/src/plugins/bearer
Commit message (Collapse)AuthorAgeFilesLines
* expand tabs and related whitespace fixes in *.{cpp,h,qdoc}Oswald Buddenhagen2014-01-133-29/+29
| | | | | | | | the diff -w for this commit is empty. Started-by: Thiago Macieira <thiago.macieira@intel.com> Change-Id: I77bb84e71c63ce75e0709e5b94bee18e3ce6ab9e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* On configuration removal, take it away from foundConfigurationsLorn Potter2013-12-161-0/+1
| | | | | | | | | Prevents derefence of freed QNetworkConfigurationPrivate pointer in QConnmanEngine::getConfigurations(). original submitter: Jakub Adam <jakub.adam@jollamobile.com> Change-Id: Ib915c5a68aeb3196c6ac91c96338ebee9dad30b6 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* make sure to signal only changed configurationsLorn Potter2013-12-161-4/+8
| | | | | | | really use this Change-Id: I082f8d84da572a2c51f67355dcbc06394940c421 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* add NetworkSessionRequired to connman caps.Lorn Potter2013-12-161-1/+2
| | | | | | | | This allows QNetworkAccessManager::get(..) to make a connection, instead of failing. Change-Id: If5af707f7e67946357f5530cac724b223441116a Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* always use connman to connect to cellular servicesLorn Potter2013-12-161-27/+2
| | | | | | | connman provides better error messages. Change-Id: Ifcfd4a4ff8d632273ab9ff7478a6c43cbf2cde98 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* CoreWLan: Fix potential unhandled exception assertGabriel de Dietrich2013-11-262-4/+6
| | | | | | | | | | -[QNSListener notificationHandler:] was declared as not taking any parameter, but used as taking a single NSNotification. This would lead to an 'unrecognized selector' exception raised by Cocoa. Task-number: QTBUG-26844 Change-Id: I56d03a7738c2a1b9dcf3cdecc696b01e65d7b233 Reviewed-by: Liang Qi <liang.qi@digia.com>
* Update ofono backendLorn Potter2013-10-081-1/+1
| | | | | | | The dbus interface has since changed, and I missed this when I updated. Change-Id: Iea3363b276a92f4a97d1ddfbae572515abac9417 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-142-155/+989
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-xcode/Info.plist.app mkspecs/macx-xcode/Info.plist.lib qmake/doc/qmake.qdocconf src/corelib/global/qglobal.h tests/auto/other/exceptionsafety/exceptionsafety.pro tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
| * Make QCoreWlan plugin compile on 10.9Gabriel de Dietrich2013-08-122-155/+989
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We take the path of least resistence and keep the old API code for 10.6 while updating the code for 10.7 and newer. This means we have some code duplication. It also means that we only compile the 10.6 code for QCoreWlanEngine when the deploymen target is 10.6. The 10.6 version file should be removed once we drop support for Snow Leopard. Change-Id: If4702b155bcdb7522800bf99a4dd37d4efed803a Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
* | BlackBerry QNetworkConfiguration: Keep track of bearer typePeter Hartmann2013-06-241-4/+3
|/ | | | | | | | | | | | | | | | | | | | | | I.e. let the user know whether he is on 2G / 3G / 4G. Since usually apps are rather interested whether they are on Wifi or cellular, change of cellular type (i.e. transition from 3G to 4G etc.) will not trigger emission of the "QNetworkConfigurationManager::configurationChanged" signal. The cellular type check will only be performed if the user queries it by calling the respective member methods (bearerType() and bearerTypeName()). Reading the cellular type takes around 1-2 milliseconds. In addition, add new fields "BearerEVDO" and "BearerLTE" to the public API for QNetworkConfiguration. Change-Id: I4c4ec52926f862b84487c91a88b1e20e590dd793 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* code cleanup. make one way to access system dbus. remove dead uncommented codeLorn Potter2013-06-081-27/+7
| | | | | Change-Id: Ia53cdc27f354269bb393ac137802b8807652cef9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Need to register dbus metatypes to have them work correctly.Lorn Potter2013-05-261-0/+2
| | | | | Change-Id: Ic994a0747c692fffe8a986eba6f754a6c0eddfa8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Whitespace cleanup: remove trailing whitespaceAxel Waggershauser2013-03-165-47/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | Remove all trailing whitespace from the following list of files: *.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README excluding 3rdparty, test-data and auto generated code. Note A): the only non 3rdparty c++-files that still have trailing whitespace after this change are: * src/corelib/codecs/cp949codetbl_p.h * src/corelib/codecs/qjpunicode.cpp * src/corelib/codecs/qbig5codec.cpp * src/corelib/xml/qxmlstream_p.h * src/tools/qdoc/qmlparser/qqmljsgrammar.cpp * src/tools/uic/ui4.cpp * tests/auto/other/qtokenautomaton/tokenizers/* * tests/benchmarks/corelib/tools/qstring/data.cpp * util/lexgen/tokenizer.cpp Note B): in about 30 files some overlapping 'leading tab' and 'TAB character in non-leading whitespace' issues have been fixed to make the sanity bot happy. Plus some general ws-fixes here and there as asked for during review. Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2013-03-063-26/+26
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-03-053-26/+26
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure qmake/generators/mac/pbuilder_pbx.cpp src/corelib/kernel/qtimerinfo_unix.cpp src/plugins/platforms/cocoa/qcocoabackingstore.mm src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/windows/qwindowswindow.cpp src/plugins/platforms/xcb/qglxintegration.cpp Change-Id: I8d125fe498f5304874e6976b53f588d3e98a66ac
| | * Ofono also changed the context API. This updates it to workLorn Potter2013-02-233-26/+26
| | | | | | | | | | | | | | | Change-Id: Ic3a055cb6a56be89b48a9ac77776217f910dee44 Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
* | | Distinguish between 'mac' and 'macx' qmake scopesTor Arne Vestbø2013-03-051-2/+2
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | The former applies both on Mac OS X and iOS, but 'macx' is specific to Mac OS X. ios.conf and macx.conf now share most of their settings in the common mac.conf. We set the default QMAKE_MAC_SDK before loading mac.conf, so that any overrides in the device config will apply afterwards. This means configure's mkspec parsing will be able to read the QMAKE_MAC_SDK. Change-Id: I0c7e26a6a0103e19b23ef152aa9e4ab461cee632 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* | Remove deprecated use of QMAKE_MAC_SDK in corewlan.proTor Arne Vestbø2013-02-181-3/+1
|/ | | | | | | We no longer support OS X < 10.6, so there's no need to check for it. Change-Id: I2628984846de0c0c19ea86b3ba6d00fc370ddae7 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* BlackBerry bearer plugin: check whether device is online several timesPeter Hartmann2013-01-311-0/+14
| | | | | | | | | | | | | | | This is supposed to workaround a race condition in the underlying netstatus API: Sometimes we get an event that the Wifi interface changed, but it is not up, e.g. no gateway (yet). In that case we need to check back (currently: 300 ms) whether the interface has come up or not. This commit can be reverted again once the race condition in the netstatus API has been resolved. Task-number: QTBUG-29421 Change-Id: I215ce8aae4848b6e942e77c6425adba90e9cc526 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* update ofono APILorn Potter2013-01-312-20/+70
| | | | | | Task-number: QTBUG-29381 Change-Id: I952b73d86b4e8f497b4ff90d10c1f5312882bd8a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-1831-31/+31
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* add and use qtHaveModule() functionOswald Buddenhagen2012-12-211-1/+1
| | | | | | | | | | | this is much more elegant than the so far propagated !isEmpty(QT.foo.name). also replace feature-specific tests (no-gui and no-widgets) and the obsolete contains(QT_CONFIG, foo) syntax. Change-Id: Ia4b3c8febcabf9eeca67b1f9173a523820b1038b Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com> Reviewed-by: Tasuku Suzuki <stasuku@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Update connman bearer plugin for changed connman API.Lorn Potter2012-12-202-5/+56
| | | | | | | | | This should also remain working for previous connman Change-Id: I5f0a1947f11948b202391ba0c256067faa01ce6d Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add PLUGIN_CLASS_NAME to qtbase pluginsMiikka Heikkinen2012-12-107-0/+7
| | | | | | | | Needed for automating static plugin loading. Task-number: QTBUG-28131 Change-Id: Icd993c0fc8335f29aeec30e853a408d888069399 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* beef up qt_plugin.prfOswald Buddenhagen2012-11-017-28/+14
| | | | | | | it now defines the DESTDIR and creates an INSTALLS rule. Change-Id: I15a462ccad9acbe3521c352fa98327825dc27c05 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Blackberry bearer plugin: Only Report working interfaces as activePeter Hartmann2012-10-261-3/+2
| | | | | | | | | | | | | | | | Some interfaces might be connected but not working (e.g. no IP address, no gateway etc.) In practice, this prevents the USB interface (among others) from being reported as active and thus the QNetworkConfigurationManager as being reported as online. We only want Wifi and 3G etc. connections to be reported as online when they are up. Change-Id: I59fbe53bed8392d363a0191d589737f2304c853f Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Andrey Leonov <aleonov@rim.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-2234-813/+813
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Mark (non-public API's) ctor's as explicitSergio Ahumada2012-09-142-12/+12
| | | | | | | | | Make C++ class constructors that can be used with only one required argument 'explicit' to minimize wrong use of the class. Change-Id: I12ad5b6eb1794108c6b7464a2573e84068733b03 Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Initial bearer plugin for WinCE and WEC7.Janne Anttila2012-09-101-5/+39
| | | | | | | | | | | | In WinCE and WEC7 the IOCTL_NDISUIO_QUERY_OID_VALUE DeviceIoControl calls need to be used instead of OCTL_NDIS_QUERY_GLOBAL_STATS which is not supported in WinCE / WEC7. Task-number: QTBUG-24525 Change-Id: Ic091b5c38db95ffc657968b232ae0965ae6a4e81 Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* QNativeWifiEnginePlugin: replace a volatile bool with an atomic intMarc Mutz2012-08-291-4/+4
| | | | | | | | | | | | Since there is non-atomic data that is protected by 'triedResolve', the (outer) read from triedResolve needs to have acquire, and the store needs to have release semantics. The release implied by the mutex unlock is not good enough because it only synchronises-with the locking of the same mutex, which not all threads execute. Change-Id: I90b62c4c0213472ecf2b95a1674a1c6c79dc3786 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Fix a bunch of Mac/clang specific warningsJiang Jiang2012-08-211-1/+6
| | | | | Change-Id: I0ecc67d58fb7e727a88a5f546eeca01ff7554502 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* QtNetwork: use nullary version of qRegisterMetaType<T>("T")Marc Mutz2012-07-252-2/+4
| | | | | | | | | | | | | | | | | Using the nullary version has the advantage that multiple calls during a program run are much more efficient, since an inlined atomic is used to store the result. It also ensures that Q_DECLARE_METATYPE(T) has been used, whereas qRegisterMetaType<T>("T") will happily register anything. So I've added the macro where it was missing, or moved it to a central place when it existed hidden. In tst_qnetworkreply, this became a bit tricky, because a private header is conditionally included, so moved the Q_DECLARE_METATYPE() into a conditional section, too. Change-Id: I71484523e4277f4697b7d4b2ddc3505375162727 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Provide public API for native event filtering, moved up from QPA.David Faure2012-07-202-31/+13
| | | | | | | | | | | | | | | | | | The previous API was hard to use (global function, no type safety, manual chaining), and confusing (app vs dispatcher split only made sense on Windows). Installing and removing out of order would have the risk of setting back a dangling pointer (crash). Meanwhile QPA added type safety, and this new API models the QObject::installEventFilter API for ease of use. The virtual method is in a new interface, QAbstractNativeEventFilter. QPA was even calling the dispatcher event filter with QPA-private event classes, which made no sense (refactoring leftover from when the code was in the dispatcher). Now the QPA plugins trigger the qcoreapp event filters with the actual native events directly. Change-Id: Ie35e47c59c862383bcaf857b28d54f7c72547882 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* plugins/bearer: normalize signals/slotsMarc Mutz2012-07-135-66/+66
| | | | | | | | | This is the result of running util/normalize --modify from Qt 4.7 with manual review. Change-Id: I7c9539056a4434ed10a0255152eac1781f7833be Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Add const & to foreach 'iterators'Albert Astals Cid2012-06-273-12/+12
| | | | | | | Change-Id: I8c0600dfd919f45d14a0011f2da9b9fe0b9a0df3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Remove QFactoryInterface from bearer pluginsLars Knoll2012-06-087-42/+0
| | | | | Change-Id: I8d6736e56f34f49041fff409d040634475eb0bf5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Implementation of the Blackberry bearer engine.Rafael Roquetto2012-05-246-0/+638
| | | | | | | | An implementation for Blackberry devices based on the BPS netstatus APIs. Change-Id: I2c019efecb7296b6db626b626d4618ded4d3df37 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
* Remove capitalization when specifying include-libraries.kb2012-05-141-2/+2
| | | | | | | | | | | | | MinGW installations on case-sensitive filesystems expect lowercase names of include-libraries and (usually) include files. When crosscompiling on Debian 6 (targeting MS Windows) linking fails because mingw is looking for non-existent include-libraries. Using lowercase names solves this. Change-Id: Id3454f4ed8ba42b6ea93d65d9c0ce567db6712df Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Windows 7 - fix nativewifi bearer pluginShane Kearns2012-05-042-7/+21
| | | | | | | | | | The plugin code only handled the 2 events from windows XP, while there are more events defined on vista/7. As the scan complete event was being ignored, updates did not complete. Task-number: QTBUG-24503 Change-Id: Ib1fd6883b0fd6962f61dab7830e577b9292163ef Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
* Don't use obsolete qVariantValue, qVariantCanConvert, etc.Debao Zhang2012-05-021-2/+2
| | | | | | | | | | qVariantValue and qVariantCanConvert are Compatibility members, while in Qt4.8 they are marked as Qt 3 Support Members. qVariantFromValue and qVariantSetValue are Obsolete members. Change-Id: Ie8505cad1e0950e40c6f6710fde9f6fb2ac670fd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Port bearer plugins to QMetaMethod-based connectNotify()Kent Hansen2012-05-014-170/+220
| | | | | | | | | | The const char *-based API is deprecated and will be removed in Qt5. Some of the reimplementations were commented out since the signals being checked for aren't even declared by the relevant classes. Change-Id: I4486d1f3242db21cebd55fb53def3904f7c236ba Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/master' into api_changesLars Knoll2012-04-161-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure src/corelib/io/qurl.cpp src/gui/kernel/qwindow.cpp src/tools/moc/generator.cpp src/widgets/kernel/qwidget_qpa.cpp src/widgets/styles/qstyle.h src/widgets/widgets/qtabbar.cpp tests/auto/corelib/codecs/utf8/tst_utf8.cpp Change-Id: Ia457228d6f684ec8184e13e8fcc9d25857b1751e
| * Fix compiling with XCode 4.3Aron Rosenberg2012-04-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | XCode 4.3 moved the location of the SDK dir, so change the qmake test to not use the old hardcoded location. Also change the test to look for versions before 10.6 instead of later than 10.6 so 10.8+ gets detected correctly. Change-Id: I1cb53a18c4b4f484d0d9de9c9d5e9641018f2502 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* | Define usagePolicies API in QNetworkSessionShane Kearns2012-04-112-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | This allows the system to publish usage restrictions to applications related to the network in use. Currently there is only one restriction defined: NoBackgroundTrafficPolicy, which means that non user initiated traffic should be avoided (e.g. background downloads). For example this policy could be applied to save battery or data transfer charges. Change-Id: I49e26c0f3650d2b92f4ec51981aae9435b717b49 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Merge master into api_changesKent Hansen2012-03-161-0/+3
|\ \ | |/ | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qmetatype.cpp src/gui/kernel/qplatformsurface_qpa.cpp tests/auto/corelib/tools/qtimeline/qtimeline.pro Change-Id: Iff3fff34eeeb06f02369767ddfce44cfde505178
| * Workaround webkit deadlock on macos xShane Kearns2012-03-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The webkit AtomicallyInitializedStatic and Qt's Q_GLOBAL_STATIC can deadlock on the Mac, as the mac compiler inserts calls to __cxa_guard_acquire and __cxa_guard_release around initialisation of local statics. In Q_GLOBAL_STATIC case, this is the QGlobalStaticDeleter local static Whereas webkit AtomicallyInitializedStatic is a local static variable in any case. Problem is triggered because webkit constructs QNetworkConfigurationManager inside the constructor of a local static - networkStateNotifier And the generic bearer plugin calls QNetworkInterface::allInterfaces in the bearer thread, which needs an initialised Q_GLOBAL_STATIC. Reviewed-by: Laszlo Agocs (cherry picked from commit 38db40d9a2db44e47b0aabd9487284cd1106b353) Task-number: QTBUG-24554 Change-Id: Id2c7818faefb46e66b0bbc30ce30595d46d53016 Reviewed-by: Zeno Albisser <zeno.albisser@nokia.com>
* | QtDBus: make some constructors explicitMarc Mutz2012-03-121-1/+1
|/ | | | | | | | | This is a semi-automatic search, so I'm reasonably sure that all the exported ones have been caught. Change-Id: I314d341ad0db4e9d4bbf353a9537c9422ad8a54b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use new plugin system for network bearer plugins.Friedemann Kleint2012-02-2418-19/+61
| | | | | Change-Id: Ic4a28d379033518f75d0e3e449ddf012109ed9ea Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* No need to stat with QFile::exists before QFile::open, for reading.David Faure2012-02-172-4/+4
| | | | | | Change-Id: I14ca7f8a377bca39004defc96d69d62c151181f5 Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Jeremy Katz <jeremy.katz@nokia.com>
* Fix online status checking in generic bearer plugin.Xizhi Zhu2012-02-141-1/+1
| | | | | | | | | | QNetworkInterface::IsUp means the interface is up, but not necessarily connected. QNetworkInterface::IsRunning means the interface is up and connected. Task-number: QTBUG-22873 Change-Id: Ieb544058814520b4292b496de2e4672214f3d00a Reviewed-by: Shane Kearns <ext-shane.2.kearns@nokia.com>