annotate uptools/atcmd/settime.c @ 407:19e5a3e2f9c0

fcup-settime: moved time() retrieval a little closer to the output A fundamental problem with all simple time transfer tools is that there is always some delay between the time retrieval on the source system and that transmitted time being set on the destination, and the resulting time on the destination system is off by that delay amount. This delay cannot be fully eliminated when working in a simple environment like ours, but we should make our best effort to minimize it. In the present case, moving the atinterf_init() call before the time() retrieval should make a teensy-tiny improvement.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 11 Aug 2018 21:52:17 +0000
parents b61b81d3cece
children dc2fd8e6f42c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
387
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This utility sends an AT+CCLK command to the GSM device to set its time
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * to the host's notion of local time.
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <time.h>
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <unistd.h>
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include "../../rvinterf/include/exitcodes.h"
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 main(argc, argv)
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 char **argv;
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 {
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 int c;
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 extern int optind;
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 time_t unixtime;
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 struct tm *tm;
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 char command[32];
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 while ((c = getopt(argc, argv, "B:np:RX:")) != EOF)
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 if (!atinterf_cmdline_opt(c)) {
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 /* error msg already printed */
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 exit(ERROR_USAGE);
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 }
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 if (argc != optind) {
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 fprintf(stderr, "usage: %s [options]\n", argv[0]);
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 exit(ERROR_USAGE);
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 }
407
19e5a3e2f9c0 fcup-settime: moved time() retrieval a little closer to the output
Mychaela Falconia <falcon@freecalypso.org>
parents: 387
diff changeset
30 atinterf_init();
387
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 time(&unixtime);
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 tm = localtime(&unixtime);
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 sprintf(command, "AT+CCLK=\"%02d/%02d/%02d,%02d:%02d:%02d%+03d\"",
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 tm->tm_year % 100, tm->tm_mon + 1, tm->tm_mday,
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_gmtoff / (15*60));
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 atinterf_exec_cmd_needok(command, 0, 0);
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 exit(0);
b61b81d3cece fcup-settime program written, compiles, produces expected AT+CCLK command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }