Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 clock.c | 19 ++++++++++++++++---
 tz.h    | 26 ++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 3 deletions(-)
 create mode 100644 tz.h

diff --git a/clock.c b/clock.c
index e9072ab..2c9e3f3 100644
--- a/clock.c
+++ b/clock.c
@@ -42,6 +42,7 @@
 #include "rtnl.h"
 #include "tlv.h"
 #include "tsproc.h"
+#include "tz.h"
 #include "uds.h"
 #include "util.h"
 
@@ -79,6 +80,15 @@ struct clock_subscriber {
        time_t expiration;
 };
 
+struct time_zone {
+       bool enabled;
+       int32_t current_offset;
+       int32_t jump_seconds;
+       uint16_t next_jump_msb;
+       uint32_t next_jump_lsb;
+       struct static_ptp_text display_name;
+};
+
 struct clock {
        enum clock_type type;
        struct config *config;
@@ -137,6 +147,7 @@ struct clock {
        struct monitor *slave_event_monitor;
        int step_window_counter;
        int step_window;
+       struct time_zone tz[MAX_TIME_ZONES];
 };
 
 struct clock the_clock;
@@ -896,19 +907,17 @@ int clock_required_modes(struct clock *c)
 struct clock *clock_create(enum clock_type type, struct config *config,
                           const char *phc_device)
 {
+       int conf_phc_index, i, max_adj = 0, phc_index, required_modes = 0, sfl, 
sw_ts;
        enum servo_type servo = config_get_int(config, NULL, "clock_servo");
        char ts_label[IF_NAMESIZE], phc[32], *tmp;
        enum timestamp_type timestamping;
-       int phc_index, conf_phc_index, required_modes = 0;
        struct clock *c = &the_clock;
-       int max_adj = 0, sw_ts;
        const char *uds_ifname;
        double fadj = 0.0;
        struct port *p;
        unsigned char oui[OUI_LEN];
        struct interface *iface;
        struct timespec ts;
-       int sfl;
 
        clock_gettime(CLOCK_REALTIME, &ts);
        srandom(ts.tv_sec ^ ts.tv_nsec);
@@ -1205,6 +1214,10 @@ struct clock *clock_create(enum clock_type type, struct 
config *config,
        c->dad.pds.observedParentClockPhaseChangeRate    = 0x7fffffff;
        c->dad.ptl = c->ptl;
 
+       for (i = 0; i < MAX_TIME_ZONES; i++) {
+               c->tz[i].display_name.max_symbols = MAX_TZ_DISPLAY_NAME;
+       }
+
        clock_sync_interval(c, 0);
 
        LIST_INIT(&c->subscribers);
diff --git a/tz.h b/tz.h
new file mode 100644
index 0000000..986f976
--- /dev/null
+++ b/tz.h
@@ -0,0 +1,26 @@
+/**
+ * @file tz.h
+ * @brief Implements time zone constants.
+ * @note Copyright (C) 2021 Richard Cochran <richardcoch...@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef HAVE_TZ_H
+#define HAVE_TZ_H
+
+#define MAX_TZ_DISPLAY_NAME    10
+#define MAX_TIME_ZONES         4
+
+#endif
-- 
2.30.2



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to