summaryrefslogtreecommitdiff
path: root/src/class/mtp/mtp_device.h
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-09-23 15:23:16 +0700
committerhathach <[email protected]>2025-09-23 15:23:16 +0700
commit3c39f60f63109f7828009ebda135fc675288d610 (patch)
tree9fd51d9556b78587f66cdfb2752f074436473b69 /src/class/mtp/mtp_device.h
parent1ab45bc52557a85f488566ee89ef48b7332b7ef0 (diff)
refactor API
Diffstat (limited to 'src/class/mtp/mtp_device.h')
-rw-r--r--src/class/mtp/mtp_device.h33
1 files changed, 25 insertions, 8 deletions
diff --git a/src/class/mtp/mtp_device.h b/src/class/mtp/mtp_device.h
index b85b1706e..0524edcf6 100644
--- a/src/class/mtp/mtp_device.h
+++ b/src/class/mtp/mtp_device.h
@@ -37,10 +37,22 @@
#endif
typedef struct {
- const mtp_container_header_t* cmd_header;
+ uint8_t idx; // mtp instance
+ const mtp_container_command_t* command;
+ mtp_container_info_t reply;
+
+ union {
+ uint8_t* buffer;
+ uint16_t* buffer16;
+ uint32_t* buffer32;
+ };
+ uint32_t bufsize;
+ uint32_t offset; // offset from start of header, since data can span multiple xfers
+
+
tusb_xfer_result_t xfer_result;
uint32_t xferred_bytes;
-} tud_mtp_cb_complete_data_t;
+} tud_mtp_cb_data_t;
// Number of supported operations, events, device properties, capture formats, playback formats
// and max number of characters for strings manufacturer, model, device_version, serial_number
@@ -91,23 +103,28 @@ typedef struct {
//--------------------------------------------------------------------+
// Application API
//--------------------------------------------------------------------+
-bool tud_mtp_data_send(mtp_generic_container_t* data_block);
+bool tud_mtp_data_send(mtp_container_info_t* p_container);
// bool tud_mtp_block_data_receive();
-bool tud_mtp_response_send(mtp_generic_container_t* resp_block);
+bool tud_mtp_response_send(mtp_container_info_t* p_container);
+
+//--------------------------------------------------------------------+
+// Control request Callbacks
+//--------------------------------------------------------------------+
+// bool tud_mtp_control_xfer_cb(uint8_t idx, uint8_t stage, tusb_control_request_t const *p_request);
//--------------------------------------------------------------------+
-// Application Callbacks
+// Bulk only protocol Callbacks
//--------------------------------------------------------------------+
// Invoked when new command is received. Application fill the out_block with either DATA or RESPONSE container
// return MTP response code
-int32_t tud_mtp_command_received_cb(uint8_t idx, mtp_generic_container_t* cmd_block, mtp_generic_container_t* out_block);
+int32_t tud_mtp_command_received_cb(tud_mtp_cb_data_t * cb_data);
// Invoked when data phase is complete
-int32_t tud_mtp_data_complete_cb(uint8_t idx, mtp_container_header_t* cmd_header, mtp_generic_container_t* resp_block, tusb_xfer_result_t xfer_result, uint32_t xferred_bytes);
+int32_t tud_mtp_data_complete_cb(tud_mtp_cb_data_t* cb_data);
// Invoked when response phase is complete
-int32_t tud_mtp_response_complete_cb(uint8_t idx, mtp_container_header_t* cmd_header, mtp_generic_container_t* resp_block, tusb_xfer_result_t xfer_result, uint32_t xferred_bytes);
+int32_t tud_mtp_response_complete_cb(tud_mtp_cb_data_t* cb_data);
//--------------------------------------------------------------------+
// Helper functions