From 4a9859579a2c942dd3eda29030e065eab15504d9 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 27 Jan 2023 14:31:50 +0100 Subject: [PATCH] more iOS reachabilitty tuning --- libnymea-app/connection/networkreachabilitymonitorios.mm | 5 +++-- libnymea-app/connection/nymeaconnection.cpp | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libnymea-app/connection/networkreachabilitymonitorios.mm b/libnymea-app/connection/networkreachabilitymonitorios.mm index 452a1d49..91c000d3 100644 --- a/libnymea-app/connection/networkreachabilitymonitorios.mm +++ b/libnymea-app/connection/networkreachabilitymonitorios.mm @@ -21,11 +21,12 @@ void NetworkReachabilityMonitor::ReachabilityCallback(SCNetworkReachabilityRef t if (target == thiz->m_internetReachabilityRef) { // If the internet reachability changes, enable the mobile data bearer if we're reaching the internet through mobile data - newTypes.setFlag(NymeaConnection::BearerTypeMobileData, (flags & kSCNetworkReachabilityFlagsReachable) && (flags & kSCNetworkReachabilityFlagsIsWWAN)); + newTypes.setFlag(NymeaConnection::BearerTypeMobileData, (flags & kSCNetworkReachabilityFlagsReachable)); + newTypes.setFlag(NymeaConnection::BearerTypeWiFi, (flags & kSCNetworkReachabilityFlagsReachable) && !(flags & kSCNetworkReachabilityFlagsIsWWAN)); qCDebug(dcNymeaConnection()) << "Internet reachability changed"; } else if (target == thiz->m_lanReachabilityRef) { // If the lan reachability changes, we'll enable the wifi bearer, regardless of how - newTypes.setFlag(NymeaConnection::BearerTypeWiFi, flags & kSCNetworkReachabilityFlagsReachable); + newTypes.setFlag(NymeaConnection::BearerTypeWiFi, (flags & kSCNetworkReachabilityFlagsReachable)); qCDebug(dcNymeaConnection()) << "LAN reachability changed"; } diff --git a/libnymea-app/connection/nymeaconnection.cpp b/libnymea-app/connection/nymeaconnection.cpp index ec4fb921..7316dde5 100644 --- a/libnymea-app/connection/nymeaconnection.cpp +++ b/libnymea-app/connection/nymeaconnection.cpp @@ -57,7 +57,8 @@ NymeaConnection::NymeaConnection(QObject *parent) : QObject(parent) #ifdef Q_OS_IOS connect(m_networkReachabilityMonitor, &NetworkReachabilityMonitor::availableBearerTypesChanged, this, [this](){ - if (m_currentTransport) { + if (m_currentTransport) { + qCInfo(dcNymeaConnection()) << "Available bearer types changed:" << m_networkReachabilityMonitor->availableBearerTypes() << "currently used:" << m_usedBearerType; if (!m_networkReachabilityMonitor->availableBearerTypes().testFlag(m_usedBearerType)) { qCInfo(dcNymeaConnection()) << "Used bearer type" << m_usedBearerType << "isn't available any more. Reconnecting."; m_currentTransport->disconnect();