From 499445d8b1cac870abe3834adca1014f573ae1f5 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Mon, 27 Jul 2020 01:03:15 -0400 Subject: [PATCH] Implement patty_ax25_timer_ack_set() Implement patty_ax25_timer_ack_set() to set a timer to at least the value indicated in Timer T1 --- include/patty/ax25/sock.h | 3 +++ src/sock.c | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/patty/ax25/sock.h b/include/patty/ax25/sock.h index da7c9aa..036a406 100644 --- a/include/patty/ax25/sock.h +++ b/include/patty/ax25/sock.h @@ -102,6 +102,9 @@ void patty_ax25_sock_timer_ack_restart(patty_ax25_sock *sock); void patty_ax25_sock_timer_ack_cancel(patty_ax25_sock *sock); +void patty_ax25_sock_timer_ack_set(patty_ax25_sock *sock, + struct timeval *timer); + void patty_ax25_sock_timer_ack_sub(patty_ax25_sock *sock, struct timeval *elapsed); diff --git a/src/sock.c b/src/sock.c index 9f34dd4..60bc34a 100644 --- a/src/sock.c +++ b/src/sock.c @@ -192,6 +192,17 @@ void patty_ax25_sock_timer_ack_cancel(patty_ax25_sock *sock) { sock->timer_ack.tv_usec = 0; } +void patty_ax25_sock_timer_ack_set(patty_ax25_sock *sock, + struct timeval *timer) { + if (timercmp(&sock->timer_ack, timer, >)) { + struct timeval res; + + timeradd(timer, &sock->timer_ack, &res); + + memcpy(timer, &res, sizeof(*timer)); + } +} + void patty_ax25_sock_timer_ack_sub(patty_ax25_sock *sock, struct timeval *elapsed) { struct timeval res;