ESP32S3 USB PTP Development
Budget: $5,000 – $10,000 AUD
The requirement is to create USB CDC+PTP device in ESP32S3 chip. The specifications are follows.
Use IDF 5.4.x
Chip ESP32S3
Used esp_tinyusb & tiny_usb latest (what ever latest with IDF) libraries as IDF components and customised them to include PTP device library.
Using PTP interface,
Use spiffs file system as storage.
The device should show two storages in File explorer.
Each one handles files located in two different folders of spiffs file system.
File operations such as viewing, creating, deleting and renaming should support.
Source code required.
USB initialisation should start with calling tinyusb_driver_install() function and initialise required functions of PTP interface with spiff file paths.
IDF menu config should have item to enable/disable PTP driver.
Add PTP USB driver to tinyusb/src/device/usbd.c like below. Then implement relevant ptpd_*() function as required.
#if CFG_TUD_PTP
{
.name = DRIVER_NAME("PTP"),
.init = ptpd_init,
.deinit = ptpd_deinit,
.reset = ptpd_reset,
.open = ptpd_open,
.control_xfer_cb = ptpd_control_xfer_cb,
.xfer_cb = ptpd_xfer_cb,
.sof = NULL
},
#endif
Try to implement PTP Device Class as the same as other Classes.
Use IDF 5.4.x
Chip ESP32S3
Used esp_tinyusb & tiny_usb latest (what ever latest with IDF) libraries as IDF components and customised them to include PTP device library.
Using PTP interface,
Use spiffs file system as storage.
The device should show two storages in File explorer.
Each one handles files located in two different folders of spiffs file system.
File operations such as viewing, creating, deleting and renaming should support.
Source code required.
USB initialisation should start with calling tinyusb_driver_install() function and initialise required functions of PTP interface with spiff file paths.
IDF menu config should have item to enable/disable PTP driver.
Add PTP USB driver to tinyusb/src/device/usbd.c like below. Then implement relevant ptpd_*() function as required.
#if CFG_TUD_PTP
{
.name = DRIVER_NAME("PTP"),
.init = ptpd_init,
.deinit = ptpd_deinit,
.reset = ptpd_reset,
.open = ptpd_open,
.control_xfer_cb = ptpd_control_xfer_cb,
.xfer_cb = ptpd_xfer_cb,
.sof = NULL
},
#endif
Try to implement PTP Device Class as the same as other Classes.