summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-09-19 16:41:29 +0700
committerhathach <[email protected]>2025-09-19 16:41:29 +0700
commit57c5e5516a7e6711085e3d5f57d2023d6ce1b237 (patch)
tree1277c1753b081fe391d43da43d0f3fe830b83372 /src
parente76d09bb4213921c8957af22033c9451fe0ed123 (diff)
rework get storageIDs and get storage info
Diffstat (limited to 'src')
-rw-r--r--src/class/mtp/mtp.h18
-rw-r--r--src/class/mtp/mtp_device.c12
-rw-r--r--src/class/mtp/mtp_device.h3
3 files changed, 8 insertions, 25 deletions
diff --git a/src/class/mtp/mtp.h b/src/class/mtp/mtp.h
index a28ce40df..c48a2469c 100644
--- a/src/class/mtp/mtp.h
+++ b/src/class/mtp/mtp.h
@@ -743,21 +743,9 @@ typedef struct TU_ATTR_PACKED {
uint16_t physical; // physical location
uint16_t logical; // logical within physical
};
-
uint32_t id;
} mtp_storage_id_t;
-// StorageInfo dataset (excluding storage description and volume identifier)
-typedef struct TU_ATTR_PACKED {
- uint16_t storage_type;
- uint16_t filesystem_type;
- uint16_t access_capability;
- uint64_t max_capacity_in_bytes;
- uint64_t free_space_in_bytes;
- uint32_t free_space_in_objects;
- // storage description and volume identifier are added dynamically
-} mtp_storage_info_nostring_t;
-
#define MTP_STORAGE_INFO_TYPEDEF(_storage_desc_chars, _volume_id_chars) \
struct TU_ATTR_PACKED { \
uint16_t storage_type; \
@@ -794,12 +782,6 @@ typedef struct TU_ATTR_PACKED {
// - datetime_wstring date_modified;
// - wstring keywords;
-// Storage IDs
-typedef struct TU_ATTR_PACKED {
- uint32_t storage_ids_len;
- uint32_t storage_ids[CFG_MTP_STORAGE_ID_COUNT];
-} mtp_storage_ids_t;
-
// DevicePropDesc Dataset
typedef struct TU_ATTR_PACKED {
uint16_t device_property_code;
diff --git a/src/class/mtp/mtp_device.c b/src/class/mtp/mtp_device.c
index 857fafd0c..d0a1d6c40 100644
--- a/src/class/mtp/mtp_device.c
+++ b/src/class/mtp/mtp_device.c
@@ -351,22 +351,18 @@ bool mtpd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t
case MTP_PHASE_RESPONSE_QUEUED:
// response phase is complete -> prepare for new command
TU_ASSERT(ep_addr == p_mtp->ep_in);
+ tud_mtp_response_complete_cb(0, &p_mtp->cmd_header, p_container, event, xferred_bytes);
prepare_new_command(p_mtp);
break;
case MTP_PHASE_RESPONSE:
case MTP_PHASE_ERROR:
- // processed immediately after this switch, supposedly to be empty
+ // supposedly to be empty
break;
default: return false;
}
- if (p_mtp->phase == MTP_PHASE_RESPONSE) {
- // p_mtp->phase = MTP_PHASE_RESPONSE_QUEUED;
- // p_container->type = MTP_CONTAINER_TYPE_RESPONSE_BLOCK;
- // p_container->transaction_id = p_mtp->cmd_header.transaction_id;
- // TU_ASSERT(usbd_edpt_xfer(rhport, p_mtp->ep_in, (uint8_t*) p_container, (uint16_t)p_container->len), 0);
- } else if (p_mtp->phase == MTP_PHASE_ERROR) {
+ if (p_mtp->phase == MTP_PHASE_ERROR) {
// stall both IN & OUT endpoints
usbd_edpt_stall(rhport, p_mtp->ep_out);
usbd_edpt_stall(rhport, p_mtp->ep_in);
@@ -467,9 +463,11 @@ mtp_phase_type_t mtpd_handle_cmd(mtpd_interface_t* p_mtp) {
case MTP_OP_DELETE_OBJECT:
TU_LOG_DRV(" MTP command: MTP_OP_DELETE_OBJECT\n");
return mtpd_handle_cmd_delete_object();
+
case MTP_OP_GET_DEVICE_PROP_DESC:
TU_LOG_DRV(" MTP command: MTP_OP_GET_DEVICE_PROP_DESC\n");
return mtpd_handle_cmd_get_device_prop_desc();
+
case MTP_OP_GET_DEVICE_PROP_VALUE:
TU_LOG_DRV(" MTP command: MTP_OP_GET_DEVICE_PROP_VALUE\n");
return mtpd_handle_cmd_get_device_prop_value();
diff --git a/src/class/mtp/mtp_device.h b/src/class/mtp/mtp_device.h
index b39322f22..538e3c8d0 100644
--- a/src/class/mtp/mtp_device.h
+++ b/src/class/mtp/mtp_device.h
@@ -82,6 +82,9 @@ int32_t tud_mtp_command_received_cb(uint8_t idx, mtp_generic_container_t* cmd_bl
// 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);
+// 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);
+
//--------------------------------------------------------------------+
// Helper functions
//--------------------------------------------------------------------+