From b819569ef4840346e16f0b60a6fc0986066b3c40 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 5 Dec 2019 18:28:12 +0100 Subject: [PATCH] usb_video.h: build fixes - Remove duplicate and otherwise unused lendian_bitfield.h - Adjust listusb jamfile to use lendian_bitfield.h - Fix various typos in usb_video.h and restore some fields to make listusb happy --- headers/os/drivers/usb/USB_video.h | 196 +++++++++--------- .../graphics/common/lendian_bitfield.h | 95 --------- src/bin/listusb/Jamfile | 1 + 3 files changed, 102 insertions(+), 190 deletions(-) delete mode 100644 headers/private/graphics/common/lendian_bitfield.h diff --git a/headers/os/drivers/usb/USB_video.h b/headers/os/drivers/usb/USB_video.h index cca3119145..6fb6dafe22 100644 --- a/headers/os/drivers/usb/USB_video.h +++ b/headers/os/drivers/usb/USB_video.h @@ -17,7 +17,7 @@ enum { // Video Interface Class Code - USB_VIDEO_INTERFACE_VIDEO_CLASS = 0x0e + USB_VIDEO_DEVICE_CLASS = 0x0e }; @@ -68,7 +68,7 @@ enum { // Video Class-Specific VideoStreaming Interface descriptor subtypes USB_VIDEO_VS_FRAME_MJPEG = 0x07, USB_VIDEO_VS_FORMAT_MPEG2TS = 0x0a, USB_VIDEO_VS_FORMAT_DV = 0x0c, - USB_VIDDE_VS_COLORFORMAT = 0x0d, + USB_VIDEO_VS_COLORFORMAT = 0x0d, USB_VIDEO_VS_FORMAT_FRAME_BASED = 0x10, USB_VIDEO_VS_FRAME_FRAME_BASED = 0x11, USB_VIDEO_VS_FORMAT_STREAM_BASED = 0x12, @@ -202,7 +202,7 @@ typedef struct { following values: 0 = reserved, 1 = VideoControl interface, 2 = VideoStreaming interface. */ struct status_type { - LBITFIELD8_2 ( + B_LBITFIELD8_2 ( originator: 4, reserved: 4 ); @@ -286,7 +286,7 @@ typedef struct { typedef struct { uint8 header_length; struct header_info { - LBITFIELD8_8 ( + B_LBITFIELD8_8 ( frame_id: 1, end_of_frame: 1, presentation_time: 1, @@ -332,7 +332,7 @@ typedef struct { // a variable size uint8 control_size; struct controls { - LBITFIELD8_8 ( + B_LBITFIELD8_8 ( vendor_specific0 : 1, vendor_specific1 : 1, vendor_specific2 : 1, @@ -352,14 +352,14 @@ typedef struct { uint8 length; // 7 bytes uint8 descriptor_type; struct end_point_address { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( endpoint_number: 4, // Determined by the designer reserved: 3, // Reserved. Set to zero. direction: 1 // 0 = OUT, 1 = IN ); } _end_point_address; struct attributes { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( transfer_type: 2, // Must be set to 11 (Interrupt) synchronization_type: 2, // Must be set to 00 (None) reserved: 4 // Reserved. Must be set to zero @@ -422,14 +422,14 @@ typedef struct { uint8 num_formats; uint16 total_length; struct endpoint_address { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( endpoint_number: 4, // Determined by the designer reserved: 3, // Set to zero. direction: 1 // 0 = OUT, 1 = IN ); } _endpoint_address; struct info { - LBITFIELD8_2 ( + B_LBITFIELD8_2 ( dynamic_format_change_support: 1, reserved: 7 // Set to zero. ); @@ -443,7 +443,7 @@ typedef struct { // For four first bits, a bit set to 1 indicates that the named field // is supported by the Video Probe and Commit Control when // its format_index is 1: - LBITFIELD8_7 ( + B_LBITFIELD8_7 ( key_frame_rate: 1, p_frame_rate: 1, comp_quality: 1, @@ -481,7 +481,7 @@ typedef struct { uint8 num_formats; uint16 total_length; struct endpoint_address { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( endpoint_number: 4, // Determined by the designer reserved: 3, // Set to zero. direction: 1 // 0 = OUT @@ -493,7 +493,7 @@ typedef struct { // For four first bits, a bit set to 1 indicates that the named field // is supported by the Video Probe and Commit Control when its // format_index is 1: - LBITFIELD8_5 ( + B_LBITFIELD8_5 ( key_frame_rate: 1, p_frame_rate: 1, comp_quality: 1, @@ -514,80 +514,86 @@ typedef struct { uint8 source_id; uint16 max_multiplier; uint8 control_size; + union { #if B_HOST_IS_LENDIAN - struct controls { - struct control_a { - LBITFIELD16 ( - brightness: 1, - contrast: 1, - hue: 1, - saturation: 1, - sharpness: 1, - gamma: 1, - white_balance_temperature: 1, - white_balance_component: 1, - backlight_compensation: 1, - gain: 1, - power_line_frequency: 1, - hue_auto: 1, - white_balance_temperature_auto: 1, - white_balance_component_auto: 1, - digital_multiplier: 1, - digital_multiplier_limit: 1 - ); - } _control_a; - struct control_b { - LBITFIELD3 ( - analog_video_standard: 1, - analog_video_lock_status: 1, - reserved: 14 // Reserved. Se to zero. - ); - } _control_b; - } _controls; + struct { + struct control_a { + B_LBITFIELD16_16 ( + brightness: 1, + contrast: 1, + hue: 1, + saturation: 1, + sharpness: 1, + gamma: 1, + white_balance_temperature: 1, + white_balance_component: 1, + backlight_compensation: 1, + gain: 1, + power_line_frequency: 1, + hue_auto: 1, + white_balance_temperature_auto: 1, + white_balance_component_auto: 1, + digital_multiplier: 1, + digital_multiplier_limit: 1 + ); + } _control_a; + struct control_b { + B_LBITFIELD16_3 ( + analog_video_standard: 1, + analog_video_lock_status: 1, + reserved: 14 // Reserved. Se to zero. + ); + } _control_b; + } _controls; #else - struct controls { - struct control_b { - LBITFIELD3 ( - analog_video_standard: 1, - analog_video_lock_status: 1, - reserved: 14 // Reserved. Se to zero. - ); - } _control_b; - struct control_a { - LBITFIELD16 ( - brightness: 1, - contrast: 1, - hue: 1, - saturation: 1, - sharpness: 1, - gamma: 1, - white_balance_temperature: 1, - white_balance_component: 1, - backlight_compensation: 1, - gain: 1, - power_line_frequency: 1, - hue_auto: 1, - white_balance_temperature_auto: 1, - white_balance_component_auto: 1, - digital_multiplier: 1, - digital_multiplier_limit: 1 - ); - } _control_a; - } _controls; + struct { + struct control_b { + B_LBITFIELD16_3 ( + analog_video_standard: 1, + analog_video_lock_status: 1, + reserved: 14 // Reserved. Se to zero. + ); + } _control_b; + struct control_a { + B_LBITFIELD16_16 ( + brightness: 1, + contrast: 1, + hue: 1, + saturation: 1, + sharpness: 1, + gamma: 1, + white_balance_temperature: 1, + white_balance_component: 1, + backlight_compensation: 1, + gain: 1, + power_line_frequency: 1, + hue_auto: 1, + white_balance_temperature_auto: 1, + white_balance_component_auto: 1, + digital_multiplier: 1, + digital_multiplier_limit: 1 + ); + } _control_a; + } _controls; #endif + uint8_t controls[4]; + }; uint8 processing; - struct video_standards { - LBITFIELD8_8 ( - none: 1, - ntsc_525_60: 1, - pal_625_50: 1, - secam_625_50: 1, - ntsc_625_50: 1, - pal_525_60: 1, - reserved6: 1, // Reserved. Set to zero. - reserved7: 1 // Reserved. Set to zero. - ); - } _video_standards; + union { + struct video_standards { + B_LBITFIELD8_8 ( + none: 1, + ntsc_525_60: 1, + pal_625_50: 1, + secam_625_50: 1, + ntsc_625_50: 1, + pal_525_60: 1, + reserved6: 1, // Reserved. Set to zero. + reserved7: 1 // Reserved. Set to zero. + ); + } _video_standards; + uint8_t video_standards; + }; } _PACKED usb_video_processing_unit_descriptor; @@ -606,7 +612,7 @@ typedef struct { #if B_HOST_IS_LENDIAN struct controls { struct control_a { - LBITFIELD16 ( + B_LBITFIELD16_16 ( scanning_mode: 1, auto_exposure_mode: 1, auto_exposure_priority: 1, @@ -626,7 +632,7 @@ typedef struct { ); } _control_a; struct control_b { - LBITFIELD4 ( + B_LBITFIELD16_4 ( reserved16: 1, focus_auto: 1, privacy: 1, @@ -638,7 +644,7 @@ typedef struct { #else struct controls { struct control_b { - LBITFIELD4 ( + B_LBITFIELD16_4 ( reserved16: 1, focus_auto: 1, privacy: 1, @@ -647,7 +653,7 @@ typedef struct { ); } _contorl_b; struct control_a { - LBITFIELD16 ( + B_LBITFIELD16_16 ( scanning_mode: 1, auto_exposure_mode: 1, auto_exposure_priority: 1, @@ -692,13 +698,13 @@ typedef struct { } continuous; uint32 discrete_frame_intervals[0]; }; -} _PACKED; +} _PACKED usb_video_frame_descriptor; typedef struct { uint8 length; // 34 bytes struct hint { - LBITFIELD5 ( + B_LBITFIELD16_5 ( frame_interval: 1, key_frame_rate: 1, p_frame_rate: 1, @@ -718,7 +724,7 @@ typedef struct { uint32 max_payload_transfer_size; uint32 clock_frequency; struct framing_info { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( is_frame_id_required: 1, is_end_of_frame_present: 1, reserved: 6 @@ -758,14 +764,14 @@ typedef struct { typedef struct { uint8 length; // 7 bytes struct endpoint_address { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( endpoint_number: 4, // Determined by the designer reserved: 3, direction: 1 // Set to 1 = IN endpoint) ); } _endpoint_address; struct attributes { - LBITFIELD8_2 ( + B_LBITFIELD8_2 ( transfer_type: 2, // Set to 10 = Bulk reserved: 6 ); @@ -789,14 +795,14 @@ typedef struct { uint8 length; // 7 bytes uint8 descriptor_type; struct endpoint_address { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( endpoint_number: 4, // Determined by the designer reserved: 3, // Reset to zero. direction: 1 // 0 = OUT endpoint, 1 = IN endpoint ); } _endpoint_address; struct attributes { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( transfer_type: 2, // 01 = isochronous synchronization_type: 2, // 01 = asynchronous reserved: 4 @@ -811,14 +817,14 @@ typedef struct { uint8 length; // 7 bytes uint8 descriptor_type; struct endpoint_address { - LBITFIELD8_3 ( + B_LBITFIELD8_3 ( endpoint_number: 4, // Determined by the designer reserved: 3, // Reset to zero. direction: 1 // 0 = OUT endpoint ); } _endpoint_address; struct attributes { - LBITFIELD8_2 ( + B_LBITFIELD8_2 ( transfer_type: 2, // Set to 10 = Bulk reserved: 6 ); diff --git a/headers/private/graphics/common/lendian_bitfield.h b/headers/private/graphics/common/lendian_bitfield.h deleted file mode 100644 index dc48cef74e..0000000000 --- a/headers/private/graphics/common/lendian_bitfield.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef LENDIAN_BITFIELD_H -#define LENDIAN_BITFIELD_H - -#include - -#if B_HOST_IS_BENDIAN - -#define LBITFIELD8_2(b1,b2) uint8 b2,b1 -#define LBITFIELD8_3(b1,b2,b3) uint8 b3,b2,b1 -#define LBITFIELD8_4(b1,b2,b3,b4) uint8 b4,b3,b2,b1 -#define LBITFIELD8_5(b1,b2,b3,b4,b5) uint8 b5,b4,b3,b2,b1 -#define LBITFIELD8_6(b1,b2,b3,b4,b5,b6) uint8 b6,b5,b4,b3,b2,b1 -#define LBITFIELD8_7(b1,b2,b3,b4,b5,b6,b7) uint8 b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD8_8(b1,b2,b3,b4,b5,b6,b7,b8) uint8 b8,b7,b6,b5,b4,b3,b2,b1 - - -#define LBITFIELD2(b1,b2) uint16 b2,b1 -#define LBITFIELD3(b1,b2,b3) uint16 b3,b2,b1 -#define LBITFIELD4(b1,b2,b3,b4) uint16 b4,b3,b2,b1 -#define LBITFIELD5(b1,b2,b3,b4,b5) uint16 b5,b4,b3,b2,b1 -#define LBITFIELD6(b1,b2,b3,b4,b5,b6) uint16 b6,b5,b4,b3,b2,b1 -#define LBITFIELD7(b1,b2,b3,b4,b5,b6,b7) uint16 b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD8(b1,b2,b3,b4,b5,b6,b7,b8) uint16 b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint16 b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint16 b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint16 b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint16 b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint16 b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint16 b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint16 b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint16 b16,b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 - -#define LBITFIELD32_2(b1,b2) uint32 b2,b1 -#define LBITFIELD32_3(b1,b2,b3) uint32 b3,b2,b1 -#define LBITFIELD32_4(b1,b2,b3,b4) uint32 b4,b3,b2,b1 -#define LBITFIELD32_5(b1,b2,b3,b4,b5) uint32 b5,b4,b3,b2,b1 -#define LBITFIELD32_6(b1,b2,b3,b4,b5,b6) uint32 b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_7(b1,b2,b3,b4,b5,b6,b7) uint32 b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_8(b1,b2,b3,b4,b5,b6,b7,b8) uint32 b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint32 b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint32 b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint32 b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint32 b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint32 b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint32 b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint32 b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 -#define LBITFIELD32_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint32 b16,b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1 - -#elif B_HOST_IS_LENDIAN - -#define LBITFIELD8_2(b1,b2) uint8 b1,b2 -#define LBITFIELD8_3(b1,b2,b3) uint8 b1,b2,b3 -#define LBITFIELD8_4(b1,b2,b3,b4) uint8 b1,b2,b3,b4 -#define LBITFIELD8_5(b1,b2,b3,b4,b5) uint8 b1,b2,b3,b4,b5 -#define LBITFIELD8_6(b1,b2,b3,b4,b5,b6) uint8 b1,b2,b3,b4,b5,b6 -#define LBITFIELD8_7(b1,b2,b3,b4,b5,b6,b7) uint8 b1,b2,b3,b4,b5,b6,b7 -#define LBITFIELD8_8(b1,b2,b3,b4,b5,b6,b7,b8) uint8 b1,b2,b3,b4,b5,b6,b7,b8 - -#define LBITFIELD2(b1,b2) uint16 b1,b2 -#define LBITFIELD3(b1,b2,b3) uint16 b1,b2,b3 -#define LBITFIELD4(b1,b2,b3,b4) uint16 b1,b2,b3,b4 -#define LBITFIELD5(b1,b2,b3,b4,b5) uint16 b1,b2,b3,b4,b5 -#define LBITFIELD6(b1,b2,b3,b4,b5,b6) uint16 b1,b2,b3,b4,b5,b6 -#define LBITFIELD7(b1,b2,b3,b4,b5,b6,b7) uint16 b1,b2,b3,b4,b5,b6,b7 -#define LBITFIELD8(b1,b2,b3,b4,b5,b6,b7,b8) uint16 b1,b2,b3,b4,b5,b6,b7,b8 -#define LBITFIELD9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9 -#define LBITFIELD10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10 -#define LBITFIELD11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11 -#define LBITFIELD12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12 -#define LBITFIELD13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 -#define LBITFIELD14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 -#define LBITFIELD15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15 -#define LBITFIELD16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16 - -#define LBITFIELD32_2(b1,b2) uint32 b1,b2 -#define LBITFIELD32_3(b1,b2,b3) uint32 b1,b2,b3 -#define LBITFIELD32_4(b1,b2,b3,b4) uint32 b1,b2,b3,b4 -#define LBITFIELD32_5(b1,b2,b3,b4,b5) uint32 b1,b2,b3,b4,b5 -#define LBITFIELD32_6(b1,b2,b3,b4,b5,b6) uint32 b1,b2,b3,b4,b5,b6 -#define LBITFIELD32_7(b1,b2,b3,b4,b5,b6,b7) uint32 b1,b2,b3,b4,b5,b6,b7 -#define LBITFIELD32_8(b1,b2,b3,b4,b5,b6,b7,b8) uint32 b1,b2,b3,b4,b5,b6,b7,b8 -#define LBITFIELD32_9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9 -#define LBITFIELD32_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10 -#define LBITFIELD32_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11 -#define LBITFIELD32_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12 -#define LBITFIELD32_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 -#define LBITFIELD32_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14 -#define LBITFIELD32_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15 -#define LBITFIELD32_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16 - -#else -#error "Unknown host endianness" -#endif - -#endif /* LENDIAN_BITFIELD_H */ diff --git a/src/bin/listusb/Jamfile b/src/bin/listusb/Jamfile index a759a0df65..f478d3df44 100644 --- a/src/bin/listusb/Jamfile +++ b/src/bin/listusb/Jamfile @@ -1,6 +1,7 @@ SubDir HAIKU_TOP src bin listusb ; UsePrivateHeaders shared usb ; +UsePrivateHeaders drivers ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers usb ] ; BinCommand listusb :