[Feature][T108][system][task-view-1640]optimize sdk ready

Only Configure: No
Affected branch: GSW_V1453
Affected module: SDK_READY
Is it affected on IC: only ASR
Self-test: yes
Doc Update: no

Change-Id: Id066fd83b37cda93a0c3534a381d809c8fe316de
diff --git a/mbtk/mbtk_sdk_ready/src/main.c b/mbtk/mbtk_sdk_ready/src/main.c
index d571f15..c1ab041 100755
--- a/mbtk/mbtk_sdk_ready/src/main.c
+++ b/mbtk/mbtk_sdk_ready/src/main.c
@@ -15,7 +15,10 @@
 
 #define MBTK_RESULT_FAIL -1
 #define MBTK_RESULT_SUCCESS 0
-
+#define BOOT_CHECK_TIME 200       //200ms
+#define NORMAL_CHECK_TIME 30000   //30s
+#define PERIOD_LEN 10
+int in_period[PERIOD_LEN] = {100,100,200,200,500,500,500,500,2000,5000};//ms
 typedef enum{
     MBTK_READY_INIT = -1,
     MBTK_READY_SUCCESS,
@@ -61,15 +64,23 @@
     return MBTK_READY_SUCCESS;
 }
 #endif
-
+long get_uptime()
+{
+    struct timespec start_time;
+    clock_gettime(CLOCK_MONOTONIC, &start_time);
+    return start_time.tv_sec;
+}
 static void* sdk_ready_check_pthread(void *arg)
 {
     UNUSED(arg);
     LOGE("[SDK_READY] sdk_ready_check_pthread entry.");
-
     mbtk_ready_status_type now_ready_status = MBTK_READY_INIT;
     char buf[2] = {0};
+    buf[0] = '0' + now_ready_status;
+    property_set("persist.mbtk.sdk.state", buf);// init state value
     int sleep_time = 30;
+    long uptime = 0;
+    int count = 0;
     while(1)
     {
         now_ready_status = modem_check();
@@ -79,17 +90,41 @@
             property_set("persist.mbtk.sdk.state", buf);
             mbtk_ready_status = now_ready_status;
         }
-
-        if(now_ready_status != MBTK_READY_SUCCESS)
+        uptime = get_uptime();
+        if(uptime < 50)//in 50s
         {
-            sleep_time += 2;
+            if(now_ready_status != MBTK_READY_SUCCESS)
+            {
+                sleep_time = BOOT_CHECK_TIME;
+            }
+            else
+            {
+               sleep_time = NORMAL_CHECK_TIME;
+            }
         }
         else
         {
-            sleep_time = 30;
-        }
+            if(now_ready_status != MBTK_READY_SUCCESS)
+            {
+                if(count < PERIOD_LEN)
+                {
+                    sleep_time = in_period[count];
+                }
+                else
+                {
+                    count = 0;
+                    sleep_time = in_period[count];
+                }
+                count++;
+            }
+            else
+            {
+                sleep_time = NORMAL_CHECK_TIME;
+                count = 0;
+            }
 
-        sleep(sleep_time);
+        }
+        usleep(sleep_time*1000);
     }
     LOGE("[SDK_READY] sdk_ready_check_pthread exit.");
     return NULL;
@@ -137,4 +172,4 @@
     LOGE("[SDK_READY]!!!mbtk_sdk_ready exit!!!");
     return MBTK_RESULT_SUCCESS;
 }
-#endif
\ No newline at end of file
+#endif