Update on 19 Apr 2023. Expand to see details.

f6854286 USBX host video error checking support.
909e7523 Onboard to Central Feed Services
863cc0c9 Add optional error check for host storage (no FileX).
0e88a565 Added new test case for HID descriptor get.
03944f4e Add error checking to device/host stack and system.
5bec9ee8 Device PIMA error check improvement. Fixing pictbridge issues (client callbacks initialize, host device info buffer length increase).
f8c89ae9 Added host printer error checking.
This commit is contained in:
Chaoqiong Xiao 2023-04-19 00:56:30 +00:00
parent 5f758e08fe
commit 3af3626c9b
87 changed files with 5838 additions and 1909 deletions

View File

@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */
/* */
/* ux_api.h PORTABLE C */
/* 6.2.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -133,6 +133,9 @@
/* max class driver configure, */
/* added a new error code, */
/* resulting in version 6.2.1 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -186,6 +189,24 @@ extern "C" {
#endif
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_SYSTEM_ENABLE_ERROR_CHECKING)
#define UX_SYSTEM_ENABLE_ERROR_CHECKING
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_DEVICE_STACK_ENABLE_ERROR_CHECKING)
#define UX_DEVICE_STACK_ENABLE_ERROR_CHECKING
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_HOST_STACK_ENABLE_ERROR_CHECKING)
#define UX_HOST_STACK_ENABLE_ERROR_CHECKING
#endif
/* Define the maximum length for class names (exclude string null-terminator). */
#define UX_MAX_CLASS_NAME_LENGTH 63
@ -2658,7 +2679,12 @@ typedef struct UX_HOST_CLASS_DPUMP_STRUCT
/* Define USBX Services. */
#if defined(UX_SYSTEM_ENABLE_ERROR_CHECKING)
#define ux_system_initialize _ux_system_initialize
#else
#define ux_system_initialize _uxe_system_initialize
#endif
#define ux_system_uninitialize _ux_system_uninitialize
#define ux_system_tasks_run _ux_system_tasks_run
@ -2666,31 +2692,54 @@ typedef struct UX_HOST_CLASS_DPUMP_STRUCT
#define ux_host_class_storage_entry _ux_host_class_storage_entry
#if defined(UX_HOST_STACK_ENABLE_ERROR_CHECKING)
#define ux_host_stack_class_get _uxe_host_stack_class_get
#define ux_host_stack_class_instance_get _uxe_host_stack_class_instance_get
#define ux_host_stack_class_register _uxe_host_stack_class_register
#define ux_host_stack_device_configuration_activate _uxe_host_stack_device_configuration_activate
#define ux_host_stack_device_configuration_deactivate _uxe_host_stack_device_configuration_deactivate
#define ux_host_stack_device_configuration_get _uxe_host_stack_device_configuration_get
#define ux_host_stack_device_get _uxe_host_stack_device_get
#define ux_host_stack_device_string_get _uxe_host_stack_device_string_get
#define ux_host_stack_endpoint_transfer_abort _uxe_host_stack_endpoint_transfer_abort
#define ux_host_stack_hcd_register _uxe_host_stack_hcd_register
#define ux_host_stack_hcd_unregister _uxe_host_stack_hcd_unregister
#define ux_host_stack_interface_endpoint_get _uxe_host_stack_interface_endpoint_get
#define ux_host_stack_interface_setting_select _uxe_host_stack_interface_setting_select
#define ux_host_stack_transfer_request _uxe_host_stack_transfer_request
#define ux_host_stack_transfer_request_abort _uxe_host_stack_transfer_request_abort
#else
#define ux_host_stack_class_get _ux_host_stack_class_get
#define ux_host_stack_class_instance_create _ux_host_stack_class_instance_create
#define ux_host_stack_class_instance_destroy _ux_host_stack_class_instance_destroy
#define ux_host_stack_class_instance_get _ux_host_stack_class_instance_get
#define ux_host_stack_class_register _ux_host_stack_class_register
#define ux_host_stack_class_unregister _ux_host_stack_class_unregister
#define ux_host_stack_configuration_interface_get _ux_host_stack_configuration_interface_get
#define ux_host_stack_device_configuration_activate _ux_host_stack_device_configuration_activate
#define ux_host_stack_device_configuration_deactivate _ux_host_stack_device_configuration_deactivate
#define ux_host_stack_device_configuration_get _ux_host_stack_device_configuration_get
#define ux_host_stack_device_configuration_select _ux_host_stack_device_configuration_select
#define ux_host_stack_device_get _ux_host_stack_device_get
#define ux_host_stack_device_string_get _ux_host_stack_device_string_get
#define ux_host_stack_endpoint_transfer_abort _ux_host_stack_endpoint_transfer_abort
#define ux_host_stack_hcd_register _ux_host_stack_hcd_register
#define ux_host_stack_hcd_unregister _ux_host_stack_hcd_unregister
#define ux_host_stack_initialize _ux_host_stack_initialize
#define ux_host_stack_uninitialize _ux_host_stack_uninitialize
#define ux_host_stack_interface_endpoint_get _ux_host_stack_interface_endpoint_get
#define ux_host_stack_interface_setting_select _ux_host_stack_interface_setting_select
#define ux_host_stack_transfer_request _ux_host_stack_transfer_request
#define ux_host_stack_transfer_request_abort _ux_host_stack_transfer_request_abort
#endif
#define ux_host_stack_class_instance_create _ux_host_stack_class_instance_create
#define ux_host_stack_class_instance_destroy _ux_host_stack_class_instance_destroy
#define ux_host_stack_class_unregister _ux_host_stack_class_unregister
#define ux_host_stack_configuration_interface_get _ux_host_stack_configuration_interface_get
#define ux_host_stack_device_configuration_reset _ux_host_stack_device_configuration_reset
#define ux_host_stack_device_configuration_select _ux_host_stack_device_configuration_select
#define ux_host_stack_initialize _ux_host_stack_initialize
#define ux_host_stack_uninitialize _ux_host_stack_uninitialize
#define ux_host_stack_hnp_polling_thread_entry _ux_host_stack_hnp_polling_thread_entry
#define ux_host_stack_role_swap _ux_host_stack_role_swap
#define ux_host_stack_device_configuration_reset _ux_host_stack_device_configuration_reset
#define ux_host_stack_tasks_run _ux_host_stack_tasks_run
#define ux_host_stack_transfer_run _ux_host_stack_transfer_run
@ -2699,10 +2748,23 @@ typedef struct UX_HOST_CLASS_DPUMP_STRUCT
#define ux_utility_pci_read _ux_utility_pci_read
#define ux_utility_pci_write _ux_utility_pci_write
#define ux_device_stack_alternate_setting_get _ux_device_stack_alternate_setting_get
#define ux_device_stack_alternate_setting_set _ux_device_stack_alternate_setting_set
#if defined(UX_DEVICE_STACK_ENABLE_ERROR_CHECKING)
#define ux_device_stack_class_register _uxe_device_stack_class_register
#define ux_device_stack_class_unregister _uxe_device_stack_class_unregister
#define ux_device_stack_initialize _uxe_device_stack_initialize
#else
#define ux_device_stack_class_register _ux_device_stack_class_register
#define ux_device_stack_class_unregister _ux_device_stack_class_unregister
#define ux_device_stack_initialize _ux_device_stack_initialize
#endif
#define ux_device_stack_uninitialize _ux_device_stack_uninitialize
#define ux_device_stack_alternate_setting_get _ux_device_stack_alternate_setting_get
#define ux_device_stack_alternate_setting_set _ux_device_stack_alternate_setting_set
#define ux_device_stack_configuration_get _ux_device_stack_configuration_get
#define ux_device_stack_configuration_set _ux_device_stack_configuration_set
#define ux_device_stack_descriptor_send _ux_device_stack_descriptor_send
@ -2710,8 +2772,6 @@ typedef struct UX_HOST_CLASS_DPUMP_STRUCT
#define ux_device_stack_disconnect _ux_device_stack_disconnect
#define ux_device_stack_endpoint_stall _ux_device_stack_endpoint_stall
#define ux_device_stack_host_wakeup _ux_device_stack_host_wakeup
#define ux_device_stack_initialize _ux_device_stack_initialize
#define ux_device_stack_uninitialize _ux_device_stack_uninitialize
#define ux_device_stack_interface_delete _ux_device_stack_interface_delete
#define ux_device_stack_interface_get _ux_device_stack_interface_get
#define ux_device_stack_interface_set _ux_device_stack_interface_set
@ -2740,6 +2800,10 @@ UINT ux_system_initialize(VOID *non_cached_memory_pool_start, ULONG non_cache
UINT ux_system_uninitialize(VOID);
UINT ux_system_tasks_run(VOID);
UINT uxe_system_initialize(VOID *non_cached_memory_pool_start, ULONG non_cached_memory_size,
VOID *cached_memory_pool_start, ULONG cached_memory_size);
/* Define USBX Host API prototypes. */
UINT ux_hcd_ehci_initialize(UX_HCD *hcd);

View File

@ -25,7 +25,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_device_stack.h PORTABLE C */
/* 6.1.12 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -53,6 +53,9 @@
/* fixed parameter/variable */
/* names conflict C++ keyword, */
/* resulting in version 6.1.12 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -109,6 +112,21 @@ UINT _ux_device_stack_uninitialize(VOID);
UINT _ux_device_stack_tasks_run(VOID);
UINT _ux_device_stack_transfer_run(UX_SLAVE_TRANSFER *transfer_request, ULONG slave_length, ULONG host_length);
UINT _uxe_device_stack_class_register(UCHAR *class_name,
UINT (*class_entry_function)(struct UX_SLAVE_CLASS_COMMAND_STRUCT *),
ULONG configuration_number,
ULONG interface_number,
VOID *parameter);
UINT _uxe_device_stack_class_unregister(UCHAR *class_name,
UINT (*class_entry_function)(struct UX_SLAVE_CLASS_COMMAND_STRUCT *));
UINT _uxe_device_stack_initialize(UCHAR * device_framework_high_speed, ULONG device_framework_length_high_speed,
UCHAR * device_framework_full_speed, ULONG device_framework_length_full_speed,
UCHAR * string_framework, ULONG string_framework_length,
UCHAR * language_id_framework, ULONG language_id_framework_length,
UINT (*ux_system_slave_change_function)(ULONG));
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */
#ifdef __cplusplus

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_host_stack.h PORTABLE C */
/* 6.1.12 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -65,6 +65,9 @@
/* names conflict C++ keyword, */
/* added standalone HUB, */
/* resulting in version 6.1.12 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -82,6 +85,13 @@ extern "C" {
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_HOST_STACK_ENABLE_ERROR_CHECKING)
#define UX_HOST_STACK_ENABLE_ERROR_CHECKING
#endif
/* Define Host Stack enumeration state machine states. */
#define UX_HOST_STACK_ENUM_PORT_ENABLE (UX_STATE_STEP + 0)
@ -194,6 +204,31 @@ VOID _ux_host_stack_hnp_polling_thread_entry(ULONG id);
UINT _ux_host_stack_tasks_run(VOID);
UINT _ux_host_stack_transfer_run(UX_TRANSFER *transfer_request);
UINT _uxe_host_stack_class_get(UCHAR *class_name, UX_HOST_CLASS **ux_class);
UINT _uxe_host_stack_class_instance_get(UX_HOST_CLASS *class, UINT class_index, VOID **class_instance);
UINT _uxe_host_stack_class_register(UCHAR *class_name,
UINT (*class_entry_function)(struct UX_HOST_CLASS_COMMAND_STRUCT *));
UINT _uxe_host_stack_configuration_interface_get(UX_CONFIGURATION *configuration,
UINT interface_index, UINT alternate_setting_index,
UX_INTERFACE **ux_interface);
UINT _uxe_host_stack_device_configuration_activate(UX_CONFIGURATION *configuration);
UINT _uxe_host_stack_device_configuration_deactivate(UX_DEVICE *device);
UINT _uxe_host_stack_device_configuration_get(UX_DEVICE *device, UINT configuration_index,
UX_CONFIGURATION **configuration);
UINT _uxe_host_stack_device_get(ULONG device_index, UX_DEVICE **device);
UINT _uxe_host_stack_device_string_get(UX_DEVICE *device, UCHAR *descriptor_buffer, ULONG length, ULONG language_id, ULONG string_index);
UINT _uxe_host_stack_endpoint_transfer_abort(UX_ENDPOINT *endpoint);
UINT _uxe_host_stack_hcd_register(UCHAR *hcd_name,
UINT (*hcd_init_function)(struct UX_HCD_STRUCT *), ULONG hcd_param1, ULONG hcd_param2);
UINT _uxe_host_stack_hcd_unregister(UCHAR *hcd_name, ULONG hcd_param1, ULONG hcd_param2);
UINT _uxe_host_stack_interface_endpoint_get(UX_INTERFACE *ux_interface, UINT endpoint_index, UX_ENDPOINT **endpoint);
UINT _uxe_host_stack_interface_setting_select(UX_INTERFACE *ux_interface);
UINT _uxe_host_stack_transfer_request(UX_TRANSFER *transfer_request);
UINT _uxe_host_stack_transfer_request_abort(UX_TRANSFER *transfer_request);
UINT _uxe_host_stack_transfer_run(UX_TRANSFER *transfer_request);
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */
#ifdef __cplusplus

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_system.h PORTABLE C */
/* 6.1.11 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -53,6 +53,9 @@
/* 04-25-2022 Chaoqiong Xiao Modified comment(s), */
/* added device CCID name, */
/* resulting in version 6.1.11 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -70,6 +73,9 @@ UINT _ux_system_initialize(VOID *regular_memory_pool_start, ULONG regular_memor
VOID *cache_safe_memory_pool_start, ULONG cache_safe_memory_size);
UINT _ux_system_uninitialize(VOID);
UINT _ux_system_tasks_run(VOID);
UINT _uxe_system_initialize(VOID *regular_memory_pool_start, ULONG regular_memory_size,
VOID *cache_safe_memory_pool_start, ULONG cache_safe_memory_size);
#endif
/* Define System component external data references. */

View File

@ -166,3 +166,61 @@ ULONG class_index;
return(UX_MEMORY_INSUFFICIENT);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_device_stack_class_register PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in device stack class register function */
/* call. */
/* */
/* INPUT */
/* */
/* class_name Name of class */
/* class_function_entry Class entry function */
/* configuration_number Configuration # for this class*/
/* interface_number Interface # for this class */
/* parameter Parameter specific for class */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_device_stack_class_register Class register */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_device_stack_class_register(UCHAR *class_name,
UINT (*class_entry_function)(struct UX_SLAVE_CLASS_COMMAND_STRUCT *),
ULONG configuration_number,
ULONG interface_number,
VOID *parameter)
{
/* Sanity checks. */
if ((class_name == UX_NULL) || (class_entry_function == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke class register function. */
return(_ux_device_stack_class_register(class_name, class_entry_function,
configuration_number, interface_number, parameter));
}

View File

@ -150,3 +150,54 @@ ULONG class_index;
return(UX_NO_CLASS_MATCH);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_device_stack_class_unregister PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in device stack class unregister */
/* function call. */
/* */
/* INPUT */
/* */
/* class_name Name of class */
/* class_function_entry Class entry function */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_device_stack_class_unregister Class unregister */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_device_stack_class_unregister(UCHAR *class_name,
UINT (*class_entry_function)(struct UX_SLAVE_CLASS_COMMAND_STRUCT *))
{
/* Sanity checks. */
if ((class_name == UX_NULL) || (class_entry_function == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke unregister function. */
return(_ux_device_stack_class_unregister(class_name, class_entry_function));
}

View File

@ -32,7 +32,8 @@
#if (UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH < UX_DEVICE_DESCRIPTOR_LENGTH) || \
(UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH < UX_DEVICE_QUALIFIER_DESCRIPTOR_LENGTH) || \
(UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH < UX_OTG_DESCRIPTOR_LENGTH)
#error UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH too small, please check
/* #error UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH too small, please check */
/* Build option checked runtime by UX_ASSERT */
#endif
/**************************************************************************/
@ -40,7 +41,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_stack_descriptor_send PORTABLE C */
/* 6.1.11 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -88,6 +89,9 @@
/* 04-25-2022 Chaoqiong Xiao Modified comment(s), */
/* internal clean up, */
/* resulting in version 6.1.11 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* moved compile option check, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_device_stack_descriptor_send(ULONG descriptor_type, ULONG request_index, ULONG host_length)
@ -115,6 +119,12 @@ UCHAR *string_framework;
ULONG string_framework_length;
ULONG string_length;
/* Build option check. */
UX_ASSERT((UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH >= UX_DEVICE_DESCRIPTOR_LENGTH) &&
(UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH >= UX_DEVICE_QUALIFIER_DESCRIPTOR_LENGTH) &&
(UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH >= UX_OTG_DESCRIPTOR_LENGTH));
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_STACK_DESCRIPTOR_SEND, descriptor_type, request_index, 0, 0, UX_TRACE_DEVICE_STACK_EVENTS, 0, 0)

View File

@ -458,3 +458,64 @@ UCHAR *memory;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_device_stack_initialize PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in device stack initialization */
/* function call. */
/* */
/* INPUT */
/* */
/* class_name Name of class */
/* class_function_entry Class entry function */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_device_stack_initialize Device Stack Initialize */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_device_stack_initialize(UCHAR * device_framework_high_speed, ULONG device_framework_length_high_speed,
UCHAR * device_framework_full_speed, ULONG device_framework_length_full_speed,
UCHAR * string_framework, ULONG string_framework_length,
UCHAR * language_id_framework, ULONG language_id_framework_length,
UINT (*ux_system_slave_change_function)(ULONG))
{
/* Sanity checks. */
if (((device_framework_high_speed == UX_NULL) && (device_framework_length_high_speed != 0)) ||
(device_framework_full_speed == UX_NULL) || (device_framework_length_full_speed == 0) ||
((string_framework == UX_NULL) && (string_framework_length != 0)) ||
(language_id_framework == UX_NULL) || (language_id_framework_length == 0))
return(UX_INVALID_PARAMETER);
/* Invoke stack initialize function. */
return(_ux_device_stack_initialize(device_framework_high_speed, device_framework_length_high_speed,
device_framework_full_speed, device_framework_length_full_speed,
string_framework, string_framework_length,
language_id_framework, language_id_framework_length,
ux_system_slave_change_function));
}

View File

@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_stack_class_get PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -52,7 +52,7 @@
/* INPUT */
/* */
/* class_name Name of class */
/* class Class pointer */
/* host_class Class pointer */
/* */
/* OUTPUT */
/* */
@ -78,6 +78,8 @@
/* optimized based on compile */
/* definitions, */
/* resulting in version 6.1 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_stack_class_get(UCHAR *class_name, UX_HOST_CLASS **host_class)
@ -137,3 +139,52 @@ ULONG class_index;
return(UX_HOST_CLASS_UNKNOWN);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_class_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack class get function call. */
/* */
/* INPUT */
/* */
/* class_name Name of class */
/* host_class Class pointer */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_class_get Host stack class get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_class_get(UCHAR *class_name, UX_HOST_CLASS **host_class)
{
/* Sanity checks. */
if ((class_name == UX_NULL) || (host_class == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke class get function. */
return(_ux_host_stack_class_get(class_name, host_class));
}

View File

@ -113,3 +113,54 @@ VOID **current_class_instance;
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_class_instance_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack class get function call. */
/* */
/* INPUT */
/* */
/* class Pointer to class */
/* class_index Index of class */
/* class_instance Destination of class instance */
/* pointer */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_class_instance_get Host stack class instance get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_class_instance_get(UX_HOST_CLASS *host_class, UINT class_index, VOID **class_instance)
{
/* Sanity check. */
if ((host_class == UX_NULL) || (class_instance == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke class instance get function. */
return(_ux_host_stack_class_instance_get(host_class, class_index, class_instance));
}

View File

@ -173,3 +173,55 @@ ULONG class_index;
/* No more entries in the class table. */
return(UX_MEMORY_ARRAY_FULL);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_class_register PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack class register function */
/* call. */
/* */
/* INPUT */
/* */
/* class_name Name of class */
/* class_entry_function Entry function of the class */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_class_instance_get Host stack class instance get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_class_register(UCHAR *class_name,
UINT (*class_entry_function)(struct UX_HOST_CLASS_COMMAND_STRUCT *))
{
/* Sanity checks. */
if ((class_name == UX_NULL) || (class_entry_function == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke class register function. */
return(_ux_host_stack_class_register(class_name, class_entry_function));
}

View File

@ -187,3 +187,59 @@ UX_INTERFACE *current_interface;
return(UX_INTERFACE_HANDLE_UNKNOWN);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_configuration_interface_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack interface get function */
/* call. */
/* */
/* INPUT */
/* */
/* configuration Pointer to configuration */
/* interface_index Index of interface */
/* alternate_setting_index Index of alternate setting */
/* interface Destination of interface */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_configuration_interface_get */
/* Host stack interface get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_configuration_interface_get(UX_CONFIGURATION *configuration,
UINT interface_index, UINT alternate_setting_index,
UX_INTERFACE **ux_interface)
{
/* Sanity checks. */
if ((configuration == UX_NULL) || (ux_interface == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke interface get function. */
return(_ux_host_stack_configuration_interface_get(configuration,
interface_index, alternate_setting_index, ux_interface));
}

View File

@ -184,3 +184,54 @@ UINT status;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_device_configuration_activate PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack configuration activate */
/* function call. */
/* */
/* INPUT */
/* */
/* configuration Pointer to configuration */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_device_configuration_activate */
/* Host stack config activate */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_device_configuration_activate(UX_CONFIGURATION *configuration)
{
/* Sanity check. */
if (configuration == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke configuration activate function. */
return(_ux_host_stack_device_configuration_activate(configuration));
}

View File

@ -193,3 +193,54 @@ UINT status;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_device_configuration_deactivate PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack configuration deactivate */
/* function call. */
/* */
/* INPUT */
/* */
/* device Pointer to device */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_device_configuration_deactivate */
/* Host stack config deactivate */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_device_configuration_deactivate(UX_DEVICE *device)
{
/* Sanity check. */
if (device == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke configuration deactivate function. */
return(_ux_host_stack_device_configuration_deactivate(device));
}

View File

@ -134,3 +134,56 @@ UX_CONFIGURATION *current_configuration;
return(UX_CONFIGURATION_HANDLE_UNKNOWN);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_device_configuration_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack config get function call. */
/* */
/* INPUT */
/* */
/* device Pointer to device */
/* configuration_index Index of configuration */
/* configuration Pointer to configuration */
/* destination */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_device_configuration_get */
/* Host configuration get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_device_configuration_get(UX_DEVICE *device, UINT configuration_index,
UX_CONFIGURATION **configuration)
{
/* Sanity checks. */
if ((device == UX_NULL) || (configuration == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke configuration get function. */
return(_ux_host_stack_device_configuration_get(device, configuration_index, configuration));
}

View File

@ -148,3 +148,53 @@ ULONG current_device_index;
/* Return error. */
return(UX_DEVICE_HANDLE_UNKNOWN);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_device_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack device get function call. */
/* */
/* INPUT */
/* */
/* device_index Index of device */
/* device Destination for device pointer*/
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_device_get Host stack device get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_device_get(ULONG device_index, UX_DEVICE **device)
{
/* Sanity check. */
if (device == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke device get function. */
return(_ux_host_stack_device_get(device_index, device));
}

View File

@ -147,3 +147,59 @@ UINT status;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_device_string_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack device get function call. */
/* */
/* INPUT */
/* */
/* device Pointer to device instance */
/* descriptor_buffer Pointer to a buffer to fill */
/* LANGID or STRING descriptor */
/* length Length of buffer */
/* language_id 0 to obtain LANGID descriptor */
/* valid language ID to obtain */
/* string descriptor */
/* string_index Index of the string */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_device_string_get String descriptor get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_device_string_get(UX_DEVICE *device, UCHAR *descriptor_buffer, ULONG length, ULONG language_id, ULONG string_index)
{
/* Sanity check. */
if ((device == UX_NULL) || (descriptor_buffer == UX_NULL) || (length == 0))
return(UX_INVALID_PARAMETER);
/* Invoke string descriptor get function. */
return(_ux_host_stack_device_string_get(device, descriptor_buffer, length, language_id, string_index));
}

View File

@ -92,3 +92,53 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_endpoint_transfer_abort PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack endpoint transfer abort */
/* function call. */
/* */
/* INPUT */
/* */
/* endpoint Endpoint to abort transfer */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_endpoint_transfer_abort */
/* Endpoint transfer abort */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_endpoint_transfer_abort(UX_ENDPOINT *endpoint)
{
/* Sanity check. */
if (endpoint == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke transfer abort function. */
return(_ux_host_stack_endpoint_transfer_abort(endpoint));
}

View File

@ -157,3 +157,53 @@ ULONG hcd_index;
return(UX_MEMORY_INSUFFICIENT);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_hcd_register PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack HCD register function */
/* call. */
/* */
/* INPUT */
/* */
/* endpoint Endpoint to abort transfer */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_hcd_register HCD register */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_hcd_register(UCHAR *hcd_name,
UINT (*hcd_init_function)(struct UX_HCD_STRUCT *), ULONG hcd_param1, ULONG hcd_param2)
{
/* Sanity check. */
if ((hcd_name == UX_NULL) || (hcd_init_function == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke HCD register function. */
return(_ux_host_stack_hcd_register(hcd_name, hcd_init_function, hcd_param1, hcd_param2));
}

View File

@ -195,3 +195,56 @@ UINT hcd_name_length = 0;
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_hcd_unregister PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack HCD unregister function */
/* call. */
/* */
/* INPUT */
/* */
/* hcd_name Name of HCD to unregister */
/* hcd_param1 Parameter 1 of HCD */
/* hcd_param2 Parameter 2 of HCD */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_hcd_unregister HCD unregister */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_hcd_unregister(UCHAR *hcd_name,
ULONG hcd_param1, ULONG hcd_param2)
{
/* Sanity check. */
if (hcd_name == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke HCD unregister function. */
return(_ux_host_stack_hcd_unregister(hcd_name, hcd_param1, hcd_param2));
}

View File

@ -136,3 +136,54 @@ UX_ENDPOINT *current_endpoint;
return(UX_ENDPOINT_HANDLE_UNKNOWN);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_interface_endpoint_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack endpoint get function */
/* call. */
/* */
/* INPUT */
/* */
/* interface_ptr Pointer to interface */
/* endpoint_index Index of endpoint to get */
/* endpoint Destination for endpoint */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_interface_endpoint_get Endpoint get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_interface_endpoint_get(UX_INTERFACE *interface_ptr, UINT endpoint_index, UX_ENDPOINT **endpoint)
{
/* Sanity checks. */
if ((interface_ptr == UX_NULL) || (endpoint == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke endpoint get function. */
return(_ux_host_stack_interface_endpoint_get(interface_ptr, endpoint_index, endpoint));
}

View File

@ -215,3 +215,53 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_interface_setting_select PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack interface select function */
/* call. */
/* */
/* INPUT */
/* */
/* interface_ptr Pointer to interface */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_interface_setting_select */
/* Interface setting select */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_interface_setting_select(UX_INTERFACE *interface_ptr)
{
/* Sanity check. */
if (interface_ptr == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke interface setting select function. */
return(_ux_host_stack_interface_setting_select(interface_ptr));
}

View File

@ -217,3 +217,58 @@ UINT status;
return(status);
#endif
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_transfer_request PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack transfer function call. */
/* */
/* INPUT */
/* */
/* transfer_request Pointer to transfer */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_transfer_request Issue a transfer request */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_transfer_request(UX_TRANSFER *transfer_request)
{
/* Sanity checks. */
if (transfer_request == UX_NULL)
return(UX_INVALID_PARAMETER);
if (transfer_request -> ux_transfer_request_endpoint == UX_NULL)
return(UX_ENDPOINT_HANDLE_UNKNOWN);
if (transfer_request -> ux_transfer_request_endpoint -> ux_endpoint_device == UX_NULL)
return(UX_DEVICE_HANDLE_UNKNOWN);
if (UX_DEVICE_HCD_GET(transfer_request -> ux_transfer_request_endpoint -> ux_endpoint_device) == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke transfer request function. */
return(_ux_host_stack_transfer_request(transfer_request));
}

View File

@ -147,3 +147,58 @@ ULONG completion_code;
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_transfer_request_abort PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack transfer abort function */
/* call. */
/* */
/* INPUT */
/* */
/* transfer_request Pointer to transfer */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_transfer_request_abort Transfer abort */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_transfer_request_abort(UX_TRANSFER *transfer_request)
{
/* Sanity checks. */
if (transfer_request == UX_NULL)
return(UX_INVALID_PARAMETER);
if (transfer_request -> ux_transfer_request_endpoint == UX_NULL)
return(UX_ENDPOINT_HANDLE_UNKNOWN);
if (transfer_request -> ux_transfer_request_endpoint -> ux_endpoint_device == UX_NULL)
return(UX_DEVICE_HANDLE_UNKNOWN);
if (UX_DEVICE_HCD_GET(transfer_request -> ux_transfer_request_endpoint -> ux_endpoint_device) == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke transfer abort function. */
return(_ux_host_stack_transfer_request_abort(transfer_request));
}

View File

@ -293,4 +293,59 @@ UX_TRANSFER *previous;
ux_endpoint_device -> ux_device_flags &= ~UX_DEVICE_FLAG_LOCK;
}
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_stack_transfer_run PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in host stack transfer function call. */
/* */
/* INPUT */
/* */
/* transfer_request Pointer to transfer */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_host_stack_transfer_run Run a transfer request */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_stack_transfer_run(UX_TRANSFER *transfer_request)
{
/* Sanity checks. */
if (transfer_request == UX_NULL)
return(UX_INVALID_PARAMETER);
if (transfer_request -> ux_transfer_request_endpoint == UX_NULL)
return(UX_ENDPOINT_HANDLE_UNKNOWN);
if (transfer_request -> ux_transfer_request_endpoint -> ux_endpoint_device == UX_NULL)
return(UX_DEVICE_HANDLE_UNKNOWN);
if (UX_DEVICE_HCD_GET(transfer_request -> ux_transfer_request_endpoint -> ux_endpoint_device) == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke transfer request function. */
return(_ux_host_stack_transfer_run(transfer_request));
}
#endif

View File

@ -268,3 +268,56 @@ UINT status;
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_system_initialize PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in system initialization function call. */
/* */
/* INPUT */
/* */
/* regular_memory_pool_start Start of non cached memory pool */
/* regular_memory_size Size of non cached memory pool */
/* cache_safe_memory_pool_start Start of cached memory pool */
/* cache_safe_memory_size Size of cached memory pool */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* _ux_system_initialize Get encoded feedback */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_system_initialize(VOID *regular_memory_pool_start, ULONG regular_memory_size,
VOID *cache_safe_memory_pool_start, ULONG cache_safe_memory_size)
{
/* Sanity check. */
if ((regular_memory_pool_start == UX_NULL) || (regular_memory_size == 0))
return(UX_INVALID_PARAMETER);
/* Invoke system initialization function. */
return(_ux_system_initialize(regular_memory_pool_start, regular_memory_size,
cache_safe_memory_pool_start, cache_safe_memory_size));
}

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_device_class_pima.h PORTABLE C */
/* 6.1.11 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -58,6 +58,9 @@
/* 04-25-2022 Chaoqiong Xiao Modified comment(s), */
/* fixed standalone compile, */
/* resulting in version 6.1.11 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -74,6 +77,14 @@ extern "C" {
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_DEVICE_CLASS_PIMA_ENABLE_ERROR_CHECKING)
#define UX_DEVICE_CLASS_PIMA_ENABLE_ERROR_CHECKING
#endif
/* Define PIMA Class constants. */
#define UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH UX_SLAVE_REQUEST_DATA_MAX_LENGTH
@ -1016,6 +1027,10 @@ UINT _ux_device_class_pima_object_prop_value_set(UX_SLAVE_CLASS_PIMA *pima,
UINT _ux_device_class_pima_storage_format(UX_SLAVE_CLASS_PIMA *pima, ULONG storage_id);
UINT _ux_device_class_pima_device_reset(UX_SLAVE_CLASS_PIMA *pima);
UINT _uxe_device_class_pima_initialize(UX_SLAVE_CLASS_COMMAND *command);
/* Define Device PIMA Class API prototypes. */
#define ux_device_class_pima_initialize _ux_device_class_pima_initialize

View File

@ -31,7 +31,8 @@
/* Basic buffer length check: larger than DeviceInfo with all string and array 0. */
#if UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH < 35
#error UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH too small
/* #error UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH too small */
/* Build option checked runtime by UX_ASSERT */
#endif
/**************************************************************************/
@ -39,7 +40,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_device_info_send PORTABLE C */
/* 6.1.11 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -82,6 +83,10 @@
/* 04-25-2022 Chaoqiong Xiao Modified comment(s), */
/* internal clean up, */
/* resulting in version 6.1.11 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked compiling options */
/* by runtime UX_ASSERT, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_device_info_send(UX_SLAVE_CLASS_PIMA *pima)
@ -94,6 +99,8 @@ UCHAR *device_info_pointer;
ULONG array_field_counter;
USHORT *array_pointer;
/* Build option check. */
UX_ASSERT(UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH >= 35);
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_PIMA_DEVICE_INFO_SEND, pima, 0, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)

View File

@ -31,7 +31,8 @@
#if UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH < UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE
#error UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH too small, please check
/* #error UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH too small, please check */
/* Build option checked runtime by UX_ASSERT */
#endif
/**************************************************************************/
@ -39,7 +40,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_device_prop_value_get PORTABLE C */
/* 6.1.10 */
/* 6.X */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -84,6 +85,10 @@
/* updated status handling, */
/* improved sanity checks, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked compiling options */
/* by runtime UX_ASSERT, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_device_prop_value_get(UX_SLAVE_CLASS_PIMA *pima,
@ -96,6 +101,9 @@ UCHAR *pima_data_buffer;
ULONG device_property_value_length;
UCHAR *device_property_value;
/* Build option check. */
UX_ASSERT(UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_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_DEVICE_CLASS_PIMA_GET_DEVICE_PROP_VALUE, pima, device_property_code, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)

View File

@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_entry PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -72,6 +72,9 @@
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
/* resulting in version 6.1 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_entry(UX_SLAVE_CLASS_COMMAND *command)
@ -88,7 +91,11 @@ UINT status;
case UX_SLAVE_CLASS_COMMAND_INITIALIZE:
/* Call the init function of the PIMA class. */
#if defined(UX_DEVICE_CLASS_PIMA_ENABLE_ERROR_CHECKING)
status = _uxe_device_class_pima_initialize(command);
#else
status = _ux_device_class_pima_initialize(command);
#endif
/* Return the completion status. */
return(status);

View File

@ -236,3 +236,87 @@ UX_SLAVE_CLASS *class_ptr;
#endif
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_device_class_pima_initialize PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in PIMA initialization function call. */
/* */
/* INPUT */
/* */
/* command Pointer to pima command */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_device_class_pima_initialize Initialize pima instance */
/* */
/* CALLED BY */
/* */
/* Device PIMA Class */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_device_class_pima_initialize(UX_SLAVE_CLASS_COMMAND *command)
{
UX_SLAVE_CLASS_PIMA_PARAMETER *pima_parameter;
/* Get the pointer to the application parameters for the pima class. */
pima_parameter = command -> ux_slave_class_command_parameter;
/* Sanity checks. */
if (
/* Property lists check. */
/* pima_parameter -> ux_device_class_pima_parameter_device_properties_list can be UX_NULL */
/* pima_parameter -> ux_device_class_pima_parameter_supported_capture_formats_list can be UX_NULL */
/* pima_parameter -> ux_device_class_pima_parameter_supported_image_formats_list can be UX_NULL */
/* Callback functions check. */
/* pima_parameter -> ux_device_class_pima_parameter_cancel can be NULL */
(pima_parameter -> ux_device_class_pima_parameter_device_reset == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_device_prop_desc_get == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_device_prop_value_get == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_device_prop_value_set == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_storage_format == UX_NULL) ||
/* pima_parameter -> ux_device_class_pima_parameter_storage_info_get can be UX_NULL */
(pima_parameter -> ux_device_class_pima_parameter_object_number_get == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_object_handles_get == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_object_info_get == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_object_data_get == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_object_info_send == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_object_data_send == UX_NULL) ||
(pima_parameter -> ux_device_class_pima_parameter_object_delete == UX_NULL)
#ifdef UX_PIMA_WITH_MTP_SUPPORT
|| (pima_parameter -> ux_device_class_pima_parameter_object_properties_list == UX_NULL)
|| (pima_parameter -> ux_device_class_pima_parameter_object_prop_desc_get == UX_NULL)
|| (pima_parameter -> ux_device_class_pima_parameter_object_prop_value_get == UX_NULL)
|| (pima_parameter -> ux_device_class_pima_parameter_object_prop_value_set == UX_NULL)
|| (pima_parameter -> ux_device_class_pima_parameter_object_references_get == UX_NULL)
|| (pima_parameter -> ux_device_class_pima_parameter_object_references_set == UX_NULL)
#endif
)
{
return(UX_INVALID_PARAMETER);
}
/* Invoke PIMA initialize function. */
return(_ux_device_class_pima_initialize(command));
}

View File

@ -33,7 +33,8 @@
#if UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH < UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + \
4 + \
(4 * UX_DEVICE_CLASS_PIMA_MAX_STORAGE_IDS)
#error UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH too small
/* #error UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH too small */
/* Build option checked runtime by UX_ASSERT */
#endif
/**************************************************************************/
@ -41,7 +42,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_device_class_pima_storage_id_send PORTABLE C */
/* 6.1.10 */
/* 6.X */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -79,6 +80,10 @@
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* improved sanity checks, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked compiling options */
/* by runtime UX_ASSERT, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_device_class_pima_storage_id_send(UX_SLAVE_CLASS_PIMA *pima)
@ -89,6 +94,12 @@ UX_SLAVE_TRANSFER *transfer_request;
ULONG storage_id_length;
UCHAR *storage_id;
/* Build option check. */
UX_ASSERT(UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH >=
(UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE +
4 +
(4 * UX_DEVICE_CLASS_PIMA_MAX_STORAGE_IDS)));
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_DEVICE_CLASS_PIMA_STORAGE_ID_SEND, pima, 0, 0, 0, UX_TRACE_DEVICE_CLASS_EVENTS, 0, 0)

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_host_class_pima.h PORTABLE C */
/* 6.1.12 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -53,6 +53,11 @@
/* 07-29-2022 Chaoqiong Xiao Modified comment(s), */
/* improved internal checks, */
/* resulting in version 6.1.12 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* increased default buffer */
/* length to get device info, */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -69,6 +74,12 @@ extern "C" {
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_HOST_CLASS_PIMA_ENABLE_ERROR_CHECKING)
#define UX_HOST_CLASS_PIMA_ENABLE_ERROR_CHECKING
#endif
/* Define PIMA Class constants. */
#define UX_HOST_CLASS_PIMA_CLASS_TRANSFER_TIMEOUT 300000
@ -493,7 +504,7 @@ typedef struct UX_HOST_CLASS_PIMA_DEVICE_STRUCT
/* Define PIMA Device decompaction structure. */
#define UX_HOST_CLASS_PIMA_DEVICE_MAX_LENGTH 512
#define UX_HOST_CLASS_PIMA_DEVICE_MAX_LENGTH 1024
#define UX_HOST_CLASS_PIMA_DEVICE_STANDARD_VERSION 0
#define UX_HOST_CLASS_PIMA_DEVICE_VENDOR_EXTENSION_ID 2
#define UX_HOST_CLASS_PIMA_DEVICE_VENDOR_EXTENSION_VERSION 6
@ -571,7 +582,59 @@ UINT _ux_host_class_pima_object_open(UX_HOST_CLASS_PIMA *pima,
UINT _ux_host_class_pima_device_info_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_DEVICE *pima_device);
UINT _uxe_host_class_pima_num_objects_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG storage_id,
ULONG object_format_code);
UINT _uxe_host_class_pima_object_delete(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG object_handle);
UINT _uxe_host_class_pima_object_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object,
UCHAR *object_buffer, ULONG object_buffer_length, ULONG *object_actual_length);
UINT _uxe_host_class_pima_object_handles_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG *object_handles_array, ULONG object_handles_length, ULONG storage_id, ULONG object_format_code, ULONG object_handle_association);
UINT _uxe_host_class_pima_object_info_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object);
UINT _uxe_host_class_pima_object_info_send(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG storage_id, ULONG parent_object_id,
UX_HOST_CLASS_PIMA_OBJECT *object);
UINT _uxe_host_class_pima_object_send(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, UX_HOST_CLASS_PIMA_OBJECT *object,
UCHAR *object_buffer, ULONG object_buffer_length);
UINT _uxe_host_class_pima_session_close(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session);
UINT _uxe_host_class_pima_session_open(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session);
UINT _uxe_host_class_pima_storage_ids_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG *storage_ids_array, ULONG storage_id_length);
UINT _uxe_host_class_pima_storage_info_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG storage_id, UX_HOST_CLASS_PIMA_STORAGE *storage);
UINT _uxe_host_class_pima_thumb_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session, ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object,
UCHAR *thumb_buffer, ULONG thumb_buffer_length, ULONG *thumb_actual_length);
UINT _uxe_host_class_pima_object_transfer_abort(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object);
UINT _uxe_host_class_pima_object_close(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object);
UINT _uxe_host_class_pima_object_open(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object);
UINT _uxe_host_class_pima_device_info_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_DEVICE *pima_device);
/* Define Device PIMA Class API prototypes. */
#if defined(UX_HOST_CLASS_PIMA_ENABLE_ERROR_CHECKING)
#define ux_host_class_pima_entry _ux_host_class_pima_entry
#define ux_host_class_pima_device_info_get _uxe_host_class_pima_device_info_get
#define ux_host_class_pima_object_info_send _uxe_host_class_pima_object_info_send
#define ux_host_class_pima_object_info_get _uxe_host_class_pima_object_info_get
#define ux_host_class_pima_object_open _uxe_host_class_pima_object_open
#define ux_host_class_pima_object_get _uxe_host_class_pima_object_get
#define ux_host_class_pima_thumb_get _uxe_host_class_pima_thumb_get
#define ux_host_class_pima_object_send _uxe_host_class_pima_object_send
#define ux_host_class_pima_object_delete _uxe_host_class_pima_object_delete
#define ux_host_class_pima_object_transfer_abort _uxe_host_class_pima_object_transfer_abort
#define ux_host_class_pima_object_close _uxe_host_class_pima_object_close
#define ux_host_class_pima_session_open _uxe_host_class_pima_session_open
#define ux_host_class_pima_session_close _uxe_host_class_pima_session_close
#define ux_host_class_pima_storage_ids_get _uxe_host_class_pima_storage_ids_get
#define ux_host_class_pima_storage_info_get _uxe_host_class_pima_storage_info_get
#define ux_host_class_pima_object_handles_get _uxe_host_class_pima_object_handles_get
#define ux_host_class_pima_num_objects_get _uxe_host_class_pima_num_objects_get
#else
#define ux_host_class_pima_entry _ux_host_class_pima_entry
#define ux_host_class_pima_device_info_get _ux_host_class_pima_device_info_get
@ -591,6 +654,8 @@ UINT _ux_host_class_pima_device_info_get(UX_HOST_CLASS_PIMA *pima,
#define ux_host_class_pima_object_handles_get _ux_host_class_pima_object_handles_get
#define ux_host_class_pima_num_objects_get _ux_host_class_pima_num_objects_get
#endif
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */
#ifdef __cplusplus

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_host_class_printer.h PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -57,6 +57,9 @@
/* added standalone support, */
/* added a new protocol const, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -73,6 +76,11 @@ extern "C" {
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_HOST_CLASS_PRINTER_ENABLE_ERROR_CHECKING)
#define UX_HOST_CLASS_PRINTER_ENABLE_ERROR_CHECKING
#endif
/* Define Printer Class constants. */
@ -156,7 +164,29 @@ UINT _ux_host_class_printer_status_get(UX_HOST_CLASS_PRINTER *printer, ULONG
UINT _ux_host_class_printer_write(UX_HOST_CLASS_PRINTER *printer, UCHAR * data_pointer,
ULONG requested_length, ULONG *actual_length);
// UINT _uxe_host_class_printer_activate(UX_HOST_CLASS_COMMAND *command);
UINT _uxe_host_class_printer_name_get(UX_HOST_CLASS_PRINTER *printer);
UINT _uxe_host_class_printer_device_id_get(UX_HOST_CLASS_PRINTER *printer, UCHAR *descriptor_buffer, ULONG length);
UINT _uxe_host_class_printer_read (UX_HOST_CLASS_PRINTER *printer, UCHAR *data_pointer,
ULONG requested_length, ULONG *actual_length);
UINT _uxe_host_class_printer_soft_reset(UX_HOST_CLASS_PRINTER *printer);
UINT _uxe_host_class_printer_status_get(UX_HOST_CLASS_PRINTER *printer, ULONG *printer_status);
UINT _uxe_host_class_printer_write(UX_HOST_CLASS_PRINTER *printer, UCHAR * data_pointer,
ULONG requested_length, ULONG *actual_length);
/* Define Printer Class API prototypes. */
#if defined(UX_HOST_CLASS_PRINTER_ENABLE_ERROR_CHECKING)
#define ux_host_class_printer_entry _ux_host_class_printer_entry
#define ux_host_class_printer_activate _ux_host_class_printer_activate
#define ux_host_class_printer_name_get _uxe_host_class_printer_name_get
#define ux_host_class_printer_device_id_get _uxe_host_class_printer_device_id_get
#define ux_host_class_printer_read _uxe_host_class_printer_read
#define ux_host_class_printer_soft_reset _uxe_host_class_printer_soft_reset
#define ux_host_class_printer_status_get _uxe_host_class_printer_status_get
#define ux_host_class_printer_write _uxe_host_class_printer_write
#else
#define ux_host_class_printer_entry _ux_host_class_printer_entry
#define ux_host_class_printer_activate _ux_host_class_printer_activate
@ -167,6 +197,8 @@ UINT _ux_host_class_printer_write(UX_HOST_CLASS_PRINTER *printer, UCHAR * dat
#define ux_host_class_printer_status_get _ux_host_class_printer_status_get
#define ux_host_class_printer_write _ux_host_class_printer_write
#endif /* UX_HOST_CLASS_PRINTER_ENABLE_ERROR_CHECKING */
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */
#ifdef __cplusplus

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_host_class_storage.h PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -64,6 +64,9 @@
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* added standalone support, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -81,6 +84,13 @@ extern "C" {
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_HOST_CLASS_STORAGE_ENABLE_ERROR_CHECKING)
#define UX_HOST_CLASS_STORAGE_ENABLE_ERROR_CHECKING
#endif
#if !defined(UX_HOST_CLASS_STORAGE_NO_FILEX) && !defined(UX_HOST_STANDALONE)
/* Include the FileX API. */
#include "fx_api.h"
@ -653,16 +663,23 @@ UINT _ux_host_class_storage_media_lock(UX_HOST_CLASS_STORAGE_MEDIA *storage_m
#if defined(UX_HOST_STANDALONE)
UINT _ux_host_class_storage_lock(UX_HOST_CLASS_STORAGE *storage, ULONG wait);
UINT _uxe_host_class_storage_lock(UX_HOST_CLASS_STORAGE *storage, ULONG wait);
#define _ux_host_class_storage_unlock(s) do { (s) -> ux_host_class_storage_flags &= ~UX_HOST_CLASS_STORAGE_FLAG_LOCK; } while(0)
#define _uxe_host_class_storage_unlock(s) do { if((s) != UX_NULL) (s) -> ux_host_class_storage_flags &= ~UX_HOST_CLASS_STORAGE_FLAG_LOCK; } while(0)
#define _ux_host_class_storage_media_unlock(m) _ux_host_class_storage_unlock((m) -> ux_host_class_storage_media_storage)
#define _uxe_host_class_storage_media_unlock(m) do { if((m) != UX_NULL) _uxe_host_class_storage_unlock((m) -> ux_host_class_storage_media_storage); } while(0)
#else
#define _ux_host_class_storage_lock(s,w) _ux_host_semaphore_get(&(s) -> ux_host_class_storage_semaphore, (w))
#define _uxe_host_class_storage_lock(s,w) (((s) != UX_NULL) ? _ux_host_semaphore_get(&(s) -> ux_host_class_storage_semaphore, (w)) : UX_INVALID_PARAMETER)
#define _ux_host_class_storage_unlock(s) _ux_host_semaphore_put(&(s) -> ux_host_class_storage_semaphore)
#define _uxe_host_class_storage_unlock(s) (((s) != UX_NULL) ? _ux_host_semaphore_put(&(s) -> ux_host_class_storage_semaphore) : UX_INVALID_PARAMETER)
#define _ux_host_class_storage_media_unlock(m) _ux_host_class_storage_unlock((m) -> ux_host_class_storage_media_storage)
#define _uxe_host_class_storage_media_unlock(m) (((m) != UX_NULL) ? _uxe_host_class_storage_unlock((m) -> ux_host_class_storage_media_storage) : UX_INVALID_PARAMETER)
#endif
#define _ux_host_class_storage_max_lun(s) ((s) -> ux_host_class_storage_max_lun)
#define _ux_host_class_storage_lun(s) ((s) -> ux_host_class_storage_lun)
#define _ux_host_class_storage_lun_select(s,l) do { (s) -> ux_host_class_storage_lun = (l); } while(0)
#define _uxe_host_class_storage_lun_select(s,l) do { if ((s) != UX_NULL) (s) -> ux_host_class_storage_lun = (l); } while(0)
#define _ux_host_class_storage_sense_status(s) ((s) -> ux_host_class_storage_sense_code)
UINT _ux_host_class_storage_media_check(UX_HOST_CLASS_STORAGE *storage);
@ -673,10 +690,42 @@ UINT _ux_host_class_storage_check_run(UX_HOST_CLASS_STORAGE *storage);
UINT _ux_host_class_storage_read_write_run(UX_HOST_CLASS_STORAGE *storage,
ULONG read_write, ULONG sector_start, ULONG sector_count, UCHAR *data_pointer);
UINT _uxe_host_class_storage_media_read(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
ULONG sector_count, UCHAR *data_pointer);
UINT _uxe_host_class_storage_media_write(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
ULONG sector_count, UCHAR *data_pointer);
UINT _uxe_host_class_storage_media_check(UX_HOST_CLASS_STORAGE *storage);
UINT _uxe_host_class_storage_media_get(UX_HOST_CLASS_STORAGE *storage, ULONG media_lun, UX_HOST_CLASS_STORAGE_MEDIA **storage_media);
UINT _uxe_host_class_storage_media_lock(UX_HOST_CLASS_STORAGE_MEDIA *storage_media, ULONG wait);
/* Define Storage Class API prototypes. */
#define ux_host_class_storage_entry _ux_host_class_storage_entry
#define ux_host_class_storage_sense_status _ux_host_class_storage_sense_status
#if defined(UX_HOST_CLASS_STORAGE_ENABLE_ERROR_CHECKING)
#define ux_host_class_storage_lock _uxe_host_class_storage_lock
#define ux_host_class_storage_unlock _uxe_host_class_storage_unlock
#define ux_host_class_storage_lun_select _uxe_host_class_storage_lun_select
#define ux_host_class_storage_media_read _uxe_host_class_storage_media_read
#define ux_host_class_storage_media_write _uxe_host_class_storage_media_write
#define ux_host_class_storage_media_get _uxe_host_class_storage_media_get
#define ux_host_class_storage_media_lock _uxe_host_class_storage_media_lock
#define ux_host_class_storage_media_unlock _uxe_host_class_storage_media_unlock
#define ux_host_class_storage_media_check _uxe_host_class_storage_media_check
#else
#define ux_host_class_storage_lock _ux_host_class_storage_lock
#define ux_host_class_storage_unlock _ux_host_class_storage_unlock
#define ux_host_class_storage_lun_select _ux_host_class_storage_lun_select
@ -690,7 +739,8 @@ UINT _ux_host_class_storage_read_write_run(UX_HOST_CLASS_STORAGE *storage,
#define ux_host_class_storage_media_check _ux_host_class_storage_media_check
#define ux_host_class_storage_sense_status _ux_host_class_storage_sense_status
#endif
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */

View File

@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_host_class_video.h PORTABLE C */
/* 6.1.8 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -56,6 +56,9 @@
/* according to UVC 1.5 Class */
/* specification, */
/* resulting in version 6.1.8 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* added error checks support, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
@ -72,6 +75,12 @@ extern "C" {
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_HOST_CLASS_VIDEO_ENABLE_ERROR_CHECKING)
#define UX_HOST_CLASS_VIDEO_ENABLE_ERROR_CHECKING
#endif
/* Define external static data. */
extern UCHAR _ux_system_class_video_interface_descriptor_structure[];
extern UCHAR _ux_system_class_video_input_terminal_descriptor_structure[];
@ -669,7 +678,48 @@ UINT _ux_host_class_video_control_request(UX_HOST_CLASS_VIDEO *video,
UINT entity_id, UINT control_selector,
UCHAR *parameter, UINT parameter_size);
UINT _uxe_host_class_video_control_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control);
UINT _uxe_host_class_video_control_value_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control);
UINT _uxe_host_class_video_control_value_set(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control);
UINT _uxe_host_class_video_read(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST *video_transfer_request);
UINT _uxe_host_class_video_ioctl(UX_HOST_CLASS_VIDEO *video, ULONG ioctl_function, VOID *parameter);
UINT _uxe_host_class_video_start(UX_HOST_CLASS_VIDEO *video);
UINT _uxe_host_class_video_stop(UX_HOST_CLASS_VIDEO *video);
UINT _uxe_host_class_video_frame_parameters_set(UX_HOST_CLASS_VIDEO *video, ULONG frame_format, ULONG width, ULONG height, ULONG frame_interval);
ULONG _uxe_host_class_video_max_payload_get(UX_HOST_CLASS_VIDEO *video);
UINT _uxe_host_class_video_transfer_buffer_add(UX_HOST_CLASS_VIDEO *video, UCHAR* buffer);
UINT _uxe_host_class_video_transfer_buffers_add(UX_HOST_CLASS_VIDEO *video, UCHAR** buffers, ULONG num_buffers);
VOID _uxe_host_class_video_transfer_callback_set(UX_HOST_CLASS_VIDEO *video, VOID (*callback_function)(UX_TRANSFER*));
UINT _uxe_host_class_video_entities_parse(UX_HOST_CLASS_VIDEO *video,
UINT(*parse_function)(VOID *arg,
UCHAR *packed_interface_descriptor,
UCHAR *packed_entity_descriptor),
VOID* arg);
UINT _uxe_host_class_video_control_request(UX_HOST_CLASS_VIDEO *video,
UINT request, UCHAR interface_index,
UINT entity_id, UINT control_selector,
UCHAR *parameter, UINT parameter_size);
/* Define Video Class API prototypes. */
#if defined(UX_HOST_CLASS_VIDEO_ENABLE_ERROR_CHECKING)
#define ux_host_class_video_entry _ux_host_class_video_entry
#define ux_host_class_video_control_get _uxe_host_class_video_control_get
#define ux_host_class_video_control_value_get _uxe_host_class_video_control_value_get
#define ux_host_class_video_control_value_set _uxe_host_class_video_control_value_set
#define ux_host_class_video_read _uxe_host_class_video_read
#define ux_host_class_video_ioctl _uxe_host_class_video_ioctl
#define ux_host_class_video_start _uxe_host_class_video_start
#define ux_host_class_video_stop _uxe_host_class_video_stop
#define ux_host_class_video_frame_parameters_set _uxe_host_class_video_frame_parameters_set
#define ux_host_class_video_max_payload_get _uxe_host_class_video_max_payload_get
#define ux_host_class_video_transfer_buffer_add _uxe_host_class_video_transfer_buffer_add
#define ux_host_class_video_transfer_buffers_add _uxe_host_class_video_transfer_buffers_add
#define ux_host_class_video_transfer_callback_set _uxe_host_class_video_transfer_callback_set
#define ux_host_class_video_entities_parse _uxe_host_class_video_entities_parse
#define ux_host_class_video_control_request _uxe_host_class_video_control_request
#else
#define ux_host_class_video_entry _ux_host_class_video_entry
#define ux_host_class_video_control_get _ux_host_class_video_control_get
@ -687,6 +737,8 @@ UINT _ux_host_class_video_control_request(UX_HOST_CLASS_VIDEO *video,
#define ux_host_class_video_entities_parse _ux_host_class_video_entities_parse
#define ux_host_class_video_control_request _ux_host_class_video_control_request
#endif
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */
#ifdef __cplusplus

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_cdc_acm_command PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -70,7 +70,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -82,6 +82,8 @@
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* added standalone support, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_cdc_acm_command(UX_HOST_CLASS_CDC_ACM *cdc_acm, ULONG command,

View File

@ -67,7 +67,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_gser_command PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -70,7 +70,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -82,6 +82,8 @@
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* refined macros names, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_gser_command(UX_HOST_CLASS_GSER *gser, ULONG interface_index, ULONG command,

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_gser_ioctl PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -67,7 +67,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -76,6 +76,8 @@
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
/* resulting in version 6.1 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_gser_ioctl(UX_HOST_CLASS_GSER *gser, ULONG interface_index, ULONG ioctl_function,

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_pima_command PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -66,7 +66,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -79,6 +79,8 @@
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* refined macros names, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_pima_command(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_COMMAND *command,

View File

@ -360,3 +360,53 @@ UINT status;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_device_info_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima device info get function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_device Device structure to fill */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_device_info_get Get pima device info */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_device_info_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_DEVICE *pima_device)
{
/* Sanity Checks. */
if ((pima == UX_NULL) || (pima_device == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima device info get function. */
return(_ux_host_class_pima_device_info_get(pima, pima_device));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_pima_num_objects_get PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -48,6 +48,8 @@
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* storage_id The storage ID */
/* object_format_code The object format code */
/* */
/* OUTPUT */
/* */
@ -68,6 +70,8 @@
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
/* resulting in version 6.1 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_pima_num_objects_get(UX_HOST_CLASS_PIMA *pima,
@ -120,3 +124,57 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_num_objects_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object number get function */
/* call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* storage_id The storage ID */
/* object_format_code The object format code */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_num_objects_get Get pima object number */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_num_objects_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG storage_id,
ULONG object_format_code)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima num objects get function. */
return(_ux_host_class_pima_num_objects_get(pima, pima_session, storage_id, object_format_code));
}

View File

@ -223,3 +223,55 @@ UINT status;
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_close PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object close function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handle The object handle */
/* object Pointer to object info */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_close Close pima object */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_close(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual object close function. */
return(_ux_host_class_pima_object_close(pima, pima_session, object_handle, object));
}

View File

@ -116,3 +116,54 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_delete PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object delete function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handle The object handle */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_delete Delete pima object */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_delete(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima object delete function. */
return(_ux_host_class_pima_object_delete(pima, pima_session, object_handle));
}

View File

@ -418,3 +418,61 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object get function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handle The object handle */
/* object Pointer to object info */
/* object_buffer Buffer to be used */
/* object_buffer_length Buffer length */
/* object_actual_length Length read in that */
/* command */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_get Get pima object */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object,
UCHAR *object_buffer, ULONG object_buffer_length,
ULONG *object_actual_length)
{
/* Sanity checks. */
if (pima == UX_NULL || pima_session == UX_NULL || object == UX_NULL || object_buffer == UX_NULL || object_actual_length == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the actual pima object get function. */
return(_ux_host_class_pima_object_get(pima, pima_session, object_handle, object, object_buffer, object_buffer_length, object_actual_length));
}

View File

@ -178,3 +178,64 @@ UINT status;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_handles_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object handles get function */
/* call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handles_array Pointer to store handles */
/* object_handles_length Array length in handles */
/* object_format_code Object Format Code */
/* object_handle_association Object Handle */
/* Association */
/* */
/* The 2 last parameter are optional and should be set to 0 if not */
/* used. */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_handles_get Get object handles */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_handles_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG *object_handles_array, ULONG object_handles_length,
ULONG storage_id, ULONG object_format_code, ULONG object_handle_association)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object_handles_array == UX_NULL) || (object_handles_length == 0))
return(UX_INVALID_PARAMETER);
/* Call the actual function. */
return(_ux_host_class_pima_object_handles_get(pima, pima_session, object_handles_array, object_handles_length,
storage_id, object_format_code, object_handle_association));
}

View File

@ -236,3 +236,55 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_info_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object info get function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handle The object handle */
/* object Object structure to fill */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_info_get Get pima object info */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_info_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima object info get function. */
return(_ux_host_class_pima_object_info_get(pima, pima_session, object_handle, object));
}

View File

@ -254,3 +254,57 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_info_send PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object info send function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* storage_id StorageID where to store */
/* parent_object_id Parent object id */
/* object Object info structure */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_info_send Send pima device info */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_info_send(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG storage_id,
ULONG parent_object_id,
UX_HOST_CLASS_PIMA_OBJECT *object)
{
/* Sanity Checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object == UX_NULL))
return(UX_INVALID_PARAMETER);
return(_ux_host_class_pima_object_info_send(pima, pima_session, storage_id, parent_object_id, object));
}

View File

@ -104,3 +104,55 @@ UINT _ux_host_class_pima_object_open(UX_HOST_CLASS_PIMA *pima,
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_open PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object open function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handle The object handle */
/* object Pointer to object info */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_open Open pima object */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_open(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object == UX_NULL))
return (UX_INVALID_PARAMETER);
/* Call the actual pima object open function. */
return (_ux_host_class_pima_object_open(pima, pima_session, object_handle, object));
}

View File

@ -382,3 +382,60 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_send PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object send function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object Pointer to object info */
/* object_buffer Buffer to be used */
/* object_buffer_length Buffer length */
/* callback_function Application function to */
/* callback when buffer */
/* needs to be written */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_send Send pima object */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_send(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
UX_HOST_CLASS_PIMA_OBJECT *object,
UCHAR *object_buffer, ULONG object_buffer_length)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object == UX_NULL) || (object_buffer == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima object send function. */
return(_ux_host_class_pima_object_send(pima, pima_session, object, object_buffer, object_buffer_length));
}

View File

@ -108,3 +108,56 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_object_transfer_abort PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object transfer abort function */
/* call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handle The object handle */
/* object Pointer to object info */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_object_transfer_abort Transfer abort */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_object_transfer_abort(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima object transfer abort function. */
return(_ux_host_class_pima_object_transfer_abort(pima, pima_session, object_handle, object));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_pima_session_close PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -47,6 +47,7 @@
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* */
/* OUTPUT */
/* */
@ -67,6 +68,8 @@
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
/* resulting in version 6.1 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_pima_session_close(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session)
@ -123,3 +126,51 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_session_close PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima session close function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_session_close Close pima session */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_session_close(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL))
return (UX_INVALID_PARAMETER);
/* Call the actual pima session close function. */
return(_ux_host_class_pima_session_close(pima, pima_session));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_pima_session_open PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -49,6 +49,7 @@
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* */
/* OUTPUT */
/* */
@ -69,6 +70,8 @@
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
/* resulting in version 6.1 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_pima_session_open(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session)
@ -128,3 +131,51 @@ ULONG status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_session_open PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima session open function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_session_open Open pima session */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_session_open(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima session open function. */
return(_ux_host_class_pima_session_open(pima, pima_session));
}

View File

@ -162,3 +162,57 @@ ULONG nb_storage_ids;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_storage_ids_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima session storage ids get */
/* function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* storage_ids_array Pointer to buffer to */
/* fill storage IDs */
/* storage_id_length Array length in N of IDs */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_pima_storage_ids_get Get pima storage ids */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_storage_ids_get(UX_HOST_CLASS_PIMA *pima, UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG *storage_ids_array, ULONG storage_id_length)
{
/* Check for invalid input pointers. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (storage_ids_array == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima storage ids get function. */
return(_ux_host_class_pima_storage_ids_get(pima, pima_session, storage_ids_array, storage_id_length));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_pima_storage_info_get PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -49,6 +49,7 @@
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* storage_id The storage ID */
/* storage Pointer to storage */
/* */
/* OUTPUT */
/* */
@ -75,6 +76,8 @@
/* verified memset and memcpy */
/* cases, */
/* resulting in version 6.1 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_pima_storage_info_get(UX_HOST_CLASS_PIMA *pima,
@ -159,3 +162,56 @@ ULONG unicode_string_length;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_storage_info_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima session storage info get */
/* function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* storage_id The storage ID */
/* storage Pointer to storage */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ue_host_class_pima_storage_info_get Get pima storage info */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_storage_info_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG storage_id, UX_HOST_CLASS_PIMA_STORAGE *storage)
{
/* Sanity check. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (storage == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual pima storage info get function. */
return(_ux_host_class_pima_storage_info_get(pima, pima_session, storage_id, storage));
}

View File

@ -378,3 +378,61 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_pima_thumb_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in pima object thumb function call. */
/* */
/* INPUT */
/* */
/* pima Pointer to pima class */
/* pima_session Pointer to pima session */
/* object_handle The object handle */
/* object Pointer to object info */
/* thumb_buffer Buffer to be used */
/* thumb_buffer_length Buffer length */
/* thumb_actual_length Length read in that */
/* command */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ue_host_class_pima_thumb_get Get pima thumb */
/* */
/* CALLED BY */
/* */
/* USB application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_pima_thumb_get(UX_HOST_CLASS_PIMA *pima,
UX_HOST_CLASS_PIMA_SESSION *pima_session,
ULONG object_handle, UX_HOST_CLASS_PIMA_OBJECT *object,
UCHAR *thumb_buffer, ULONG thumb_buffer_length,
ULONG *thumb_actual_length)
{
/* Sanity checks. */
if ((pima == UX_NULL) || (pima_session == UX_NULL) || (object == UX_NULL) || (thumb_buffer == UX_NULL) || (thumb_actual_length == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual function. */
return(_ux_host_class_pima_thumb_get(pima, pima_session, object_handle, object, thumb_buffer, thumb_buffer_length, thumb_actual_length));
}

View File

@ -160,3 +160,56 @@ UINT status;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_printer_device_id_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in printer device ID get function call. */
/* */
/* INPUT */
/* */
/* printer Pointer to printer class */
/* descriptor_buffer Pointer to a buffer to fill */
/* IEEE 1284 device ID string */
/* (including length in the */
/* first two bytes in BE format) */
/* length Length of buffer in bytes */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_printer_device_id_get Obtains the printer device ID */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_printer_device_id_get(UX_HOST_CLASS_PRINTER *printer, UCHAR *descriptor_buffer, ULONG length)
{
/* Sanity checks. */
if ((printer == UX_NULL) || (descriptor_buffer == UX_NULL) || (length == 0))
return(UX_INVALID_PARAMETER);
/* Call the actual printer device ID get function. */
return(_ux_host_class_printer_device_id_get(printer, descriptor_buffer, length));
}

View File

@ -239,3 +239,49 @@ UINT status;
#endif
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_printer_name_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in printer name get function call. */
/* */
/* INPUT */
/* */
/* printer Pointer to printer class */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_printer_name_get Obtains the printer name */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_printer_name_get(UX_HOST_CLASS_PRINTER *printer)
{
/* Sanity checks. */
if (printer == UX_NULL)
return(UX_INVALID_PARAMETER);
return(_ux_host_class_printer_name_get(printer));
}

View File

@ -271,3 +271,54 @@ ULONG transfer_request_length;
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_printer_read PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in printer read function call. */
/* */
/* INPUT */
/* */
/* printer Pointer to printer class */
/* data_pointer Pointer to buffer */
/* requested_length Requested data read */
/* actual_length Actual data read */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_printer_read Printer read */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_printer_read (UX_HOST_CLASS_PRINTER *printer, UCHAR *data_pointer,
ULONG requested_length, ULONG *actual_length)
{
/* Sanity checks. */
if ((printer == UX_NULL) || (data_pointer == UX_NULL) || (actual_length == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual printer read function. */
return(_ux_host_class_printer_read(printer, data_pointer, requested_length, actual_length));
}

View File

@ -172,3 +172,50 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_printer_soft_reset PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in printer soft reset function call. */
/* */
/* INPUT */
/* */
/* printer Pointer to printer class */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_printer_soft_reset Printer soft reset */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_printer_soft_reset(UX_HOST_CLASS_PRINTER *printer)
{
/* Sanity checks. */
if (printer == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the actual printer soft reset function. */
return(_ux_host_class_printer_soft_reset(printer));
}

View File

@ -209,3 +209,52 @@ UCHAR * printer_status_buffer;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_printer_status_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in printer statis get function call. */
/* */
/* INPUT */
/* */
/* printer Pointer to printer class */
/* printer_status Pointer to return status */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_printer_status_get Obtains the printer status */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_printer_status_get(UX_HOST_CLASS_PRINTER *printer, ULONG *printer_status)
{
/* Sanity checks. */
if ((printer == UX_NULL) || (printer_status == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual printer status get function. */
return(_ux_host_class_printer_status_get(printer, printer_status));
}

View File

@ -254,3 +254,58 @@ ULONG transfer_request_length;
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_printer_write PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in printer write function call. */
/* */
/* INPUT */
/* */
/* printer Pointer to printer class */
/* data_pointer Pointer to data to write */
/* requested_length Length of data to write */
/* actual_length Actual length of data written */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_printer_write Printer write */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_printer_write(UX_HOST_CLASS_PRINTER *printer, UCHAR * data_pointer,
ULONG requested_length, ULONG *actual_length)
{
/* Sanity checks. */
if ((printer == UX_NULL) ||
((data_pointer == UX_NULL) && (requested_length > 0)) ||
(actual_length == UX_NULL))
{
return(UX_INVALID_PARAMETER);
}
/* Call the actual printer write function. */
return(_ux_host_class_printer_write(printer, data_pointer, requested_length, actual_length));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_prolific_command PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -70,7 +70,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -82,6 +82,8 @@
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* refined macros names, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_prolific_command(UX_HOST_CLASS_PROLIFIC *prolific, ULONG command,

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_prolific_ioctl PORTABLE C */
/* 6.1.11 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -68,7 +68,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -80,6 +80,8 @@
/* 04-25-2022 Chaoqiong Xiao Modified comment(s), */
/* internal clean up, */
/* resulting in version 6.1.11 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_prolific_ioctl(UX_HOST_CLASS_PROLIFIC *prolific, ULONG ioctl_function,
@ -335,7 +337,6 @@ VOID (*callback_function) (struct UX_HOST_CLASS_P
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */

View File

@ -158,4 +158,54 @@ UX_DEVICE *device;
UX_RESTORE
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_storage_lock PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in storage lock function call. */
/* */
/* INPUT */
/* */
/* storage Pointer to storage to operate */
/* wait Wait option */
/* */
/* OUTPUT */
/* */
/* Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_storage_lock Lock storage */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_storage_lock(UX_HOST_CLASS_STORAGE *storage, ULONG wait)
{
/* Sanity check. */
if (storage == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke storage lock function. */
return(_ux_host_class_storage_lock(storage, wait));
}
#endif

View File

@ -83,4 +83,53 @@ UINT status;
} while(status == UX_STATE_WAIT);
return(storage -> ux_host_class_storage_status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_storage_media_check PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in storage media check function call. */
/* */
/* INPUT */
/* */
/* storage Pointer to storage class */
/* */
/* OUTPUT */
/* */
/* Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_storage_media_check Check storage media */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_storage_media_check(UX_HOST_CLASS_STORAGE *storage)
{
/* Sanity check. */
if (storage == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke storage media check function. */
return(_ux_host_class_storage_media_check(storage));
}
#endif

View File

@ -134,4 +134,58 @@ UINT scan_index;
return(UX_ERROR);
#endif
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_storage_media_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in storage media get function call. */
/* */
/* INPUT */
/* */
/* storage Pointer to storage class */
/* media_lun Media logical unit No. (LUN) */
/* storage_media Holds returned storage media */
/* */
/* OUTPUT */
/* */
/* Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_storage_media_get Get storage media */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_storage_media_get(UX_HOST_CLASS_STORAGE *storage,
ULONG media_lun,
UX_HOST_CLASS_STORAGE_MEDIA **storage_media)
{
/* Sanity check. */
if ((storage == UX_NULL) || (storage_media == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke storage media get function. */
return(_ux_host_class_storage_media_get(storage, media_lun, storage_media));
}
#endif

View File

@ -103,4 +103,55 @@ UINT status;
return(UX_SUCCESS);
#endif
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_storage_media_lock PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in storage media lock function call. */
/* */
/* INPUT */
/* */
/* storage_media Pointer to storage media to */
/* select */
/* wait Wait option */
/* */
/* OUTPUT */
/* */
/* Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_storage_media_lock Lock and select storage media */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_storage_media_lock(UX_HOST_CLASS_STORAGE_MEDIA *storage_media, ULONG wait)
{
/* Sanity check. */
if (storage_media == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke storage media lock function. */
return(_ux_host_class_storage_media_lock(storage_media, wait));
}
#endif

View File

@ -193,3 +193,56 @@ UINT media_retry;
return(UX_HOST_CLASS_STORAGE_SENSE_ERROR);
#endif
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_storage_media_read PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in storage media read function call. */
/* */
/* INPUT */
/* */
/* storage Pointer to storage class */
/* sector_start Starting sector */
/* sector_count Number of sectors to read */
/* data_pointer Pointer to data to read */
/* */
/* OUTPUT */
/* */
/* Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_storage_media_read Read storage media */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_storage_media_read(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
ULONG sector_count, UCHAR *data_pointer)
{
/* Sanity checks. */
if ((storage == UX_NULL) || (data_pointer == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Invoke storage media read function. */
return(_ux_host_class_storage_media_read(storage, sector_start, sector_count, data_pointer));
}

View File

@ -171,3 +171,55 @@ UINT media_retry;
#endif
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_storage_media_write PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in storage media write function call. */
/* */
/* INPUT */
/* */
/* storage Pointer to storage class */
/* sector_start Starting sector */
/* sector_count Number of sectors to write */
/* data_pointer Pointer to data to write */
/* */
/* OUTPUT */
/* */
/* Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_storage_media_write write storage media */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Chaoqiong Xiao Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_storage_media_write(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
ULONG sector_count, UCHAR *data_pointer)
{
/* Sanity check. */
if (storage == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Invoke storage media write function. */
return(_ux_host_class_storage_media_write(storage, sector_start, sector_count, data_pointer));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_swar_ioctl PORTABLE C */
/* 6.1 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -63,7 +63,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -72,6 +72,8 @@
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
/* resulting in version 6.1 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_swar_ioctl(UX_HOST_CLASS_SWAR *swar, ULONG ioctl_function,

View File

@ -218,3 +218,51 @@ UCHAR * control_buffer;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_control_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video control get function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* video_control Pointer to video control */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_control_get Get the video control */
/* */
/* CALLED BY */
/* */
/* Application */
/* Video Class */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_control_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control)
{
/* Sanity Checks. */
if ((video == UX_NULL) || (video_control == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual video control get function. */
return(_ux_host_class_video_control_get(video, video_control));
}

View File

@ -206,3 +206,66 @@ UCHAR interface_number;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_control_request PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video control request function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* request The request to issue */
/* interface_index The interface index */
/* 0: VideoControl interface */
/* 1: VideoStreaming 1 */
/* N: VideoStreaming N */
/* entity_id The terminal or unit ID */
/* control_selector The control selector */
/* parameter Pointer to parameter block */
/* parameter_size Size of parameter block */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_control_request Video control request */
/* */
/* CALLED BY */
/* */
/* Application */
/* Video Class */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_control_request(UX_HOST_CLASS_VIDEO *video,
UINT request, UCHAR interface_index,
UINT entity_id, UINT control_selector,
UCHAR *parameter, UINT parameter_size)
{
/* Sanity checks. */
if (video == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the video control request function. */
return(_ux_host_class_video_control_request(video, request, interface_index,
entity_id, control_selector,
parameter, parameter_size));
}

View File

@ -178,3 +178,54 @@ UCHAR * control_buffer;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_control_value_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video control value get function */
/* call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* video_control Pointer to video control */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_control_value_get */
/* Get the video control value */
/* */
/* CALLED BY */
/* */
/* Application */
/* Video Class */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_control_value_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control)
{
/* Sanity Checks. */
if ((video == UX_NULL) || (video_control == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual video control value get function. */
return(_ux_host_class_video_control_value_get(video, video_control));
}

View File

@ -174,3 +174,54 @@ UCHAR * control_buffer;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_control_value_set PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video control value set function */
/* call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* video_control Pointer to video control */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_control_value_set */
/* Set the video control value */
/* */
/* CALLED BY */
/* */
/* Application */
/* Video Class */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_control_value_set(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control)
{
/* Sanity Checks. */
if ((video == UX_NULL) || (video_control == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual video control value set function. */
return(_ux_host_class_video_control_value_set(video, video_control));
}

View File

@ -188,3 +188,59 @@ UINT status;
/* We get here when all descriptors scanned. */
return(UX_SUCCESS);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_entities_parse PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video entities parse function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video instance */
/* parse_function Parse function for each */
/* video class descriptor */
/* arg Parse function argument */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_entities_parse Video entities parse */
/* */
/* CALLED BY */
/* */
/* Video Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_entities_parse(UX_HOST_CLASS_VIDEO *video,
UINT(*parse_function)(VOID *arg,
UCHAR *packed_interface_descriptor,
UCHAR *packed_entity_descriptor),
VOID* arg)
{
/* Sanity checks. */
if (video == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the actual video entities parse function. */
return(_ux_host_class_video_entities_parse(video, parse_function, arg));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_video_frame_parameters_set PORTABLE C */
/* 6.1.11 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -70,7 +70,7 @@
/* */
/* CALLED BY */
/* */
/* Video Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -89,6 +89,8 @@
/* internal clean up, */
/* fixed standalone compile, */
/* resulting in version 6.1.11 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_video_frame_parameters_set(UX_HOST_CLASS_VIDEO *video, ULONG frame_format, ULONG width, ULONG height, ULONG frame_interval)
@ -320,3 +322,56 @@ ULONG max_payload_size;
}
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_frame_parameters_set PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video frame parameters set function */
/* call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* frame_format Video format to use */
/* width Video frame width */
/* height Video frame height */
/* frame_interval Video frame interval */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_frame_parameters_set */
/* Video frame parameters set */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_frame_parameters_set(UX_HOST_CLASS_VIDEO *video, ULONG frame_format, ULONG width, ULONG height, ULONG frame_interval)
{
/* Sanity checks. */
if (video == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the actual video frame parameters set function. */
return(_ux_host_class_video_frame_parameters_set(video, frame_format, width, height, frame_interval));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_video_ioctl PORTABLE C */
/* 6.1.12 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -70,7 +70,7 @@
/* */
/* CALLED BY */
/* */
/* Storage Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -83,6 +83,8 @@
/* reset indexes of requests */
/* ring when it is aborted, */
/* resulting in version 6.1.12 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_video_ioctl(UX_HOST_CLASS_VIDEO *video, ULONG ioctl_function,
@ -224,3 +226,53 @@ UX_HOST_CLASS_VIDEO_PARAMETER_FRAME_INTERVAL *interval_parameter;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_ioctl PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video ioctl function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* ioctl_function Ioctl function */
/* parameter Pointer to structure */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_ioctl Video ioctl */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_ioctl(UX_HOST_CLASS_VIDEO *video, ULONG ioctl_function,
VOID *parameter)
{
/* Sanity checks. */
if (video == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the actual video ioctl function. */
return(_ux_host_class_video_ioctl(video, ioctl_function, parameter));
}

View File

@ -77,3 +77,50 @@ ULONG _ux_host_class_video_max_payload_get(UX_HOST_CLASS_VIDEO *video)
return(video ->ux_host_class_video_current_max_payload_size);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_max_payload_get PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video max payload get function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* */
/* OUTPUT */
/* */
/* Maximum payload transfer size */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_max_payload_get Video max payload get */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
ULONG _uxe_host_class_video_max_payload_get(UX_HOST_CLASS_VIDEO *video)
{
/* Sanity checks. */
if (video == UX_NULL)
return(0);
/* Call the actual video max payload get function. */
return(_ux_host_class_video_max_payload_get(video));
}

View File

@ -145,3 +145,52 @@ UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST *transfer_list;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_read PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video read function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* video_transfer_request Pointer to transfer request */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_read Video read */
/* */
/* CALLED BY */
/* */
/* Application */
/* Video Class */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_read(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST *video_transfer_request)
{
/* Sanity checks. */
if ((video == UX_NULL) || (video_transfer_request == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call the actual video read function. */
return(_ux_host_class_video_read(video, video_transfer_request));
}

View File

@ -93,3 +93,50 @@ UINT status;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_start PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video start function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_start Video start */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_start(UX_HOST_CLASS_VIDEO *video)
{
/* Sanity checks. */
if (video == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the actual video start function. */
return(_ux_host_class_video_start(video));
}

View File

@ -154,3 +154,50 @@ UINT streaming_interface;
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_stop PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video stop function call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_stop Video stop */
/* */
/* CALLED BY */
/* */
/* Video Class */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_stop(UX_HOST_CLASS_VIDEO *video)
{
/* Sanity checks. */
if (video == UX_NULL)
return(UX_INVALID_PARAMETER);
/* Call the actual video stop function. */
return(_ux_host_class_video_stop(video));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_video_transfer_buffer_add PORTABLE C */
/* 6.1.12 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -66,7 +66,7 @@
/* */
/* CALLED BY */
/* */
/* Video Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -88,6 +88,8 @@
/* 07-29-2022 Chaoqiong Xiao Modified comment(s), */
/* set pending on endpoint, */
/* resulting in version 6.1.12 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_video_transfer_buffer_add(UX_HOST_CLASS_VIDEO *video, UCHAR* buffer)
@ -181,3 +183,54 @@ ULONG packet_size;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_transfer_buffer_add PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video transfer buffer add function */
/* call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* buffer Pointer to data buffer */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_transfer_buffer_add */
/* video transfer buffer add */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_transfer_buffer_add(UX_HOST_CLASS_VIDEO *video, UCHAR* buffer)
{
/* Sanity checks. */
if ((video == UX_NULL) || (buffer == UX_NULL))
return(UX_INVALID_PARAMETER);
/* Call actual video transfer buffer add function. */
return(_ux_host_class_video_transfer_buffer_add(video, buffer));
}

View File

@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_video_transfer_buffers_add PORTABLE C */
/* 6.1.12 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
@ -75,7 +75,7 @@
/* */
/* CALLED BY */
/* */
/* Video Class */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
@ -97,6 +97,8 @@
/* 07-29-2022 Chaoqiong Xiao Modified comment(s), */
/* set pending on endpoint, */
/* resulting in version 6.1.12 */
/* xx-xx-xxxx Yajun xia Modified comment(s), */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_video_transfer_buffers_add(UX_HOST_CLASS_VIDEO *video, UCHAR** buffers, ULONG num_buffers)
@ -228,3 +230,56 @@ UINT i;
/* Return completion status. */
return(status);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_transfer_buffers_add PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video transfer buffers add function */
/* call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* buffers Pointer to data buffer */
/* pointers array */
/* num_buffers Number of data buffers */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_transfer_buffers_add */
/* video transfer buffers add */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
UINT _uxe_host_class_video_transfer_buffers_add(UX_HOST_CLASS_VIDEO *video, UCHAR** buffers, ULONG num_buffers)
{
/* Sanity checks. */
if ((video == UX_NULL) || (buffers == UX_NULL) || (num_buffers == 0))
return(UX_INVALID_PARAMETER);
/* Call the actual video transfer buffers add function. */
return(_ux_host_class_video_transfer_buffers_add(video, buffers, num_buffers));
}

View File

@ -77,3 +77,59 @@ VOID _ux_host_class_video_transfer_callback_set(UX_HOST_CLASS_VIDEO *video, VOI
video -> ux_host_class_video_transfer_completion_function = callback_function;
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _uxe_host_class_video_transfer_callback_set PORTABLE C */
/* 6.x */
/* AUTHOR */
/* */
/* Yajun Xia, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function checks errors in video transfer callback set function */
/* call. */
/* */
/* INPUT */
/* */
/* video Pointer to video class */
/* callback_function Pointer to callback function */
/* */
/* OUTPUT */
/* */
/* Completion Status */
/* */
/* CALLS */
/* */
/* _ux_host_class_video_transfer_callback_set */
/* video transfer callback set */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* xx-xx-xxxx Yajun xia Initial Version 6.x */
/* */
/**************************************************************************/
VOID _uxe_host_class_video_transfer_callback_set(UX_HOST_CLASS_VIDEO *video, VOID (*callback_function)(UX_TRANSFER*))
{
/* Sanity checks. */
if (video == UX_NULL)
{
/* Return error. */
_ux_system_error_handler(UX_SYSTEM_LEVEL_THREAD, UX_SYSTEM_CONTEXT_CLASS, UX_INVALID_PARAMETER);
return;
}
/* Call the actual video transfer callback set function. */
_ux_host_class_video_transfer_callback_set(video, callback_function);
}

View File

@ -31,6 +31,118 @@
#include "ux_device_class_pima.h"
#ifdef UX_PIMA_WITH_MTP_SUPPORT
static USHORT _dpsclient_object_prop_supported[] = {0};
static UINT _dpsclient_object_prop_desc_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG object_property,
ULONG object_format_code,
UCHAR **object_prop_dataset,
ULONG *object_prop_dataset_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(object_property);
UX_PARAMETER_NOT_USED(object_format_code);
UX_PARAMETER_NOT_USED(object_prop_dataset);
UX_PARAMETER_NOT_USED(object_prop_dataset_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_object_prop_value_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG object_handle,
ULONG object_property,
UCHAR **object_prop_value,
ULONG *object_prop_value_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(object_handle);
UX_PARAMETER_NOT_USED(object_property);
UX_PARAMETER_NOT_USED(object_prop_value);
UX_PARAMETER_NOT_USED(object_prop_value_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_object_prop_value_set (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG object_handle,
ULONG object_property,
UCHAR *object_prop_value,
ULONG object_prop_value_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(object_handle);
UX_PARAMETER_NOT_USED(object_property);
UX_PARAMETER_NOT_USED(object_prop_value);
UX_PARAMETER_NOT_USED(object_prop_value_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_object_references_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG object_handle,
UCHAR **object_references_array,
ULONG *object_references_array_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(object_handle);
UX_PARAMETER_NOT_USED(object_references_array);
UX_PARAMETER_NOT_USED(object_references_array_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_object_references_set (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG object_handle,
UCHAR *object_references_array,
ULONG object_references_array_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(object_handle);
UX_PARAMETER_NOT_USED(object_references_array);
UX_PARAMETER_NOT_USED(object_references_array_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
#endif
static UINT _dpsclient_device_reset(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima)
{
UX_PARAMETER_NOT_USED(pima);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_device_prop_desc_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG device_property,
UCHAR **device_prop_dataset,
ULONG *device_prop_dataset_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(device_property);
UX_PARAMETER_NOT_USED(device_prop_dataset);
UX_PARAMETER_NOT_USED(device_prop_dataset_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_device_prop_value_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG device_property,
UCHAR **device_prop_value,
ULONG *device_prop_value_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(device_property);
UX_PARAMETER_NOT_USED(device_prop_value);
UX_PARAMETER_NOT_USED(device_prop_value_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_device_prop_value_set(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG device_property,
UCHAR *device_prop_value,
ULONG device_prop_value_length)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(device_property);
UX_PARAMETER_NOT_USED(device_prop_value);
UX_PARAMETER_NOT_USED(device_prop_value_length);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
static UINT _dpsclient_storage_format(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
ULONG storage_id)
{
UX_PARAMETER_NOT_USED(pima);
UX_PARAMETER_NOT_USED(storage_id);
return(UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED);
}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
@ -73,6 +185,9 @@
/* 07-29-2022 Chaoqiong Xiao Modified comment(s), */
/* used macros for RTOS calls, */
/* resulting in version 6.1.12 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* initialized PIMA callbacks, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_pictbridge_dpsclient_start(UX_PICTBRIDGE *pictbridge)
@ -223,6 +338,7 @@ UX_SLAVE_CLASS_PIMA_OBJECT *object_info;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_storage_free_space_image = 0;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_storage_description = _ux_pictbridge_volume_description;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_storage_volume_label = _ux_pictbridge_volume_label;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_number_get = _ux_pictbridge_dpsclient_object_number_get;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_handles_get = _ux_pictbridge_dpsclient_object_handles_get;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_info_get = _ux_pictbridge_dpsclient_object_info_get;
@ -231,6 +347,21 @@ UX_SLAVE_CLASS_PIMA_OBJECT *object_info;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_data_send = _ux_pictbridge_dpsclient_object_data_send;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_delete = _ux_pictbridge_dpsclient_object_delete;
#ifdef UX_PIMA_WITH_MTP_SUPPORT
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_properties_list = _dpsclient_object_prop_supported;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_prop_desc_get = _dpsclient_object_prop_desc_get;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_prop_value_get = _dpsclient_object_prop_value_get;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_prop_value_set = _dpsclient_object_prop_value_set;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_references_get = _dpsclient_object_references_get;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_object_references_set = _dpsclient_object_references_set;
#endif
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_device_reset = _dpsclient_device_reset;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_device_prop_desc_get = _dpsclient_device_prop_desc_get;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_device_prop_value_get = _dpsclient_device_prop_value_get;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_device_prop_value_set = _dpsclient_device_prop_value_set;
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_storage_format = _dpsclient_storage_format;
/* Store the instance owner. */
pictbridge -> ux_pictbridge_pima_parameter.ux_device_class_pima_parameter_application = (VOID *) pictbridge;