[Feature]merge code from svn

Change-Id: Iabce86599e7d0249b405f443242aec87ceeadb8d
diff --git a/src/lynq/lib/liblynq-systime/LICENSE b/src/lynq/lib/liblynq-systime/LICENSE
new file mode 100755
index 0000000..77f59ed
--- /dev/null
+++ b/src/lynq/lib/liblynq-systime/LICENSE
@@ -0,0 +1,31 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein is
+confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+the prior written permission of MediaTek inc. and/or its licensors, any
+reproduction, modification, use or disclosure of MediaTek Software, and
+information contained herein, in whole or in part, shall be strictly
+prohibited.
+
+MediaTek Inc. (C) 2015. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
+RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
+INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
+TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
+ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
+RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
+MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
+CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
diff --git a/src/lynq/lib/liblynq-systime/include/lynq_systime.h b/src/lynq/lib/liblynq-systime/include/lynq_systime.h
new file mode 100755
index 0000000..4627d70
--- /dev/null
+++ b/src/lynq/lib/liblynq-systime/include/lynq_systime.h
@@ -0,0 +1,22 @@
+#include <stdio.h>

+#include <string.h>

+#include <stdlib.h>

+#include <time.h>

+#include <include/lynq_uci.h>

+

+#ifndef _LYNQ_SYSTIME_H_

+#define _LYNQ_SYSTIME_H_

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+int modem_time_enable(int enable);

+

+int gnss_time_enable(int enable);

+

+int ntp_sync_time(int enable);

+

+#ifdef __cplusplus

+}

+#endif

