blob: ca6ce038ad05fcf80fe24d3df465ac648e1b12cb [file] [log] [blame]
/*
* 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_ */