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))); } } }