4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://floralicense.org/license
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
21 #define UG_MODULE_API __attribute__ ((visibility("default")))
24 #include "mobile_hotspot.h"
25 #include "mh_view_main.h"
26 #include "mh_func_onoff.h"
27 #include "mh_common_utility.h"
29 static Evas_Object *create_content(mh_appdata_t *ad)
31 __MOBILE_AP_FUNC_ENTER__;
33 ad->naviframe = _create_naviframe(ad->layout);
36 __MOBILE_AP_FUNC_EXIT__;
41 static void __set_callbacks(tethering_h handle, void *user_data)
45 ret = tethering_set_enabled_cb(handle, TETHERING_TYPE_ALL,
46 _enabled_cb, user_data);
47 if (ret != TETHERING_ERROR_NONE)
48 ERR("tethering_set_enabled_cb [0x%X]\n", ret);
50 ret = tethering_set_disabled_cb(handle, TETHERING_TYPE_ALL,
51 _disabled_cb, user_data);
52 if (ret != TETHERING_ERROR_NONE)
53 ERR("tethering_set_disabled_cb [0x%X]\n", ret);
55 ret = tethering_set_connection_state_changed_cb(handle,
57 _connection_changed_cb, user_data);
58 if (ret != TETHERING_ERROR_NONE)
59 ERR("tethering_set_connection_state_changed_cb [0x%X]\n", ret);
62 static void __unset_callbacks(tethering_h handle)
66 ret = tethering_unset_connection_state_changed_cb(handle,
68 if (ret != TETHERING_ERROR_NONE)
69 ERR("tethering_unset_connection_state_changed_cb[0x%X]\n", ret);
71 ret = tethering_unset_disabled_cb(handle, TETHERING_TYPE_ALL);
72 if (ret != TETHERING_ERROR_NONE)
73 ERR("tethering_unset_disabled_cb [0x%X]\n", ret);
75 ret = tethering_unset_enabled_cb(handle, TETHERING_TYPE_ALL);
76 if (ret != TETHERING_ERROR_NONE)
77 ERR("tethering_unset_enabled [0x%X]\n", ret);
80 static void *on_create(ui_gadget_h ug, enum ug_mode mode,
81 service_h service, void *priv)
83 __MOBILE_AP_FUNC_ENTER__;
86 ERR("The param is NULL\n");
90 if (mode != UG_MODE_FULLVIEW) {
91 ERR("Only Fullview is supported\n");
101 bindtextdomain(MH_TEXT_DOMAIN, MH_LOCALEDIR);
102 dgettext(PACKAGE, LOCALEDIR);
104 ad = (mh_appdata_t *)malloc(sizeof(mh_appdata_t));
107 ERR("Error!!! failed to allocate memory()\n");
110 memset(ad, 0x0, sizeof(mh_appdata_t));
112 ugd = (mh_ugdata_t *)priv;
119 ret = tethering_create(&ad->handle);
120 if (ret != TETHERING_ERROR_NONE) {
121 ERR("tethering_create is failed : %d\n", ret);
127 ad->win = ug_get_parent_layout(ug);
129 ERR("ad->win is NULL\n");
135 layout = _create_win_layout(ad);
136 if (layout == NULL) {
137 ERR("_create_win_layout is failed\n");
143 content = create_content(ad);
144 if (content == NULL) {
145 ERR("create_content is failed\n");
151 elm_object_part_content_set(layout, "elm.swallow.content", content);
152 evas_object_show(layout);
154 ret = connection_create(&ad->conn_handle);
155 if (ret != CONNECTION_ERROR_NONE) {
156 ERR("connection_create() is failed : %d\n", ret);
159 ret = wifi_initialize();
160 if (ret != WIFI_ERROR_NONE) {
161 ERR("wifi_initialize() is failed : %d\n", ret);
164 __set_callbacks(ad->handle, (void *)ad);
166 __MOBILE_AP_FUNC_EXIT__;
170 static void on_start(ui_gadget_h ug, service_h service, void *priv)
174 static void on_pause(ui_gadget_h ug, service_h service, void *priv)
179 static void on_resume(ui_gadget_h ug, service_h service, void *priv)
184 static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
186 __MOBILE_AP_FUNC_ENTER__;
189 ERR("The param is NULL\n");
193 mh_ugdata_t *ugd = priv;
194 mh_appdata_t *ad = ugd->ad;
198 ERR("The param is NULL\n");
202 __unset_callbacks(ad->handle);
203 _stop_update_data_packet_usage(ad);
205 ret = wifi_deinitialize();
206 if (ret != WIFI_ERROR_NONE) {
207 ERR("wifi_deinitialize() is failed : %d\n", ret);
210 ret = connection_destroy(ad->conn_handle);
211 if (ret != CONNECTION_ERROR_NONE) {
212 ERR("connection_destroy() is failed : %d\n", ret);
215 ret = tethering_destroy(ad->handle);
216 if (ret != TETHERING_ERROR_NONE) {
217 ERR("tethering_destroy() is failed : %d\n", ret);
220 if (ad->layout == NULL) {
221 ERR("ad->layout is NULL\n");
229 evas_object_del(ad->popup);
233 evas_object_del(ad->bg);
236 evas_object_del(ad->layout);
239 ecore_imf_shutdown();
244 __MOBILE_AP_FUNC_EXIT__;
248 static void on_message(ui_gadget_h ug, service_h msg,
249 service_h service, void *priv)
253 static void __rotate_changed_cb(mh_appdata_t *ad, enum ug_event rotate_state)
260 Elm_Object_Item *top_navi_it = NULL;
261 mh_wifi_setting_view_t *st = &ad->setup;
263 ad->rotate_state = rotate_state;
265 top_navi_it = elm_naviframe_top_item_get(ad->naviframe);
266 if (top_navi_it == NULL) {
267 ERR("elm_naviframe_top_item_get returns NULL\n");
271 if (top_navi_it != st->navi_it) {
275 if (rotate_state == UG_EVENT_ROTATE_PORTRAIT ||
276 rotate_state == UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN) {
277 DBG("Naviframe title is shown\n");
278 elm_naviframe_item_title_visible_set(st->navi_it,
280 } else if (rotate_state == UG_EVENT_ROTATE_LANDSCAPE ||
281 rotate_state == UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN) {
282 if (ad->imf_state == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
283 DBG("Naviframe title is hided\n");
284 elm_naviframe_item_title_visible_set(st->navi_it,
288 ERR("Unknown rotate_state : %d\n", rotate_state);
294 static void on_event(ui_gadget_h ug, enum ug_event event,
295 service_h service, void *priv)
297 __MOBILE_AP_FUNC_ENTER__;
300 ERR("The param is NULL\n");
304 mh_ugdata_t *ugd = (mh_ugdata_t *)priv;
305 mh_appdata_t *ad = ugd->ad;
308 case UG_EVENT_LOW_MEMORY:
309 DBG("UG_EVENT_LOW_MEMORY\n");
311 case UG_EVENT_LOW_BATTERY:
312 DBG("UG_EVENT_LOW_BATTERY\n");
314 case UG_EVENT_LANG_CHANGE:
315 DBG("UG_EVENT_LANG_CHANGE\n");
317 case UG_EVENT_ROTATE_PORTRAIT:
318 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
319 DBG("UG_EVENT_ROTATE_PORTRAIT[_UPSIDEDOWN]\n");
320 __rotate_changed_cb(ad, event);
322 case UG_EVENT_ROTATE_LANDSCAPE:
323 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
324 DBG("UG_EVENT_ROTATE_LANDSCAPE[_UPSIDEDOWN]\n");
325 __rotate_changed_cb(ad, event);
332 __MOBILE_AP_FUNC_EXIT__;
335 static void on_key_event(ui_gadget_h ug, enum ug_key_event event,
336 service_h service, void *priv)
338 __MOBILE_AP_FUNC_ENTER__;
340 if (priv == NULL || ug == NULL) {
341 ERR("The param is NULL\n");
345 mh_ugdata_t *ugd = (mh_ugdata_t *)priv;
346 mh_appdata_t *ad = ugd->ad;
354 case UG_KEY_EVENT_END:
355 DBG("UG_KEY_EVENT_END is received : %p\n", ad->popup);
356 if (NULL == ad->popup)
366 __MOBILE_AP_FUNC_EXIT__;
369 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
371 __MOBILE_AP_FUNC_ENTER__;
374 ERR("The param is NULL\n");
379 ugd = calloc(1, sizeof(mh_ugdata_t));
381 ERR("Quit : calloc failed(ugd)\n");
385 ops->create = on_create;
386 ops->start = on_start;
387 ops->pause = on_pause;
388 ops->resume = on_resume;
389 ops->destroy = on_destroy;
390 ops->message = on_message;
391 ops->event = on_event;
392 ops->key_event = on_key_event;
394 ops->opt = UG_OPT_INDICATOR_ENABLE;
396 __MOBILE_AP_FUNC_EXIT__;
401 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
403 __MOBILE_AP_FUNC_ENTER__;
406 ERR("The param is NULL\n");
410 mh_ugdata_t *ugd = (mh_ugdata_t *)ops->priv;
415 __MOBILE_AP_FUNC_EXIT__;
418 static void __mh_reset_vconf(tethering_h handle)
422 ret = vconf_set_int(VCONF_MOBILE_AP_PREV_WIFI_STATUS, 0);
424 ERR("vconf_set_int failed\n");
426 ret = tethering_wifi_set_ssid_visibility(handle, true);
427 if (ret != TETHERING_ERROR_NONE)
428 ERR("tethering_wifi_set_ssid_visibility failed\n");
430 ret = tethering_wifi_set_security_type(handle, TETHERING_WIFI_SECURITY_TYPE_NONE);
431 if (ret != TETHERING_ERROR_NONE)
432 ERR("tethering_wifi_set_security_type failed\n");
437 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
439 __MOBILE_AP_FUNC_ENTER__;
442 tethering_h handle = NULL;
444 if (tethering_create(&handle) != TETHERING_ERROR_NONE) {
445 ERR("tethering_create failed\n");
449 if (tethering_is_enabled(handle, TETHERING_TYPE_USB) ||
450 tethering_is_enabled(handle, TETHERING_TYPE_WIFI) ||
451 tethering_is_enabled(handle, TETHERING_TYPE_BT)) {
452 ret = tethering_disable(handle, TETHERING_TYPE_ALL);
453 if (ret != TETHERING_ERROR_NONE) {
454 ERR("tethering_disable failed : %d\n", ret);
455 tethering_destroy(handle);
461 __mh_reset_vconf(handle);
463 tethering_destroy(handle);
465 __MOBILE_AP_FUNC_EXIT__;