blob: c2b8be01c682d3539d6942354f8dcd341db51911 [file] [log] [blame]
r.xiao27072552024-10-24 01:02:48 -07001#include "mbtk_sleep.h"
2#include "mbtk_log.h"
3
r.xiao72f92372024-10-28 04:00:43 -07004static mbtk_lock_name_s mbtk_lock_name[LOCK_MAX_SIZE]={0};
r.xiao27072552024-10-24 01:02:48 -07005
r.xiao27072552024-10-24 01:02:48 -07006
7int mbtk_autosuspend_enable(char enable)
8{
9 if((enable == 1) || enable == '1')
10 {
11 if(!access("/sys/power/autosleep", W_OK))
12 {
13 system("echo mem > /sys/power/autosleep");
14 autosleep_enable = TRUE;
15 return 0;
16 }
17 else
18 {
19 LOGE("/sys/power/autosleep can not write.");
20 return -1;
21 }
22 }
23 else if((enable == 0) || enable == '0')
24 {
25 if(!access("/sys/power/autosleep", W_OK))
26 {
27 system("echo off > /sys/power/autosleep");
28 autosleep_enable = FALSE;
29 return 0;
30 }
31 else
32 {
33 LOGE("/sys/power/autosleep can not write.");
34 return -1;
35 }
36 }
37 else
38 {
39 LOGE("qser_autosuspend_enablecan enable err.");
40 return -1;
41 }
42
43 return 0;
44}
45
46int mbtk_wakelock_create(const char* name , size_t len)
47{
48 int len_t;
49
50 len_t = strlen(name);
51
52 if((name != NULL) && (len < 33) && (len_t < 33))
53 {
54 int i;
55 for(i=1 ;i<LOCK_MAX_SIZE;i++)
56 {
57 if(strcmp(mbtk_lock_name[i].name, name) == 0)
58 {
59 LOGE("Repeated names.");
60 return -1;
61 }
62 }
63
64 for(i=1 ;i<LOCK_MAX_SIZE;i++)
65 {
66 if(mbtk_lock_name[i].fd == 0)
67 break;
68 }
69
70 if (i >= LOCK_MAX_SIZE)
71 {
72 LOGE("Fd is full.");
73 return -1;
74 }
75
76 memcpy(mbtk_lock_name[i].name, name, strlen(name)+1);
77 mbtk_lock_name[i].fd = i;
78 return mbtk_lock_name[i].fd -1;//Starting from scratch
79 }
80 else
81 return -1;
82
83 return -1;
84}
85
86int mbtk_wakelock_lock(int fd)
87{
88 int i;
89 for(i=1;i<LOCK_MAX_SIZE;i++)
90 {
91 if(mbtk_lock_name[i].fd -1 == fd)
92 break;
93 }
94 if(i == LOCK_MAX_SIZE)
95 {
96 LOGE("LOCK_MAX_SIZE is full\n");
97 return -1;
98 }
99
100 if(!access("/sys/power/wake_lock", W_OK))
101 {
102 char cmd[128]={0};
103 sprintf(cmd, "echo %s > /sys/power/wake_lock", mbtk_lock_name[i].name);
104 system(cmd);
105 return 0;
106 }
107 else
108 {
109 LOGE("/sys/power/wake_lock can not write.");
110 return -1;
111 }
112
113 return 0;
114}
115
116int mbtk_wakelock_unlock(int fd)
117{
118 int i;
119 for(i=1;i<LOCK_MAX_SIZE;i++)
120 {
121 if(mbtk_lock_name[i].fd -1 == fd)
122 break;
123 }
124 if(i == LOCK_MAX_SIZE)
125 {
126 LOGE("LOCK_MAX_SIZE is full\n");
127 return -1;
128 }
129
130 if(!access("/sys/power/wake_unlock", W_OK))
131 {
132 char cmd[128]={0};
133 sprintf(cmd, "echo %s > /sys/power/wake_unlock", mbtk_lock_name[i].name);
134 system(cmd);
135 return 0;
136 }
137 else
138 {
139 LOGE("/sys/power/wake_unlock can not write.");
140 return -1;
141 }
142
143 return 0;
144}
145
146int mbtk_wakelock_destroy(int fd)
147{
148 int i;
149 for(i=1;i<LOCK_MAX_SIZE;i++)
150 {
151 if(mbtk_lock_name[i].fd -1 == fd)
152 break;
153 }
154
155 if(i == LOCK_MAX_SIZE)
156 {
157 LOGE("LOCK_MAX_SIZE is full\n");
158 return -1;
159 }
160 else
161 {
162 mbtk_lock_name[i].fd = 0;
163 memset(mbtk_lock_name[i].name, 0, 64);
164 return 0;
165 }
166
167 return 0;
168}
169
170
171