From: Piotr Kosko/Tizen API (PLT) /SRPOL/Engineer/Samsung Electronics
Date: Tue, 10 Jan 2023 09:03:54 +0000 (+0100)
Subject: [Systeminfo] Removed caching a wifi signal level
X-Git-Tag: accepted/tizen/7.0/unified/20230201.173115~1
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b780cd40b0c569b3a11bb86a4c1e2afa4c7cbfd;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Systeminfo] Removed caching a wifi signal level
Registering a wifi listener on boot can cause a performance issue on
application start even the application will never use wifi in its
lifetime.
I removed registering signal strength listener to avoid this problem,
instead the signal strength will be gathered from native API only when
needed (instead of using a cached value).
[Verification] TCT systeminfo 100% pass
I've checked performance of
tizen.systeminfo.getPropertyValue("WIFI_NETWORK", (s) => console.log(s.signalStrength), (s) => console.log(s))
the difference is ~2-4ms.
Change-Id: Iabe4101e5871f426526cf56c7b6fc3f69e59b159
---
diff --git a/src/systeminfo/systeminfo_manager.cc b/src/systeminfo/systeminfo_manager.cc
index fbc0d9d..ca333f2 100644
--- a/src/systeminfo/systeminfo_manager.cc
+++ b/src/systeminfo/systeminfo_manager.cc
@@ -220,13 +220,6 @@ static void OnBrightnessChangedCb(device_callback_e type, void* value, void* use
}
}
-static void OnWifiLevelChangedCb(wifi_manager_rssi_level_e rssi_level, void* user_data) {
- ScopeLogger();
- LoggerD("Level %d", rssi_level);
- SysteminfoManager* manager = static_cast(user_data);
- manager->SetWifiLevel(rssi_level);
-}
-
static void OnServiceCountryChangedCb(keynode_t* key, void* user_data) {
ScopeLogger();
SysteminfoManager* manager = static_cast(user_data);
@@ -455,8 +448,6 @@ SysteminfoManager::SysteminfoManager(SysteminfoInstance* instance)
: instance_(instance),
prop_manager_(*this),
sensor_handle_(-1),
- wifi_level_(WIFI_MANAGER_RSSI_LEVEL_0),
- wifi_manager_(nullptr),
cpu_load_(0),
last_cpu_load_(0),
tapi_manager_(new TapiManager()),
@@ -466,20 +457,6 @@ SysteminfoManager::SysteminfoManager(SysteminfoInstance* instance)
async_op_(new AsynchronousOperation()) {
ScopeLogger();
- int error = wifi_manager_initialize(&wifi_manager_);
- if (WIFI_MANAGER_ERROR_NONE != error) {
- std::string log_msg = "Initialization failed: " + std::string(get_error_message(error));
- LoggerE("%s", log_msg.c_str());
- } else {
- LoggerD("WIFI initialization succeed");
- error = wifi_manager_set_rssi_level_changed_cb(wifi_manager_, OnWifiLevelChangedCb, this);
- if (WIFI_MANAGER_ERROR_NONE != error) {
- std::string log_msg = "Setting wifi listener failed: " + std::string(get_error_message(error));
- LoggerE("%s", log_msg.c_str());
- } else {
- LoggerD("Setting wifi listener succeed");
- }
- }
InitCameraTypes();
}
@@ -533,13 +510,6 @@ SysteminfoManager::~SysteminfoManager() {
if (nullptr != connection_handle_) {
connection_destroy(connection_handle_);
}
-
- if (nullptr != wifi_manager_) {
- int ret = wifi_manager_deinitialize(wifi_manager_);
- if (WIFI_MANAGER_ERROR_NONE != ret) {
- LoggerE("wifi_manager_deinitialize failed %d [%s]", ret, get_error_message(ret));
- }
- }
}
void SysteminfoManager::GetCapabilities(const picojson::value& args, picojson::object* out) {
@@ -1444,16 +1414,6 @@ PlatformResult SysteminfoManager::GetPropertyCount(const std::string& property,
return PlatformResult(ErrorCode::NO_ERROR);
}
-wifi_manager_rssi_level_e SysteminfoManager::GetWifiLevel() {
- ScopeLogger();
- return wifi_level_;
-}
-
-void SysteminfoManager::SetWifiLevel(wifi_manager_rssi_level_e level) {
- ScopeLogger();
- wifi_level_ = level;
-}
-
int SysteminfoManager::GetSensorHandle() {
ScopeLogger();
std::lock_guard lock(sensor_mutex_);
diff --git a/src/systeminfo/systeminfo_manager.h b/src/systeminfo/systeminfo_manager.h
index 614b498..7fb97db 100644
--- a/src/systeminfo/systeminfo_manager.h
+++ b/src/systeminfo/systeminfo_manager.h
@@ -53,8 +53,6 @@ class SysteminfoManager {
void GetCount(const picojson::value& args, picojson::object* out);
common::PlatformResult GetPropertyCount(const std::string& property, unsigned long* count);
- wifi_manager_rssi_level_e GetWifiLevel();
- void SetWifiLevel(wifi_manager_rssi_level_e level);
int GetSensorHandle();
int GetChangedTapiIndex(TapiHandle* tapi);
@@ -136,8 +134,6 @@ class SysteminfoManager {
std::mutex sensor_mutex_;
std::vector camera_types_;
- wifi_manager_rssi_level_e wifi_level_;
- wifi_manager_h wifi_manager_;
double cpu_load_;
double last_cpu_load_;
diff --git a/src/systeminfo/systeminfo_properties_manager.cc b/src/systeminfo/systeminfo_properties_manager.cc
index de0449d..5ee798d 100644
--- a/src/systeminfo/systeminfo_properties_manager.cc
+++ b/src/systeminfo/systeminfo_properties_manager.cc
@@ -789,23 +789,16 @@ PlatformResult SysteminfoPropertiesManager::ReportWifiNetwork(picojson::object*
}
// gathering strength
- wifi_manager_rssi_level_e rssi_level = manager_.GetWifiLevel();
- // this mean that level was not initialized or wifi not connected
- if (WIFI_MANAGER_RSSI_LEVEL_0 == rssi_level) {
- // so try to gather rssi level with dedicated function
- int rssi = 0;
- error = wifi_manager_ap_get_rssi(wifi_ap_handle, &rssi);
- if (WIFI_MANAGER_ERROR_NONE == error) {
- result_signal_strength = ((double)abs(rssi)) / kWifiSignalStrengthDivideValue;
- } else {
- std::string log_msg =
- "Failed to get signal strength: " + std::string(get_error_message(error));
- return LogAndCreateResult(
- ErrorCode::UNKNOWN_ERR, log_msg,
- ("wifi_manager_ap_get_rssi error: %d (%s)", error, get_error_message(error)));
- }
+ int rssi = 0;
+ error = wifi_manager_ap_get_rssi(wifi_ap_handle, &rssi);
+ if (WIFI_MANAGER_ERROR_NONE == error) {
+ result_signal_strength = ((double)abs(rssi)) / kWifiSignalStrengthDivideValue;
} else {
- result_signal_strength = ((double)rssi_level) / WIFI_MANAGER_RSSI_LEVEL_4;
+ std::string log_msg =
+ "Failed to get signal strength: " + std::string(get_error_message(error));
+ return LogAndCreateResult(
+ ErrorCode::UNKNOWN_ERR, log_msg,
+ ("wifi_manager_ap_get_rssi error: %d (%s)", error, get_error_message(error)));
}
}
}