Add mbtk/liblynq_lib_v2/ mbtk/libql_lib_v2/

Change-Id: Idbb802cd805b34603ccf65bff9818725a6955e51
diff --git a/mbtk/liblynq_lib_v2/src/lynq_time.c b/mbtk/liblynq_lib_v2/src/lynq_time.c
new file mode 100755
index 0000000..8f432f0
--- /dev/null
+++ b/mbtk/liblynq_lib_v2/src/lynq_time.c
@@ -0,0 +1,318 @@
+#include "lynq_systime.h"
+#include "mbtk_type.h"
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdio.h>
+#include <errno.h>
+#include <netdb.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+#include <netinet/in.h>
+
+#include <cutils/properties.h>
+#include <sys/time.h>
+
+
+#include "mbtk_ntp.h"
+#include "mbtk_net_control.h"
+#include "lynq_systime.h"
+#include "mbtk_type.h"
+
+
+#define MBTK_AT_NTP_LEN_MAX 128
+
+
+
+
+typedef enum {
+    LYNQ_TIME_TYPE_CELL = 0,  //NITZ
+    LYNQ_TIME_TYPE_NTP,
+    LYNQ_TIME_TYPE_GNSS,
+    LYNQ_TIME_TYPE_USER,
+    
+    LYNQ_TIME_TYPE_UNUSE
+} lynq_time_type_enum;
+
+//enable set time from ntp
+int ntp_sync_time(int enable); 
+//enable set time from nitz
+int modem_time_enable(int enable);
+//enable set time from gnss
+int gnss_time_enable(int enable);
+//enable set time from user
+int user_set_time(char* date, char* time);
+// RTC TIME set to system
+int lynq_sync_time_from_rtc(void);
+//check sysytem type
+int lynq_get_time_src_status (time_src_status_s * time_src);
+// system time set to RTC
+int lynq_set_rtc_time(void);
+// get RTC time
+int lynq_get_rtc_time(unsigned long *ulsec);
+
+
+
+//int req_time_set(int type, char *time, int *cme_err);
+static int metis_strptime(char *str_time)
+{
+    printf("%s(), str_time:%s\n", __FUNCTION__, str_time);
+    struct tm stm;
+    char dateTime[30];
+    struct timeval tv;
+    if(strptime(str_time, "%Y-%m-%d %H:%M:%S",&stm) != NULL)
+    {
+        time_t _t = mktime(&stm);
+        tv.tv_sec = _t;
+        if(settimeofday(&tv, NULL)) {
+            printf("Set time fail:%d");
+            return -1;
+        } else {
+            printf("Set time to %s.", str_time);
+            return 0;
+        }
+    } else {
+        printf("Set time fail.");
+        return -1;
+    }
+    return 0;
+}
+
+
+
+static void* ntp_pthread_run(int* ntp_flag)
+{
+    if (mbtk_net_state_get() == MBTK_NET_STATE_OFF) 
+    {
+        printf("Network is disconnected. Set time fail.");
+        if(NULL != ntp_flag)
+       {
+            *ntp_flag = -1;
+       }
+        return NULL;
+    }
+    printf("Network is connected.");
+
+    char time_type[10];
+    while(1){
+        memset(time_type, 0, 10);
+        property_get("persist.mbtk.time_type", time_type, "0");
+    	if(atoi(time_type) == LYNQ_TIME_TYPE_NTP) // NTP time
+    	{
+            char time_str[100] = {0};
+            time_t time = 0;
+            if((time = (time_t)mbtk_at_systime()) == 0) 
+            {
+                printf("NTP client fail!\n");
+                if(NULL != ntp_flag)
+                {
+                     *ntp_flag = -1;
+                }
+                return NULL;
+            }
+            struct tm *tm_t;
+            tm_t = localtime(&time);
+            strftime(time_str,128,"%F %T",tm_t);
+
+            // NTP time
+            metis_strptime(time_str);
+            break;
+    	} else {
+            break;
+    	}
+
+        sleep(64); // Sleep 64s.
+    }
+    if(NULL != ntp_flag)
+    {
+         *ntp_flag = 0;
+    }
+    return NULL;
+}
+
+int set_time_user(char* data_time_str)
+{
+
+    int ret = 0;
+    if(strlen(data_time_str) > 0)
+    {
+        ret = metis_strptime(data_time_str);
+    }
+
+    return ret;
+}
+
+
+//MBTK_TIME_TYPE_CELL = 0,  //NITZ
+//MBTK_TIME_TYPE_NTP,
+//MBTK_TIME_TYPE_GNSS,
+//MBTK_TIME_TYPE_USER
+void set_time_type(int mbtk_time_type)
+{
+    char type_str[10] = {0};
+    sprintf(type_str, "%d", mbtk_time_type);
+    property_set("persist.mbtk.time_type", type_str);
+
+    return;
+}
+
+
+
+
+int ntp_sync_time(int enable)
+{
+    if(0 != enable && 1 != enable)
+    {
+        return -1;
+    }
+    UNUSED(enable);
+    int ntp_status = 0;
+    if(enable)
+    {
+        ntp_pthread_run(&ntp_status);
+        if(ntp_status == 0)
+        {
+            set_time_type(LYNQ_TIME_TYPE_NTP);
+        }
+        else
+        {
+            set_time_type(LYNQ_TIME_TYPE_UNUSE);
+        }
+    }
+    else
+    {
+        set_time_type(LYNQ_TIME_TYPE_UNUSE);
+    }
+
+    return 0;
+}
+
+//enable set time from nitz
+int modem_time_enable(int enable)
+{
+    UNUSED(enable);
+
+    if(enable)
+    {
+        set_time_type(LYNQ_TIME_TYPE_CELL);
+    }
+    else
+    {
+        set_time_type(LYNQ_TIME_TYPE_UNUSE);
+    }
+    return 0;
+}
+
+
+//enable set time from gnss
+int gnss_time_enable(int enable)
+{
+    UNUSED(enable);
+    if(enable)
+    {
+        set_time_type(LYNQ_TIME_TYPE_GNSS);
+    }
+    else
+    {
+        set_time_type(LYNQ_TIME_TYPE_UNUSE);
+    }
+
+    return 0;
+}
+
+
+//enable set time from user
+int user_set_time(char* date, char* time)
+{
+    UNUSED(date);
+    UNUSED(time);
+    if(date == NULL || time == NULL)
+    {
+        return -1;
+    }
+
+    int ret = 0;
+    char time_str[128] ={0};
+    memset(time_str, 0x0, MBTK_AT_NTP_LEN_MAX);
+
+    char *p = time;
+    char *p1 = strstr(p, ":");
+    char *p2 = strstr(p1+1, ":");
+    if(p2 == NULL)
+    {
+        sprintf(time_str, "%s %s:00", date, time);  //2023-11-30 11:30
+        set_time_type(LYNQ_TIME_TYPE_USER);
+        ret = set_time_user(time_str);
+    }else
+    {
+        sprintf(time_str, "%s %s", date, time); //2023-11-30 11:30:31
+        set_time_type(LYNQ_TIME_TYPE_USER);
+        ret = set_time_user(time_str);
+    }
+
+    return ret;
+}
+
+
+//check sysytem type
+int lynq_get_time_src_status (time_src_status_s * time_src)
+{
+    UNUSED(time_src);
+    int type = 0;
+    char time_type[] ={0};
+    property_get("persist.mbtk.time_type", time_type, "0");
+
+    type = atoi(time_type);
+    printf("time_type :%d", type);
+    if(type == LYNQ_TIME_TYPE_NTP)
+    {
+        time_src->ntp = 1;
+        time_src->nitz = 0;
+        time_src->gnss = 0;
+    }
+    else if(type == LYNQ_TIME_TYPE_CELL)
+    {
+        time_src->ntp = 0;
+        time_src->nitz = 1;
+        time_src->gnss = 0;
+    }
+    else if(type == LYNQ_TIME_TYPE_GNSS)
+    {
+        time_src->ntp = 0;
+        time_src->nitz = 0;
+        time_src->gnss = 1;
+    }
+    else if(type == LYNQ_TIME_TYPE_UNUSE)
+    {
+        time_src->ntp = 0;
+        time_src->nitz = 0;
+        time_src->gnss = 0;
+    }
+
+    return 0;
+}
+
+// RTC TIME set to system
+int lynq_sync_time_from_rtc(void)
+{
+    system("hwclock --hctosys");
+    return 0;
+}
+
+// system time set to RTC
+int lynq_set_rtc_time(void)
+{
+//    system("hwclock --systohc");
+    system("hwclock -w rtc0");
+    return 0;
+}
+
+int lynq_get_rtc_time(unsigned long *ulsec)
+{
+    UNUSED(ulsec);
+
+    return 0;
+}
+
+