Added wifi formware download for sprd board 71/74371/1
authorhyunuktak <hyunuk.tak@samsung.com>
Tue, 14 Jun 2016 05:28:37 +0000 (14:28 +0900)
committerhyunuktak <hyunuk.tak@samsung.com>
Tue, 14 Jun 2016 05:28:39 +0000 (14:28 +0900)
Change-Id: I53dfc0769c3b5c89ada2811b9a3f1f68cf04f0b2
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
CMakeLists.txt
include/wifi.h
packaging/net-config.spec
src/main.c
src/wifi-power.c
src/wifi.c

index acd9b3a..237f2b5 100755 (executable)
@@ -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)
index f72d12e..7dfa070 100755 (executable)
@@ -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);
 
index c3b8b6b..3367a2a 100755 (executable)
@@ -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 \
index 3fa4aaf..a4605ed 100755 (executable)
@@ -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)
index 60752a4..47af55c 100755 (executable)
@@ -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
index 0ccdadb..f0eeac9 100755 (executable)
 #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.");