blob: a60088478075b2c1dfe3c0919855c871324c9d13 [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001/**@File lynq-systime-demo.cpp
2 *
3 * @Brief As a example for liblynq-systime.
4 *
5 * @Author sj.zhang
6 *
7 * @Date 2023-08-15
8 *
9 * @Version V1.0
10 *
11 * @copyright Copyright (c) MobileTek
12 */
13#include <stdio.h>
14#include <dlfcn.h>
15#include <string.h>
16#include <stdlib.h>
17#include <time.h>
18
19typedef struct time_source_status
20{
21 int ntp;
22 int nitz;
23 int gnss;
24} time_src_status_s;
25
26#ifdef MOBILETEK_TARGET_PLATFORM_T106
27int (*lynq_sync_time_from_rtc)(void);
28int (*lynq_set_rtc_time)(void);
29int (*lynq_get_rtc_time)(unsigned long *ulsec);
30
31#endif
32void *dlHandle_systime = NULL;
33int (*modem_time_enable)(int enable);
34int (*gnss_time_enable)(int enable);
35int (*ntp_sync_time)(int enable);
36int (*user_set_time)(char *date, char *time);
37int (*lynq_get_time_src_status)(time_src_status_s *time_src);
38int (*get_sync_time_result)();
39
40
41int lynq_ntp_sync_demo(int argc, char *argv[])
42{
43 int ret = -1;
44 if (argc != 3)
45 {
46 printf("Parameter number wrong !\n");
47 dlclose(dlHandle_systime);
48 return -1;
49 }
50 ntp_sync_time = (int (*)(int enable))dlsym(dlHandle_systime, "ntp_sync_time");
51 if (NULL == ntp_sync_time)
52 {
53 fprintf(stderr, "Failed to dlsym function ntp_sync_time : %s\n", dlerror());
54 dlclose(dlHandle_systime);
55 return -1;
56 }
57 ret = ntp_sync_time(atoi(argv[2]));
58 switch (ret)
59 {
60 case 0:
61 printf("set success!\n");
62 break;
63 case 1:
64 printf("NTP_ALREADY_ENABLE!\n");
65 break;
66 case 2:
67 printf("NTP_ALREADY_DISENABLE!\n");
68 break;
69 default:
70 break;
71 }
72 return ret;
73}
74
75int lynq_modem_sync_demo(int argc, char *argv[])
76{
77 int ret = -1;
78 if (argc != 3)
79 {
80 printf("Parameter number wrong !\n");
81 dlclose(dlHandle_systime);
82 return -1;
83 }
84 modem_time_enable = (int (*)(int enable))dlsym(dlHandle_systime, "modem_time_enable");
85 if (NULL == modem_time_enable)
86 {
87 fprintf(stderr, "Failed to dlsym function modem_time_enable: %s\n", dlerror());
88 dlclose(dlHandle_systime);
89 return -1;
90 }
91 ret = modem_time_enable(atoi(argv[2]));
92 printf("ret = %d\n", ret);
93 if (ret != 0 && ret != 4)
94 {
95 printf("modem_time_enable failed !\n");
96 dlclose(dlHandle_systime);
97 return -1;
98 }
99 return 0;
100}
101
102int lynq_gnss_sync_demo(int argc, char *argv[])
103{
104 int ret = -1;
105 if (argc != 3)
106 {
107 printf("Parameter number wrong !\n");
108 dlclose(dlHandle_systime);
109 return -1;
110 }
111 gnss_time_enable = (int (*)(int enable))dlsym(dlHandle_systime, "gnss_time_enable");
112 if (NULL == gnss_time_enable)
113 {
114 fprintf(stderr, "Failed to dlsym function gnss_time_enable: %s\n", dlerror());
115 dlclose(dlHandle_systime);
116 return -1;
117 }
118 ret = gnss_time_enable(atoi(argv[2]));
119 printf("ret = %d\n", ret);
120 if (ret != 0 && ret != 4)
121 {
122 printf("gnss_time_enable failed !\n");
123 dlclose(dlHandle_systime);
124 return -1;
125 }
126 return ret;
127}
128
129int lynq_user_set_time_demo(int argc, char *argv[])
130{
131 int ret = -1;
132 if (argc != 4)
133 {
134 printf("Parameter number wrong !\n");
135 dlclose(dlHandle_systime);
136 return -1;
137 }
138 user_set_time = (int (*)(char *date, char *time))dlsym(dlHandle_systime, "user_set_time");
139 if (NULL == user_set_time)
140 {
141 fprintf(stderr, "Failed to dlsym function user_set_time: %s\n", dlerror());
142 dlclose(dlHandle_systime);
143 return -1;
144 }
145 ret = user_set_time(argv[2], argv[3]);
146 return ret;
147}
148
149int lynq_get_time_src_status_demo(int arg_c, char *arg_v[])
150{
151 lynq_get_time_src_status = (int (*)(time_src_status_s *time_src))dlsym(dlHandle_systime, "lynq_get_time_src_status");
152 if (NULL == lynq_get_time_src_status)
153 {
154 fprintf(stderr, "Failed to dlsym function lynq_get_time_src_status : %s\n", dlerror());
155 dlclose(dlHandle_systime);
156 return -1;
157 }
158 time_src_status_s time_src = {0};
159 lynq_get_time_src_status(&time_src);
160 printf("time source status are :\nntp=%d\nnitz=%d\ngnss=%d\n", time_src.ntp, time_src.nitz, time_src.gnss);
161 return 0;
162}
163
164int lynq_get_sync_status_demo(int arg_c, char *arg_v[])
165{
166 get_sync_time_result = (int (*)(void))dlsym(dlHandle_systime, "get_sync_time_result");
167 int ret = 0;
168 if(NULL == get_sync_time_result)
169 {
170 printf("Failed to dlsym function get_sync_time_result: %s\n", dlerror());
171 dlclose(dlHandle_systime);
172 return -1;
173 }
174 ret = get_sync_time_result();
175 printf("get_sync_time_result = %d\n",ret);
176 dlclose(dlHandle_systime);
177 return 0;
178}
179
180int main(int argc, char *argv[])
181{
182 int ret = -1;
183 char *cmd = argv[1];
184 printf("enter lynq_systime_demo \n");
185 dlHandle_systime = dlopen("/lib/liblynq-systime.so", RTLD_NOW);
186 if (!dlHandle_systime)
187 {
188 fprintf(stderr, "Failed to load library: %s\n", dlerror());
189 return 1;
190 }
191
192 if (cmd == NULL)
193 {
194 printf("No command received!\n");
195 dlclose(dlHandle_systime);
196 return 1;
197 }
198 else if (strcmp(cmd, "ntp") == 0)
199 {
200 ret = lynq_ntp_sync_demo(argc, argv);
201 }
202 else if (strcmp(cmd, "nitz") == 0)
203 {
204 ret = lynq_modem_sync_demo(argc, argv);
205 }
206 else if (strcmp(cmd, "gnss") == 0)
207 {
208 ret = lynq_gnss_sync_demo(argc, argv);
209 }
210 else if (strcmp(cmd, "user") == 0)
211 {
212 ret = lynq_user_set_time_demo(argc, argv);
213 }
214#ifdef MOBILETEK_TARGET_PLATFORM_T106
215 else if (strcmp(cmd, "sync_rtc") == 0)
216 {
217 lynq_sync_time_from_rtc = (int (*)(void))dlsym(dlHandle_systime, "lynq_sync_time_from_rtc");
218 if (NULL == lynq_sync_time_from_rtc)
219 {
220 fprintf(stderr, "Failed to dlsym function lynq_sync_time_from_rtc : %s\n", dlerror());
221 dlclose(dlHandle_systime);
222 return -1;
223 }
224 ret = lynq_sync_time_from_rtc();
225 }
226 else if (strcmp(cmd, "rtc_set") == 0)
227 {
228 lynq_set_rtc_time = (int (*)(void))dlsym(dlHandle_systime, "lynq_set_rtc_time");
229 if (NULL == lynq_set_rtc_time)
230 {
231 fprintf(stderr, "Failed to dlsym function lynq_set_rtc_time : %s\n", dlerror());
232 dlclose(dlHandle_systime);
233 return -1;
234 }
235 ret = lynq_set_rtc_time();
236 }
237 else if (strcmp(cmd, "rtc_get") == 0)
238 {
239 lynq_get_rtc_time = (int (*)(unsigned long *ulsec))dlsym(dlHandle_systime, "lynq_get_rtc_time");
240 if (NULL == lynq_get_rtc_time)
241 {
242 fprintf(stderr, "Failed to dlsym function lynq_get_rtc_time : %s\n", dlerror());
243 dlclose(dlHandle_systime);
244 return -1;
245 }
246 unsigned long time_ret;
247 ret = lynq_get_rtc_time(&time_ret);
248 time_t tp = (time_t)time_ret;
249 char *rtc_time = ctime(&tp);
250 printf("rtc_time seconds = %lu\n", time_ret);
251 printf("rtc time = %s\n", rtc_time);
252 }
253#endif
254 else if (strcmp(cmd, "src_status") == 0)
255 {
256 ret = lynq_get_time_src_status_demo(argc, argv);
257 }
258 else if (strcmp(cmd,"sync_status") == 0)
259 {
260 ret = lynq_get_sync_status_demo(argc, argv);
261 }
262 else
263 {
264 printf("command wrong !\n");
265 dlclose(dlHandle_systime);
266 return -1;
267 }
268 if (0 != ret)
269 {
270 printf("ret = %d\n Command execution failure.\n", ret);
271 }
272 dlclose(dlHandle_systime);
273 return ret;
274}