Setup data bytes
struct __attribute__((packed)) DeviceRequest {
struct __attribute__((packed)) BmRequestType {
enum class Direction : uint8_t {
HostToDevice = 0,
DeviceToHost = 1
};
enum class Type : uint8_t {
Standard = 0,
Class = 1,
Vendor = 2,
Reserverd = 3
};
enum class Recipient : uint8_t {
Deivce = 0,
Interface = 1,
Endpoint = 2,
Other = 3
};
uint8_t direction: 1;
uint8_t type: 2;
uint8_t recipient: 5;
inline BmRequestType(Direction direction, Type type, Recipient recipient) :
direction{static_cast<uint8_t >(direction)}, type{static_cast<uint8_t >(type)},
recipient{static_cast<uint8_t >(recipient)} {}
};
BmRequestType bmRequestType;
uint8_t bRequest;
uint16_t wValue;
uint16_t wIndex;
uint16_t wLength;
};