blob: 46ec4425cd9d94b715dbac5fbc78c8fa9e382c91 [file] [log] [blame]
you.chen5ef374a2023-12-26 17:25:16 +08001#include <stdio.h>
2#include <string.h>
3#include<stdlib.h>
4#include <time.h>
5#include <include/lynq_uci.h>
6#include "lynq_systime.h"
7
8
9#define LYNQ_SYNC_TIME_SECTION "lynq_sync_time"
10#define LYNQ_MODEM_TIME_KEY "lynq_modem_sync_time_enable"
11#define LYNQ_GNSS_TIME_KEY "lynq_gnss_sync_time_enable"
12
13#define BUF_LEN 258
14#define TIME_BUF 100
15
16#define NTP_RESTART_BUF "systemctl restart ntpd"
17#define NTP_STOP_BUF "systemctl stop ntpd"
18
19#define SYNC_TIME_SUCCESS 0
20
21#define NTP_ALREADY_ENABLE 1
22#define NTP_ALREADY_DISABLE 2
23
24//#define NITZ_ALREADY_ENABLE 3
25//#define NITZ_ALREADY_DISABLE 4
26//#define GNSS_ALREADY_ENABLE 5
27//#define GNSS_ALREADY_DISABLE 6
28#define OPEN_ERROR 7
29#define ERROR_PARA 8
30
31char* lynq_read_version()
32{
33 return "SYSTIME_V1.0";
34}
35
36int get_cmd_value(char *input_cmd, char *value)
37{
38 FILE * fp = NULL;
39 char buf[TIME_BUF] = {0};
40
41 fp = popen (input_cmd, "r");
42
43 if (!fp) {
44 printf("popen error\n");
45 return OPEN_ERROR;
46 }
47
48 while(fgets(buf, sizeof(buf), fp)!=NULL){
49 strcat(value, buf);
50 }
51
52 pclose(fp);
53 return 0;
54}
55
56int user_set_time(char *date_input, char *time_input)
57{
58 char date[TIME_BUF] = "";
59 char time[TIME_BUF] = "";
60
61 if(NULL == date_input || NULL == time_input)
62 return ERROR_PARA;
63
64 sprintf(date, "date -s %s", date_input);
65 sprintf(time, "date -s %s", time_input);
66
67 system(date);
68 system(time);
69 system("hwclock -w -f /dev/rtc0");
70 return 0;
71}
72
73int ntp_sync_time(int enable)
74{
75 char cmd_buf[TIME_BUF] = "pgrep ntpd";
76 char out_value[TIME_BUF] = {0};
77
78 if(enable != 0 && enable !=1)
79 return ERROR_PARA;
80
81 get_cmd_value(cmd_buf, out_value);
82 if(strlen(out_value))
83 {
84 if(enable)
85 {
86 return NTP_ALREADY_ENABLE;
87 }
88 else{
89 system(NTP_STOP_BUF);
90 return SYNC_TIME_SUCCESS;
91 }
92 }
93 else{
94 if(enable)
95 {
96 system(NTP_RESTART_BUF);
97 return SYNC_TIME_SUCCESS;
98 }
99 else{
100 return NTP_ALREADY_DISABLE;
101 }
102 }
103}
104
105int modem_time_enable(int enable)
106{
107 char buf[BUF_LEN] = "";
108 int ret = 0;
109
110 if(enable != 0 && enable !=1)
111 return ERROR_PARA;
112
113 if(enable)
114 {
115 //system("killall ntpd");
116 sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_MODEM_TIME_KEY, enable);
117 ret = lynq_uci_set(buf);
118 }
119 else
120 {
121 sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_MODEM_TIME_KEY, enable);
122 ret = lynq_uci_set(buf);
123 }
124
125 return ret;
126}
127
128int gnss_time_enable(int enable)
129{
130 char buf[BUF_LEN] = "";
131 int ret = 0;
132
133 if(enable != 0 && enable !=1)
134 return ERROR_PARA;
135
136 if(enable)
137 {
138 //system("killall ntpd");
139 sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_GNSS_TIME_KEY, enable);
140 ret = lynq_uci_set(buf);
141 }
142 else
143 {
144 sprintf(buf,"%s.%s.%s=%d", LYNQ_UCI_FILE, LYNQ_SYNC_TIME_SECTION, LYNQ_GNSS_TIME_KEY, enable);
145 ret = lynq_uci_set(buf);
146 }
147
148 return ret;
149}