nRF52840 only: Core module that manages current USB state and process device requests. More...
Data Structures | |
struct | app_usbd_core_setup_data_handler_desc_t |
Variable type used to register EP0 transfer handler. More... | |
struct | CONCAT_2 |
Declare Core instance type. More... | |
Macros | |
#define | APP_USB_STATE_BASE(state) ((state) & (~APP_USBD_STATE_SuspendedMask)) |
Remove APP_USBD_STATE_SuspendedMask bit from core state. | |
#define | APP_USBD_CORE_CLASS_CONFIGURATION ((0, NRF_DRV_USBD_EPOUT0, NRF_DRV_USBD_EPIN0)) |
Core interface configuration. More... | |
Typedefs | |
typedef ret_code_t(* | app_usbd_core_setup_data_handler_t )(nrf_drv_usbd_ep_status_t status, void *p_context) |
EP0 handler function pointer. More... | |
typedef struct CONCAT_2 | _data_t |
Enumerations | |
enum | app_usbd_state_t { APP_USBD_STATE_Disabled = 0x00, APP_USBD_STATE_Unattached = 0x01, APP_USBD_STATE_Powered = 0x02, APP_USBD_STATE_Default = 0x03, APP_USBD_STATE_Addressed = 0x04, APP_USBD_STATE_Configured = 0x05, APP_USBD_STATE_SuspendedMask = 0x10, APP_USBD_STATE_SuspendedPowered = APP_USBD_STATE_SuspendedMask | APP_USBD_STATE_Powered, APP_USBD_STATE_SuspendedDefault = APP_USBD_STATE_SuspendedMask | APP_USBD_STATE_Default, APP_USBD_STATE_SuspendedAddressed = APP_USBD_STATE_SuspendedMask | APP_USBD_STATE_Addressed, APP_USBD_STATE_SuspendedConfigured = APP_USBD_STATE_SuspendedMask | APP_USBD_STATE_Configured } |
USB Device state. More... | |
Functions | |
union | CONCAT_2 (app_usbd_core, _u) |
CONCAT_2 (app_usbd_core, _t) | |
static app_usbd_class_inst_t const * | app_usbd_core_instance_access (void) |
Access to core instance. More... | |
ret_code_t | app_usbd_core_setup_rsp (app_usbd_setup_t const *p_setup, void const *p_data, size_t size) |
Default simple response to setup command. More... | |
ret_code_t | app_usbd_core_setup_data_handler_set (nrf_drv_usbd_ep_t ep, app_usbd_core_setup_data_handler_desc_t const *const p_handler_desc) |
Configure the handler for the nearest setup data endpoint transfer. More... | |
ret_code_t | app_usbd_core_ep_transfer (nrf_drv_usbd_ep_t ep, nrf_drv_usbd_transfer_t const *const p_transfer, nrf_drv_usbd_transfer_handler_desc_t const *const p_handler) |
Endpoint transfer. More... | |
ret_code_t | app_usbd_core_setup_data_transfer (nrf_drv_usbd_ep_t ep, nrf_drv_usbd_transfer_t const *const p_transfer, nrf_drv_usbd_transfer_handler_desc_t const *const p_handler) |
Setup data transfer. More... | |
void * | app_usbd_core_setup_transfer_buff_get (size_t *p_size) |
Setup data transfer buffer. More... | |
app_usbd_state_t | app_usbd_core_state_get (void) |
Return internal USBD core state. More... | |
static bool | app_usbd_core_power_regulator_is_ready (void) |
Check current USBD regulator status. More... | |
void | app_usbd_core_class_rwu_register (app_usbd_class_inst_t const *const p_inst) |
Register class on remote wake-up feature. More... | |
void | app_usbd_core_class_rwu_unregister (app_usbd_class_inst_t const *const p_inst) |
Unregister class from remote wake-up feature. More... | |
void | app_usbd_core_class_rwu_pend (void) |
Set remote wake-up pending. | |
nRF52840 only: Core module that manages current USB state and process device requests.
#define APP_USBD_CORE_CLASS_CONFIGURATION ((0, NRF_DRV_USBD_EPOUT0, NRF_DRV_USBD_EPIN0)) |
Core interface configuration.
Core instance would have 2 endpoints (IN0 and OUT0). The interface number does not care because it would not be used.
typedef ret_code_t(* app_usbd_core_setup_data_handler_t)(nrf_drv_usbd_ep_status_t status, void *p_context) |
EP0 handler function pointer.
Type of the variable that would hold the pointer to the handler for endpoint 0 messages processing.
p_contex | Context variable configured with the transmission request. |
enum app_usbd_state_t |
USB Device state.
Possible USB Device states according to specification.
void app_usbd_core_class_rwu_register | ( | app_usbd_class_inst_t const *const | p_inst | ) |
Register class on remote wake-up feature.
[in] | p_inst | Instance of the class |
void app_usbd_core_class_rwu_unregister | ( | app_usbd_class_inst_t const *const | p_inst | ) |
Unregister class from remote wake-up feature.
[in] | p_inst | Instance of the class |
ret_code_t app_usbd_core_ep_transfer | ( | nrf_drv_usbd_ep_t | ep, |
nrf_drv_usbd_transfer_t const *const | p_transfer, | ||
nrf_drv_usbd_transfer_handler_desc_t const *const | p_handler | ||
) |
Endpoint transfer.
ep | Endpoint number |
p_transfer | Description of the transfer to be performed. The direction of the transfer is determined by the endpoint number. |
p_handler | The transfer handler - function that is called when transfer is going to end or overload the buffer. This function can prepare another buffer. Can be NULL if no such functionality is expected. |
NRF_ERROR_INVALID_STATE | The state of the USB device does not allow data transfer on the endpoint. |
|
inlinestatic |
Access to core instance.
Function that returns pointer to the USBD core instance.
|
inlinestatic |
Check current USBD regulator status.
ret_code_t app_usbd_core_setup_data_handler_set | ( | nrf_drv_usbd_ep_t | ep, |
app_usbd_core_setup_data_handler_desc_t const *const | p_handler_desc | ||
) |
Configure the handler for the nearest setup data endpoint transfer.
This function would be called on incomming setup data. The correct place to set the handler for a data is when SETUP command was received.
ep | Endpoint number (only IN0 and OUT0) are supported. |
p_handler_desc | Descriptor of the handler to be called. |
NRF_SUCCESS | Successfully configured |
NRF_ERROR_INVALID_ADDR | Last received setup direction does not match configured endpoint. |
ret_code_t app_usbd_core_setup_data_transfer | ( | nrf_drv_usbd_ep_t | ep, |
nrf_drv_usbd_transfer_t const *const | p_transfer, | ||
nrf_drv_usbd_transfer_handler_desc_t const *const | p_handler | ||
) |
Setup data transfer.
Function similar to app_usbd_core_ep_transfer. The only technical diference is that it should be used with setup transfers that are going to be performed before device is configured.
ep | See app_usbd_core_ep_transfer. |
p_transfer | See app_usbd_core_ep_transfer. |
p_handler | See app_usbd_core_ep_transfer. |
ret_code_t app_usbd_core_setup_rsp | ( | app_usbd_setup_t const * | p_setup, |
void const * | p_data, | ||
size_t | size | ||
) |
Default simple response to setup command.
This function generates default simple response. It sends ZLP when required and on takes care on allowing status stage when transfer is finished.
p_setup | Pointer to original setup message |
p_data | Pointer to the response. This has to be globaly aviable data. |
size | Total size of the answer - The function takes care about limiting the size of transfered data to the size required by setup command. |
void* app_usbd_core_setup_transfer_buff_get | ( | size_t * | p_size | ) |
Setup data transfer buffer.
Returns special internal buffer that can be used in setup transfer.
app_usbd_state_t app_usbd_core_state_get | ( | void | ) |
Return internal USBD core state.