Add basic change for v1453
Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/liblynq_lib_rilv2/lynq_sleep.c b/mbtk/liblynq_lib_rilv2/lynq_sleep.c
new file mode 100755
index 0000000..91a8e28
--- /dev/null
+++ b/mbtk/liblynq_lib_rilv2/lynq_sleep.c
@@ -0,0 +1,326 @@
+#include "lynq-qser-autosuspend.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <string.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/epoll.h>
+#include <linux/input.h>
+
+#include "mbtk_type.h"
+#include "mbtk_log.h"
+#include "mbtk_power.h"
+#include "mbtk_lpm.h"
+#include "mbtk_sleep.h"
+#include "mbtk_utils.h"
+#include "mbtk_ril_api.h"
+
+
+static bool call_Off = FALSE;
+static bool nw_off = FALSE;
+static bool sms_off = FALSE;
+static bool data_off = FALSE;
+
+static mbtk_ril_handle* whitelist_info_handle = NULL;
+
+
+int qser_autosuspend_enable(char enable)
+{
+ int ret = 0;
+
+ ret = mbtk_autosuspend_enable(enable);
+ if (ret == -1)
+ {
+ LOGE("qser_autosuspend_enable is error");
+ }
+
+ return ret;
+}
+
+int qser_wakelock_create(const char* name , size_t len)
+{
+ int ret = 0;
+
+ ret = mbtk_wakelock_create(name, len);
+ if (ret == -1)
+ {
+ LOGE("qser_wakelock_create is error");
+ }
+
+ return ret;
+}
+
+int qser_wakelock_lock(int fd)
+{
+ int ret = 0;
+
+ ret = mbtk_wakelock_lock(fd);
+ if (ret == -1)
+ {
+ LOGE("qser_wakelock_lock is error");
+ }
+
+ return ret;
+}
+
+int qser_wakelock_unlock(int fd)
+{
+ int ret = 0;
+
+ ret = mbtk_wakelock_unlock(fd);
+ if (ret == -1)
+ {
+ LOGE("qser_wakelock_unlock is error");
+ }
+
+ return ret;
+}
+
+int qser_wakelock_destroy(int fd)
+{
+ int ret = 0;
+
+ ret = mbtk_wakelock_destroy(fd);
+ if (ret == -1)
+ {
+ LOGE("qser_wakelock_destroy is error");
+ }
+
+ return ret;
+}
+
+int qser_lpm_init(qser_lpm_Handler_t qser_lpm_handler, qser_pm_cfg_t *qser_lpm_cfg)
+{
+ UNUSED(qser_lpm_cfg);
+
+ if(mbtk_lpm_init((mbtk_lpm_handler_t)qser_lpm_handler))
+ {
+ LOGE("qser_lpm_init fail");
+ return -1;
+ }
+
+ return 0;
+}
+
+int qser_lpm_deinit(void)
+{
+ mbtk_lpm_deinit();
+
+ return 0;
+}
+
+/*
+例如AT*POWERIND=31,就相当于设置NETWORK、SIM、SMS、CS CALL、PS DATA变化时都不主动上报,
+其中PS DATA目前暂时不支持,只是保留了这个标志位;
+AP power state: 1~31 means suspend, bitmap: bit0 - NETWORK;bit1 - SIM;bit2 - SMS;bit3 - CS CALL;bit4 - PS DATA
+0 means resume all.
+目标文件"/system/etc/powerind"
+如果bit0-bit3都配置可以采用的值是1-15,如果是当前采用NETWORK SMS CALL 则值的取值是 1 4 8 5 9 12 13
+
+*/
+
+int qser_whitelist_set(char* whitelish)
+{
+ //UNUSED(whitelish);
+ uint32 on = 0;
+ int call_t, nw_t, data_t, sms_t, tmp;
+
+ int len = strlen(whitelish);
+
+ if (len != 4)
+ {
+ LOGE("whitelish num error num=[%d]",len);
+ return -1;
+ }
+
+ tmp = atoi(whitelish);
+
+ call_t = tmp/1000;
+ nw_t = tmp%1000/100;
+ data_t = tmp%1000%100/10;
+ sms_t = tmp%1000%100%10;
+
+ if (call_t == 1)
+ call_Off = TRUE;
+ else
+ call_Off = FALSE;
+
+ if (nw_t == 1)
+ nw_off = TRUE;
+ else
+ nw_off = FALSE;
+
+ if (data_t == 1)
+ data_off = TRUE;
+ else
+ data_off = FALSE;
+
+ if (sms_t == 1)
+ sms_off = TRUE;
+ else
+ sms_off = FALSE;
+
+ if (call_Off == FALSE && nw_off == FALSE && data_off == FALSE && sms_off == FALSE)
+ {
+ on = 29;//0000的情况,所有上报源都屏蔽,SIM的上报会一直被包含在内
+ }
+ else
+ {
+ if (call_Off == TRUE)
+ call_t = 8;
+ else
+ call_t = 0;
+
+ if (nw_off == TRUE)
+ nw_t = 1;
+ else
+ nw_t = 0;
+
+ if (data_off == TRUE)
+ data_t = 16;
+ else
+ data_t = 0;
+
+ if (sms_off == TRUE)
+ sms_t = 4;
+ else
+ sms_t = 0;
+
+ on = 29 - (call_t + nw_t + data_t + sms_t);//SIM的上报会一直被包含在内
+ }
+
+ if(whitelist_info_handle == NULL)
+ {
+ whitelist_info_handle = mbtk_ril_open(MBTK_AT_PORT_DEF);
+ if(whitelist_info_handle)
+ {
+ LOGI("creat whitelist_info_handle is success");
+ }
+ else
+ {
+ LOGE("creat whitelist_info_handle is fail");
+ return -1;
+ }
+ }
+
+ int err = mbtk_wakeup_state_set(whitelist_info_handle, on);
+ if(err)
+ {
+ LOGE("whitelist_info_handle Error : %d", err);
+ return -1;
+ }
+
+ if(whitelist_info_handle != NULL)
+ {
+ int ret_ril = mbtk_ril_close(MBTK_AT_PORT_DEF);
+ if (ret_ril == MBTK_RIL_ERR_SUCCESS)
+ {
+ LOGI("deinit whitelist_info_handle is succuess");
+ whitelist_info_handle = NULL;
+ }
+ else
+ {
+ LOGE("deinit whitelist_info_handle is error(%d)",ret_ril);
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+
+int qser_whitelist_get(char* whitelish)
+{
+ //UNUSED(whitelish);
+ char list[10] = {0};
+ int get_tmp;
+
+ get_tmp = mbtk_powerrind_get();
+ LOGI(">>>powerrind_get: %d",get_tmp);
+ //call 8 nw 1 data 16 sms 4 SIM的上报会一直被包含在内
+ switch(get_tmp)
+ {
+ case 0:
+ sprintf(list, "%d%d%d%d", 1, 1, 1, 1);
+ break;
+ case 8:
+ sprintf(list, "%d%d%d%d", 0, 1, 1, 1);
+ break;
+ case 1:
+ sprintf(list, "%d%d%d%d", 1, 0, 1, 1);
+ break;
+ case 16:
+ sprintf(list, "%d%d%d%d", 1, 1, 0, 1);
+ break;
+ case 4:
+ sprintf(list, "%d%d%d%d", 1, 1, 1, 0);
+ break;
+
+ case 9:
+ sprintf(list, "%d%d%d%d", 0, 0, 1, 1);
+ break;
+ case 24:
+ sprintf(list, "%d%d%d%d", 0, 1, 0, 1);
+ break;
+ case 12:
+ sprintf(list, "%d%d%d%d", 0, 1, 1, 0);
+ break;
+ case 17:
+ sprintf(list, "%d%d%d%d", 1, 0, 0, 1);
+ break;
+ case 5:
+ sprintf(list, "%d%d%d%d", 1, 0, 1, 0);
+ break;
+ case 20:
+ sprintf(list, "%d%d%d%d", 1, 1, 0, 0);
+ break;
+
+ case 25:
+ sprintf(list, "%d%d%d%d", 0, 0, 0, 1);
+ break;
+ case 13:
+ sprintf(list, "%d%d%d%d", 0, 0, 1, 0);
+ break;
+ case 28:
+ sprintf(list, "%d%d%d%d", 0, 1, 0, 0);
+ break;
+ case 21:
+ sprintf(list, "%d%d%d%d", 1, 0, 0, 0);
+ break;
+
+ case 29:
+ sprintf(list, "%d%d%d%d", 0, 0, 0, 0);
+ break;
+
+ default :
+ LOGE("qser_whitelist_get is error");
+ return -1;
+ }
+
+ LOGI("whitelist list: %s",list);
+ strncpy(whitelish, list, strlen(list));
+
+ return 0;
+}
+
+
+int qser_suspend_timer_set(int time, mbtk_sleep_callback_func cb)
+{
+ int ret = 0;
+ ret = mbtk_suspend_timer_set(time, cb);
+ if(0 > ret)
+ {
+ LOGE("qser_suspend_timer_set failed");
+ }
+
+
+ return ret;
+}
+
+