[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;
}