#define KeyStr_Network_Turn_On_Mobile_Data "IDS_ST_HEADER_TURN_ON_MOBILE_DATA"
#define CONNECTION_DSC "Mobile network connections"
+#define MPTCP_DESCRIPTION "Multipath TCP"
#define KeyStr_Reset_Def "IDS_ST_BODY_RESET_TO_DEFAULT"
#define KeyStr_Edit "IDS_ST_BODY_EDIT"
#define KeyStr_Saved "IDS_ST_BODY_SAVED"
} setting_network_preferred_network_operation_type_t;
+typedef enum {
+ SETTING_NETWORK_MPTCP_NOT_SUPPORTED,
+ SETTING_NETWORK_MPTCP_DISABLED,
+ SETTING_NETWORK_MPTCP_ENABLED,
+
+} setting_network_mptcp_state_t;
+
typedef struct _SettingNetwork SettingNetwork;
struct gl_network_data {
char *setting_network_get_default_profile_name(int conType, SettingNetwork *ad);
void setting_network_mode_app_control(SettingNetwork *ad);
bool setting_network_add_sim_toolbar(SettingNetwork *ad, Elm_Object_Item *page, Evas_Smart_Cb func);
+void setting_network_mptcp_enable(void *data, bool enable);
+setting_network_mptcp_state_t setting_network_is_mptcp_enabled(void *data);
#endif /* __SETTING_NETWORK_H__ */
Setting_GenGroupItem_Data *mobile_network_connections;
Setting_GenGroupItem_Data *data_mobile_data;
Setting_GenGroupItem_Data *data_roaming;
+ Setting_GenGroupItem_Data *mptcp;
} s_info = {0,};
static int _view_create(void *cb);
}
}
+static void setting_network_set_state_mptcp(void *data, ButtonState state)
+{
+ SETTING_TRACE_BEGIN;
+
+ if (state == SETTING_ON_OFF_BTN_ON)
+ setting_network_mptcp_enable(data, true);
+ else if (state == SETTING_ON_OFF_BTN_OFF)
+ setting_network_mptcp_enable(data, false);
+ else
+ SETTING_TRACE_ERROR("do not reach here!!!");
+
+}
+
+static int setting_network_get_state_mptcp(void *data, int *value)
+{
+ SETTING_TRACE_BEGIN;
+ setting_network_mptcp_state_t state = setting_network_is_mptcp_enabled(data);
+
+ switch (state) {
+ case SETTING_NETWORK_MPTCP_NOT_SUPPORTED:
+ *value = 0;
+ return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+ case SETTING_NETWORK_MPTCP_DISABLED:
+ *value = 0;
+ return SYSTEM_SETTINGS_ERROR_NONE;
+ case SETTING_NETWORK_MPTCP_ENABLED:
+ *value = 1;
+ return SYSTEM_SETTINGS_ERROR_NONE;
+ default:
+ return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
+ }
+}
+
void _item_Gendial_network_mode_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
{
int ret;
}
+static inline void _add_mptcp(SettingNetwork *ad)
+{
+ /* [UI] Multipath TCP description */
+
+ int mptcp_state;
+ int ret = setting_network_get_state_mptcp(ad, &mptcp_state);
+ if (ret != SYSTEM_SETTINGS_ERROR_NONE)
+ return;
+
+ s_info.mptcp = setting_create_Gendial_field_def(ad->md.genlist,
+ &itc_1text_1icon, _item_Gendial_mouse_up_cb, ad, SWALLOW_Type_1ICON_1RADIO,
+ NULL, NULL, mptcp_state, MPTCP_DESCRIPTION,
+ NULL, _chk_btn_cb);
+
+ if (s_info.mptcp) {
+ __BACK_POINTER_SET(s_info.mptcp);
+ s_info.mptcp->userdata = ad;
+ } else {
+ SETTING_TRACE_ERROR("s_info.mptcp is NULL");
+ }
+
+}
+
static inline void _add_mobile_network_connections(SettingNetwork *ad)
{
/* [UI] Connection mode description */
static bool _fill_list(SettingNetwork *ad)
{
+ int value_mobile_data;
if (ad->available_cards == 2) {
s_info.service_providers = setting_create_Gendial_field_def(ad->md.genlist,
&itc_1text,
/* [UI] Connection mode description */
_add_mobile_network_connections(ad);
+ setting_network_get_state_mobile_data(&value_mobile_data);
+ if (value_mobile_data) {
+ /* [UI] Multipath TCP description */
+ _add_mptcp(ad);
+ }
+
return true;
}
} else if (!safeStrCmp(CONNECTION_DSC, list_item->keyStr)) {
ret = setting_view_change(&setting_view_network_main,
&setting_view_network_con, ad);
+ } else if (!safeStrCmp(MPTCP_DESCRIPTION, list_item->keyStr)) {
+ if (list_item->chk_status) {
+ SETTING_TRACE(" TOUCH HANDLING MPTCP- set false");
+ setting_network_set_state_mptcp(ad, SETTING_ON_OFF_BTN_OFF);
+ setting_update_gl_item_chk_status(s_info.mptcp,
+ SETTING_ON_OFF_BTN_OFF);
+ } else {
+ SETTING_TRACE(" TOUCH HANDLING MPTCP- set true");
+ setting_network_set_state_mptcp(ad, SETTING_ON_OFF_BTN_ON);
+ setting_update_gl_item_chk_status(s_info.mptcp,
+ SETTING_ON_OFF_BTN_ON);
+ }
}
}
setting_update_gl_item_chk_status(
s_info.data_roaming, 0);
}
-
} else {
/* Off -> On */
ret = vconf_get_bool(
FALSE,
FALSE, 2, "IDS_ST_BUTTON_ENABLE",
"IDS_ST_BUTTON_CANCEL_ABB");
+
}
} else if (obj == s_info.data_roaming->eo_check) {
SETTING_TRACE(" TOUCH HANDLING DATA ROAMING");
setting_update_gl_item_chk_status(s_info.data_roaming,
SETTING_ON_OFF_BTN_OFF);
}
+ } else if (obj == s_info.mptcp->eo_check) {
+ SETTING_TRACE(" TOUCH HANDLING MPTCP");
+ if (list_item->chk_status) {
+ SETTING_TRACE(" TOUCH HANDLING MPTCP- set true");
+ setting_network_set_state_mptcp(ad, SETTING_ON_OFF_BTN_ON);
+ setting_update_gl_item_chk_status(s_info.mptcp,
+ SETTING_ON_OFF_BTN_ON);
+ } else {
+ SETTING_TRACE(" TOUCH HANDLING MPTCP- set false");
+ setting_network_set_state_mptcp(ad, SETTING_ON_OFF_BTN_OFF);
+ setting_update_gl_item_chk_status(s_info.mptcp,
+ SETTING_ON_OFF_BTN_OFF);
+ }
}
}
if (value == 0) {
+ /* [UI] Multipath TCP description */
+ _add_mptcp(ad);
+
setting_network_set_state_mobile_data(
SETTING_ON_OFF_BTN_ON);
setting_retm_if(err != 0, "set vconf failed");
}
} else {
+ /* Remove the mptcp genlist item */
+ if (s_info.mptcp)
+ elm_object_item_del(s_info.mptcp->item);
+
setting_network_set_state_mobile_data(
SETTING_ON_OFF_BTN_OFF);
setting_retm_if(err != 0, "set vconf failed");
#include <setting-network.h>
#include <setting-debug.h>
#include <setting-cfg.h>
+#include <connection_extension.h>
#include "setting-network-service-providers.h"
#include "setting-network-connection-create.h"
#include "setting-network-main.h"
}
SETTING_TRACE_END;
}
+
+void setting_network_mptcp_enable(void *data, bool enable)
+{
+ SettingNetwork *ad = (SettingNetwork *)data;
+
+ if (enable)
+ connection_mptcp_enable(ad->connection, CONNECTION_MPTCP_ENABLE_SOCKOPT);
+ else
+ connection_mptcp_disable(ad->connection);
+}
+
+setting_network_mptcp_state_t setting_network_is_mptcp_enabled(void *data)
+{
+ connection_mptcp_enable_e state;
+ SettingNetwork *ad = (SettingNetwork *)data;
+
+ int ret = connection_mptcp_get_enabled(ad->connection, &state);
+ if (ret != CONNECTION_ERROR_NONE) {
+ SETTING_TRACE_ERROR("Failed to get mptcp state");
+ return SETTING_NETWORK_MPTCP_NOT_SUPPORTED;
+ }
+
+ return state ? SETTING_NETWORK_MPTCP_ENABLED : SETTING_NETWORK_MPTCP_DISABLED;
+}