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;

+}

+

+