blob: 252a13f35b810a17176bd9b2df693da1937f97fa [file] [log] [blame]
llb52a49f2022-09-05 00:23:18 -07001#include <stdio.h>
2#include <sys/types.h>
3#include <sys/socket.h>
4#include <arpa/inet.h>
5#include <string.h>
6#include <unistd.h>
7#include <binder/Parcel.h>
8#include <log/log.h>
9#include <cutils/jstring.h>
10#include <pthread.h>
11#include <sys/socket.h>
12#include <netinet/in.h>
13#include <arpa/inet.h>
14#include <errno.h>
15#include "lynq_timer.h"
jb.qia7620e72023-09-02 01:35:17 -070016#include <include/lynq_uci.h>
ss.liu1e11a652023-12-21 08:05:59 -080017
18#include <stdlib.h>
19#include <fcntl.h>
20#include <assert.h>
21
llb52a49f2022-09-05 00:23:18 -070022#define DEST_PORT 8088
23#define DSET_IP_ADDRESS "127.0.0.1"
ll892b6ef2022-09-08 06:45:34 -070024#define RIL_REQUEST_DEVICE_IDENTITY 98
llb52a49f2022-09-05 00:23:18 -070025#define MAX_LEN 1024
jb.qi3d1d9a42023-05-16 06:55:53 -070026#define TIMER 30
jb.qia1a08a92023-10-16 02:32:00 -070027#define LOG_UCI_FILE "lynq_uci"
28#define LOG_UCI_MODULE "debug_mode"
29
llb52a49f2022-09-05 00:23:18 -070030using ::android::Parcel;
31
32static pthread_mutex_t g_lynq_sim_sendto_mutex;
33
34typedef struct{
35 int uToken;
36 int request;
37 int paramLen;
38 char param[MAX_LEN];
39}lynq_client_t;
40
jb.qia7620e72023-09-02 01:35:17 -070041int num = 0;
42
llb52a49f2022-09-05 00:23:18 -070043static int get_md_sta(void)
44{
45 FILE *fp;
jb.qia7620e72023-09-02 01:35:17 -070046 char buffer[64]={};
llb52a49f2022-09-05 00:23:18 -070047 fp = popen("cat /sys/kernel/ccci/boot","r");
48 if(fp == NULL)
49 {
ll892b6ef2022-09-08 06:45:34 -070050 RLOGD("function %s fp is null\n", __FUNCTION__);
ll2f5e1c82022-09-07 00:01:43 -070051 return 0;
52 }
llb52a49f2022-09-05 00:23:18 -070053 fgets(buffer,sizeof(buffer),fp);
ll892b6ef2022-09-08 06:45:34 -070054 if(!strlen(buffer))
55 {
56 RLOGD("function %s line %d\n", __FUNCTION__, __LINE__);
57 pclose(fp);
58 return 0;
59 }
llb52a49f2022-09-05 00:23:18 -070060 if(buffer[4] == '4')
61 {
62 pclose(fp);
63 return 1;
64 }
ll892b6ef2022-09-08 06:45:34 -070065 RLOGD("function %s line %d\n", __FUNCTION__, __LINE__);
llb52a49f2022-09-05 00:23:18 -070066 pclose(fp);
67 return 0;
68}
69
70static int check_service(const char *service)
71{
72 FILE *fp;
73 char buffer[1024]={};
74 if(!strcmp(service, "/usr/sbin/mtkfusionrild"))
75 {
76 fp = popen("ps -ef|grep rild","r");
77 }
78 else if(!strcmp(service, "lynq-ril-service"))
79 {
80 fp = popen("ps -ef|grep ril-service","r");
81 }
82 if(fp == NULL)
83 {
ll892b6ef2022-09-08 06:45:34 -070084 RLOGD("function %s fp is null\n", __FUNCTION__);
llb52a49f2022-09-05 00:23:18 -070085 return 0;
86 }
87 while(NULL != fgets(buffer,sizeof(buffer),fp))
88 {
89 if(strstr(buffer,service))
90 {
91 pclose(fp);
ll88c42532023-02-01 15:34:52 +080092 RLOGD("check_service 1\n");
llb52a49f2022-09-05 00:23:18 -070093 return 1;
94 }
95 }
ll88c42532023-02-01 15:34:52 +080096 RLOGD("check_service 0\n");
llb52a49f2022-09-05 00:23:18 -070097 pclose(fp);
98 return 0;
99}
100
ss.liu1e11a652023-12-21 08:05:59 -0800101/**
102 * @brief find partition zhengshu for exzample 5.7M,get value 5
103 *
104 * @param arg
105 * @return
106 */
107static void removeSpaces(char* str)
108{
109 char* dest = str;
110 while (*str) {
111 if (*str != ' ') {
112 *dest++ = *str;
113 }
114 str++;
115 }
116 *dest = '\0';
117 return ;
118}
119
llb52a49f2022-09-05 00:23:18 -0700120/**
jb.qi3d1d9a42023-05-16 06:55:53 -0700121 * @brief 30s request imei
llb52a49f2022-09-05 00:23:18 -0700122 *
123 * @param arg
124 * @return void*
125 */
126void * timer_request_imei(void * arg)
127{
ss.liu1e11a652023-12-21 08:05:59 -0800128 FILE *fp1 = NULL;
129 char buf[8] = {0};
130 int ucivalue = 0;
131 int nread = 0;
llb52a49f2022-09-05 00:23:18 -0700132 int sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
133 if (-1 == sock_fd)
134 {
135 RLOGD("__FUNCTION__ %s create sock_fd failed %s\n", __FUNCTION__, strerror(errno));
136 /*set uci*/
137 /*socket abnormal*/
138 system("uci set lynq_uci.sdk_ready='3'");
139 /*set uci*/
140 return NULL;
141 }
lh8d290112023-10-22 20:53:06 -0700142 struct sockaddr_in liblynq_data_socket;
143 bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
144 //set this lib socket config
145 liblynq_data_socket.sin_family = AF_INET;
146 liblynq_data_socket.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
147 int ret = bind(sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
148 if (-1 == ret)
149 {
150 RLOGE("liblynq_data_socket bind fail,errno:%d",errno);
151 return NULL;
152 }
153
llb52a49f2022-09-05 00:23:18 -0700154 struct timeval timeOut;
155 timeOut.tv_sec = 3;//timeout time 3s
156 timeOut.tv_usec = 0;
157 if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
158 {
159 RLOGD("__FUNCTION__ %s time out setting failed %s\n", __FUNCTION__, strerror(errno));
160 /*set uci*/
161 /*socket abnormal*/
162 system("uci set lynq_uci.sdk_ready='3'");
163 /*set uci*/
164 return NULL;
165 }
jb.qi3d1d9a42023-05-16 06:55:53 -0700166 struct sockaddr_in addr_serv;
167 memset(&addr_serv, 0, sizeof(addr_serv));
168 addr_serv.sin_family = AF_INET;
169 addr_serv.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
170 addr_serv.sin_port = htons(DEST_PORT);
171 int len_addr_serv = sizeof(addr_serv);
llb52a49f2022-09-05 00:23:18 -0700172 int send_num = -1;
173 int recv_num = -1;
174 int resp_type = -1;
175 int request = -1;
176 int slot_id = -1;
llf0936572022-09-15 19:06:10 +0800177 int token = -1;
llb52a49f2022-09-05 00:23:18 -0700178 int res_error = -1;
179 lynq_client_t client_t;
180 char res_data[MAX_LEN] = {0};
ll892b6ef2022-09-08 06:45:34 -0700181 client_t.request = RIL_REQUEST_DEVICE_IDENTITY;
llb52a49f2022-09-05 00:23:18 -0700182 client_t.paramLen = 0;
183 client_t.uToken = 999;
184 memset(client_t.param, 0, sizeof(client_t.param));
185 while (1)
186 {
llb52a49f2022-09-05 00:23:18 -0700187 bzero(res_data, MAX_LEN);
188 pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
jb.qi3d1d9a42023-05-16 06:55:53 -0700189 send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
ll88c42532023-02-01 15:34:52 +0800190 RLOGD("send_num %d\n", send_num);
llb52a49f2022-09-05 00:23:18 -0700191 if(send_num == 0)
192 {
193 RLOGD("__FUNCTION__ %s Close to end %s\n", __FUNCTION__, strerror(errno));
194 //unknow
195 system("uci set lynq_uci.sdk_ready='4'");
196 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
197 continue;
198 }
199 if(send_num < 0)
200 {
201 RLOGD("__FUNCTION__ %s sendto error %s\n", __FUNCTION__, strerror(errno));
202 //unknow
203 system("uci set lynq_uci.sdk_ready='4'");
204 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
205 continue;
206 }
207 //get data msg
jb.qi3d1d9a42023-05-16 06:55:53 -0700208 recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
ll88c42532023-02-01 15:34:52 +0800209 RLOGD("recv_num %d\n", recv_num);
llb52a49f2022-09-05 00:23:18 -0700210 if(recv_num == 0)
211 {
212 RLOGD("__FUNCTION__ %s Close to end\n", __FUNCTION__);
213 //unknow
214 system("uci set lynq_uci.sdk_ready='4'");
215 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
lhcd37b7a2023-12-05 18:54:33 +0800216 continue;;
llb52a49f2022-09-05 00:23:18 -0700217 }
218 if(recv_num == -1 && errno == EAGAIN)
219 {
220 RLOGD("__FUNCTION__ %srecvfrom fail because timeout\n", __FUNCTION__);
221 /*set uci*/
222 if(!get_md_sta())
223 {
224 system("uci set lynq_uci.sdk_ready='1'");
225 }
226 else
227 {
228 if(check_service("/usr/sbin/mtkfusionrild"))//rild work
229 {
230 if(!check_service("lynq-ril-service"))//not find,must be socket error
231 {
232 system("uci set lynq_uci.sdk_ready='3'");
233 }
234 else
235 {
236 //unknow error
237 system("uci set lynq_uci.sdk_ready='4'");
238 }
239
240 }
241 else//rild no work
242 {
243 //unknow
244 system("uci set lynq_uci.sdk_ready='4'");
245 }
246 }
247 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
lhcd37b7a2023-12-05 18:54:33 +0800248 continue;;
llb52a49f2022-09-05 00:23:18 -0700249 }
250 if(recv_num < 0)
251 {
252 RLOGD("__FUNCTION__ %srecvfrom fail %s\n", __FUNCTION__, strerror(errno));
253 //unknow
254 system("uci set lynq_uci.sdk_ready='4'");
255 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
lhcd37b7a2023-12-05 18:54:33 +0800256 continue;;
llb52a49f2022-09-05 00:23:18 -0700257 }
258 Parcel p;
259 p.setData((uint8_t *)res_data,sizeof(char)*recv_num);
260 p.setDataPosition(0);
261 if(p.dataAvail() > 0)
262 {
263 p.readInt32(&resp_type);
llf0936572022-09-15 19:06:10 +0800264 p.readInt32(&token);
llb52a49f2022-09-05 00:23:18 -0700265 p.readInt32(&request);
266 p.readInt32(&slot_id);
267 p.readInt32(&res_error);
268 }
269 /*judge the res_error*/
270 if(!res_error)
271 {
ss.liu1e11a652023-12-21 08:05:59 -0800272 fp1 = popen("uci get lynq_uci.sdk_ready","r");
273 if(fp1 == NULL)
274 {
275 RLOGD("Failed to run uci get lynq_uci.sdk_ready\n");
276 continue;
277 }
278 memset(buf, 0, sizeof(buf));
279 nread = fread(buf,1,8,fp1);
280 pclose(fp1);
281 ucivalue = atoi(buf);
282
283 if((0 != ucivalue)&&(5 != ucivalue)&&(6 != ucivalue))
284 {
285 system("uci set lynq_uci.sdk_ready='0'");
286 }
llb52a49f2022-09-05 00:23:18 -0700287 }
288 else
289 {
ll892b6ef2022-09-08 06:45:34 -0700290 system("uci set lynq_uci.sdk_ready='2'"); //Md configurations are inconsistent with AP configurations
llb52a49f2022-09-05 00:23:18 -0700291 }
292 RLOGD("__FUNCTION__ %s res_error %d\n", __FUNCTION__, res_error);
293 /*judge the res_error*/
294 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
ll2f5e1c82022-09-07 00:01:43 -0700295 sleep(TIMER);
llb52a49f2022-09-05 00:23:18 -0700296 }
297 return NULL;
298}
299
300
qjbd37f0902023-08-04 04:08:52 -0700301void delete_enter(char data[])
302{
303 char *find = strchr(data, '\n');
304 if(find)
305 *find = '\0';
306 return ;
qjbdeea8452023-08-03 06:35:43 -0700307}
308
jb.qia1a08a92023-10-16 02:32:00 -0700309
qjbdeea8452023-08-03 06:35:43 -0700310void *check(void * arg)
311{
312
313 char pid[200][8];
qjbd37f0902023-08-04 04:08:52 -0700314 char ffd[200][4];
qjbdeea8452023-08-03 06:35:43 -0700315 char buf[64];
316 char check_time[4];
317 char timebuf[32];
qjbd37f0902023-08-04 04:08:52 -0700318 int num = 1;
319 int i=0;
qjbdeea8452023-08-03 06:35:43 -0700320 int j;
321 FILE *fp,*fp_1;
322 int ret;
323
324 RLOGD("check cpu/pid/interrupts/fd!!!\n");
qjbd37f0902023-08-04 04:08:52 -0700325 system("mkdir /media/check_file");
qjbdeea8452023-08-03 06:35:43 -0700326 system("touch /media/check_time");
327 fp_1 = popen("cat /media/check_time","r");
328 if(fgets(check_time, 4, fp_1) != NULL)
329 {
330 num = atoi(check_time);
331 }
332 pclose(fp_1);
333 while(1)
334 {
335 i = 0;
336 system("date >>/media/check_file/cpu_moniter.txt");
337 ret = system("top -b |head -n 25 >>/media/check_file/cpu_moniter.txt");
338 RLOGD("cpu ret %d", ret);
339 system("date >>/media/check_file/inter_moniter.txt");
qjbd37f0902023-08-04 04:08:52 -0700340 ret = system("cat /proc/interrupts |grep -v \": 0 0\" >>/media/check_file/inter_moniter.txt");
qjbdeea8452023-08-03 06:35:43 -0700341 RLOGD("interrupts ret %d", ret);
jb.qibad810e2023-08-29 03:55:18 -0700342
qjbdeea8452023-08-03 06:35:43 -0700343 system("date >>/media/check_file/pid_moniter.txt");
344 ret = system("ps -eo \"%p %a\" | grep -v \"\\[\" >>/media/check_file/pid_moniter.txt");
345 RLOGD("pid ret %d", ret);
qjbdeea8452023-08-03 06:35:43 -0700346
jb.qibad810e2023-08-29 03:55:18 -0700347 system("date >>/media/check_file/meminfo_moniter.txt");
348 ret = system("cat /proc/meminfo >>/media/check_file/meminfo_moniter.txt");
349 RLOGD("meminfo ret %d", ret);
350
351 system("date >>/media/check_file/buddyinfo_moniter.txt");
352 ret = system("cat /proc/buddyinfo >>/media/check_file/buddyinfo_moniter.txt");
353 RLOGD("buddyinfo ret %d", ret);
354
355 system("date >>/media/check_file/ps_auxw_moniter.txt");
356 ret = system("ps -auxw|grep -v \"0.0 0.0\"|grep -v \"0.1 0.0\"|grep -v \"0.0 0.1\" >>/media/check_file/ps_auxw_moniter.txt");
357 RLOGD("ps_auxw ret %d", ret);
358
359 system("date >>/media/check_file/cur_freq_moniter.txt");
360 ret = system("cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq >>/media/check_file/cur_freq_moniter.txt");
361 RLOGD("cur_freq ret %d", ret);
362
363 system("date >>/media/check_file/available_frequencies_moniter.txt");
364 ret = system("cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies >>/media/check_file/available_frequencies_moniter.txt");
365 RLOGD("available_frequencies ret %d", ret);
366
367 system("date >>/media/check_file/fd_moniter.txt");
qjbdeea8452023-08-03 06:35:43 -0700368 fp = popen("ps -eo \"%p %a\" | grep -v \"\\[\"|awk '{print $1}'","r");
369 while(fgets(pid[i], 8, fp) != NULL)
370 {
371 delete_enter(pid[i]);
372 i++;
373 }
374 pclose(fp);
375
376 for(j=1;j<i;j++)
377 {
378 sprintf(buf, "ls /proc/%s/fd | wc -l", pid[j]);
379 fp = popen(buf, "r");
380 fgets(ffd[j], 4, fp);
381 sprintf(buf,"echo \"pid: %s, fd_num: %s\" >>/media/check_file/fd_moniter.txt",pid[j], ffd[j]);
382 system(buf);
383 pclose(fp);
384 }
qjbd37f0902023-08-04 04:08:52 -0700385
jb.qibad810e2023-08-29 03:55:18 -0700386 if(num > 228)
qjbd37f0902023-08-04 04:08:52 -0700387 {
388 system("cp /media/check_file/cpu_moniter.txt /media/check_file/cpu_moniter_1.txt");
jb.qibad810e2023-08-29 03:55:18 -0700389 system("cp /media/check_file/inter_moniter.txt /media/check_file/inter_moniter_1.txt");
qjbd37f0902023-08-04 04:08:52 -0700390 system("cp /media/check_file/pid_moniter.txt /media/check_file/pid_moniter_1.txt");
391 system("cp /media/check_file/fd_moniter.txt /media/check_file/fd_moniter_1.txt");
jb.qibad810e2023-08-29 03:55:18 -0700392 system("cp /media/check_file/fd_moniter.txt /media/check_file/meminfo_moniter_1.txt");
393 system("cp /media/check_file/fd_moniter.txt /media/check_file/buddyinfo_moniter_1.txt");
394 system("cp /media/check_file/fd_moniter.txt /media/check_file/ps_auxw_moniter_1.txt");
395 system("cp /media/check_file/fd_moniter.txt /media/check_file/cur_freq_moniter_1.txt");
396 system("cp /media/check_file/fd_moniter.txt /media/check_file/available_frequencies_moniter_1.txt");
397
398
qjbd37f0902023-08-04 04:08:52 -0700399 system("rm -rf /media/check_file/cpu_moniter.txt");
400 system("rm -rf /media/check_file/inter_moniter.txt");
401 system("rm -rf /media/check_file/pid_moniter.txt");
402 system("rm -rf /media/check_file/fd_moniter.txt");
jb.qibad810e2023-08-29 03:55:18 -0700403 system("rm -rf /media/check_file/meminfo_moniter.txt");
404 system("rm -rf /media/check_file/buddyinfo_moniter.txt");
405 system("rm -rf /media/check_file/ps_auxw_moniter.txt");
406 system("rm -rf /media/check_file/cur_freq_moniter.txt");
407 system("rm -rf /media/check_file/available_frequencies_moniter.txt");
408
qjbd37f0902023-08-04 04:08:52 -0700409 num = 0;
410 }
qjbdeea8452023-08-03 06:35:43 -0700411 num++;
412 sprintf(timebuf, "echo \"%d\" >/media/check_time", num);
413 ret = system(timebuf);
qjbdeea8452023-08-03 06:35:43 -0700414 sleep(300);
qjbdeea8452023-08-03 06:35:43 -0700415 }
jb.qia1a08a92023-10-16 02:32:00 -0700416 return NULL;
qjbdeea8452023-08-03 06:35:43 -0700417
qjbdeea8452023-08-03 06:35:43 -0700418}
jb.qia1a08a92023-10-16 02:32:00 -0700419
qjbdeea8452023-08-03 06:35:43 -0700420
jb.qia7620e72023-09-02 01:35:17 -0700421void *check_uci(void * arg)
422{
423 int ret[6];
424 int result = 0;
425 int flag = 0;
426
427 char uci_0[]="/etc/config/lynq_uci";
428 char uci_1[]="/etc/config/lynq_uci_ro";
429 char uci_2[]="/etc/config/mdlog";
430 char uci_3[]="/etc/config/radio_property";
431 char uci_4[]="/etc/config/service";
432 char uci_5[]="/etc/config/usb";
433 RLOGD("start check uci\n");
434 while(num++ < 4)
435 {
436 RLOGD("@@@@@@@num=%d\n", num);
437 flag = 0;
jb.qi23d0d4b2023-11-20 03:25:08 -0800438 ret[0] = system("uci show | grep \"lynq_uci.lynq_ril\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700439 if(ret[0] != 0)
440 {
441 RLOGD("lynq_uci unload\n");
442 flag = 1;
443 }
444
jb.qi23d0d4b2023-11-20 03:25:08 -0800445 ret[1] = system("uci show | grep \"^lynq_uci_ro\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700446 if(ret[1] != 0)
447 {
448 RLOGD("lynq_uci_ro unload\n");
449 flag = 1;
450 }
451
452 ret[2] = system("uci show | grep \"^mdlog\.\"");
453 if(ret[2] != 0)
454 {
455 RLOGD("mdlog unload\n");
456 flag = 1;
457 }
458
jb.qi23d0d4b2023-11-20 03:25:08 -0800459 ret[3] = system("uci show | grep \"^radio_property\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700460 if(ret[3] != 0)
461 {
462 RLOGD("radio_property unload\n");
463 flag = 1;
464 }
465
jb.qi23d0d4b2023-11-20 03:25:08 -0800466 ret[4] = system("uci show | grep \"^service\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700467 if(ret[4] != 0)
468 {
469 RLOGD("service unload\n");
470 flag = 1;
471 }
472
jb.qi23d0d4b2023-11-20 03:25:08 -0800473 ret[5] = system("uci show | grep \"^usb\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700474 if(ret[5] != 0)
475 {
476 RLOGD("usb unload\n");
477 flag = 1;
478 }
479
480 RLOGD("flag=%d\n",flag);
481 if(flag != 0)
482 {
483 RLOGD("config reload\n");
484 result = chdir("/data_backup/");
jb.qi23d0d4b2023-11-20 03:25:08 -0800485 result =system("tar -zxvf userdata.tar.gz -C /STATE/ >/dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700486 if(result!= 0)
487 {
488 RLOGD("cp config fail\n");
489 }
490 if(ret[0] != 0)
491 {
492 lynq_load_config(uci_0);
493 RLOGD("reload lynq_uci\n");
494 system("systemctl start autosuspend");
495 }
496 if(ret[1] != 0)
497 {
498 lynq_load_config(uci_1);
499 RLOGD("reload lynq_uci_ro\n");
500 }
501 if(ret[2] != 0)
502 {
503 lynq_load_config(uci_2);
504 RLOGD("reload mdlog\n");
505 }
506 if(ret[3] != 0)
507 {
508 lynq_load_config(uci_3);
509 RLOGD("reload radio_property\n");
510 system("systemctl restart mtkfusionrild");
511 }
512 if(ret[4] != 0)
513 {
514 lynq_load_config(uci_4);
515 RLOGD("reload service\n");
516 }
517 if(ret[5] != 0)
518 {
519 lynq_load_config(uci_5);
520 RLOGD("reload usb\n");
521 }
522 }
523 else
524 {
525 RLOGD("uci check success, exit check!\n");
526 break;
527 }
528 sleep(2);
529 }
jb.qia1a08a92023-10-16 02:32:00 -0700530 return NULL;
jb.qia7620e72023-09-02 01:35:17 -0700531}
ss.liu1e11a652023-12-21 08:05:59 -0800532
533static void *delete_partition(void *arg)
534{
535 char buf[64] = {0};
536 char tmp[64] = {0};
537 char ucibuf[8] = {0};
538 FILE *fp = NULL;
539 FILE *fp1 = NULL;
540 char *result1 = NULL;
541 int nread = 0;
542 int nnread = 0;
543 int count1 = 0;
544 int q = 22;
545 int qWarnValue = 10;
546 int ubisize = 0;
547 int uciValue = 0;
548
549 while(1)
550 {
551
552 sleep(300);
553
554 fp = popen("df -lh| grep '/data$' | awk '{print $3}'","r");
555
556 if(fp == NULL)
557 {
558 RLOGD("Failed to run command\n");
559 continue;
560 }
561
562 memset(buf, 0, sizeof(buf));
563 nread = fread(buf,1,64,fp);
564
565 if(nread != 64)
566 {
567 pclose(fp);
568 RLOGD("Read file failed!\n");
569 continue;
570 }
571 if (pclose(fp) == -1)
572 {
573 RLOGD("close fp file failed!\n");
574 continue;
575 }
576
577 removeSpaces(buf);
578
579 result1 = strchr(buf, 'M');
580
581 if(result1 != NULL)
582 {
583 count1 = result1 - buf;
584
585 memset(tmp,0,sizeof(tmp));
586
587 if(strncpy(tmp,buf,count1) == NULL)
588 {
589 RLOGD("copy buf failed!\n");
590 continue;
591 }
592 else
593 {
594 RLOGD("copy buf success!\n");
595 ubisize = atoi(tmp);
596 }
597
598 if((ubisize > qWarnValue)&&(ubisize < q))
599 {
600 fp1 = popen("uci get lynq_uci.sdk_ready","r");
601 if(fp1 == NULL)
602 {
603 RLOGD("Failed to run uci get lynq_uci.sdk_ready\n");
604 continue;
605 }
606
607 memset(ucibuf, 0, sizeof(ucibuf));
608 nnread = fread(ucibuf,1,8,fp1);
609 pclose(fp1);
610 uciValue = atoi(ucibuf);
611
612 if(0x0 == uciValue)
613 {
614 system("uci set lynq_uci.sdk_ready='5'");
615 RLOGD(">set ready 5,userdata size is %d M\n",ubisize);
616 }
617 else
618 {
619 RLOGD("userdata size is %d M,uciValue is %d\n",ubisize,uciValue);
620 }
621 }
622 else if(ubisize >= q)
623 {
624 fp1 = popen("uci get lynq_uci.sdk_ready","r");
625 if(fp1 == NULL)
626 {
627 RLOGD("Failed to run uci get lynq_uci.sdk_ready\n");
628 continue;
629 }
630
631 memset(ucibuf, 0, sizeof(ucibuf));
632 nnread = fread(ucibuf,1,8,fp1);
633 pclose(fp1);
634 uciValue = atoi(ucibuf);
635
636 if(0x0 == uciValue)
637 {
638 RLOGD(">set ready 6,userdata size is %d M\n",ubisize);
639 system("uci set lynq_uci.sdk_ready='6'");
640 }
641 else
642 {
643 RLOGD("userdata size is %d M,uciValue is %d\n",ubisize,uciValue);
644 }
645 }
646 else
647 {
648 RLOGD("userdata size is %d M\n",ubisize);
649 }
650
651 }
652 else
653 {
654 RLOGD("userdata partition size is kb!\n");
655 }
656
657
658 }
659
660return (void *)0;
661}
jb.qibad810e2023-08-29 03:55:18 -0700662
llb52a49f2022-09-05 00:23:18 -0700663void start_timer_request(void)
664{
ss.liu1e11a652023-12-21 08:05:59 -0800665 pthread_t thid,thid_1,thid_2,thid_3;
llb52a49f2022-09-05 00:23:18 -0700666 pthread_attr_t a;
667 pthread_attr_init(&a);
668 pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);
qjbdeea8452023-08-03 06:35:43 -0700669
jb.qia1a08a92023-10-16 02:32:00 -0700670 char tmp[20];
671 int debug_mode;
672 int ret;
ss.liu1e11a652023-12-21 08:05:59 -0800673 int ret3;
jb.qia1a08a92023-10-16 02:32:00 -0700674
675 ret = pthread_create(&thid, &a, timer_request_imei, NULL);
llb52a49f2022-09-05 00:23:18 -0700676 if(ret != 0){
677 RLOGD("pthread_create error!!!");
678 return;
679 }
jb.qieb2cc522023-08-18 01:45:07 +0800680 sleep(20);
jb.qia1a08a92023-10-16 02:32:00 -0700681 ret = lynq_get_value(LOG_UCI_FILE, LOG_UCI_MODULE, "sysinfo_debug_status", tmp);
682 RLOGD("ret =%d, tmp is %s\n", ret, tmp);
683 debug_mode=atoi(tmp);
684 RLOGD("debug_mode is %d!!!\n", debug_mode);
685 if(debug_mode == 1)
686 {
687 RLOGD("debug_mode is 1, pthread_create start!!!\n");
688 ret = pthread_create(&thid_1, NULL, check, NULL);
689 if(ret != 0)
690 {
691 RLOGD("pthread_create error!!!");
692 return;
693 }
694
qjbdeea8452023-08-03 06:35:43 -0700695 }
ss.liu1e11a652023-12-21 08:05:59 -0800696
jb.qia7620e72023-09-02 01:35:17 -0700697 ret = pthread_create(&thid_2,NULL,check_uci,NULL);
698 if(ret != 0){
699 RLOGD("pthread_create error!!!");
700 return;
701 }
702 pthread_detach(thid_2);
ss.liu1e11a652023-12-21 08:05:59 -0800703
704 sleep(1);
705
706 ret3 = pthread_create(&thid_3,NULL,delete_partition,NULL);
707 if(ret3 != 0)
708 {
709 RLOGD("pthread_create error!!!");
710 return;
711 }
712
llb52a49f2022-09-05 00:23:18 -0700713 return;
714}
715