Squashed 'LYNQ_PUBLIC/' content from commit 79d8f932f
git-subtree-dir: LYNQ_PUBLIC
git-subtree-split: 79d8f932fb4ebc4b5aec6c5ace97634912394272
Change-Id: If2527ba937f56fe989487bf71e996f7cfd9fbe61
diff --git a/common_src/lib/liblynq-systime/src/lynq_systime.c b/common_src/lib/liblynq-systime/src/lynq_systime.c
new file mode 100755
index 0000000..46ec442
--- /dev/null
+++ b/common_src/lib/liblynq-systime/src/lynq_systime.c
@@ -0,0 +1,149 @@
+#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 user_set_time(char *date_input, char *time_input)
+{
+ char date[TIME_BUF] = "";
+ char time[TIME_BUF] = "";
+
+ if(NULL == date_input || NULL == time_input)
+ return ERROR_PARA;
+
+ sprintf(date, "date -s %s", date_input);
+ sprintf(time, "date -s %s", time_input);
+
+ system(date);
+ system(time);
+ system("hwclock -w -f /dev/rtc0");
+ 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;
+}