On Mon, May 05 2014, Andrzej Pietrasiewicz wrote:
> Do I get it right that you suggest creating a struct and then
> memcpy'ing it to the destination buffer?
>
> Something on the lines of:
>
> struct usb_os_string {
>       __u8    bLength;
>       __u8    bDescriptorType;
>       __u8    qwSignature[OS_STRING_QW_SIGN_LEN];
>       __u8    bMS_VendorCode;
>       __u8    bPad;
> } __attribute__ ((packed));
>
> And then have cdev have a struct usb_os_string member instead of
> qw_sign and b_vendor_code?

I leave it up to you whether cdev should change, but I think get_string
should read something like:

        if (cdev->use_os_string && language == 0 && id == OS_STRING_IDX) {
                struct usb_os_string *b = buf;
                b->bLength = sizeof *b;
                b->bDescriptorType = USB_DT_STRING;
                STATIC_ASSERT(sizeof b->qwSignature == sizeof cdev->qw_sign);
                memcpy(&b->qwSignature, cdev->qw_sign, sizeof b->qwSignature);
                b->bMS_VendorCode = cdev->b_vendor_code;
                b->bPad = 0;
                return sizeof *b;
        }

Should cdev have usb_os_string member, get_string would be simpler but
cdev would be a bit bigger.

-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz    (o o)
ooo +--<[email protected]>--<xmpp:[email protected]>--ooO--(_)--Ooo--

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to