diff options
author | Uladzimir Pylinski <barthess@yandex.ru> | 2017-10-13 10:10:32 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-13 10:10:32 +0300 |
commit | 921d233cdd43e6fff867f80a89b43f07154b3f9a (patch) | |
tree | e97a6b41e4ec39e38f1f7b7a26506b5e289d6098 /os/hal/src/hal_usb_msd.c | |
parent | f392dfa223310ab3bc17dce73a949d3a80b12b04 (diff) | |
parent | 39487df4de8aadb22ccdeb984a5ac8c74080905b (diff) | |
download | ChibiOS-Contrib-921d233cdd43e6fff867f80a89b43f07154b3f9a.tar.gz ChibiOS-Contrib-921d233cdd43e6fff867f80a89b43f07154b3f9a.tar.bz2 ChibiOS-Contrib-921d233cdd43e6fff867f80a89b43f07154b3f9a.zip |
Merge pull request #129 from kimmoli/scsi-serial-number
SCSI: Respond to unit serial number inquiry
Diffstat (limited to 'os/hal/src/hal_usb_msd.c')
-rw-r--r-- | os/hal/src/hal_usb_msd.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/os/hal/src/hal_usb_msd.c b/os/hal/src/hal_usb_msd.c index 6cc5386..564bad0 100644 --- a/os/hal/src/hal_usb_msd.c +++ b/os/hal/src/hal_usb_msd.c @@ -84,6 +84,19 @@ static const scsi_inquiry_response_t default_scsi_inquiry_response = { {'v',CH_KERNEL_MAJOR+'0','.',CH_KERNEL_MINOR+'0'} }; +/** + * @brief Hardcoded default SCSI unit serial number inquiry response structure. + */ +static const scsi_unit_serial_number_inquiry_response_t default_scsi_unit_serial_number_inquiry_response = +{ + 0x00, + 0x80, + 0x00, + 0x08, + "00000000" +}; + + /*===========================================================================*/ /* Driver local functions. */ /*===========================================================================*/ @@ -373,7 +386,8 @@ void msdStop(USBMassStorageDriver *msdp) { */ void msdStart(USBMassStorageDriver *msdp, USBDriver *usbp, BaseBlockDevice *blkdev, uint8_t *blkbuf, - const scsi_inquiry_response_t *inquiry) { + const scsi_inquiry_response_t *inquiry, + const scsi_unit_serial_number_inquiry_response_t *serialInquiry) { osalDbgCheck((msdp != NULL) && (usbp != NULL) && (blkdev != NULL) && (blkbuf != NULL)); @@ -393,6 +407,12 @@ void msdStart(USBMassStorageDriver *msdp, USBDriver *usbp, else { msdp->scsi_config.inquiry_response = inquiry; } + if (NULL == serialInquiry) { + msdp->scsi_config.unit_serial_number_inquiry_response = &default_scsi_unit_serial_number_inquiry_response; + } + else { + msdp->scsi_config.unit_serial_number_inquiry_response = serialInquiry; + } msdp->scsi_config.blkbuf = blkbuf; msdp->scsi_config.blkdev = blkdev; msdp->scsi_config.transport = &msdp->scsi_transport; |