Skip to content

Commit 7b8467b

Browse files
authored
[Tizen] Fix ConnectivityManager::GetWiFiBssId implementation (project-chip#35694)
1 parent cc29cab commit 7b8467b

File tree

3 files changed

+16
-36
lines changed

3 files changed

+16
-36
lines changed

src/platform/Tizen/ConnectivityManagerImpl.cpp

+1-11
Original file line numberDiff line numberDiff line change
@@ -254,17 +254,7 @@ bool ConnectivityManagerImpl::IsWiFiManagementStarted()
254254

255255
CHIP_ERROR ConnectivityManagerImpl::GetWiFiBssId(MutableByteSpan & value)
256256
{
257-
constexpr size_t bssIdSize = 6;
258-
VerifyOrReturnError(value.size() >= bssIdSize, CHIP_ERROR_BUFFER_TOO_SMALL);
259-
260-
uint8_t * bssId = nullptr;
261-
CHIP_ERROR err = Internal::WiFiMgr().GetBssId(bssId);
262-
ReturnErrorOnFailure(err);
263-
264-
memcpy(value.data(), bssId, bssIdSize);
265-
value.reduce_size(bssIdSize);
266-
267-
return CHIP_NO_ERROR;
257+
return Internal::WiFiMgr().GetBssId(value);
268258
}
269259

270260
CHIP_ERROR ConnectivityManagerImpl::GetWiFiSecurityType(SecurityTypeEnum & securityType)

src/platform/Tizen/WiFiManager.cpp

+14-23
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
#include <lib/support/logging/CHIPLogging.h>
3232
#include <platform/GLibTypeDeleter.h>
3333
#include <platform/PlatformManager.h>
34-
#include <platform/Tizen/NetworkCommissioningDriver.h>
34+
35+
#include "ErrorUtils.h"
36+
#include "NetworkCommissioningDriver.h"
3537

3638
using namespace ::chip::DeviceLayer::NetworkCommissioning;
3739

@@ -1095,34 +1097,23 @@ CHIP_ERROR WiFiManager::GetConnectionState(wifi_manager_connection_state_e * con
10951097
return err;
10961098
}
10971099

1098-
CHIP_ERROR WiFiManager::GetBssId(uint8_t * bssId)
1100+
CHIP_ERROR WiFiManager::GetBssId(MutableByteSpan & value)
10991101
{
1100-
VerifyOrReturnError(bssId != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
1101-
1102-
char * bssIdStr = nullptr;
1103-
std::unique_ptr<char, decltype(&::free)> _{ bssIdStr, &::free };
1102+
VerifyOrReturnError(value.size() >= kWiFiBSSIDLength, CHIP_ERROR_BUFFER_TOO_SMALL);
11041103

11051104
wifi_manager_ap_h connectedAp = _WiFiGetConnectedAP();
1106-
if (connectedAp == nullptr)
1107-
{
1108-
return CHIP_ERROR_INCORRECT_STATE;
1109-
}
1105+
VerifyOrReturnError(connectedAp != nullptr, CHIP_ERROR_INCORRECT_STATE);
11101106

1111-
int wifiErr = wifi_manager_ap_get_bssid(connectedAp, &bssIdStr);
1112-
if (wifiErr != WIFI_MANAGER_ERROR_NONE)
1113-
{
1114-
ChipLogError(DeviceLayer, "FAIL: get bssid [%s]", get_error_message(wifiErr));
1115-
return CHIP_ERROR_READ_FAILED;
1116-
}
1107+
GAutoPtr<char> bssIdStr;
1108+
int wifiErr = wifi_manager_ap_get_bssid(connectedAp, &bssIdStr.GetReceiver());
1109+
VerifyOrReturnError(wifiErr == WIFI_MANAGER_ERROR_NONE, TizenToChipError(wifiErr),
1110+
ChipLogError(DeviceLayer, "FAIL: Get AP BSSID: %s", get_error_message(wifiErr)));
11171111

1118-
if (sscanf(bssIdStr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &mWiFiBSSID[0], &mWiFiBSSID[1], &mWiFiBSSID[2], &mWiFiBSSID[3],
1119-
&mWiFiBSSID[4], &mWiFiBSSID[5]) != 6)
1120-
{
1121-
ChipLogError(DeviceLayer, "FAIL: parse bssid");
1122-
return CHIP_ERROR_READ_FAILED;
1123-
}
1112+
uint8_t * data = value.data();
1113+
int rv = sscanf(bssIdStr.get(), "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &data[0], &data[1], &data[2], &data[3], &data[4], &data[5]);
1114+
VerifyOrReturnError(rv == kWiFiBSSIDLength, CHIP_ERROR_READ_FAILED, ChipLogError(DeviceLayer, "FAIL: Parse AP BSSID"));
11241115

1125-
bssId = mWiFiBSSID;
1116+
value.reduce_size(kWiFiBSSIDLength);
11261117
return CHIP_NO_ERROR;
11271118
}
11281119

src/platform/Tizen/WiFiManager.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class WiFiManager
5454
CHIP_ERROR SetDeviceState(wifi_manager_device_state_e deviceState);
5555
CHIP_ERROR GetModuleState(wifi_manager_module_state_e * moduleState);
5656
CHIP_ERROR GetConnectionState(wifi_manager_connection_state_e * connectionState);
57-
CHIP_ERROR GetBssId(uint8_t * bssId);
57+
CHIP_ERROR GetBssId(MutableByteSpan & value);
5858
CHIP_ERROR GetSecurityType(wifi_manager_security_type_e * securityType);
5959
CHIP_ERROR GetConfiguredNetwork(NetworkCommissioning::Network & network);
6060
bool IsWiFiStationConnected();
@@ -105,7 +105,6 @@ class WiFiManager
105105
wifi_manager_module_state_e mModuleState;
106106
wifi_manager_connection_state_e mConnectionState;
107107

108-
uint8_t mWiFiBSSID[kWiFiBSSIDLength];
109108
char mWiFiSSID[kMaxWiFiSSIDLength + 1];
110109
char mWiFiKey[kMaxWiFiKeyLength + 1];
111110
char mInterestedSSID[kMaxWiFiSSIDLength + 1];

0 commit comments

Comments
 (0)