diff options
| author | hathach <[email protected]> | 2019-04-26 16:21:39 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-04-26 16:21:39 +0700 |
| commit | e4be6dd95eba53388b713d6c3f59b4ba7c7886f2 (patch) | |
| tree | 31b7bd3279d58cb4b10caf95143d6a62a4c61645 /src/class/msc | |
| parent | cfd2d995d2e74d81aee49ae9fb7949cf7d0fe540 (diff) | |
| parent | 25bd3fef47114bba845d3dbf397a50efb0ee777c (diff) | |
Merge pull request #59 from hathach/develop
add multiple Lun support along with msc_dual_lun example
Diffstat (limited to 'src/class/msc')
| -rw-r--r-- | src/class/msc/msc_device.c | 6 | ||||
| -rw-r--r-- | src/class/msc/msc_device.h | 9 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/class/msc/msc_device.c b/src/class/msc/msc_device.c index a6b65557c..e2cf92324 100644 --- a/src/class/msc/msc_device.c +++ b/src/class/msc/msc_device.c @@ -163,8 +163,10 @@ bool mscd_control_request(uint8_t rhport, tusb_control_request_t const * p_reque case MSC_REQ_GET_MAX_LUN:
{
- // returned MAX LUN is minus 1 by specs
- uint8_t maxlun = CFG_TUD_MSC_MAXLUN-1;
+ // MAX LUN is minus 1 by specs
+ uint8_t maxlun = 0;
+ if (tud_msc_maxlun_cb) maxlun = tud_msc_maxlun_cb() -1;
+
usbd_control_xfer(rhport, p_request, &maxlun, 1);
}
break;
diff --git a/src/class/msc/msc_device.h b/src/class/msc/msc_device.h index 3ed223509..6e3aef8bb 100644 --- a/src/class/msc/msc_device.h +++ b/src/class/msc/msc_device.h @@ -40,12 +40,6 @@ //--------------------------------------------------------------------+
TU_VERIFY_STATIC(CFG_TUD_MSC_BUFSIZE < UINT16_MAX, "Size is not correct");
-#ifndef CFG_TUD_MSC_MAXLUN
- #define CFG_TUD_MSC_MAXLUN 1
-#elif CFG_TUD_MSC_MAXLUN == 0 || CFG_TUD_MSC_MAXLUN > 16
- #error MSC Device: Incorrect setting of MAX LUN
-#endif
-
#ifndef CFG_TUD_MSC_BUFSIZE
#error CFG_TUD_MSC_BUFSIZE must be defined, value of a block size should work well, the more the better
#endif
@@ -134,6 +128,9 @@ int32_t tud_msc_scsi_cb (uint8_t lun, uint8_t const scsi_cmd[16], void* buffer, /*------------- Optional callbacks -------------*/
+// Invoked to determine max LUN
+ATTR_WEAK uint8_t tud_msc_maxlun_cb(void);
+
// Invoked when Read10 command is complete
ATTR_WEAK void tud_msc_read10_complete_cb(uint8_t lun);
|
