History: usbh_cd_mst


This page describes all changes made to the usbh_cd_mst package, the USB Host Mass Storage Class Driver, since its release.

Version

3.16 (2020-07-07, 13:03):

  • MST device was not handled correctly on interfaces other than 0.

3.15 (2020-02-27, 16:45):

  • Compiler Warning eliminated.

3.14 (2019-08-27, 16:30):

  • Static analysis issues eliminated.

3.13 (2018-09-07, 08:36):

  • Transfer could not be started from multiple tasks.
  • Refactoring to comply with coding standard rules.

3.12r2 (2018-08-29, 18:17):

  • Document HTML link added to the documentation folder.
  • History and document files renamed to the package name.

3.12 (2018-05-09, 13:16):

  • f_initvolume() could return with error code 16 (F_ERR_CARDREMOVED) when called after f_delvolume(). START STOP UNIT command is now disabled by default in configuration.

3.11 (2018-05-03, 06:56):

  • Eliminated possible data loss: synchronizes buffers on the remote device when driver is released or flush function is called.
  • Slow reading and writing could be experienced when f_putc() was used and  SCSI_SUPPORT_REMOVABLE_DEVICE=1, because device status was requested at every call. Introduced option SCSI_REMOVABLE_DEVICE_POLL_INTERVAL_MS.

3.10:

  •  Refactoring to comply with coding standard rules (CodeSonar).

3.9:

  •  usbh_mst_present() could incorrectly report the presence of the device straight after disconnecting it.

3.8:

  •  Static analyzer warnings were eliminated. psp_types.h is included instead of stdint.h.

3.7:

  •  CD-ROM support added.

3.6:

  •  Media not supporting Test Unit Ready were not possible to get mounted. Non-removable media are supported now in case SCSI_SUPPORT_REMOVABLE_DEVICE is enabled.

3.5:

  •  Class driver got stuck while trying to issue Mode Sense command to some MSDs (MSDs returning less than 8 Bytes were affected).

3.4:

  •  scsi_read()/scsi_write() incorrectly reported success in case of timeout (error).
  •  scsi_write() retried the write even if the media reported write protection (causing a big delay before reporting the error).

3.3:

  •  Updated to work with USB host base major version 3.

3.2:

  •  Treat "MODE SENSE" not supported if the request returns command failed. Some memory sticks couldn't be accessed without this modification.

3.1:

  •  READ(12) and WRITE(12) removed, some MSD doesn't support it, so only READ(10) WRITE(10) is used.

3.0:

  •  scsi_raw_read() and scsi_raw_write() added, these functions adds the possibility to send raw SCSI commands to the device and read/write data.
  •  LUN ID parameter added to SCSI communication transfer function.

2.7:

  •  no. of available blocks was incorrectly reported as one less.

2.6:

  • Last block couldn't be read/written due to a comparison error
  • SCSI version merged with MST, SCSI version file was:

   2.8:

     - definition of unused command codes removed.

     - scsi_mode_sense(): handle the case when device does not support MODE SENSE command.

     - scsi_test_unit_ready(): LUN state handled here if TEST UNIT READY succeeded but current LUN state is DISCONNECTED.

     - scsi_get_unit_state(): extra call for request_sense() removed: REQUEST SENSE needs to be called only in case TEST UNIT READY reported IO_CHECK.

   2.7:

     - lun_state cleared at startup, caused unoperational media on systems where uninitialized variables are not cleared at startup.

   2.6:

     - Mode sense request will also check the validity of the response length. Some memory sticks reports invalid response without refusing mode sense 10 request.

   2.5:

     - psp_endianness.h used instead of psp_endiness.h.

   2.4:

     - needless version checks removed from API header file.

     - return codes changed from enum to #define.

   2.3:

     - read/write checks if the accessed sector (range) is valid, this way over-addressing a device can be avoided.

   2.2:

     - OAL resource initialization changed. It will free resources from init in case of failure.

   2.1:

     - scsi descriptor communication interface check added to scsi_get_lun_info() and scsi_get_unit_state() to protect the system against disconnection.

2.5:

 - usbh_mst_transfer(): in case an IN transfer after a successful Command gets STALLed by the device, ERR_IO_NOT_SUPP is returned.

2.4:

 - psp_endianness.h used instead of psp_endiness.h.

 - usbh_utils version number check removed.

2.3:

 - needless version checks removed from API header file.

 - all notification callbacks are cast to (void) to avoid warnings this is required because notification functions return an error code.

2.2:

 - data residue check removed in case status indicates success or fail. Some memory sticks didn't operate correctly as bad residue indicated in case of failure.

2.1:

 - usbh notification function parameters were in the reverse order.