[Feature][T8STK-230]add uci check and reload uci

Only Configure: No
Affected branch: GSW3.0-No-Connman
Affected module: sdk-ready
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No

Change-Id: I01aaf7facbdbf4fbd5ea27c4bbe3faf41fceb24e
diff --git a/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp b/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
index 1edddfb..24ffcb4 100755
--- a/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
+++ b/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
@@ -13,6 +13,8 @@
 #include <arpa/inet.h>

 #include <errno.h>

 #include "lynq_timer.h"

+#include <include/lynq_uci.h>

+

 

 #define DEST_PORT 8088

 #define DSET_IP_ADDRESS  "127.0.0.1"

@@ -31,10 +33,12 @@
     char param[MAX_LEN];

 }lynq_client_t;

 

+int num = 0;

+

 static int get_md_sta(void)

 {

     FILE *fp;

-    char buffer[64]={};    

+    char buffer[64]={};

     fp = popen("cat /sys/kernel/ccci/boot","r");

     if(fp == NULL)

     {

@@ -358,10 +362,123 @@
 

 }

 

+void *check_uci(void * arg)

+{

+    int ret[6];

+    int result = 0;

+    int flag = 0;

+

+    char uci_0[]="/etc/config/lynq_uci";

+    char uci_1[]="/etc/config/lynq_uci_ro";

+    char uci_2[]="/etc/config/mdlog";

+    char uci_3[]="/etc/config/radio_property";

+    char uci_4[]="/etc/config/service";

+    char uci_5[]="/etc/config/usb";

+    RLOGD("start check uci\n");

+    while(num++ < 4)

+    {

+        RLOGD("@@@@@@@num=%d\n", num);

+        flag = 0;

+        ret[0] = system("uci show | grep \"lynq_uci.lynq_ril\"");

+        if(ret[0] != 0)

+        {

+            RLOGD("lynq_uci unload\n");

+            flag = 1;

+        }

+

+        ret[1] = system("uci show | grep \"^lynq_uci_ro\.\"");

+        if(ret[1] != 0)

+        {

+            RLOGD("lynq_uci_ro unload\n");

+            flag = 1;

+        }

+

+        ret[2] = system("uci show | grep \"^mdlog\.\"");

+        if(ret[2] != 0)

+        {

+            RLOGD("mdlog unload\n");

+            flag = 1;

+        }

+

+        ret[3] = system("uci show | grep \"^radio_property\.\"");

+        if(ret[3] != 0)

+        {

+            RLOGD("radio_property unload\n");

+            flag = 1;

+        }

+

+        ret[4] = system("uci show | grep \"^service\.\"");

+        if(ret[4] != 0)

+        {

+            RLOGD("service unload\n");

+            flag = 1;

+        }

+

+        ret[5] = system("uci show | grep \"^usb\.\"");

+        if(ret[5] != 0)

+        {

+            RLOGD("usb unload\n");

+            flag = 1;

+        }

+

+        RLOGD("flag=%d\n",flag);

+        if(flag != 0)

+        {

+            RLOGD("config reload\n");

+            result = chdir("/data_backup/");

+            result =system("tar -zxvf userdata.tar.gz -C /STATE/");

+            if(result!= 0)

+            {

+                RLOGD("cp config fail\n");

+            }

+            if(ret[0] != 0)

+            {

+                lynq_load_config(uci_0);

+                RLOGD("reload lynq_uci\n");

+                system("systemctl start autosuspend");

+            }

+            if(ret[1] != 0)

+            {

+                lynq_load_config(uci_1);

+                RLOGD("reload lynq_uci_ro\n");

+            }

+            if(ret[2] != 0)

+            {

+                lynq_load_config(uci_2);

+                RLOGD("reload mdlog\n");

+            }

+            if(ret[3] != 0)

+            {

+                lynq_load_config(uci_3);

+                RLOGD("reload radio_property\n");

+                system("systemctl restart mtkfusionrild");

+            }

+            if(ret[4] != 0)

+            {

+                lynq_load_config(uci_4);

+                RLOGD("reload service\n");

+            }

+            if(ret[5] != 0)

+            {

+                lynq_load_config(uci_5);

+                RLOGD("reload usb\n");

+            }

+        }

+        else

+        {

+            RLOGD("uci check success, exit check!\n");

+            break;

+        }

+        sleep(2);

+    }

+

+}

+

+

 

 void start_timer_request(void)

 {

-    pthread_t thid,thid_1;

+    pthread_t thid,thid_1,thid_2;

     pthread_attr_t a;

     pthread_attr_init(&a);

     pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);

@@ -377,6 +494,13 @@
         RLOGD("pthread_create error!!!");

         return;

     }

+

+    ret = pthread_create(&thid_2,NULL,check_uci,NULL);

+    if(ret != 0){

+        RLOGD("pthread_create error!!!");

+        return;

+    }

+    pthread_detach(thid_2);

     return;

 }