| /* |
| * Copyright (c) 2022 The Chromium OS Authors |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_SUBSYS_USBC_TIMER_H_ |
| #define ZEPHYR_SUBSYS_USBC_TIMER_H_ |
| |
| #include <zephyr/kernel.h> |
| |
| /** |
| * @brief USB-C Timer Object |
| */ |
| struct usbc_timer_t { |
| /** kernel timer */ |
| struct k_timer timer; |
| /** timeout value in ms */ |
| uint32_t timeout_ms; |
| /** flags to track timer status */ |
| atomic_t flags; |
| }; |
| |
| /** |
| * @brief Initialize a timer |
| * |
| * @param usbc_timer timer object |
| * @param timeout_ms timer timeout in ms |
| */ |
| void usbc_timer_init(struct usbc_timer_t *usbc_timer, uint32_t timeout_ms); |
| |
| /** |
| * @brief Start a timer |
| * |
| * @param usbc_timer timer object |
| */ |
| void usbc_timer_start(struct usbc_timer_t *usbc_timer); |
| |
| /** |
| * @brief Check if a timer has expired |
| * |
| * @param usbc_timer timer object |
| * @retval true if the timer has expired |
| */ |
| bool usbc_timer_expired(struct usbc_timer_t *usbc_timer); |
| |
| /** |
| * @brief Check if a timer has been started |
| * |
| * @param usbc_timer timer object |
| * @retval true if the timer is running |
| */ |
| bool usbc_timer_running(struct usbc_timer_t *usbc_timer); |
| |
| /** |
| * @brief Stop a timer |
| * |
| * @param usbc_timer timer object |
| */ |
| void usbc_timer_stop(struct usbc_timer_t *usbc_timer); |
| |
| #endif /* ZEPHYR_SUBSYS_USBC_TIMER_H_ */ |