blob: 5cd9cfc19cc1fc26cd497fb2b84e96d86dea69cb [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>
17
llb52a49f2022-09-05 00:23:18 -070018
19#define DEST_PORT 8088
20#define DSET_IP_ADDRESS "127.0.0.1"
ll892b6ef2022-09-08 06:45:34 -070021#define RIL_REQUEST_DEVICE_IDENTITY 98
llb52a49f2022-09-05 00:23:18 -070022#define MAX_LEN 1024
jb.qi3d1d9a42023-05-16 06:55:53 -070023#define TIMER 30
llb52a49f2022-09-05 00:23:18 -070024
jb.qia1a08a92023-10-16 02:32:00 -070025
26#define LOG_UCI_FILE "lynq_uci"
27#define LOG_UCI_MODULE "debug_mode"
28
llb52a49f2022-09-05 00:23:18 -070029using ::android::Parcel;
30
31static pthread_mutex_t g_lynq_sim_sendto_mutex;
32
33typedef struct{
34 int uToken;
35 int request;
36 int paramLen;
37 char param[MAX_LEN];
38}lynq_client_t;
39
jb.qia7620e72023-09-02 01:35:17 -070040int num = 0;
41
llb52a49f2022-09-05 00:23:18 -070042static int get_md_sta(void)
43{
44 FILE *fp;
jb.qia7620e72023-09-02 01:35:17 -070045 char buffer[64]={};
llb52a49f2022-09-05 00:23:18 -070046 fp = popen("cat /sys/kernel/ccci/boot","r");
47 if(fp == NULL)
48 {
ll892b6ef2022-09-08 06:45:34 -070049 RLOGD("function %s fp is null\n", __FUNCTION__);
ll2f5e1c82022-09-07 00:01:43 -070050 return 0;
51 }
llb52a49f2022-09-05 00:23:18 -070052 fgets(buffer,sizeof(buffer),fp);
ll892b6ef2022-09-08 06:45:34 -070053 if(!strlen(buffer))
54 {
55 RLOGD("function %s line %d\n", __FUNCTION__, __LINE__);
56 pclose(fp);
57 return 0;
58 }
llb52a49f2022-09-05 00:23:18 -070059 if(buffer[4] == '4')
60 {
61 pclose(fp);
62 return 1;
63 }
ll892b6ef2022-09-08 06:45:34 -070064 RLOGD("function %s line %d\n", __FUNCTION__, __LINE__);
llb52a49f2022-09-05 00:23:18 -070065 pclose(fp);
66 return 0;
67}
68
69static int check_service(const char *service)
70{
71 FILE *fp;
72 char buffer[1024]={};
73 if(!strcmp(service, "/usr/sbin/mtkfusionrild"))
74 {
75 fp = popen("ps -ef|grep rild","r");
76 }
77 else if(!strcmp(service, "lynq-ril-service"))
78 {
79 fp = popen("ps -ef|grep ril-service","r");
80 }
81 if(fp == NULL)
82 {
ll892b6ef2022-09-08 06:45:34 -070083 RLOGD("function %s fp is null\n", __FUNCTION__);
llb52a49f2022-09-05 00:23:18 -070084 return 0;
85 }
86 while(NULL != fgets(buffer,sizeof(buffer),fp))
87 {
88 if(strstr(buffer,service))
89 {
90 pclose(fp);
ll88c42532023-02-01 15:34:52 +080091 RLOGD("check_service 1\n");
llb52a49f2022-09-05 00:23:18 -070092 return 1;
93 }
94 }
ll88c42532023-02-01 15:34:52 +080095 RLOGD("check_service 0\n");
llb52a49f2022-09-05 00:23:18 -070096 pclose(fp);
97 return 0;
98}
99
jb.qi837fe4c2023-12-01 22:51:10 -0800100
llb52a49f2022-09-05 00:23:18 -0700101/**
jb.qi3d1d9a42023-05-16 06:55:53 -0700102 * @brief 30s request imei
llb52a49f2022-09-05 00:23:18 -0700103 *
104 * @param arg
105 * @return void*
106 */
107void * timer_request_imei(void * arg)
108{
109 int sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
110 if (-1 == sock_fd)
111 {
112 RLOGD("__FUNCTION__ %s create sock_fd failed %s\n", __FUNCTION__, strerror(errno));
113 /*set uci*/
114 /*socket abnormal*/
115 system("uci set lynq_uci.sdk_ready='3'");
116 /*set uci*/
117 return NULL;
118 }
lh8d290112023-10-22 20:53:06 -0700119 struct sockaddr_in liblynq_data_socket;
120 bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
121 //set this lib socket config
122 liblynq_data_socket.sin_family = AF_INET;
123 liblynq_data_socket.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
124 int ret = bind(sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
125 if (-1 == ret)
126 {
127 RLOGE("liblynq_data_socket bind fail,errno:%d",errno);
128 return NULL;
129 }
130
llb52a49f2022-09-05 00:23:18 -0700131 struct timeval timeOut;
132 timeOut.tv_sec = 3;//timeout time 3s
133 timeOut.tv_usec = 0;
134 if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
135 {
136 RLOGD("__FUNCTION__ %s time out setting failed %s\n", __FUNCTION__, strerror(errno));
137 /*set uci*/
138 /*socket abnormal*/
139 system("uci set lynq_uci.sdk_ready='3'");
140 /*set uci*/
141 return NULL;
142 }
jb.qi3d1d9a42023-05-16 06:55:53 -0700143 struct sockaddr_in addr_serv;
144 memset(&addr_serv, 0, sizeof(addr_serv));
145 addr_serv.sin_family = AF_INET;
146 addr_serv.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
147 addr_serv.sin_port = htons(DEST_PORT);
148 int len_addr_serv = sizeof(addr_serv);
llb52a49f2022-09-05 00:23:18 -0700149 int send_num = -1;
150 int recv_num = -1;
151 int resp_type = -1;
152 int request = -1;
153 int slot_id = -1;
llf0936572022-09-15 19:06:10 +0800154 int token = -1;
llb52a49f2022-09-05 00:23:18 -0700155 int res_error = -1;
156 lynq_client_t client_t;
157 char res_data[MAX_LEN] = {0};
ll892b6ef2022-09-08 06:45:34 -0700158 client_t.request = RIL_REQUEST_DEVICE_IDENTITY;
llb52a49f2022-09-05 00:23:18 -0700159 client_t.paramLen = 0;
160 client_t.uToken = 999;
161 memset(client_t.param, 0, sizeof(client_t.param));
162 while (1)
163 {
llb52a49f2022-09-05 00:23:18 -0700164 bzero(res_data, MAX_LEN);
165 pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
jb.qi3d1d9a42023-05-16 06:55:53 -0700166 send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
ll88c42532023-02-01 15:34:52 +0800167 RLOGD("send_num %d\n", send_num);
llb52a49f2022-09-05 00:23:18 -0700168 if(send_num == 0)
169 {
170 RLOGD("__FUNCTION__ %s Close to end %s\n", __FUNCTION__, strerror(errno));
171 //unknow
172 system("uci set lynq_uci.sdk_ready='4'");
173 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
174 continue;
175 }
176 if(send_num < 0)
177 {
178 RLOGD("__FUNCTION__ %s sendto error %s\n", __FUNCTION__, strerror(errno));
179 //unknow
180 system("uci set lynq_uci.sdk_ready='4'");
181 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
182 continue;
183 }
184 //get data msg
jb.qi3d1d9a42023-05-16 06:55:53 -0700185 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 +0800186 RLOGD("recv_num %d\n", recv_num);
llb52a49f2022-09-05 00:23:18 -0700187 if(recv_num == 0)
188 {
189 RLOGD("__FUNCTION__ %s Close to end\n", __FUNCTION__);
190 //unknow
191 system("uci set lynq_uci.sdk_ready='4'");
192 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
jb.qi837fe4c2023-12-01 22:51:10 -0800193 continue;
llb52a49f2022-09-05 00:23:18 -0700194 }
195 if(recv_num == -1 && errno == EAGAIN)
196 {
197 RLOGD("__FUNCTION__ %srecvfrom fail because timeout\n", __FUNCTION__);
198 /*set uci*/
199 if(!get_md_sta())
200 {
201 system("uci set lynq_uci.sdk_ready='1'");
202 }
203 else
204 {
205 if(check_service("/usr/sbin/mtkfusionrild"))//rild work
206 {
207 if(!check_service("lynq-ril-service"))//not find,must be socket error
208 {
209 system("uci set lynq_uci.sdk_ready='3'");
210 }
211 else
212 {
213 //unknow error
214 system("uci set lynq_uci.sdk_ready='4'");
215 }
216
217 }
218 else//rild no work
219 {
220 //unknow
221 system("uci set lynq_uci.sdk_ready='4'");
222 }
223 }
224 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
jb.qi837fe4c2023-12-01 22:51:10 -0800225 continue;
llb52a49f2022-09-05 00:23:18 -0700226 }
227 if(recv_num < 0)
228 {
229 RLOGD("__FUNCTION__ %srecvfrom fail %s\n", __FUNCTION__, strerror(errno));
230 //unknow
231 system("uci set lynq_uci.sdk_ready='4'");
232 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
jb.qi837fe4c2023-12-01 22:51:10 -0800233 continue;
llb52a49f2022-09-05 00:23:18 -0700234 }
235 Parcel p;
236 p.setData((uint8_t *)res_data,sizeof(char)*recv_num);
237 p.setDataPosition(0);
238 if(p.dataAvail() > 0)
239 {
240 p.readInt32(&resp_type);
llf0936572022-09-15 19:06:10 +0800241 p.readInt32(&token);
llb52a49f2022-09-05 00:23:18 -0700242 p.readInt32(&request);
243 p.readInt32(&slot_id);
244 p.readInt32(&res_error);
245 }
246 /*judge the res_error*/
247 if(!res_error)
248 {
ll892b6ef2022-09-08 06:45:34 -0700249 system("uci set lynq_uci.sdk_ready='0'");
llb52a49f2022-09-05 00:23:18 -0700250 }
251 else
252 {
ll892b6ef2022-09-08 06:45:34 -0700253 system("uci set lynq_uci.sdk_ready='2'"); //Md configurations are inconsistent with AP configurations
llb52a49f2022-09-05 00:23:18 -0700254 }
255 RLOGD("__FUNCTION__ %s res_error %d\n", __FUNCTION__, res_error);
256 /*judge the res_error*/
257 pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
jb.qi837fe4c2023-12-01 22:51:10 -0800258
259 ret = system("dmesg|grep \"tx_busy\"|grep -v \"tx_busy=(0,0)\"");
260 if(!ret)
261 {
262 RLOGD("check tx_busy exist, down modem!!\n");
263 system("echo \"ccif_assert\" > /sys/kernel/ccci/mdsys1/control");
264 }
265 else
266 {
267 RLOGD("check tx_busy no exist, down modem!!\n");
268 }
ll2f5e1c82022-09-07 00:01:43 -0700269 sleep(TIMER);
llb52a49f2022-09-05 00:23:18 -0700270 }
271 return NULL;
272}
273
274
qjbd37f0902023-08-04 04:08:52 -0700275void delete_enter(char data[])
276{
277 char *find = strchr(data, '\n');
278 if(find)
279 *find = '\0';
280 return ;
qjbdeea8452023-08-03 06:35:43 -0700281}
282
jb.qia1a08a92023-10-16 02:32:00 -0700283
qjbdeea8452023-08-03 06:35:43 -0700284void *check(void * arg)
285{
286
287 char pid[200][8];
qjbd37f0902023-08-04 04:08:52 -0700288 char ffd[200][4];
qjbdeea8452023-08-03 06:35:43 -0700289 char buf[64];
290 char check_time[4];
291 char timebuf[32];
qjbd37f0902023-08-04 04:08:52 -0700292 int num = 1;
293 int i=0;
qjbdeea8452023-08-03 06:35:43 -0700294 int j;
295 FILE *fp,*fp_1;
296 int ret;
297
298 RLOGD("check cpu/pid/interrupts/fd!!!\n");
qjbd37f0902023-08-04 04:08:52 -0700299 system("mkdir /media/check_file");
qjbdeea8452023-08-03 06:35:43 -0700300 system("touch /media/check_time");
301 fp_1 = popen("cat /media/check_time","r");
302 if(fgets(check_time, 4, fp_1) != NULL)
303 {
304 num = atoi(check_time);
305 }
306 pclose(fp_1);
307 while(1)
308 {
309 i = 0;
310 system("date >>/media/check_file/cpu_moniter.txt");
311 ret = system("top -b |head -n 25 >>/media/check_file/cpu_moniter.txt");
312 RLOGD("cpu ret %d", ret);
313 system("date >>/media/check_file/inter_moniter.txt");
qjbd37f0902023-08-04 04:08:52 -0700314 ret = system("cat /proc/interrupts |grep -v \": 0 0\" >>/media/check_file/inter_moniter.txt");
qjbdeea8452023-08-03 06:35:43 -0700315 RLOGD("interrupts ret %d", ret);
jb.qibad810e2023-08-29 03:55:18 -0700316
qjbdeea8452023-08-03 06:35:43 -0700317 system("date >>/media/check_file/pid_moniter.txt");
318 ret = system("ps -eo \"%p %a\" | grep -v \"\\[\" >>/media/check_file/pid_moniter.txt");
319 RLOGD("pid ret %d", ret);
qjbdeea8452023-08-03 06:35:43 -0700320
jb.qibad810e2023-08-29 03:55:18 -0700321 system("date >>/media/check_file/meminfo_moniter.txt");
322 ret = system("cat /proc/meminfo >>/media/check_file/meminfo_moniter.txt");
323 RLOGD("meminfo ret %d", ret);
324
325 system("date >>/media/check_file/buddyinfo_moniter.txt");
326 ret = system("cat /proc/buddyinfo >>/media/check_file/buddyinfo_moniter.txt");
327 RLOGD("buddyinfo ret %d", ret);
328
329 system("date >>/media/check_file/ps_auxw_moniter.txt");
330 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");
331 RLOGD("ps_auxw ret %d", ret);
332
333 system("date >>/media/check_file/cur_freq_moniter.txt");
334 ret = system("cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq >>/media/check_file/cur_freq_moniter.txt");
335 RLOGD("cur_freq ret %d", ret);
336
337 system("date >>/media/check_file/available_frequencies_moniter.txt");
338 ret = system("cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies >>/media/check_file/available_frequencies_moniter.txt");
339 RLOGD("available_frequencies ret %d", ret);
340
341 system("date >>/media/check_file/fd_moniter.txt");
qjbdeea8452023-08-03 06:35:43 -0700342 fp = popen("ps -eo \"%p %a\" | grep -v \"\\[\"|awk '{print $1}'","r");
343 while(fgets(pid[i], 8, fp) != NULL)
344 {
345 delete_enter(pid[i]);
346 i++;
347 }
348 pclose(fp);
349
350 for(j=1;j<i;j++)
351 {
352 sprintf(buf, "ls /proc/%s/fd | wc -l", pid[j]);
353 fp = popen(buf, "r");
354 fgets(ffd[j], 4, fp);
355 sprintf(buf,"echo \"pid: %s, fd_num: %s\" >>/media/check_file/fd_moniter.txt",pid[j], ffd[j]);
356 system(buf);
357 pclose(fp);
358 }
qjbd37f0902023-08-04 04:08:52 -0700359
jb.qibad810e2023-08-29 03:55:18 -0700360 if(num > 228)
qjbd37f0902023-08-04 04:08:52 -0700361 {
362 system("cp /media/check_file/cpu_moniter.txt /media/check_file/cpu_moniter_1.txt");
jb.qibad810e2023-08-29 03:55:18 -0700363 system("cp /media/check_file/inter_moniter.txt /media/check_file/inter_moniter_1.txt");
qjbd37f0902023-08-04 04:08:52 -0700364 system("cp /media/check_file/pid_moniter.txt /media/check_file/pid_moniter_1.txt");
365 system("cp /media/check_file/fd_moniter.txt /media/check_file/fd_moniter_1.txt");
jb.qibad810e2023-08-29 03:55:18 -0700366 system("cp /media/check_file/fd_moniter.txt /media/check_file/meminfo_moniter_1.txt");
367 system("cp /media/check_file/fd_moniter.txt /media/check_file/buddyinfo_moniter_1.txt");
368 system("cp /media/check_file/fd_moniter.txt /media/check_file/ps_auxw_moniter_1.txt");
369 system("cp /media/check_file/fd_moniter.txt /media/check_file/cur_freq_moniter_1.txt");
370 system("cp /media/check_file/fd_moniter.txt /media/check_file/available_frequencies_moniter_1.txt");
371
372
qjbd37f0902023-08-04 04:08:52 -0700373 system("rm -rf /media/check_file/cpu_moniter.txt");
374 system("rm -rf /media/check_file/inter_moniter.txt");
375 system("rm -rf /media/check_file/pid_moniter.txt");
376 system("rm -rf /media/check_file/fd_moniter.txt");
jb.qibad810e2023-08-29 03:55:18 -0700377 system("rm -rf /media/check_file/meminfo_moniter.txt");
378 system("rm -rf /media/check_file/buddyinfo_moniter.txt");
379 system("rm -rf /media/check_file/ps_auxw_moniter.txt");
380 system("rm -rf /media/check_file/cur_freq_moniter.txt");
381 system("rm -rf /media/check_file/available_frequencies_moniter.txt");
382
qjbd37f0902023-08-04 04:08:52 -0700383 num = 0;
384 }
qjbdeea8452023-08-03 06:35:43 -0700385 num++;
386 sprintf(timebuf, "echo \"%d\" >/media/check_time", num);
387 ret = system(timebuf);
qjbdeea8452023-08-03 06:35:43 -0700388 sleep(300);
qjbdeea8452023-08-03 06:35:43 -0700389 }
jb.qia1a08a92023-10-16 02:32:00 -0700390 return NULL;
qjbdeea8452023-08-03 06:35:43 -0700391
qjbdeea8452023-08-03 06:35:43 -0700392}
jb.qia1a08a92023-10-16 02:32:00 -0700393
qjbdeea8452023-08-03 06:35:43 -0700394
jb.qia7620e72023-09-02 01:35:17 -0700395void *check_uci(void * arg)
396{
397 int ret[6];
398 int result = 0;
399 int flag = 0;
400
401 char uci_0[]="/etc/config/lynq_uci";
402 char uci_1[]="/etc/config/lynq_uci_ro";
403 char uci_2[]="/etc/config/mdlog";
404 char uci_3[]="/etc/config/radio_property";
405 char uci_4[]="/etc/config/service";
406 char uci_5[]="/etc/config/usb";
407 RLOGD("start check uci\n");
408 while(num++ < 4)
409 {
410 RLOGD("@@@@@@@num=%d\n", num);
411 flag = 0;
jb.qi23d0d4b2023-11-20 03:25:08 -0800412 ret[0] = system("uci show | grep \"lynq_uci.lynq_ril\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700413 if(ret[0] != 0)
414 {
415 RLOGD("lynq_uci unload\n");
416 flag = 1;
417 }
418
jb.qi23d0d4b2023-11-20 03:25:08 -0800419 ret[1] = system("uci show | grep \"^lynq_uci_ro\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700420 if(ret[1] != 0)
421 {
422 RLOGD("lynq_uci_ro unload\n");
423 flag = 1;
424 }
425
426 ret[2] = system("uci show | grep \"^mdlog\.\"");
427 if(ret[2] != 0)
428 {
429 RLOGD("mdlog unload\n");
430 flag = 1;
431 }
432
jb.qi23d0d4b2023-11-20 03:25:08 -0800433 ret[3] = system("uci show | grep \"^radio_property\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700434 if(ret[3] != 0)
435 {
436 RLOGD("radio_property unload\n");
437 flag = 1;
438 }
439
jb.qi23d0d4b2023-11-20 03:25:08 -0800440 ret[4] = system("uci show | grep \"^service\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700441 if(ret[4] != 0)
442 {
443 RLOGD("service unload\n");
444 flag = 1;
445 }
446
jb.qi23d0d4b2023-11-20 03:25:08 -0800447 ret[5] = system("uci show | grep \"^usb\.\" > /dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700448 if(ret[5] != 0)
449 {
450 RLOGD("usb unload\n");
451 flag = 1;
452 }
453
454 RLOGD("flag=%d\n",flag);
455 if(flag != 0)
456 {
457 RLOGD("config reload\n");
458 result = chdir("/data_backup/");
jb.qi23d0d4b2023-11-20 03:25:08 -0800459 result =system("tar -zxvf userdata.tar.gz -C /STATE/ >/dev/null");
jb.qia7620e72023-09-02 01:35:17 -0700460 if(result!= 0)
461 {
462 RLOGD("cp config fail\n");
463 }
464 if(ret[0] != 0)
465 {
466 lynq_load_config(uci_0);
467 RLOGD("reload lynq_uci\n");
468 system("systemctl start autosuspend");
469 }
470 if(ret[1] != 0)
471 {
472 lynq_load_config(uci_1);
473 RLOGD("reload lynq_uci_ro\n");
474 }
475 if(ret[2] != 0)
476 {
477 lynq_load_config(uci_2);
478 RLOGD("reload mdlog\n");
479 }
480 if(ret[3] != 0)
481 {
482 lynq_load_config(uci_3);
483 RLOGD("reload radio_property\n");
484 system("systemctl restart mtkfusionrild");
485 }
486 if(ret[4] != 0)
487 {
488 lynq_load_config(uci_4);
489 RLOGD("reload service\n");
490 }
491 if(ret[5] != 0)
492 {
493 lynq_load_config(uci_5);
494 RLOGD("reload usb\n");
495 }
496 }
497 else
498 {
499 RLOGD("uci check success, exit check!\n");
500 break;
501 }
502 sleep(2);
503 }
jb.qia1a08a92023-10-16 02:32:00 -0700504 return NULL;
jb.qia7620e72023-09-02 01:35:17 -0700505}
506
507
jb.qibad810e2023-08-29 03:55:18 -0700508
llb52a49f2022-09-05 00:23:18 -0700509void start_timer_request(void)
510{
jb.qia7620e72023-09-02 01:35:17 -0700511 pthread_t thid,thid_1,thid_2;
llb52a49f2022-09-05 00:23:18 -0700512 pthread_attr_t a;
513 pthread_attr_init(&a);
514 pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);
qjbdeea8452023-08-03 06:35:43 -0700515
jb.qia1a08a92023-10-16 02:32:00 -0700516 char tmp[20];
517 int debug_mode;
518 int ret;
519
520 ret = pthread_create(&thid, &a, timer_request_imei, NULL);
llb52a49f2022-09-05 00:23:18 -0700521 if(ret != 0){
522 RLOGD("pthread_create error!!!");
523 return;
524 }
jb.qieb2cc522023-08-18 01:45:07 +0800525 sleep(20);
jb.qia1a08a92023-10-16 02:32:00 -0700526 ret = lynq_get_value(LOG_UCI_FILE, LOG_UCI_MODULE, "sysinfo_debug_status", tmp);
527 RLOGD("ret =%d, tmp is %s\n", ret, tmp);
528 debug_mode=atoi(tmp);
529 RLOGD("debug_mode is %d!!!\n", debug_mode);
530 if(debug_mode == 1)
531 {
532 RLOGD("debug_mode is 1, pthread_create start!!!\n");
533 ret = pthread_create(&thid_1, NULL, check, NULL);
534 if(ret != 0)
535 {
536 RLOGD("pthread_create error!!!");
537 return;
538 }
539
qjbdeea8452023-08-03 06:35:43 -0700540 }
jb.qia1a08a92023-10-16 02:32:00 -0700541
542
jb.qia7620e72023-09-02 01:35:17 -0700543
544 ret = pthread_create(&thid_2,NULL,check_uci,NULL);
545 if(ret != 0){
546 RLOGD("pthread_create error!!!");
547 return;
548 }
549 pthread_detach(thid_2);
llb52a49f2022-09-05 00:23:18 -0700550 return;
551}
552