{0, SIGNAL_NAME_DHCP_STATUS, __handle_dhcp} };
static int retry = 0;
+static __thread tethering_request_table_t request_table[TETHERING_TYPE_MAX];
static void __send_dbus_signal(GDBusConnection *conn, const char *signal_name, const char *arg)
{
{
if (tethering_is_enabled(tethering, TETHERING_TYPE_USB) ||
tethering_is_enabled(tethering, TETHERING_TYPE_WIFI) ||
+ tethering_is_enabled(tethering, TETHERING_TYPE_WIFI_SHARING) ||
tethering_is_enabled(tethering, TETHERING_TYPE_BT) ||
tethering_is_enabled(tethering, TETHERING_TYPE_P2P))
return true;
if (ap_type == MOBILE_AP_TYPE_USB)
type = TETHERING_TYPE_USB;
- else if (ap_type == MOBILE_AP_TYPE_WIFI)
- type = TETHERING_TYPE_WIFI;
- else if (ap_type == MOBILE_AP_TYPE_BT)
+ else if (ap_type == MOBILE_AP_TYPE_WIFI) {
+ if (request_table[TETHERING_TYPE_WIFI_SHARING].flag)
+ type = TETHERING_TYPE_WIFI_SHARING;
+ else
+ type = TETHERING_TYPE_WIFI;
+ } else if (ap_type == MOBILE_AP_TYPE_BT)
type = TETHERING_TYPE_BT;
else if (ap_type == MOBILE_AP_TYPE_P2P)
type = TETHERING_TYPE_P2P;
GError *g_error = NULL;
GVariant *g_var;
guint info;
+ tethering_type_e type = 0;
tethering_error_e error;
__tethering_h *th = (__tethering_h *)user_data;
- tethering_enabled_cb ecb = th->enabled_cb[TETHERING_TYPE_WIFI];
- void *data = th->enabled_user_data[TETHERING_TYPE_WIFI];
+
+ if (request_table[TETHERING_TYPE_WIFI_SHARING].flag)
+ type = TETHERING_TYPE_WIFI_SHARING;
+ else
+ type = TETHERING_TYPE_WIFI;
+
+ tethering_enabled_cb ecb = th->enabled_cb[type];
+ void *data = th->enabled_user_data[type];
if (!_tethering_check_handle((tethering_h)user_data))
return;
if (g_error->code == G_DBUS_ERROR_NO_REPLY &&
++retry < TETHERING_ERROR_RECOVERY_MAX) {
g_error_free(g_error);
- tethering_enable((tethering_h)th, TETHERING_TYPE_WIFI);
+ tethering_enable((tethering_h)th, type);
return;
} else if (g_error->code == G_DBUS_ERROR_ACCESS_DENIED)
error = TETHERING_ERROR_PERMISSION_DENIED;
INFO("-\n");
return;
}
- ecb(error, TETHERING_TYPE_WIFI, true, data);
+ ecb(error, type, true, data);
g_variant_unref(g_var);
INFO("-\n");
}
vconf_get_int(VCONFKEY_NETWORK_STATUS, &dnet_status);
if ((dnet_status == VCONFKEY_NETWORK_WIFI
&& type != TETHERING_TYPE_WIFI)
- || dnet_status == VCONFKEY_NETWORK_ETHERNET)
+ || (dnet_status == VCONFKEY_NETWORK_ETHERNET
+ && type != TETHERING_TYPE_WIFI_SHARING))
return TRUE;
ERR("Network is not available!");
set.max_connected);
char key[TETHERING_WIFI_KEY_MAX_LEN + 1] = {0, };
- if (type == TETHERING_TYPE_WIFI_SHARING)
+ if (type == TETHERING_TYPE_WIFI_SHARING) {
g_strlcpy(key, "wifi_sharing", TETHERING_WIFI_KEY_MAX_LEN);
- else
+ request_table[TETHERING_TYPE_WIFI_SHARING].flag = true;
+ } else {
g_strlcpy(key, "wifi_tether", TETHERING_WIFI_KEY_MAX_LEN);
+ request_table[TETHERING_TYPE_WIFI].flag = true;
+ }
g_dbus_proxy_call(proxy, "enable_wifi_tethering",
g_variant_new("(ssssiiiiiii)", key, set.ssid, set.key, set.mode,
set.max_connected);
char key[TETHERING_WIFI_KEY_MAX_LEN + 1] = {0, };
- if (type == TETHERING_TYPE_WIFI_SHARING)
+ if (type == TETHERING_TYPE_WIFI_SHARING) {
g_strlcpy(key, "wifi_sharing", TETHERING_WIFI_KEY_MAX_LEN);
- else
+ request_table[TETHERING_TYPE_WIFI_SHARING].flag = true;
+ } else {
g_strlcpy(key, "wifi_tether", TETHERING_WIFI_KEY_MAX_LEN);
+ request_table[TETHERING_TYPE_WIFI_SHARING].flag = true;
+ }
g_dbus_proxy_call(proxy, "enable_wifi_tethering",
g_variant_new("(ssssiiiiiii)", key, set.ssid, set.key, set.mode,
break;
case TETHERING_TYPE_WIFI:
+ case TETHERING_TYPE_WIFI_SHARING:
vconf_type = VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI;
break;
{
CHECK_FEATURE_SUPPORTED(TETHERING_FEATURE);
if (type == TETHERING_TYPE_USB) CHECK_FEATURE_SUPPORTED(TETHERING_USB_FEATURE);
- else if (type == TETHERING_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
+ else if (type == TETHERING_TYPE_WIFI || type == TETHERING_TYPE_WIFI_SHARING)
+ CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
else if (type == TETHERING_TYPE_BT) CHECK_FEATURE_SUPPORTED(TETHERING_BT_FEATURE);
_retvm_if(tethering == NULL, TETHERING_ERROR_INVALID_PARAMETER,
interface = g_variant_get_int32(value);
if (interface == MOBILE_AP_TYPE_USB)
client.interface = TETHERING_TYPE_USB;
- else if (interface == MOBILE_AP_TYPE_WIFI)
- client.interface = TETHERING_TYPE_WIFI;
- else if (interface == MOBILE_AP_TYPE_BT)
+ else if (interface == MOBILE_AP_TYPE_WIFI) {
+ if (request_table[TETHERING_TYPE_WIFI_SHARING].flag)
+ client.interface = TETHERING_TYPE_WIFI_SHARING;
+ else
+ client.interface = TETHERING_TYPE_WIFI;
+
+ } else if (interface == MOBILE_AP_TYPE_BT)
client.interface = TETHERING_TYPE_BT;
else if (interface == MOBILE_AP_TYPE_P2P)
client.interface = TETHERING_TYPE_P2P;
INFO("+ type: %d\n", type);
CHECK_FEATURE_SUPPORTED(TETHERING_FEATURE);
if (type == TETHERING_TYPE_USB) CHECK_FEATURE_SUPPORTED(TETHERING_USB_FEATURE);
- else if (type == TETHERING_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
+ else if (type == TETHERING_TYPE_WIFI || type == TETHERING_TYPE_WIFI_SHARING)
+ CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
else if (type == TETHERING_TYPE_BT) CHECK_FEATURE_SUPPORTED(TETHERING_BT_FEATURE);
_retvm_if(tethering == NULL, TETHERING_ERROR_INVALID_PARAMETER,
}
/* TETHERING_TYPE_ALL */
- for (ti = TETHERING_TYPE_USB; ti <= TETHERING_TYPE_P2P; ti++) {
+ for (ti = TETHERING_TYPE_USB; ti < TETHERING_TYPE_MAX; ti++) {
th->enabled_cb[ti] = callback;
th->enabled_user_data[ti] = user_data;
}
{
CHECK_FEATURE_SUPPORTED(TETHERING_FEATURE);
if (type == TETHERING_TYPE_USB) CHECK_FEATURE_SUPPORTED(TETHERING_USB_FEATURE);
- else if (type == TETHERING_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
+ else if (type == TETHERING_TYPE_WIFI || type == TETHERING_TYPE_WIFI_SHARING)
+ CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
else if (type == TETHERING_TYPE_BT) CHECK_FEATURE_SUPPORTED(TETHERING_BT_FEATURE);
_retvm_if(tethering == NULL, TETHERING_ERROR_INVALID_PARAMETER,
}
/* TETHERING_TYPE_ALL */
- for (ti = TETHERING_TYPE_USB; ti <= TETHERING_TYPE_P2P; ti++) {
+ for (ti = TETHERING_TYPE_USB; ti < TETHERING_TYPE_MAX; ti++) {
th->enabled_cb[ti] = NULL;
th->enabled_user_data[ti] = NULL;
}
INFO("+ type: %d\n", type);
CHECK_FEATURE_SUPPORTED(TETHERING_FEATURE);
if (type == TETHERING_TYPE_USB) CHECK_FEATURE_SUPPORTED(TETHERING_USB_FEATURE);
- else if (type == TETHERING_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
+ else if (type == TETHERING_TYPE_WIFI || type == TETHERING_TYPE_WIFI_SHARING)
+ CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
else if (type == TETHERING_TYPE_BT) CHECK_FEATURE_SUPPORTED(TETHERING_BT_FEATURE);
_retvm_if(tethering == NULL, TETHERING_ERROR_INVALID_PARAMETER,
}
/* TETHERING_TYPE_ALL */
- for (ti = TETHERING_TYPE_USB; ti <= TETHERING_TYPE_P2P; ti++) {
+ for (ti = TETHERING_TYPE_USB; ti < TETHERING_TYPE_MAX; ti++) {
th->disabled_cb[ti] = callback;
th->disabled_user_data[ti] = user_data;
}
{
CHECK_FEATURE_SUPPORTED(TETHERING_FEATURE);
if (type == TETHERING_TYPE_USB) CHECK_FEATURE_SUPPORTED(TETHERING_USB_FEATURE);
- else if (type == TETHERING_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
+ else if (type == TETHERING_TYPE_WIFI || type == TETHERING_TYPE_WIFI_SHARING)
+ CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
else if (type == TETHERING_TYPE_BT) CHECK_FEATURE_SUPPORTED(TETHERING_BT_FEATURE);
_retvm_if(tethering == NULL, TETHERING_ERROR_INVALID_PARAMETER,
}
/* TETHERING_TYPE_ALL */
- for (ti = TETHERING_TYPE_USB; ti <= TETHERING_TYPE_P2P; ti++) {
+ for (ti = TETHERING_TYPE_USB; ti < TETHERING_TYPE_MAX; ti++) {
th->disabled_cb[ti] = NULL;
th->disabled_user_data[ti] = NULL;
}
INFO("+ type: %d\n", type);
CHECK_FEATURE_SUPPORTED(TETHERING_FEATURE);
if (type == TETHERING_TYPE_USB) CHECK_FEATURE_SUPPORTED(TETHERING_USB_FEATURE);
- else if (type == TETHERING_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
+ else if (type == TETHERING_TYPE_WIFI || type == TETHERING_TYPE_WIFI_SHARING)
+ CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
else if (type == TETHERING_TYPE_BT) CHECK_FEATURE_SUPPORTED(TETHERING_BT_FEATURE);
_retvm_if(tethering == NULL, TETHERING_ERROR_INVALID_PARAMETER,
}
/* TETHERING_TYPE_ALL */
- for (ti = TETHERING_TYPE_USB; ti <= TETHERING_TYPE_P2P; ti++) {
+ for (ti = TETHERING_TYPE_USB; ti < TETHERING_TYPE_MAX; ti++) {
th->changed_cb[ti] = callback;
th->changed_user_data[ti] = user_data;
}
{
CHECK_FEATURE_SUPPORTED(TETHERING_FEATURE);
if (type == TETHERING_TYPE_USB) CHECK_FEATURE_SUPPORTED(TETHERING_USB_FEATURE);
- else if (type == TETHERING_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
+ else if (type == TETHERING_TYPE_WIFI || type == TETHERING_TYPE_WIFI_SHARING)
+ CHECK_FEATURE_SUPPORTED(TETHERING_WIFI_FEATURE);
else if (type == TETHERING_TYPE_BT) CHECK_FEATURE_SUPPORTED(TETHERING_BT_FEATURE);
_retvm_if(tethering == NULL, TETHERING_ERROR_INVALID_PARAMETER,
}
/* TETHERING_TYPE_ALL */
- for (ti = TETHERING_TYPE_USB; ti <= TETHERING_TYPE_P2P; ti++) {
+ for (ti = TETHERING_TYPE_USB; ti < TETHERING_TYPE_MAX; ti++) {
th->changed_cb[ti] = NULL;
th->changed_user_data[ti] = NULL;
}