From: Jaehyun Kim Date: Fri, 28 Oct 2022 09:00:09 +0000 (+0900) Subject: DA: Add get/set power-save state/mode APIs X-Git-Tag: accepted/tizen/7.0/unified/20230126.170237~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c4e305f1ba84e9898da0ae75d10912f2637fe36e;p=platform%2Fcore%2Fapi%2Fwifi-manager.git DA: Add get/set power-save state/mode APIs Change-Id: I02dc25fd89bd4ebdfa23de3ea41dca4256307a74 Signed-off-by: Jaehyun Kim --- diff --git a/include/wifi-manager-extension.h b/include/wifi-manager-extension.h index c927f83..7816134 100644 --- a/include/wifi-manager-extension.h +++ b/include/wifi-manager-extension.h @@ -88,6 +88,25 @@ typedef enum { WIFI_MANAGER_DHCP_STATE_FAILED = -1, /* DHCP Fail */ WIFI_MANAGER_DHCP_STATE_SUCCESS = 0, /* DHCP Success */ } wifi_manager_dhcp_state_e; + +/** + * @brief Enumeration for the Wi-Fi Power-save State. + * @since_tizen 7.5 + */ +typedef enum { + WIFI_MANAGER_PS_OFF = 0x00, + WIFI_MANAGER_PS_ON, +} wifi_manager_power_save_state_e; + +/** + * @brief Enumeration for the Wi-Fi Power-save Mode. + * @since_tizen 7.5 + */ +typedef enum { + WIFI_MANAGER_PS_MODE_DEFAULT_OFF = 0x00, + WIFI_MANAGER_PS_MODE_DEFAULT_ON, + WIFI_MANAGER_PS_MODE_DYNAMIC, +} wifi_manager_power_save_mode_e; #endif /* TIZEN_DA */ /** @@ -856,6 +875,88 @@ int wifi_manager_dhcp_set_event_cb(wifi_manager_h wifi, wifi_manager_dhcp_event_ * @retval #WIFI_MANAGER_ERROR_NOT_SUPPORTED Not supported */ int wifi_manager_dhcp_unset_event_cb(wifi_manager_h wifi); + +/** + * @brief Gets power-save state. + * @since_tizen 7.5 + * @privlevel public + * @privilege %http://tizen.org/privilege/network.get + * + * @param[in] wifi The Wi-Fi handle + * @param[out] ps_state @c WIFI_MANAGER_PS_OFF if power-save state is disabled + * @c WIFI_MANAGER_PS_ON if power-save state is enabled + * + * @return 0 on success, otherwise negative error value + * @retval #WIFI_MANAGER_ERROR_NONE Successful + * @retval #WIFI_MANAGER_ERROR_INVALID_OPERATION Invalid operation + * @retval #WIFI_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #WIFI_MANAGER_ERROR_OPERATION_FAILED Operation failed + * @retval #WIFI_MANAGER_ERROR_PERMISSION_DENIED Permission Denied + * @retval #WIFI_MANAGER_ERROR_NOT_SUPPORTED Not supported + */ +int wifi_manager_get_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e *ps_state); + +/** + * @brief Sets power-save state. + * @since_tizen 7.5 + * @privlevel public + * @privilege %http://tizen.org/privilege/network.set + * + * @param[in] wifi The Wi-Fi handle + * @param[in] ps_state @c WIFI_MANAGER_PS_OFF to disable power-save + * @c WIFI_MANAGER_PS_ON to enable power-save + * + * @return 0 on success, otherwise negative error value + * @retval #WIFI_MANAGER_ERROR_NONE Successful + * @retval #WIFI_MANAGER_ERROR_INVALID_OPERATION Invalid operation + * @retval #WIFI_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #WIFI_MANAGER_ERROR_OPERATION_FAILED Operation failed + * @retval #WIFI_MANAGER_ERROR_PERMISSION_DENIED Permission Denied + * @retval #WIFI_MANAGER_ERROR_NOT_SUPPORTED Not supported + */ +int wifi_manager_set_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e ps_state); + +/** + * @brief Gets power-save mode. + * @since_tizen 7.5 + * @privlevel public + * @privilege %http://tizen.org/privilege/network.get + * + * @param[in] wifi The Wi-Fi handle + * @param[out] ps_mode @c WIFI_MANAGER_PS_MODE_DEFAULT_OFF if power-save mode is default-off + * @c WIFI_MANAGER_PS_MODE_DEFAULT_ON if power-save mode is default-on + * @c WIFI_MANAGER_PS_MODE_DYNAMIC if power-save mode is dynamic + * + * @return 0 on success, otherwise negative error value + * @retval #WIFI_MANAGER_ERROR_NONE Successful + * @retval #WIFI_MANAGER_ERROR_INVALID_OPERATION Invalid operation + * @retval #WIFI_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #WIFI_MANAGER_ERROR_OPERATION_FAILED Operation failed + * @retval #WIFI_MANAGER_ERROR_PERMISSION_DENIED Permission Denied + * @retval #WIFI_MANAGER_ERROR_NOT_SUPPORTED Not supported + */ +int wifi_manager_get_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e *ps_mode); + +/** + * @brief Sets power-save mode. + * @since_tizen 7.5 + * @privlevel public + * @privilege %http://tizen.org/privilege/network.set + * + * @param[in] wifi The Wi-Fi handle + * @param[in] ps_mode @c WIFI_MANAGER_PS_MODE_DEFAULT_OFF set power-save mode to default-off + * @c WIFI_MANAGER_PS_MODE_DEFAULT_ON set power-save mode to default-on + * @c WIFI_MANAGER_PS_MODE_DYNAMIC set power-save mode to dynamic + * + * @return 0 on success, otherwise negative error value + * @retval #WIFI_MANAGER_ERROR_NONE Successful + * @retval #WIFI_MANAGER_ERROR_INVALID_OPERATION Invalid operation + * @retval #WIFI_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #WIFI_MANAGER_ERROR_OPERATION_FAILED Operation failed + * @retval #WIFI_MANAGER_ERROR_PERMISSION_DENIED Permission Denied + * @retval #WIFI_MANAGER_ERROR_NOT_SUPPORTED Not supported + */ +int wifi_manager_set_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e ps_mode); #endif /* TIZEN_DA */ /** diff --git a/src/network_dbus.c b/src/network_dbus.c index 4e60c18..129a834 100644 --- a/src/network_dbus.c +++ b/src/network_dbus.c @@ -1054,6 +1054,64 @@ static void __net_set_passpoint_reply(GObject *source_object, GAsyncResult *res, __NETWORK_FUNC_EXIT__; } +//LCOV_EXCL_START +#if defined TIZEN_DA +static void __net_set_power_save_state_reply(GObject *source_object, GAsyncResult *res, gpointer user_data) +{ + __NETWORK_FUNC_ENTER__; + + GDBusConnection *conn = NULL; + GError *error = NULL; + net_err_e Error = NET_ERR_NONE; + GVariant *reply; + + conn = G_DBUS_CONNECTION(source_object); + reply = g_dbus_connection_call_finish(conn, res, &error); + if (error != NULL) { + Error = __net_netconfig_error_string_to_enum(error->message); + g_error_free(error); + } + + if (reply) + g_variant_unref(reply); + + if (Error != NET_ERR_NONE) + WIFI_LOG(WIFI_ERROR, "set power-save state failed[%d]", Error); + else + WIFI_LOG(WIFI_INFO, "set power-save state succeeded"); + + __NETWORK_FUNC_EXIT__; +} + +static void __net_set_power_save_mode_reply(GObject *source_object, GAsyncResult *res, gpointer user_data) +{ + __NETWORK_FUNC_ENTER__; + + GDBusConnection *conn = NULL; + GError *error = NULL; + net_err_e Error = NET_ERR_NONE; + GVariant *reply; + + conn = G_DBUS_CONNECTION(source_object); + reply = g_dbus_connection_call_finish(conn, res, &error); + if (error != NULL) { + Error = __net_netconfig_error_string_to_enum(error->message); + g_error_free(error); + } + + if (reply) + g_variant_unref(reply); + + if (Error != NET_ERR_NONE) + WIFI_LOG(WIFI_ERROR, "set power-save mode failed[%d]", Error); + else + WIFI_LOG(WIFI_INFO, "set power-save mode succeeded"); + + __NETWORK_FUNC_EXIT__; +} +#endif /* TIZEN_DA */ +//LCOV_EXCL_STOP + static char *__net_make_group_name(unsigned char *raw_ssid, int raw_ssid_len, const char *net_mode, const char *sec) { @@ -4751,3 +4809,109 @@ int _net_dbus_get_vconf_value(network_info_s *network_info, __NETWORK_FUNC_EXIT__; return ret_error; } + +//LCOV_EXCL_START +#if defined TIZEN_DA +int _net_dbus_get_power_save_state(network_info_s *network_info, unsigned int *ps_state) +{ + __NETWORK_FUNC_ENTER__; + + GVariant *params = NULL; + GVariant *message = NULL; + net_err_e Error = NET_ERR_NONE; + + params = g_variant_new("(s)", network_info->interface_name); + + message = _net_invoke_dbus_method(network_info, + NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH, + NETCONFIG_WIFI_INTERFACE, "GetPowerSaveState", + params, &Error); + + if (message == NULL) { + WIFI_LOG(WIFI_ERROR, "Failed to get power-save state"); + __NETWORK_FUNC_EXIT__; + return Error; + } + + g_variant_get(message, "(u)", ps_state); + + WIFI_LOG(WIFI_INFO, "Get Power-Save state : %d", *ps_state); + + if (message != NULL) + g_variant_unref(message); + + __NETWORK_FUNC_EXIT__; + return Error; +} + +int _net_dbus_set_power_save_state(network_info_s *network_info, net_wifi_power_save_state_e ps_state) +{ + __NETWORK_FUNC_ENTER__; + + GVariant *params = NULL; + net_err_e Error = NET_ERR_NONE; + + params = g_variant_new("(su)", network_info->interface_name, ps_state); + + Error = _net_invoke_dbus_method_nonblock(network_info, + NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH, + NETCONFIG_WIFI_INTERFACE, "SetPowerSaveState", + params, DBUS_REPLY_TIMEOUT, + __net_set_power_save_state_reply); + + __NETWORK_FUNC_EXIT__; + return Error; +} + +int _net_dbus_get_power_save_mode(network_info_s *network_info, unsigned int *ps_mode) +{ + __NETWORK_FUNC_ENTER__; + + GVariant *params = NULL; + GVariant *message = NULL; + net_err_e Error = NET_ERR_NONE; + + params = g_variant_new("(s)", network_info->interface_name); + + message = _net_invoke_dbus_method(network_info, + NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH, + NETCONFIG_WIFI_INTERFACE, "GetPowerSaveMode", + params, &Error); + + if (message == NULL) { + WIFI_LOG(WIFI_ERROR, "Failed to get power-save mode"); + __NETWORK_FUNC_EXIT__; + return Error; + } + + g_variant_get(message, "(u)", ps_mode); + + WIFI_LOG(WIFI_INFO, "Get Power-Save mode : %d", *ps_mode); + + if (message != NULL) + g_variant_unref(message); + + __NETWORK_FUNC_EXIT__; + return Error; +} + +int _net_dbus_set_power_save_mode(network_info_s *network_info, net_wifi_power_save_mode_e ps_mode) +{ + __NETWORK_FUNC_ENTER__; + + GVariant *params = NULL; + net_err_e Error = NET_ERR_NONE; + + params = g_variant_new("(su)", network_info->interface_name, ps_mode); + + Error = _net_invoke_dbus_method_nonblock(network_info, + NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH, + NETCONFIG_WIFI_INTERFACE, "SetPowerSaveMode", + params, DBUS_REPLY_TIMEOUT, + __net_set_power_save_mode_reply); + + __NETWORK_FUNC_EXIT__; + return Error; +} +#endif /* TIZEN_DA */ +//LCOV_EXCL_STOP diff --git a/src/network_dbus.h b/src/network_dbus.h index dd317d6..d617292 100644 --- a/src/network_dbus.h +++ b/src/network_dbus.h @@ -232,6 +232,14 @@ int _net_dbus_get_country_code(network_info_s *network_info, char **country); int _net_dbus_get_vconf_value(network_info_s *network_info, const char *key, const char *type, int *ret, int *int_value, char **str_value); +#if defined TIZEN_DA +int _net_dbus_get_power_save_state(network_info_s *network_info, unsigned int *ps_state); +int _net_dbus_set_power_save_state(network_info_s *network_info, net_wifi_power_save_state_e ps_state); + +int _net_dbus_get_power_save_mode(network_info_s *network_info, unsigned int *ps_mode); +int _net_dbus_set_power_save_mode(network_info_s *network_info, net_wifi_power_save_mode_e ps_mode); +#endif /* TIZEN_DA */ + #ifdef __cplusplus } #endif diff --git a/src/network_interface.c b/src/network_interface.c index df7d211..d5ee6fd 100644 --- a/src/network_interface.c +++ b/src/network_interface.c @@ -4112,3 +4112,101 @@ int net_wifi_get_country_code(network_info_s *network_info, char **country) __NETWORK_FUNC_EXIT__; return Error; } + +//LCOV_EXCL_START +#if defined TIZEN_DA +int net_wifi_get_power_save_state(network_info_s *network_info, unsigned int *ps_state) +{ + __NETWORK_FUNC_ENTER__; + + net_err_e Error = NET_ERR_NONE; + + Error = __net_get_wifi_state(network_info); + if (Error != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, "Failed to get Wi-Fi state"); //LCOV_EXCL_LINE + __NETWORK_FUNC_EXIT__; //LCOV_EXCL_LINE + return Error; //LCOV_EXCL_LINE + } + + if (network_info->wifi_state == WIFI_OFF) { + WIFI_LOG(WIFI_ERROR, "Wi-Fi powered off!"); //LCOV_EXCL_LINE + __NETWORK_FUNC_EXIT__; //LCOV_EXCL_LINE + return NET_ERR_INVALID_OPERATION; //LCOV_EXCL_LINE + } + + Error = _net_dbus_get_power_save_state(network_info, ps_state); + if (Error != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, + "_net_dbus_get_power_save_state() failed. Error [%s]", + _net_print_error(Error)); + } + + __NETWORK_FUNC_EXIT__; + return Error; +} + +int net_wifi_set_power_save_state(network_info_s *network_info, net_wifi_power_save_state_e ps_state) +{ + __NETWORK_FUNC_ENTER__; + + net_err_e Error = NET_ERR_NONE; + + Error = __net_get_wifi_state(network_info); + if (Error != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, "Failed to get Wi-Fi state"); //LCOV_EXCL_LINE + __NETWORK_FUNC_EXIT__; //LCOV_EXCL_LINE + return Error; //LCOV_EXCL_LINE + } + + if (network_info->wifi_state == WIFI_OFF) { + WIFI_LOG(WIFI_ERROR, "Wi-Fi powered off!"); //LCOV_EXCL_LINE + __NETWORK_FUNC_EXIT__; //LCOV_EXCL_LINE + return NET_ERR_INVALID_OPERATION; //LCOV_EXCL_LINE + } + + Error = _net_dbus_set_power_save_state(network_info, ps_state); + if (Error != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, + "_net_dbus_set_power_save_state() failed. Error [%s]", + _net_print_error(Error)); + } + + __NETWORK_FUNC_EXIT__; + return Error; +} + +int net_wifi_get_power_save_mode(network_info_s *network_info, unsigned int *ps_mode) +{ + __NETWORK_FUNC_ENTER__; + + net_err_e Error = NET_ERR_NONE; + + Error = _net_dbus_get_power_save_mode(network_info, ps_mode); + if (Error != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, + "_net_dbus_get_power_save_mode() failed. Error [%s]", + _net_print_error(Error)); + } + + __NETWORK_FUNC_EXIT__; + return Error; +} + +int net_wifi_set_power_save_mode(network_info_s *network_info, net_wifi_power_save_mode_e ps_mode) +{ + __NETWORK_FUNC_ENTER__; + + net_err_e Error = NET_ERR_NONE; + + Error = _net_dbus_set_power_save_mode(network_info, ps_mode); + if (Error != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, + "_net_dbus_set_power_save_mode() failed. Error [%s]", + _net_print_error(Error)); + } + + __NETWORK_FUNC_EXIT__; + return Error; +} +#endif /* TIZEN_DA */ +//LCOV_EXCL_STOP diff --git a/src/network_interface.h b/src/network_interface.h index 150d1de..b07c351 100644 --- a/src/network_interface.h +++ b/src/network_interface.h @@ -400,6 +400,25 @@ int net_wifi_get_random_mac_lifetime(network_info_s *network_info, unsigned int int net_wifi_set_country_code(network_info_s *network_info, const char *country); int net_wifi_get_country_code(network_info_s *network_info, char **country); +#if defined TIZEN_DA +typedef enum { + WIFI_POWER_SAVE_OFF = 0x00, + WIFI_POWER_SAVE_ON, +} net_wifi_power_save_state_e; + +typedef enum { + WIFI_POWER_SAVE_MODE_DEFAULT_OFF = 0x00, + WIFI_POWER_SAVE_MODE_DEFAULT_ON, + WIFI_POWER_SAVE_MODE_DYNAMIC, +} net_wifi_power_save_mode_e; + +int net_wifi_get_power_save_state(network_info_s *network_info, unsigned int *ps_state); +int net_wifi_set_power_save_state(network_info_s *network_info, net_wifi_power_save_state_e ps_state); + +int net_wifi_get_power_save_mode(network_info_s *network_info, unsigned int *ps_mode); +int net_wifi_set_power_save_mode(network_info_s *network_info, net_wifi_power_save_mode_e ps_mode); +#endif /* TIZEN_DA */ + /** * \} */ diff --git a/src/wifi_internal.c b/src/wifi_internal.c index 4f9731b..6deafd3 100644 --- a/src/wifi_internal.c +++ b/src/wifi_internal.c @@ -4221,3 +4221,90 @@ int _wifi_get_country_code(wifi_manager_h wifi, char **country) return WIFI_MANAGER_ERROR_NONE; } + +//LCOV_EXCL_START +#if defined TIZEN_DA +int _wifi_get_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e *ps_state) +{ + int rv = 0; + wifi_manager_handle_s *wifi_handle = wifi; + + rv = net_wifi_get_power_save_state(wifi_handle->network_info, ps_state); + if (rv == NET_ERR_ACCESS_DENIED) { + WIFI_LOG(WIFI_ERROR, "Access denied"); + return WIFI_MANAGER_ERROR_PERMISSION_DENIED; + } else if (rv == NET_ERR_INVALID_OPERATION) { + return WIFI_MANAGER_ERROR_INVALID_OPERATION; + } else if (rv != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, "Failed to get power-save state"); + return WIFI_MANAGER_ERROR_OPERATION_FAILED; + } + + if ((*ps_state != WIFI_MANAGER_PS_OFF) && (*ps_state != WIFI_MANAGER_PS_ON)) + return WIFI_MANAGER_ERROR_OPERATION_FAILED; + + return WIFI_MANAGER_ERROR_NONE; +} + +int _wifi_set_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e ps_state) +{ + int rv = 0; + wifi_manager_handle_s *wifi_handle = wifi; + + rv = net_wifi_set_power_save_state(wifi_handle->network_info, ps_state); + if (rv == NET_ERR_ACCESS_DENIED) { + WIFI_LOG(WIFI_ERROR, "Access denied"); + return WIFI_MANAGER_ERROR_PERMISSION_DENIED; + } else if (rv == NET_ERR_INVALID_OPERATION) { + return WIFI_MANAGER_ERROR_INVALID_OPERATION; + } else if (rv != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, "Failed to get power-save state"); + return WIFI_MANAGER_ERROR_OPERATION_FAILED; + } + + return WIFI_MANAGER_ERROR_NONE; +} + +int _wifi_get_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e *ps_mode) +{ + int rv = 0; + wifi_manager_handle_s *wifi_handle = wifi; + + rv = net_wifi_get_power_save_mode(wifi_handle->network_info, ps_mode); + if (rv == NET_ERR_ACCESS_DENIED) { + WIFI_LOG(WIFI_ERROR, "Access denied"); + return WIFI_MANAGER_ERROR_PERMISSION_DENIED; + } else if (rv == NET_ERR_INVALID_OPERATION) { + return WIFI_MANAGER_ERROR_INVALID_OPERATION; + } else if (rv != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, "Failed to get power-save mode"); + return WIFI_MANAGER_ERROR_OPERATION_FAILED; + } + + if ((*ps_mode != WIFI_MANAGER_PS_MODE_DYNAMIC) && (*ps_mode != WIFI_MANAGER_PS_MODE_DEFAULT_OFF) + && (*ps_mode != WIFI_MANAGER_PS_MODE_DEFAULT_ON)) + return WIFI_MANAGER_ERROR_OPERATION_FAILED; + + return WIFI_MANAGER_ERROR_NONE; +} + +int _wifi_set_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e ps_mode) +{ + int rv = 0; + wifi_manager_handle_s *wifi_handle = wifi; + + rv = net_wifi_set_power_save_mode(wifi_handle->network_info, ps_mode); + if (rv == NET_ERR_ACCESS_DENIED) { + WIFI_LOG(WIFI_ERROR, "Access denied"); + return WIFI_MANAGER_ERROR_PERMISSION_DENIED; + } else if (rv == NET_ERR_INVALID_OPERATION) { + return WIFI_MANAGER_ERROR_INVALID_OPERATION; + } else if (rv != NET_ERR_NONE) { + WIFI_LOG(WIFI_ERROR, "Failed to get power-save mode"); + return WIFI_MANAGER_ERROR_OPERATION_FAILED; + } + + return WIFI_MANAGER_ERROR_NONE; +} +#endif /* TIZEN_DA */ +//LCOV_EXCL_STOP diff --git a/src/wifi_internal.h b/src/wifi_internal.h index 75a8a75..8b13efe 100644 --- a/src/wifi_internal.h +++ b/src/wifi_internal.h @@ -600,6 +600,14 @@ int _wifi_get_random_mac_lifetime(wifi_manager_h wifi, unsigned int *lifetime); int _wifi_set_country_code(wifi_manager_h wifi, const char *country); int _wifi_get_country_code(wifi_manager_h wifi, char **country); +#if defined TIZEN_DA +int _wifi_get_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e *ps_state); +int _wifi_set_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e ps_state); + +int _wifi_get_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e *ps_mode); +int _wifi_set_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e ps_mode); +#endif /* TIZEN_DA */ + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/src/wifi_manager.c b/src/wifi_manager.c index e66d21b..1fad8ee 100644 --- a/src/wifi_manager.c +++ b/src/wifi_manager.c @@ -2227,6 +2227,7 @@ EXPORT_API int wifi_manager_unset_roaming_cb(wifi_manager_h wifi) return WIFI_MANAGER_ERROR_NONE; } +//LCOV_EXCL_START #if defined TIZEN_DA static int __wifi_set_dhcp_event_cb(wifi_manager_h wifi, void *callback, void *user_data) @@ -2269,4 +2270,101 @@ EXPORT_API int wifi_manager_dhcp_unset_event_cb(wifi_manager_h wifi) __NETWORK_CAPI_FUNC_EXIT__; return __wifi_set_dhcp_event_cb(wifi, NULL, NULL); } + +EXPORT_API int wifi_manager_get_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e *ps_state) +{ + __NETWORK_CAPI_FUNC_ENTER__; + + int rv; + + CHECK_FEATURE_SUPPORTED(WIFI_FEATURE); + + RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi, __NETWORK_CAPI_FUNC_EXIT__); + + WIFI_LOG(WIFI_INFO, "[App-->TizenMW] get power-save state request"); + + if (ps_state == NULL) { + WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE + __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE + return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE + } + + rv = _wifi_get_power_save_state(wifi, ps_state); + + __NETWORK_CAPI_FUNC_EXIT__; + return rv; +} + +EXPORT_API int wifi_manager_set_power_save_state(wifi_manager_h wifi, wifi_manager_power_save_state_e ps_state) +{ + __NETWORK_CAPI_FUNC_ENTER__; + + int rv; + + CHECK_FEATURE_SUPPORTED(WIFI_FEATURE); + + RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi, __NETWORK_CAPI_FUNC_EXIT__); + + if ((ps_state != WIFI_MANAGER_PS_OFF) && (ps_state != WIFI_MANAGER_PS_ON)) { + WIFI_LOG(WIFI_ERROR, "Invalid parameter"); + __NETWORK_CAPI_FUNC_EXIT__; + return WIFI_MANAGER_ERROR_INVALID_PARAMETER; + } + + WIFI_LOG(WIFI_INFO, "[App-->TizenMW] set power-save state request"); + + rv = _wifi_set_power_save_state(wifi, ps_state); + + __NETWORK_CAPI_FUNC_EXIT__; + return rv; +} + +EXPORT_API int wifi_manager_get_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e *ps_mode) +{ + __NETWORK_CAPI_FUNC_ENTER__; + + int rv; + + CHECK_FEATURE_SUPPORTED(WIFI_FEATURE); + + RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi, __NETWORK_CAPI_FUNC_EXIT__); + + WIFI_LOG(WIFI_INFO, "[App-->TizenMW] get power-save mode request"); + + if (ps_mode == NULL) { + WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE + __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE + return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE + } + + rv = _wifi_get_power_save_mode(wifi, ps_mode); + + __NETWORK_CAPI_FUNC_EXIT__; + return rv; +} + +EXPORT_API int wifi_manager_set_power_save_mode(wifi_manager_h wifi, wifi_manager_power_save_mode_e ps_mode) +{ + __NETWORK_CAPI_FUNC_ENTER__; + + int rv; + + CHECK_FEATURE_SUPPORTED(WIFI_FEATURE); + + RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi, __NETWORK_CAPI_FUNC_EXIT__); + + if ((ps_mode < WIFI_MANAGER_PS_MODE_DEFAULT_OFF) || (ps_mode > WIFI_MANAGER_PS_MODE_DYNAMIC)) { + WIFI_LOG(WIFI_ERROR, "Invalid parameter"); + __NETWORK_CAPI_FUNC_EXIT__; + return WIFI_MANAGER_ERROR_INVALID_PARAMETER; + } + + WIFI_LOG(WIFI_INFO, "[App-->TizenMW] set power-save mode request"); + + rv = _wifi_set_power_save_mode(wifi, ps_mode); + + __NETWORK_CAPI_FUNC_EXIT__; + return rv; +} #endif /* TIZEN_DA */ +//LCOV_EXCL_STOP diff --git a/tools/manager-test/wman_test_extension.c b/tools/manager-test/wman_test_extension.c index 5f9f1d5..50832af 100644 --- a/tools/manager-test/wman_test_extension.c +++ b/tools/manager-test/wman_test_extension.c @@ -824,3 +824,93 @@ void wman_test_print_connection_mode(wifi_manager_ap_h ap) else printf("Fail to get operation mode\n"); } + +#if defined TIZEN_DA +int wman_test_get_power_save_state(wifi_manager_h wifi) +{ + int rv; + wifi_manager_power_save_state_e ps_state; + + rv = wifi_manager_get_power_save_state(wifi, &ps_state); + if (rv != WIFI_MANAGER_ERROR_NONE) { + printf("Fail to get power-save state [%s]\n", wman_test_strerror(rv)); + return -1; + } + + if (ps_state == WIFI_MANAGER_PS_ON) + printf("power-save state : On\n"); + else if (ps_state == WIFI_MANAGER_PS_OFF) + printf("power-save state : Off\n"); + else + printf("power-save state : Unknown\n"); + + return 1; +} + +int wman_test_set_power_save_state(wifi_manager_h wifi) +{ + int rv; + wifi_manager_power_save_state_e ps_state; + + printf("Set power-save state (1: enable, 0: disable): "); + rv = scanf("%u", &ps_state); + if (rv <= 0) + return -1; + + rv = wifi_manager_set_power_save_state(wifi, ps_state); + if (rv != WIFI_MANAGER_ERROR_NONE) { + printf("Fail to get power-save state [%s]\n", wman_test_strerror(rv)); + return -1; + } + + return 1; +} + +int wman_test_get_power_save_mode(wifi_manager_h wifi) +{ + int rv; + wifi_manager_power_save_mode_e ps_mode; + + rv = wifi_manager_get_power_save_mode(wifi, &ps_mode); + if (rv != WIFI_MANAGER_ERROR_NONE) { + printf("Fail to get power-save mode [%s]\n", wman_test_strerror(rv)); + return -1; + } + + switch (ps_mode) { + case WIFI_MANAGER_PS_MODE_DEFAULT_OFF: + printf("power-save mode : default off\n"); + break; + case WIFI_MANAGER_PS_MODE_DEFAULT_ON: + printf("power-save mode : default on\n"); + break; + case WIFI_MANAGER_PS_MODE_DYNAMIC: + printf("power-save mode : Dynamic \n"); + break; + default: + printf("power-save mode : Unknown\n"); + break; + } + + return 1; +} + +int wman_test_set_power_save_mode(wifi_manager_h wifi) +{ + int rv; + wifi_manager_power_save_state_e ps_mode; + + printf("Set power-save mode (0: Off, 1: On, 2: Dynamic): "); + rv = scanf("%u", &ps_mode); + if (rv <= 0) + return -1; + + rv = wifi_manager_set_power_save_mode(wifi, ps_mode); + if (rv != WIFI_MANAGER_ERROR_NONE) { + printf("Fail to get power-save mode [%s]\n", wman_test_strerror(rv)); + return -1; + } + + return 1; +} +#endif /* TIZEN_DA */ diff --git a/tools/manager-test/wman_test_extension.h b/tools/manager-test/wman_test_extension.h index 22ae231..0aa651e 100644 --- a/tools/manager-test/wman_test_extension.h +++ b/tools/manager-test/wman_test_extension.h @@ -41,3 +41,9 @@ int wman_test_set_country_code(wifi_manager_h wifi); int wman_test_get_country_code(wifi_manager_h wifi); int wman_test_check_supported_security_type(wifi_manager_h wifi); void wman_test_print_connection_mode(wifi_manager_ap_h ap); +#if defined TIZEN_DA +int wman_test_get_power_save_state(wifi_manager_h wifi); +int wman_test_set_power_save_state(wifi_manager_h wifi); +int wman_test_get_power_save_mode(wifi_manager_h wifi); +int wman_test_set_power_save_mode(wifi_manager_h wifi); +#endif /* TIZEN_DA */ diff --git a/tools/manager-test/wman_test_main.c b/tools/manager-test/wman_test_main.c index c4b35fa..d1b9d6d 100644 --- a/tools/manager-test/wman_test_main.c +++ b/tools/manager-test/wman_test_main.c @@ -331,6 +331,12 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data) printf("^ - Set country code\n"); printf("& - Get country code\n"); printf("* - Check available security type\n"); +#if defined TIZEN_DA + printf("( - Get power-save state\n"); + printf(") - Set power-save state\n"); + printf("- - Get power-save mode\n"); + printf("= - Set power-save mode\n"); +#endif /* TIZEN_DA */ printf(LOG_RED "0 - Exit \n" LOG_END); printf("ENTER - Show options menu.......\n"); @@ -544,6 +550,20 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data) case '*': rv = wman_test_check_supported_security_type(wifi); break; +#if defined TIZEN_DA + case '(': + rv = wman_test_get_power_save_state(wifi); + break; + case ')': + rv = wman_test_set_power_save_state(wifi); + break; + case '-': + rv = wman_test_get_power_save_mode(wifi); + break; + case '=': + rv = wman_test_set_power_save_mode(wifi); + break; +#endif /* TIZEN_DA */ default: break; }