116 lines
2.6 KiB
C
116 lines
2.6 KiB
C
/*
|
|
* Copyright (c) 2022 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_INCLUDE_USBD_DEVICE_H
|
|
#define ZEPHYR_INCLUDE_USBD_DEVICE_H
|
|
|
|
#include <zephyr/usb/usbd.h>
|
|
|
|
/**
|
|
* @brief Get device descriptor bNumConfigurations value
|
|
*
|
|
* @param[in] uds_ctx Pointer to a device context
|
|
*
|
|
* @return bNumConfigurations value
|
|
*/
|
|
static inline uint8_t usbd_get_num_configs(const struct usbd_contex *const uds_ctx)
|
|
{
|
|
struct usb_device_descriptor *desc = uds_ctx->desc;
|
|
|
|
return desc->bNumConfigurations;
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Set device descriptor bNumConfigurations value
|
|
*
|
|
* @param[in] uds_ctx Pointer to a device context
|
|
* @param[in] value new bNumConfigurations value
|
|
*/
|
|
static inline void usbd_set_num_configs(struct usbd_contex *const uds_ctx,
|
|
const uint8_t value)
|
|
{
|
|
struct usb_device_descriptor *desc = uds_ctx->desc;
|
|
|
|
desc->bNumConfigurations = value;
|
|
}
|
|
|
|
/**
|
|
* @brief Check whether USB device is enabled
|
|
*
|
|
* @param[in] node Pointer to a device context
|
|
*
|
|
* @return true if USB device is in enabled, false otherwise
|
|
*/
|
|
static inline bool usbd_is_enabled(const struct usbd_contex *const uds_ctx)
|
|
{
|
|
return uds_ctx->status.enabled;
|
|
}
|
|
|
|
/**
|
|
* @brief Check whether USB device is enabled
|
|
*
|
|
* @param[in] node Pointer to a device context
|
|
*
|
|
* @return true if USB device is in enabled, false otherwise
|
|
*/
|
|
static inline bool usbd_is_initialized(const struct usbd_contex *const uds_ctx)
|
|
{
|
|
return uds_ctx->status.initialized;
|
|
}
|
|
|
|
/**
|
|
* @brief Set device suspended status
|
|
*
|
|
* @param[in] uds_ctx Pointer to a device context
|
|
* @param[in] value new suspended value
|
|
*/
|
|
static inline void usbd_status_suspended(struct usbd_contex *const uds_ctx,
|
|
const bool value)
|
|
{
|
|
uds_ctx->status.suspended = value;
|
|
}
|
|
|
|
/**
|
|
* @brief Lock USB device stack context
|
|
*
|
|
* @param[in] node Pointer to a device context
|
|
*/
|
|
static inline void usbd_device_lock(struct usbd_contex *const uds_ctx)
|
|
{
|
|
k_mutex_lock(&uds_ctx->mutex, K_FOREVER);
|
|
}
|
|
|
|
/**
|
|
* @brief Lock USB device stack context
|
|
*
|
|
* @param[in] node Pointer to a device context
|
|
*/
|
|
static inline void usbd_device_unlock(struct usbd_contex *const uds_ctx)
|
|
{
|
|
k_mutex_unlock(&uds_ctx->mutex);
|
|
}
|
|
|
|
/**
|
|
* @brief Init USB device stack core
|
|
*
|
|
* @param[in] uds_ctx Pointer to a device context
|
|
*
|
|
* @return 0 on success, other values on fail.
|
|
*/
|
|
int usbd_device_init_core(struct usbd_contex *uds_ctx);
|
|
|
|
/**
|
|
* @brief Shutdown USB device stack core
|
|
*
|
|
* @param[in] uds_ctx Pointer to a device context
|
|
*
|
|
* @return 0 on success, other values on fail.
|
|
*/
|
|
int usbd_device_shutdown_core(struct usbd_contex *const uds_ctx);
|
|
|
|
#endif /* ZEPHYR_INCLUDE_USBD_DEVICE_H */
|