ADD_DEFINITIONS(-DTIZEN_FEATURE_DUALSIM_ENABLE)
ENDIF (TIZEN_FEATURE_DUALSIM_ENABLE)
+IF (TIZEN_FEATURE_EMULATOR)
+ ADD_DEFINITIONS(-DTIZEN_FEATURE_EMULATOR)
+ENDIF (TIZEN_FEATURE_EMULATOR)
+
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
SET(dependents "elementary evas ui-gadget-1 capi-network-tethering capi-network-connection capi-network-wifi notification aul bundle efl-extension dpm")
void _handle_network_cellular_state_changed_cb(keynode_t *key, void *data);
void _handle_mobileap_syspopup_popup_response(keynode_t *key, void *data);
+#ifdef TIZEN_FEATURE_EMULATOR
+time_t _get_emul_timestamp(tethering_type_e);
+void __update_emul_clients_genlist(mh_appdata_t *ad);
+#endif
+
#ifdef __cplusplus
}
#endif
void _ctxpopup_more_button_callback_add(mh_appdata_t *ad);
void _ctxpopup_more_button_callback_del(mh_appdata_t *ad);
+#ifdef TIZEN_FEATURE_EMULATOR
+tethering_type_e _get_updated_type(void);
+tethering_type_e _get_selected_type(void);
+Eina_Bool _get_selected_state(void);
+void _update_emul_main_view(mh_appdata_t *ad, tethering_type_e type, Eina_Bool state);
+#endif
+
#ifdef __cplusplus
}
#endif
Elm_Object_Item *popup_check_item;
Elm_Object_Item *dev_item;
Elm_Object_Item *station_items[MAX_CONNECTED_STA];
+#ifdef TIZEN_FEATURE_EMULATOR
+ Elm_Object_Item *emul_station_items[TETHERING_TYPE_MAX];
+#endif
int no_of_clients;
#ifdef TETHERING_DATA_USAGE_SUPPORT
%build
cmake -DCMAKE_INSTALL_PREFIX="%{_ugdir}" \
+%if "%{?_with_emulator}" == "1"
+ -DTIZEN_FEATURE_EMULATOR=1 \
+%endif
.
make %{?_smp_mflags}
#include "mobile_hotspot.h"
#include "mh_string.h"
+#ifdef TIZEN_FEATURE_EMULATOR
+static int emul_no_of_clients;
+static time_t emul_timestamp[TETHERING_TYPE_MAX];
+#endif
+
static void __remove_conn_clients(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
{
__MOBILE_AP_FUNC_ENTER__;
+#ifndef TIZEN_FEATURE_EMULATOR
tethering_client_h client = (tethering_client_h)data;
char *name = NULL;
char *dev_name = NULL;
tethering_client_get_time(client, &tm);
return __get_diff_time(tm);
}
+#else
+ tethering_type_e selected_type = _get_selected_type();
+ tethering_type_e updated_type = _get_updated_type();
+ if (obj == NULL) {
+ ERR("Invalid param\n");
+ return NULL;
+ }
+ if (!strcmp("elm.text", part)) {
+ if (selected_type == TETHERING_TYPE_WIFI)
+ return strdup("wifi_tethering_client");
+ else if (selected_type == TETHERING_TYPE_BT)
+ return strdup("bt_tethering_client");
+ else
+ return strdup("usb_tethering_client");
+ } else if (!strcmp("elm.text.sub", part)) {
+ if (updated_type == TETHERING_TYPE_ALL)
+ return __get_diff_time(emul_timestamp[selected_type]);
+ else
+ return __get_diff_time(emul_timestamp[updated_type]);
+ }
+
+#endif
__MOBILE_AP_FUNC_EXIT__;
return NULL;
}
__MOBILE_AP_FUNC_EXIT__;
}
+#ifdef TIZEN_FEATURE_EMULATOR
+void __update_emul_clients_genlist(mh_appdata_t *ad)
+{
+ __MOBILE_AP_FUNC_ENTER__;
+
+ if (ad == NULL) {
+ ERR("ad is NULL\n");
+ return;
+ }
+
+ Elm_Object_Item *item = NULL;
+ mh_main_view_t *mv = &ad->main;
+ tethering_type_e selected_type = _get_selected_type();
+ Eina_Bool selected_state = _get_selected_state();
+
+ __set_genlist_itc(ad);
+
+
+ if (selected_state && !mv->emul_station_items[selected_type]) {
+ mv->emul_station_items[selected_type] = elm_genlist_item_append(mv->genlist,
+ mv->dev_itc[selected_type],
+ NULL, NULL, ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+ time(&emul_timestamp[selected_type]);
+ emul_no_of_clients++;
+ } else {
+ if (mv->emul_station_items[selected_type]) {
+ elm_object_item_del(mv->emul_station_items[selected_type]);
+ mv->emul_station_items[selected_type] = NULL;
+ emul_timestamp[selected_type] = 0;
+ emul_no_of_clients--;
+ }
+ }
+
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ evas_object_smart_callback_add(mv->genlist, "scroll,anim,start",
+ __scroll_start_cb, ad);
+ evas_object_smart_callback_add(mv->genlist, "scroll,drag,start",
+ __scroll_start_cb, ad);
+ evas_object_smart_callback_add(mv->genlist, "scroll,anim,stop",
+ __scroll_stop_cb, ad);
+ evas_object_smart_callback_add(mv->genlist, "scroll,drag,stop",
+ __scroll_stop_cb, ad);
+
+ if (emul_no_of_clients)
+ _start_update_device_conn_time(ad);
+ else
+ _stop_update_device_conn_time(ad);
+}
+#endif
+
static void __append_clients_genlist(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
return;
}
-
__append_clients_genlist(ad);
DBG("-\n");
_prepare_popup(MH_POPUP_WIFI_OFF, STR_CLOSE_INTERNET_Q);
_create_popup(ad);
} else {
+#ifndef TIZEN_FEATURE_EMULATOR
ret = tethering_disable(ad->handle, TETHERING_TYPE_WIFI);
if (ret != TETHERING_ERROR_NONE) {
ERR("wifi tethering off is failed : %d\n", ret);
return -1;
}
+#endif
_send_signal_qp(QP_SIGNAL_PROGRESS_OFF);
}
return 0;
/* Turn off Bluetooth tethering */
if (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_BT) {
+#ifndef TIZEN_FEATURE_EMULATOR
ret = tethering_disable(ad->handle, TETHERING_TYPE_BT);
if (ret) {
ERR("Error disable bt tethering [%d]\n", ret);
return -1;
}
+#endif
return 0;
}
/* Turn off USB tethering */
if (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_USB) {
+#ifndef TIZEN_FEATURE_EMULATOR
ret = tethering_disable(ad->handle, TETHERING_TYPE_USB);
if (ret) {
ERR("Error disable usb tethering : %d\n", ret);
return -1;
}
+#endif
return 0;
}
ecore_imf_init();
ret = tethering_create(&ad->handle);
+#ifndef TIZEN_FEATURE_EMULATOR
if (ret != TETHERING_ERROR_NONE) {
ERR("tethering_create is failed : %d\n", ret);
free(ad);
ugd->ad = NULL;
return NULL;
}
+#endif
ad->win = ug_get_parent_layout(ug);
if (!ad->win) {
__MOBILE_AP_FUNC_EXIT__;
}
+#ifdef TIZEN_FEATURE_EMULATOR
+static void __handle_emul_popup_resp(void *data, bool response)
+{
+ __MOBILE_AP_FUNC_ENTER__;
+
+ if (data == NULL) {
+ ERR("The param is NULL\n");
+ return;
+ }
+
+ mh_appdata_t *ad = (mh_appdata_t *)data;
+ Eina_Bool state = 0;
+
+ if (ad->popup_checkbox) {
+ state = elm_check_state_get(ad->popup_checkbox);
+ evas_object_del(ad->popup_checkbox);
+ ad->popup_checkbox = NULL;
+ DBG("Checkbox status is = %d\n", state);
+ }
+ if (ad->popup) {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+
+ if (response == true) {
+ switch (popup_type) {
+ case MH_POPUP_WIFI_ON_CHECKBOX:
+ if (state)
+ _set_checkbox_status(TETHERING_TYPE_WIFI, 1);
+ ad->is_wifi_teth_enabling = false;
+ break;
+
+ case MH_POPUP_BT_ON_CHECKBOX:
+ if (state)
+ _set_checkbox_status(TETHERING_TYPE_BT, 1);
+ ad->is_bt_teth_enabling = false;
+ break;
+
+ default:
+ ERR("Unknown popup_type : %d\n", popup_type);
+ break;
+ }
+ } else {
+ switch (popup_type) {
+ case MH_POPUP_WIFI_ON_CHECKBOX:
+ _update_tethering_enabling_item(ad, TETHERING_TYPE_WIFI, MH_STATE_NONE);
+ _wifi_tethering_checkbox_popup_status_set(false);
+ break;
+
+ case MH_POPUP_BT_ON_CHECKBOX:
+ _update_tethering_enabling_item(ad, TETHERING_TYPE_BT, MH_STATE_NONE);
+ break;
+
+ default:
+ ERR("Unknown popup_type : %d\n", popup_type);
+ break;
+ }
+ }
+
+ __MOBILE_AP_FUNC_EXIT__;
+}
+#endif
+
void _teth_on(mh_appdata_t *ad)
{
+#ifndef TIZEN_FEATURE_EMULATOR
__handle_popup_resp(ad, true);
+#else
+ __handle_emul_popup_resp(ad, true);
+#endif
}
static void __popup_yes_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
return;
}
+#ifndef TIZEN_FEATURE_EMULATOR
__handle_popup_resp(data, true);
+#else
+ mh_appdata_t *ad = (mh_appdata_t *)data;
+
+ __handle_emul_popup_resp(data, true);
+ _update_emul_main_view(ad, _get_selected_type(), _get_selected_state());
+#endif
}
static void __popup_no_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
return;
}
+#ifndef TIZEN_FEATURE_EMULATOR
__handle_popup_resp(data, false);
+#else
+ __handle_emul_popup_resp(data, false);
+#endif
}
static void __popup_no_btn_mouse_event_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
Evas_Event_Mouse_Up *ev = event_info;
if (ev->button == 3)
+#ifndef TIZEN_FEATURE_EMULATOR
__handle_popup_resp(data, false);
+#else
+ __handle_emul_popup_resp(data, false);
+#endif
}
static void __popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
return;
}
+#ifndef TIZEN_FEAUTRE_EMULATOR
__handle_popup_resp(data, false);
+#else
+ __handle_emul_popup_resp(data, false);
+#endif
}
void _prepare_popup_with_content(int type, Evas_Object *obj)
#include <dpm/restriction.h>
#include "mh_view_main.h"
+#include "mh_common_utility.h"
#include "mh_popup.h"
#include "mh_string.h"
mh_appdata_t *g_ad = NULL;
#define UPDATE_INTERVAL 1
+#ifdef TIZEN_FEATURE_EMULATOR
+static tethering_type_e updated_type = TETHERING_TYPE_ALL;
+static tethering_type_e selected_type = TETHERING_TYPE_ALL;
+static Eina_Bool selected_state = EINA_FALSE;
+
+tethering_type_e _get_updated_type(void)
+{
+ return updated_type;
+}
+
+tethering_type_e _get_selected_type(void)
+{
+ return selected_type;
+}
+
+Eina_Bool _get_selected_state(void)
+{
+ return selected_state;
+}
+#endif
+
void _list_connected_dev(mh_appdata_t *ap)
{
__MOBILE_AP_FUNC_ENTER__;
return ECORE_CALLBACK_CANCEL;
}
mh_appdata_t *ad = (mh_appdata_t *)data;
-
int count = 0;
+
+#ifdef TIZEN_FEATURE_EMULATOR
+ if (ad->main.hotspot_mode == VCONFKEY_MOBILE_HOTSPOT_MODE_NONE) {
+ _stop_update_device_conn_time(ad);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI) {
+ updated_type = TETHERING_TYPE_WIFI;
+ elm_genlist_item_fields_update(ad->main.emul_station_items[TETHERING_TYPE_WIFI],
+ "elm.text.sub", ELM_GENLIST_ITEM_FIELD_TEXT);
+ }
+
+ if (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_BT) {
+ updated_type = TETHERING_TYPE_BT;
+ elm_genlist_item_fields_update(ad->main.emul_station_items[TETHERING_TYPE_BT],
+ "elm.text.sub", ELM_GENLIST_ITEM_FIELD_TEXT);
+ }
+
+ if (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_USB) {
+ updated_type = TETHERING_TYPE_USB;
+ elm_genlist_item_fields_update(ad->main.emul_station_items[TETHERING_TYPE_USB],
+ "elm.text.sub", ELM_GENLIST_ITEM_FIELD_TEXT);
+ }
+
+ updated_type = TETHERING_TYPE_ALL;
+
+ return ECORE_CALLBACK_RENEW;
+#endif
+
if (ad->main.hotspot_mode == VCONFKEY_MOBILE_HOTSPOT_MODE_NONE) {
_stop_update_device_conn_time(ad);
__MOBILE_AP_FUNC_EXIT__;
return;
}
+#ifdef TIZEN_FEATURE_EMULATOR
+void _update_emul_main_view(mh_appdata_t *ad, tethering_type_e type, Eina_Bool state)
+{
+ __MOBILE_AP_FUNC_ENTER__;
+
+ if (ad == NULL) {
+ ERR("Invalid param\n");
+ return;
+ }
+
+ Elm_Object_Item *item = NULL;
+
+ switch (type) {
+ case TETHERING_TYPE_WIFI:
+ /* Update Wi-Fi tethering on / off button */
+ _update_wifi_item(ad, MH_STATE_NONE);
+ if (state) {
+ ad->main.hotspot_mode |= VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI;
+ if (ad->main.help_item) {
+ elm_genlist_item_update(ad->main.help_item);
+ } else {
+ item = elm_genlist_item_insert_after(ad->main.genlist,
+ ad->main.help_itc, ad, NULL,
+ ad->main.wifi_item,
+ ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ if (item == NULL) {
+ ERR("elm_genlist_item_insert_after NULL\n");
+ } else {
+ elm_genlist_item_select_mode_set(item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ ad->main.help_item = item;
+ }
+ }
+ } else {
+ ad->main.hotspot_mode ^= VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI;
+ if (ad->main.help_item) {
+ elm_object_item_del(ad->main.help_item);
+ ad->main.help_item = NULL;
+ }
+ }
+
+ if (ad->main.wifi_item)
+ elm_genlist_item_update(ad->main.wifi_item);
+ break;
+
+ case TETHERING_TYPE_BT:
+ /* Update BT tethering on / off button */
+ _update_bt_item(ad, MH_STATE_NONE);
+ if (state)
+ ad->main.hotspot_mode |= VCONFKEY_MOBILE_HOTSPOT_MODE_BT;
+ else
+ ad->main.hotspot_mode ^= VCONFKEY_MOBILE_HOTSPOT_MODE_BT;
+
+ if (ad->main.bt_item)
+ elm_genlist_item_update(ad->main.bt_item);
+ break;
+
+ case TETHERING_TYPE_USB:
+ /* Update USB tethering on / off button */
+ _update_usb_item(ad, MH_STATE_NONE);
+ if (state)
+ ad->main.hotspot_mode |= VCONFKEY_MOBILE_HOTSPOT_MODE_USB;
+ else
+ ad->main.hotspot_mode ^= VCONFKEY_MOBILE_HOTSPOT_MODE_USB;
+
+ if (ad->main.usb_item)
+ elm_genlist_item_update(ad->main.usb_item);
+ break;
+
+ default:
+ DBG("Unknown tethering type : %d\n", type);
+ break;
+ }
+
+ if (ad->main.hotspot_mode && ad->main.device_item == NULL) {
+ item = elm_genlist_item_append(ad->main.genlist,
+ ad->main.device_itc, ad, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ ad->main.device_item = item;
+ } else if (ad->main.hotspot_mode == 0 && ad->main.device_item) {
+ elm_object_item_del(ad->main.device_item);
+ ad->main.device_item = NULL;
+ }
+
+ __update_emul_clients_genlist(ad);
+
+ __MOBILE_AP_FUNC_EXIT__;
+ return;
+}
+#endif
+
static int __is_allowed(tethering_type_e type)
{
int state = 0;
_update_wifi_item(ad, MH_STATE_PROCESS);
ad->type = TETHERING_TYPE_WIFI;
ad->is_wifi_teth_enabling = true;
+
+#ifdef TIZEN_FEATURE_EMULATOR
+ selected_type = TETHERING_TYPE_WIFI;
+ selected_state = (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI) ? EINA_FALSE : EINA_TRUE;
+ DBG("type [%d] state[%d]", selected_type, selected_state);
+#endif
+
if (_handle_wifi_onoff_change(ad) != 0) {
ERR("_handle_wifi_onoff_change is failed\n");
_update_wifi_item(ad, MH_STATE_NONE);
ad->is_wifi_teth_enabling = false;
}
+#ifdef TIZEN_FEATURE_EMULATOR
+ if (_get_checkbox_status(selected_type) || !selected_state)
+ _update_emul_main_view(ad, selected_type, selected_state);
+#endif
+
__MOBILE_AP_FUNC_EXIT__;
return;
ad->type = TETHERING_TYPE_BT;
ad->is_bt_teth_enabling = true;
+#ifdef TIZEN_FEATURE_EMULATOR
+ selected_type = TETHERING_TYPE_BT;
+ selected_state = (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_BT) ? EINA_FALSE : EINA_TRUE;
+ DBG("type [%d] state[%d]", selected_type, selected_state);
+#endif
+
if (_handle_bt_onoff_change(ad) != 0) {
ERR("_handle_bt_onoff_change is failed\n");
_update_bt_item(ad, MH_STATE_NONE);
ad->is_bt_teth_enabling = false;
}
+#ifdef TIZEN_FEATURE_EMULATOR
+ if (_get_checkbox_status(selected_type) || !selected_state)
+ _update_emul_main_view(ad, selected_type, selected_state);
+#endif
+
__MOBILE_AP_FUNC_EXIT__;
return;
_update_usb_item(ad, MH_STATE_PROCESS);
ad->type = TETHERING_TYPE_USB;
ad->is_usb_teth_enabling = true;
+
+#ifdef TIZEN_FEATURE_EMULATOR
+ selected_type = TETHERING_TYPE_USB;
+ selected_state = (ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_USB) ? EINA_FALSE : EINA_TRUE;
+#endif
+
if (_handle_usb_onoff_change(ad) != 0) {
ERR("_handle_usb_onoff_change is failed\n");
_update_usb_item(ad, MH_STATE_NONE);
ad->is_usb_teth_enabling = false;
}
+#ifdef TIZEN_FEATURE_EMULATOR
+ if (_get_checkbox_status(selected_type) || !selected_state)
+ _update_emul_main_view(ad, selected_type, selected_state);
+#endif
+
__MOBILE_AP_FUNC_EXIT__;
return;
__MOBILE_AP_FUNC_EXIT__;
}
+#ifndef TIZEN_FEATURE_EMULATOR
static bool __save_hide_btn_change(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
__MOBILE_AP_FUNC_EXIT__;
return true;
}
+#endif
static void __security_btn_changed_cb(void *data, Evas_Object *obj, void *event_info)
{
return;
}
+#ifndef TIZEN_FEATURE_EMULATOR
static bool __save_security_btn_change(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
__MOBILE_AP_FUNC_EXIT__;
return true;
}
+#endif
static char *__gl_device_name_title_label_get(void *data, Evas_Object *obj, const char *part)
{
return btn;
}
+#ifndef TIZEN_FEATURE_EMULATOR
static bool __save_wifi_passphrase(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
__MOBILE_AP_FUNC_EXIT__;
return true;
}
+#endif
static void __pw_entry_changed_cb(void *data, Evas_Object *obj,
void *event_info)
{
__MOBILE_AP_FUNC_ENTER__;
mh_appdata_t *ad = (mh_appdata_t *)data;
+#ifndef TIZEN_FEATURE_EMULATOR
int ret;
+#endif
if (ad == NULL) {
ERR("Invalid parameter\n");
return FALSE;
}
+#ifndef TIZEN_FEATURE_EMULATOR
/* reload wifi settings */
ret = tethering_wifi_reload_settings(ad->handle, __settings_reloaded_cb,
(void *)ad);
if (ret != TETHERING_ERROR_NONE)
ERR("reload_configuration is failed : %d\n", ret);
+#else
+ __settings_reloaded_cb(TETHERING_ERROR_NONE, (void *)ad);
+#endif
__MOBILE_AP_FUNC_EXIT__;
return FALSE;
mh_appdata_t *ad = (mh_appdata_t *)data;
mh_wifi_setting_view_t *st = &ad->setup;
- bool ret = false;
bool is_setting_changed = false;
+#ifndef TIZEN_FEATURE_EMULATOR
+ bool ret = false;
/* handle hide button change */
if (st->visibility != st->visibility_new) {
}
}
}
+#else
+ is_setting_changed = true;
+ ad->setup.visibility = ad->setup.visibility_new;
+ ad->setup.security_type = ad->setup.security_type_new;
+ if (strcmp(st->wifi_passphrase, st->wifi_passphrase_new)) {
+ g_strlcpy(st->wifi_passphrase, st->wifi_passphrase_new,
+ sizeof(st->wifi_passphrase));
+ }
+#endif
if (is_setting_changed) {
_update_wifi_item(ad, MH_STATE_PROCESS);