[Bugfix][API-853][GNSS]init deinit Adds fault tolerance

Change-Id: I1588f0ceadaa56e00fd5977d4d5c03b97c880123
(cherry picked from commit 3b578c4064a0bfad9f3bccf56fd90b663c2723fe)
diff --git a/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c b/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c
index 3565676..4d79d0f 100755
--- a/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c
+++ b/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c
@@ -42,6 +42,8 @@
  */

 static int g_lynq_gnss_init_flag = 0;

 

+static int g_lynq_gnss_calback_flag = 0;

+

 /**

  * @brief mark gnss raw meas state

  * 0: deinit state

@@ -56,6 +58,12 @@
         RLOGD("init twice is not allowed");

         return -1;

     }

+    if (g_lynq_gnss_calback_flag == 0)

+    {

+        RLOGD("Plz Reg callback before init");

+        return -1;

+    }

+    g_lynq_gnss_init_flag = 1;

     gpshal_set_gps_state_intent(GPSHAL_STATE_INIT);

     gpshal2mnl_gps_init();

     g_gpshal_ctx.mnl_retry_timer = mnldinf_init_timer(gpshal_mnl_retry_routine);

@@ -82,11 +90,17 @@
         RLOGD("For cbs save error\r\n");

         return -1;

     }

+    g_lynq_gnss_calback_flag = 1;

     return 0;

 }

 

 int lynq_gnss_deinit(void)

 {

+    if (g_lynq_gnss_init_flag == 0)

+    {

+        RLOGD("deinit twice is not allowed");

+        return -1;

+    }

     timer_t retry_timer;

     gpshal_set_gps_state_intent(GPSHAL_STATE_CLEANUP);

     gpshal2mnl_gps_cleanup();

@@ -101,6 +115,8 @@
         return -1;

     }

     RLOGD("timer de init end");

+    g_lynq_gnss_calback_flag = 0;

+    g_lynq_gnss_init_flag = 0;

     return 0;

 }