Fix build error.
Change-Id: Iae79f10caded40208dd6fde9f75d5f29a07ef729
diff --git a/mbtk/include/mbtk/mbtk_ril_api.h b/mbtk/include/mbtk/mbtk_ril_api.h
index 2613f97..b3143f9 100755
--- a/mbtk/include/mbtk/mbtk_ril_api.h
+++ b/mbtk/include/mbtk/mbtk_ril_api.h
@@ -1079,7 +1079,7 @@
*
* Restarting takes effect after execution.
*/
-int mbtk_sms_cmgd_get(mbtk_ril_handle* handle, char * cmdg);
+mbtk_ril_err_enum mbtk_sms_cmgd_get(mbtk_ril_handle* handle, char * cmdg);
/*
* Set sms cmgl.
diff --git a/mbtk/libmbtk_lib/sleep/mbtk_sleep.c b/mbtk/libmbtk_lib/sleep/mbtk_sleep.c
old mode 100644
new mode 100755
index 6ae159e..edb0e80
--- a/mbtk/libmbtk_lib/sleep/mbtk_sleep.c
+++ b/mbtk/libmbtk_lib/sleep/mbtk_sleep.c
@@ -8,9 +8,11 @@
#include "mbtk_log.h"
#include "mbtk_utils.h"
+static bool autosleep_enable = FALSE;
+
static mbtk_lock_name_s mbtk_lock_name[LOCK_MAX_SIZE]={0};
-#define EPOLL_SIZE_HINT 128
+#define EPOLL_SIZE_HINT 128
int mEpollFd = -1;
mbtk_info_callback_func g_sleep_timer_cb;
int g_sleep_timer_fd = 0;
@@ -183,23 +185,23 @@
{
struct epoll_event eventItems[EPOLL_SIZE_HINT];
int eventCount = epoll_wait(mEpollFd, eventItems, EPOLL_SIZE_HINT, -1);
-
+
int timerFd = -1;
int eventIndex = 0;
uint64_t readCounter;
-
+
if (eventCount < 0) {
LOGE("Poll failed with an unexpected error: %s\n", strerror(errno));
return (void*)-1;
}
-
+
for (; eventIndex < eventCount; ++eventIndex) {
timerFd = eventItems[eventIndex].data.fd;
-
+
int retRead = read(timerFd, &readCounter, sizeof(uint64_t));
if (retRead < 0) {
LOGE("read %d failed...\n", timerFd);
-
+
continue;
} else {
@@ -209,7 +211,7 @@
LOGI("suspend_timer_success\n");
}
}
-
+
return 0;
}
@@ -245,13 +247,13 @@
return -1;
}
mEpollFd = epoll_create(EPOLL_SIZE_HINT);
-
+
g_sleep_timer_fd = timerfd_create(CLOCK_BOOTTIME_ALARM, 0);
if (g_sleep_timer_fd < 0) {
LOGE("Could not create timer fd: %s\n", strerror(errno));
return 0;
}
-
+
struct itimerspec timerSet;
timerSet.it_interval.tv_sec = 0;
timerSet.it_interval.tv_nsec = 0;
@@ -262,7 +264,7 @@
close(g_sleep_timer_fd);
return 0;
}
-
+
struct epoll_event eventItem;
memset(&eventItem, 0, sizeof(eventItem));
eventItem.events = EPOLLIN | EPOLLET;
diff --git a/mbtk/libmbtk_lib_v2/sleep/mbtk_sleep.c b/mbtk/libmbtk_lib_v2/sleep/mbtk_sleep.c
index 25c3997..f78b736 100755
--- a/mbtk/libmbtk_lib_v2/sleep/mbtk_sleep.c
+++ b/mbtk/libmbtk_lib_v2/sleep/mbtk_sleep.c
@@ -1,9 +1,22 @@
+#include <pthread.h>
+#include <sys/epoll.h>
+#include <sys/timerfd.h>
+
+
+
#include "mbtk_sleep.h"
#include "mbtk_log.h"
#include "mbtk_utils.h"
+static bool autosleep_enable = FALSE;
+
static mbtk_lock_name_s mbtk_lock_name[LOCK_MAX_SIZE]={0};
+#define EPOLL_SIZE_HINT 128
+int mEpollFd = -1;
+mbtk_info_callback_func g_sleep_timer_cb;
+int g_sleep_timer_fd = 0;
+
int mbtk_autosuspend_enable(char enable)
{
@@ -168,5 +181,106 @@
return 0;
}
+static void* suspend_timer_thread_run(void* arg)
+{
+ struct epoll_event eventItems[EPOLL_SIZE_HINT];
+ int eventCount = epoll_wait(mEpollFd, eventItems, EPOLL_SIZE_HINT, -1);
+
+ int timerFd = -1;
+ int eventIndex = 0;
+ uint64_t readCounter;
+
+ if (eventCount < 0) {
+ LOGE("Poll failed with an unexpected error: %s\n", strerror(errno));
+ return (void*)-1;
+ }
+
+ for (; eventIndex < eventCount; ++eventIndex) {
+ timerFd = eventItems[eventIndex].data.fd;
+
+ int retRead = read(timerFd, &readCounter, sizeof(uint64_t));
+ if (retRead < 0) {
+ LOGE("read %d failed...\n", timerFd);
+
+ continue;
+ } else {
+
+ g_sleep_timer_cb(NULL, 0);
+ mbtk_autosuspend_enable(0);
+ g_sleep_timer_fd = 0;
+ LOGI("suspend_timer_success\n");
+ }
+ }
+
+ return 0;
+}
+
+
+
+static int suspend_timer_timer_init(void)
+{
+ pthread_attr_t thread_attr;
+ pthread_t net_led_thread_id;
+ pthread_attr_init(&thread_attr);
+ if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
+ {
+ LOGE("[suspend] pthread_attr_setdetachstate() fail.");
+ return -1;
+ }
+
+ if(pthread_create(&net_led_thread_id, &thread_attr, suspend_timer_thread_run, NULL))
+ {
+ LOGE("[suspend] pthread_create() fail.");
+ return -1;
+ }
+
+ pthread_attr_destroy(&thread_attr);
+ return 0;
+}
+
+
+int mbtk_suspend_timer_set(int time, mbtk_info_callback_func cb)
+{
+ if(0 < g_sleep_timer_fd)
+ {
+ LOGE("suspend timer has been init");
+ return -1;
+ }
+ mEpollFd = epoll_create(EPOLL_SIZE_HINT);
+
+ g_sleep_timer_fd = timerfd_create(CLOCK_BOOTTIME_ALARM, 0);
+ if (g_sleep_timer_fd < 0) {
+ LOGE("Could not create timer fd: %s\n", strerror(errno));
+ return 0;
+ }
+
+ struct itimerspec timerSet;
+ timerSet.it_interval.tv_sec = 0;
+ timerSet.it_interval.tv_nsec = 0;
+ timerSet.it_value.tv_sec = time;
+ timerSet.it_value.tv_nsec = 0;
+ if (timerfd_settime(g_sleep_timer_fd, 0, &timerSet, NULL) != 0) {
+ LOGE("timerfd_settime failed: %s\n", strerror(errno));
+ close(g_sleep_timer_fd);
+ return 0;
+ }
+
+ struct epoll_event eventItem;
+ memset(&eventItem, 0, sizeof(eventItem));
+ eventItem.events = EPOLLIN | EPOLLET;
+ eventItem.data.fd = g_sleep_timer_fd;
+ int result = epoll_ctl(mEpollFd, EPOLL_CTL_ADD, g_sleep_timer_fd, &eventItem);
+ if (result != 0) {
+ LOGE("Could not add timer fd(%d) to epoll instance: %s\n", g_sleep_timer_fd, strerror(errno));
+ }
+
+ mbtk_autosuspend_enable(1);
+ g_sleep_timer_cb = cb;
+ suspend_timer_timer_init();
+
+
+ return 0;
+}
+