Microchip® Advanced Software Framework

udd_ctrl_request_t Struct Reference

Global variable to give and record information of the setup request management.

This global variable allows to decode and response a setup request. It can be updated by udc_process_setup() from UDC or *setup() from UDIs.

#include <udd.h>

Data Fields

void(* callback )(void)
 Callback called after reception of ZLP from setup request. More...
 
bool(* over_under_run )(void)
 Callback called when the buffer given (.payload) is full or empty. More...
 
uint8_t * payload
 Point to buffer to send or fill with data following SETUP packet This buffer must be word align for DATA IN phase (use prefix COMPILER_WORD_ALIGNED for buffer) More...
 
uint16_t payload_size
 Size of buffer to send or fill, and content the number of byte transfered. More...
 
usb_setup_req_t req
 Data received in USB SETUP packet Note: The swap of "req.wValues" from uin16_t to le16_t is done by UDD. More...
 

void(* udd_ctrl_request_t::callback)(void)

Callback called after reception of ZLP from setup request.

Referenced by udc_process_setup(), udc_req_std_dev_set_address(), udc_req_std_dev_set_feature(), udd_ctrl_endofrequest(), udd_ctrl_init(), and udi_cdc_comm_setup().

bool(* udd_ctrl_request_t::over_under_run)(void)

Callback called when the buffer given (.payload) is full or empty.

This one return false to abort data transfer, or true with a new buffer in .payload.

Referenced by udc_process_setup(), udd_ctrl_in_sent(), udd_ctrl_init(), and udd_ctrl_out_received().

uint8_t* udd_ctrl_request_t::payload

Point to buffer to send or fill with data following SETUP packet This buffer must be word align for DATA IN phase (use prefix COMPILER_WORD_ALIGNED for buffer)

Referenced by udc_req_std_dev_get_descriptor(), udd_ctrl_in_sent(), udd_ctrl_out_received(), udd_set_setup_payload(), and udi_cdc_comm_setup().

uint16_t udd_ctrl_request_t::payload_size

Size of buffer to send or fill, and content the number of byte transfered.

Referenced by udc_process_setup(), udc_req_std_dev_get_descriptor(), udd_ctrl_in_sent(), udd_ctrl_init(), udd_ctrl_out_received(), udd_set_setup_payload(), and udi_cdc_comm_setup().