From 0f32d34ad7c1476af02d7e04a53efb3dbe4d3ef1 Mon Sep 17 00:00:00 2001 From: Christer Ekholm Date: Wed, 16 Apr 2025 20:59:31 +0800 Subject: [PATCH] _ux_device_class_pima_object_references_set and _ux_device_class_pima_object_info_send will return failure even if success because UX_DEVICE_CLASS_PIMA_RC_OK was handeled as error and reported to app --- .../src/ux_device_class_pima_object_info_send.c | 14 +++++++++++--- .../ux_device_class_pima_object_references_set.c | 14 ++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) 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 4d64c6ae..557c386e 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 @@ -223,10 +223,18 @@ ULONG object_handle; /* Send the object to the application. */ status = pima -> ux_device_class_pima_object_info_send(pima, object, storage_id, parent_object_handle, &object_handle); - /* Now we return a response with success. */ - status = (status == UX_SUCCESS) ? UX_DEVICE_CLASS_PIMA_RC_OK : status; - _ux_device_class_pima_response_send(pima, status, 3, pima -> ux_device_class_pima_storage_id, + if (status != UX_SUCCESS) + { + /* Now we return a response with error. */ + _ux_device_class_pima_response_send(pima, status, 3, pima -> ux_device_class_pima_storage_id, object -> ux_device_class_pima_object_parent_object, object_handle); + } + else + { + /* Now we return a response with success. */ + _ux_device_class_pima_response_send(pima, UX_DEVICE_CLASS_PIMA_RC_OK, 3, pima -> ux_device_class_pima_storage_id, + object -> ux_device_class_pima_object_parent_object, object_handle); + } /* Store the object handle. It will be used for the OBJECT_SEND command. */ pima -> ux_device_class_pima_current_object_handle = object_handle; 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 d9c704da..5197f06a 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 @@ -128,10 +128,16 @@ ULONG object_references_length; /* Send the object references to the application. */ status = pima -> ux_device_class_pima_object_references_set(pima, object_handle, object_references, object_references_length); - - /* Now we return a response with success. */ - status = (status == UX_SUCCESS) ? UX_DEVICE_CLASS_PIMA_RC_OK : status; - _ux_device_class_pima_response_send(pima, status, 0, 0, 0, 0); + + /* Check error code from application. */ + if (status == UX_SUCCESS) + + /* Now we return a response with success. */ + _ux_device_class_pima_response_send(pima, UX_DEVICE_CLASS_PIMA_RC_OK, 0, 0, 0, 0); + else + + /* We return an error. The code is passed by the application. */ + _ux_device_class_pima_response_send(pima, status, 0, 0, 0, 0); } else