[Feature][T8TSK-247][SDK-READY]add uci check

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

Change-Id: I0f40d2e964067bf218f5cb3ad4dedc26291e6bbd
diff --git a/framework/lynq-sdk-ready/src/main.cpp b/framework/lynq-sdk-ready/src/main.cpp
index 9c8ee18..029c669 100755
--- a/framework/lynq-sdk-ready/src/main.cpp
+++ b/framework/lynq-sdk-ready/src/main.cpp
@@ -10,8 +10,6 @@
 extern "C" {
 #endif
 
-#undef LOG_TAG
-#define LOG_TAG "LYNQ_SDK_READY"
 
 int main(void){
     RLOGD("lynq-sdk-ready begin");
diff --git a/framework/lynq-sdk-ready/src/makefile b/framework/lynq-sdk-ready/src/makefile
index 9b37640..c1638ae 100755
--- a/framework/lynq-sdk-ready/src/makefile
+++ b/framework/lynq-sdk-ready/src/makefile
@@ -17,6 +17,7 @@
 $(warning ################# LEI ROOT: $(ROOT),includedir:$(includedir),LOCAL_PATH:$(LOCAL_PATH))
 LOCAL_C_INCLUDES = \
   -I. \
+  -I./include \
   -I$(LOCAL_PATH)/timer \
   -I$(LOCAL_PATH) \
   -I$(ROOT)$(includedir)/ \
@@ -33,6 +34,7 @@
     -lutils \
     -lbinder \
     -lpthread \
+    -llynq-uci \
 
 LOCAL_SRC_FILES_CPP = $(wildcard *.cpp timer/*.cpp)
 LOCAL_SRC_FILES_C = $(wildcard *.c)
diff --git a/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp b/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
index f8e2a6a..f4fd96a 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"

@@ -307,7 +309,7 @@
         if(num > 60)

         {

             system("cp /media/check_file/cpu_moniter.txt /media/check_file/cpu_moniter_1.txt");

-            system("cp /media/check_file/inter_moniter.txt check_file/inter_moniter_1.txt");

+            system("cp /media/check_file/inter_moniter.txt /media/check_file/inter_moniter_1.txt");

             system("cp /media/check_file/pid_moniter.txt /media/check_file/pid_moniter_1.txt");

             system("cp /media/check_file/fd_moniter.txt /media/check_file/fd_moniter_1.txt");

             system("rm -rf /media/check_file/cpu_moniter.txt");

@@ -324,9 +326,122 @@
 

 }

 

+void *check_uci(void * arg)

+{

+    int ret[6];

+    int result = 0;

+    int flag = 0;

+    int num = 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 < 3)

+    {

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

+        flag = 0;

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

+        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;

+        }

+        num++;

+    }

+

+}

+

+

 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);

@@ -336,12 +451,18 @@
         RLOGD("pthread_create error!!!");

         return;

     }

-    sleep(20);

+    sleep(10);

     ret = pthread_create(&thid_1, NULL, check, NULL);

     if(ret != 0){

         RLOGD("pthread_create error!!!");

         return;

     }

+

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

+    if(ret != 0){

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

+        return;

+    }

     return;

 }

 

diff --git a/framework/lynq-sdk-ready/src/timer/lynq_timer.h b/framework/lynq-sdk-ready/src/timer/lynq_timer.h
index c699874..5356461 100755
--- a/framework/lynq-sdk-ready/src/timer/lynq_timer.h
+++ b/framework/lynq-sdk-ready/src/timer/lynq_timer.h
@@ -6,9 +6,10 @@
 #endif

 

 void start_timer_request(void);

+#define LOG_TAG "LYNQ_SDK_READY"

 

 #ifdef __cplusplus

 }

 #endif

 

-#endif
\ No newline at end of file
+#endif

diff --git a/lib/liblynq-uci/include/lynq_uci.h b/lib/liblynq-uci/include/lynq_uci.h
old mode 100644
new mode 100755
index 5ce7a63..904ff2b
--- a/lib/liblynq-uci/include/lynq_uci.h
+++ b/lib/liblynq-uci/include/lynq_uci.h
@@ -29,6 +29,8 @@
 

 int lynq_get_value(char *file, char *section, char *key, char *tmp);

 

+int lynq_load_config(char *filename);

+

 #ifdef __cplusplus

 }

 #endif

diff --git a/lib/liblynq-uci/makefile b/lib/liblynq-uci/makefile
old mode 100644
new mode 100755
index 87122ee..aecca27
--- a/lib/liblynq-uci/makefile
+++ b/lib/liblynq-uci/makefile
@@ -42,13 +42,15 @@
 LOCAL_C_INCLUDES = \
   -I. \
   -I$(LOCAL_PATH)/include \
-
+  -I$(ROOT)$(includedir)/logger \
 
 LOCAL_LIBS := \
     -L. \
     -ldl \
     -lpthread \
     -luci \
+    -llog \
+
 
 SOURCES = $(wildcard *.c wildcard *.h src/*.c)
 
diff --git a/lib/liblynq-uci/src/lynq_uci.c b/lib/liblynq-uci/src/lynq_uci.c
old mode 100644
new mode 100755
index 04b8f97..4f5f69a
--- a/lib/liblynq-uci/src/lynq_uci.c
+++ b/lib/liblynq-uci/src/lynq_uci.c
@@ -2,6 +2,7 @@
 #include <stdlib.h>

 #include <string.h>

 #include <lynq_uci.h>

+#include <log/log.h>

 

 

 int lynq_del(char *option)

@@ -194,3 +195,25 @@
 	ret = lynq_uci_get(buf, tmp);

 	return ret;

 }

+

+int lynq_load_config(char *filename)

+{

+    struct uci_context * ctx = NULL;

+    struct uci_element *e;

+    struct uci_package * pkg = NULL;

+    ctx = uci_alloc_context();

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

+    if (UCI_OK != uci_load(ctx, filename, &pkg))

+    {

+        RLOGD("uci config fail !!!\n");

+        uci_free_context(ctx);

+        ctx = NULL;

+        return -1;

+    }

+    uci_unload(ctx, pkg);

+    uci_free_context(ctx);

+    RLOGD("uci config success !!!\n");

+    ctx = NULL;

+    return 0;

+}

+