USB_massbulk.h: use a proper naming for a public header.

This commit is contained in:
Jérôme Duval
2014-08-03 18:39:35 +02:00
parent d9ecf5f373
commit 92d556084c
2 changed files with 36 additions and 30 deletions
+12 -12
View File
@@ -10,19 +10,19 @@
// Reference: http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf // Reference: http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf
#define USB_MASS_STORAGE_DEVICE_CLASS 0x08 #define USB_MASS_STORAGE_DEVICE_CLASS 0x08
#define CBW_SIGNATURE 0x43425355 #define USB_MASSBULK_CBW_SIGNATURE 0x43425355
#define CBW_DATA_OUTPUT 0x00 #define USB_MASSBULK_CBW_DATA_OUTPUT 0x00
#define CBW_DATA_INPUT 0x80 #define USB_MASSBULK_CBW_DATA_INPUT 0x80
#define CSW_SIGNATURE 0x53425355 #define USB_MASSBULK_CSW_SIGNATURE 0x53425355
#define CSW_STATUS_COMMAND_PASSED 0x00 #define USB_MASSBULK_CSW_STATUS_COMMAND_PASSED 0x00
#define CSW_STATUS_COMMAND_FAILED 0x01 #define USB_MASSBULK_CSW_STATUS_COMMAND_FAILED 0x01
#define CSW_STATUS_PHASE_ERROR 0x02 #define USB_MASSBULK_CSW_STATUS_PHASE_ERROR 0x02
#define REQUEST_MASS_STORAGE_RESET 0xff #define USB_MASSBULK_REQUEST_MASS_STORAGE_RESET 0xff
#define REQUEST_GET_MAX_LUN 0xfe #define USB_MASSBULK_REQUEST_GET_MAX_LUN 0xfe
typedef struct { typedef struct {
@@ -33,7 +33,7 @@ typedef struct {
uint8 lun; uint8 lun;
uint8 command_block_length; uint8 command_block_length;
uint8 command_block[16]; uint8 command_block[16];
} _PACKED command_block_wrapper; } _PACKED usb_massbulk_command_block_wrapper;
typedef struct { typedef struct {
@@ -41,7 +41,7 @@ typedef struct {
uint32 tag; uint32 tag;
uint32 data_residue; uint32 data_residue;
uint8 status; uint8 status;
} _PACKED command_status_wrapper; } _PACKED usb_massbulk_command_status_wrapper;
#endif #endif
@@ -133,7 +133,7 @@ void usb_disk_reset_recovery(disk_device *device);
status_t usb_disk_transfer_data(disk_device *device, bool directionIn, status_t usb_disk_transfer_data(disk_device *device, bool directionIn,
void *data, size_t dataLength); void *data, size_t dataLength);
status_t usb_disk_receive_csw(disk_device *device, status_t usb_disk_receive_csw(disk_device *device,
command_status_wrapper *status); usb_massbulk_command_status_wrapper *status);
status_t usb_disk_operation(device_lun *lun, uint8 operation, status_t usb_disk_operation(device_lun *lun, uint8 operation,
uint8 opLength, uint32 logicalBlockAddress, uint8 opLength, uint32 logicalBlockAddress,
uint16 transferLength, void *data, size_t *dataLength, uint16 transferLength, void *data, size_t *dataLength,
@@ -175,7 +175,7 @@ status_t
usb_disk_mass_storage_reset(disk_device *device) usb_disk_mass_storage_reset(disk_device *device)
{ {
return gUSBModule->send_request(device->device, USB_REQTYPE_INTERFACE_OUT return gUSBModule->send_request(device->device, USB_REQTYPE_INTERFACE_OUT
| USB_REQTYPE_CLASS, REQUEST_MASS_STORAGE_RESET, 0x0000, | USB_REQTYPE_CLASS, USB_MASSBULK_REQUEST_MASS_STORAGE_RESET, 0x0000,
device->interface, 0, NULL, NULL); device->interface, 0, NULL, NULL);
} }
@@ -188,9 +188,11 @@ usb_disk_get_max_lun(disk_device *device)
// devices that do not support multiple LUNs may stall this request // devices that do not support multiple LUNs may stall this request
if (gUSBModule->send_request(device->device, USB_REQTYPE_INTERFACE_IN if (gUSBModule->send_request(device->device, USB_REQTYPE_INTERFACE_IN
| USB_REQTYPE_CLASS, REQUEST_GET_MAX_LUN, 0x0000, device->interface, | USB_REQTYPE_CLASS, USB_MASSBULK_REQUEST_GET_MAX_LUN, 0x0000,
1, &result, &actualLength) != B_OK || actualLength != 1) device->interface, 1, &result, &actualLength) != B_OK
|| actualLength != 1) {
return 0; return 0;
}
if (result > MAX_LOGICAL_UNIT_NUMBER) { if (result > MAX_LOGICAL_UNIT_NUMBER) {
// invalid max lun // invalid max lun
@@ -246,15 +248,17 @@ usb_disk_transfer_data(disk_device *device, bool directionIn, void *data,
status_t status_t
usb_disk_receive_csw(disk_device *device, command_status_wrapper *status) usb_disk_receive_csw(disk_device *device,
usb_massbulk_command_status_wrapper *status)
{ {
status_t result = usb_disk_transfer_data(device, true, status, status_t result = usb_disk_transfer_data(device, true, status,
sizeof(command_status_wrapper)); sizeof(usb_massbulk_command_status_wrapper));
if (result != B_OK) if (result != B_OK)
return result; return result;
if (device->status != B_OK if (device->status != B_OK
|| device->actual_length != sizeof(command_status_wrapper)) { || device->actual_length
!= sizeof(usb_massbulk_command_status_wrapper)) {
// receiving the command status wrapper failed // receiving the command status wrapper failed
return B_ERROR; return B_ERROR;
} }
@@ -275,11 +279,12 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength,
directionIn ? 'y' : 'n'); directionIn ? 'y' : 'n');
disk_device *device = lun->device; disk_device *device = lun->device;
command_block_wrapper command; usb_massbulk_command_block_wrapper command;
command.signature = CBW_SIGNATURE; command.signature = USB_MASSBULK_CBW_SIGNATURE;
command.tag = device->current_tag++; command.tag = device->current_tag++;
command.data_transfer_length = (dataLength != NULL ? *dataLength : 0); command.data_transfer_length = (dataLength != NULL ? *dataLength : 0);
command.flags = (directionIn ? CBW_DATA_INPUT : CBW_DATA_OUTPUT); command.flags = (directionIn ? USB_MASSBULK_CBW_DATA_INPUT
: USB_MASSBULK_CBW_DATA_OUTPUT);
command.lun = lun->logical_unit_number; command.lun = lun->logical_unit_number;
command.command_block_length command.command_block_length
= device->is_atapi ? ATAPI_COMMAND_LENGTH : opLength; = device->is_atapi ? ATAPI_COMMAND_LENGTH : opLength;
@@ -317,12 +322,12 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength,
} }
status_t result = usb_disk_transfer_data(device, false, &command, status_t result = usb_disk_transfer_data(device, false, &command,
sizeof(command_block_wrapper)); sizeof(usb_massbulk_command_block_wrapper));
if (result != B_OK) if (result != B_OK)
return result; return result;
if (device->status != B_OK || if (device->status != B_OK ||
device->actual_length != sizeof(command_block_wrapper)) { device->actual_length != sizeof(usb_massbulk_command_block_wrapper)) {
// sending the command block wrapper failed // sending the command block wrapper failed
TRACE_ALWAYS("sending the command block wrapper failed: %s\n", TRACE_ALWAYS("sending the command block wrapper failed: %s\n",
strerror(device->status)); strerror(device->status));
@@ -354,7 +359,7 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength,
} }
} }
command_status_wrapper status; usb_massbulk_command_status_wrapper status;
result = usb_disk_receive_csw(device, &status); result = usb_disk_receive_csw(device, &status);
if (result != B_OK) { if (result != B_OK) {
// in case of a stall or error clear the stall and try again // in case of a stall or error clear the stall and try again
@@ -369,7 +374,8 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength,
return result; return result;
} }
if (status.signature != CSW_SIGNATURE || status.tag != command.tag) { if (status.signature != USB_MASSBULK_CSW_SIGNATURE
|| status.tag != command.tag) {
// the command status wrapper is not valid // the command status wrapper is not valid
TRACE_ALWAYS("command status wrapper is not valid: %#" B_PRIx32 "\n", TRACE_ALWAYS("command status wrapper is not valid: %#" B_PRIx32 "\n",
status.signature); status.signature);
@@ -378,8 +384,8 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength,
} }
switch (status.status) { switch (status.status) {
case CSW_STATUS_COMMAND_PASSED: case USB_MASSBULK_CSW_STATUS_COMMAND_PASSED:
case CSW_STATUS_COMMAND_FAILED: case USB_MASSBULK_CSW_STATUS_COMMAND_FAILED:
{ {
// The residue from "status.data_residue" is not maintained // The residue from "status.data_residue" is not maintained
// correctly by some devices, so calculate it instead. // correctly by some devices, so calculate it instead.
@@ -395,7 +401,7 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength,
} }
} }
if (status.status == CSW_STATUS_COMMAND_PASSED) { if (status.status == USB_MASSBULK_CSW_STATUS_COMMAND_PASSED) {
// the operation is complete and has succeeded // the operation is complete and has succeeded
return B_OK; return B_OK;
} else { } else {
@@ -413,7 +419,7 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength,
} }
} }
case CSW_STATUS_PHASE_ERROR: case USB_MASSBULK_CSW_STATUS_PHASE_ERROR:
{ {
// a protocol or device error occured // a protocol or device error occured
TRACE_ALWAYS("phase error in operation %#" B_PRIx8 "\n", operation); TRACE_ALWAYS("phase error in operation %#" B_PRIx8 "\n", operation);