| /** @file |
| * @brief Network timer with wrap around |
| * |
| * Timer that runs longer than about 49 days needs to calculate wraps. |
| */ |
| |
| /* |
| * Copyright (c) 2018 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_NET_NET_TIMEOUT_H_ |
| #define ZEPHYR_INCLUDE_NET_NET_TIMEOUT_H_ |
| |
| /** |
| * @brief Network long timeout primitives and helpers |
| * @defgroup net_timeout Network long timeout primitives and helpers |
| * @ingroup networking |
| * @{ |
| */ |
| |
| #include <string.h> |
| #include <zephyr/types.h> |
| #include <stdbool.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** Let the max timeout be 100 ms lower because of |
| * possible rounding in delayed work implementation. |
| */ |
| #define NET_TIMEOUT_MAX_VALUE ((u32_t)(INT32_MAX - 100)) |
| |
| /** Generic struct for handling network timeouts */ |
| struct net_timeout { |
| /** Used to track timers */ |
| sys_snode_t node; |
| |
| /** Address lifetime timer start time */ |
| u32_t timer_start; |
| |
| /** Address lifetime timer timeout in milliseconds. Note that this |
| * value is signed as k_delayed_work_submit() only supports signed |
| * delay value. |
| */ |
| s32_t timer_timeout; |
| |
| /** Timer wrap count. Used if the timer timeout is larger than |
| * about 24 days. The reason we need to track wrap arounds, is |
| * that the timer timeout used in k_delayed_work_submit() is |
| * 32-bit signed value and the resolution is 1ms. |
| */ |
| s32_t wrap_counter; |
| }; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| /** |
| * @} |
| */ |
| |
| |
| #endif /* ZEPHYR_INCLUDE_NET_NET_TIMEOUT_H_ */ |