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;