diff options
| author | hathach <[email protected]> | 2025-09-19 16:41:29 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2025-09-19 16:41:29 +0700 |
| commit | 57c5e5516a7e6711085e3d5f57d2023d6ce1b237 (patch) | |
| tree | 1277c1753b081fe391d43da43d0f3fe830b83372 /src | |
| parent | e76d09bb4213921c8957af22033c9451fe0ed123 (diff) | |
rework get storageIDs and get storage info
Diffstat (limited to 'src')
| -rw-r--r-- | src/class/mtp/mtp.h | 18 | ||||
| -rw-r--r-- | src/class/mtp/mtp_device.c | 12 | ||||
| -rw-r--r-- | src/class/mtp/mtp_device.h | 3 |
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 //--------------------------------------------------------------------+ |
