From 9b0016fae754956985eca418e5e78596661fce85 Mon Sep 17 00:00:00 2001 From: pradeep kumar B Date: Tue, 19 Nov 2013 12:15:50 +0530 Subject: [PATCH] Dynamic loading of wifi-driver for the wifi tethering Change-Id: I3437a19366e9950a7575726a5bd6c0d7d4027dea Signed-off-by: pradeep kumar B --- packaging/mobileap-agent.spec | 3 +++ src/mobileap_wifi.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/packaging/mobileap-agent.spec b/packaging/mobileap-agent.spec index e40b777..899893e 100644 --- a/packaging/mobileap-agent.spec +++ b/packaging/mobileap-agent.spec @@ -31,6 +31,9 @@ cp %{SOURCE1001} . %build %cmake . +%ifarch %arm +CFLAGS+=" -DTIZEN_ARM" +%endif make %{?jobs:-j%jobs} %install diff --git a/src/mobileap_wifi.c b/src/mobileap_wifi.c index c2c9af2..788b464 100644 --- a/src/mobileap_wifi.c +++ b/src/mobileap_wifi.c @@ -337,6 +337,22 @@ void _add_wifi_device_to_array(softap_device_info_t *di, GPtrArray *array) } } +#ifdef TIZEN_ARM +mobile_ap_error_code_e _wifi_softap_driverloader(gboolean action) +{ + char cmd[MAX_BUF_SIZE]; + int ret_status = MOBILE_AP_ERROR_NONE; + + char *str = action ? "softap":"stop"; + snprintf(cmd, sizeof(cmd), "%s %s", WLAN_SCRIPT, str); + if (_execute_command(cmd)) { + ERR("execute script failed : %s\n", cmd); + ret_status = MOBILE_AP_ERROR_INTERNAL; + } + return ret_status; +} +#endif + mobile_ap_error_code_e _enable_wifi_tethering(TetheringObject *obj, gchar *ssid) { mobile_ap_error_code_e ret; @@ -373,9 +389,21 @@ mobile_ap_error_code_e _enable_wifi_tethering(TetheringObject *obj, gchar *ssid) } /* Upload driver */ +#ifdef TIZEN_ARM + ret = _wifi_softap_driverloader(TRUE); + if (ret != MOBILE_AP_ERROR_NONE) { + _deinit_tethering(obj); + _mobileap_clear_state(MOBILE_AP_STATE_WIFI); + return ret; + } +#endif + ret = connman_enable_tethering(TECH_TYPE_WIFI, obj->ssid, obj->security_type, obj->key, obj->hide_mode); if (ret != MOBILE_AP_ERROR_NONE) { +#ifdef TIZEN_ARM + _wifi_softap_driverloader(FALSE); +#endif _deinit_tethering(obj); _mobileap_clear_state(MOBILE_AP_STATE_WIFI); return ret; @@ -414,6 +442,14 @@ mobile_ap_error_code_e _disable_wifi_tethering(TetheringObject *obj) _deinit_tethering(obj); _mobileap_clear_state(MOBILE_AP_STATE_WIFI); +#ifdef TIZEN_ARM + ret = _wifi_softap_driverloader(FALSE); + if (ret != MOBILE_AP_ERROR_NONE) { + ERR("unload softap driver is failed : %d\n", ret); + return ret; + } +#endif + DBG("_disable_wifi_tethering is done\n"); return ret; -- 2.7.4