| /* |
| * Copyright (c) 2021 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #define USBIP_PORT 3240 |
| #define USBIP_VERSION 0x0111U |
| |
| /* Retrieve the list of exported devices command code */ |
| #define USBIP_OP_REQ_DEVLIST 0x8005U |
| /* Reply the list of exported devices command code */ |
| #define USBIP_OP_REP_DEVLIST 0x0005U |
| /* Request to import a remote device command code */ |
| #define USBIP_OP_REQ_IMPORT 0x8003U |
| /* Reply to import a remote device command code */ |
| #define USBIP_OP_REP_IMPORT 0x0003U |
| |
| /* Submit an URB command code */ |
| #define USBIP_CMD_SUBMIT 0x0001UL |
| /* Reply for submitting an URB command code */ |
| #define USBIP_RET_SUBMIT 0x0003UL |
| /* Unlink an URB command code */ |
| #define USBIP_CMD_UNLINK 0x0002UL |
| /* Reply for unlink an URB command code */ |
| #define USBIP_RET_UNLINK 0x0004UL |
| |
| /* Command direction */ |
| #define USBIP_DIR_OUT 0UL |
| #define USBIP_DIR_IN 1UL |
| |
| struct usbip_req_header { |
| uint16_t version; |
| uint16_t code; |
| uint32_t status; |
| } __packed; |
| |
| struct usbip_devlist_header { |
| uint16_t version; |
| uint16_t code; |
| uint32_t status; |
| uint32_t ndev; |
| } __packed; |
| |
| struct usbip_devlist_data { |
| char path[256]; |
| char busid[32]; |
| |
| uint32_t busnum; |
| uint32_t devnum; |
| uint32_t speed; |
| |
| uint16_t idVendor; |
| uint16_t idProduct; |
| uint16_t bcdDevice; |
| |
| uint8_t bDeviceClass; |
| uint8_t bDeviceSubClass; |
| uint8_t bDeviceProtocol; |
| uint8_t bConfigurationValue; |
| uint8_t bNumConfigurations; |
| uint8_t bNumInterfaces; |
| } __packed; |
| |
| struct usbip_devlist_iface_data { |
| uint8_t bInterfaceClass; |
| uint8_t bInterfaceSubClass; |
| uint8_t bInterfaceProtocol; |
| uint8_t padding; |
| } __packed; |
| |
| struct usbip_cmd_header { |
| uint32_t command; |
| uint32_t seqnum; |
| uint32_t devid; |
| uint32_t direction; |
| uint32_t ep; |
| } __packed; |
| |
| struct usbip_cmd_submit { |
| uint32_t flags; |
| uint32_t length; |
| int32_t start_frame; |
| int32_t numof_iso_pkts; |
| int32_t interval; |
| uint8_t setup[8]; |
| } __packed; |
| |
| struct usbip_cmd_unlink { |
| uint32_t seqnum; |
| uint32_t padding[6]; |
| } __packed; |
| |
| struct usbip_command { |
| struct usbip_cmd_header hdr; |
| |
| union { |
| struct usbip_cmd_submit submit; |
| struct usbip_cmd_unlink unlink; |
| }; |
| } __packed; |
| |
| struct usbip_ret_submit { |
| int32_t status; |
| uint32_t actual_length; |
| int32_t start_frame; |
| int32_t numof_iso_pkts; |
| int32_t error_count; |
| uint64_t setup; |
| } __packed; |
| |
| struct usbip_ret_unlink { |
| int32_t status; |
| uint32_t padding[6]; |
| } __packed; |
| |
| struct usbip_return { |
| struct usbip_cmd_header hdr; |
| |
| union { |
| struct usbip_ret_submit submit; |
| struct usbip_ret_unlink unlink; |
| }; |
| } __packed; |