blob: e8c4ca8b30d0ca2df3c63c72690ac40b279e5b89 [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001#include <stdlib.h>
2#include <stdio.h>
3#include <string.h>
4#include <sys/types.h>
5#include <sys/stat.h>
6#include <unistd.h>
7#include <dlfcn.h>
8#include <errno.h>
9#include <fcntl.h>
10#include <lynq/lynq-qser-autosuspend.h>
11
12#define FILE_LOCK_TABLE "/tmp/.lock_table"
13
14#define MAX_LOCK_NUM 128
15
16static void qser_lpm_handler(qser_lpm_edge_t edge_state)
17{
18 printf("this is qser_lpm_handler, edge_state=%d\n", edge_state);
19
20}
21
22static void printUsage(void)
23{
24 printf("-i --qser_lpm_init\n");
25 printf("-d --qser_lpm_deinit\n");
26 printf("-q --quit\n");
27 printf("-e --qser_autosuspend_enable\n");
28 printf("-cl [wakelock name] --qser_wakelock_create \n");
29 printf("-al [wakelock num] --qser_wakelock_lock \n");
30 printf("-rl [wakelock num] --qser_wakelock_unlock \n");
31 printf("-dl [wakelock num] --qser_wakelock_destroy\n");
32 printf("-ws [whitelist num] --qser_whitelist_set\n");
33 printf("-wg --qser_whitelist_get\n");
34 printf("-ccl --check created locks\n");
35 printf("-cll --check lockup locks\n");
36 printf("-cws --check wakeup sources\n");
37 printf("Please input an cmd:");
38}
39
40
41int check_lock(void)
42{
43// int err;
44 int file_fd;
45 int i;
46 int ret;
47 LOCK_TABLE lock_status;
48 file_fd = open(FILE_LOCK_TABLE,O_RDWR);
49 if(file_fd < 0)
50 {
51// err = errno;
52 printf("Error open lock_table file:%s\n", strerror(errno));
53 return -2;
54 }
55
56 memset(&lock_status, 0, sizeof(lock_status));
57 lseek(file_fd,0,SEEK_SET);
58 ret = read(file_fd,(unsigned char *)&lock_status,sizeof(lock_status));
59 if(ret <= 0)
60 {
61 close(file_fd);
62 return -2;
63 }
64 for(i=0;i<MAX_LOCK_NUM;i++)
65 {
66 if(strlen(lock_status.lock_name[i]) != 0)
67 {
68 printf("fd: %d lock_name:%s strlen:%d, pid=%d\n", i, lock_status.lock_name[i], strlen(lock_status.lock_name[i]), lock_status.lock_pid[i]);
69 }
70 }
71
72 close(file_fd);
73 return 0;
74
75}
76
77
78void delete_enter(char *data)
79{
80 char *find = strchr(data, '\n');
81 if(find)
82 *find = '\0';
83 return ;
84}
85
86int main(int argc,char** argv)
87{
88
89 int num;
90 int ret;
91 int len;
92 FILE *fp;
93 char buf[256];
94 char cmd[64];
95 char *cmd2;
96 char *cmd1;
97 char tmp[8];
98 qser_pm_cfg_t *qser_lpm_cfg = NULL;
99 qser_lpm_cfg = (qser_pm_cfg_t *)malloc(sizeof(qser_pm_cfg_t));
100 qser_lpm_cfg->wakeupin.wakeupin_pin = 50;
101 qser_lpm_cfg->wakeupin.wakeupin_edge = E_QL_LPM_FALLING;
102 while(1)
103 {
104 printUsage();
105 memset(cmd,0,sizeof(cmd));
106 if(NULL == fgets(cmd, sizeof(cmd), stdin))
107 break;
108 cmd1 = strtok(cmd, " ");
109 cmd2 = strtok(NULL, " ");
110 delete_enter(cmd1);
111 printf("cmd1:%s\n", cmd1);
112 if(strcmp(cmd1,"-i") == 0)
113 {
114 ret = qser_lpm_init( qser_lpm_handler, qser_lpm_cfg);
115 if(ret != 0)
116 {
117 printf("lpm init fail\n");
118 break;
119 }
120 else
121 {
122 printf("lpm init success\n");
123 }
124 }
125 else if(strcmp(cmd1,"-e") == 0)
126 {
127 char num='1';
128 ret = qser_autosuspend_enable(num);
129 if(ret != 0)
130 {
131 printf("qser_autosuspend_enable fail\n");
132 }
133 else
134 {
135 printf("qser_autosuspend_enable success\n");
136 }
137 }
138 else if(strcmp(cmd1,"-cl") == 0)
139 {
140 if(cmd2 == NULL)
141 {
142 printf("name is null\n");
143 continue;
144 }
145 len = strlen(cmd2);
146 printf("len =%d\n", len);
147 ret = qser_wakelock_create(cmd2, len);
148 if(ret < 0)
149 {
150 printf("wakelock create fail\n");
151 printf("ret=%d\n", ret);
152 }
153 else
154 {
155 printf("wakelock create success\n");
156 printf("fd=%d\n", ret);
157 }
158 }
159 else if (strcmp(cmd1,"-al") == 0)
160 {
161 if(cmd2 == NULL)
162 {
163 printf("fd is null\n");
164 continue;
165 }
166 num = atoi(cmd2);
167 ret = qser_wakelock_lock(num);
168 if(ret != 0)
169 {
170 printf("wakelock lock fail\n");
171 printf("ret=%d\n", ret);
172 }
173 else
174 {
175 printf("wakelock lock success\n");
176 }
177 }
178
179 else if (strcmp(cmd1,"-rl") == 0)
180 {
181 if(cmd2 == NULL)
182 {
183 printf("fd is null\n");
184 continue;
185 }
186 num = atoi(cmd2);
187 ret = qser_wakelock_unlock(num);
188 if(ret != 0)
189 {
190 printf("wakelock unlock fail\n");
191 printf("ret=%d\n", ret);
192 }
193 else
194 {
195 printf("wakelock unlock success\n");
196 }
197 }
198 else if(strcmp(cmd1,"-dl") == 0)
199 {
200 if(cmd2 == NULL)
201 {
202 printf("fd is null\n");
203 continue;
204 }
205 num = atoi(cmd2);
206 ret = qser_wakelock_destroy(num);
207 if(ret != 0)
208 {
209 printf("wakelock destroy fail\n");
210 printf("ret=%d\n", ret);
211 }
212 else
213 {
214 printf("wakelock destroy success\n");
215 }
216 }
217 else if(strcmp(cmd1, "-ws") == 0)
218 {
219 if(cmd2 == NULL)
220 {
221 printf("num is null\n");
222 continue;
223 }
224 delete_enter(cmd2);
225 ret = qser_whitelist_set(cmd2);
226 if(ret != 0)
227 {
228 printf("qser_whitlist_set fail\n");
229 printf("ret=%d\n", ret);
230 }
231 else
232 {
233 printf("qser_whitlist_set success\n");
234 }
235 }
236 else if(strcmp(cmd1, "-wg") == 0)
237 {
238 ret = qser_whitelist_get(tmp);
239 if(ret != 0)
240 {
241 printf("qser_whitlist_set fail\n");
242 }
243 else
244 {
245 printf("qser_whitlist_set success\n");
246 printf("ret=%d, whilelist state is %s\n", ret, tmp);
247 }
248 }
249 else if(strcmp(cmd1,"-ccl") == 0)
250 {
251 int ret;
252 ret = check_lock();
253 if(ret != 0)
254 {
255 printf("check lock fail\n");
256 printf("ret=%d\n", ret);
257 }
258 else
259 {
260 printf("check lock success\n");
261 }
262 }
263 else if(strcmp(cmd1,"-cll") == 0)
264 {
265 int ret;
266 ret = system("cat /sys/power/wake_lock");
267 if(ret != 0)
268 {
269 printf("check created lock fail\n");
270 }
271 }
272 else if(strcmp(cmd1,"-cws") == 0)
273 {
274 printf("start check active wakeup_sources !!!\n");
275 memset(buf,0,sizeof(buf));
276 fp = popen("cat /sys/kernel/debug/wakeup_sources|sed -e 's/\"^ \"/\"unnamed\"/g' | awk '{print $6 \"\t\" $1}'| grep -v \"^0\" |sort -n \n","r");
277 while(fgets(buf, 255, fp) != NULL)
278 {
279 printf("%s", buf);
280 }
281 pclose(fp);
282 }
283 else if(strcmp(cmd1, "-d") == 0)
284 {
285 ret = qser_lpm_deinit();
286 if(ret != 0)
287 {
288 printf("lpm deinit fail\n");
289 }
290 else
291 {
292 printf("lpm deinit success\n");
293 }
294 }
295 else if(strcmp(cmd1,"-q") == 0)
296 {
297 break;
298 }
299 }
300
301 return 0;
302
303}