+#endif
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-systime/makefile b/src/lynq/lib/liblynq-systime/makefile
new file mode 100755
index 0000000..7ae3e10
--- /dev/null
+++ b/src/lynq/lib/liblynq-systime/makefile
@@ -0,0 +1,90 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -std=gnu++14 \
+                -g -Os \
+                -flto \
+                -fPIC \
+                -DRIL_SHLIB \
+                -DATCI_PARSE \
+                -DKEEP_ALIVE \
+                -DECALL_SUPPORT \
+                -fpermissive \
+
+$(warning ################# C2K support: $(RAT_CONFIG_C2K_SUPPORT))
+ifeq ($(strip $(RAT_CONFIG_C2K_SUPPORT)), yes)
+    LOCAL_CFLAGS += -DC2K_SUPPORT
+
+endif
+
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsds)
+    LOCAL_CFLAGS += -DANDROID_SIM_COUNT_2 \
+                     -DANDROID_MULTI_SIM \
+                     -DMODE_DSDS
+endif
+
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsss)
+    LOCAL_CFLAGS += -DMODE_DSSS
+endif
+
+$(warning ################# TARGET_PLATFORM: $(TARGET_PLATFORM))
+ifeq ($(strip $(TARGET_PLATFORM)), mt2731)
+#$(warning #################add for debug $(ROOT), $(includedir))
+$(warning ################# TARGET_PLATFORM_MT2731)
+    LOCAL_CFLAGS += -DTARGET_PLATFORM_MT2731 \
+                    -DMD_93_SUPPORT
+else ifeq ($(strip $(TARGET_PLATFORM)), mt2635)
+$(warning ################# TARGET_PLATFORM_MT2635)
+    LOCAL_CFLAGS += -DTARGET_PLATFORM_MT2635 \
+                    -DMD_90_SUPPORT
+endif
+
+$(warning ################# RITA ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH   = .
+
+LOCAL_C_INCLUDES = \
+  -I. \
+  -I$(LOCAL_PATH)/include \
+
+
+LOCAL_LIBS := \
+    -L. \
+    -ldl \
+    -lpthread \
+    -llynq-uci \
+
+SOURCES = $(wildcard *.c wildcard *.h src/*.c)
+
+EXECUTABLE = liblynq-systime.so
+
+OBJECTS=$(SOURCES:.c=.o)
+
+
+.PHONY: build clean install pack_rootfs 
+
+all: build
+$(EXECUTABLE): $(OBJECTS)
+	$(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.c
+	$(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $< 
+
+build:  $(EXECUTABLE)
+	$(warning ########## build $(EXECUTABLE)  ##########)
+
+install:
+	mkdir -p $(ROOT)$(base_libdir)/
+	install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+	mkdir -p $(ROOT)$(includedir)/$(NAME)/sdk
+
+pack_rootfs:
+	mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+	mkdir -p $(PACK_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+.PHONY: clean
+clean:
+	$(RM) $(OBJECTS) $(EXECUTABLE)
diff --git a/src/lynq/lib/liblynq-systime/src/lynq_systime.c b/src/lynq/lib/liblynq-systime/src/lynq_systime.c
new file mode 100755
index 0000000..cd9fd57
--- /dev/null
+++ b/src/lynq/lib/liblynq-systime/src/lynq_systime.c
@@ -0,0 +1,132 @@
+#include <stdio.h>

+#include <string.h>

+#include<stdlib.h>

+#include <time.h>

+#include <include/lynq_uci.h>

+#include "lynq_systime.h"

+

+

+#define LYNQ_SYNC_TIME_SECTION "lynq_sync_time"

+#define LYNQ_MODEM_TIME_KEY "lynq_modem_sync_time_enable"

+#define LYNQ_GNSS_TIME_KEY "lynq_gnss_sync_time_enable"

+

+#define BUF_LEN 258

+#define  TIME_BUF 100

+

+#define  NTP_RESTART_BUF "systemctl restart ntpd"

+#define  NTP_STOP_BUF "systemctl stop ntpd"

+

+#define SYNC_TIME_SUCCESS 0

+

+#define NTP_ALREADY_ENABLE  1

+#define NTP_ALREADY_DISABLE 2

+

+//#define NITZ_ALREADY_ENABLE  3

+//#define NITZ_ALREADY_DISABLE 4

+//#define GNSS_ALREADY_ENABLE  5

+//#define GNSS_ALREADY_DISABLE 6

+#define OPEN_ERROR 7

+#define ERROR_PARA 8

+

+char* lynq_read_version()

+{

+    return "SYSTIME_V1.0";

+}

+

+int get_cmd_value(char *input_cmd, char *value)

+{

+    FILE * fp = NULL;

+    char buf[TIME_BUF] = {0};

+

+    fp = popen (input_cmd, "r");

+

+    if (!fp) {  

+        printf("popen error\n");

+        return OPEN_ERROR;

+    } 

+	

+    while(fgets(buf, sizeof(buf), fp)!=NULL){

+        strcat(value, buf);

+    }

+

+    pclose(fp);

+    return 0;

+}

+

+int ntp_sync_time(int enable)

+{

+    char cmd_buf[TIME_BUF] = "pgrep ntpd";

+    char out_value[TIME_BUF] = {0};

+    

+    if(enable != 0 && enable !=1)

+        return ERROR_PARA;

+	

+    get_cmd_value(cmd_buf, out_value);

+    if(strlen(out_value))

+    {

+        if(enable)

+        {

+            return NTP_ALREADY_ENABLE;

+        }

+        else{

+            system(NTP_STOP_BUF);

+            return SYNC_TIME_SUCCESS;

+        }

+    }

+    else{

+        if(enable)

+        {

+            system(NTP_RESTART_BUF);

+            return SYNC_TIME_SUCCESS;

+        }

+        else{

+            return NTP_ALREADY_DISABLE;

+        }	

+    }

+}

+

+int modem_time_enable(int enable)

+{

+    char buf[BUF_LEN] = "";

+    int ret = 0;

+    

+    if(enable != 0 && enable !=1)

+        return ERROR_PARA;

+    

+    if(enable)

+    {

+        system("killall ntpd");

+        sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_MODEM_TIME_KEY, enable);

+        ret = lynq_uci_set(buf);

+    }

+    else

+    {

+        sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_MODEM_TIME_KEY, enable);

+        ret = lynq_uci_set(buf);

+    }

+	

+    return ret;

+}

+

+int gnss_time_enable(int enable)

+{

+    char buf[BUF_LEN] = "";

+    int ret = 0;

+    

+    if(enable != 0 && enable !=1)

+        return ERROR_PARA;

+    

+    if(enable)

+    {

+        system("killall ntpd");

+        sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_GNSS_TIME_KEY, enable);

+        ret = lynq_uci_set(buf);

+    }

+    else

+    {

+        sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_GNSS_TIME_KEY, enable);

+        ret = lynq_uci_set(buf);

+    }

+	

+    return ret;

+}

diff --git a/src/lynq/lib/liblynq-uci/lynq_uci.config b/src/lynq/lib/liblynq-uci/lynq_uci.config
index eb68dbe..f19ffc1 100644
--- a/src/lynq/lib/liblynq-uci/lynq_uci.config
+++ b/src/lynq/lib/liblynq-uci/lynq_uci.config
@@ -8,6 +8,8 @@
 config  lynq_wifi_rw  'lynq_wifi'

         option gateway '192.168.11.1'

 

+config  lynq_sync_time_rw  'lynq_sync_time'

+

 config  lynq_autosuspend  'lynq_autosuspend'

         option auto_enable '0'

         option debug '1'