From: hyunuktak Date: Tue, 14 Jun 2016 05:28:37 +0000 (+0900) Subject: Added wifi formware download for sprd board X-Git-Tag: submit/tizen/20160615.070331~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c20c1aee8daeda41204c4d637e9e839bff631048;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git Added wifi formware download for sprd board Change-Id: I53dfc0769c3b5c89ada2811b9a3f1f68cf04f0b2 Signed-off-by: hyunuktak --- diff --git a/CMakeLists.txt b/CMakeLists.txt index acd9b3a..237f2b5 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,10 @@ IF(TIZEN_TELEPHONY_ENABLE) ADD_DEFINITIONS(-DTIZEN_TELEPHONY_ENABLE) ENDIF(TIZEN_TELEPHONY_ENABLE) +IF(TIZEN_WLAN_BOARD_SPRD) + ADD_DEFINITIONS(-DTIZEN_WLAN_BOARD_SPRD) +ENDIF(TIZEN_WLAN_BOARD_SPRD) + IF(TIZEN_DEBUG_DISABLE) ADD_DEFINITIONS(-DTIZEN_DEBUG_DISABLE) SET(SRCS ${SRCS} src/wifi-dump.c) diff --git a/include/wifi.h b/include/wifi.h index f72d12e..7dfa070 100755 --- a/include/wifi.h +++ b/include/wifi.h @@ -37,6 +37,10 @@ extern "C" { void __netconfig_wifi_connect_reply(GObject *source_object, GAsyncResult *res, gpointer user_data); +#if defined TIZEN_WLAN_BOARD_SPRD +int wifi_firmware_download(void); +#endif + void wifi_object_create_and_init(void); void wifi_object_deinit(void); diff --git a/packaging/net-config.spec b/packaging/net-config.spec index c3b8b6b..3367a2a 100755 --- a/packaging/net-config.spec +++ b/packaging/net-config.spec @@ -1,6 +1,6 @@ Name: net-config Summary: TIZEN Network Configuration service -Version: 1.1.73 +Version: 1.1.74 Release: 2 Group: System/Network License: Apache-2.0 @@ -49,6 +49,7 @@ cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \ %endif %if "%{profile}" == "mobile" -DTIZEN_TELEPHONY_ENABLE=1 \ + -DTIZEN_WLAN_BOARD_SPRD=1 \ %else %if "%{profile}" == "tv" -DTIZEN_TV=1 \ diff --git a/src/main.c b/src/main.c index 3fa4aaf..a4605ed 100755 --- a/src/main.c +++ b/src/main.c @@ -125,6 +125,10 @@ int main(int argc, char *argv[]) /* For device policy manager */ netconfig_dpm_init(); +#if defined TIZEN_WLAN_BOARD_SPRD + wifi_firmware_download(); +#endif + /*In case no emulator, set the ETH0 Mac address*/ #if defined TIZEN_TV if (emulator_is_emulated() == FALSE) diff --git a/src/wifi-power.c b/src/wifi-power.c index 60752a4..47af55c 100755 --- a/src/wifi-power.c +++ b/src/wifi-power.c @@ -1094,6 +1094,10 @@ gboolean handle_load_driver(Wifi *wifi, return TRUE; } +#if defined TIZEN_WLAN_BOARD_SPRD + wifi_firmware_download(); +#endif + #if defined TIZEN_WEARABLE err = wifi_power_on_wearable(device_picker_test); #else diff --git a/src/wifi.c b/src/wifi.c index 0ccdadb..f0eeac9 100755 --- a/src/wifi.c +++ b/src/wifi.c @@ -40,6 +40,11 @@ #include "wifi-config.h" #include "wifi-tdls.h" +#if defined TIZEN_WLAN_BOARD_SPRD +#define SPRD_CP2_FIRMWARE_PATH "/usr/bin/cp2-downloader" +static int is_wifi_firmware_downloaded = FALSE; +#endif + static Wifi *wifi_object = NULL; static NetConnmanAgent *connman_agent_object = NULL; static WifiFirmware *wififirmware_object = NULL; @@ -62,7 +67,7 @@ static void _set_wifi_mac_address(void) gchar *mac_addr = NULL; mac_addr = vconf_get_str(VCONFKEY_WIFI_BSSID_ADDRESS); - if (mac_addr != NULL) { + if (mac_addr == NULL) { if (strlen(mac_addr) == 0) netconfig_set_mac_address_from_file(); g_free(mac_addr); @@ -95,6 +100,28 @@ void __netconfig_wifi_connect_reply(GObject *source_object, GAsyncResult *res, return; } +#if defined TIZEN_WLAN_BOARD_SPRD +int wifi_firmware_download(void) +{ + int rv = 0; + const char *path = SPRD_CP2_FIRMWARE_PATH; + char *const args[] = { SPRD_CP2_FIRMWARE_PATH, NULL }; + char *const envs[] = { NULL }; + + if (!is_wifi_firmware_downloaded) { + rv = netconfig_execute_file(path, args, envs); + if (rv < 0) { + DBG("wifi firmware download fails"); + return -EIO; + } + is_wifi_firmware_downloaded = TRUE; + DBG("wifi firmware download successes"); + } + + return 0; +} +#endif + void wifi_object_create_and_init(void) { DBG("Create wifi object.");