@@ -76,6 +76,19 @@ using namespace ::chip::app::Clusters::WiFiNetworkDiagnostics;
76
76
using namespace ::chip::DeviceLayer::NetworkCommissioning;
77
77
78
78
namespace chip {
79
+
80
+ template <>
81
+ struct GAutoPtrDeleter <WpaFiW1Wpa_supplicant1BSS>
82
+ {
83
+ using deleter = GObjectDeleter;
84
+ };
85
+
86
+ template <>
87
+ struct GAutoPtrDeleter <WpaFiW1Wpa_supplicant1Network>
88
+ {
89
+ using deleter = GObjectDeleter;
90
+ };
91
+
79
92
namespace DeviceLayer {
80
93
81
94
ConnectivityManagerImpl ConnectivityManagerImpl::sInstance ;
@@ -1070,7 +1083,7 @@ ConnectivityManagerImpl::ConnectWiFiNetworkAsync(ByteSpan ssid, ByteSpan credent
1070
1083
void ConnectivityManagerImpl::_ConnectWiFiNetworkAsyncCallback (GObject * source_object, GAsyncResult * res, gpointer user_data)
1071
1084
{
1072
1085
ConnectivityManagerImpl * this_ = reinterpret_cast <ConnectivityManagerImpl *>(user_data);
1073
- std::unique_ptr <GError, GErrorDeleter > err;
1086
+ GAutoPtr <GError> err;
1074
1087
1075
1088
std::lock_guard<std::mutex> lock (mWpaSupplicantMutex );
1076
1089
@@ -1158,7 +1171,7 @@ void ConnectivityManagerImpl::PostNetworkConnect()
1158
1171
CHIP_ERROR ConnectivityManagerImpl::CommitConfig ()
1159
1172
{
1160
1173
gboolean result;
1161
- std::unique_ptr <GError, GErrorDeleter > err;
1174
+ GAutoPtr <GError> err;
1162
1175
1163
1176
std::lock_guard<std::mutex> lock (mWpaSupplicantMutex );
1164
1177
@@ -1289,7 +1302,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetWiFiVersion(WiFiVersionEnum & wiFiVersion
1289
1302
int32_t ConnectivityManagerImpl::GetDisconnectReason ()
1290
1303
{
1291
1304
std::lock_guard<std::mutex> lock (mWpaSupplicantMutex );
1292
- std::unique_ptr <GError, GErrorDeleter > err;
1305
+ GAutoPtr <GError> err;
1293
1306
1294
1307
gint errorValue = wpa_fi_w1_wpa_supplicant1_interface_get_disconnect_reason (mWpaSupplicant .iface );
1295
1308
// wpa_supplicant DBus API: DisconnectReason: The most recent IEEE 802.11 reason code for disconnect. Negative value
@@ -1305,7 +1318,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetConfiguredNetwork(NetworkCommissioning::N
1305
1318
// with the proxy object.
1306
1319
1307
1320
std::lock_guard<std::mutex> lock (mWpaSupplicantMutex );
1308
- std::unique_ptr <GError, GErrorDeleter > err;
1321
+ GAutoPtr <GError> err;
1309
1322
1310
1323
if (mWpaSupplicant .iface == nullptr )
1311
1324
{
@@ -1321,10 +1334,9 @@ CHIP_ERROR ConnectivityManagerImpl::GetConfiguredNetwork(NetworkCommissioning::N
1321
1334
return CHIP_ERROR_KEY_NOT_FOUND;
1322
1335
}
1323
1336
1324
- std::unique_ptr<WpaFiW1Wpa_supplicant1Network, GObjectDeleter> networkInfo (
1325
- wpa_fi_w1_wpa_supplicant1_network_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE,
1326
- kWpaSupplicantServiceName , networkPath, nullptr ,
1327
- &MakeUniquePointerReceiver (err).Get ()));
1337
+ GAutoPtr<WpaFiW1Wpa_supplicant1Network> networkInfo (wpa_fi_w1_wpa_supplicant1_network_proxy_new_for_bus_sync (
1338
+ G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, kWpaSupplicantServiceName , networkPath, nullptr ,
1339
+ &MakeUniquePointerReceiver (err).Get ()));
1328
1340
if (networkInfo == nullptr )
1329
1341
{
1330
1342
return CHIP_ERROR_INTERNAL;
@@ -1350,7 +1362,7 @@ CHIP_ERROR ConnectivityManagerImpl::StopAutoScan()
1350
1362
std::lock_guard<std::mutex> lock (mWpaSupplicantMutex );
1351
1363
VerifyOrReturnError (mWpaSupplicant .iface != nullptr , CHIP_ERROR_INCORRECT_STATE);
1352
1364
1353
- std::unique_ptr <GError, GErrorDeleter > err;
1365
+ GAutoPtr <GError> err;
1354
1366
gboolean result;
1355
1367
1356
1368
ChipLogDetail (DeviceLayer, " wpa_supplicant: disabling auto scan" );
@@ -1407,6 +1419,7 @@ CHIP_ERROR ConnectivityManagerImpl::StartWiFiScan(ByteSpan ssid, WiFiDriver::Sca
1407
1419
}
1408
1420
1409
1421
namespace {
1422
+
1410
1423
// wpa_supplicant's scan results don't contains the channel infomation, so we need this lookup table for resolving the band and
1411
1424
// channel infomation.
1412
1425
std::pair<WiFiBand, uint16_t > GetBandAndChannelFromFrequency (uint32_t freq)
@@ -1505,6 +1518,7 @@ std::pair<WiFiBand, uint16_t> GetBandAndChannelFromFrequency(uint32_t freq)
1505
1518
}
1506
1519
return ret;
1507
1520
}
1521
+
1508
1522
} // namespace
1509
1523
1510
1524
bool ConnectivityManagerImpl::_GetBssInfo (const gchar * bssPath, NetworkCommissioning::WiFiScanResponse & result)
@@ -1514,8 +1528,8 @@ bool ConnectivityManagerImpl::_GetBssInfo(const gchar * bssPath, NetworkCommissi
1514
1528
// completed before this function returns. Also, no external callbacks are registered
1515
1529
// with the proxy object.
1516
1530
1517
- std::unique_ptr <GError, GErrorDeleter > err;
1518
- std::unique_ptr <WpaFiW1Wpa_supplicant1BSS, GObjectDeleter > bss (
1531
+ GAutoPtr <GError> err;
1532
+ GAutoPtr <WpaFiW1Wpa_supplicant1BSS> bss (
1519
1533
wpa_fi_w1_wpa_supplicant1_bss_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, kWpaSupplicantServiceName ,
1520
1534
bssPath, nullptr , &MakeUniquePointerReceiver (err).Get ()));
1521
1535
@@ -1526,8 +1540,8 @@ bool ConnectivityManagerImpl::_GetBssInfo(const gchar * bssPath, NetworkCommissi
1526
1540
1527
1541
WpaFiW1Wpa_supplicant1BSSProxy * bssProxy = WPA_FI_W1_WPA_SUPPLICANT1_BSS_PROXY (bss.get ());
1528
1542
1529
- std::unique_ptr <GVariant, GVariantDeleter > ssid (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (bssProxy), " SSID" ));
1530
- std::unique_ptr <GVariant, GVariantDeleter > bssid (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (bssProxy), " BSSID" ));
1543
+ GAutoPtr <GVariant> ssid (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (bssProxy), " SSID" ));
1544
+ GAutoPtr <GVariant> bssid (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (bssProxy), " BSSID" ));
1531
1545
1532
1546
// Network scan is performed in the background, so the BSS
1533
1547
// may be gone when we try to get the properties.
@@ -1635,8 +1649,8 @@ bool ConnectivityManagerImpl::_GetBssInfo(const gchar * bssPath, NetworkCommissi
1635
1649
return res;
1636
1650
};
1637
1651
auto GetNetworkSecurityType = [IsNetworkWPAPSK, IsNetworkWPA2PSK](WpaFiW1Wpa_supplicant1BSSProxy * proxy) -> uint8_t {
1638
- std::unique_ptr <GVariant, GVariantDeleter > wpa (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), " WPA" ));
1639
- std::unique_ptr <GVariant, GVariantDeleter > rsn (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), " RSN" ));
1652
+ GAutoPtr <GVariant> wpa (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), " WPA" ));
1653
+ GAutoPtr <GVariant> rsn (g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), " RSN" ));
1640
1654
1641
1655
uint8_t res = IsNetworkWPAPSK (wpa.get ()) | IsNetworkWPA2PSK (rsn.get ());
1642
1656
if (res == 0 )
0 commit comments