1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /*
- * Copyright (c) 2022, sakumisu
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #ifndef USBH_MSC_H
- #define USBH_MSC_H
- #include "usb_msc.h"
- #include "usb_scsi.h"
- struct usbh_msc {
- struct usbh_hubport *hport;
- struct usb_endpoint_descriptor *bulkin; /* Bulk IN endpoint */
- struct usb_endpoint_descriptor *bulkout; /* Bulk OUT endpoint */
- struct usbh_urb bulkin_urb; /* Bulk IN urb */
- struct usbh_urb bulkout_urb; /* Bulk OUT urb */
- uint8_t intf; /* Data interface number */
- uint8_t sdchar;
- uint32_t blocknum; /* Number of blocks on the USB mass storage device */
- uint16_t blocksize; /* Block size of USB mass storage device */
- void *user_data;
- };
- struct usbh_msc_modeswitch_config {
- const char *name;
- uint16_t vid; /* Vendor ID (for vendor/product specific devices) */
- uint16_t pid; /* Product ID (for vendor/product specific devices) */
- const uint8_t *message_content;
- };
- void usbh_msc_modeswitch_enable(struct usbh_msc_modeswitch_config *config);
- int usbh_msc_scsi_init(struct usbh_msc *msc_class);
- int usbh_msc_scsi_write10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer, uint32_t nsectors);
- int usbh_msc_scsi_read10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer, uint32_t nsectors);
- void usbh_msc_run(struct usbh_msc *msc_class);
- void usbh_msc_stop(struct usbh_msc *msc_class);
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif /* USBH_MSC_H */
|