USB Descriptors

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;
};

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *