From fd6bb20116127f6ac903d4b03abac72a49baa1ae Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Sat, 27 Apr 2019 22:20:21 +0100 Subject: fish --- settime.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 settime.c (limited to 'settime.c') diff --git a/settime.c b/settime.c new file mode 100644 index 0000000..7361599 --- /dev/null +++ b/settime.c @@ -0,0 +1,156 @@ +/* + * Copyright 1996-2002 - Karl R. Hakimian and David Fries + * + * This file is part of datalink. + * + * Datalink 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. + * + * Datalink 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 datalink (see COPYING); if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/* settime: Example of Linux SDK for Timex watch. */ +/* Written by Karl R. Hakimian 10/3/96 */ +/* */ +/* Now warranty expressed or implied, use it as you see fit. */ + /* + * + * Modified by David Fries 7/11/99 + * - Added support for the Timex Datalink Ironman Triathlon + */ + +#include +#include +#include +#include +#include "datalink.h" + +extern char *tzname[]; + +int set_time(WatchInfoPtr wi) +{ + time_t now; + struct tm *now_s; + ListPtr times; + ItemPtr tp; + int isdst; + + now = time(NULL) + 9; /* Offset for sending to watch. */ + now_s = localtime(&now); + isdst = (now_s->tm_isdst > 0) ? 1 : 0; + + times = dl_new_list(); + times->download = 1; + tp = dl_new_item(wi, DL_TIME_TYPE); + + tp->data.time.hours = now_s->tm_hour; + tp->data.time.minutes = now_s->tm_min; + tp->data.time.seconds = now_s->tm_sec; + tp->data.time.month = now_s->tm_mon + 1; + tp->data.time.day = now_s->tm_mday; + tp->data.time.year = now_s->tm_year; +/* TODO: investigate, see change log */ + tp->data.time.dow = (now_s->tm_wday + 6) % 7; + tp->data.time.hour_fmt = 1; + tp->data.time.download = 1; + tp->data.time.label = tzname[isdst]; + dl_add_to_list(times, tp); + + if (isdst) + now -= 60 * 60; + else + now += 60 * 60; + + now_s = localtime(&now); + + tp = dl_new_item(wi, DL_TIME_TYPE); + + tp->data.time.hours = now_s->tm_hour; + tp->data.time.minutes = now_s->tm_min; + tp->data.time.seconds = now_s->tm_sec; + tp->data.time.month = now_s->tm_mon + 1; + tp->data.time.day = now_s->tm_mday; + tp->data.time.year = now_s->tm_year; +/* TODO: investigate, see change log */ + tp->data.time.dow = (now_s->tm_wday + 6) % 7; + tp->data.time.hour_fmt = 1; + tp->data.time.download = 1; + tp->data.time.label = tzname[1 - isdst]; + dl_add_to_list(times, tp); + + dl_init_download(wi, times, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL); + return (0); +} + +int my_error_proc(char *msg) +{ + fprintf(stderr, "ERROR: %s\n", msg); + exit(-1); +} + +int my_warn_proc(char *msg) +{ + fprintf(stderr, "WARNING: %s\n", msg); + return (0); +} + +int main( int argc, char ** argv) +{ + WatchInfoPtr wi; + +/* + Use my error proc to exit on error and my warn proc to ignore warnings +*/ + dl_set_error(my_error_proc); + dl_set_warn(my_error_proc); + + if(argc==2) + { + if(!strcmp("-model70",argv[1])||!strcmp("-70",argv[1])) + wi = dl_init_watch(DATALINK_70); + else + if(!strcmp("-model150",argv[1])||!strcmp("-150",argv[1])) + wi = dl_init_watch(DATALINK_150); + else + if(!strcmp("-model150s",argv[1])||!strcmp("-150s",argv[1])) + wi = dl_init_watch(DATALINK_150S); + else + if(!strcmp("-ironman",argv[1])) + wi = dl_init_watch(DATALINK_IRONMAN); + else + { + printf("Usage: %s [ -model70 | -70 | -model70 | " + "-150 | -model150 | -model150s | -150s |" + " -ironman]\nVersion " + "$Id: settime.c,v 1.13 2002/07/10 04:23:23 david Exp $\n", argv[0]); + printf("The default is -model150 " + "if none is specified\n"); + exit(1); + } + } + else + { + wi = dl_init_watch(DATALINK_IRONMAN); + } +/* + Set the time. +*/ + if (set_time(wi)) + exit(-1); +/* + Send it to the watch +*/ + dl_send_data(wi, SVGA_BLINK); + return 0; +} -- cgit v1.2.3