/* * 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 /** * @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_ */