summaryrefslogtreecommitdiff
path: root/common/usbx_device_classes/src
diff options
context:
space:
mode:
authorScott Larson <[email protected]>2020-10-09 12:39:54 -0700
committerScott Larson <[email protected]>2020-10-09 12:39:54 -0700
commit3f1e20df866441bd7e3e8a45fffe1d5ab0413002 (patch)
treea4fd231c2da5829f8913d0c92d633e4173f2fa33 /common/usbx_device_classes/src
parented83d6f07d3ef30993be946b5889aaba816b1f17 (diff)
6.1 Releasev6.1_rel
Diffstat (limited to 'common/usbx_device_classes/src')
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio10_control_process.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio20_control_process.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_activate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_change.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_control_request.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_deactivate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_frame_write.c8
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_initialize.c14
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_ioctl.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_read_thread_entry.c10
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_reception_start.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_stream_get.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_unitialize.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_audio_write_thread_entry.c10
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_activate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkin_thread.c12
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkout_thread.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_control_request.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_deactivate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_initialize.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_ioctl.c11
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_read.c8
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_unitialize.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_write.c8
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_acm_write_with_callback.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_activate.c16
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkin_thread.c12
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkout_thread.c11
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_change.c18
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_control_request.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_deactivate.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_initialize.c20
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_interrupt_thread.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_uninitialize.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_cdc_ecm_write.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_dfu_activate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_dfu_control_request.c13
-rw-r--r--common/usbx_device_classes/src/ux_device_class_dfu_deactivate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_dfu_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_dfu_initialize.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_dfu_thread.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_activate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_control_request.c16
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_deactivate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_descriptor_send.c29
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_event_get.c14
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_event_set.c14
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_initialize.c11
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_interrupt_thread.c18
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_report_get.c18
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_report_set.c12
-rw-r--r--common/usbx_device_classes/src/ux_device_class_hid_uninitialize.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_activate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_control_request.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_data.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_deactivate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_device_info_send.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_device_prop_desc_get.c8
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_get.c28
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_set.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_device_reset.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_event_get.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_event_set.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_initialize.c11
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_interrupt_thread.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_add.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_data_get.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_data_send.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_delete.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_handles_send.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_info_get.c72
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_info_send.c14
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_prop_desc_get.c8
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_get.c8
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_set.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_props_supported_get.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_references_get.c8
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_object_references_set.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_objects_number_send.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_partial_object_data_get.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_response_send.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_storage_format.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_storage_id_send.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_storage_info_get.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_pima_thread.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_activate.c12
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_bulkin_thread.c12
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_bulkout_thread.c11
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_control_request.c20
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_deactivate.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_initialize.c20
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_interrupt_thread.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_msg_initialize.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_msg_keep_alive.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_msg_query.c10
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_msg_reset.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_msg_set.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_rndis_write.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_activate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_control_request.c7
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_csw_send.c31
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_deactivate.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_entry.c6
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_format.c17
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_get_configuration.c40
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_get_performance.c26
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_get_status_notification.c41
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_initialize.c9
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_inquiry.c61
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_mode_select.c17
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_mode_sense.c18
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_prevent_allow_media_removal.c21
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_read.c34
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_read_capacity.c36
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_read_disk_information.c17
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_read_dvd_structure.c15
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_read_format_capacity.c27
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_read_toc.c28
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_report_key.c27
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_request_sense.c50
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_start_stop.c13
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_synchronize_cache.c30
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_test_ready.c30
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_thread.c49
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_uninitialize.c4
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_verify.c11
-rw-r--r--common/usbx_device_classes/src/ux_device_class_storage_write.c45
142 files changed, 1100 insertions, 545 deletions
diff --git a/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c b/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c
index d742db1..0e32334 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio10_control_process.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio10_control_process PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +73,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio10_control_process(UX_DEVICE_CLASS_AUDIO *audio,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c b/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c
index 9474f87..a5b92f4 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio20_control_process.c
@@ -34,8 +34,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_audio_control_request PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_audio20_control_process PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -74,6 +74,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio20_control_process(UX_DEVICE_CLASS_AUDIO *audio,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_activate.c b/common/usbx_device_classes/src/ux_device_class_audio_activate.c
index 24e1ca1..9ef3669 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_activate.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -63,6 +63,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_activate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_change.c b/common/usbx_device_classes/src/ux_device_class_audio_change.c
index 41051c9..827ee2a 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_change.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_change.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_change PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -63,6 +63,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_change(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_control_request.c b/common/usbx_device_classes/src/ux_device_class_audio_control_request.c
index da96385..7ee5bb9 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_control_request.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_control_request PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_control_request(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_deactivate.c b/common/usbx_device_classes/src/ux_device_class_audio_deactivate.c
index 6e1eaf7..8c6460b 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_deactivate.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_deactivate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_entry.c b/common/usbx_device_classes/src/ux_device_class_audio_entry.c
index ccbd65d..39cd908 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_audio_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_audio_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c b/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c
index 8042209..1840670 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_frame_write.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_frame_write PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_frame_write(UX_DEVICE_CLASS_AUDIO_STREAM *stream, UCHAR *frame, ULONG length)
@@ -116,7 +120,7 @@ ULONG frame_buffer_size;
next_frame_buffer = stream -> ux_device_class_audio_stream_buffer;
/* Copy frame. */
- _ux_utility_memory_copy(stream -> ux_device_class_audio_stream_access_pos -> ux_device_class_audio_frame_data, frame, length);
+ _ux_utility_memory_copy(stream -> ux_device_class_audio_stream_access_pos -> ux_device_class_audio_frame_data, frame, length); /* Use case of memcpy is verified. */
stream -> ux_device_class_audio_stream_access_pos -> ux_device_class_audio_frame_length = length;
/* Move frame position. */
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_initialize.c b/common/usbx_device_classes/src/ux_device_class_audio_initialize.c
index a085e28..904fb6a 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_initialize.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_initialize(UX_SLAVE_CLASS_COMMAND *command)
@@ -178,7 +184,7 @@ ULONG i;
stream_parameter -> ux_device_class_audio_stream_parameter_thread_entry,
(ULONG)(ALIGN_TYPE)stream, (VOID *) stream -> ux_device_class_audio_stream_thread_stack,
memory_size, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
/* Check for successful allocation. */
if (status != UX_SUCCESS)
@@ -189,7 +195,7 @@ ULONG i;
/* Save callbacks. */
_ux_utility_memory_copy(&stream -> ux_device_class_audio_stream_callbacks,
&stream_parameter -> ux_device_class_audio_stream_parameter_callbacks,
- sizeof(UX_DEVICE_CLASS_AUDIO_STREAM_CALLBACKS));
+ sizeof(UX_DEVICE_CLASS_AUDIO_STREAM_CALLBACKS)); /* Use case of memcpy is verified. */
/* Save audio instance. */
stream -> ux_device_class_audio_stream_audio = audio;
@@ -211,7 +217,7 @@ ULONG i;
/* Save callbacks. */
_ux_utility_memory_copy(&audio -> ux_device_class_audio_callbacks,
&audio_parameter -> ux_device_class_audio_parameter_callbacks,
- sizeof(UX_DEVICE_CLASS_AUDIO_CALLBACKS));
+ sizeof(UX_DEVICE_CLASS_AUDIO_CALLBACKS)); /* Use case of memcpy is verified. */
/* Return completion status. */
return(UX_SUCCESS);
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c b/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c
index 99797de..d8bee50 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_ioctl.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_ioctl PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_ioctl(UX_DEVICE_CLASS_AUDIO *audio, ULONG ioctl_function,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c
index b03a0fd..b2430b5 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_free.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_read_frame_free PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -64,6 +64,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_read_frame_free(UX_DEVICE_CLASS_AUDIO_STREAM *stream)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c
index d5ed96f..3cfd71a 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_read_frame_get.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_read_frame_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_read_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *stream,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_read_thread_entry.c b/common/usbx_device_classes/src/ux_device_class_audio_read_thread_entry.c
index 7f668d4..b48a0db 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_read_thread_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_read_thread_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_audio_read_thread PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_audio_read_thread_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_audio_read_thread_entry(ULONG audio_stream)
@@ -137,7 +141,7 @@ ULONG actual_length;
stream -> ux_device_class_audio_stream_transfer_pos -> ux_device_class_audio_frame_pos = 0;
_ux_utility_memory_copy(stream -> ux_device_class_audio_stream_transfer_pos -> ux_device_class_audio_frame_data,
transfer -> ux_slave_transfer_request_data_pointer,
- actual_length);
+ actual_length); /* Use case of memcpy is verified. */
/* For simple, do not advance the transfer position if there is overflow. */
next_pos = (UCHAR *)stream -> ux_device_class_audio_stream_transfer_pos;
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c b/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c
index 6a471fe..6be79e5 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_reception_start.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_reception_start PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_reception_start(UX_DEVICE_CLASS_AUDIO_STREAM *stream)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c
index f218054..04dbd26 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read16.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_sample_read16 PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_sample_read16(UX_DEVICE_CLASS_AUDIO_STREAM *stream,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c
index 1ce43fd..cd53dd9 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read24.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_sample_read24 PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_sample_read24(UX_DEVICE_CLASS_AUDIO_STREAM *stream,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c
index e0ecc6d..0e53daa 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read32.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_sample_read32 PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_sample_read32(UX_DEVICE_CLASS_AUDIO_STREAM *stream, ULONG *buffer)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c b/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c
index 580d28c..2eab8e3 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_sample_read8.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_sample_read8 PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_sample_read8(UX_DEVICE_CLASS_AUDIO_STREAM *stream,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c b/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c
index 4072478..06bf94f 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_stream_get.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_stream_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_stream_get(UX_DEVICE_CLASS_AUDIO *audio,
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c b/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c
index 31d8480..7b52f6b 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_transmission_start.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_transmission_start PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_transmission_start(UX_DEVICE_CLASS_AUDIO_STREAM *stream)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_unitialize.c b/common/usbx_device_classes/src/ux_device_class_audio_unitialize.c
index 28886dd..1cac54e 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_unitialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_unitialize.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_uninitialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_uninitialize(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c
index f8efba5..655bd61 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_commit.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_write_frame_commit PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_write_frame_commit(UX_DEVICE_CLASS_AUDIO_STREAM *stream, ULONG length)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c
index 5ad7945..ca95236 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_write_frame_get.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_audio_write_frame_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_audio_write_frame_get(UX_DEVICE_CLASS_AUDIO_STREAM *stream, UCHAR **frame, ULONG *length)
diff --git a/common/usbx_device_classes/src/ux_device_class_audio_write_thread_entry.c b/common/usbx_device_classes/src/ux_device_class_audio_write_thread_entry.c
index a246cf1..7b204d6 100644
--- a/common/usbx_device_classes/src/ux_device_class_audio_write_thread_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_audio_write_thread_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_audio_write_thread PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_audio_write_thread_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_audio_write_thread_entry(ULONG audio_stream)
@@ -110,7 +114,7 @@ ULONG actual_length;
transfer_length = stream -> ux_device_class_audio_stream_transfer_pos -> ux_device_class_audio_frame_length;
if (transfer_length)
_ux_utility_memory_copy(transfer -> ux_slave_transfer_request_data_pointer,
- stream -> ux_device_class_audio_stream_transfer_pos -> ux_device_class_audio_frame_data, transfer_length);
+ stream -> ux_device_class_audio_stream_transfer_pos -> ux_device_class_audio_frame_data, transfer_length); /* Use case of memcpy is verified. */
/* Issue transfer request, thread blocked until transfer done. */
status = _ux_device_stack_transfer_request(transfer, transfer_length, transfer_length);
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_activate.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_activate.c
index 58c5f4b..50791fd 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_activate.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -63,6 +63,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_activate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkin_thread.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkin_thread.c
index 9d0e4bc..b72f9be 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkin_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkin_thread.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_bulkin_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_cdc_acm_bulkin_thread(ULONG cdc_acm_class)
@@ -116,7 +122,7 @@ ULONG sent_length;
/* Wait until we have a event sent by the application. */
status = _ux_utility_event_flags_get(&cdc_acm -> ux_slave_class_cdc_acm_event_flags_group, UX_DEVICE_CLASS_CDC_ACM_WRITE_EVENT,
- TX_OR_CLEAR, &actual_flags, TX_WAIT_FOREVER);
+ UX_OR_CLEAR, &actual_flags, UX_WAIT_FOREVER);
/* Check the completion code. */
if (status == UX_SUCCESS)
@@ -158,7 +164,7 @@ ULONG sent_length;
/* Copy the payload locally. */
_ux_utility_memory_copy (transfer_request -> ux_slave_transfer_request_data_pointer,
cdc_acm -> ux_slave_class_cdc_acm_callback_current_data_pointer,
- transfer_length);
+ transfer_length); /* Use case of memcpy is verified. */
/* Send the acm payload to the host. */
status = _ux_device_stack_transfer_request(transfer_request, transfer_length, transfer_length);
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkout_thread.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkout_thread.c
index 5ca343f..4003f54 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkout_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_bulkout_thread.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_bulkout_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_cdc_acm_bulkout_thread(ULONG cdc_acm_class)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_control_request.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_control_request.c
index 8ae6921..5fd1d1c 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_control_request.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_control_request PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_control_request(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_deactivate.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_deactivate.c
index dc132e1..eeafcb6 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_deactivate.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_deactivate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_entry.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_entry.c
index 1cf3e63..2e4f3a1 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_cdc_acm_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_cdc_acm_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +71,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_initialize.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_initialize.c
index e858c2c..ba7c9da 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_initialize.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_initialize(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_ioctl.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_ioctl.c
index 3aacab0..c1488be 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_ioctl.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_ioctl.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_ioctl PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +71,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_ioctl(UX_SLAVE_CLASS_CDC_ACM *cdc_acm, ULONG ioctl_function,
@@ -286,7 +291,7 @@ UX_SLAVE_TRANSFER *transfer_request;
_ux_device_class_cdc_acm_bulkin_thread,
(ULONG) (ALIGN_TYPE) cdc_acm, (VOID *) cdc_acm -> ux_slave_class_cdc_acm_bulkin_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_AUTO_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_AUTO_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
@@ -311,7 +316,7 @@ UX_SLAVE_TRANSFER *transfer_request;
_ux_device_class_cdc_acm_bulkout_thread,
(ULONG) (ALIGN_TYPE) cdc_acm, (VOID *) cdc_acm -> ux_slave_class_cdc_acm_bulkout_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_AUTO_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_AUTO_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_read.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_read.c
index 2994e36..56caacd 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_read.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_read.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_read PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_read(UX_SLAVE_CLASS_CDC_ACM *cdc_acm, UCHAR *buffer,
@@ -159,7 +163,7 @@ ULONG local_requested_length;
/* We need to copy the buffer locally. */
_ux_utility_memory_copy(buffer, transfer_request -> ux_slave_transfer_request_data_pointer,
- transfer_request -> ux_slave_transfer_request_actual_length);
+ transfer_request -> ux_slave_transfer_request_actual_length); /* Use case of memcpy is verified. */
/* Next buffer address. */
buffer += transfer_request -> ux_slave_transfer_request_actual_length;
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_unitialize.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_unitialize.c
index e73e162..fc7742c 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_unitialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_unitialize.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_uninitialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_uninitialize(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_write.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_write.c
index 0014a11..461855b 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_write.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_write.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_write PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_write(UX_SLAVE_CLASS_CDC_ACM *cdc_acm, UCHAR *buffer,
@@ -169,7 +173,7 @@ UINT status = 0;
/* On a out, we copy the buffer to the caller. Not very efficient but it makes the API
easier. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
- buffer, local_requested_length);
+ buffer, local_requested_length); /* Use case of memcpy is verified. */
/* Send the request to the device controller. */
status = _ux_device_stack_transfer_request(transfer_request, local_requested_length, local_requested_length);
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_acm_write_with_callback.c b/common/usbx_device_classes/src/ux_device_class_cdc_acm_write_with_callback.c
index 15d4824..3aba3d2 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_acm_write_with_callback.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_acm_write_with_callback.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_acm_write_with_callback PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_acm_write_with_callback(UX_SLAVE_CLASS_CDC_ACM *cdc_acm, UCHAR *buffer,
@@ -123,7 +128,7 @@ UINT status;
cdc_acm -> ux_slave_class_cdc_acm_scheduled_write = UX_TRUE;
/* Invoke the bulkin thread by sending a flag . */
- status = _ux_utility_event_flags_set(&cdc_acm -> ux_slave_class_cdc_acm_event_flags_group, UX_DEVICE_CLASS_CDC_ACM_WRITE_EVENT, TX_OR);
+ status = _ux_utility_event_flags_set(&cdc_acm -> ux_slave_class_cdc_acm_event_flags_group, UX_DEVICE_CLASS_CDC_ACM_WRITE_EVENT, UX_OR);
/* Simply return the last function result. When we leave this function, the deferred writing has been scheduled. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_activate.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_activate.c
index eca34ed..1ccac6e 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_activate.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -63,6 +63,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_activate(UX_SLAVE_CLASS_COMMAND *command)
@@ -114,7 +120,7 @@ ULONG physical_address_lsw;
/* Reset the endpoint buffers. */
_ux_utility_memory_set(cdc_ecm -> ux_slave_class_cdc_ecm_interrupt_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
/* Resume the interrupt endpoint threads. */
_ux_utility_thread_resume(&cdc_ecm -> ux_slave_class_cdc_ecm_interrupt_thread);
@@ -192,13 +198,13 @@ ULONG physical_address_lsw;
cdc_ecm -> ux_slave_class_cdc_ecm_link_state = UX_DEVICE_CLASS_CDC_ECM_LINK_STATE_UP;
/* Wake up the Interrupt thread and send a network notification to the host. */
- _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NETWORK_NOTIFICATION_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NETWORK_NOTIFICATION_EVENT, UX_OR);
/* Reset the endpoint buffers. */
_ux_utility_memory_set(cdc_ecm -> ux_slave_class_cdc_ecm_bulkout_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
_ux_utility_memory_set(cdc_ecm -> ux_slave_class_cdc_ecm_bulkin_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
/* Resume the endpoint threads. */
_ux_utility_thread_resume(&cdc_ecm -> ux_slave_class_cdc_ecm_bulkout_thread);
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkin_thread.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkin_thread.c
index d1ed308..107ad53 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkin_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkin_thread.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_bulkin_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_cdc_ecm_bulkin_thread(ULONG cdc_ecm_class)
@@ -105,7 +111,7 @@ ULONG transfer_length;
or until there has been a change in the device state (i.e. disconnection). */
_ux_utility_event_flags_get(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, (UX_DEVICE_CLASS_CDC_ECM_NEW_BULKIN_EVENT |
UX_DEVICE_CLASS_CDC_ECM_NEW_DEVICE_STATE_CHANGE_EVENT),
- TX_OR_CLEAR, &actual_flags, TX_WAIT_FOREVER);
+ UX_OR_CLEAR, &actual_flags, UX_WAIT_FOREVER);
/* Check the completion code and the actual flags returned. */
if ((actual_flags & UX_DEVICE_CLASS_CDC_ECM_NEW_DEVICE_STATE_CHANGE_EVENT) == 0)
@@ -142,7 +148,7 @@ ULONG transfer_length;
{
/* Copy the packet in the transfer descriptor buffer. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer, packet_header, current_packet -> nx_packet_length);
+ _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer, packet_header, current_packet -> nx_packet_length); /* Use case of memcpy is verified. */
/* Calculate the transfer length. */
transfer_length = current_packet -> nx_packet_length;
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkout_thread.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkout_thread.c
index 958e7aa..3a70402 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkout_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_bulkout_thread.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_bulkout_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* prefixed UX to MS_TO_TICK, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_cdc_ecm_bulkout_thread(ULONG cdc_ecm_class)
@@ -102,7 +107,7 @@ ULONG ip_given_length;
/* We can accept new reception. Get a NX Packet */
status = nx_packet_allocate(&cdc_ecm -> ux_slave_class_cdc_ecm_packet_pool, &packet,
- NX_RECEIVE_PACKET, MS_TO_TICK(UX_DEVICE_CLASS_CDC_ECM_PACKET_POOL_WAIT));
+ NX_RECEIVE_PACKET, UX_MS_TO_TICK(UX_DEVICE_CLASS_CDC_ECM_PACKET_POOL_WAIT));
if (status == NX_SUCCESS)
{
@@ -140,7 +145,7 @@ ULONG ip_given_length;
packet -> nx_packet_append_ptr = packet -> nx_packet_prepend_ptr + transfer_request -> ux_slave_transfer_request_actual_length;
/* Copy the received packet in the IP packet data area. */
- _ux_utility_memory_copy(packet -> nx_packet_prepend_ptr, transfer_request -> ux_slave_transfer_request_data_pointer, packet -> nx_packet_length);
+ _ux_utility_memory_copy(packet -> nx_packet_prepend_ptr, transfer_request -> ux_slave_transfer_request_data_pointer, packet -> nx_packet_length); /* Use case of memcpy is verified. */
/* Calculate the accurate packet length from ip header. */
if((*(packet -> nx_packet_prepend_ptr + 12) == 0x08) &&
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_change.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_change.c
index 4306003..a8f59bb 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_change.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_change.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_change PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_change(UX_SLAVE_CLASS_COMMAND *command)
@@ -139,16 +145,16 @@ UX_SLAVE_ENDPOINT *endpoint;
/* Reset the endpoint buffers. */
_ux_utility_memory_set(cdc_ecm -> ux_slave_class_cdc_ecm_bulkout_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
_ux_utility_memory_set(cdc_ecm -> ux_slave_class_cdc_ecm_bulkin_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
/* Resume the endpoint threads. */
_ux_utility_thread_resume(&cdc_ecm -> ux_slave_class_cdc_ecm_bulkout_thread);
_ux_utility_thread_resume(&cdc_ecm -> ux_slave_class_cdc_ecm_bulkin_thread);
/* Wake up the Interrupt thread and send a network notification to the host. */
- _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NETWORK_NOTIFICATION_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NETWORK_NOTIFICATION_EVENT, UX_OR);
/* If there is an activate function call it. */
if (cdc_ecm -> ux_slave_class_cdc_ecm_parameter.ux_slave_class_cdc_ecm_instance_activate != UX_NULL)
@@ -173,10 +179,10 @@ UX_SLAVE_ENDPOINT *endpoint;
/* Notify the thread waiting for network notification events. In this case,
the event is that the link state has been switched to down. */
- _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NETWORK_NOTIFICATION_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NETWORK_NOTIFICATION_EVENT, UX_OR);
/* Wake up the bulk in thread so that it can clean up the xmit queue. */
- _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NEW_DEVICE_STATE_CHANGE_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NEW_DEVICE_STATE_CHANGE_EVENT, UX_OR);
/* If there is a deactivate function call it. */
if (cdc_ecm -> ux_slave_class_cdc_ecm_parameter.ux_slave_class_cdc_ecm_instance_deactivate != UX_NULL)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_control_request.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_control_request.c
index f4b4ce2..a42445b 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_control_request.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_control_request PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -64,6 +64,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_control_request(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_deactivate.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_deactivate.c
index 30d5319..7f2a5f7 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_deactivate.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_deactivate(UX_SLAVE_CLASS_COMMAND *command)
@@ -115,7 +120,7 @@ UX_SLAVE_CLASS *class;
_ux_device_stack_transfer_all_request_abort(cdc_ecm -> ux_slave_class_cdc_ecm_interrupt_endpoint, UX_TRANSFER_BUS_RESET);
/* Wake up the bulk in thread so it will release the NetX resources used and suspend. */
- _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NEW_DEVICE_STATE_CHANGE_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NEW_DEVICE_STATE_CHANGE_EVENT, UX_OR);
/* If there is a deactivate function call it. */
if (cdc_ecm -> ux_slave_class_cdc_ecm_parameter.ux_slave_class_cdc_ecm_instance_deactivate != UX_NULL)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_entry.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_entry.c
index 802aaaa..1242155 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_cdc_ecm_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_cdc_ecm_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_initialize.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_initialize.c
index b446066..af9ed7d 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_initialize.c
@@ -34,7 +34,7 @@ UX_DEVICE_CLASS_CDC_ECM_NX_ETHERNET_POOL_ALLOCSIZE_ASSERT
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +73,12 @@ UX_DEVICE_CLASS_CDC_ECM_NX_ETHERNET_POOL_ALLOCSIZE_ASSERT
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_initialize(UX_SLAVE_CLASS_COMMAND *command)
@@ -164,7 +170,7 @@ UINT status;
_ux_device_class_cdc_ecm_interrupt_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) cdc_ecm -> ux_slave_class_cdc_ecm_interrupt_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
if (status != UX_SUCCESS)
status = (UX_THREAD_ERROR);
}
@@ -182,7 +188,7 @@ UINT status;
_ux_device_class_cdc_ecm_bulkout_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) cdc_ecm -> ux_slave_class_cdc_ecm_bulkout_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
if (status != UX_SUCCESS)
status = (UX_THREAD_ERROR);
else
@@ -197,7 +203,7 @@ UINT status;
_ux_device_class_cdc_ecm_bulkin_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) cdc_ecm -> ux_slave_class_cdc_ecm_bulkin_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
if (status != UX_SUCCESS)
status = (UX_THREAD_ERROR);
else
@@ -224,14 +230,14 @@ UINT status;
/* Copy the local node ID. */
_ux_utility_memory_copy(cdc_ecm -> ux_slave_class_cdc_ecm_local_node_id, cdc_ecm_parameter -> ux_slave_class_cdc_ecm_parameter_local_node_id,
- UX_DEVICE_CLASS_CDC_ECM_NODE_ID_LENGTH);
+ UX_DEVICE_CLASS_CDC_ECM_NODE_ID_LENGTH); /* Use case of memcpy is verified. */
/* Copy the remote node ID. */
_ux_utility_memory_copy(cdc_ecm -> ux_slave_class_cdc_ecm_remote_node_id, cdc_ecm_parameter -> ux_slave_class_cdc_ecm_parameter_remote_node_id,
- UX_DEVICE_CLASS_CDC_ECM_NODE_ID_LENGTH);
+ UX_DEVICE_CLASS_CDC_ECM_NODE_ID_LENGTH); /* Use case of memcpy is verified. */
/* Store the rest of the parameters as they are in the local instance. */
- _ux_utility_memory_copy(&cdc_ecm -> ux_slave_class_cdc_ecm_parameter, cdc_ecm_parameter, sizeof (UX_SLAVE_CLASS_CDC_ECM_PARAMETER));
+ _ux_utility_memory_copy(&cdc_ecm -> ux_slave_class_cdc_ecm_parameter, cdc_ecm_parameter, sizeof (UX_SLAVE_CLASS_CDC_ECM_PARAMETER)); /* Use case of memcpy is verified. */
return(UX_SUCCESS);
}
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_interrupt_thread.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_interrupt_thread.c
index 8ca7bb8..2d80492 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_interrupt_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_interrupt_thread.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_interrupt_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_cdc_ecm_interrupt_thread(ULONG cdc_ecm_class)
@@ -106,7 +111,7 @@ UCHAR *notification_buffer;
on the interrupt pipe frequency or a change in the idle state forces us to send an empty report. */
_ux_utility_event_flags_get(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group,
UX_DEVICE_CLASS_CDC_ECM_NETWORK_NOTIFICATION_EVENT,
- TX_OR_CLEAR, &actual_flags, TX_WAIT_FOREVER);
+ UX_OR_CLEAR, &actual_flags, UX_WAIT_FOREVER);
/* Build the Network Notification response. */
notification_buffer = transfer_request -> ux_slave_transfer_request_data_pointer;
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_uninitialize.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_uninitialize.c
index 217b92b..a7e8b45 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_uninitialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_uninitialize.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_uninitialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_uninitialize(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_write.c b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_write.c
index 4e2293a..c9bca45 100644
--- a/common/usbx_device_classes/src/ux_device_class_cdc_ecm_write.c
+++ b/common/usbx_device_classes/src/ux_device_class_cdc_ecm_write.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_cdc_ecm_write PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_cdc_ecm_write(VOID *cdc_ecm_class, NX_PACKET *packet)
@@ -107,7 +112,7 @@ UX_SLAVE_CLASS_CDC_ECM *cdc_ecm;
_ux_utility_mutex_off(&cdc_ecm -> ux_slave_class_cdc_ecm_mutex);
/* Set an event to wake up the bulkin thread. */
- _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NEW_BULKIN_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&cdc_ecm -> ux_slave_class_cdc_ecm_event_flags_group, UX_DEVICE_CLASS_CDC_ECM_NEW_BULKIN_EVENT, UX_OR);
/* Packet successfully added. Return success. */
status = UX_SUCCESS;
diff --git a/common/usbx_device_classes/src/ux_device_class_dfu_activate.c b/common/usbx_device_classes/src/ux_device_class_dfu_activate.c
index 1ac1c50..259a6a4 100644
--- a/common/usbx_device_classes/src/ux_device_class_dfu_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_dfu_activate.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_dfu_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_dfu_activate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_dfu_control_request.c b/common/usbx_device_classes/src/ux_device_class_dfu_control_request.c
index ff5b8db..ebf023b 100644
--- a/common/usbx_device_classes/src/ux_device_class_dfu_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_dfu_control_request.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_dfu_control_request PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_dfu_control_request(UX_SLAVE_CLASS_COMMAND *command)
@@ -120,14 +125,14 @@ ULONG media_status;
{
/* Wake up the DFU thread and send a detach request.. */
- _ux_utility_event_flags_set(&dfu -> ux_slave_class_dfu_event_flags_group, UX_DEVICE_CLASS_DFU_THREAD_EVENT_DISCONNECT, TX_OR);
+ _ux_utility_event_flags_set(&dfu -> ux_slave_class_dfu_event_flags_group, UX_DEVICE_CLASS_DFU_THREAD_EVENT_DISCONNECT, UX_OR);
}
else
{
/* We expect the host to issue a reset. Arm a timer in the DFU thread. */
- _ux_utility_event_flags_set(&dfu -> ux_slave_class_dfu_event_flags_group, UX_DEVICE_CLASS_DFU_THREAD_EVENT_WAIT_RESET, TX_OR);
+ _ux_utility_event_flags_set(&dfu -> ux_slave_class_dfu_event_flags_group, UX_DEVICE_CLASS_DFU_THREAD_EVENT_WAIT_RESET, UX_OR);
}
@@ -541,7 +546,7 @@ ULONG media_status;
{
/* Wake up the DFU thread and send a detach request.. */
- _ux_utility_event_flags_set(&dfu -> ux_slave_class_dfu_event_flags_group, UX_DEVICE_CLASS_DFU_THREAD_EVENT_DISCONNECT, TX_OR);
+ _ux_utility_event_flags_set(&dfu -> ux_slave_class_dfu_event_flags_group, UX_DEVICE_CLASS_DFU_THREAD_EVENT_DISCONNECT, UX_OR);
}
diff --git a/common/usbx_device_classes/src/ux_device_class_dfu_deactivate.c b/common/usbx_device_classes/src/ux_device_class_dfu_deactivate.c
index f43f0a1..96132e2 100644
--- a/common/usbx_device_classes/src/ux_device_class_dfu_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_dfu_deactivate.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_dfu_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -64,6 +64,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_dfu_deactivate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_dfu_entry.c b/common/usbx_device_classes/src/ux_device_class_dfu_entry.c
index 9e76da3..2dd1333 100644
--- a/common/usbx_device_classes/src/ux_device_class_dfu_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_dfu_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_dfu_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_dfu_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_dfu_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_dfu_initialize.c b/common/usbx_device_classes/src/ux_device_class_dfu_initialize.c
index f65148f..165fdf4 100644
--- a/common/usbx_device_classes/src/ux_device_class_dfu_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_dfu_initialize.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_dfu_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_dfu_initialize(UX_SLAVE_CLASS_COMMAND *command)
@@ -183,7 +188,7 @@ ULONG descriptor_length;
_ux_device_class_dfu_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) dfu -> ux_slave_class_dfu_thread_stack,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_AUTO_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_AUTO_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
diff --git a/common/usbx_device_classes/src/ux_device_class_dfu_thread.c b/common/usbx_device_classes/src/ux_device_class_dfu_thread.c
index c6fbbfc..f18b524 100644
--- a/common/usbx_device_classes/src/ux_device_class_dfu_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_dfu_thread.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_dfu_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_dfu_thread(ULONG dfu_class)
@@ -92,7 +97,7 @@ ULONG actual_flags;
/* Wait until we have a event sent by the application. */
status = _ux_utility_event_flags_get(&dfu -> ux_slave_class_dfu_event_flags_group, (UX_DEVICE_CLASS_DFU_THREAD_EVENT_DISCONNECT |
UX_DEVICE_CLASS_DFU_THREAD_EVENT_WAIT_RESET),
- TX_OR_CLEAR, &actual_flags, TX_WAIT_FOREVER);
+ UX_OR_CLEAR, &actual_flags, UX_WAIT_FOREVER);
/* Check the completion code and the actual flags returned. */
if (status == UX_SUCCESS)
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_activate.c b/common/usbx_device_classes/src/ux_device_class_hid_activate.c
index fcb560a..749b7de 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_activate.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_hid_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -63,6 +63,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_activate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_control_request.c b/common/usbx_device_classes/src/ux_device_class_hid_control_request.c
index 64d1b1f..8df4d84 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_control_request.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_hid_control_request PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_hid_control_request PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* prefixed UX to MS_TO_TICK, */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_control_request(UX_SLAVE_CLASS_COMMAND *command)
@@ -154,20 +160,20 @@ UX_SLAVE_CLASS_HID *hid;
{
/* No need to repeat last report, no timeout. */
- hid -> ux_device_class_hid_event_wait_timeout = TX_WAIT_FOREVER;
+ hid -> ux_device_class_hid_event_wait_timeout = UX_WAIT_FOREVER;
}
else
{
/* Calculate the timeout value. Weighted as 4ms. */
- hid -> ux_device_class_hid_event_wait_timeout = MS_TO_TICK((ULONG)duration << 2u);
+ hid -> ux_device_class_hid_event_wait_timeout = UX_MS_TO_TICK((ULONG)duration << 2u);
/* Be sure to have a timeout that is not zero. */
if (hid -> ux_device_class_hid_event_wait_timeout == 0)
hid -> ux_device_class_hid_event_wait_timeout ++;
/* Set an event to wake up the interrupt thread. */
- _ux_utility_event_flags_set(&hid -> ux_device_class_hid_event_flags_group, UX_DEVICE_CLASS_HID_NEW_IDLE_RATE, TX_OR);
+ _ux_utility_event_flags_set(&hid -> ux_device_class_hid_event_flags_group, UX_DEVICE_CLASS_HID_NEW_IDLE_RATE, UX_OR);
}
}
}
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c b/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c
index 4f4892d..0e5a0af 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_hid_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -64,6 +64,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_deactivate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_descriptor_send.c b/common/usbx_device_classes/src/ux_device_class_hid_descriptor_send.c
index 61b41f9..c7fcc32 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_descriptor_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_descriptor_send.c
@@ -32,10 +32,10 @@
/**************************************************************************/
/* */
-/* FUNCTION RELEASE */
+/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_hid_descriptor_send PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_hid_descriptor_send PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_descriptor_send(UX_SLAVE_CLASS_HID *hid, ULONG descriptor_type,
@@ -140,9 +144,24 @@ ULONG length;
else
length = host_length;
+ /* Check buffer length, since descriptor length may exceed buffer... */
+ if (length > UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH)
+ {
+
+ /* Error trap. */
+ _ux_system_error_handler(UX_SYSTEM_LEVEL_THREAD, UX_SYSTEM_CONTEXT_CLASS, UX_MEMORY_INSUFFICIENT);
+
+ /* If trace is enabled, insert this event into the trace buffer. */
+ UX_TRACE_IN_LINE_INSERT(UX_TRACE_ERROR, UX_MEMORY_INSUFFICIENT, hid, 0, 0, UX_TRACE_ERRORS, 0, 0)
+
+ /* Stall the endpoint. */
+ status = dcd -> ux_slave_dcd_function(dcd, UX_DCD_STALL_ENDPOINT, endpoint);
+ break;
+ }
+
/* Copy the device descriptor into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
- device_framework, length);
+ device_framework, length); /* Use case of memcpy is verified. */
/* We can return the configuration descriptor. */
status = _ux_device_stack_transfer_request(transfer_request, length, host_length);
@@ -189,7 +208,7 @@ ULONG length;
/* Copy the device descriptor into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
- hid -> ux_device_class_hid_report_address, length);
+ hid -> ux_device_class_hid_report_address, length); /* Use case of memcpy is verified. */
/* We can return the report descriptor. */
status = _ux_device_stack_transfer_request(transfer_request, length, host_length);
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_entry.c b/common/usbx_device_classes/src/ux_device_class_hid_entry.c
index 9a99766..384b8c2 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_hid_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_hid_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +71,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_event_get.c b/common/usbx_device_classes/src/ux_device_class_hid_event_get.c
index ab1ce83..8d4308a 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_event_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_event_get.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_hid_event_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_event_get(UX_SLAVE_CLASS_HID *hid,
@@ -93,11 +97,15 @@ UX_SLAVE_DEVICE *device;
/* There is an event to report, get the current pointer to the event. */
current_hid_event = hid -> ux_device_class_hid_event_array_tail;
-
+
+ /* Keep the event data length inside buffer area. */
+ if (current_hid_event -> ux_device_class_hid_event_length > UX_DEVICE_CLASS_HID_EVENT_BUFFER_LENGTH)
+ current_hid_event -> ux_device_class_hid_event_length = UX_DEVICE_CLASS_HID_EVENT_BUFFER_LENGTH;
+
/* fill in the event structure from the user. */
hid_event -> ux_device_class_hid_event_length = current_hid_event -> ux_device_class_hid_event_length;
_ux_utility_memory_copy(hid_event -> ux_device_class_hid_event_buffer, current_hid_event -> ux_device_class_hid_event_buffer,
- current_hid_event -> ux_device_class_hid_event_length);
+ current_hid_event -> ux_device_class_hid_event_length); /* Use case of memcpy is verified. */
/* Adjust the tail pointer. Check if we are at the end. */
if ((current_hid_event + 1) == hid -> ux_device_class_hid_event_array_end)
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_event_set.c b/common/usbx_device_classes/src/ux_device_class_hid_event_set.c
index ce83453..988a074 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_event_set.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_event_set.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_hid_event_set PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_event_set(UX_SLAVE_CLASS_HID *hid,
@@ -132,7 +138,7 @@ UX_SLAVE_CLASS_HID_EVENT *next_hid_event;
/* Store the data itself. */
_ux_utility_memory_copy(current_hid_event -> ux_device_class_hid_event_buffer + 1, hid_event -> ux_device_class_hid_event_buffer,
- hid_event -> ux_device_class_hid_event_length);
+ hid_event -> ux_device_class_hid_event_length); /* Use case of memcpy is verified. */
/* fill in the event structure from the user. */
current_hid_event -> ux_device_class_hid_event_length = hid_event -> ux_device_class_hid_event_length + 1;
@@ -142,14 +148,14 @@ UX_SLAVE_CLASS_HID_EVENT *next_hid_event;
/* No report ID to consider. */
_ux_utility_memory_copy(current_hid_event -> ux_device_class_hid_event_buffer, hid_event -> ux_device_class_hid_event_buffer,
- hid_event -> ux_device_class_hid_event_length);
+ hid_event -> ux_device_class_hid_event_length); /* Use case of memcpy is verified. */
/* fill in the event structure from the user. */
current_hid_event -> ux_device_class_hid_event_length = hid_event -> ux_device_class_hid_event_length;
}
/* Set an event to wake up the interrupt thread. */
- _ux_utility_event_flags_set(&hid -> ux_device_class_hid_event_flags_group, UX_DEVICE_CLASS_HID_NEW_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&hid -> ux_device_class_hid_event_flags_group, UX_DEVICE_CLASS_HID_NEW_EVENT, UX_OR);
/* Return event status to the user. */
return(UX_SUCCESS);
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_initialize.c b/common/usbx_device_classes/src/ux_device_class_hid_initialize.c
index 9141a98..7296277 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_initialize.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_hid_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_initialize(UX_SLAVE_CLASS_COMMAND *command)
@@ -109,7 +114,7 @@ UINT status = UX_SUCCESS;
_ux_device_class_hid_interrupt_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) class -> ux_slave_class_thread_stack,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
/* Check the creation of this thread. */
if (status == UX_SUCCESS)
@@ -147,7 +152,7 @@ UINT status = UX_SUCCESS;
hid -> ux_slave_class_hid_instance_deactivate = hid_parameter -> ux_slave_class_hid_instance_deactivate;
/* By default no event wait timeout. */
- hid -> ux_device_class_hid_event_wait_timeout = TX_WAIT_FOREVER;
+ hid -> ux_device_class_hid_event_wait_timeout = UX_WAIT_FOREVER;
/* Create a event flag group for the hid class to synchronize with the event interrupt thread. */
status = _ux_utility_event_flags_create(&hid -> ux_device_class_hid_event_flags_group, "ux_device_class_hid_event_flag");
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_interrupt_thread.c b/common/usbx_device_classes/src/ux_device_class_hid_interrupt_thread.c
index 4274a06..cfc792d 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_interrupt_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_interrupt_thread.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_hid_interrupt_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_hid_interrupt_thread(ULONG hid_class)
@@ -107,11 +113,11 @@ ULONG actual_flags;
/* Wait until we have a event sent by the application
or a change in the idle state to send last or empty report. */
status = _ux_utility_event_flags_get(&hid -> ux_device_class_hid_event_flags_group,
- UX_DEVICE_CLASS_HID_EVENTS_MASK, TX_OR_CLEAR, &actual_flags,
+ UX_DEVICE_CLASS_HID_EVENTS_MASK, UX_OR_CLEAR, &actual_flags,
hid -> ux_device_class_hid_event_wait_timeout);
/* If there is no event, check if we have timeout defined. */
- if (status == TX_NO_EVENTS)
+ if (status == UX_NO_EVENTS)
{
/* There is no event exists on timeout, insert last. */
@@ -122,14 +128,14 @@ ULONG actual_flags;
hid_event.ux_device_class_hid_event_length = transfer_request_in -> ux_slave_transfer_request_requested_length;
_ux_utility_memory_copy(hid_event.ux_device_class_hid_event_buffer,
transfer_request_in -> ux_slave_transfer_request_data_pointer,
- hid_event.ux_device_class_hid_event_length);
+ hid_event.ux_device_class_hid_event_length); /* Use case of memcpy is verified. */
}
else
{
hid_event.ux_device_class_hid_event_report_id = 0;
hid_event.ux_device_class_hid_event_length = transfer_request_in -> ux_slave_transfer_request_endpoint -> ux_slave_endpoint_descriptor.wMaxPacketSize & 0x7FF;
_ux_utility_memory_set(hid_event.ux_device_class_hid_event_buffer, 0,
- hid_event.ux_device_class_hid_event_length);
+ hid_event.ux_device_class_hid_event_length); /* Use case of memset is verified. */
}
_ux_device_class_hid_event_set(hid, &hid_event);
@@ -157,7 +163,7 @@ ULONG actual_flags;
buffer = transfer_request_in -> ux_slave_transfer_request_data_pointer;
/* Copy the event buffer into the target buffer. */
- _ux_utility_memory_copy(buffer, hid_event.ux_device_class_hid_event_buffer, hid_event.ux_device_class_hid_event_length);
+ _ux_utility_memory_copy(buffer, hid_event.ux_device_class_hid_event_buffer, hid_event.ux_device_class_hid_event_length); /* Use case of memcpy is verified. */
/* Send the request to the device controller. */
status = _ux_device_stack_transfer_request(transfer_request_in, hid_event.ux_device_class_hid_event_length,
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_report_get.c b/common/usbx_device_classes/src/ux_device_class_hid_report_get.c
index 4782148..44d9910 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_report_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_report_get.c
@@ -32,10 +32,10 @@
/**************************************************************************/
/* */
-/* FUNCTION RELEASE */
+/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_hid_report_set PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_hid_report_get PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +71,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_report_get(UX_SLAVE_CLASS_HID *hid, ULONG descriptor_type,
@@ -141,12 +145,14 @@ UINT status = UX_ERROR;
hid_event_length = host_length;
else
hid_event_length = hid_event.ux_device_class_hid_event_length;
+ if (hid_event_length > UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH)
+ hid_event_length = UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH;
/* First reset it. */
- _ux_utility_memory_set(buffer, 0, hid_event_length);
+ _ux_utility_memory_set(buffer, 0, hid_event_length); /* Use case of memset is verified. */
/* Copy the event buffer into the target buffer. */
- _ux_utility_memory_copy(buffer, hid_event.ux_device_class_hid_event_buffer, hid_event_length);
+ _ux_utility_memory_copy(buffer, hid_event.ux_device_class_hid_event_buffer, hid_event_length); /* Use case of memcpy is verified. */
}
else
{
@@ -160,7 +166,7 @@ UINT status = UX_ERROR;
hid_event_length = UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH;
/* Reset it. */
- _ux_utility_memory_set(buffer, 0, hid_event_length);
+ _ux_utility_memory_set(buffer, 0, hid_event_length); /* Use case of memset is verified. */
}
/* We can send the report. */
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_report_set.c b/common/usbx_device_classes/src/ux_device_class_hid_report_set.c
index 69ec450..41b1373 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_report_set.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_report_set.c
@@ -32,10 +32,10 @@
/**************************************************************************/
/* */
-/* FUNCTION RELEASE */
+/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_hid_report_set PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_hid_report_set PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_report_set(UX_SLAVE_CLASS_HID *hid, ULONG descriptor_type,
@@ -132,7 +136,7 @@ UCHAR *hid_buffer;
/* Now we can safely copy the payload. */
_ux_utility_memory_copy(hid_event.ux_device_class_hid_event_buffer, hid_buffer,
- hid_event.ux_device_class_hid_event_length);
+ hid_event.ux_device_class_hid_event_length); /* Use case of memcpy is verified. */
/* If there is a callback defined by the application, send the hid event to it. */
if (hid -> ux_device_class_hid_callback != UX_NULL)
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_uninitialize.c b/common/usbx_device_classes/src/ux_device_class_hid_uninitialize.c
index 3477161..3086331 100644
--- a/common/usbx_device_classes/src/ux_device_class_hid_uninitialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_hid_uninitialize.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_hid_uninitialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_hid_uninitialize(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_activate.c b/common/usbx_device_classes/src/ux_device_class_pima_activate.c
index 06a1a02..e24938f 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_activate.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -63,6 +63,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_activate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_control_request.c b/common/usbx_device_classes/src/ux_device_class_pima_control_request.c
index 65a3172..b6cc24f 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_control_request.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_pima_control_request PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_pima_control_request PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_control_request(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_data.c b/common/usbx_device_classes/src/ux_device_class_pima_data.c
index 79eeb77..b29a98c 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_data.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_data.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_pima_data PORTABLE C */
-/* 6.0 */
+/* ux_device_class_pima_data.c PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -60,6 +60,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_deactivate.c b/common/usbx_device_classes/src/ux_device_class_pima_deactivate.c
index 63530ef..48a80ca 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_deactivate.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -64,6 +64,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_deactivate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_device_info_send.c b/common/usbx_device_classes/src/ux_device_class_pima_device_info_send.c
index c9decae..7794f28 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_device_info_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_device_info_send.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_device_info_send PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_device_info_send(UX_SLAVE_CLASS_PIMA *pima)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_device_prop_desc_get.c b/common/usbx_device_classes/src/ux_device_class_pima_device_prop_desc_get.c
index 173e517..c6d770d 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_device_prop_desc_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_device_prop_desc_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_device_prop_desc_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_device_prop_desc_get(UX_SLAVE_CLASS_PIMA *pima,
@@ -132,7 +136,7 @@ UCHAR *device_property_desc_dataset;
}
/* Copy the property dataset into the local buffer. */
- _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, device_property_desc_dataset, device_property_desc_dataset_length);
+ _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, device_property_desc_dataset, device_property_desc_dataset_length); /* Use case of memcpy is verified. */
/* Add the header size to the payload. */
device_property_desc_dataset_length += UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE;
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_get.c b/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_get.c
index c4a21a4..9590e2b 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_get.c
@@ -30,12 +30,16 @@
#include "ux_device_stack.h"
+#if UX_SLAVE_REQUEST_DATA_MAX_LENGTH < UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_device_prop_value_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +76,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_device_prop_value_get(UX_SLAVE_CLASS_PIMA *pima,
@@ -116,9 +124,23 @@ UCHAR *device_property_value;
else
{
-
+
+ /* Ensure the application's data can fit in the endpoint's data buffer. */
+ if (device_property_value_length > UX_SLAVE_REQUEST_DATA_MAX_LENGTH - UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE)
+ {
+
+ /* If trace is enabled, insert this event into the trace buffer. */
+ UX_TRACE_IN_LINE_INSERT(UX_TRACE_ERROR, UX_MEMORY_INSUFFICIENT, 0, 0, 0, UX_TRACE_ERRORS, 0, 0)
+
+ /* We return an error. */
+ _ux_device_class_pima_response_send(pima, UX_DEVICE_CLASS_PIMA_RC_GENERAL_ERROR, 0, 0, 0, 0);
+
+ /* Return overflow error. */
+ return(UX_MEMORY_INSUFFICIENT);
+ }
+
/* Copy the property dataset into the local buffer. */
- _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, device_property_value, device_property_value_length);
+ _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, device_property_value, device_property_value_length); /* Use case of memcpy is verified. */
/* Add the header size to the payload. */
device_property_value_length += UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE;
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_set.c b/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_set.c
index 702744b..5391204 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_set.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_device_prop_value_set.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_device_prop_value_set PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_device_prop_value_set(UX_SLAVE_CLASS_PIMA *pima, ULONG device_property_code)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_device_reset.c b/common/usbx_device_classes/src/ux_device_class_pima_device_reset.c
index 3a9c162..04c709f 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_device_reset.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_device_reset.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_device_reset PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_device_reset(UX_SLAVE_CLASS_PIMA *pima)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_entry.c b/common/usbx_device_classes/src/ux_device_class_pima_entry.c
index 380e987..de5de6b 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_pima_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_pima_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_event_get.c b/common/usbx_device_classes/src/ux_device_class_pima_event_get.c
index 5d83d7d..8030e21 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_event_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_event_get.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_event_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_event_get(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_event_set.c b/common/usbx_device_classes/src/ux_device_class_pima_event_set.c
index b360979..015c13e 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_event_set.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_event_set.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_event_set PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_event_set(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_initialize.c b/common/usbx_device_classes/src/ux_device_class_pima_initialize.c
index 9afd7c4..b1e2f51 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_initialize.c
@@ -32,8 +32,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_pima_activate PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_pima_initialize PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_initialize(UX_SLAVE_CLASS_COMMAND *command)
@@ -107,7 +112,7 @@ UX_SLAVE_CLASS *class;
_ux_device_class_pima_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) class -> ux_slave_class_thread_stack,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_interrupt_thread.c b/common/usbx_device_classes/src/ux_device_class_pima_interrupt_thread.c
index 1f2f1ae..cc5bc59 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_interrupt_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_interrupt_thread.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_interrupt_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +71,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_pima_interrupt_thread(ULONG pima_class)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_add.c b/common/usbx_device_classes/src/ux_device_class_pima_object_add.c
index cfb604c..90a90e8 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_add.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_add.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_add PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_add(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_data_get.c b/common/usbx_device_classes/src/ux_device_class_pima_object_data_get.c
index 4786563..20b0d82 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_data_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_data_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_data_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_data_get(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_data_send.c b/common/usbx_device_classes/src/ux_device_class_pima_object_data_send.c
index 50472ab..1411b0b 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_data_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_data_send.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_data_send PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_data_send(UX_SLAVE_CLASS_PIMA *pima)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_delete.c b/common/usbx_device_classes/src/ux_device_class_pima_object_delete.c
index e5b9519..e70f838 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_delete.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_delete.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_delete PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_delete(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_handles_send.c b/common/usbx_device_classes/src/ux_device_class_pima_object_handles_send.c
index 60ee0f9..d4a707b 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_handles_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_handles_send.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_handles_send PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_handles_send(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_info_get.c b/common/usbx_device_classes/src/ux_device_class_pima_object_info_get.c
index fe6fe48..df22e7b 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_info_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_info_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_info_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_info_get(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle)
@@ -81,7 +85,11 @@ UX_SLAVE_CLASS_PIMA_OBJECT *object;
ULONG object_info_length;
UCHAR *object_info;
UCHAR *object_info_pointer;
-ULONG unicode_string_length;
+ULONG file_name_length;
+ULONG capture_date_length;
+ULONG modification_date_length;
+ULONG keywords_length;
+
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_PIMA_OBJECT_INFO_GET, pima, object_handle, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
@@ -98,13 +106,38 @@ ULONG unicode_string_length;
else
{
+ /* Length calculation and overflow check. */
+ file_name_length = ((ULONG) *object -> ux_device_class_pima_object_filename * 2 ) + 1;
+ capture_date_length = ((ULONG) *object -> ux_device_class_pima_object_capture_date *2 ) + 1;
+ modification_date_length = ((ULONG) *object -> ux_device_class_pima_object_modification_date * 2 ) + 1;
+ keywords_length = ((ULONG) *object -> ux_device_class_pima_object_keywords * 2 ) +1;
+ object_info_length = UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE +
+ UX_DEVICE_CLASS_PIMA_OBJECT_VARIABLE_OFFSET +
+ file_name_length +
+ capture_date_length +
+ modification_date_length +
+ keywords_length;
+
+ /* Ensure the object info data can fit in the endpoint's data buffer. */
+ if (object_info_length > UX_SLAVE_REQUEST_DATA_MAX_LENGTH)
+ {
+
+ /* If trace is enabled, insert this event into the trace buffer. */
+ UX_TRACE_IN_LINE_INSERT(UX_TRACE_ERROR, UX_MEMORY_INSUFFICIENT, 0, 0, 0, UX_TRACE_ERRORS, 0, 0)
+
+ /* We return an error. */
+ _ux_device_class_pima_response_send(pima, UX_DEVICE_CLASS_PIMA_RC_GENERAL_ERROR, 0, 0, 0, 0);
+
+ /* Return overflow error. */
+ return(UX_MEMORY_INSUFFICIENT);
+ }
/* Obtain the pointer to the transfer request. */
transfer_request = &pima -> ux_device_class_pima_bulk_in_endpoint -> ux_slave_endpoint_transfer_request;
/* Obtain memory for this object info. Use the transfer request pre-allocated memory. */
object_info = transfer_request -> ux_slave_transfer_request_data_pointer;
-
+
/* Fill in the data container type. */
_ux_utility_short_put(object_info + UX_DEVICE_CLASS_PIMA_DATA_HEADER_TYPE,
UX_DEVICE_CLASS_PIMA_CT_DATA_BLOCK);
@@ -129,46 +162,29 @@ ULONG unicode_string_length;
/* Copy the object filename field. Point to the beginning of the object description string. */
object_info_pointer += UX_DEVICE_CLASS_PIMA_OBJECT_VARIABLE_OFFSET;
- /* Get the unicode string length for the filename. */
- unicode_string_length = ((ULONG) *object -> ux_device_class_pima_object_filename * 2 ) + 1;
-
/* Copy that string into the object description field. */
- _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_filename, unicode_string_length);
+ _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_filename, file_name_length); /* Use case of memcpy is verified. */
/* Point to the next field. */
- object_info_pointer += unicode_string_length;
+ object_info_pointer += file_name_length;
- /* Get the unicode string length of the capture date. */
- unicode_string_length = ((ULONG) *object -> ux_device_class_pima_object_capture_date *2 ) + 1;
-
/* Copy that string into the capture date field. */
- _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_capture_date, unicode_string_length);
+ _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_capture_date, capture_date_length); /* Use case of memcpy is verified. */
/* Point to the next field. */
- object_info_pointer += unicode_string_length;
-
-
+ object_info_pointer += capture_date_length;
- /* Get the unicode string length. */
- unicode_string_length = ((ULONG) *object -> ux_device_class_pima_object_modification_date * 2 ) + 1;
-
/* Copy that string into the modification date field. */
- _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_modification_date, unicode_string_length);
+ _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_modification_date, modification_date_length); /* Use case of memcpy is verified. */
/* Point to the next field. */
- object_info_pointer += unicode_string_length;
+ object_info_pointer += modification_date_length;
- /* Get the unicode string length. */
- unicode_string_length = ((ULONG) *object -> ux_device_class_pima_object_keywords * 2 ) +1;
-
/* Copy that string into the keywords field. */
- _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_keywords, unicode_string_length);
+ _ux_utility_memory_copy(object_info_pointer, object -> ux_device_class_pima_object_keywords, keywords_length); /* Use case of memcpy is verified. */
/* Point to the end of the variable length. */
- object_info_pointer += unicode_string_length;
-
- /* Compute the overall length of the device info structure. */
- object_info_length = (ULONG) ((ALIGN_TYPE) object_info_pointer - (ALIGN_TYPE) object_info);
+ object_info_pointer += keywords_length;
/* Fill in the size of the response header. */
_ux_utility_long_put(object_info + UX_DEVICE_CLASS_PIMA_DATA_HEADER_LENGTH,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_info_send.c b/common/usbx_device_classes/src/ux_device_class_pima_object_info_send.c
index 1ff436d..25a7de6 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_info_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_info_send.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_info_send PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -74,6 +74,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_info_send(UX_SLAVE_CLASS_PIMA *pima, ULONG storage_id, ULONG parent_object_handle)
@@ -145,7 +149,7 @@ ULONG object_handle;
{
/* Copy that string into the object description field. */
- _ux_utility_memory_copy(object -> ux_device_class_pima_object_filename, object_info_pointer, unicode_string_length);
+ _ux_utility_memory_copy(object -> ux_device_class_pima_object_filename, object_info_pointer, unicode_string_length); /* Use case of memcpy is verified. */
/* Point to the next field. */
object_info_pointer += unicode_string_length;
@@ -165,7 +169,7 @@ ULONG object_handle;
{
/* Copy that string into the capture date field. */
- _ux_utility_memory_copy(object -> ux_device_class_pima_object_capture_date, object_info_pointer, unicode_string_length);
+ _ux_utility_memory_copy(object -> ux_device_class_pima_object_capture_date, object_info_pointer, unicode_string_length); /* Use case of memcpy is verified. */
/* Point to the next field. */
object_info_pointer += unicode_string_length;
@@ -185,7 +189,7 @@ ULONG object_handle;
{
/* Copy that string into the modification date field. */
- _ux_utility_memory_copy(object -> ux_device_class_pima_object_modification_date, object_info_pointer, unicode_string_length);
+ _ux_utility_memory_copy(object -> ux_device_class_pima_object_modification_date, object_info_pointer, unicode_string_length); /* Use case of memcpy is verified. */
/* Point to the next field. */
object_info_pointer += unicode_string_length;
@@ -205,7 +209,7 @@ ULONG object_handle;
{
/* Copy that string into the keywords field. */
- _ux_utility_memory_copy(object -> ux_device_class_pima_object_keywords, object_info_pointer, unicode_string_length);
+ _ux_utility_memory_copy(object -> ux_device_class_pima_object_keywords, object_info_pointer, unicode_string_length); /* Use case of memcpy is verified. */
/* Reset the rest of the other parameters. */
object -> ux_device_class_pima_object_state = 0;
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_prop_desc_get.c b/common/usbx_device_classes/src/ux_device_class_pima_object_prop_desc_get.c
index 374b1ce..f5d8446 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_prop_desc_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_prop_desc_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_prop_desc_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +73,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_prop_desc_get(UX_SLAVE_CLASS_PIMA *pima,
@@ -126,7 +130,7 @@ UCHAR *object_props_desc_end;
/* Copy the object property array. */
_ux_utility_memory_copy(object_props_desc + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE,
- object_prop_dataset, object_prop_dataset_length);
+ object_prop_dataset, object_prop_dataset_length); /* Use case of memcpy is verified. */
/* Add the header size. */
object_prop_dataset_length += UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE;
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_get.c b/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_get.c
index 0683fab..081d2ac 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_prop_value_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -76,6 +76,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_prop_value_get(UX_SLAVE_CLASS_PIMA *pima,
@@ -131,7 +135,7 @@ ULONG object_property_value_length;
{
/* Copy the property dataset into the local buffer. */
- _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, object_property_value, object_property_value_length);
+ _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, object_property_value, object_property_value_length); /* Use case of memcpy is verified. */
/* Add the header size to the payload. */
object_property_value_length += UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE;
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_set.c b/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_set.c
index 0ac6a35..0b86955 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_set.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_prop_value_set.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_prop_value_set PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +71,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_prop_value_set(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_props_supported_get.c b/common/usbx_device_classes/src/ux_device_class_pima_object_props_supported_get.c
index 3b4289b..f041021 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_props_supported_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_props_supported_get.c
@@ -34,8 +34,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_pima_object_prop_supported_get PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_pima_object_props_supported_get PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_props_supported_get(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_references_get.c b/common/usbx_device_classes/src/ux_device_class_pima_object_references_get.c
index dfe537d..3162dca 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_references_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_references_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_references_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +73,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_references_get(UX_SLAVE_CLASS_PIMA *pima,
@@ -127,7 +131,7 @@ ULONG object_references_length;
{
/* Copy the property dataset into the local buffer. */
- _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, object_references, object_references_length);
+ _ux_utility_memory_copy(pima_data_buffer + UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE, object_references, object_references_length); /* Use case of memcpy is verified. */
/* Add the header size to the payload. */
object_references_length += UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE;
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_object_references_set.c b/common/usbx_device_classes/src/ux_device_class_pima_object_references_set.c
index e569dc8..b2c8761 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_object_references_set.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_object_references_set.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_object_references_set PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_object_references_set(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_objects_number_send.c b/common/usbx_device_classes/src/ux_device_class_pima_objects_number_send.c
index 16a4d1e..f0449ca 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_objects_number_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_objects_number_send.c
@@ -34,8 +34,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_pima_object_number_send PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_pima_objects_number_send PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_objects_number_send(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_partial_object_data_get.c b/common/usbx_device_classes/src/ux_device_class_pima_partial_object_data_get.c
index 84a22f5..3a59fd6 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_partial_object_data_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_partial_object_data_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_partial_object_data_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_partial_object_data_get(UX_SLAVE_CLASS_PIMA *pima,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_response_send.c b/common/usbx_device_classes/src/ux_device_class_pima_response_send.c
index 02ec295..d4855d5 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_response_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_response_send.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_response_send PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_response_send(UX_SLAVE_CLASS_PIMA *pima, ULONG response_code,
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_storage_format.c b/common/usbx_device_classes/src/ux_device_class_pima_storage_format.c
index f9d04a0..859f93f 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_storage_format.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_storage_format.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_storage_format PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_storage_format(UX_SLAVE_CLASS_PIMA *pima, ULONG storage_id)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_storage_id_send.c b/common/usbx_device_classes/src/ux_device_class_pima_storage_id_send.c
index 8ab1ab6..635c99e 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_storage_id_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_storage_id_send.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_storage_id_send PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_storage_id_send(UX_SLAVE_CLASS_PIMA *pima)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_storage_info_get.c b/common/usbx_device_classes/src/ux_device_class_pima_storage_info_get.c
index 47581d9..60799e9 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_storage_info_get.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_storage_info_get.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_storage_info_get PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_storage_info_get(UX_SLAVE_CLASS_PIMA *pima, ULONG storage_id)
diff --git a/common/usbx_device_classes/src/ux_device_class_pima_thread.c b/common/usbx_device_classes/src/ux_device_class_pima_thread.c
index d1a4a19..ed50705 100644
--- a/common/usbx_device_classes/src/ux_device_class_pima_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_pima_thread.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -110,6 +110,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_pima_thread(ULONG pima_class)
@@ -163,7 +168,7 @@ UINT status;
_ux_device_class_pima_interrupt_thread,
(ULONG) (ALIGN_TYPE) pima, (VOID *) pima -> ux_device_class_pima_interrupt_thread_stack,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_AUTO_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_AUTO_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_activate.c b/common/usbx_device_classes/src/ux_device_class_rndis_activate.c
index 31c0c17..5f22683 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_activate.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_activate(UX_SLAVE_CLASS_COMMAND *command)
@@ -171,11 +175,11 @@ ULONG physical_address_lsw;
/* Reset the endpoint buffers. */
_ux_utility_memory_set(rndis -> ux_slave_class_rndis_bulkout_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
_ux_utility_memory_set(rndis -> ux_slave_class_rndis_bulkin_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
_ux_utility_memory_set(rndis -> ux_slave_class_rndis_interrupt_endpoint -> ux_slave_endpoint_transfer_request.
- ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH);
+ ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_REQUEST_DATA_MAX_LENGTH); /* Use case of memset is verified. */
/* Resume the endpoint threads. */
_ux_utility_thread_resume(&rndis -> ux_slave_class_rndis_interrupt_thread);
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_bulkin_thread.c b/common/usbx_device_classes/src/ux_device_class_rndis_bulkin_thread.c
index 2347b0c..eb960a0 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_bulkin_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_bulkin_thread.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_bulkin_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_rndis_bulkin_thread(ULONG rndis_class)
@@ -111,7 +117,7 @@ ULONG transfer_length;
on the interrupt pipe frequency or a change in the idle state forces us to send an empty report. */
status = _ux_utility_event_flags_get(&rndis -> ux_slave_class_rndis_event_flags_group, (UX_DEVICE_CLASS_RNDIS_NEW_BULKIN_EVENT |
UX_DEVICE_CLASS_RNDIS_NEW_DEVICE_STATE_CHANGE_EVENT),
- TX_OR_CLEAR, &actual_flags, TX_WAIT_FOREVER);
+ UX_OR_CLEAR, &actual_flags, UX_WAIT_FOREVER);
/* Check the completion code and the actual flags returned. */
if (status == UX_SUCCESS && (actual_flags & UX_DEVICE_CLASS_RNDIS_NEW_DEVICE_STATE_CHANGE_EVENT) == 0)
@@ -148,7 +154,7 @@ ULONG transfer_length;
{
/* Copy the packet in the transfer descriptor buffer. */
- _ux_utility_memory_copy (transfer_request -> ux_slave_transfer_request_data_pointer + UX_DEVICE_CLASS_RNDIS_PACKET_HEADER_LENGTH, packet_header, current_packet -> nx_packet_length);
+ _ux_utility_memory_copy (transfer_request -> ux_slave_transfer_request_data_pointer + UX_DEVICE_CLASS_RNDIS_PACKET_HEADER_LENGTH, packet_header, current_packet -> nx_packet_length); /* Use case of memcpy is verified. */
/* Add the RNDIS header to this packet. */
_ux_utility_long_put(transfer_request -> ux_slave_transfer_request_data_pointer + UX_DEVICE_CLASS_RNDIS_PACKET_MESSAGE_TYPE, UX_DEVICE_CLASS_RNDIS_PACKET_HEADER_MSG);
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_bulkout_thread.c b/common/usbx_device_classes/src/ux_device_class_rndis_bulkout_thread.c
index 9bd016a..0dde156 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_bulkout_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_bulkout_thread.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_bulkout_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +71,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* prefixed UX to MS_TO_TICK, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_rndis_bulkout_thread(ULONG rndis_class)
@@ -107,7 +112,7 @@ ULONG packet_payload;
/* We can accept new reception. Get a NX Packet. */
status = nx_packet_allocate(&rndis -> ux_slave_class_rndis_packet_pool, &packet,
- NX_RECEIVE_PACKET, MS_TO_TICK(UX_DEVICE_CLASS_RNDIS_PACKET_POOL_WAIT));
+ NX_RECEIVE_PACKET, UX_MS_TO_TICK(UX_DEVICE_CLASS_RNDIS_PACKET_POOL_WAIT));
if (status == NX_SUCCESS)
{
@@ -161,7 +166,7 @@ ULONG packet_payload;
/* Copy the received packet in the IP packet data area. */
- _ux_utility_memory_copy(packet -> nx_packet_prepend_ptr, transfer_request -> ux_slave_transfer_request_data_pointer + UX_DEVICE_CLASS_RNDIS_PACKET_BUFFER, packet_payload);
+ _ux_utility_memory_copy(packet -> nx_packet_prepend_ptr, transfer_request -> ux_slave_transfer_request_data_pointer + UX_DEVICE_CLASS_RNDIS_PACKET_BUFFER, packet_payload); /* Use case of memcpy is verified. */
/* Calculate the accurate packet length from ip header */
if((*(packet -> nx_packet_prepend_ptr + 12) == 0x08) &&
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_control_request.c b/common/usbx_device_classes/src/ux_device_class_rndis_control_request.c
index b7ed5b1..edf09eb 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_control_request.c
@@ -28,12 +28,18 @@
#include "ux_device_class_rndis.h"
#include "ux_device_stack.h"
+
+#if UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH < UX_DEVICE_CLASS_RNDIS_INTERRUPT_RESPONSE_LENGTH ||\
+ UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH < UX_DEVICE_CLASS_RNDIS_MAX_CONTROL_RESPONSE_LENGTH
+#error UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_control_request PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -74,6 +80,12 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_control_request(UX_SLAVE_CLASS_COMMAND *command)
@@ -163,13 +175,13 @@ UX_SLAVE_CLASS_RNDIS *rndis;
transfer_request_in = &rndis -> ux_slave_class_rndis_interrupt_endpoint -> ux_slave_endpoint_transfer_request;
/* Reset the buffer. */
- _ux_utility_memory_set(transfer_request_in -> ux_slave_transfer_request_data_pointer, 0, UX_DEVICE_CLASS_RNDIS_INTERRUPT_RESPONSE_LENGTH);
+ _ux_utility_memory_set(transfer_request_in -> ux_slave_transfer_request_data_pointer, 0, UX_DEVICE_CLASS_RNDIS_INTERRUPT_RESPONSE_LENGTH); /* Use case of memset is verified. */
/* Set the buffer of this transfer request with the flag for response available. */
transfer_request_in -> ux_slave_transfer_request_data_pointer[0] = UX_DEVICE_CLASS_RNDIS_INTERRUPT_RESPONSE_AVAILABLE_FLAG;
/* Set an event to wake up the interrupt thread. */
- _ux_utility_event_flags_set(&rndis -> ux_slave_class_rndis_event_flags_group, UX_DEVICE_CLASS_RNDIS_NEW_INTERRUPT_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&rndis -> ux_slave_class_rndis_event_flags_group, UX_DEVICE_CLASS_RNDIS_NEW_INTERRUPT_EVENT, UX_OR);
break;
@@ -178,7 +190,7 @@ UX_SLAVE_CLASS_RNDIS *rndis;
/* Copy the response into the request data buffer. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer, rndis -> ux_slave_class_rndis_response,
- rndis -> ux_slave_class_rndis_response_length);
+ rndis -> ux_slave_class_rndis_response_length); /* Use case of memcpy is verified. */
/* Set the phase of the transfer to data out. */
transfer_request -> ux_slave_transfer_request_phase = UX_TRANSFER_PHASE_DATA_OUT;
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_deactivate.c b/common/usbx_device_classes/src/ux_device_class_rndis_deactivate.c
index c47748c..2956aec 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_deactivate.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_deactivate(UX_SLAVE_CLASS_COMMAND *command)
@@ -104,7 +109,7 @@ UX_SLAVE_CLASS *class;
/* We have 2 threads waiting for an event, interrupt and bulk in. We wake them up with
a DEVICE_STATE_CHANGE event. In turn they will release the NetX resources used and suspend. */
- _ux_utility_event_flags_set(&rndis -> ux_slave_class_rndis_event_flags_group, UX_DEVICE_CLASS_RNDIS_NEW_DEVICE_STATE_CHANGE_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&rndis -> ux_slave_class_rndis_event_flags_group, UX_DEVICE_CLASS_RNDIS_NEW_DEVICE_STATE_CHANGE_EVENT, UX_OR);
/* If there is a deactivate function call it. */
if (rndis -> ux_slave_class_rndis_parameter.ux_slave_class_rndis_instance_deactivate != UX_NULL)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_entry.c b/common/usbx_device_classes/src/ux_device_class_rndis_entry.c
index c8199b9..4976f9e 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_entry.c
@@ -33,8 +33,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_rndis_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_rndis_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_initialize.c b/common/usbx_device_classes/src/ux_device_class_rndis_initialize.c
index 43eab26..54aec46 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_initialize.c
@@ -78,7 +78,7 @@ ULONG ux_device_class_rndis_oid_supported_list[UX_DEVICE_CLASS_RNDIS_OID_SUPPORT
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -120,6 +120,12 @@ ULONG ux_device_class_rndis_oid_supported_list[UX_DEVICE_CLASS_RNDIS_OID_SUPPORT
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, used UX prefix to */
+/* refer to TX symbols instead */
+/* of using them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_initialize(UX_SLAVE_CLASS_COMMAND *command)
@@ -161,14 +167,14 @@ UINT status;
/* Copy the local node ID. */
_ux_utility_memory_copy(rndis -> ux_slave_class_rndis_local_node_id, rndis_parameter -> ux_slave_class_rndis_parameter_local_node_id,
- UX_DEVICE_CLASS_RNDIS_NODE_ID_LENGTH);
+ UX_DEVICE_CLASS_RNDIS_NODE_ID_LENGTH); /* Use case of memcpy is verified. */
/* Copy the remote node ID. */
_ux_utility_memory_copy(rndis -> ux_slave_class_rndis_remote_node_id, rndis_parameter -> ux_slave_class_rndis_parameter_remote_node_id,
- UX_DEVICE_CLASS_RNDIS_NODE_ID_LENGTH);
+ UX_DEVICE_CLASS_RNDIS_NODE_ID_LENGTH); /* Use case of memcpy is verified. */
/* Store the rest of the parameters as they are in the local instance. */
- _ux_utility_memory_copy(&rndis -> ux_slave_class_rndis_parameter, rndis_parameter, sizeof (UX_SLAVE_CLASS_RNDIS_PARAMETER));
+ _ux_utility_memory_copy(&rndis -> ux_slave_class_rndis_parameter, rndis_parameter, sizeof (UX_SLAVE_CLASS_RNDIS_PARAMETER)); /* Use case of memcpy is verified. */
/* Create a mutex to protect the RNDIS thread and the application messing up the transmit queue. */
status = _ux_utility_mutex_create(&rndis -> ux_slave_class_rndis_mutex, "ux_slave_class_rndis_mutex");
@@ -197,7 +203,7 @@ UINT status;
_ux_device_class_rndis_interrupt_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) rndis -> ux_slave_class_rndis_interrupt_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
@@ -226,7 +232,7 @@ UINT status;
_ux_device_class_rndis_bulkout_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) rndis -> ux_slave_class_rndis_bulkout_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
@@ -255,7 +261,7 @@ UINT status;
_ux_device_class_rndis_bulkin_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) rndis -> ux_slave_class_rndis_bulkin_thread_stack ,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
/* Check the creation of this thread. */
if (status != UX_SUCCESS)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_interrupt_thread.c b/common/usbx_device_classes/src/ux_device_class_rndis_interrupt_thread.c
index 01e3463..ad55242 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_interrupt_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_interrupt_thread.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_interrupt_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_rndis_interrupt_thread(ULONG rndis_class)
@@ -104,7 +109,7 @@ ULONG actual_flags;
on the interrupt pipe frequency or a change in the idle state forces us to send an empty report. */
status = _ux_utility_event_flags_get(&rndis -> ux_slave_class_rndis_event_flags_group, (UX_DEVICE_CLASS_RNDIS_NEW_INTERRUPT_EVENT |
UX_DEVICE_CLASS_RNDIS_NEW_DEVICE_STATE_CHANGE_EVENT),
- TX_OR_CLEAR, &actual_flags, TX_WAIT_FOREVER);
+ UX_OR_CLEAR, &actual_flags, UX_WAIT_FOREVER);
/* If error log is enabled, insert this error message into the log buffer. */
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_msg_initialize.c b/common/usbx_device_classes/src/ux_device_class_rndis_msg_initialize.c
index 6e1c7c3..1cc091b 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_msg_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_msg_initialize.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_msg_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_msg_initialize(UX_SLAVE_CLASS_RNDIS *rndis, UX_SLAVE_TRANSFER *transfer_request)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_msg_keep_alive.c b/common/usbx_device_classes/src/ux_device_class_rndis_msg_keep_alive.c
index ad0abd0..481eff0 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_msg_keep_alive.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_msg_keep_alive.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_msg_keep_alive PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_msg_keep_alive(UX_SLAVE_CLASS_RNDIS *rndis, UX_SLAVE_TRANSFER *transfer_request)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_msg_query.c b/common/usbx_device_classes/src/ux_device_class_rndis_msg_query.c
index a2b6b33..1cdee77 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_msg_query.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_msg_query.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_msg_query PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_msg_query(UX_SLAVE_CLASS_RNDIS *rndis, UX_SLAVE_TRANSFER *transfer_request)
@@ -255,7 +259,7 @@ ULONG status;
rndis_response_length = (ULONG) rndis_response_string_length;
/* Copy the vendor description. */
- _ux_utility_memory_copy(rndis_response + UX_DEVICE_CLASS_RNDIS_CMPLT_QUERY_INFO_BUFFER, rndis -> ux_slave_class_rndis_parameter.ux_slave_class_rndis_parameter_vendor_description, rndis_response_length);
+ _ux_utility_memory_copy(rndis_response + UX_DEVICE_CLASS_RNDIS_CMPLT_QUERY_INFO_BUFFER, rndis -> ux_slave_class_rndis_parameter.ux_slave_class_rndis_parameter_vendor_description, rndis_response_length); /* Use case of memcpy is verified. */
break;
@@ -314,7 +318,7 @@ ULONG status;
/* Save the Hardware address in the return message. */
_ux_utility_memory_copy(rndis_response + UX_DEVICE_CLASS_RNDIS_CMPLT_QUERY_INFO_BUFFER,
- rndis -> ux_slave_class_rndis_remote_node_id, UX_DEVICE_CLASS_RNDIS_NODE_ID_LENGTH);
+ rndis -> ux_slave_class_rndis_remote_node_id, UX_DEVICE_CLASS_RNDIS_NODE_ID_LENGTH); /* Use case of memcpy is verified. */
/* Set the total response length. */
rndis_response_length = UX_DEVICE_CLASS_RNDIS_NODE_ID_LENGTH;
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_msg_reset.c b/common/usbx_device_classes/src/ux_device_class_rndis_msg_reset.c
index fbb4319..e40ecaa 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_msg_reset.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_msg_reset.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_msg_reset PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_msg_reset(UX_SLAVE_CLASS_RNDIS *rndis, UX_SLAVE_TRANSFER *transfer_request)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_msg_set.c b/common/usbx_device_classes/src/ux_device_class_rndis_msg_set.c
index 1f5faa7..111bec7 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_msg_set.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_msg_set.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_msg_set PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_msg_set(UX_SLAVE_CLASS_RNDIS *rndis, UX_SLAVE_TRANSFER *transfer_request)
diff --git a/common/usbx_device_classes/src/ux_device_class_rndis_write.c b/common/usbx_device_classes/src/ux_device_class_rndis_write.c
index a21615f..4c695db 100644
--- a/common/usbx_device_classes/src/ux_device_class_rndis_write.c
+++ b/common/usbx_device_classes/src/ux_device_class_rndis_write.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_rndis_write PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -68,6 +68,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_rndis_write(VOID *rndis_class, NX_PACKET *packet)
@@ -121,7 +126,7 @@ UX_SLAVE_CLASS_RNDIS *rndis;
packet -> nx_packet_queue_next = NX_NULL;
/* Set an event to wake up the bulkin thread. */
- _ux_utility_event_flags_set(&rndis -> ux_slave_class_rndis_event_flags_group, UX_DEVICE_CLASS_RNDIS_NEW_BULKIN_EVENT, TX_OR);
+ _ux_utility_event_flags_set(&rndis -> ux_slave_class_rndis_event_flags_group, UX_DEVICE_CLASS_RNDIS_NEW_BULKIN_EVENT, UX_OR);
/* We are done here. */
return(UX_SUCCESS);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_activate.c b/common/usbx_device_classes/src/ux_device_class_storage_activate.c
index 1429e09..2a45a2c 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_activate.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_activate.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_activate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_activate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_control_request.c b/common/usbx_device_classes/src/ux_device_class_storage_control_request.c
index 895e674..bd9925d 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_control_request.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_control_request.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_control_request PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -67,6 +67,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_control_request(UX_SLAVE_CLASS_COMMAND *command)
@@ -135,7 +138,7 @@ UX_SLAVE_ENDPOINT *endpoint_out;
_ux_device_stack_transfer_abort(transfer_request, UX_TRANSFER_APPLICATION_RESET);
/* Reset phase error. */
- storage -> ux_slave_class_storage_phase_error = UX_FALSE;
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
break;
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_csw_send.c b/common/usbx_device_classes/src/ux_device_class_storage_csw_send.c
index 9df0fa6..8e9374a 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_csw_send.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_csw_send.c
@@ -29,12 +29,16 @@
#include "ux_device_class_storage.h"
#include "ux_device_stack.h"
+#if UX_SLAVE_REQUEST_DATA_MAX_LENGTH < UX_SLAVE_CLASS_STORAGE_CSW_LENGTH
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_csw_send PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +75,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_csw_send(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -79,13 +88,23 @@ UINT _ux_device_class_storage_csw_send(UX_SLAVE_CLASS_STORAGE *storage, ULONG l
UINT status;
UX_SLAVE_TRANSFER *transfer_request;
-UCHAR csw_buffer[UX_SLAVE_CLASS_STORAGE_CSW_LENGTH];
+UCHAR *csw_buffer;
+
+
+ UX_PARAMETER_NOT_USED(csw_status);
+
+ /* If CSW skipped, just return. */
+ if (UX_DEVICE_CLASS_STORAGE_CSW_SKIP(&storage -> ux_slave_class_storage_csw_status))
+ return(UX_SUCCESS);
/* Obtain the pointer to the transfer request. */
transfer_request = &endpoint_in -> ux_slave_endpoint_transfer_request;
+ /* Get CSW buffer pointer. */
+ csw_buffer = transfer_request -> ux_slave_transfer_request_data_pointer;
+
/* Ensure it is cleaned. */
- _ux_utility_memory_set(csw_buffer, 0, UX_SLAVE_CLASS_STORAGE_CSW_LENGTH);
+ _ux_utility_memory_set(csw_buffer, 0, UX_SLAVE_CLASS_STORAGE_CSW_LENGTH); /* Use case of memset is verified. */
/* Store the signature of the CSW. */
_ux_utility_long_put(&csw_buffer[UX_SLAVE_CLASS_STORAGE_CSW_SIGNATURE], UX_SLAVE_CLASS_STORAGE_CSW_SIGNATURE_MASK);
@@ -94,11 +113,7 @@ UCHAR csw_buffer[UX_SLAVE_CLASS_STORAGE_CSW_LENGTH];
_ux_utility_long_put(&csw_buffer[UX_SLAVE_CLASS_STORAGE_CSW_TAG], storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_scsi_tag);
/* Store the status of the previous operation. */
- csw_buffer[UX_SLAVE_CLASS_STORAGE_CSW_STATUS] = csw_status;
-
- /* Copy the CSW into the transfer request memory. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
- csw_buffer, UX_SLAVE_CLASS_STORAGE_CSW_LENGTH);
+ csw_buffer[UX_SLAVE_CLASS_STORAGE_CSW_STATUS] = (UCHAR)storage -> ux_slave_class_storage_csw_status;
/* We may be in a special state machine condition where the endpoint is stalled waiting for
a CLEAR_FEATURE. We will wait until the host clears the endpoint.
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_deactivate.c b/common/usbx_device_classes/src/ux_device_class_storage_deactivate.c
index ef20dd0..15aa953 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_deactivate.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_deactivate.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_deactivate PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -65,6 +65,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_deactivate(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_entry.c b/common/usbx_device_classes/src/ux_device_class_storage_entry.c
index 97cb88f..c030d54 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_entry.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_entry.c
@@ -34,8 +34,8 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_class_device_storage_entry PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_storage_entry PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +73,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_entry(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_format.c b/common/usbx_device_classes/src/ux_device_class_storage_format.c
index 66a83a5..b972ae7 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_format.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_format.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_format PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_format(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun, UX_SLAVE_ENDPOINT *endpoint_in,
@@ -77,6 +80,7 @@ UINT _ux_device_class_storage_format(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun
{
UX_PARAMETER_NOT_USED(cbwcb);
+ UX_PARAMETER_NOT_USED(endpoint_in);
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_FORMAT, storage, lun, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
@@ -85,13 +89,12 @@ UINT _ux_device_class_storage_format(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun
OUT endpoint because we expect the host to send parameters. */
_ux_device_stack_endpoint_stall(endpoint_out);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x05;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x26;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x01;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(0x05,0x26,0x01);
+
+ /* Now we set the CSW with failure. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_ERROR, UX_FUNCTION_NOT_SUPPORTED, 0, 0, 0, UX_TRACE_ERRORS, 0, 0)
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_get_configuration.c b/common/usbx_device_classes/src/ux_device_class_storage_get_configuration.c
index 8b50ab9..0948742 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_get_configuration.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_get_configuration.c
@@ -291,13 +291,18 @@ UCHAR usbx_device_class_storage_configuration_active_profile[] = {
};
+#if (UX_SLAVE_REQUEST_DATA_MAX_LENGTH < USBX_DEVICE_CLASS_STORAGE_CONFIGURATION_ACTIVE_PROFILE_LENGTH) ||\
+ (UX_SLAVE_REQUEST_DATA_MAX_LENGTH < USBX_DEVICE_CLASS_STORAGE_CONFIGURATION_PROFILE_LENGTH)
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_get_configuration PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -335,6 +340,11 @@ UCHAR usbx_device_class_storage_configuration_active_profile[] = {
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_get_configuration(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -371,6 +381,9 @@ ULONG feature;
/* Get the allocation length. */
allocation_length = _ux_utility_short_get_big_endian(cbwcb + UX_SLAVE_CLASS_STORAGE_GET_CONFIGURATION_ALLOCATION_LENGTH);
+ /* Default CSW to success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+
/* Is the request demanding all the features ? */
if (starting_feature == 0)
{
@@ -390,7 +403,7 @@ ULONG feature;
/* Copy the CSW into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
usbx_device_class_storage_configuration_active_profile,
- allocation_length);
+ allocation_length); /* Use case of memcpy is verified. */
}
else
{
@@ -406,7 +419,7 @@ ULONG feature;
/* Copy the CSW into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
usbx_device_class_storage_configuration_profile,
- allocation_length);
+ allocation_length); /* Use case of memcpy is verified. */
}
@@ -415,8 +428,8 @@ ULONG feature;
allocation_length,
allocation_length);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now success. */
+ status = UX_SUCCESS;
}
else
{
@@ -451,15 +464,15 @@ ULONG feature;
/* Copy the CSW into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
profile_pointer,
- allocation_length);
+ allocation_length); /* Use case of memcpy is verified. */
/* Send a data payload with the read_capacity response buffer. */
_ux_device_stack_transfer_request(transfer_request,
allocation_length,
allocation_length);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now success. */
+ status = UX_SUCCESS;
/* Get out of the loop. */
break;
@@ -474,13 +487,12 @@ ULONG feature;
/* We are either at the end of the profile or the profile is corrupted. */
_ux_device_stack_endpoint_stall(endpoint_in);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = UX_SLAVE_CLASS_STORAGE_SENSE_KEY_ILLEGAL_REQUEST;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x26;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x02;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(UX_SLAVE_CLASS_STORAGE_SENSE_KEY_ILLEGAL_REQUEST,0x26,0x02);
+
+ /* Now we set the CSW with failure. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* Set status to error. */
status = UX_ERROR;
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_get_performance.c b/common/usbx_device_classes/src/ux_device_class_storage_get_performance.c
index b50025b..5da7514 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_get_performance.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_get_performance.c
@@ -30,6 +30,9 @@
#include "ux_device_stack.h"
#define USBX_DEVICE_CLASS_STORAGE_GET_PERFORMANCE_0_LENGTH 16
+#if UX_SLAVE_REQUEST_DATA_MAX_LENGTH < (USBX_DEVICE_CLASS_STORAGE_GET_PERFORMANCE_0_LENGTH + 8)
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH too small, please check
+#endif
UCHAR usbx_device_class_storage_performance[] = {
0x08, 0x00, 0x00, 0x00, 0x00, 0x23, 0x12, 0x80,
@@ -41,7 +44,7 @@ UCHAR usbx_device_class_storage_performance[] = {
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_get_performance PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -78,6 +81,11 @@ UCHAR usbx_device_class_storage_performance[] = {
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_get_performance(UX_SLAVE_CLASS_STORAGE *storage,
@@ -91,6 +99,8 @@ UINT status;
UX_SLAVE_TRANSFER *transfer_request;
ULONG performance_page;
+
+ UX_PARAMETER_NOT_USED(lun);
UX_PARAMETER_NOT_USED(endpoint_out);
/* If trace is enabled, insert this event into the trace buffer. */
@@ -100,7 +110,7 @@ ULONG performance_page;
transfer_request = &endpoint_in -> ux_slave_endpoint_transfer_request;
/* Ensure memory buffer cleaned. */
- _ux_utility_memory_set(transfer_request -> ux_slave_transfer_request_data_pointer, 0, 64);
+ _ux_utility_memory_set(transfer_request -> ux_slave_transfer_request_data_pointer, 0, 64); /* Use case of memset is verified. */
/* Get the performance page code. */
performance_page = (ULONG) *(cbwcb + UX_SLAVE_CLASS_STORAGE_GET_PERFORMANCE_PAGE);
@@ -131,20 +141,16 @@ ULONG performance_page;
/* Copy the CSW into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer + 8,
- usbx_device_class_storage_performance, USBX_DEVICE_CLASS_STORAGE_GET_PERFORMANCE_0_LENGTH);
+ usbx_device_class_storage_performance, USBX_DEVICE_CLASS_STORAGE_GET_PERFORMANCE_0_LENGTH); /* Use case of memcpy is verified. */
/* Send a data payload with the read_capacity response buffer. */
_ux_device_stack_transfer_request(transfer_request, USBX_DEVICE_CLASS_STORAGE_GET_PERFORMANCE_0_LENGTH + 8, USBX_DEVICE_CLASS_STORAGE_GET_PERFORMANCE_0_LENGTH + 8);
break;
}
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
-
- /* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_get_status_notification.c b/common/usbx_device_classes/src/ux_device_class_storage_get_status_notification.c
index aaffd92..27f8eec 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_get_status_notification.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_get_status_notification.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_get_status_notification PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_get_status_notification(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -88,7 +93,10 @@ ULONG notification_class;
UX_PARAMETER_NOT_USED(endpoint_out);
/* If trace is enabled, insert this event into the trace buffer. */
- UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_READ_CAPACITY, storage, lun, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
+ UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_READ_CAPACITY, storage, lun, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0);
+
+ /* Default CSW to failed. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* Ensure the callback has been initialized. */
if (storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_notification == UX_NULL)
@@ -97,8 +105,9 @@ ULONG notification_class;
/* We need to STALL the IN endpoint. The endpoint will be reset by the host. */
_ux_device_stack_endpoint_stall(endpoint_in);
- /* Now we return a CSW with Error. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
+ /* And update the REQUEST_SENSE codes. */
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(0x05,0x26,0x01);
/* Return error. */
return(UX_FUNCTION_NOT_SUPPORTED);
@@ -114,15 +123,26 @@ ULONG notification_class;
&media_notification,
&media_notification_length);
+ /* Check the notification length. */
+ if (media_notification_length > UX_SLAVE_REQUEST_DATA_MAX_LENGTH - sizeof(USHORT))
+ {
+
+ /* If trace is enabled, insert this event into the trace buffer. */
+ UX_TRACE_IN_LINE_INSERT(UX_TRACE_ERROR, UX_MEMORY_INSUFFICIENT, 0, 0, 0, UX_TRACE_ERRORS, 0, 0)
+
+ /* Error callback. */
+ _ux_system_error_handler(UX_SYSTEM_LEVEL_THREAD, UX_SYSTEM_CONTEXT_CLASS, UX_MEMORY_INSUFFICIENT);
+
+ /* Set status code. */
+ status = UX_MEMORY_INSUFFICIENT;
+ }
+
/* Check the status for error. */
if (status != UX_SUCCESS)
{
/* We need to STALL the IN endpoint. The endpoint will be reset by the host. */
_ux_device_stack_endpoint_stall(endpoint_in);
-
- /* Now we return a CSW with Error. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
}
else
{
@@ -136,7 +156,7 @@ ULONG notification_class;
/* Copy the CSW into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer + sizeof (USHORT),
media_notification,
- media_notification_length);
+ media_notification_length); /* Use case of memcpy is verified. */
/* Update the notification length. */
media_notification_length += (ULONG)sizeof (USHORT);
@@ -146,8 +166,9 @@ ULONG notification_class;
media_notification_length,
media_notification_length);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
}
/* Return completion status. */
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_initialize.c b/common/usbx_device_classes/src/ux_device_class_storage_initialize.c
index 5d01ace..2855498 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_initialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_initialize.c
@@ -41,7 +41,7 @@ UCHAR _ux_system_slave_class_storage_product_serial[] = "123
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_initialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -74,6 +74,11 @@ UCHAR _ux_system_slave_class_storage_product_serial[] = "123
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_initialize(UX_SLAVE_CLASS_COMMAND *command)
@@ -116,7 +121,7 @@ ULONG lun_index;
_ux_device_class_storage_thread,
(ULONG) (ALIGN_TYPE) class, (VOID *) class -> ux_slave_class_thread_stack,
UX_THREAD_STACK_SIZE, UX_THREAD_PRIORITY_CLASS,
- UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, TX_DONT_START);
+ UX_THREAD_PRIORITY_CLASS, UX_NO_TIME_SLICE, UX_DONT_START);
else
status = UX_MEMORY_INSUFFICIENT;
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_inquiry.c b/common/usbx_device_classes/src/ux_device_class_storage_inquiry.c
index aa77c82..1cd1d05 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_inquiry.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_inquiry.c
@@ -30,12 +30,16 @@
#include "ux_device_stack.h"
+#if UX_SLAVE_REQUEST_DATA_MAX_LENGTH < 24
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH is too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_inquiry PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +77,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_inquiry(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun, UX_SLAVE_ENDPOINT *endpoint_in,
@@ -83,7 +92,7 @@ UINT status;
UX_SLAVE_TRANSFER *transfer_request;
UCHAR inquiry_page_code;
UCHAR inquiry_length;
-UCHAR inquiry_buffer[UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_LENGTH];
+UCHAR *inquiry_buffer;
UX_PARAMETER_NOT_USED(endpoint_out);
@@ -99,13 +108,19 @@ UCHAR inquiry_buffer[UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_L
/* Obtain the pointer to the transfer request. */
transfer_request = &endpoint_in -> ux_slave_endpoint_transfer_request;
+ /* Obtain inquiry buffer pointer. */
+ inquiry_buffer = transfer_request -> ux_slave_transfer_request_data_pointer;
+
/* Ensure the data buffer is cleaned. */
- _ux_utility_memory_set(inquiry_buffer, 0, UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_LENGTH);
+ _ux_utility_memory_set(inquiry_buffer, 0, UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_LENGTH); /* Use case of memset is verified. */
/* Check for the maximum length to be returned. */
if (inquiry_length > UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_LENGTH)
inquiry_length = UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_LENGTH;
+ /* Default CSW to passed. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+
/* Ensure we know about the page code. */
switch (inquiry_page_code)
{
@@ -132,29 +147,21 @@ UCHAR inquiry_buffer[UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_L
/* Fill in the storage vendor ID. */
_ux_utility_memory_copy(inquiry_buffer + UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_VENDOR_INFORMATION,
- storage -> ux_slave_class_storage_vendor_id, 8);
+ storage -> ux_slave_class_storage_vendor_id, 8); /* Use case of memcpy is verified. */
/* Fill in the product vendor ID. */
_ux_utility_memory_copy(inquiry_buffer + UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_PRODUCT_ID,
- storage -> ux_slave_class_storage_product_id, 16);
+ storage -> ux_slave_class_storage_product_id, 16); /* Use case of memcpy is verified. */
/* Fill in the product revision number. */
_ux_utility_memory_copy(inquiry_buffer + UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_PRODUCT_REVISION,
- storage -> ux_slave_class_storage_product_rev, 4);
-
- /* Copy the Inquiry Buffer into the transfer request memory. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer, inquiry_buffer, inquiry_length);
+ storage -> ux_slave_class_storage_product_rev, 4); /* Use case of memcpy is verified. */
/* Send a data payload with the inquiry response buffer. */
_ux_device_stack_transfer_request(transfer_request, inquiry_length, inquiry_length);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
-
- /* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ /* Now success. */
+ status = UX_SUCCESS;
break;
@@ -167,18 +174,13 @@ UCHAR inquiry_buffer[UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_L
_ux_utility_short_put_big_endian(transfer_request -> ux_slave_transfer_request_data_pointer + 2, 20);
/* Copy the serial number buffer into the transfer request memory. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer + 4, storage -> ux_slave_class_storage_product_serial, 20);
+ _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer + 4, storage -> ux_slave_class_storage_product_serial, 20); /* Use case of memcpy is verified. */
/* Send a data payload with the inquiry response buffer. */
_ux_device_stack_transfer_request(transfer_request, 24, 24);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
-
- /* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ /* Now success. */
+ status = UX_SUCCESS;
break;
@@ -187,13 +189,12 @@ UCHAR inquiry_buffer[UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_L
/* The page code is not supported. */
_ux_device_stack_endpoint_stall(endpoint_in);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x05;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x26;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x01;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(0x05,0x26,0x01);
+
+ /* Now we set the CSW with failure. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* Return error. */
status = UX_ERROR;
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_mode_select.c b/common/usbx_device_classes/src/ux_device_class_storage_mode_select.c
index f314a52..08c3d7d 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_mode_select.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_mode_select.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_mode_select PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -70,6 +70,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_mode_select(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -77,6 +80,7 @@ UINT _ux_device_class_storage_mode_select(UX_SLAVE_CLASS_STORAGE *storage, ULON
UX_SLAVE_ENDPOINT *endpoint_out, UCHAR * cbwcb)
{
+ UX_PARAMETER_NOT_USED(endpoint_in);
UX_PARAMETER_NOT_USED(cbwcb);
/* If trace is enabled, insert this event into the trace buffer. */
@@ -85,13 +89,12 @@ UINT _ux_device_class_storage_mode_select(UX_SLAVE_CLASS_STORAGE *storage, ULON
/* This command is not yet supported. So Stall the endpoint. */
_ux_device_stack_endpoint_stall(endpoint_out);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x05;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x26;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x01;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(0x05,0x26,0x01);
+
+ /* Now we set the CSW with failure. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* Error trap. */
_ux_system_error_handler(UX_SYSTEM_LEVEL_THREAD, UX_SYSTEM_CONTEXT_CLASS, UX_FUNCTION_NOT_SUPPORTED);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_mode_sense.c b/common/usbx_device_classes/src/ux_device_class_storage_mode_sense.c
index c7a1829..cffc6cf 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_mode_sense.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_mode_sense.c
@@ -65,7 +65,7 @@ UCHAR usbx_device_class_storage_mode_sense_page_cdrom[USBX_DEVICE_CLASS_STORAGE_
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_mode_sense PORTABLE C */
-/* 6.0.2 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -104,11 +104,11 @@ UCHAR usbx_device_class_storage_mode_sense_page_cdrom[USBX_DEVICE_CLASS_STORAGE_
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
-/* 08-14-2020 Chaoqiong Xiao Modified comment(s), */
-/* used mode related macros, */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
/* verified memset and memcpy */
/* cases, */
-/* resulting in version 6.0.2 */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_mode_sense(UX_SLAVE_CLASS_STORAGE *storage,
@@ -254,13 +254,9 @@ ULONG page_length;
/* Send a payload with the response buffer. */
_ux_device_stack_transfer_request(transfer_request, mode_sense_reply_length, mode_sense_reply_length);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
-
- /* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_prevent_allow_media_removal.c b/common/usbx_device_classes/src/ux_device_class_storage_prevent_allow_media_removal.c
index 903922e..90d73df 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_prevent_allow_media_removal.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_prevent_allow_media_removal.c
@@ -34,8 +34,9 @@
/* */
/* FUNCTION RELEASE */
/* */
-/* _ux_device_class_storage_prevent_allow_media_removal PORTABLE C */
-/* 6.0 */
+/* _ux_device_class_storage_prevent_allow_media_removal */
+/* PORTABLE C */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +70,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_prevent_allow_media_removal(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -76,19 +80,16 @@ UINT _ux_device_class_storage_prevent_allow_media_removal(UX_SLAVE_CLASS_STORAG
UX_SLAVE_ENDPOINT *endpoint_out, UCHAR * cbwcb)
{
- UX_PARAMETER_NOT_USED(cbwcb);
+ UX_PARAMETER_NOT_USED(lun);
+ UX_PARAMETER_NOT_USED(endpoint_in);
UX_PARAMETER_NOT_USED(endpoint_out);
+ UX_PARAMETER_NOT_USED(cbwcb);
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_PREVENT_ALLOW_MEDIA_REMOVAL, storage, lun, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
- /* We return a CSW with success. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
-
- /* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ /* We set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
/* Return successful completion. */
return(UX_SUCCESS);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_read.c b/common/usbx_device_classes/src/ux_device_class_storage_read.c
index 4fb48dd..79f00cf 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_read.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_read.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_read PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -75,6 +75,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_read(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -114,6 +117,9 @@ ULONG transfer_length;
/* Compute the total length to transfer and how much remains. */
total_length = total_number_blocks * storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_block_length;
+ /* Default CSW to failed. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
+
/* It may take several transfers to send the requested data. */
while (total_number_blocks)
{
@@ -123,9 +129,7 @@ ULONG transfer_length;
storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_id, &media_status);
/* Update the request sense. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (UCHAR) (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = (UCHAR) ((media_status >> 8 ) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = (UCHAR) ((media_status >> 16 ) & 0xff);
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
/* If there is a problem, return a failed command. */
if (status != UX_SUCCESS)
@@ -135,9 +139,6 @@ ULONG transfer_length;
REQUEST_SENSE command. */
_ux_device_stack_endpoint_stall(endpoint_in);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* Return an error. */
return(UX_ERROR);
}
@@ -173,12 +174,7 @@ ULONG transfer_length;
_ux_device_stack_endpoint_stall(endpoint_in);
/* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (UCHAR) (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = (UCHAR) ((media_status >> 8 ) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = (UCHAR) ((media_status >> 16 ) & 0xff);
-
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
/* Return an error. */
return(UX_ERROR);
@@ -196,13 +192,9 @@ ULONG transfer_length;
_ux_device_stack_endpoint_stall(endpoint_in);
/* Update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x02;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x54;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(0x02,0x54,0x00);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* Return an error. */
return(UX_ERROR);
@@ -218,8 +210,8 @@ ULONG transfer_length;
total_number_blocks -= number_blocks;
}
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_read_capacity.c b/common/usbx_device_classes/src/ux_device_class_storage_read_capacity.c
index cd3a63a..62d4cf6 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_read_capacity.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_read_capacity.c
@@ -30,12 +30,16 @@
#include "ux_device_stack.h"
+#if UX_SLAVE_REQUEST_DATA_MAX_LENGTH < UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LENGTH
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH is too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_read_capacity PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +77,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_read_capacity(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -83,7 +92,7 @@ UINT _ux_device_class_storage_read_capacity(UX_SLAVE_CLASS_STORAGE *storage, UL
UINT status;
ULONG media_status;
UX_SLAVE_TRANSFER *transfer_request;
-UCHAR read_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LENGTH];
+UCHAR *read_capacity_buffer;
UX_PARAMETER_NOT_USED(cbwcb);
UX_PARAMETER_NOT_USED(endpoint_out);
@@ -96,9 +105,7 @@ UCHAR read_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_CAPACIT
storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_id, &media_status);
/* Update the request sense. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (UCHAR) (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = (UCHAR) ((media_status >> 8 ) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = (UCHAR) ((media_status >> 16 ) & 0xff);
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
/* Check the status for error. */
if (status != UX_SUCCESS)
@@ -107,17 +114,21 @@ UCHAR read_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_CAPACIT
/* We need to STALL the IN endpoint. The endpoint will be reset by the host. */
_ux_device_stack_endpoint_stall(endpoint_in);
- /* Now we return a CSW with Error. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
+ /* Now we set the CSW with Error. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
+ status = UX_SUCCESS;
}
else
{
/* Obtain the pointer to the transfer request. */
transfer_request = &endpoint_in -> ux_slave_endpoint_transfer_request;
+
+ /* Obtain read capacity response buffer. */
+ read_capacity_buffer = transfer_request -> ux_slave_transfer_request_data_pointer;
/* Ensure it is cleaned. */
- _ux_utility_memory_set(read_capacity_buffer, 0, UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LENGTH);
+ _ux_utility_memory_set(read_capacity_buffer, 0, UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LENGTH); /* Use case of memcpy is verified. */
/* Insert the last LBA address in the response. */
_ux_utility_long_put_big_endian(&read_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LAST_LBA],
@@ -127,17 +138,14 @@ UCHAR read_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_CAPACIT
_ux_utility_long_put_big_endian(&read_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_BLOCK_SIZE],
storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_block_length);
- /* Copy the CSW into the transfer request memory. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
- read_capacity_buffer, UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LENGTH);
-
/* Send a data payload with the read_capacity response buffer. */
_ux_device_stack_transfer_request(transfer_request,
UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LENGTH,
UX_SLAVE_CLASS_STORAGE_READ_CAPACITY_RESPONSE_LENGTH);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
}
/* Return completion status. */
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_read_disk_information.c b/common/usbx_device_classes/src/ux_device_class_storage_read_disk_information.c
index ad52508..213f711 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_read_disk_information.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_read_disk_information.c
@@ -30,6 +30,9 @@
#include "ux_device_stack.h"
#define USBX_DEVICE_CLASS_STORAGE_DISK_INFORMATION_LENGTH 34
+#if UX_SLAVE_REQUEST_DATA_MAX_LENGTH < USBX_DEVICE_CLASS_STORAGE_DISK_INFORMATION_LENGTH
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH is too small, please check
+#endif
UCHAR usbx_device_class_storage_disk_information[] = {
0x00, 0x00, /* Entire length of disk_information */
@@ -61,7 +64,7 @@ UCHAR usbx_device_class_storage_disk_information[] = {
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_read_disk_information PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -97,6 +100,11 @@ UCHAR usbx_device_class_storage_disk_information[] = {
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_read_disk_information(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -143,15 +151,16 @@ ULONG allocation_length;
/* Copy the CSW into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
usbx_device_class_storage_disk_information,
- allocation_length);
+ allocation_length); /* Use case of memcpy is verified. */
/* Send a data payload with the read_capacity response buffer. */
_ux_device_stack_transfer_request(transfer_request,
allocation_length,
allocation_length);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_read_dvd_structure.c b/common/usbx_device_classes/src/ux_device_class_storage_read_dvd_structure.c
index 5375fd0..46151ea 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_read_dvd_structure.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_read_dvd_structure.c
@@ -162,7 +162,7 @@ UCHAR usbx_device_class_storage_dvd_structure[] = {
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_read_dvd_structure PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -198,6 +198,11 @@ UCHAR usbx_device_class_storage_dvd_structure[] = {
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_read_dvd_structure(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -249,7 +254,7 @@ UCHAR *dvd_structure_pointer;
/* Copy the CSW into the transfer request memory. */
_ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
dvd_structure_pointer,
- transfer_length);
+ transfer_length); /* Use case of memcpy is verified. */
/* Send a data payload with the read_capacity response buffer. */
status = _ux_device_stack_transfer_request(transfer_request,
@@ -267,8 +272,10 @@ UCHAR *dvd_structure_pointer;
allocation_length -= transfer_length;
}
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ UX_PARAMETER_NOT_USED(lun);
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_read_format_capacity.c b/common/usbx_device_classes/src/ux_device_class_storage_read_format_capacity.c
index 3be024e..18b0871 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_read_format_capacity.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_read_format_capacity.c
@@ -30,12 +30,16 @@
#include "ux_device_stack.h"
+#if UX_SLAVE_CLASS_STORAGE_BUFFER_SIZE < UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_LENGTH
+#error UX_SLAVE_CLASS_STORAGE_BUFFER_SIZE too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_read_format_capacity PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +76,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_read_format_capacity(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -81,7 +90,7 @@ UINT _ux_device_class_storage_read_format_capacity(UX_SLAVE_CLASS_STORAGE *stor
UINT status;
UX_SLAVE_TRANSFER *transfer_request;
-UCHAR read_format_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_LENGTH];
+UCHAR *read_format_capacity_buffer;
UX_PARAMETER_NOT_USED(cbwcb);
UX_PARAMETER_NOT_USED(endpoint_out);
@@ -92,8 +101,11 @@ UCHAR read_format_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_
/* Obtain the pointer to the transfer request. */
transfer_request = &endpoint_in -> ux_slave_endpoint_transfer_request;
+ /* Get read format capacity response buffer. */
+ read_format_capacity_buffer = transfer_request -> ux_slave_transfer_request_data_pointer;
+
/* Ensure it is cleaned. */
- _ux_utility_memory_set(read_format_capacity_buffer, 0, UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_LENGTH);
+ _ux_utility_memory_set(read_format_capacity_buffer, 0, UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_LENGTH); /* Use case of memset is verified. */
/* Insert the size of the response block. */
_ux_utility_long_put_big_endian(&read_format_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_SIZE], 8);
@@ -109,17 +121,14 @@ UCHAR read_format_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_
/* Insert the response code : always 2. */
read_format_capacity_buffer[UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_DESC_CODE] = 2;
- /* Copy the CSW into the transfer request memory. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
- read_format_capacity_buffer, UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_LENGTH);
-
/* Send a data payload with the read_capacity response buffer. */
_ux_device_stack_transfer_request(transfer_request,
UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_LENGTH,
UX_SLAVE_CLASS_STORAGE_READ_FORMAT_CAPACITY_RESPONSE_LENGTH);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_read_toc.c b/common/usbx_device_classes/src/ux_device_class_storage_read_toc.c
index 515adfe..8a6486d 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_read_toc.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_read_toc.c
@@ -30,12 +30,16 @@
#include "ux_device_stack.h"
+#if UX_SLAVE_CLASS_STORAGE_BUFFER_SIZE < 20
+#error UX_SLAVE_CLASS_STORAGE_BUFFER_SIZE too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_read_toc PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -73,6 +77,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_read_toc(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -84,8 +93,10 @@ UINT status;
UX_SLAVE_TRANSFER *transfer_request;
ULONG allocation_length;
ULONG toc_length;
-UCHAR toc_buffer[20];
+UCHAR *toc_buffer;
+
+ UX_PARAMETER_NOT_USED(lun);
UX_PARAMETER_NOT_USED(endpoint_out);
/* If trace is enabled, insert this event into the trace buffer. */
@@ -94,8 +105,11 @@ UCHAR toc_buffer[20];
/* Obtain the pointer to the transfer request. */
transfer_request = &endpoint_in -> ux_slave_endpoint_transfer_request;
+ /* Obtain TOC buffer. */
+ toc_buffer = transfer_request -> ux_slave_transfer_request_data_pointer;
+
/* Reset this buffer. */
- _ux_utility_memory_set(toc_buffer,0,20);
+ _ux_utility_memory_set(toc_buffer,0,20); /* Use case of memset is verified. */
/* Get the allocation length. */
allocation_length = _ux_utility_short_get_big_endian(cbwcb + UX_SLAVE_CLASS_STORAGE_READ_TOC_ALLOCATION_LENGTH);
@@ -166,9 +180,6 @@ UCHAR toc_buffer[20];
break;
}
- /* Copy the TOC Buffer into the transfer request memory. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer, toc_buffer, toc_length);
-
/* Check how much we can send back. */
if (allocation_length > toc_length)
@@ -178,8 +189,9 @@ UCHAR toc_buffer[20];
/* Send a data payload with the TOC response buffer. */
_ux_device_stack_transfer_request(transfer_request, allocation_length, allocation_length);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_report_key.c b/common/usbx_device_classes/src/ux_device_class_storage_report_key.c
index 4deb505..70b1662 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_report_key.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_report_key.c
@@ -29,12 +29,17 @@
#include "ux_device_class_storage.h"
#include "ux_device_stack.h"
+
+#if UX_SLAVE_REQUEST_DATA_MAX_LENGTH < UX_SLAVE_CLASS_STORAGE_REPORT_KEY_ANSWER_LENGTH
+#error UX_SLAVE_REQUEST_DATA_MAX_LENGTH too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_report_key PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +74,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_report_key(UX_SLAVE_CLASS_STORAGE *storage,
@@ -83,6 +93,8 @@ UX_SLAVE_TRANSFER *transfer_request;
ULONG allocation_length;
ULONG key_format;
+
+ UX_PARAMETER_NOT_USED(lun);
UX_PARAMETER_NOT_USED(endpoint_out);
/* If trace is enabled, insert this event into the trace buffer. */
@@ -98,7 +110,7 @@ ULONG key_format;
allocation_length = _ux_utility_short_get_big_endian(cbwcb + UX_SLAVE_CLASS_STORAGE_REPORT_KEY_ALLOCATION_LENGTH);
/* Ensure memory buffer cleaned. */
- _ux_utility_memory_set(transfer_request -> ux_slave_transfer_request_data_pointer, 0, 64);
+ _ux_utility_memory_set(transfer_request -> ux_slave_transfer_request_data_pointer, 0, UX_SLAVE_CLASS_STORAGE_REPORT_KEY_ANSWER_LENGTH); /* Use case of memset is verified. */
/* Filter page code. This is necessary to isolate the CD-ROM mode sense response. */
switch (key_format)
@@ -127,7 +139,7 @@ ULONG key_format;
allocation_length = UX_SLAVE_CLASS_STORAGE_REPORT_KEY_ANSWER_LENGTH;
/* Send a data payload with the read_capacity response buffer. */
- _ux_device_stack_transfer_request(transfer_request, allocation_length, allocation_length);
+ _ux_device_stack_transfer_request(transfer_request, allocation_length, allocation_length); /* Use case of memset is verified. */
break;
@@ -139,13 +151,8 @@ ULONG key_format;
}
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
-
- /* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x00;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_request_sense.c b/common/usbx_device_classes/src/ux_device_class_storage_request_sense.c
index 8601187..6d7d4ef 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_request_sense.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_request_sense.c
@@ -30,12 +30,16 @@
#include "ux_device_stack.h"
+#if UX_SLAVE_CLASS_STORAGE_BUFFER_SIZE < UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_LENGTH
+#error UX_SLAVE_CLASS_STORAGE_BUFFER_SIZE too small, please check
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_request_sense PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -71,6 +75,11 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* verified memset and memcpy */
+/* cases, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_request_sense(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun, UX_SLAVE_ENDPOINT *endpoint_in,
@@ -79,7 +88,9 @@ UINT _ux_device_class_storage_request_sense(UX_SLAVE_CLASS_STORAGE *storage, UL
UINT status;
UX_SLAVE_TRANSFER *transfer_request;
-UCHAR sense_buffer[UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_LENGTH];
+UCHAR *sense_buffer;
+UCHAR key, code, qualifier;
+
UX_PARAMETER_NOT_USED(cbwcb);
UX_PARAMETER_NOT_USED(endpoint_out);
@@ -87,44 +98,47 @@ UCHAR sense_buffer[UX_SLAVE_CLASS_STORAGE_INQUIRY_RESPONSE_LEN
/* Obtain the pointer to the transfer request. */
transfer_request = &endpoint_in -> ux_slave_endpoint_transfer_request;
+ /* Obtain sense buffer. */
+ sense_buffer = transfer_request -> ux_slave_transfer_request_data_pointer;
+
/* Ensure it is cleaned. */
- _ux_utility_memory_set(sense_buffer, 0, UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_LENGTH);
+ _ux_utility_memory_set(sense_buffer, 0, UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_LENGTH); /* Use case of memset is verified. */
/* Initialize the response buffer with the error code. */
sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_ERROR_CODE] =
UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_ERROR_CODE_VALUE;
+ /* Extract sense key, code, qualifier. */
+ key = UX_DEVICE_CLASS_STORAGE_SENSE_KEY(storage -> ux_slave_class_storage_lun[lun].
+ ux_slave_class_storage_request_sense_status);
+ code = UX_DEVICE_CLASS_STORAGE_SENSE_CODE(storage -> ux_slave_class_storage_lun[lun].
+ ux_slave_class_storage_request_sense_status);
+ qualifier = UX_DEVICE_CLASS_STORAGE_SENSE_QUALIFIER(storage -> ux_slave_class_storage_lun[lun].
+ ux_slave_class_storage_request_sense_status);
+
/* Initialize the response buffer with the sense key. */
- sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_SENSE_KEY] =
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key;
+ sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_SENSE_KEY] = key;
/* Initialize the response buffer with the code. */
- sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_CODE] =
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code;
+ sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_CODE] = code;
/* Initialize the response buffer with the code qualifier. */
- sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_CODE_QUALIFIER] =
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier;
+ sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_CODE_QUALIFIER] = qualifier;
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_REQUEST_SENSE, storage, lun,
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key,
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
+ key, code, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
/* Initialize the response buffer with the additional length. */
sense_buffer[UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_ADD_LENGTH] = 10;
-
- /* Copy the request sense response into the transfer request memory. */
- _ux_utility_memory_copy(transfer_request -> ux_slave_transfer_request_data_pointer,
- sense_buffer, UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_LENGTH);
-
/* Send a data payload with the sense codes. */
_ux_device_stack_transfer_request(transfer_request, UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_LENGTH,
UX_SLAVE_CLASS_STORAGE_REQUEST_SENSE_RESPONSE_LENGTH);
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_start_stop.c b/common/usbx_device_classes/src/ux_device_class_storage_start_stop.c
index 2bd9f12..fbd7ae7 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_start_stop.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_start_stop.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_start_stop PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_start_stop(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -76,14 +79,16 @@ UINT _ux_device_class_storage_start_stop(UX_SLAVE_CLASS_STORAGE *storage, ULONG
UX_SLAVE_ENDPOINT *endpoint_out, UCHAR * cbwcb)
{
- UX_PARAMETER_NOT_USED(cbwcb);
+ UX_PARAMETER_NOT_USED(lun);
+ UX_PARAMETER_NOT_USED(endpoint_in);
UX_PARAMETER_NOT_USED(endpoint_out);
+ UX_PARAMETER_NOT_USED(cbwcb);
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_START_STOP, storage, lun, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
- /* We return a CSW with success. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* We set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
/* Return successful completion. */
return(UX_SUCCESS);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_synchronize_cache.c b/common/usbx_device_classes/src/ux_device_class_storage_synchronize_cache.c
index bff1623..5428a91 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_synchronize_cache.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_synchronize_cache.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_synchronize_cache PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -75,6 +75,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_synchronize_cache(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -92,15 +95,15 @@ UCHAR flags;
UX_PARAMETER_NOT_USED(endpoint_out);
UX_PARAMETER_NOT_USED(scsi_command);
+ /* By default status is passed. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
+
/* Is there not an implementation? */
if (storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_flush == UX_NULL)
{
/* This means the application is not using a cache. */
- /* Return a CSW with success. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
-
/* Return success. */
return(UX_SUCCESS);
}
@@ -119,9 +122,7 @@ UCHAR flags;
lun, storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_id, &media_status);
/* Update the request sense. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (UCHAR) (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = (UCHAR) ((media_status >> 8 ) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = (UCHAR) ((media_status >> 16 ) & 0xff);
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
/* If there is a problem, return a failed command. */
if (status != UX_SUCCESS)
@@ -131,7 +132,7 @@ UCHAR flags;
REQUEST_SENSE command. */
_ux_device_stack_endpoint_stall(endpoint_in);
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* We are done here. */
return(UX_ERROR);
@@ -145,13 +146,16 @@ UCHAR flags;
status = storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_flush(storage, lun, number_blocks, lba, &media_status);
/* Update the request sense. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (UCHAR) (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = (UCHAR) ((media_status >> 8 ) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = (UCHAR) ((media_status >> 16 ) & 0xff);
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
/* If the immediate bit is set, we are already done, no matter what local operation status is. */
if ((flags & UX_SLAVE_CLASS_STORAGE_SYNCHRONIZE_CACHE_FLAGS_IMMED) != 0)
+ {
+
+ /* CSW skipped since already sent in this function. */
+ UX_DEVICE_CLASS_STORAGE_CSW_SKIP(&storage -> ux_slave_class_storage_csw_status) = UX_TRUE;
return(status);
+ }
/* If there is a problem, return a failed command. */
if (status != UX_SUCCESS)
@@ -161,13 +165,11 @@ UCHAR flags;
REQUEST_SENSE command. */
_ux_device_stack_endpoint_stall(endpoint_in);
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* Return an error. */
return(UX_ERROR);
}
- else
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_test_ready.c b/common/usbx_device_classes/src/ux_device_class_storage_test_ready.c
index 8444133..295ade0 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_test_ready.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_test_ready.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_test_ready PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -72,6 +72,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_test_ready(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun, UX_SLAVE_ENDPOINT *endpoint_in,
@@ -81,8 +84,10 @@ UINT _ux_device_class_storage_test_ready(UX_SLAVE_CLASS_STORAGE *storage, ULONG
UINT status;
ULONG media_status;
- UX_PARAMETER_NOT_USED(cbwcb);
+ UX_PARAMETER_NOT_USED(lun);
+ UX_PARAMETER_NOT_USED(endpoint_in);
UX_PARAMETER_NOT_USED(endpoint_out);
+ UX_PARAMETER_NOT_USED(cbwcb);
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_TEST_READY, storage, lun, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
@@ -92,23 +97,12 @@ ULONG media_status;
storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_id, &media_status);
/* Set the sense/code/qualifier codes for the REQUEST_SENSE command. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = ((media_status >> 8) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = ((media_status >> 16) & 0xff);
-
- /* Check the status for error. */
- if (status != UX_SUCCESS)
- {
-
- /* We return a CSW with error. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
- }
- else
- {
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
- /* We return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
- }
+ /* Return CSW with success/error. */
+ storage -> ux_slave_class_storage_csw_status = (status == UX_SUCCESS) ?
+ UX_SLAVE_CLASS_STORAGE_CSW_PASSED : UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
+ status = UX_SUCCESS;
/* Return completion status. */
return(status);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_thread.c b/common/usbx_device_classes/src/ux_device_class_storage_thread.c
index 790fec3..3fa1d29 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_thread.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_thread.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_thread PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -80,6 +80,7 @@
/* _ux_utility_long_get Get 32-bit value */
/* _ux_utility_memory_allocate Allocate memory */
/* _ux_utility_semaphore_create Create semaphore */
+/* _ux_utility_delay_ms Sleep thread for several ms */
/* _ux_utility_thread_suspend Suspend thread */
/* */
/* CALLED BY */
@@ -91,6 +92,14 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* used sleep instead of */
+/* relinquish on error, */
+/* optimized command logic, */
+/* used UX prefix to refer to */
+/* TX symbols instead of using */
+/* them directly, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
VOID _ux_device_class_storage_thread(ULONG storage_class)
@@ -158,7 +167,7 @@ UCHAR *scsi_command;
/* Check state, they must be both RESET. */
if (endpoint_out -> ux_slave_endpoint_state == UX_ENDPOINT_RESET &&
- !storage -> ux_slave_class_storage_phase_error)
+ (UCHAR)storage -> ux_slave_class_storage_csw_status != UX_SLAVE_CLASS_STORAGE_CSW_PHASE_ERROR)
{
/* Send the request to the device controller. */
@@ -344,9 +353,9 @@ UCHAR *scsi_command;
_ux_device_stack_endpoint_stall(endpoint_in);
/* Initialize the request sense keys. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = UX_SLAVE_CLASS_STORAGE_SENSE_KEY_ILLEGAL_REQUEST;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = UX_SLAVE_CLASS_STORAGE_ASC_KEY_INVALID_COMMAND;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(UX_SLAVE_CLASS_STORAGE_SENSE_KEY_ILLEGAL_REQUEST,
+ UX_SLAVE_CLASS_STORAGE_ASC_KEY_INVALID_COMMAND,0);
/* This is the tricky part of the SCSI state machine. We must send the CSW BUT need to wait
for the endpoint_in to be reset by the host. */
@@ -357,15 +366,8 @@ UCHAR *scsi_command;
if (endpoint_in -> ux_slave_endpoint_state == UX_ENDPOINT_RESET)
{
- /* Now we return a CSW with failure. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
- /* Check error code. */
- if (status != UX_SUCCESS)
-
- /* Error trap. */
- _ux_system_error_handler(UX_SYSTEM_LEVEL_THREAD, UX_SYSTEM_CONTEXT_CLASS, status);
-
+ /* Now we set the CSW with failure. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
break;
}
@@ -376,27 +378,36 @@ UCHAR *scsi_command;
}
break;
}
+
+ /* Send CSW if not SYNC_CACHE. */
+ status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, 0 /* Don't care */);
+
+ /* Check error code. */
+ if (status != UX_SUCCESS)
+
+ /* Error trap. */
+ _ux_system_error_handler(UX_SYSTEM_LEVEL_THREAD, UX_SYSTEM_CONTEXT_CLASS, status);
}
else
/* Phase error! */
- storage -> ux_slave_class_storage_phase_error = TX_TRUE;
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PHASE_ERROR;
}
else
/* Phase error! */
- storage -> ux_slave_class_storage_phase_error = TX_TRUE;
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PHASE_ERROR;
}
else
/* Phase error! */
- storage -> ux_slave_class_storage_phase_error = TX_TRUE;
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PHASE_ERROR;
}
else
{
- if (storage -> ux_slave_class_storage_phase_error == TX_TRUE)
+ if ((UCHAR)storage -> ux_slave_class_storage_csw_status == UX_SLAVE_CLASS_STORAGE_CSW_PHASE_ERROR)
{
/* We should keep the endpoints stalled. */
@@ -405,7 +416,7 @@ UCHAR *scsi_command;
}
/* We must therefore wait a while. */
- _ux_utility_thread_relinquish();
+ _ux_utility_delay_ms(2);
}
}
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_uninitialize.c b/common/usbx_device_classes/src/ux_device_class_storage_uninitialize.c
index 112225a..1785008 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_uninitialize.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_uninitialize.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_uninitialize PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -66,6 +66,8 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_uninitialize(UX_SLAVE_CLASS_COMMAND *command)
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_verify.c b/common/usbx_device_classes/src/ux_device_class_storage_verify.c
index c915ec6..2069cbd 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_verify.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_verify.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_verify PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -69,6 +69,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_verify(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -76,14 +79,16 @@ UINT _ux_device_class_storage_verify(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun
UX_SLAVE_ENDPOINT *endpoint_out, UCHAR * cbwcb)
{
+ UX_PARAMETER_NOT_USED(lun);
UX_PARAMETER_NOT_USED(cbwcb);
+ UX_PARAMETER_NOT_USED(endpoint_in);
UX_PARAMETER_NOT_USED(endpoint_out);
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_STORAGE_VERIFY, storage, lun, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)
- /* We return a CSW with success. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* We set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
/* Return success! */
return(UX_SUCCESS);
diff --git a/common/usbx_device_classes/src/ux_device_class_storage_write.c b/common/usbx_device_classes/src/ux_device_class_storage_write.c
index dbf0b49..c42bf10 100644
--- a/common/usbx_device_classes/src/ux_device_class_storage_write.c
+++ b/common/usbx_device_classes/src/ux_device_class_storage_write.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_storage_write PORTABLE C */
-/* 6.0 */
+/* 6.1 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@@ -77,6 +77,9 @@
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
+/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
+/* optimized command logic, */
+/* resulting in version 6.1 */
/* */
/**************************************************************************/
UINT _ux_device_class_storage_write(UX_SLAVE_CLASS_STORAGE *storage, ULONG lun,
@@ -93,6 +96,8 @@ ULONG media_status;
ULONG total_length;
ULONG transfer_length;
+ UX_PARAMETER_NOT_USED(endpoint_in);
+
/* Get the LBA from the CBWCB. */
lba = _ux_utility_long_get_big_endian(cbwcb + UX_SLAVE_CLASS_STORAGE_WRITE_LBA);
@@ -119,9 +124,10 @@ ULONG transfer_length;
lun, storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_media_id, &media_status);
/* Update the request sense. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (UCHAR) (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = (UCHAR) ((media_status >> 8 ) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = (UCHAR) ((media_status >> 16 ) & 0xff);
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
+
+ /* Default CSW to failed. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_FAILED;
/* If there is a problem, return a failed command. */
if (status != UX_SUCCESS)
@@ -131,9 +137,6 @@ ULONG transfer_length;
REQUEST_SENSE command. */
_ux_device_stack_endpoint_stall(endpoint_out);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* We are done here. */
return(UX_ERROR);
}
@@ -143,17 +146,14 @@ ULONG transfer_length;
{
/* Update the request sense. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = UX_SLAVE_CLASS_STORAGE_SENSE_KEY_DATA_PROTECT;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = UX_SLAVE_CLASS_STORAGE_REQUEST_CODE_MEDIA_PROTECTED;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(UX_SLAVE_CLASS_STORAGE_SENSE_KEY_DATA_PROTECT,
+ UX_SLAVE_CLASS_STORAGE_REQUEST_CODE_MEDIA_PROTECTED,0);
/* We have a problem, cannot write to RO drive. Return a bad completion and wait for the
REQUEST_SENSE command. */
_ux_device_stack_endpoint_stall(endpoint_out);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* We are done here. */
return(UX_ERROR);
}
@@ -186,13 +186,9 @@ ULONG transfer_length;
_ux_device_stack_endpoint_stall(endpoint_out);
/* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = 0x02;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = 0x54;
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = 0x00;
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status =
+ UX_DEVICE_CLASS_STORAGE_SENSE_STATUS(0x02,0x54,0x00);
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* Return an error. */
return(UX_ERROR);
}
@@ -212,13 +208,8 @@ ULONG transfer_length;
_ux_device_stack_endpoint_stall(endpoint_out);
/* And update the REQUEST_SENSE codes. */
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_key = (UCHAR) (media_status & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code = (UCHAR) ((media_status >> 8 ) & 0xff);
- storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_code_qualifier = (UCHAR) ((media_status >> 16 ) & 0xff);
+ storage -> ux_slave_class_storage_lun[lun].ux_slave_class_storage_request_sense_status = media_status;
- /* Now we return a CSW with failure. */
- _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_FAILED);
-
/* Return an error. */
return(UX_ERROR);
}
@@ -230,8 +221,8 @@ ULONG transfer_length;
total_length -= transfer_length;
}
- /* Now we return a CSW with success. */
- status = _ux_device_class_storage_csw_send(storage, lun, endpoint_in, UX_SLAVE_CLASS_STORAGE_CSW_PASSED);
+ /* Now we set the CSW with success. */
+ storage -> ux_slave_class_storage_csw_status = UX_SLAVE_CLASS_STORAGE_CSW_PASSED;
/* Return completion status. */
return(status);