USB MSC internals

nRF5 SDK v14.0.0

nRF52840 only: Internals of the USB MSC class. More...

Data Structures

struct app_usbd_msc_inst_t
MSC part of class instance data. More...
struct app_usbd_msc_ctx_t
MSC context. More...

Macros

#define APP_USBD_MSC_MINIMAL_SERIAL_STRING_SIZE (12 + 1)
Minimal serial string descriptor length.
#define APP_USBD_MSC_CONFIG (iface, endpoints)   ((iface, BRACKET_EXTRACT (endpoints)))
MSC configuration macro. More...
#define APP_USBD_MSC_INSTANCE_SPECIFIC_DEC app_usbd_msc_inst_t inst;
Specific class constant data for MSC. More...
#define APP_USBD_MSC_INST_CONFIG (descriptors, block_devs, block_buff, user_event_handler)
Configures MSC instance. More...
#define APP_USBD_MSC_DATA_SPECIFIC_DEC app_usbd_msc_ctx_t ctx;
Specific class data for MSC. More...
#define APP_USBD_MSC_DSC_CONFIG (interface_number,...)
MSC descriptors config macro. More...
#define APP_USBD_MSC_GLOBAL_DEF_INTERNAL (instance_name,interface_number,user_ev_handler,endpoint_list,blockdev_list,workbuffer_size)
Global definition of mass storage class instance. More...

Typedefs

typedef void(* app_usbd_msc_user_ev_handler_t )( app_usbd_class_inst_t const *p_inst, enum app_usbd_msc_user_event_e event)
User event handler. More...

Functions

APP_USBD_CLASS_FORWARD (app_usbd_msc)
Forward declaration of Mass Storage Class type.

Variables

const app_usbd_class_methods_t app_usbd_msc_class_methods
Public MSC class interface.

Detailed Description

nRF52840 only: Internals of the USB MSC class.

Macro Definition Documentation

#define APP_USBD_MSC_CONFIG ( iface,
endpoints
) ((iface, BRACKET_EXTRACT (endpoints)))

MSC configuration macro.

Used by APP_USBD_MSC_GLOBAL_DEF

Parameters
iface Interface number
endpoints Endpoint list
#define APP_USBD_MSC_DATA_SPECIFIC_DEC app_usbd_msc_ctx_t ctx;

Specific class data for MSC.

app_usbd_msc_ctx_t

#define APP_USBD_MSC_DSC_CONFIG ( interface_number,
...
)
Value:
{ \
APP_USBD_MSC_INTERFACE_DSC(interface_number, \
APP_USBD_MSC_EP_DSC( GET_VA_ARG_1 (__VA_ARGS__), \
64) \
}

MSC descriptors config macro.

Parameters
interface_number Interface number
... Extracted endpoint list
#define APP_USBD_MSC_GLOBAL_DEF_INTERNAL ( instance_name,
interface_number,
user_ev_handler,
endpoint_list,
blockdev_list,
workbuffer_size
)
Value:
static const uint8_t CONCAT_2 (instance_name, _dsc)[] = \
APP_USBD_MSC_DSC_CONFIG(interface_number, BRACKET_EXTRACT (endpoint_list)); \
static const nrf_block_dev_t * CONCAT_2 (instance_name, _blkdevs)[] = \
{ BRACKET_EXTRACT (blockdev_list) }; \
static uint32_t CONCAT_2 (instance_name, _block)[2 *(workbuffer_size) / sizeof (uint32_t)]; \
APP_USBD_CLASS_INST_GLOBAL_DEF( \
instance_name, \
app_usbd_msc, \
APP_USBD_MSC_CONFIG (interface_number, endpoint_list), \
( APP_USBD_MSC_INST_CONFIG ( CONCAT_2 (instance_name, _dsc), \
CONCAT_2 (instance_name, _blkdevs), \
CONCAT_2 (instance_name, _block), \
user_ev_handler)) \
)

Global definition of mass storage class instance.

#define APP_USBD_MSC_INST_CONFIG ( descriptors,
block_devs,
block_buff,
user_event_handler
)
Value:
.inst = { \
.p_raw_desc = descriptors, \
.raw_desc_size = sizeof (descriptors), \
.pp_block_devs = block_devs, \
.block_devs_count = ARRAY_SIZE(block_devs), \
.p_block_buff = block_buff, \
.block_buff_size = sizeof (block_buff) / 2, \
.user_ev_handler = user_event_handler, \
}

Configures MSC instance.

Parameters
descriptors Mass storage class descriptors (raw table)
block_devs Block devices list
block_buff Block buffer
user_event_handler User event handler
#define APP_USBD_MSC_INSTANCE_SPECIFIC_DEC app_usbd_msc_inst_t inst;

Specific class constant data for MSC.

app_usbd_msc_inst_t

Typedef Documentation

typedef void(* app_usbd_msc_user_ev_handler_t)( app_usbd_class_inst_t const *p_inst, enum app_usbd_msc_user_event_e event)

User event handler.

Parameters
[in] p_inst Class instance
[in] event User event

Enumeration Type Documentation

Internal module state.

Enumerator
APP_USBD_MSC_STATE_DISABLED

Internal module state DISABLED

APP_USBD_MSC_STATE_IDLE

Internal module state IDLE

APP_USBD_MSC_STATE_CBW

Internal module state CBW

APP_USBD_MSC_STATE_CMD_IN

Internal module state CMD_IN

APP_USBD_MSC_STATE_CMD_OUT

Internal module state CMD_OUT

APP_USBD_MSC_STATE_DATA_IN

Internal module state DATA_IN

APP_USBD_MSC_STATE_DATA_OUT

Internal module state DATA_OUT

APP_USBD_MSC_STATE_DATA_OUT_WAIT

Internal module state DATA_OUT_WAIT

APP_USBD_MSC_STATE_CSW

Internal module state CSW

APP_USBD_MSC_STATE_UNSUPPORTED

Internal module state UNSUPPORTED