USB CDC ACM internals

nRF5 SDK v17.0.2

nRF52840 only: Internals of the USB ACM class implementation. More...

Data Structures

struct app_usbd_cdc_acm_inst_t
CDC ACM class part of class instance data. More...
struct app_usbd_cdc_acm_notify_t
CDC ACM serial state class notify. More...
struct app_usbd_cdc_acm_req_t
CDC ACM class specific request handled via control endpoint. More...
struct cdc_rx_buffer_t
CDC ACM rx transfer buffer. More...
struct app_usbd_cdc_acm_ctx_t
CDC ACM class context. More...

Macros

#define APP_USBD_CDC_ACM_DEFAULT_INTERVAL 0x10
Default interval value for comm endpoint IN.
#define APP_USBD_CDC_ACM_CONFIG (iface_comm, epin_comm, iface_data, epin_data, epout_data)
CDC ACM class configuration macro. More...
#define APP_USBD_CDC_ACM_INSTANCE_SPECIFIC_DEC app_usbd_cdc_acm_inst_t inst;
Specific class constant data for cdc_acm class. More...
#define APP_USBD_CDC_ACM_INST_CONFIG (user_event_handler,comm_ifc,comm_ein,data_ifc,data_ein,data_eout,cdc_protocol,ep_list)
Configures cdc_acm class instance. More...
#define APP_USBD_CDC_ACM_DATA_SPECIFIC_DEC app_usbd_cdc_acm_ctx_t ctx;
Specific class data for cdc_acm class. More...
#define APP_USBD_CDC_ACM_DSC_CONFIG (interface_number,...)
CDC ACM class descriptors config macro. More...
#define APP_USBD_CDC_ACM_GLOBAL_DEF_INTERNAL (instance_name,user_ev_handler,comm_ifc,data_ifc,comm_ein,data_ein,data_eout,cdc_protocol)
Global definition of app_usbd_cdc_acm_t class. More...

Typedefs

typedef void(* app_usbd_cdc_acm_user_ev_handler_t )( app_usbd_class_inst_t const *p_inst, enum app_usbd_cdc_acm_user_event_e event)
User event handler. More...

Functions

APP_USBD_CLASS_FORWARD (app_usbd_cdc_acm)
Forward declaration of type defined by APP_USBD_CLASS_TYPEDEF in cdc_acm class.

Variables

const app_usbd_class_methods_t app_usbd_cdc_acm_class_methods
Public cdc_acm class interface.

Detailed Description

nRF52840 only: Internals of the USB ACM class implementation.

Macro Definition Documentation

#define APP_USBD_CDC_ACM_CONFIG ( iface_comm,
epin_comm,
iface_data,
epin_data,
epout_data
)
Value:
((iface_comm, epin_comm), \
(iface_data, epin_data, epout_data))

CDC ACM class configuration macro.

Used by APP_USBD_CDC_ACM_GLOBAL_DEF

Parameters
iface_comm Interface number of cdc_acm control.
epin_comm COMM subclass IN endpoint.
iface_data Interface number of cdc_acm DATA.
epin_data DATA subclass IN endpoint.
epout_data DATA subclass OUT endpoint.
#define APP_USBD_CDC_ACM_DATA_SPECIFIC_DEC app_usbd_cdc_acm_ctx_t ctx;

Specific class data for cdc_acm class.

app_usbd_cdc_acm_ctx_t

#define APP_USBD_CDC_ACM_DSC_CONFIG ( interface_number,
...
)
Value:
{ \
APP_USBD_CDC_ACM_INTERFACE_DSC(interface_number, \
0, \
0, \
APP_USBD_CDC_ACM_SUBCLASS_CDC_ACMCONTROL) \
}

CDC ACM class descriptors config macro.

Parameters
interface_number Interface number.
... Extracted endpoint list.
#define APP_USBD_CDC_ACM_GLOBAL_DEF_INTERNAL ( instance_name,
user_ev_handler,
comm_ifc,
data_ifc,
comm_ein,
data_ein,
data_eout,
cdc_protocol
)
Value:
static uint8_t CONCAT_2 (instance_name, _ep) = { \
(APP_USBD_EXTRACT_INTERVAL_FLAG(comm_ein) ? APP_USBD_EXTRACT_INTERVAL_VALUE(comm_ein) \
APP_USBD_CLASS_INST_GLOBAL_DEF( \
instance_name, \
app_usbd_cdc_acm, \
APP_USBD_CDC_ACM_CONFIG (comm_ifc, comm_ein, data_ifc, data_ein, data_eout), \
( APP_USBD_CDC_ACM_INST_CONFIG (user_ev_handler, \
comm_ifc, \
comm_ein, \
data_ifc, \
data_ein, \
data_eout, \
cdc_protocol, \
& CONCAT_2 (instance_name, _ep))) \
)

Global definition of app_usbd_cdc_acm_t class.

Parameters
instance_name Name of global instance.
user_ev_handler User event handler.
comm_ifc Interface number of cdc_acm control.
data_ifc Interface number of cdc_acm DATA.
comm_ein COMM subclass IN endpoint.
data_ein DATA subclass IN endpoint.
data_eout DATA subclass OUT endpoint.
cdc_protocol CDC protocol app_usbd_cdc_comm_protocol_t
#define APP_USBD_CDC_ACM_INST_CONFIG ( user_event_handler,
comm_ifc,
comm_ein,
data_ifc,
data_ein,
data_eout,
cdc_protocol,
ep_list
)
Value:
.inst = { \
.user_ev_handler = user_event_handler, \
.comm_interface = comm_ifc, \
.comm_epin = comm_ifc, \
.data_interface = data_ifc, \
.data_epin = data_ein, \
.data_epout = data_eout, \
.protocol = cdc_protocol, \
.p_ep_interval = ep_list \
}

Configures cdc_acm class instance.

Parameters
user_event_handler User event handler.
comm_ifc Interface number of cdc_acm control.
comm_ein COMM subclass IN endpoint.
data_ifc Interface number of cdc_acm DATA.
data_ein DATA subclass IN endpoint.
data_eout DATA subclass OUT endpoint.
cdc_protocol CDC protocol.
ep_list List of endpoints and intervals
#define APP_USBD_CDC_ACM_INSTANCE_SPECIFIC_DEC app_usbd_cdc_acm_inst_t inst;

Specific class constant data for cdc_acm class.

app_usbd_cdc_acm_inst_t

Typedef Documentation

typedef void(* app_usbd_cdc_acm_user_ev_handler_t)( app_usbd_class_inst_t const *p_inst, enum app_usbd_cdc_acm_user_event_e event)

User event handler.

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