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