DA: Add get/set power-save state/mode APIs 43/283543/1
authorJaehyun Kim <jeik01.kim@samsung.com>
Fri, 28 Oct 2022 09:00:09 +0000 (18:00 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Fri, 28 Oct 2022 09:00:09 +0000 (18:00 +0900)
Change-Id: I02dc25fd89bd4ebdfa23de3ea41dca4256307a74
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
include/wifi-manager-extension.h
src/network_dbus.c
src/network_dbus.h
src/network_interface.c
src/network_interface.h
src/wifi_internal.c
src/wifi_internal.h
src/wifi_manager.c
tools/manager-test/wman_test_extension.c
tools/manager-test/wman_test_extension.h
tools/manager-test/wman_test_main.c

index c927f83de9d1d9f87fde5680d61cd34429491f90..7816134605fd28f5a2d30037e904aeea0a84cc72 100644 (file)
@@ -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 */
 
 /**
index 4e60c18ff89b215c8adb24534b0945a54cc8bd58..129a83416f5a1c29339efeb691098042a5938986 100644 (file)
@@ -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
index dd317d69cdbd6295ab3c783de2a59b220ef20571..d617292cfa921d6ec613afd751c557c0ad0f64e2 100644 (file)
@@ -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
index df7d21177f4821c4025e3c4e03a70340aa0210ae..d5ee6fd1554ed64bf5dcd9b0e8184c75286f844c 100644 (file)
@@ -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
index 150d1de04c6eaf6a07529ffde16cd181b5ec3baf..b07c351512f1396d9d618c3d3624fc486adfce8d 100644 (file)
@@ -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 */
+
 /**
  * \}
  */
index 4f9731b3f65816d3cb165a7277c28f0f70aab406..6deafd35effbf30b72f32e6a12bcbb6835e86dc8 100644 (file)
@@ -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
index 75a8a758ee4b7200e3cd8354e41c6dd43fafc7ac..8b13efe55b1baa7a97d92926c09ac41ac882e7fc 100644 (file)
@@ -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 */
index e66d21bdeb6420b95bcffef8e778cfe39b2eb5dc..1fad8ee8b9840044112ae226c179bcdaf6586bc5 100644 (file)
@@ -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
index 5f9f1d57d9effc6941266452f393ce3501562201..50832af8085f066b5e15f078bb462d167f52f434 100644 (file)
@@ -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 */
index 22ae231d528e5d42bc086c9f2afbeae2bdb427e1..0aa651edb02d21c02954cc681339c51c8e1c7430 100644 (file)
@@ -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 */
index c4b35fa7b2c1a0180efa6b5d9db37c4e01b25e48..d1b9d6dee21cf4649adef3eeab233879ca80fd04 100644 (file)
@@ -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;
        }