diff --git a/dtls_time.c b/dtls_time.c index 5d353b4f..982f5a1d 100644 --- a/dtls_time.c +++ b/dtls_time.c @@ -1,6 +1,6 @@ /******************************************************************************* * - * Copyright (c) 2011, 2012, 2013, 2014, 2015 Olaf Bergmann (TZI) and others. + * Copyright (c) 2011-2022 Olaf Bergmann (TZI) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v. 1.0 which accompanies this distribution. @@ -20,67 +20,17 @@ */ #include "tinydtls.h" -#include "dtls_time.h" -#ifdef WITH_CONTIKI -clock_time_t dtls_clock_offset; +#if defined (WITH_CONTIKI) +#include "platform-specific/dtls_time_contiki.c" -void -dtls_clock_init(void) { - clock_init(); - dtls_clock_offset = clock_time(); -} +#elif defined (RIOT_VERSION) +#include "platform-specific/dtls_time_riot.c" -void -dtls_ticks(dtls_tick_t *t) { - *t = clock_time(); -} +#elif defined (WITH_POSIX) +#include "platform-specific/dtls_time_posix.c" -#endif /* WITH_CONTIKI */ - -#ifdef RIOT_VERSION -dtls_tick_t dtls_clock_offset; - -void -dtls_clock_init(void) { - dtls_clock_offset = xtimer_now64().ticks64; -} - -void -dtls_ticks(dtls_tick_t *t) { - *t = xtimer_now64().ticks64 -dtls_clock_offset; -} - -#endif /* RIOT_VERSION */ - -#ifdef WITH_POSIX -time_t dtls_clock_offset; - -void -dtls_clock_init(void) { -#ifdef HAVE_TIME_H - dtls_clock_offset = time(NULL); #else -# ifdef __GNUC__ - /* Issue a warning when using gcc. Other prepropressors do - * not seem to have a similar feature. */ -# warning "cannot initialize clock" -# endif - dtls_clock_offset = 0; -#endif -} +#error platform specific time functions not defined -void dtls_ticks(dtls_tick_t *t) { -#ifdef HAVE_SYS_TIME_H - struct timeval tv; - gettimeofday(&tv, NULL); - *t = (tv.tv_sec - dtls_clock_offset) * DTLS_TICKS_PER_SECOND - + (tv.tv_usec * DTLS_TICKS_PER_SECOND / 1000000); -#else -#error "clock not implemented" #endif -} - -#endif /* WITH_POSIX */ - - diff --git a/platform-specific/dtls_time_contiki.c b/platform-specific/dtls_time_contiki.c new file mode 100644 index 00000000..d04ca7a1 --- /dev/null +++ b/platform-specific/dtls_time_contiki.c @@ -0,0 +1,31 @@ +/******************************************************************************* + * + * Copyright (c) 2011-2022 Olaf Bergmann (TZI) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v. 1.0 which accompanies this distribution. + * + * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Olaf Bergmann - initial API and implementation + * + *******************************************************************************/ + +#include "tinydtls.h" +#include "dtls_time.h" + +clock_time_t dtls_clock_offset; + +void +dtls_clock_init(void) { + clock_init(); + dtls_clock_offset = clock_time(); +} + +void +dtls_ticks(dtls_tick_t *t) { + *t = clock_time(); +} diff --git a/platform-specific/dtls_time_posix.c b/platform-specific/dtls_time_posix.c new file mode 100644 index 00000000..eeb97f01 --- /dev/null +++ b/platform-specific/dtls_time_posix.c @@ -0,0 +1,47 @@ +/******************************************************************************* + * + * Copyright (c) 2011-2022 Olaf Bergmann (TZI) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v. 1.0 which accompanies this distribution. + * + * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Olaf Bergmann - initial API and implementation + * + *******************************************************************************/ + +#include "tinydtls.h" +#include "dtls_time.h" + +time_t dtls_clock_offset; + +void +dtls_clock_init(void) { +#ifdef HAVE_TIME_H + dtls_clock_offset = time(NULL); +#else +# ifdef __GNUC__ + /* Issue a warning when using gcc. Other prepropressors do + * not seem to have a similar feature. */ +# warning "cannot initialize clock" +# endif + dtls_clock_offset = 0; +#endif +} + +void dtls_ticks(dtls_tick_t *t) { +#ifdef HAVE_SYS_TIME_H + struct timeval tv; + gettimeofday(&tv, NULL); + *t = (tv.tv_sec - dtls_clock_offset) * DTLS_TICKS_PER_SECOND + + (tv.tv_usec * DTLS_TICKS_PER_SECOND / 1000000); +#else +#error "clock not implemented" +#endif +} + + diff --git a/platform-specific/dtls_time_riot.c b/platform-specific/dtls_time_riot.c new file mode 100644 index 00000000..798fd897 --- /dev/null +++ b/platform-specific/dtls_time_riot.c @@ -0,0 +1,30 @@ +/******************************************************************************* + * + * Copyright (c) 2011-2022 Olaf Bergmann (TZI) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v. 1.0 which accompanies this distribution. + * + * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Olaf Bergmann - initial API and implementation + * + *******************************************************************************/ + +#include "tinydtls.h" +#include "dtls_time.h" + +dtls_tick_t dtls_clock_offset; + +void +dtls_clock_init(void) { + dtls_clock_offset = xtimer_now64().ticks64; +} + +void +dtls_ticks(dtls_tick_t *t) { + *t = xtimer_now64().ticks64 -dtls_clock_offset; +}