[Feature][T108][task-view-1878]add gsw_update_gnss_start and gsw_get_gnss_version_info

Only Configure:No
Affected branch:GSW_V1453
Affected module:fw_update
Is it affected on: GNSS
Self-test: Yes
Doc Update:No

Change-Id: Ic34cbfaa307a4c875c9ae00fc01f12af7523b566
diff --git a/mbtk/libgsw_lib/gsw_gnss_interface.c b/mbtk/libgsw_lib/gsw_gnss_interface.c
index a1c65a2..73b31d7 100755
--- a/mbtk/libgsw_lib/gsw_gnss_interface.c
+++ b/mbtk/libgsw_lib/gsw_gnss_interface.c
@@ -41,6 +41,7 @@
 

 int (*mbtk_gnss_eph_download)(int);

 int (*mbtk_gnss_eph_inject)(int);

+int (*mbtk_gnss_dl_ptr)(const char *, int);

 

 int gnss_freq = -1;

 GSW_GNSS_MODE_CONFIGURATION gnss_startmode = -1;

@@ -734,3 +735,67 @@
         return GSW_HAL_ERROR_GNSS_FAIL;

     }

 }

+

+

+/**

+* @brief Start install gnss software

+* @param  [in] char* file_path

+* @param  [out] NULL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+*/

+int gsw_update_gnss_start(const char *fw_path)

+{

+    int ret;

+    mbtk_gnss_dl_ptr = (int(*)(const char *, int))dlsym(dlHandle_gnss, "mbtk_gnss_dl");

+    if (!mbtk_gnss_dl_ptr) 

+    {

+        LOGE(GSW_GNSS,"[qser_gnss] dlsym failed for mbtk_gnss_dl: %s", dlerror());

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    ret = mbtk_gnss_dl_ptr(fw_path, QSER_GNSS_TIMEOUT);

+    if(ret != 0)

+    {

+        LOGE(GSW_GNSS,"[qser_gnss] Firmware download failed. ret = [%d]", ret);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+    return GSW_HAL_SUCCESS;

+}

+

+

+/**

+* @brief get gnss version info

+* @param  [in] NULL

+* @param  [out] char* version_info

+* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+*/

+int32_t gsw_get_gnss_version_info(char* version_info)

+{

+    if (!version_info)

+    {

+        LOGE(GSW_GNSS, "[GSW_gnss] version_info is NULL");

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    GSW_DEVICE dev_type = get_gnss_device_version();

+    switch (dev_type)

+    {

+        case HD8122:

+            strncpy(version_info, "HD8122", 255);

+            break;

+        case HD8040D:

+            strncpy(version_info, "HD8040D", 255);

+            break;

+        case NO_DEVICE:

+        default:

+            LOGE(GSW_GNSS, "[GSW_gnss] Failed to detect GNSS device");

+            return GSW_HAL_NORMAL_FAIL;

+    }

+

+    version_info[255] = '\0';

+    LOGE(GSW_GNSS, "[GSW_gnss] Retrieved GNSS version: %s", version_info);

+    return GSW_HAL_SUCCESS;

+}

+

+

+